Node-RED:フローの使い方➀

Node-RED
スポンサーリンク

このブログで使用するフローの使い方をまとめておく。

基本的な使い方

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の値がサイドバーのデバックに表示される。

タイムスタンプから出力される値が各設定でどのように変わるか、いくつかサンプルを作成した。

  1. ボタンを押したとき、現在の日付を出力
    タイムスタンプの左側のボタンを押すと、msg.payloadに現在の時間が代入され、次のフローへ渡される。
  2. ボタンを押したとき、現在の日付を出力。msg全体を表示
    1.と同じだが、debugの設定を変更して、msgオブジェクト全体を
  3. 指定した曜日と時間に一回だけ、現在の日付を出力
  4. 指定した曜日と時間に一定間隔で、現在の日付を出力
  5. 10秒に一回、現在の日付を出力
  6. ボタンを押したときだけ、設定した文字を出力
  7. ボタンを押したときだけ、設定した数字を出力

change

changeフローは、changeノードの条件により、値を置き換えることができる。

日時を代入できるノードを追加しています。
node-red-contrib-moment

パレットを管理 ノードを追加
ここでも説明。Node-RED初期設定

いくつかの変更パターンのサンプルを作成した。

  1. 入力:日時→出力:日時
    タイムスタンプのボタンを押すことで日時がmsg.payloadに代入される。
    出力は、変更されることなくデバックに表示される。
  2. 入力:日時→出力:test-1
    changeで、msg.payloadの値を”test-1”に置き換えている。
  3. 入力 : “abcd” の場合、→ “efgh” へ置き換え
    ボタンを押すことで、文字列(abcd)がmsg.payloadに代入される。
    msg.payloadの値が”abcd”の場合にだけ、値を”efgh”に置き換えられる。
  4. 値を削除
    msg.payloadの値を削除して、次のフローへ受け渡す。デバックへは空が表示される。
  5. 日時を代入 出力 : Unix時間1970年1月1日からのmm秒数
    node-red-contrib-momentノードへ、値がある状態でmsg.payloadが入ってくると、UNIX時間で出力される。
    msg.payloadの値をchangeノードで削除しておけば、現在の日時がmsg.payloadに代入される。
  6. payload → add-payload へ変更 出力 : 現在の時間
    msg.payload が、msg.add-payload に変更されている。
  7. 別のフローへ値の受け渡し
    7-1:flow.payに値を代入。flowは、同じフロータブ内ならワイヤで繋がっていなくても呼び出せる。
    7-2:7-1でflow.payに代入した値を呼び出して、msg.payloadに代入している。
Node-RED
スポンサーリンク
masafをフォローする
マサフ ブログ

コメント