はじめに
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の設定に基づきます。
historicノード
指定したpropertyに関して、指定期間に遡ってデータを取得できるノードです。
センサ値の状態遷移が必要な場合や、データのリアルタイム性を確保したい場合に良いかもしれません。
以下の場合は過去一時間に遡って取得したデータです。
xの値は単位msのUNIX時間(UTC)で、データ取得時間が入っています。また、yの値には指定したPropertyの値が入っています。
periodicノード
任意の実行期間でPropertyの値をポーリングしてくれます。添付写真では1秒ごとに自動でpropertyの値を取得するようになっています。
部屋の室温管理など、リアルタイム性の薄いデータ取得に向いていそうです。
injectノードについて
何かしらのペイロードが入力されたときにセンサ値を出力します。
AlexaのようなVUIからセンサ値を参照するような、特定のイベントのときにデータを取得したい場合に良いと思います。
まとめ
arduino-iot-cloudノードに関して下記のノードを試した。
- propertyノード
- historicノード
- periodicノード
- injectノード
単にpropertyから値を取得したり、逆に値を設定する場合であればpropertyノードで事は足りそうだけど、historicノードなどの下3つのノードを使えばよりシンプルにフローを構成できるかと思います。
誰かの役に立ってくれれば嬉しいです!