Raspberry Pi 4 4GBモデルでこれまで構築したラズパイ環境を統合化してみる (2) “homebridgeでHomeKit対応”

Raspberry Pi 4 4GBモデルでこれまで構築したラズパイ環境を統合化してみる (1) “Raspberry Pi 4 セットアップ””の続きです。

 

現在稼働中のラズパイ環境の整理整頓を目的に、今回のTALKでは以下のサービスを”Raspberry Pi 4“に移行します。今回移行するサービスは、アップルの”HomeKit“では正規にサポートしていない機能をラズパイを介して実現するといった内容です。なお、今回のTALKではおおまかな内容を抜粋して紹介していますので、詳しい内容は過去のTALKを参照下さい。

ワンコインでお部屋の温度をHomeKitをベースに外出先でもモニターできるようにしてみました

ラズパイに接続したDHT11 温度センサー モジュールで測定した室内の温度と湿度を、”homebridge“を介して、iPhoneやmacOSの”ホーム”アプリに表示する、といったサービスです。

 

< Raspberry Pi 4にhomebridgeをインストール >

まず始めに、”Raspberry Pi 4“にアップルの”HomeKit“関連のサービスを実装するために、”homebridge“をインストールします。

・homebridgeはNode.jsサーバなので、まずはNode.jsをインストールします。

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get install -y nodejs

 

・Avahiをインストールします。

sudo apt-get install libavahi-compat-libdnssd-dev

 

・homebridge本体をインストールします。

sudo npm install -g --unsafe-perm homebridge

 

インストールが完了したら、homebeidgeが動作することを確認しておきます。

homebridge

 

< homebridgeをラズパイ起動時に自動実行 >

homebridge“は、ラズパイを起動する都度、Terminal画面で”homebridge”と入力して起動する必要があります。でも、それでは面倒なので、ラズパイ起動時に自動的に”homebridge“を実行するように対応しておきます。詳しい内容は”Running Homebridge on a Raspberry Pi“に掲載されています。

 

・サービスファイルを作成します。
sudo nano /etc/systemd/system/homebridge.service

ExecStart= にセットするパスは、

which homebridge で確認できます。

 

・サービスを有効にします。

sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge

 

・サービスが動いていることを確認します。
sudo systemctl status homebridge

 

念の為、ラズパイを再起動後、”homebridge“が自動的に実行されていることを以下のコマンドで確認できます。
journalctl -u homebridge

 

もし、どうしてもうまく動作しない場合は、
sudo systemctl stop homebridge
sudo systemctl disable homebridge

そして、先程作成した”homebridge.service”ファイルを削除すれば、一旦リセットできます。

 

< Raspberry PiをmacOS上にマウントする >

UNIXコマンドを楽に操れる技術者ではないので、AFPによるファイルサーバの機能をRaspberry Piに実装する”netatalk“を活用します。

インストールは簡単です。

sudo apt-get install netatalk

 

続いて、設定ファイルを編集します。
sudo nano /etc/netatalk/afp.conf

 

後は、macOSの”サーバへ接続…”で、”Raspberry Pi 4“のIPアドレスでアクセスするだけで、マックのデスクトップにラズパイのホーム・ディレクトリがマウントされます。これなら、相互のファイル移動を直感的に行えるので、マックで必要なファイルを作成した後、ラズパイにコピーといった操作が簡単になります。

 

< 部屋の温湿度を センサーモジュールで計測する >

部屋の温湿度を測定するセンサーは、DHT11 温度センサー モジュールを使用します。アマゾンで”HiLetgo 3個セット DHT11温度センサー モジュール湿度センサーモジュール デュポンラインと付属 Arduinoと互換“が640円で販売されています。

POOHの場合は、”Raspberry Pi 4“のピンヘッドとの接続を、+をpin #01 (DC Power 3.3V)、outをpin #11 (GPIO17)、-をpin #09 (Ground)にしました。

 

