ワンコインでお部屋の温度をHomeKitをベースに外出先でもモニターできるようにしてみました
“ダイソンのPure Hot + CoolをGoogle AssistantとHomeKitでリモコン操作できるようにしてみました”
“980円でお部屋の温度をHomeKitをベースに外出先でもモニターできるようにしてみました”
“Homekitアクセサリを外出先からリモートコントロールする方法をまとめておきますね”
“人感センサーを活用してPhilips Hue 電球専用のオンオフを自動化、省電力化を実現“の続きです。
前回、”aitendo“で電子パーツを買った際、”温度湿度センサーモジュール [DHT11-3P]“も合わせて購入したので、早速、試してみることにしました。
このモジュールが気に入った点は、ジャンパーワイヤー用のピンが既に実装されていることと、ジャンパーワイヤーも同封されていることです。
しかも、ピンの用途も、-、out、+とプリントされているので、”Raspbbery Pi“との接続にも支障がありません。
今回は、”PIRセンサーモジュール [DSUN-PIR ]“と合わせて作業を行ったので、ラズパイ側のGPIOピンヘッドがゴチャゴチャしていて、写真では分かりづらいかと思いますが、POOHの場合は、+をpin #01 (DC Power 3.3V)、outをpin #11 (GPIO17)、-をpin #09 (Ground)に接続しました。
(2) DHT11 Python libraryを利用して温度と湿度を計測しましょう
今回は、先日の知恵”DHT11 Python library“を借りて作業を進めていきます。
今回使用するライブラリに必要なモジュールが揃っているか、念のため、以下のコマンドで確認しておきます。
sudo apt-get install git
sudo pip install rpi.gpio
続いて、主役のライブラリをダウンロードします。
git clone https://github.com/szazo/DHT11_Python.git
ダウンロードが完了すると、下図のような内容がラズパイに保存されます。
上記のうち、”dht11.py”というファイルが、ライブラリの本体で、温度湿度センサーモジュールから、温度と湿度を取得するクラスが書かれています。
このクラスの使い方は、”dht11_example.py”というファイルを開けば、すぐに見当がつくと思います。
上記のサンプルコードでは、GPIO14に接続している温度湿度センサーモジュールからデータを取得する、という内容になっているので、POOHの場合は、
instance = dht11.DHT11(pin=17)
と修正しました。
ライブラリ自体がクラスで設計されているため、計測結果も、”instance.temperature” (温度)、”instance.humidity” (湿度)といったオブジェクト形式で表記できるので、いまっぽい感じでいいですよねえ。
実際に、修正後のスクリプトを実行してみましょう。
sudo python /home/pi/DHT11_Python/dht11_example.py
はい、ちゃんと、温度と湿度が、1秒間隔で表示されましたよねえ。
(3) 温度と湿度のデータをテキストファイルに書き出してみましょう
今回は、計測した温度と湿度の各データを、Homekitに連携したいので、取得したデータをテキストファイルに書き出すように、サンプルのスクリプトを書き換えます。
ポイントは、”result.temperature” (温度)を”dht11_room_temp.txt”というテキストファイル、”result.humidity” (湿度)を”dht11_room_humidity.txt”というテキストファイルに書き出していることです。それ以外は、オリジナルのサンプルとほぼ同じですが、永久ループで実行する必要がないので、”while”構造は外しました。
それから、シンプルに事を進めたいので、作成したスクリプトは、ライブラリ本体である”dht11.py”が置かれている”DHT11_Pyhton”フォルダ配下に保存しておきます。
sudo nano /home/pi/DHT11_Python/get_dht11_temp_humidity.py
#!/usr/bin/env python
# coding: utf-8
import os
import RPi.GPIO as GPIO
import dht11
import time
import datetime
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
# read data using pin 14
instance = dht11.DHT11(pin=17)
result = instance.read()
if result.is_valid():
file = open('/home/pi/dht11_room_temp.txt', 'w')
file.writelines(str(result.temperature))
file.close()
file = open('/home/pi/dht11_room_humidity.txt', 'w')
file.writelines(str(result.humidity))
file.close()
# print("Last valid input: " + str(datetime.datetime.now()))
# print("Temperature: %d C" % result.temperature)
# print("Humidity: %d %%" % result.humidity)
こんな感じで計測データを書き出しておけば、いろいろな活用シーンが考えられそうですよねえ。
では、今回のメインテーマにフォーカスして、TALKを続けていくことにしましょう。
(4) Homebridgeをインストールしましょう
今回は、計測した温度と湿度をHomeKit “iOSアプリ “ホーム””で参照したいので、”Homebridge“という”HomeKit”のAPIをエミュレートする”NodeJS“サーバーをインストールします。
詳しい内容は、以前のTALK”ダイソンのPure Hot + CoolをGoogle AssistantとHomeKitでリモコン操作できるようにしてみました“をご覧ください。
で、代表的な温度湿度センサーモジュールのデータを超簡単にハンドリングしてくれる”Homebridge”専用プラグイン”homebridge-dht“をインストールします。なお、プラグインの詳しい内容は、”こちら“をご覧ください。
sudo npm install -g homebridge-dht
続いて、GPIOを制御するライブラリ”pigpio“をインストールします。
sudo apt-get update
sudo apt-get install pigpio python-pigpio python3-pigpio;
で、次の”dht22″の場所を探すのに苦労しましたが、何とか見つけ、最後までインストール作業を完了。
sudo cp dht22 /usr/local/bin/dht22
sudo chmod a+x /usr/local/bin/dht22
で、”Homebridge”の設定ファイルを編集した後、実行してみたところ、”dht22 -g17″でエラーになってしまい、正常に実行できませんでした。原因は不明です。
(5) 湿度を表示してくれるhomebridge-humidity-fileというプラグインでトライ
前回、温度(°)をiOSアプリ”ホーム”上に表示するプラグイン”homebridge-temperature-file“を利用したので、今回は、湿度(%)をサポートしてくれる”homebridge-humidity-file“を使ってみることにしました。
まずは、以下の通り、プラグインをインストールします。
npm i homebridge-humidity-file
ただ、上記の要領でインストールすると、”Homebridge”専用プラグインとして認識してくれないようなので、所定のフォルダに移動します。
sudo mv /home/pi/node_modules/homebridge-humidity-file /usr/local/lib/node_modules/
続いて、”Homebridge”の設定ファイルを編集します。
nano /home/pi/.homebridge/config.json
今回、設定ファイルに追記した内容は、次の通りです。
{
"accessory": "TemperatureFile",
"name": "温度 DHT11”,
"description": "The temperature from DHT11 sensor”,
"file_path": "/home/pi/dht11_room_temp.txt"
}
{
"accessory": "HumidityFile",
"name": “湿度 DHT11”,
"description": "The humidity from DHT11 sensor”,
"file_path": "/home/pi/dht11_room_humidity.txt"
}
で、上記(3)で作成したスクリプトを実行します。
sudo python /home/pi/DHT11_Python/get_dht11_temp_humidity.py
これで、準備完了。”Homebridge”を実行してみましょう。
"Homebridge"
お、エラーもなく、ちゃんと動き始めてくれました。
|
|
|
“Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。
ホームページ “THE POOH FILES” にも是非お立ち寄り下さい。