以前、Nature Remoを購入したので、APIを叩きまくってみようと思い、たくさん叩き続けてみました。
ドキュメント:https://developer.nature.global/
今回も毎度お馴染みのGoogle Apps Script(GAS)を使って、APIを叩き、スプレッドシートに記録していくスクリプトを書きました。
ソースコード
スクリプトは雑に書いちゃいましたのでちょっと恥ずかしい。。
var access_token = '***************' var spreadsheetId = '*****************' function test() { var data = getNatureRemoData(); var lastData = getLastData(); setLatestData( { te:data[0].newest_events.te.val, hu:data[0].newest_events.hu.val, }, lastData.row + 1 ); } function getNatureRemoData() { var url = "https://api.nature.global/1/devices"; var headers = { "Content-Type" : "application/json;", 'Authorization': 'Bearer ' + access_token, }; var postData = { }; var options = { "method" : "get", "headers" : headers, }; var data = JSON.parse(UrlFetchApp.fetch(url, options)); Logger.log(data[0].newest_events) Logger.log(data[0].newest_events.te.val) Logger.log(data[0].newest_events.hu.val) return data; } function getLastData() { var datas = SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getDataRange().getValues() var data = datas[datas.length - 1] return { totalpoint:data[1], coupon:data[2], row:datas.length, } } function setLatestData(data, row) { SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(row, 1).setValue(new Date()) SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(row, 2).setValue(data.te) SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(row, 3).setValue(data.hu) }
access_tokenにはNature Remoのアクセストークンを入力。
spreadsheetIdにはログを出力する先のスプレッドシートのIDを入力。
今回は15分毎に実行してみました。
集計結果
スプレッドシートに出力したログをグラフ化してみました。
画像だとわかりにくいかもしれないですが、
- 湿度が10%刻みの粒度で、40%,50%,60%のような計測結果になっている
- 温度が15分毎には更新されているので、更新頻度は15分以内である(それよりも細かくは試してない)
- 温度の細かさについては、22.39, 23, 23.6, 24.2, 24.79のようなログになっているので、約0.6℃刻みの粒度になっているっぽい
最後に
こういう計測を24時間×数日間やってみることで、生活がわかってくるかもしれないですね。