Nature RemoのセンサーデータをGoogle Spread Sheetにまとめてみる

# TL;DR

Nature RemoのセンサーデータをSpread Sheetに貼り付けるだけのGASです。
これのremo_to_spreadsheet.gsをGoogle Spread SheetのGASにコピーして使ってください。
https://github.com/tobi50/nature-remo-to-spreadsheet


# Nature Remo

昔からあるエアコンやライトのリモコンの代わりに、スマホアプリなどインターネットからの指令で赤外線を飛ばす素敵ツール。

https://nature.global/

昔からアプリ上では温度とか湿度とか見れていたのですが、ログとして溜まっていなかったので、イマイチ活用出来ませんでした。
しかし！実はAPIが公開されているとのことだったので、早速使ってみました。

## Nature Remo API

良い記事があったので詳細はこちらにお任せ
https://qiita.com/sohsatoh/items/b710ab3fa05e77ab2b0a

公式サイトは下記となります。
https://developer.nature.global/

## 取得できるセンサーデータは4種類（気温、湿度、照度、動き）

APIの内、今回使用するのは`/1/devices`というNature Remoデバイスの情報を取得します。
中にはデバイスが配列として複数格納されていて、その中に`newest_events`としてセンサーデータが格納されています。
`te`が気温、`hu`が湿度、`il`が照度、`mo`が動きセンサーの値です。

```
"newest_events": {
      "te": {
        "val": 0,
        "created_at": "2020-01-12T12:14:57.423Z"
      },
      "hu": {
        "val": 0,
        "created_at": "2020-01-12T12:14:57.423Z"
      },
      "il": {
        "val": 0,
        "created_at": "2020-01-12T12:14:57.423Z"
      },
      "mo": {
        "val": 0,
        "created_at": "2020-01-12T12:14:57.423Z"
      }
    }
```

## センサーデータの取得タイミングは変えられないので注意

実際にデータを定期的に取得してみると分かるのですが、センサーデータはなっかなか更新されない時があります。
これはNature Remoの仕様のようで、センサー内部で計測をする際に前回データと変わらなければ`created_at`が更新されないようです。
ただ、どれくらいの値の変化なら変わらないと判定されるかまでは情報見つかりませんでした・・・。


# GASを作って定期的にAPIをKickする

最初はLambdaとかバッチ実行できるものを想定していたのですが、なんとGASで定期実行出来るようなので試してみました。

## GASをコピペする

GASの編集画面を開くために、新しく作成したSpreadSheetの下記からスクリプトエディタを開きます。

![スクリプトエディタ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280394/88fdeaeb-2bed-2e1c-a992-171e10d28f62.png)


今回作成したScriptを下記URLからコピーしてきて、スクリプトエディタの右下コード部分に貼り付けて使います。

https://github.com/tobi50/nature-remo-to-spreadsheet/blob/master/remo_to_spreadsheet.gs

![コードコピペ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280394/96e17a7f-638b-927a-9a96-cefecffe129a.png)

## コードの初期設定

コードの上の方にある下記の部分に従って設定していきます。

```

// Please get your access token from https://home.nature.global/
var REMO_ACCESS_TOKEN = 'YourAccessToken';

// Please set your spreadsheet url.
var SPREADSHEET_URL = 'https://docs.google.com/spreadsheets/d/hogehoge/edit#gid=0'

// First, Exec this script to create new device sheet. Check new device sheet, and Set your device id.
var REMO_TARGET_DEVICE_ID = 'YourDeviceId'

// Second, Exec this script. Check data sheet (default is "remo_logs"). if you can check your device data, Congratuation!
// Finaly, Set Triger on your project to exec every XXX minutes or hours.

```

最初にNature Remoのアクセストークンを下記のサイトから取得し、`REMO_ACCESS_TOKEN`に代入してAPIを叩けるようにしてください。

https://home.nature.global/


次に先ほど作成したSpreadSheetのURLを`SPREADSHEET_URL`に代入します。

このタイミングで一度スクリプトを保存して実行しましょう。

### 認可設定

適当に保存して実行すると、`Authorization required`が表示され、このコピペしたスクリプトに対しての認可が求められます。
このスクリプト自体はGoogleに確認してもらってる訳ではないので、警告が出ます。`詳細を表示`>`〇〇（安全でないページ）に移動`を順にクリックして自己責任で使ってください。

### Nature Remoのdevice idを確認して設定

上手く実行出来れば、Nature Remoのデバイス情報のシートが作成されます。試してないのですが複数デバイスがあれば複数のシートが作成されるハズです。
情報を取得したいデバイスのシートからidの値を取ってきて`REMO_TARGET_DEVICE_ID`に代入します。

（なんか今思えば全部のデバイスのデータ出すようにすりゃよかったですね…。プルリクウェルカムです。）

ここまで出来たら実行すれば新しいシートが作られてデータが実行するたびに溜まっていくハズです。

### GASにトリガーを設定する

![トリガー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280394/01a63627-c742-bd84-6f55-6d443ba9196c.png)

ここをクリックして

![トリガーを追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280394/b851d6c3-3611-df31-251e-55ffa1e4bbd1.png)

`トリガーを追加`をクリックして

![トリガーの設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280394/65657a2f-e2aa-aedf-3b1a-5c937c3f7fc0.png)

こんな感じで設定すると5分おきに実行されるようになります。

# 出来上がり

こんな感じでデータがどんどこ溜まってきたらOKです。
適当にグラフなんかも追加しちゃうと行動パターンが分かって面白いです。

![データイメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280394/1302bd4c-aa26-a5a7-a5a1-c5f2f7c5864b.png)