前回はエラーをキャッチして別タブに「投げ」てみましたが、今回はノード・ステータスの変更を見つけてやはり別タブに通知してみます。ノード・ステータスは今どんな状態かエディタ画面で確認できて便利ですが、そのままでフローに影響を与えるものではありません。Statusノードを使えば何かのキッカケに使えそう?
※「ブロックを積みながら」投稿順 index はこちら
本稿のテストフローを配置するためにNode-REDエディタにTESTタブというのを用意してあるのです。しかし、ここを見回してもStatus表示しているノードがありません。外部と連携してないからね。そこで今回も「連続稼働中」のM5ATOMLiteのMicroPythonスクリプトからの通信を処理しつづけているATOMLiteノードのStatusをもらって、TESTタブに引き込んでみることにいたしました。
別件で「ハングすることがある」とて、その捕捉のために連続動作させているM5ATOMLiteとそれに接続した外付け計測システムです。しかし、ハングの原因を捉えんとその準備をして連続稼働させたところが既に1週間、まったく問題なく稼働継続中であります。ううむ、落ちるかと見張ると落ちない、毎度アリガチなシチュエーション。。。
ステータスを監視するフロー
特に指定しなければ、あるタブ内のステータス変更全てを掌握できるはずなのですが、今回実験で着目したのは稼働中の以下のフロー部分であります。BuzzerというDashboardノードの下に赤丸とともに off とかかれているのがそのStatusです。Buzzerボタンはオフだと。
対応する、ATOMLite用のDashboardを見ると、以下のようになっています。Buzzerのところ、灰色で左側、オフになっているのが見えますか。そして連続稼働中とて、1日分の温度変化グラフが見えとります(その後にもグラフがずらずら続いてますが以下省略。)
さて、このDashboard画面で、BuzzerをONにしてみます。こんな感じ。
上のようにダッシュボードのBuzzerボタンをONすれば、MQTT経由で稼働中のM5ATOMLiteに連絡が伝わり、取り付けてあるブザーが1秒おきにブー、ブー鳴ります。そしてその時のNode-REDエディタ画面を見れば、ほれ以下のようにBuzzerノードの下のステータスは緑の四角となり ON と。ステータス変わっておりますよ。
ステータスの変更をTESTタブに知らせるフロー
ATOMLiteタブ内に配置したステータスノードの出力を前回同様 link out ノードに接続します。こんな感じ。
そして、TESTタブ内に、上記のlink out ノードと「握った」設定のlink inノードを配置、その出力を結果観察のためのDebugノードにつなぎました。なお、通常のmsg.payloadではなく、ステータスはmsg.statusに載ってくるのでそのつもりで「全部」表示するようにしています。
通知されたステータスの変更
デバッグノードで観察できるステータスの変更は以下のようでした。まず、ブザーONのときは、オブジェクト statusの下に fill, shape, text などのプロパティが載っています。「緑のドットで文字列 on」と。まさにそのまま。
次に、ブザーOFFです。「赤丸で文字列 off」です。
別ノードでのステータス変更を捕捉することができましたな。何やらに使えそうではありますが、今のところ切実な要求はないなあ。そういうことで良いのか?自分。