はじめに
この記事ではNode-REDの環境構築後の基本機能・操作について説明します。
- まずは基本的な操作を覚えて、Node-REDを弄ってみたい。
- Node-REDを使うことでノーコードでの開発が出来ることは知ってるけど、具体的に何が出来るのかよくわからない
筆者はWSL上のUbuntu20.04で操作を行いますが、WSLの構築、Node-REDのインストール方法については以下の記事を参考にしてください。
https://sidefire-engineer.com/node-red入門/
インストールが完了し、WEBブラウザ上でNode-REDの操作画面が表示された状態になりましたら次章に進んで下さい。
用語説明
ブラウザでNode-REDを表示した初期画面は以下となっています。
この画面の左側のメニューのことを「パレット」と呼びます。
真ん中の方眼紙のようなスペースは「ワークスペース」、右側の各種情報が表示されている部分が「サイドバー」です。
Node-REDでは、パレットにある「ノード」をワークスペースに配置し、ノード通しをワイヤでつないで任意のフローを実行させることが可能です。
Node-REDで出来ること
Node-REDを使うことで、以下のような処理、設定をGUI操作で簡単に行うことが出来ます。
- コンソール出力、デバッグメッセージ出力
- JavaScriptコードの実行
- 命令の分岐
- システムのコマンド実行
- MQTT等のネットワーク通信
- ファイル出力、書き換え
- クラウドシステム(AWS, Azureなど)との連携
次の章からは、具体的に基本的なノードを使ってフローの作成・実行を試してみたいと思います。
injectノード、debugノード
まずは、簡単なメッセージ出力をやってみます。
左のパレットから「Inject」ノードと「debug」ノードをワークスペースに配置し、ワイヤでつなぎます。
その後、右上の「デプロイ」ボタンをクリック(①)します。フローを作成後は、デプロイ実行後に内容が確定されます。
最後のフローを実行するために、フロー開始ボタン(②)をクリックします。
するとサイドバーのデバッグメッセージが以下の表示となります。
青文字のところをクリックすると以下のようにUTC時刻(日本時刻から-9時間の世界標準時刻)が表示されることが分かります。ランダムな数値?にも見えちゃいましたが、実態は日時を表す数値だったということです。
ノードの設定についてもう少し説明します。
ワークスペースのInjectノードをダブルクリックしてください。そうするとプロパティ画面が開きますので、msg.topicに"test_inject"と入れてみます。
payloadは日時のままとしますが、任意の数値や文字列なども設定が出来ます。
尚、プロパティ画面の下のほうでは繰り返し制御の設定もできます。例えば以下のような設定をすると1秒おきに繰り返し実行されます。
完了ボタンでプロパティを閉じると、ノードのタイトルがテストとなっていることが分かります。payloadは日時設定となっていたので"タイムスタンプ"と表示されています。
続いて、debugノードをダブルクリックしてみます。
以下のプロパティ画面が表示されます。
デフォルトだとデバッグウィンドウにチェックが入っており、これによりサイドバーのデバッグ画面でメッセージ確認が出来ます。
システムコンソールにチェックを入れれば、Node-REDを起動したコンソール上にメッセージ出力します。
ノードステータスを選択すると、ワークスペース上のノードの下に”対象”の内容が表示されるようになります。
functionノード
functionノードの説明をします。
injectionノード、functionノード、debugノードを以下のように配置し、injectノードではtopicをtest_functionと設定しておきます。
functionノードをダブルクリックします。
プロパティ画面では実行するJavaScriptのコードを書けるため、ここではconsole.log(msg)と入力してみます。
「完了」ボタンを押して、デプロイ、フローを実行すると、以下のようにコンソール上にmsgの内容が表示されます。
msgにはmsgid、payload(ここでは日時)、topic(injectノードでtest_functionと設定)が設定されています。
switchノード
switchノードの説明をします。
まずは以下のようにノードを配置します。
injectノードはtopicはtest_switchとしておき、payloadは"1"とします。
次にswitchノードをダブルクリックし、プロパティ画面を開きます。
"追加"ボタンをクリックし出力を2つにします。
条件は"=="のままとし、それぞれ"1"、"2"に設定します。ここの値はinjectノードのpayloadによって分岐するようになります。
出力を2つに設定したため、ワークスペースを見ると以下のように出力が2つ存在しています。
それぞれの出力を以下の通り、debug1、debug2に接続します。
この設定でデプロイし、フローを実行します。
すると、デバッグ画面で以下の通りdebug1のメッセージが出力されます。
続いて、injectノードのpayloadを2に変更してデプロイ、実行をします。するとdebug2のメッセージが出力されていることがわかります。
このように、switchノードで条件分岐をさせることが出来ます。
まとめ
この記事ではNoderedで出来ること及び基本操作について説明しました。実現したい機能がGUI操作で簡単に構築できることが分かったと思います。
標準搭載のノードをいくつか紹介しましたが、デフォルトで使えるノードが大量に準備されているので、開発効率化をやってもらえればと思います。