ブロックを積みながら(55) Node-RED、Pingでネットワークへの接続を確認

Joseph Halfmoon

Node-RED側から、「先っぽ」のIoTデバイスがちゃんと繋がっているの?ということを確かめたい、と思いました。だって接続切れてるんだもん。切れた接続の復旧はまた別の話ですが、とりあえず接続の確認ならば、pingうてばいいじゃん、ということでNode-REDの ping をば使ってみました。

※「ブロックを積みながら」投稿順 index はこちら

ping ノード

pingノードは、小さなノードでヒッソリとした佇まいですが、シンボルのエクスクラメーション・マークにはそそられるものがあります。

Pingパレットから取り出した状態では、入力が無く、ただ出力が一つあるだけの非常にシンプルなノードです。

ま、ping かけるだけ、この状態で設定画面を開けば以下のようです。

PingSettings
ターゲットとして、薄く何やら書いてありますが、この部分にIPアドレスなり、IPアドレスに変換可能なホスト名なりを書いてやればそこに ping が打てるというのが通常の使い方みたいです。プロトコルは「自動の」という何やらよくわからん事が書かれていますが、プルダウンメニューを開けば IPv4かIPv6かの選択でした。

デフォルトのモードは時間で、デフォルトのインターバル20秒おきにPingを打つと。そしてping成功した後、出力に送られるmsgのpayloadには、ターゲットまでの「いってこい」「Round Trip」の時間(浮動小数)が載ってます。もしpingに返答なければ false だと。

トリガーモードを使ってみる

デフォルトの時間モードであるとあまりに芸がない、という単純な理由でトリガーモードを使ってみました(私の目的はデフォルトのままでも達せられるような気がしますが。)モードをトリガーに変更すると、冒頭のアイキャッチ画像にありますとおり、ping ノードの左側に入力が現れます。ここに何かトリガーを引くmsgを入力すれば、ping が打たれるという仕組み。

固定IPのターゲットに IPv4で ping している設定が以下です。

Ping000a

その時の結果を Debug ウインドウで観察したのが以下です。 payloadには0.666秒と時間が入り、topicにはターゲットのIPアドレスが載ってます。

Ping000_result
このトリガーモードを使えば、固定周期で ping かけるだけでなく、任意のタイミングでpingがかけられます。

さらにフレキシブルなのは、上記の設定画面に書いてあるとおり、ターゲットをブランクにしておくのですな。こんな感じ。

Ping001
そして入力となる msg.payload にターゲットのアドレスを載せておけば所望の宛て先に ping かけられると。以下のInjectノードは文字列での設定ですが、IPアドレスをオブジェクトに載せて送り出しても反応してくれるみたいです。

Inject001
この場合の ping の結果を確認したものがこちら。

Ping001_result
まずは ping からですか。ネットワークを打たれ強くするには。ホントか?

ブロックを積みながら(54) Node-RED、ATOMLiteフローにSqlite追加 へ戻る

ブロックを積みながら(56) Node-RED、catchしてlinkしてみた へ進む