node-red

はじめてのNode-RED Getting Start編

More than 3 years have passed since last update.

基本的にはNode-REDのドキュメント(http://nodered.org/docs) を見ながら動かした内容を

備忘録的に公開していきます。


インストール

今回はMacにインストールする所から始めてみます。


Node.jsのインストール

Nodeの0.10.x以降が必要になります。

Nodeのバージョンはnodebrewなどでバージョン管理出来るようにしていた方が良いかもしれません。

Raspberry Piなどの場合は頻繁にNodeをアップグレードする事もないかもしれないので、必要ないかな?

以下URLからインストーラーをダウンロードしてNode.jsをインストールしましょう。

https://nodejs.org/

次に以下コマンドでインストールを行います。

sudo npm install -g --unsafe-perm node-red

他にもインストール方法はあるので試したい人や上記方法で上手くインストールできなかった人は

ドキュメントのAlternative install methodsを参考にして試してみてください。

http://nodered.org/docs/getting-started/installation


起動

node-redコマンドがインストールされているので実行するだけです。

起動したらブラウザで http://localhost:1880 にアクセスしてみてください。

起動できていればNode-REDの画面が表示されるはずです。

node-redコマンドをオプション無しで実行した場合、その後に作成したflowや設定(setting.js)のデータは$HOME/.node-red以下を参照します。

個人的には管理しやすくなるので作成するflow用にnode-red -u . -s ./setting.jsのように

明示的に指定しておいた方が良いと思います。

ちなみにsetting.js-uで指定しているディレクトリにある場合は-sを指定しなくても、

そのディレクトリにあるsetting.jsが参照されるようでした。


ノード追加

Node-REDではデフォルトで利用出来るノードの他、

用途に合わせてノードを追加する事ができます。

http://flows.nodered.org

自分でノードを作成し、公開する事もできます。

今回はまず動かす事を優先して飛ばします。


flow作成(その1)


  • ブラウザの画面左側のノード一覧からInputノードのInject Node(表記はinject)を追加します。

  • ノード一覧のOutputノードからDebug Node(表記はdebug)を追加します。

  • 2つのノードを繋ぎます。それぞれのノードにポートを示す□がついてるのでそれをマウスでドラッグして繋ぎます。

  • Deployボタンを押してflowを実行してみましょう。(初めは「上手く動かないなー」と思ってたら単にデプロイされてないだけだったりする事がよくありました)

  • ブラウザの画面右にinfoとdebugタブがあると思います、debugタグをクリックしてフォーカスさせます。

  • Inject Nodeの左側にボタンがあるのでクリック

  • debugに数字が表示された事を確認

Kobito.re0Iqy.png

上手く表示されたでしょうか?debugに表示されたのはtimestampの値です。

ノードにはざっくり言うとInput/Function/Outputのノードがあるとイメージすると良いでしょう。

イベントのトリガ、処理、通知先という感じですね。

InputとOutputのNodeしか作ってないのでFunctionノードも使ってみましょう。

先ほどのflowをそのまま修正する形で進めます。


  • ノード一覧のFunctionからFunction Node(表記はfunction)を追加します。

  • Function Nodeをダブルクリックして、ノード名(name)と機能(Function)を入力します。functionに書くのは当然jsです。以下の内容を書き込んでOKボタンをクリックしてください。

// Create a Date object from the payload

var date = new Date(msg.payload);
// Change the payload to be a formatted Date string
msg.payload = date.toString();
// Return the message so it can be sent on
return msg;


  1. InjectノードとDebugノードの接続を切ります。二つをつなぐ線をクリックして選択状態にし、deleteキーで削除です。ちなみにNodeも同じようにクリックで選択し、deleteで削除したり、ドラッグによる矩形でまとめて選択できたりします。

  2. 次にInjection-Function-Debugのような形にノードを繋ぎ直してください。あとはDeployして実行するだけです。

Kobito.8hlxZQ.png

debugの出力結果が日付のフォーマットに変わっていたら成功です。


まとめ

とりあえずここまででNode-REDがどんなものかなんとなく掴めてきたのではないでしょうか?

長くなってきたので一旦ここまでにして続きはまた別の記事として書こうと思います。