ワンコインでお部屋の温度を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"

 

お、エラーもなく、ちゃんと動き始めてくれました。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Arduino互換 DHT11 ベーシック 温度&湿度センサー
価格:510円(税込、送料別) (2018/2/23時点)

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Arduino互換 DHT11 温度&湿度センサーモジュール
価格:902円(税込、送料別) (2018/2/23時点)

 

 

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

tomohiko

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

おすすめ

コメントを残す