新たなNode-REDアプリケーションを開発する
最後にNode-REDでの開発の応用編として、サンプルフローをカスタマイズして別の振る舞いをするアプリケーションに変更してみましょう。
無人の場所に設置された物体にセンサーを仕掛け、物体が動かされたらTwitterで通知するというシナリオを実現するアプリケーションを作成します。
作成するアプリケーションの概要
- accelXまたはaccelYの値が-0.1から0.1の間は正常範囲、左記以外を異常とする
- accelZの値が-1.5から1.5の間は正常範囲、左記以外を異常とする
- Twitterには同一メッセージの連投制限があるので、毎回メッセージの内容を変化させる
- 温度センサーではなく加速度センサーのデータをアプリケーションの入力として利用する
- 加速度センサーのX軸、Y軸、Z軸それぞれの閾値を設定し、正常・異常を判定する
- 異常時にメッセージをTwitterにつぶやく
作成済みフローの例
作成済みフローの例は図23のようになります。
アプリケーション作成のための変更ポイント
それでは、これからアプリケーション作成のための変更ポイントを解説します。
1)温度センサーではなく加速度センサーのデータをアプリケーションの入力として利用する
mbedクライアント側のプログラムは、Internet of Things Platformサービスへ加速度センサーのデータも送信するため、入力ノード(図23では「IBM IoT App In」)は変更不要です。
加速度センサーのデータは、accelX、accelY、accelZとして参照することができるため、図24のように定義しましょう。
2)加速度センサーのX軸、Y軸、Z軸それぞれに閾値を設定し、正常・異常を判定する
このアプリケーションの閾値は、動作確認しやすいように異常値を発生させやすくしています。
mbedおよびアプリケーションボードを机上などの平面に設置した状態でX~Z軸の値が示す範囲を一定時間観察したうえで、ゆっくり傾けたり動かした時のセンサーの値の変化を確認して閾値を決めました(図25)。
3)異常時にメッセージをTwitterにつぶやく
Twitterに出力するノードは、フロー・エディターの左側ペインの「Social」カテゴリーにあります。鳥のマークが右側に付いたノードを配置しましょう(左側にマークがついたノードは入力ノード、右側にマークがついたノードは出力ノードです)。
構成ダイアログでは、ご自身がお持ちのTwitterアカウントでAPIを利用するための設定を行います。アプリケーションから自動ツイートするため、テストとして使っても良いTwitterアカウントを設定してください。
Node-REDからTwitter APIを利用できるようにするための設定手順を図26~29に示します。図27の操作の後、次のメッセージが表示されたらNode-REDのフロー・エディターへ戻って設定を行います。
「Authorised - you can close this window and return to Node-RED」
フロー・エディターへ戻ると図28のようにTwitterのIDが構成ダイアログに表示されるため「Add」をクリックします。
Twitterにつぶやくメッセージの文言は、ファンクションとして定義します。同一文言の連投制限を回避するために毎回メッセージの文言を変えるため、getTimeメソッドの結果をメッセージ文言の先頭に追加しています(図30)。
テストメッセージの文言はインターネットに公開されるため、この例では、直接的な言い回しは避けました。
この後の動作確認のため、デバッグログを出力可能とします。図31で印をつけたスイッチをクリックすることにより、デバッグログ出力のオン・オフを切り替えることが可能です。図31のようにスイッチが飛び出て濃い緑色の状態になっていれば、ログが出力されます。