今回はNode-REDを使ってネットワーク処関係の処理を行ってみます。

その前に作成したプログラム(フロー)を保存しておきましょう。

フローの保存

 作成したフローを保存するには保存したいフローのタブ上で右ボタンをクリックします。メニューが表示されるので「書き出し」の項目を選択します。

ここではダウンロードしてフローを保存することにします。「ダウンロード」ボタンをクリックします。

ダウンロードフォルダにJSON形式でフローのプログラムが保存されているのがわかります。

無事に保存できたので新たなフローを作成しましょう。フローのタブがある右側に+ボタンがあります。この+ボタンをクリックすると新たなフロー(タブ)が作成されます。

pingノードのインストール

 ネットワークのカテゴリにpingノードのブロックが見当たらない場合は追加する必要があります。追加するには右上のメニュー(三)をクリックして表示されるメニュー項目からパレットの管理の項目を選択します。

 ノードを追加のタブをクリックします。

 検索ボックスにpingと入力します。すると該当するノードの一覧が表示されます。追加したいノードの項目内にある「ノードを追加」ボタンをクリックします。

 確認のダイアログが表示されるので「追加」ボタンをクリックします。

 ノードが追加されます。追加されたのを確認したら「閉じる」ボタンをクリックします。ネットワークのカテゴリにpingノードが追加されていればOKです。

pingの結果を出力

 それではpingノードを使ってみましょう。図のようにpingノードとdebugノードを繋ぎます。

 このままではping先を指定していないため動きません。pingノードをダブルクリックして設定画面を開きます。ターゲットを8.8.8.8にしていますが、ここはドメイン名でもローカルルーターでも構いません。Ping(秒)は5にします。設定が終わったら完了ボタンを押します。

デプロイすると自動的にping処理が開始されます。

 このままでは永遠とpingが繰り返されてしまいます。次にinjectノードのボタンをクリックしたらpingの結果を表示するように変更します。
pingノードをダブルクリックして設定画面を開きます。モードを「トリガー」に変更します。変更したら完了ボタンをクリックします。

この状態では先ほどのping処理が動いたままなので一旦ノード間を繋いでいる線を削除します。削除したらデプロイボタンをクリックします。

次にinjectノードを配置します。pingノードなどを図のように繋ぎます。

タイムスタンプと表示されたノードの左側の□をクリックします。するとデバッグメッセージサイドバーにpingの結果が表示されます。

Webサーバーを作成

 次にNode-REDでは定番(?)のWebサーバー(ローカル上でのみ動作する前提です)を作成してみましょう。まず、新規にフローを作成します。
ネットワークのカテゴリからhttp inのノードをドラッグドロップして配置します。

配置したらhttp inノードをダブルクリックして設定画面を表示します。URLの部分に/p1と入力します。このp1は「http://192.168.11.52:1880/p1/」のようなURLを構成する文字列になります。

 次にWebブラウザでアクセスした場合の文字列を準備します。機能のカテゴリからtemplateノードを配置します。

templateノードをダブルクリックして設定画面を開きます。テンプレートのところに表示する文字列を入力します。入力が終わったら完了ボタンをクリックします。

次に結果を返すためのhttp responseノードを配置します。このノードは特に何も設定しません。

それぞれのノードを図のように繋ぎます。繋いだらデプロイします。無事にデプロイできたら、すでにWebサーバーとして動作しています。

Webブラウザで以下のURLにアクセスするとtemplateノードで入力した文字が表示されます。

http://192.168.11.52:1880/p1/

pingの結果をブラウザで表示

 Webサーバーが動作したので、次はpingの結果をブラウザで表示してみましょう。pingノードを配置し図のように繋ぎます。

 pingノードをダブルクリックして図のように設定します。

 次にpingの結果を表示するためtemplateノードを以下のように変更します。

変更が終わったらデプロイします。Webブラウザでアクセスするとpingの結果が表示されます。Webブラウザでリロードすると値が変わるのがわかります。

 次にpingを使ったデバイス監視サーバーもどきを作ってみましょう。まず、先ほど作ったノードを丸ごとコピーしてペーストします。http inノードのURLの/p1を/p2に変更します。また、繋いでいるpingノードのアドレスを192.168.11.1など監視したいデバイスのIPアドレスに変更します。一度デプロイして以下のURLで正しく結果が表示されるか確認します。

http://192.168.11.52:1880/p1/

 次に先ほど作成したノードをコピーしてペーストします。pingノードを削除し図のように繋ぎます。

templateノードの設定画面を開きます。テンプレートの欄に以下のHTMLを入力します。入力したら完了ボタンをクリックします。あとはデプロイすれば完成です。

<iframe src="/p1"></iframe><br>
<iframe src="/p2"></iframe><br>

Webブラウザで以下のURLにアクセスすると2ヶ所の機器のpingの結果が表示されます。

http://192.168.11.52:1880/p/

Webブラウザから制御

 http関連ノードとexecノードを組み合わせるとRaspberry Piを制御することもできます。ただ、セキュリティには注意する必要があります。
 例えば図のようにするとWebブラウザからアクセスして特定のディレクトリ内容を確認することができます。

 ここらへん、いろいろ突っ込まれそうな感じもするので、このくらいにしておきます。では、また次回。

著者 仲村次郎
いろいろな事に手を出してみたものの結局身につかず、とりあえず目的の事ができればいいんじゃないかみたいな感じで生きております。