Node-RED事始め

  • 62
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Node-REDの基本的な事をまとめます。

概要

Node-REDはIBM英国Hursley研究所のメンバーを中心に開発されていますのでBluemix(IBM社が提供するPaaS)でしか動かないものだと勘違いされている方もいらっしゃいますが、Node-RED自体はオープンソースソフトウェアであり、Node.jsが動く環境であればどこでも動かせます。

Bluemixなどのクラウド上で動かすこともできれば、ローカルのPCやRaspberry Piでも動作させることが可能です。後述しますがNode-REDはBLE(Bluetooth Low Energy)や各種センサープロトコルに対応したプラグインが豊富で、よりエッジ側(IoT的に言うとThings、つまりモノに近い方)で動作させるのも面白いです。

インストール

npm install

前述の通りNode.jsが動く環境であれば動作しますので以下のようにインストールして起動できます。

$ npm i node-red
$ node node_modules/node-red/red.js

Bluemix

Bluemixで動かすのが最も手っ取り早いです。

Node-RED を使用してリアルタイムのチャット・アプリケーションを 5 分で作成する

Heroku Button

Heroku Buttonもあります。詳細はREADMEにありますが、NODE_RED_USERNAMEとNODE_RED_PASSWORDに任意のユーザ名とパスワードを入力してDeploy to Freeボタンをクリックすると使えます。

Deploy

動かす前に知っておくこと

データの流れ

Node-REDをインストールした環境の外側からINPUTされるデータや環境内や周辺で発生するデータ(ログやセンサーデータなど)と、その環境から外側へのOUTPUTまでのデータの流れをビジュアル的にNode-RED上に表すことができます。

 nodered_overview.png

データの処理

データの流れに条件分岐や繰り返しなどの処理を加えることもできます。

スクリーンショット 2015-10-30 13.48.48.png

HTTPで遊んでみる

まずはHTTPリクエストを受け付けるエンドポイントを作ってみましょう。以下のようにhttp in nodeをドラッグ&ドロップしてワークスペースに配置します。

スクリーンショット 2015-10-30 14.32.26.png

配置したhttp in nodeをダブルクリックするとnodeの設定ダイアログが開きます。

スクリーンショット 2015-10-30 14.37.06.png

URLを設定します。

スクリーンショット 2015-10-30 14.44.36.png

同じ要領でHTTPレスポンスを配置します。

スクリーンショット 2015-10-30 14.52.37.png

配置した2つのnodeをつなぎます。

スクリーンショット 2015-10-30 14.54.47.png

最後にデータを受け取れるかどうか確認するため同じ要領でdebug nodeを配置してhttp in nodeと接続してDeployボタンをクリックします。

スクリーンショット 2015-10-30 14.59.50.png

これで、Node-REDをインストールしたホストに/testというエンドポイントが作られましたのでブラウザの別ウィンドウ(タブ)などでアクセスしてみましょう。

スクリーンショット 2015-10-30 15.19.39.png

HTTPレスポンスで何も返してないので空のJSONが返ってきます。

では、/test?aaa=111というようにパラメータを渡してみましょう。

スクリーンショット 2015-10-30 15.22.11.png

渡したパラメータがレスポンスとしてJSONで返ってきました。

エディタ画面に戻るとdebug nodeによってデバッグ欄に受け取ったパラメータがJSONに変換されて表示されています。

スクリーンショット 2015-10-30 15.24.22.png

つまりhttp in nodeで受け取ったaaa=111というパラメータが{ "aaa": "111" }というJSONに変換されて、http out nodeとdebug nodeの両方へ流れていったということです。

以上、今後も面白い遊び方をこちらに追加していきたいと思います。

最後に: Node-REDについてさらに知りたい

Node-RED User Group Japan へどうぞ!