3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MotionBoardで可視化した温度センサーの値が閾値を超えたらTwilio経由でSMSを投げる

Last updated at Posted at 2019-06-22

1. はじめに

Webiotセンサーを使ってMotionBoardで最速で可視化してみるで温度センサーの値を可視化をしてみたところ、温度がリアルタイムに見れるのはいいのですが画面をずっと見てるわけにはいかず、どうしたものかと思っていたところ、普段使っているTwilioにアラートを飛ばせないかと思いいろいろやっていたらできたので、私自身の備忘録を兼ねて手順を書こうと思います。

2. Twilioとは

電話の発着信やSMS送受信をサービス化したもので、HTTPを使って接続したり、公開されているライブラリで簡単に接続できちゃうgoodなサービスです。プログラム次第で、サーバーのアラートに使ったり自宅にコールセンターもどき建てたり、あんなことやこんなことができてしまいそうなサービス。

Qiita上にもいっぱい記事があります。

3. MotionBoardとは

データベースやセンサーデータなどを可視化できるソフトウェアです。
商用ソフトウェアですが、各種データベースとの接続や高度な可視化・分析機能が使用できます。

4. 構成イメージ

image.png

5. 必要なもの

  • MotionBoard
  • Twilioのアカウント
  • アカウントSIDとAUTHTOKEN、SMS送信が可能なTwilio電話番号(米国番号)
  • node-redが動く環境
  • 今回はテスト用なのでIBM Cloud(旧Bluemix)の無償ライセンス(ライト・アカウント)を利用

6. 連携手順

Twilio接続情報確認

Twilio Consoleにログインします。
後で使うのでアカウントSIDとAUTHTOKENを控えておきます。
image.png

IBM Cloud(旧Bluemix) +NodeRED準備

IBM Cloud(旧Bluemix)にログイン
検索窓などから[Node-RED Starter]にアクセスします。
image.png

アプリ名やホスト名を入力します。
続いて、Node.jsからCloudantか選択します。
容量や停止・削除のルールが違うので規約をよく読んでおくといいと思います。
ちょっと試すぐらいであればどちらでも大丈夫ですが、無償版の場合、どちらを選んでも一定時間何もしないと停止や削除されますので注意が必要です。
image.png

作成が完了すると、Node-REDにアクセスできるようになります。
image.png

Node-REDの使い方は書きませんが、フロー(シナリオ)のインポート機能がありますので、[メニュー]->[読み込み]->[クリップボード]の順でクリックします。
image.png

下をまるごとコピーして、貼り付けます。

[{"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":[]}]

image.png

[twilioノード]をダブルクリックし、編集します。鉛筆アイコンをクリックします。
image.png

[Twilio Console]で控えた、アカウントSID(Account SID)とAUTHTOKEN(Token)をそれぞれ入力します。
電話番号をFromに入力しますが、形式は+1123456xxxxのようにします。
image.png

最後に[SMS to]に送りたい相手の(SMS送信テスト端末の)SMS番号を入力して保存します。
形式は+81801234xxxxのようにします。

設定が終わったら[デプロイ]ボタンを押下して、変更を適用します。
image.png

MotionBoardの設定

MotionBoardにログインします。

事前準備

連携対象の[データソースエディタ]を開き、[アラート]画面からアラートを設定しておきます。
画面は[temp]が[30以上]になった場合をアラート条件に設定しています。
image.png

閾値を超えたときに他システムと連携できるのは[チャートアイテム]となります。
あとで使うので、連携対象の[チャートアイテム]の[プロパティ]から[名前]を確認しておきます。
image.png

名前を控えておきます。
image.png

リアルタイムアラートの設定

[ボード管理]->[リアルタイムアラート]タブと順にクリックし、[リアルタイム連携を有効にする]にチェックを入れます。アラートの実行ユーザーをログインユーザーに設定します。
image.png

[監視アイテム設定]タブで、先ほど控えた対象となるチャートアイテムにチェックを入れます。
image.png

[アラートアクション設定]タブで、[Webリクエストを実行する]にチェックを入れ、[詳細設定]をクリックします。[URL]に[Node-REDのURL/SMS]と入力し、[パラメータ名]にval、値に${alert_item_last_summary_values}と入れて保存すれば設定は完了です。
${alert_item_last_summary_values}はチャートアイテムの最後値に置き換わるMotionBoardの変数です。

image.png

閾値を超えたときにNode-REDで設定したSMS電話番号にtemp=25.4などと値が飛べば成功です。
下は実際にSMSで受信した例。
image.png

7. 参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?