Intern

Node-REDでSwitchBot温湿度計のしきい値通知を実装してみた

Node-REDでSwitchBot温湿度計のデータを可視化する仕組みについては、スイッチボット温湿度計から温湿度を取得|インターン技術ブログを参考にしました。今回はその中でも「温度や湿度が基準を超えた場合にダッシュボードで通知を表示する」という機能の実装をしてみました。


通知機能の仕組み

Node-REDでは ui_notification ノードを使うことで、ダッシュボード画面の右上にポップアップ形式でメッセージを表示することが可能です。これにより、温度・湿度が一定のしきい値を超えた場合にユーザーへ即座に警告を出します。


フローの構成

具体的には以下のような構成を取ります。


実装方法

しきい値の判定には switchノード を活用します。
このノードでは受け取った msg.payload の温度・湿度に対して条件を設定します。

  • 温度アラート用のswitchノード
    • プロパティ: msg.payload.temperature
    • 条件: 「>= 35」
    • 出力: 条件に一致した場合にだけ次のノードへ送信
  • 湿度アラート用のswitchノード
    • プロパティ: msg.payload.humidity
    • 条件: 「>= 70」
    • 出力: 条件に一致した場合にだけ次のノードへ送信

こうすることで、例えば温度が35℃未満の場合には通知ノードに流れず、通常の表示だけが行われるようになります。

switchノードを通過したメッセージは、そのまま通知文を作る functionノード へ送ります。
ここでは次のようにシンプルなスクリプトを記述しておけば十分です。

温度通知用functionノード

<code>msg.payload = `⚠️ 温度が高すぎます: ${msg.payload.temperature}℃`; return msg;</code>Code language: JavaScript (javascript)

湿度通知用functionノード

<code>msg.payload = `⚠️ 湿度が高すぎます: ${msg.payload.humidity}%`; return msg;</code>

最終的に通知を表示する ui_notification ノードは

Layout: Top Right

Timeout: 3秒
メッセージを受け取ると、右上に3秒間だけ警告が表示され、その後自動で消えますCode language: HTML, XML (xml)

完成ダッシュボード

  • 28℃以上のとき → 「⚠️ 温度が高すぎます: 28℃」と右上に通知
  • 70%以上のとき → 「⚠️ 湿度が高すぎます: 75%」と右上に通知
  • 通知は3秒間表示後に自動的に消える


まとめ

Node-REDの ui_notification を活用することで、ダッシュボードに直感的なアラートを加えることができます。しかし、プッシュアップ通知が連続で出てきてしまうため、そこの修正が必要です。