Intern

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

Node-REDでSwitchBot温湿度計のデータを可視化する仕組みについてスイッチボット温湿度計から温湿度を取得|インターン技術ブログを参考に、今回は「温度・湿度がしきい値を超えたときに通知を出す」部分を実装してみました。


通知機能の概要

Node-REDの ui_notification ノードを使えば、ダッシュボードの右上にポップアップ形式で通知を表示できます。
これを利用して温度や湿度が一定以上の値になった際に即座にユーザーへ警告を出す仕組みを作ります。


switchノードの詳しい設定

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

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

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


functionノードの詳しい設定

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>Code language: JavaScript (javascript)

このようにすることで、通知の本文が柔軟に設定できるうえ、見た目を変える場合もすぐに修正可能です。
さらに必要に応じて msg.topic を追加してタイトルを分けるなどの応用もできます。


ui_notificationノードの設定

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

  • Layout: Top Right
  • Timeout: 3秒
  • Border: 空欄
  • Send to all browser sessions: ON

などにしておくと扱いやすいです。
メッセージを受け取ると、右上に3秒間だけ警告が表示され、その後自動で消えます。


完成

  • 温度28℃以上 → 「⚠️ 温度が高すぎます: 29℃」と通知
  • 湿度70%以上 → 「⚠️ 湿度が高すぎます: 75%」と通知

通常は温湿度のモニタリングを行い、基準を超えたときだけユーザーに知らせます


まとめ

SwitchBotのデータをNode-REDで取り込み、さらに ui_notificationswitch ノードの組み合わせでしきい値通知を実装することで、ダッシュボード上で即座に異常を把握できる仕組みを作りました。