Raspberry Pi + Node-RED + DS18B20 防水型温度センサー でメダカ水槽の温度を管理する (3)

Raspberry Pi + Node-RED + DS18B20 防水型温度センサー でメダカ水槽の温度を管理する (1)
Raspberry Pi + Node-RED + DS18B20 防水型温度センサー でメダカ水槽の温度を管理する (2)
新しいラズパイ4で動体検知カメラ motion + LINE Notify + Node-RED を試してみる (2)”の続きです。

 

季節が夏に向かうと気になるのが、リビングルームで飼育しているメダカが住んでいる水槽の水温です。我が家はマンション住まいなので、冬場は水槽用のヒーター要らずなのですが、夏場は気を付けていないと水温が高くなってしまいます。

 

前回までのTALKで、“Node-RED”をプラットフォームに、”node-red-dashboard“と”node-red-contrib-homekit-bridged“の2つのノードを使って、水槽の水温管理の仕組みを完成させました。

 

ダッシュボードとiPhoneの”ホーム” (HomeKit)アプリで水槽の水温の可視化を実現できたので、これ以上の機能は要らないなあと思っていたのですが、先日のTALK (“新しいラズパイ4で動体検知カメラ motion + LINE Notify + Node-RED を試してみる (2)”)で、”LINE Notify“の便利さを実感できたので、今回のTALKでは、一旦完成したフローに、水温のしきい値に応じてメッセージを送信する処理を追加してみようと思います。なお、今回は、出来るだけシンプルな改良を心がけたいと思います。

 

< LINE Notifyのアクセストークンを取得する >

LINE Notify“を利用するためには、事前にアクセストークンを取得する必要があります。詳しい手順については、先日のTALK (“新しいラズパイ4で動体検知カメラ motion + LINE Notify + Node-RED を試してみる (2)”)をご覧下さい。

 

< 稼働中のフォローの編集は最小限に留める >

折角、安定稼働している”Node-RED”のフローに、必要以上にいろいろ手を入れるのは避けたいので、”change”ノードを1つだけ追加しました。

追加した”change”ノードは、メダカ水槽の水温を測定する“Aideepen 5個セット DS18B20 防水型温度センサ サーミスタ温度コントローラ 長さ1M プローブ付き” (DS18B20 防水型温度センサー)の値を取得する”node-red-contrib-ds18b20-sensor” (rpi ds18b20)からメッセージを受け取るように接続します。

“change”ノードでは、センサーで計測した水温が格納されている”msg.payload”をグローバルなコンテキスト”global.global_water_temperature”に保存します。

グローバルなコンテキストなので、別に作成するフローでも水温を利用できます。

 

< LINE Notifyを利用したメッセージ送信用のフローを作成する >

メダカ水槽の水温を測定するフローとは別に、”LINE Notify”を扱う新しいフローを作成します。

“inject” –  “function” – “line notify” (“node-red-contrib-line-notify”) – “debug”ノードを順に接続したフローです。

なお、”node-red-contrib-line-notify”については、先日のTALK (“Raspberry Pi + Node-RED + DS18B20 防水型温度センサー でメダカ水槽の温度を管理する (2)”)をご覧下さい。

 

“inject”ノードは、1時間毎に実行するように設定しました。

 

“function”ノードのプロパティ画面では、以下のコードを入力しました。

最初のフローで記錄したグローバルなコンテキスト”global.global_water_temperature”から、10分毎に測定したメダカ水槽の水温を取り出します。

水温が28℃以上になったら、後方の “line notify”ノードにメッセージを渡します。

var water_temperature = global.get("global_water_temperature");

if (water_temperature >= 28)
{
msg.payload = "メダカ水槽の水温が" + water_temperature + "℃になりました";
}
else
{
return null;
}

return msg;

 

続く”line notify”ノードのプロパティ画面では、前方の”function”ノードから受け取ったメッセージをステッカー付きでLINEに送信する設定をしました。

ステッカーの定義情報は、”こちら” (PDF)を参照して下さい。

 

水温がしきい値を超えると、こんな感じでLINEにメッセージが届きます。

※ 下図は動作確認の都度、現在の水温をメッセージ送信しています。

p.s>

こちらが、本番稼働中のメッセージです。

 

 

 

 

ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。

tomohiko

長年に渡りMacintosh向けの自作アプリを作り続けているPOOHです。最近はiPhone,iPad向けアプリ開発にも挑戦中。グルメ、旅行、露天風呂、写真、サイクリング、映画、STAR TREKが大好き。レトロでSFなおもちゃを大量にコレクション。プレーリードッグと同居中。

おすすめ

コメントを残す