続いて、マックで”DHT11 Python library“をダウンロードします。

 

“dht11_example.py”ファイルをマック上で編集します。(例えば”Xcode”などのアプリで編集します。)

POOHの場合は、DHT11 温度センサー モジュールのoutをラズパイのpin #11 (GPIO17)に接続したので”pin=17″に変更しました。

編集を終えたら、先程ダウンロードしたフォルダ毎、”Raspberry Pi 4“のホームディレクトリにコピーします。

 

それでは、サンプルコードを実行してみましょう。

sudo python /home/pi/DHT11_Python/dht11_example.py

 

< 温湿度をHomekitに表示するプラグインをインストール >

計測した温湿度をHomekitに表示する”homebridge“のプラグインをインストールします。

温度を表示するプラグイン “homebridge-temperature-file“をインストール。

sudo npm install -g homebridge-temperature-file

 

湿度を表示するプラグイン “homebridge-temperature-file“をインストール。

npm i homebridge-humidity-file

sudo mv /home/pi/node_modules/homebridge-humidity-file /usr/local/lib/node_modules/

 

続いて、”homebridge“の設定ファイルを編集します。(詳細は割愛しますので、詳しい内容は過去のTALKを参照下さい。)

nano /home/pi/.homebridge/config.json

 

< 定期的に温湿度を計測する仕組み >

定期的に温湿度を計測し、計測値を所定のテキストファイルに記録する仕組みを作ります。

まずは、先程のサンプルコードを編集して、計測した温湿度を所定のファイル(“dht11_room_temp.txt”と”dht11_room_humidity.txt”)に記錄するスクリプトを作成します。

sudo nano /home/pi/DHT11_Python/get_dht11_temp_humidity.py

 

序に、”Raspberry Pi 4“のCPU温度を計測し、計測値を所定のテキストファイル(“cpu_temp.txt”)に記録するスクリプトも作ります。

nano /home/pi/get_temperature.py

 

作成した2本のスクリプトを10分毎に実行するよう”cron”に登録します。

crontab -e

設定ファイルを編集後、“cron”を起動して完了です。

sudo /etc/init.d/cron start

 

ここまでの作業が完了したら、一旦、”Raspberry Pi 4“を再起動した後、”homebridge“の状態を確認してみましょう。ログ上で、プラグインが正常に読み込まれたいることを確認できれば問題ないはずです。

journalctl -u homebridge

 

< アップルの”ホーム”アプリ HomeKitに登録する >

最初、iPhoneの”ホーム”アプリでアクセサリを追加しようとしても検索に失敗して登録できませんでした。そこで、”homebridge“ページの”My iOS App Can’t Find Homebridge”欄に記載されている対処方法を一度に試してみたところ、問題なく登録できました。

・”homebridge“の設定ファイル (config.json)の”username”を違う名称に変更。

・”/home/pi/.homebridge”配下にある”persist”フォルダを削除。

・iPhoneの”機内モード”をオン・オフ。

・”Raspberry Pi 4“を再起動。

・iPhoneの”ホーム”アプリでコード(config.jsonで設定したpin)入力でアクセサリを追加、”Homebridge-xxx”をタップしてアクセサリを追加。

無事に、iPhoneの”ホーム”アプリの画面に表示されました。

 

次回のTALKでは、”Raspberry Pi 4“にラズパイ標準カメラを接続して、アップルの”ホーム”アプリで監視映像を再生するサービスを実装する予定です。お楽しみに!

 

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

Arduino互換 DHT11 ベーシック 温度&湿度センサー
価格:520円(税込、送料別) (2020/1/26時点)

楽天で購入

 

 

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

ソウテン uxcell DHT11モジュール ジャンパーケーブル 温湿度センサモジュール Arduino用
価格:848円(税込、送料別) (2020/1/26時点)

楽天で購入

 

 

 

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

tomohiko

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

おすすめ

コメントを残す