LoginSignup
4
3

More than 5 years have passed since last update.

Node-REDのフローを見た目分かりやすく止めておくTIPS

Last updated at Posted at 2016-12-17

Node-RED Advent Calendar 2016の18日目の記事です。

Blumix上のNode-REDでもRaspberry PiのNode-REDでも言えることなのですが、Node-REDを起動しっぱなしにしているときにフローを止めておきたいときってありますよね。

たとえばこんなフロー。

image

こういう連携を組むことは多いのですが、MilkcocoaノードとWio Nodeを連携しているものですが、

  • milkcocoa受信が例えば1秒間隔で頻繁すぎると、Wio Nodeの反応があやしくなるとき
  • Wio Nodeセンサー取得→milkcocoa出力に流すときに10秒ごと動かすのが頻繁すぎるとき

といったときに 一時的にフローを止めておきたい といった欲求が出てきます。

今までやっていた手法とデメリット

今までやっていた手法はこんな感じ。

image

ごくごくシンプルにフローを切る形で止めます。

しかしこの流れ。特に登壇やデモ時に事故りやすい。よくあるのは、お披露目の直前にフローをつなぎ忘れたり、見た目が切断済みで再接続時につなぐところを間違えたりします。

image

いちばんミスった最悪の例。つなぐところが違う...(しかも登壇時テンパると元のつなぎ方思い出せない)

見た目分かりやすく止めておくフローブロックFunctionをつくる

まだ発展途上ではあるのですが、もう少し見た目分かりやすく止めておくことはできないかと思って、取り入れた手法があります。

Node-RED日本ユーザ会 : Functions Nodeの書き方

こちらを見てみると、フローは常にmsgオブジェクトを各ブロックでリレーしていますが、ここに書いてあるとおり null を渡すと、以降のフローは実行されません。止めてくれるというわけですね。

これを利用します。

まず、Functionフローを作ります。

image

中身はこんな感じ。

image

このように書かれています。

// フローブロック
msg = null;

return msg;

シンプルに null を渡してます。

これでフローブロックが出来上がりました。

ほんのちょっとですが、このソースも置いておきます。

[{"id":"9277a3cb.9ac2c","type":"function","z":"2b17c715.853ec8","name":"[x]","func":"// フローブロック\nmsg = null;\n\nreturn msg;","outputs":1,"noerr":0,"x":839,"y":1470,"wires":[["8259a8a.fa88e58"]]}]

実際使ってみる

実際にフローを止めてみます。

image

Node-REDのつながっている部分は、間に入れたいものを乗せて、、、

image

パッと離すと、割り込んでくれます。便利!

これで実際フローをデプロイすると、ちゃんと以降のフローが止まってくれます。

今回の例にあるフローを各所で止めてみます。

image

このように各所で止められているので、MilkcocoaやNode-REDにアクセスする部分が沈黙します。

戻すとき

デモ前の持ち運び時はこのようにブロックしておいて、直前に目視でフローブロックFunctionと除去してやれば、前述の切断状態よりは間違いにくくフローを戻すことが可能です。

image

もっとスマートな方法ないかなと思いつつ、いまはこの手法に落ち着いています。

フローを一時的に止めておきたいとき、よろしければご参考下さい。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3