obnizで簡単にIoTデータロガーを作る方法の比較（IFTTTとIntegromatの比較）

# はじめに

以前、[obniz（オブナイズ）](https://obniz.io/)で定期的にセンサ値を取得してGoogle スプレッドシートに保存するデータロガーシステムを、以下の3つの方法で作成しました。

- [Google Apps ScriptでAPIを作成](https://qiita.com/y-hira/items/b8fe1268a12492bd865c)
- [IFTTT経由でobnizとGoogle スプレッドシートを接続](https://qiita.com/y-hira/items/de7e8d5c2e8e4c1c4acd)
- [Integromat経由でobnizとGoogle スプレッドシートを接続](https://qiita.com/y-hira/items/62ce3d77908954400cc0)

これらの方法のメリットやAPI制限について比較してみます。

# IoT機器にobnizを利用するメリット
## ArduinoやRaspberry Piと比較したobnizの特徴
[obniz（オブナイズ）](https://obniz.io/)は日本のCambrianRobotics社が開発したマイコンボードで、Wi-Fiに接続してインターネット経由で操作します。
従来Arduinoのようなマイコンボードは、Wi-Fiに繋ぐだけでモジュールを追加したりプログラムの分量が増えたりと一苦労でしたが、obnizはWi-Fiに繋ぐことを前提とし、スマートフォンのように、電源を入れて画面の指示に従うと簡単にWi-Fiに接続することができます。
またRaspberry PiのようなLinuxボードは突然の電源断によりファイルシステムが壊れたり起動しなくなることがありますが、obnizではそのような心配も少ないです。

obnizボード上で、通常の使用によりメモリが書き換えられるのは、Wi-Fiのアクセスポイント設定を変更するときだけでしょうか。

## エッジデバイスに望まれる機能
IoTシステムの典型例として、遠隔データロガーを作ることを考えます。要件として、

- 家庭やオフィス、屋外、**様々な場所**の温度を遠隔監視したい
- 定期的にログを取り、また**リアルタイム**に値を取得できるようにしたい
- 今後センサやアクチュエータを追加する可能性がある**拡張性**
- **セキュリティ**
- 非常時の**安定性**

という要件があります。このとき、エッジデバイスに望まれる機能として、

- 大量のセンサを**ばらまいて一元管理**できる
- 常にインターネットに繋がっていて、リクエストを送ると**リアルタイム**に値を測定して返してくれる
- **遠隔でプログラムを更新**することができる
- 端末-クラウド間の**暗号化**
- 突然の電源断で壊れにくい、手動操作不要で**すぐ復旧**する

などが考えられます。

obnizでは

- ライセンスごと（ボードごと）に**ID**が元から付されており、クラウド経由で複数のデバイスをまとめて操作することも可能
- 電源が入ると**すぐにWi-Fiに接続**されクラウド経由で操作可能になる
- APIで操作するので**プログラム書き込み不要**
- 端末-クラウド間の**暗号化可能**（Proライセンスのみ）
- 通常使用時書き換えられるメモリがない

ため、**これらの望まれる機能を備えているといえます！**
（ただ現時点ではWi-Fiアクセスポイントが近くにある必要がありますね…）

そこでobnizを利用して、IoTデータロガーのシステムを構築してみました。

# IFTTTとIntegromatの比較
[IFTTT](https://ifttt.com/)や[Integromat](https://www.integromat.com/)といったフロー自動化サービスを利用すれば、obniz以外にプログラムは不要でした。
今回2種のサービスを介してそれぞれIoTセンサーロガーを作成した上で気づいたメリットやデメリットをまとめました。

## IFTTTのメリット
- 日本での作例も多い
- 動作回数（無料で使える動作回数はIntegromatより多い？）

実際に[IFTTT経由でobnizとGoogle スプレッドシートを接続](https://qiita.com/y-hira/items/de7e8d5c2e8e4c1c4acd)する方法で動かしてみているところ、30分間隔であれば制限超過せずに72時間以上動作し続けました。20分間隔では数時間おきに以下のように制限超過してしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401669/75dbd6d3-3b76-7e1a-d8b2-772249099478.png)


## Integromatのメリット
- Integromat上でWebhookのデータの中身に応じて処理を分岐させたり、フィルターを作ることができる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401669/1d91e0f1-72a9-b1d6-2152-6da12494e50b.png)

- 即時に動作する（IFTTTはなぜか数時間後にまとめて反映されることが多かった）

- 動作状況を詳しく見ることができる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401669/dcc75f32-71b7-6b1a-f699-02def7b8a446.png)

- Google スプレッドシートのアクションパターンが豊富
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401669/6bdbee0a-ebff-8859-9bbd-4071f7a781fb.png)

- Google スプレッドシートに記録する様式を、関数を用いて詳細に設定可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401669/dfcb52c6-986e-4f2b-a32b-df251af2d925.png)

ただ、フリープランでは動作回数が1ヶ月あたり1000回までとなっており、1回の記録動作につき`Webhooks`と`Google Sheets`の`Add a Row`という2つの要素を用いているため、記録できるのは1ヶ月に500回までです。一定間隔で記録するならおよそ90分に1回までですね…

動作回数の制限が許容範囲であれば、Integromatを使ったほうが良いでしょう。

# Google Apps Script でAPIを作成する場合
Google Apps Script でAPIを作成する場合でも、[こちらの記事](https://qiita.com/y-hira/items/b8fe1268a12492bd865c)の通り、プログラムはほぼコピペでできます。この場合、

- obniz Cloudのサーバーレスイベント機能: 120 run/day, 1 runあたり30秒以内
- GAS: Triggers total runtime 90min/day

というAPI呼び出し制限があります。

# API制限のまとめ
以上より、API制限にかからず安定して記録できる最短更新間隔は以下のようになると考えられます。

|方法|最短更新間隔|
|:---:|:---:|
|[Integromat経由でobnizとGoogle スプレッドシートを接続](https://qiita.com/y-hira/items/62ce3d77908954400cc0)|90分|
|[IFTTT経由でobnizとGoogle スプレッドシートを接続](https://qiita.com/y-hira/items/de7e8d5c2e8e4c1c4acd)|約30分|
|[Google Apps ScriptでAPIを作成](https://qiita.com/y-hira/items/b8fe1268a12492bd865c)|12分|

より高頻度でデータを保存したい場合は、[Google Apps ScriptでAPIを作成](https://qiita.com/y-hira/items/b8fe1268a12492bd865c)する方法において、obniz側のプログラムでsetIntervalを用いて書き、node.js等で常に実行しておくという方法があります。しかし、GASの利用制限も超えてしまう場合は、Googleスプレッドシートを使うことはできないので、他のIoT向けサービスを検討する必要があります。IoTに特化したプラットフォームとして、Google Cloud IoT, Microsoft Azure IoT, AWS IoT等があり、IoT向けの通信にはMQTTという通信方式が使われます。

# 最後に
IntegromatはフリープランでのAPI制限が厳しいですが、とても簡単で応用の効くサービスだと感じました。
いずれの方法でも、obnizを使えば初心者でも安定したIoTデータロガーを低コストで素早くシンプルに構築できるようになっています。センサの価格も安くなってきていますし、個人でもデータを実際に取って可視化してみると、新たな発見があって面白いです。ぜひIoT化を推し進めていきましょう。