ブロックを積みながら(110) Node-RED、プロット区間の最大値、最小値をゲージ表示

Joseph Halfmoon

前回ようやくSQLデータベースからの複数データ系列の重ね合わせプロットができました。今回はちょいと処理を追加してみます。特定のデータ系列のプロット範囲での最大、最小の表示です。ただ数字だけを表示するのも寂しいので、ダッシュボード上にはゲージ表示としてみました。

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

※動作確認にはRaspberry Pi 3 model B+のRaspberry Pi OS(32bit)上にインストールした以下を使用しています。

    • Node-RED v2.0.5
    • node-red-dashboard 3.2.0
今回実験のフロー

前回使用したフローの先っぽ(以下の図の赤線の下側)に3ノード追加しました。ダッシュボードのchartノードと並列に、データ処理のためのfunctionノードを追加し、その後ろにgaugeノード2つを並べました。

Gaugeflow

MIN、MAXなどの処理は第59回でやったsmoothノードでも可能ですが、smoothノードの場合、処理を行う「スパン」が固定長のようです。最近100点のデータのMIN/MAXとか、平均とかは可能ですが、今回のように成り行きのグラフ範囲全体でどうよ?というケースには使いずらいと思いました。

困ったときの functionノードということで(functionノードを使うと「ブロックを積んだ」ことにならんな、と密にやましく思います)使ってしまいました。

まずはfunctionノードの設定タブにて出口を2つにしておきます。msgを流し出す際に、出口の数だけの要素数の配列を送出すれば各出口に「分配」されます。functionSettingS

今回は、MIN、MAXの検出なので、その比較初期値を「初期化処理」タブにてflowストレージに格納しておきます。functionSettingI

そして最後、コードタブで最大、最小を検出して配列メッセージにして送出するコードを記述っと。なお、上流から空の配列(length==0)が流れてきたら、グラフのクリアと連動して最大、最小値も初期値に戻してます。functionSettingC

最大、最小を検出した結果を表示するgaugeの設定が以下に。氷点下と25℃以上で色を変えるようにしてみました(冬とはいえ室内温度データなので色が変わるようなデータは入ってなかったのですがね。)

gauseSetting

実行結果

前回同様、測定デバイスをATOMLite、測定項目をTEMP_ALT(外付け温度センサ)、期間を2022年1月1日から31日に指定してQueryかけた結果が以下に。期間1か月内で動かしていたのはたった3日のそれも一部の時間帯なので、結果は以下のようでした。MINMAX_gauge

最大、最小のゲージ表示できてますな。まあ、最大、最小なら上のチャートみても読み取れるケド。チャートみても分からないような指標にすればよかったか?

ブロックを積みながら(110) Node-RED、複数データ系列の重ね合わせプロット へ戻る

ブロックを積みながら(111) Node-RED、Web上のドキュメントをパースその1 へ進む