はじめに
Arduino IoT Cloudノードをenebular上から一通り触ってみて、ざっくりどのような挙動をするのかまとめてみました。
arduino-iot-cloudノードをインストールする方法について
こちらを参照してください。
https://qiita.com/Inoue_Minoru/private/d03e764ac48e9038bb9a
やってみたこと
enebular環境のNode-REDに@arduino/node-red-contrib-arduino-iot-cloudをインストールし、下記のノードを一通り試してみた。
- propertyノード
- historicノード
- periodicノード
- injectノード
試す上での前提条件
- enebularなどのNode-RED環境にて@arduino/node-red-contrib-arduino-iot-cloudをインストールしていること。
- Arduino IoT Cloudにアカウントを持っており、かつEntry以上のプランに入っていること。(APIキー取得済みであること)
- Device,Thing(Valiable)を既に作成しており、何かしらのセンサデータがマイコンから取得できること。
なお、ノード設定等でPropertyという表記が出てきますが、当記事ではValiable=Propertyとして読み進めて頂いても問題ございません。
Propertyノード
まず受信ノードではNode-RED側で作成した値をArduino IoT Cloudのプロパティへ設定する場合に使います。逆に送信ノードではArduino IoT Cloud側の値をArduino IoT Cloudからポーリングする際に使います。
また、送信ノードの送信タイミングはValiable設定時のOn ChangeならびにOn Periodicallyの設定に基づきます。
![histric](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2Fb9439225-57b2-45d0-acab-54894bf12711.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a5c64d1efdd3b40e5973e5c757aee515)
![histric](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F83dcb7e4-9295-476a-f741-b9377801fcbe.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9dbcdf0ddb023d44acd4078cf72aba4c)
historicノード
指定したpropertyに関して、指定期間に遡ってデータを取得できるノードです。
センサ値の状態遷移が必要な場合や、データのリアルタイム性を確保したい場合に良いかもしれません。
以下の場合は過去一時間に遡って取得したデータです。
![histric](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2Fb4f91254-8956-82b8-757c-b944bfd0b0c7.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6c6849d97d44a4fb96aa8e0557bf427e)
![histric設定](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F1f8db435-c2a4-8665-e9af-94e238080fa0.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=82e26d16545f5996b61affc95dd7d85a)
xの値は単位msのUNIX時間(UTC)で、データ取得時間が入っています。また、yの値には指定したPropertyの値が入っています。
periodicノード
任意の実行期間でPropertyの値をポーリングしてくれます。添付写真では1秒ごとに自動でpropertyの値を取得するようになっています。
部屋の室温管理など、リアルタイム性の薄いデータ取得に向いていそうです。
![periodic](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F525645b2-36b5-3d3a-b663-2d2405125d5c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f8190314252703824a37480f459b10a6)
![periodic設定](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2Fb2f8c68b-1257-fd57-24ca-f246e74a5ae8.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=667fc46c30a5a38aa4caac2de1d8de2e)
injectノードについて
何かしらのペイロードが入力されたときにセンサ値を出力します。
AlexaのようなVUIからセンサ値を参照するような、特定のイベントのときにデータを取得したい場合に良いと思います。
![inject](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F17f3375d-0023-98da-849f-2627cbee7c21.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d40a49d9180a61de058b181e31e5c5cc)
![inject](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F271381%2F9ac0dbfc-0672-93e2-1c1f-111a956daf39.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6f3f339e63c96d40d6027f871746a46f)
まとめ
arduino-iot-cloudノードに関して下記のノードを試した。
- propertyノード
- historicノード
- periodicノード
- injectノード
単にpropertyから値を取得したり、逆に値を設定する場合であればpropertyノードで事は足りそうだけど、historicノードなどの下3つのノードを使えばよりシンプルにフローを構成できるかと思います。
誰かの役に立ってくれれば嬉しいです!