Nature Remo APIからGASで取得した室内気温をスプレッドシートに記録する

2021/06/09

GAS 使ってみた

t f B! P L

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
}

補足

  1. access_token変数にAPIキーを定義しておく。バレるとアカンのでネットには載せないように。
  2. アカウントに複数の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行目にはヘッダー行がある想定)

ラベル

QooQ