このブログで使用するフローの使い方をまとめておく。
基本的な使い方
Node-RED エディタガイド
https://nodered.jp/docs/user-guide/editor/
- Node-REDへのアクセス
IPアドレス+”:1880″ 例:http://192.168.1.50:1880
インターネットからのアクセスは、別途設定が必要。 - ノードの配置
パレットからワークスペースへフローをドラッグして配置する。
ノード同士は、左右についているポッチをドラッグして繋げる。
左側が入口。右側が出口。入口と出口しか接続できない。 - ノード更新の反映(デプロイ)
ノードを配置して設定するだけでは、反映されていない。
右上にあるデプロイをクリックして、変更内容を利用できるようにする。
デプロイせずにエディタを閉じると変更内容は取り消されている。 - トリガーの設定
日時や一定間隔、メールやtwitterの受信、センサの状態などをトリガーにして、フローを実行させることができる。 - 実行結果の表示
をクリックするとデバック情報が表示される。
フローのエラーや debugフローから出力されたmsg.payloadの情報が表示されるので、思ったように実行できているか、ここで確認しながらフローを設定していく。 - プロパティ
ワークスペース内のフローをWクリックすることで表示される設定
プロパティ:フローの設定
プロパティ:フローで処理する値が格納されている場所の指定
名前:フローに表示される文字を変更できる
topic:値の分類ができるようになる。1つのpayloadに複数の値を代入できるようになる。 - msg.payload
オブジェクトのプロパティに値を代入して、フロー間を移動する。
オブジェクトは、msg。
プロパティは、payload。payloadはデフォルトのプロパティ。 - オブジェクト
msgオブジェクト:ワイヤで繋がったフローの中でのみ有効なオブジェクト。
flowオブジェクト:フロータブ内で有効なオブジェクト。ワイヤで繋がっていなくても呼び出せる。
globalオブジェクト:別のフロータブにあっても呼び出せる。Node-RED内で共通のオブジェクト。
Injectとdebug
パレットにあるフローと、ワークスペースに移動されたフローで表示が変わる。
パレットでの表示は、フローの名称が表示されている。
ワークスペースでの表示は、設定の状態であったり、プロパティで設定した名前が表示される。
- injectフロー
ワークスペースへドラッグすると表示が右側のように表示が変わる。
文字はタイムスタンプに変化。 - debugフロー
msg.payloadの値がサイドバーのデバックに表示される。
タイムスタンプから出力される値が各設定でどのように変わるか、いくつかサンプルを作成した。
- ボタンを押したとき、現在の日付を出力
タイムスタンプの左側のボタンを押すと、msg.payloadに現在の時間が代入され、次のフローへ渡される。 - ボタンを押したとき、現在の日付を出力。msg全体を表示
1.と同じだが、debugの設定を変更して、msgオブジェクト全体を - 指定した曜日と時間に一回だけ、現在の日付を出力
- 指定した曜日と時間に一定間隔で、現在の日付を出力
- 10秒に一回、現在の日付を出力
- ボタンを押したときだけ、設定した文字を出力
- ボタンを押したときだけ、設定した数字を出力
change
changeフローは、changeノードの条件により、値を置き換えることができる。
日時を代入できるノードを追加しています。
node-red-contrib-moment
パレットを管理 ノードを追加
ここでも説明。Node-RED初期設定
いくつかの変更パターンのサンプルを作成した。
- 入力:日時→出力:日時
タイムスタンプのボタンを押すことで日時がmsg.payloadに代入される。
出力は、変更されることなくデバックに表示される。 - 入力:日時→出力:test-1
changeで、msg.payloadの値を”test-1”に置き換えている。 - 入力 : “abcd” の場合、→ “efgh” へ置き換え
ボタンを押すことで、文字列(abcd)がmsg.payloadに代入される。
msg.payloadの値が”abcd”の場合にだけ、値を”efgh”に置き換えられる。 - 値を削除
msg.payloadの値を削除して、次のフローへ受け渡す。デバックへは空が表示される。 - 日時を代入 出力 : Unix時間1970年1月1日からのmm秒数
node-red-contrib-momentノードへ、値がある状態でmsg.payloadが入ってくると、UNIX時間で出力される。
msg.payloadの値をchangeノードで削除しておけば、現在の日時がmsg.payloadに代入される。 - payload → add-payload へ変更 出力 : 現在の時間
msg.payload が、msg.add-payload に変更されている。 - 別のフローへ値の受け渡し
7-1:flow.payに値を代入。flowは、同じフロータブ内ならワイヤで繋がっていなくても呼び出せる。
7-2:7-1でflow.payに代入した値を呼び出して、msg.payloadに代入している。
コメント