Nature Remo miniで温度管理
https://scrapbox.io/files/64489d4bb67b1a001c82c145.png
具体的なやり方は上記のリンクと同じ。Google Apps Scriptに記述するコードが違う。
なぜ
Nature Remoだと温度・湿度・照度まで取得できる
miniバージョンだと温度だけしか取得しない ← ここ重要
なので、温度だけ取得してスプレッドシートに書き込むことになる。
https://scrapbox.io/files/6448a2c5b78f73001bbc42bf.png
ついでに日付・時刻にわけて、データ番地を書き込むことで、ダッシュボード側でかんたんにソートができるようにしてみた。
今のところ5分間に1回ずつ取得し、ログが27万になって安定的な運用はできているみたい(2024/3/13時点)
https://scrapbox.io/files/65f1a9f77a26c60024e27cc9.png
ところでこの膨大なデータどうすんだろ
コード
code:コード.gs
var access_token = 'XXXXXXXXXXXXXXXXXXXX' // ← アクセストークンを入れる
var spreadsheetId = 'YYYYYYYYYYYYYYYYYYYY' // ← スプレッドシートのIDを入れる
function remo() {
var data = getNatureRemoData(); // データ取得
var lastData = getLastData(); // 最終データ取得
setLaremoData(
{
te:data0.newest_events.te.val, // 温度のみ },
lastData.row + 1 // 最終データ追加
);
}
function getNatureRemoData() { // Remo API
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(data0.newest_events) Logger.log(data0.newest_events.te.val) return data;
}
function getLastData() {
var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName('log')
var datas = sheet.getDataRange().getValues()
return {
row:datas.length,
}
}
function setLaremoData(data, row) {
var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName('log')
// A列の値を配列で取得
const columnBVals = sheet.getRange('A:A').getValues();
//空白を除き、配列の数を取得
const LastRow = columnBVals.filter(String).length;
Logger.log(LastRow);
sheet.getRange(row, 1).setValue(new Date()) // A2に日時追加
sheet.getRange(row, 2).setValue(data.te) // B2に温度追加
if (LastRow < 2) {
// E2に=ARRAYFORMULA(TEXT(A2:A,"YYYYMMDDHH")) 挿入
sheet.getRange('C2').setValue('=ARRAYFORMULA(TEXT(A2:A,"MM/DD"))');
sheet.getRange('D2').setValue('=ARRAYFORMULA(TEXT(A2:A,"HH:mm"))');
sheet.getRange('E2').setValue('=ARRAYFORMULA(ROW(E2:E)-1)');
}
}