Nature Remoを追加購入したことをきっかけにAPIを触ってみたのでそのメモです。
API自体は、GASからRemoのAPIを叩いて、さらにGoogleデータポータルで可視化されている記事をQiitaに投稿されている方がおり、その記事に触発されました。
Nature Remo APIで室内の気温を取得する
APIキーの取得
https://developer.nature.global/
シンプルイズベストな取説があるのでこちらを読みます。
ちなみにAPI発行画面も超シンプルで最高です。
人によっては、すでに連携済みのGoogleアシスタントやAlexaも表示されているはず。
Bearerトークンなので流出すると危険です。気をつけましょう。
GAS実装例
function remo() {
let url = "https://api.nature.global/1/devices";
let headers = {
"Content-Type" : "application/json;",
'Authorization': 'Bearer ' + access_token,
};
let options = {
"method" : "get",
"headers" : headers,
};
// remoにアクセスして温度を取得
let data = JSON.parse(UrlFetchApp.fetch(url, options));
let te = data[0].newest_events.te.val
Logger.log("remo temp:" + te);
return te
}
補足
- access_token変数にAPIキーを定義しておく。バレるとアカンのでネットには載せないように。
- アカウントに複数のRemoを紐づけている場合は、data配列に並んで入る。
スプレッドシートへの書き込み
この関数をトリガーで1時間ごとに実行させます。
GAS実装例
function save() {
let timestamp = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss');
let remo_te;
try {
remo_te = remo();
} catch {
remo_te = "null";
}
let values = [
[timestamp, remo_te]
];
let sheet = SpreadsheetApp.getActiveSheet();
// 2行目に1行挿入
sheet.insertRows(2, 1);
// 2行目1列目から1行2列分の書き込み
sheet.getRange(2, 1, 1, 2).setValues(values);
}
最新のデータが上に来るように、常に2行目にデータを書き込みます。
(1行目にはヘッダー行がある想定)
0 件のコメント:
コメントを投稿