Raspberry Pi + Node-RED + ダッシュボード でお部屋の温度と湿度を可視化
“Raspberry Pi + Node-RED + Echo Show 5 + Google Home で「こっちに来て!」メッセージ”
“Raspberry Pi + Node-RED + Google Home で明日の天気を定刻にアナウンス”
“最近、”はじめてのNode‐RED (I・O BOOKS) “を読んでみました”の続きです。
今回のTALKでは、“Node-RED”をインストールした“Raspberry Pi”に接続した
DHT11 温度センサー モジュール “HiLetgo 3個セット DHT11温度センサー モジュール湿度センサーモジュール デュポンラインと付属 Arduinoと互換”
と、“Node-RED”のダッシュボードを使ってお部屋の温湿度を可視化します。
温度センサーの取り扱いについては、”ワンコインでお部屋の温度をHomeKitをベースに外出先でもモニターできるようにしてみました“をご覧下さい。
< Raspberry PiにNode-REDをインストールする >
先日のTALk (““Raspberry Pi + Node-RED + Google Home で明日の天気を定刻にアナウンス””)をご覧下さい。
< 温度センサー 専用ノードをインストール する>
今回は、”node-red-contrib-dht-sensor“という温度センサー専用のノードを利用します。
最初に、最新版のBCM2835ライブラリをインストールします。
最新バージョンは、”C library for Broadcom BCM 2835 as used in Raspberry Pi” ページの赤丸部分を見れば分かります。
今回はバージョン 1.62が最新なので”bcm2835-1.62″ですが、実際に実行する際は末尾の”x.xx”を最新バージョンに置き換えて下さい。
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.62.tar.gz
tar xvfz bcm2835-1.62.tar.gz
cd bcm2835-1.62
./configure
make
sudo make check
sudo make install
今回利用する”node-red-contrib-dht-sensor”は、管理者権限でインストール作業を行う必要があるので、“パレットの管理”->”ノードを追加”からではなく、”ターミナル”のコマンド入力でインストールを行います。
sudo npm install --unsafe-perm -g node-dht-sensor
sudo npm install --unsafe-perm -g node-red-contrib-dht-sensor
< 温度センサーの値を測定してみる >
”Node-RED”を起動して下さい。
起動方法などは、先日のTALk (““Raspberry Pi + Node-RED + Google Home で明日の天気を定刻にアナウンス””)をご覧下さい。
追加した”rpi dht22″ノード (”node-red-contrib-dht-sensor”)をパレットからワークスペースにドラッグ&ドロップし、ノードをダブルクリックして下さい。
“rpi dht22″ノードのプロパティ画面を開き、
・”Sensor model”欄を”DHT11″ (今回使用するDHT11 温度センサー モジュール)
・”Pin numbering”欄を”Physical pins (ver. 2)” (今回使用するラズパイがA+ or B+モデルなので)
・”Pin number”欄を”11″ (DHT11 温度センサー モジュールの”out”端子をラズパイの”GPIO17″、Pin#が”11″に接続したので)
に設定後、”完了”ボタンをクリック。
続いて、パレットから”inject”、”debug”の各ノードをワークスペースに配置し、”inject”-“rpi dht22”-“debug”ノードを左から順に接続します。
“inject”は何も変更せず、”debug”ノードのプロパティ画面を開き、” 対象”欄を”msgオブジェクト全体”に設定後、”完了”ボタンをクリック。
“Node-RED”画面の右上にある”デプロイ”ボタンをクリックした後、”inject”ノードの左端にあるタブをクリックすると、デバッグ画面に測定結果が表示されます。
今回使用したノードの場合、”msg.payload”に温度、”humidity”に湿度が格納されるJSONデータを返すので、”debug”ノードで”msgオブジェクト全体”を設定しました。
< Node-REDのダッシュボードを準備する >
“Node-RED”をベースにラズパイに接続した温度センサーの計測値を取得できるようになったので、計測した温度と湿度をグラフィカルな画面で可視化してみましょう。
“Node-RED”では、”node-red-dashboard“というノードでダッシュボードと呼ばれるGUIな画面がデザインできます。
“node-red-dashboard”ノードをインストールします。
“Node-RED”のフロー作成画面が表示されたら、右上にある三本線のアイコンをクリックし、”パレットの管理”を選択します。
“ノードを追加”タブ画面で”dashboard”と検索し、”node-red-dashboard”を選択し”ノードを追加”をクリックします。
< ダッシュボードをデザインする >
完成したフロー図を参考に、”node-red-dashboard”のアウトラインをざっくり説明します。
まず始めに、”node-red-dashboard”によるGUI画面の構造を説明します。
ワークスペース画面の右上にある棒グラフ・アイコンをクリックすると、”タブ & リンク”画面が表示されます。
“node-red-dashboard”では、” タブ” – “グループ” – “widget”という階層構造でGUI画面を構築していきます。今回は、” タブ”が”温度・湿度”、”グループ”が”温度センサー”、”温度センサー”のなかに”温度”と”湿度”という名前の”widget”が配置されています。
棒グラフ・アイコンの下にある矢印・アイコンをクリックすると、”デプロイ”したフローに定義したダッシュボード素材が別のWeb画面上に描かれます。
ワークスペース画面では、パレットから”change”、”gauge” (node-red-dashboard)の各ノードをワークスペースに配置し、下図のように各ノードを接続します。
“rpi dht22″ノード (”node-red-contrib-dht-sensor”)で取得した温度センサーの値は、下図のようにデバッグ画面に表示されます。
“msg”オブジェクトの”payload”に温度、”humidity”に湿度がセットされています。今回は、”rpi dht22″と接続した”change”ノードを使って欲しい値だけを抽出します。
温度に関しては、ちょっと変に見えますが、”change”ノードで、温度センサーの値 “msg.payload”から後続のノードに渡す”msg.payload”に代入します。
もう一方の湿度は、”change”ノードで、温度センサーの値 “msg.humidity”から後続のノードに渡す”msg.payload”に代入します。
温度を代入した”change”と接続した”gauge” (node-red-dashboard)で温度を温度計っぽく表現します。
今回は、0℃から60℃までを表現する温度計 (Gauge)を下図のように設定します。
湿度を代入した”change”と接続した”gauge” (node-red-dashboard)で湿度を湿度計っぽく表現します。
今回は、0%から100%までを表現する湿度計 (Level)を下図のように設定します。
完成したフローを”デプロイ”した後、”inject”ノードの左端にあるタブをクリックすると、デバッグ画面に測定結果が表示されます。
続いて、棒グラフ・アイコンをクリックした後、その下にある矢印・アイコンをクリックすると、新しいWeb画面に温湿度計が表示されます。
最後に、自動的に温湿度計の値を更新するようにしておきましょう。
“inject”ノードのプロパティを表示して、
・”Node-RED起動の〜”項目を有効にします。
・”繰り返し”欄を”指定した時間間隔”に設定し、好みのインターバル時間を設定します。
“デプロイ”後に表示されるWeb画面では、指定したインターバルで温度と湿度の値が自動的に更新されるはずです。
また、http://Raspberry PiのローカルIPアドレス:1880/ui
と、Webブラウザでアクセスすれば、ラズパイが起動している限り、いつでも温湿度計を表示することができます。
|
|
|
ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
“Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。