「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

micro:bit Lab.【マイクロビット】

micro:bit Lab.では、micro:bit【マイクロビット】に関する情報を紹介しています。

msgオブジェクトの送受信による流れ
12-9

Node-REDではじめてのフロー

2020-07-032020-07-03

Node-REDのエディターで、フローを作成する手順を紹介します。また、後半ではフローがどのように動いているのかを解説します。Raspberry Pi OSにインストールしたNode-REDを起動して、ブラウザーからNode-REDのエディターへアクセスする手順については「12-8.Node-REDの起動とアクセス」を参考にしてください。

12-9-1.エディターでフローを作る

Node-REDのエディターで、フローを作成する手順を紹介します。

Node-REDのエディター

ブラウザーからNode-REDへアクセスすると、図12-9-1-1のような画面が表示されます。これが、Node-REDのエディターです。

図12-9-1-1.Node-REDのエディター
図12-9-1-1.Node-REDのエディター

Node-REDのエディターは、4つ(ヘッダー・パレット・ワークスペース・サイドバー)のウィンドウで構成されています。パレットから選んだノードをワークスペースに配置して、ノード同士をワイヤーで接続することでフローを作成します。サイドバーには、ノードの情報やデバッグメッセージなどが表示されます。上部のヘッダーには、メインメニューやデプロイボタンがあります。

図12-9-1-2.エディターウィンドウ
図12-9-1-2.エディターウィンドウ

はじめてのフロー

では早速、Node-REDのエディターを使ってフローを作ってみましょう。ノードが2つだけの簡単なフローです。使用するノードはパレットの共通カテゴリーにある「inject」ノードと「debug」ノードです。

図12-9-1-3.「inject」ノードと「debug」ノード
図12-9-1-3.「inject」ノードと「debug」ノード

「inject」ノードと「debug」ノードをワークスペースに配置します。この時「inject」ノードは「タイムスタンプ」、「debug」ノードは「msg.payload」という表示に変わります。

図12-9-1-4.ノードの配置
図12-9-1-4.ノードの配置

配置した2つのノードをワイヤーでつなぎます。「inject」ノードの右側にある小さな四角(これをポートと呼びます)から、「debug」ノードの左側にあるポートへドラッグします。ドラッグ中は、オレンジのワイヤーが表示されます。

図12-9-1-5.ノード同士をワイヤーでつなぐ
図12-9-1-5.ノード同士をワイヤーでつなぐ

ポート間をワイヤーで接続するとフローの完成です。ワイヤーはグレーになります。

図12-9-1-6.フローの完成
図12-9-1-6.フローの完成

フローは完成しましたが、この時点ではエディター上にのみ存在しています。Node-REDでは「デプロイ」という操作を行い、サーバー上へ登録します。上部のヘッダーにある「デプロイ」ボタンをクリックします。

図12-9-1-7.デプロイ
図12-9-1-7.デプロイ

上部に「デプロイが成功しました」というメッセージが表示されると、デプロイ済みとなります。このデプロイは、フローに変更を加えると必ず必要となる操作です。忘れないようにしましょう。

図12-9-1-8.デプロイ済みのフロー
図12-9-1-8.デプロイ済みのフロー

ところで、ノードの右上に表示されていた青い丸が、デプロイによって消えたことに気づいたでしょうか?この印は、ノードをワークスペースに配置したり、プロパティの変更などで表示され、まだデプロイされていないことを示します。

図12-9-1-9.デプロイされていないことを示す青い丸
図12-9-1-9.デプロイされていないことを示す青い丸

はじめてのフローを実行する

では、完成したデプロイ済みのフローを実行しましょう。まず、サイドバーを「デバッグメッセージ」の表示ウィンドウに切り替えます。サイドバーのタブが「デバッグ」になります。

図12-9-1-10.「デバッグメッセージ」の表示ウィンドウ
図12-9-1-10.「デバッグメッセージ」の表示ウィンドウ

フローを実行するには「inject」ノードの左側にあるボタンをクリックします。

図12-9-1-11.フローを実行する
図12-9-1-11.フローを実行する

サイドバーの表示ウィンドウに何やら表示されましたね。この表示ウィンドウの「1593758587816」という数字は、みなさんの結果とは異なっているはずです。これは、1970年1月1日0時0分0秒から経過したミリ秒を表すタイムスタンプの値です。このフローは「実行するとデバッグメッセージとしてタイムスタンプを出力する」というものでした。

図12-9-1-12.デバッグメッセージを確認する
図12-9-1-12.デバッグメッセージを確認する

フローはどのように動いているのか

Node-REDのフローはどのように動いているのでしょうか?「inject」ノードのボタンがクリックされた後、フローの処理は「inject」ノードからワイヤーで接続された「debug」ノードへと流れていきます。

図12-9-1-13.フローの流れ
図12-9-1-13.フローの流れ

この時、ノード間では「msgオブジェクト」というJSON形式のデータがやり取りされています。本フローでは「inject」ノードから「debug」ノードへ次のような「msgオブジェクト」が送信されます。「msg.payload」にタイムスタンプがセットされています。

ではノード内でどのような処理が行われているのでしょうか。各ノードのプロパティを見てみましょう。ノードをダブルクリックするとプロパティが表示されます。

「inject」ノードのプロパティは「msg.payload」に「日時」をセットして「繰り返し」は「なし」となっています。このノードは、msgオブジェクト内の「payload」に日時(タイムスタンプ)をセットして、一度だけ次のノードへ送信します。なお、この設定は「inject」ノードをワークスペースに配置した直後の初期設定となります。

図12-9-1-14.「inject」ノードのプロパティ
図12-9-1-14.「inject」ノードのプロパティ

「debug」ノードのプロパティは「対象」が「msg.payload」、「出力先」が「デバッグウィンドウ」となっています。このノードは、msgオブジェクト内の「payload」の内容をデバッグウィンドウへ出力します。なお、この設定は「debug」ノードをワークスペースに配置した直後の初期設定となります。

図12-9-1-15.「debug」ノードのプロパティ
図12-9-1-15.「debug」ノードのプロパティ

このようにワイヤーでつながれたノード間を、msgオブジェクトというJSON形式のデータが送受信され、処理が行われていることがわかりました。ノードのプロパティを変更して、いろいろ試してみましょう。変更したらデプロイを忘れずに!

おすすめ品

はじめてのNode‐RED 改訂版

「Node‐RED」は、IBMが2013年に開発した、オープンソースの「IoTアプリ/Webアプリ」向けの開発環境。「PC上」のデータも、「センサ」で取得したデータも、「Web上」のデータも、「クラウド上」のデータも、データを加工してやり取りするのに必要なのは、「ノード」と呼ばれる「ブロック」をつなぐだけ。本書では、この「Node‐RED」の基本的な操作からはじめ、実例による活用方法まで、具体的に学べるように解説しています。

実践Node-RED活用マニュアル

ビジュアルプログラミング用開発ツール「Node‐RED」6年間の開発と88回の更新を経て、ついに正式版「ver.1.0」リリース(2019年9月30日)。「Node‐REDユーザーグループ」有志が多彩で具体的な活用事例を解説!

この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動