- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-10-13T21:05:42+09:00","ocha","ocha")
macOSのHomeKitをプログラムから動かす方法です。Siriを使うよりは確実だと思います。
#author("2021-10-13T23:18:31+09:00","ocha","ocha")
** はじめに [#ka202ff7]
macOSのHomeKitをプログラムから動かす方法です。HomebridgeとMQTTを使います。Siriを使うよりは確実だと思います。
macOS, Windows, Linux, Arduino IDEなどからMQTTブローカー(サーバ)にメッセージを送ることで、HomeKitに登録されたいろいろなデバイスを制御できます。
MQTTメッセージを送るためには、いろいろなライブラリが使えます。
例えば、HomeKitからon/offできるLEDがあったとします。
このネットワークに接続したコンピュータのシェルコマンドやPythonプログラムからこのLEDを点滅できます。
また、このネットワークに接続したArduinoからこのLEDを点滅できます。
通常のHomeKit環境に加えて、以下のハードウェアが必要です。
- サーバーマシン(例えばRaspberry pi)
macOSでもWindowsマシンでも良いです。サーバなのでアプリの裏で動かしていても良いです。
Raspbery pi以外のLinuxマシンでも、macOSでもWindowsマシンでも良いです。
サーバなのでアプリの裏で動かしていても良いです。当然ですが、必要とされる間はずっと起動している必要があります。
以下ではRaspberry pi zero wで説明します。
このサーバには、以下のサーバープログラムが必要です。
- Homebridge
- Mosquitto (MQTTブローカー)
* Raspberry pi zero w にOSを載せる [#b729674b]
** Raspberry pi zero w にOSを載せる [#b729674b]
***インストール用SDカードを作る [#k5489844]
Raspberry pi zero wとSDカードを用意します。
Raspberry Pi OSのページからSDカード用のインストーラプログラムをダウンロードします。
macOS用、Windows用、Linux用などあるので、適したものをダウンロードします。
https://www.raspberrypi.com/software/
このRaspberry Pi Imagerを動かします。
https://assets.raspberrypi.com/static/md-bfd602be71b2c1099b91877aed3b41f0.png
Storageのボタンで、使用するSDカードを選択します。
Choose OSのボタンで、Raspberry Pi OSをインストールするのですが、ここで、
+ Other specific purpose OS
+ Homebridge
を選べば、Raspberry Pi OSがインストールされて、同時にHomebridgeもインストールされます。
#ref(imager_homebridge.png);
**WiFiの設定をする [#x6de0e22]
このSDカードをRaspberry Pi zero wに差し込めば、すぐに起動します。
通常は、Raspberry Pi zero wにディスプレイやキーボードを挿して、この後の設定を行いますが、SDカードの上でWiFiの設定もしておけば、全部ネットからこの先の作業が可能です。
Raspberry Pi ImagerがインストールしたSDカードをmacOSやWindowsに挿すと、FATのボリュームがマウントされます。
macOSならば、/Volumes/bootというドライブがマウントされます。この中にsshというサイズゼロのファイルを作っておきます。
また、wpa_supplicant.confというテキストファイルを作成して、WiFiの設定をしておきます。
一連の作業をシェルコマンドで実行すると:
% cd /Volumes/boot
% touch ssh
% vi wpa_supplicant.conf
そしてwpa_supplicant.confに以下の内容を書き込みます。
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="<SSID>"
psk="<パスワード>"
}
詳しくはこちらを参照してください。
https://qiita.com/mascii/items/0d1a280ac58ed8f6f999
*** Raspberry piにssh接続する [#l2a9a390]
この設定で、Raspberry pi zero wがDHCPからアドレスをもらって起動します。
どのアドレスをもらったかは、研究室のルータに接続して調べてください。
必要ならばRaspberry Pi OSの設定で固定アドレスにします。
*** Raspberry piのHomebridgeに接続する [#l80bb978]
パソコンのwebブラウザから、
http://192.168.108.xxx:8581/
に接続します。Homebridgeが見えているはずです。
設定直後のアカウントとパスワードはどちらもadminです。
#ref(homebridge_web.jpg);
ログインした後で現れるQRコードを使ってiOSやmacOSのホーム.appからこのHomebridgeを登録できます。
またこの後のメニューで、Homebridge関係のプログラムを再起動したり、さらにはRaspberry Piを再起動したりシャットダウンすることもできます。
電源を切る前には、シャットダウンしておきましょう。
** MosquittoをRaspberry Pi OSにインストールする [#s64b1474]
MosquittoはMQTTブローカーです。それをテストするPub/Subコマンドも含まれてます。
MQTTの説明は以下などを見てください。
https://s3-ap-northeast-1.amazonaws.com/amg-s3-01/wp-content/uploads/2018/11/24144017/mqtt_pubsub.png
https://www.advanet.co.jp/2020/10/14/mqtt-introduction/
Mosquittoは、Linux, macOS, Windowsなど各種が配布されています。
Raspberry Pi OSでインストールする方法は以下で説明されています。
https://qiita.com/ekzemplaro/items/ab90dd630c3ad8e819ab
要するに、
sudo apt install mosquitto
sudo apt install mosquitto-clients
でインストールできて、
sudo systemctl start mosquitto
でサーバをスタートできます。
** MosquittoをmacOSにインストールする [#s64b1474]
MosquittoはmacOSやWindowsにもインストールできます。サーバとして立ち上げない場合でも、クライアントの機能が使えるのでインストールしておくと便利です。
ここではmacOSの場合を説明します。インストールには、Home Brewを使うのが簡単です。
https://brew.sh/index_ja
インストール方法はこちらにあります。
https://qiita.com/yohei1126/items/de355f540a83743213fb
要するに、
brew install mosquitto
です。macOSでサーバを立ち上げないならば、これだけです。インストール後に、mosquitto_subとかmosquitto_pubとかタイプして動作を確かめてください。引数なしで起動すると、ヘルプが出ます。
また--versionでバージョンを確認できます。
% mosquitto_pub --version
mosquitto_pub version 2.0.10 running on libmosquitto 2.0.10.