Node-REDでping


Node-REDでpingしたい

とある理由でNode-REDでpingしたくなったが、ちょっとハマったので投稿。

環境: Raspberry Pi 4 Model B (OS: Raspbian Buster)

結論

node-red-contrib-advanced-pingnode-red-configurable-ping が使いやすい。

Node-REDのpingノードいろいろ

pingで検索したら複数ノードが見つかったので、いろいろ試した。

node-red-node-ping

名前が一番シンプルだったのでこれが定番かなと思った。
しかしノードを並べてみると…

入力がないため、固定のアドレスにしかpingできない。また、任意のタイミングでpingできない。ちょっと使いずらい。

node-red-contrib-net-ping

これなら入力があるため、任意のタイミングでpingできそう。また、msg.hostにアドレスを入れると宛先を可変にできる。

しかし実行してみたところ、

"Error: Operation not permitted"

と表示されて実行できなかった。

公式サイトには、Node-REDをroot権限で実行してくださいとあった。ちょっと危ない。

node-red-contrib-tcp-ping

これならTCPを使っているので、root権限は必要なさそうな予感。

しかし、pingはICMPなのでTCPを使うというのは違った模様。TCPの宛先ポートを指定するが、必ず開いているポートなど保障できない。公式サイトに何も説明がないのでこれ以上わからなかった。

node-red-contrib-advanced-ping

最終的にこれに行き着いた。msg.hostに宛先を指定すれば可変にできるし、任意のタイミングでpingができる。

node-red-configurable-ping

node-red-contrib-advanced-ping からの派生で、タイムアウト時間やリトライ回数を可変にできる。

これらを変更したい場合はこっちを選択。