MotionBoardで可視化した温度センサーの値が閾値を超えたらTwilio経由でSMSを投げる
1. はじめに
Webiotセンサーを使ってMotionBoardで最速で可視化してみるで温度センサーの値を可視化をしてみたところ、温度がリアルタイムに見れるのはいいのですが画面をずっと見てるわけにはいかず、どうしたものかと思っていたところ、普段使っているTwilioにアラートを飛ばせないかと思いいろいろやっていたらできたので、私自身の備忘録を兼ねて手順を書こうと思います。
2. Twilioとは
電話の発着信やSMS送受信をサービス化したもので、HTTPを使って接続したり、公開されているライブラリで簡単に接続できちゃうgoodなサービスです。プログラム次第で、サーバーのアラートに使ったり自宅にコールセンターもどき建てたり、あんなことやこんなことができてしまいそうなサービス。
Qiita上にもいっぱい記事があります。
3. MotionBoardとは
データベースやセンサーデータなどを可視化できるソフトウェアです。
商用ソフトウェアですが、各種データベースとの接続や高度な可視化・分析機能が使用できます。
4. 構成イメージ
5. 必要なもの
- MotionBoard
- Twilioのアカウント
- アカウントSIDとAUTHTOKEN、SMS送信が可能なTwilio電話番号(米国番号)
- node-redが動く環境
- 今回はテスト用なのでIBM Cloud(旧Bluemix)の無償ライセンス(ライト・アカウント)を利用
6. 連携手順
Twilio接続情報確認
- アカウントSIDとAUTHTOKEN、SMS送信が可能なTwilio電話番号(米国番号)
- 今回はテスト用なのでIBM Cloud(旧Bluemix)の無償ライセンス(ライト・アカウント)を利用
Twilio接続情報確認
Twilio Consoleにログインします。
後で使うのでアカウントSIDとAUTHTOKENを控えておきます。
IBM Cloud(旧Bluemix) +NodeRED準備
IBM Cloud(旧Bluemix)にログイン
検索窓などから[Node-RED Starter]にアクセスします。
アプリ名やホスト名を入力します。
続いて、Node.jsからCloudantか選択します。
容量や停止・削除のルールが違うので規約をよく読んでおくといいと思います。
ちょっと試すぐらいであればどちらでも大丈夫ですが、無償版の場合、どちらを選んでも一定時間何もしないと停止や削除されますので注意が必要です。
作成が完了すると、Node-REDにアクセスできるようになります。
Node-REDの使い方は書きませんが、フロー(シナリオ)のインポート機能がありますので、[メニュー]->[読み込み]->[クリップボード]の順でクリックします。
下をまるごとコピーして、貼り付けます。
[{"id":"ed8a071f.1c01a8","type":"http in","z":"427f42ab.efec4c","name":"","url":"/sms","method":"get","upload":false,"swaggerDoc":"","x":240,"y":280,"wires":[["c8b7d081.e9a91","96eb2ea.c3ec1d"]]},
{"id":"acde86dc.191d98","type":"twilio out","z":"427f42ab.efec4c","service":"_ext_","twilio":"","from":"","number":"","name":"","x":690,"y":280,"wires":[]},
{"id":"c8b7d081.e9a91","type":"http response","z":"427f42ab.efec4c","name":"","statusCode":"","headers":{},"x":500,"y":220,"wires":[]},
{"id":"96eb2ea.c3ec1d","type":"function","z":"427f42ab.efec4c","name":"","func":"msg.payload = msg.payload.val;\n\n\nreturn msg;","outputs":1,"noerr":0,"x":420,"y":380,"wires":[["13f8eec7.cfbde1","acde86dc.191d98"]]},
{"id":"13f8eec7.cfbde1","type":"debug","z":"427f42ab.efec4c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":770,"y":380,"wires":[]}]
[twilioノード]をダブルクリックし、編集します。鉛筆アイコンをクリックします。
[Twilio Console]で控えた、アカウントSID(Account SID)とAUTHTOKEN(Token)をそれぞれ入力します。
電話番号をFromに入力しますが、形式は+1123456xxxxのようにします。
最後に[SMS to]に送りたい相手の(SMS送信テスト端末の)SMS番号を入力して保存します。
形式は+81801234xxxxのようにします。
設定が終わったら[デプロイ]ボタンを押下して、変更を適用します。
MotionBoardの設定
MotionBoardにログインします。
事前準備
連携対象の[データソースエディタ]を開き、[アラート]画面からアラートを設定しておきます。
画面は[temp]が[30以上]になった場合をアラート条件に設定しています。
閾値を超えたときに他システムと連携できるのは[チャートアイテム]となります。
あとで使うので、連携対象の[チャートアイテム]の[プロパティ]から[名前]を確認しておきます。
リアルタイムアラートの設定
[ボード管理]->[リアルタイムアラート]タブと順にクリックし、[リアルタイム連携を有効にする]にチェックを入れます。アラートの実行ユーザーをログインユーザーに設定します。
[監視アイテム設定]タブで、先ほど控えた対象となるチャートアイテムにチェックを入れます。
[アラートアクション設定]タブで、[Webリクエストを実行する]にチェックを入れ、[詳細設定]をクリックします。[URL]に[Node-REDのURL/SMS]と入力し、[パラメータ名]にval、値に${alert_item_last_summary_values}と入れて保存すれば設定は完了です。
${alert_item_last_summary_values}はチャートアイテムの最後値に置き換わるMotionBoardの変数です。
閾値を超えたときにNode-REDで設定したSMS電話番号にtemp=25.4などと値が飛べば成功です。
下は実際にSMSで受信した例。
7. 参考
Author And Source
この問題について(MotionBoardで可視化した温度センサーの値が閾値を超えたらTwilio経由でSMSを投げる), 我々は、より多くの情報をここで見つけました https://qiita.com/Yoshiki_w/items/bdee67e405ba0f030ae4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .