OSS

Node-RED入門②【基本操作】

はじめに

この記事ではNode-REDの環境構築後の基本機能・操作について説明します。

  • まずは基本的な操作を覚えて、Node-REDを弄ってみたい。
  • Node-REDを使うことでノーコードでの開発が出来ることは知ってるけど、具体的に何が出来るのかよくわからない

筆者はWSL上のUbuntu20.04で操作を行いますが、WSLの構築、Node-REDのインストール方法については以下の記事を参考にしてください。
https://sidefire-engineer.com/node-red入門/

インストールが完了し、WEBブラウザ上でNode-REDの操作画面が表示された状態になりましたら次章に進んで下さい。

用語説明

ブラウザでNode-REDを表示した初期画面は以下となっています。
file
この画面の左側のメニューのことを「パレット」と呼びます。
真ん中の方眼紙のようなスペースは「ワークスペース」、右側の各種情報が表示されている部分が「サイドバー」です。
Node-REDでは、パレットにある「ノード」をワークスペースに配置し、ノード通しをワイヤでつないで任意のフローを実行させることが可能です。

Node-REDで出来ること

Node-REDを使うことで、以下のような処理、設定をGUI操作で簡単に行うことが出来ます。

  • コンソール出力、デバッグメッセージ出力
  • JavaScriptコードの実行
  • 命令の分岐
  • システムのコマンド実行
  • MQTT等のネットワーク通信
  • ファイル出力、書き換え
  • クラウドシステム(AWS, Azureなど)との連携

次の章からは、具体的に基本的なノードを使ってフローの作成・実行を試してみたいと思います。

injectノード、debugノード

まずは、簡単なメッセージ出力をやってみます。
左のパレットから「Inject」ノードと「debug」ノードをワークスペースに配置し、ワイヤでつなぎます。
その後、右上の「デプロイ」ボタンをクリック(①)します。フローを作成後は、デプロイ実行後に内容が確定されます。
最後のフローを実行するために、フロー開始ボタン(②)をクリックします。

file

するとサイドバーのデバッグメッセージが以下の表示となります。
file
青文字のところをクリックすると以下のようにUTC時刻(日本時刻から-9時間の世界標準時刻)が表示されることが分かります。ランダムな数値?にも見えちゃいましたが、実態は日時を表す数値だったということです。
file
ノードの設定についてもう少し説明します。
ワークスペースのInjectノードをダブルクリックしてください。そうするとプロパティ画面が開きますので、msg.topicに"test_inject"と入れてみます。
payloadは日時のままとしますが、任意の数値や文字列なども設定が出来ます。
file
尚、プロパティ画面の下のほうでは繰り返し制御の設定もできます。例えば以下のような設定をすると1秒おきに繰り返し実行されます。
file

完了ボタンでプロパティを閉じると、ノードのタイトルがテストとなっていることが分かります。payloadは日時設定となっていたので"タイムスタンプ"と表示されています。
file
続いて、debugノードをダブルクリックしてみます。
以下のプロパティ画面が表示されます。
file
デフォルトだとデバッグウィンドウにチェックが入っており、これによりサイドバーのデバッグ画面でメッセージ確認が出来ます。
システムコンソールにチェックを入れれば、Node-REDを起動したコンソール上にメッセージ出力します。
ノードステータスを選択すると、ワークスペース上のノードの下に”対象”の内容が表示されるようになります。

functionノード

functionノードの説明をします。
injectionノード、functionノード、debugノードを以下のように配置し、injectノードではtopicをtest_functionと設定しておきます。
file
functionノードをダブルクリックします。
プロパティ画面では実行するJavaScriptのコードを書けるため、ここではconsole.log(msg)と入力してみます。
file
「完了」ボタンを押して、デプロイ、フローを実行すると、以下のようにコンソール上にmsgの内容が表示されます。
msgにはmsgid、payload(ここでは日時)、topic(injectノードでtest_functionと設定)が設定されています。
file

switchノード

switchノードの説明をします。
まずは以下のようにノードを配置します。
file
injectノードはtopicはtest_switchとしておき、payloadは"1"とします。
file
次にswitchノードをダブルクリックし、プロパティ画面を開きます。
"追加"ボタンをクリックし出力を2つにします。
条件は"=="のままとし、それぞれ"1"、"2"に設定します。ここの値はinjectノードのpayloadによって分岐するようになります。
file
出力を2つに設定したため、ワークスペースを見ると以下のように出力が2つ存在しています。
file
それぞれの出力を以下の通り、debug1、debug2に接続します。
file
この設定でデプロイし、フローを実行します。
すると、デバッグ画面で以下の通りdebug1のメッセージが出力されます。
file
続いて、injectノードのpayloadを2に変更してデプロイ、実行をします。するとdebug2のメッセージが出力されていることがわかります。
file
このように、switchノードで条件分岐をさせることが出来ます。

まとめ

この記事ではNoderedで出来ること及び基本操作について説明しました。実現したい機能がGUI操作で簡単に構築できることが分かったと思います。
標準搭載のノードをいくつか紹介しましたが、デフォルトで使えるノードが大量に準備されているので、開発効率化をやってもらえればと思います。

ABOUT ME
kafka
<経歴> 某大手IT企業でハード設計6年経験後、ソフト設計に携わり始めて4年目。 <発信内容> 忙しいITエンジニアに向けて、日経新聞、IT media NEWS、Ledge.ai等、様々なニュースサイトから気になるニュースをピックアップ。自己研鑽に向けた技術情報も発信。 <趣味> 料理、散歩、Youtube視聴 <SNS> Twitter https://twitter.com/ken07949464