[IoT][enebular][Node-RED][myThings] enebular/Node-REDとmyThingsの連携

By |9月 10, 2015|enebular, IoT, Javascript, Node-RED, Node.js, OSS, |


先週末、福岡のYahooさんのオフィスで開催された第4回九州IoT/M2M勉強会に登壇させていただきました。

もちろんenebular/Node-REDmyThingsの連携させた内容です。

myThingsはYahoo Japanが7月下旬に発表した、アプリやサービスを組み合わせてアクションを起こすIFTTTのようなサービスです。

色々なアプリやサービスをチャンネルとして扱い、チャンネルのトリガーやアクションを組み合わせてシンプルなワークフローを自動化できます。

デフォルトで準備されていないサービスやアプリと連携したい場合は、チャンネル追加リクエストをしてYahooさんがチャンネル追加するのを待つ… こともなく、開発できるならIDCフロンティアさんのIDCFチャンネルを利用することで低レイヤーで柔軟な連携が可能になります。

IDCFチャンネルを利用するにはmyThingsをはじめようの手順でmyThingsと連携するサーバを構築します。

IDCF Cloudで動かすのはOctobluのMeshbluというオープンソースのMQTTブローカとfreeboardというオープンソースのダッシュボードプロダクトです。

Webサーバとしてnginx、更にluaで処理が追加されてますが、これらはDocker Composeでまとめられているので基本的にドキュメント通りにコマンドを打てば環境構築可能です。

詳細の説明は以下の各ドキュメントに譲りますので、IDCF Cloudでサーバを構築してmyThingsのIDCFチャンネルを認証して有効にして、「天気・災害」のトリガーの組み合わせを作るところまで割愛します。

今回はmyThingsをはじめよう – Part5: 「天気・災害」のトリガーを「IDCF」のアクションがHTTPで受信するの最後にあるMQTTでsubscribeもできていますの部分を
[IoT][enebular][Sango] enebularと時雨堂さんのSangoでMQTTを気軽に試すと同じ要領でSubscribeしてみます。

では、enebularでIDCF Cloudに構築したサーバをSubscribeするflowを作ってみましょう。

まずは以下のようにmqtt in nodeを配置します。

配置したmqtt in nodeにIDCFに構築したサーバの認証情報を登録します。

まず以下のようにIDCFサーバでmyThingsに登録したaction-1のuuidとtokenを確認。

$ docker-compose run --rm iotutil show -- -k action-1

> iotutil@0.0.1 start /app
> node app.js "show" "-k" "action-1"

┌──────────┬──────────┬──────────────────────────────────────┐
│ keyword  │ token    │ uuid                                 │
├──────────┼──────────┼──────────────────────────────────────┤
│ action-1 │ 8a781e76 │ 3a78814a-6879-4543-bacf-9a206cd951a6 │
└──────────┴──────────┴──────────────────────────────────────┘

action-1デバイスの確認参照

次にaction-1のuuidとtokenを以下のように登録。

続いてtopicに同じくaction-1のuuidを登録。

これで、myThingsをはじめよう – Part5: 「天気・災害」のトリガーを「IDCF」のアクションがHTTPで受信するで作った組み合わせが実行されると以下のようにmyThingsを通じて天気情報をJSONで取得できます(デフォルト15分間隔で実行される)

ちなみにmyThingsアプリで以下のように手動実行すればflowを組みながらデバッグできます。

ここから先は取得した情報を元にデバイスを操作したり、どこかにメッセージを加工して転送したり、誰かにメールを送ったり、何かのストレージに格納したりといったenebular/Node-REDで可能な多種多様な連携に応用してください。