macOSのHomeKitをプログラムから動かす方法です。HomebridgeとMQTTを使います。Siriを使うよりは確実だと思います。
macOS, Windows, Linux, Arduino IDEなどからMQTTブローカー(サーバ)にメッセージを送ることで、HomeKitに登録されたいろいろなデバイスを制御できます。 MQTTメッセージを送るためには、いろいろなライブラリが使えます。
例えば、HomeKitからon/offできるLEDがあったとします。 このネットワークに接続したコンピュータのシェルコマンドやPythonプログラムからこのLEDを点滅できます。 また、このネットワークに接続したArduinoからこのLEDを点滅できます。
通常のHomeKit環境に加えて、以下のハードウェアが必要です。
Raspbery pi以外のLinuxマシンでも、macOSでもWindowsマシンでも良いです。 サーバなのでアプリの裏で動かしていても良いです。当然ですが、必要とされる間はずっと起動している必要があります。 以下ではRaspberry pi zero wで説明します。
このサーバには、以下のサーバープログラムが必要です。
Raspberry pi zero wとSDカードを用意します。
Raspberry Pi OSのページからSDカード用のインストーラプログラムをダウンロードします。 macOS用、Windows用、Linux用などあるので、適したものをダウンロードします。
https://www.raspberrypi.com/software/
このRaspberry Pi Imagerを動かします。
Storageのボタンで、使用するSDカードを選択します。
Choose OSのボタンで、Raspberry Pi OSをインストールするのですが、ここで、
を選べば、Raspberry Pi OSがインストールされて、同時にHomebridgeもインストールされます。
この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 zero wがDHCPからアドレスをもらって起動します。 どのアドレスをもらったかは、研究室のルータに接続して調べてください。 必要ならばRaspberry Pi OSの設定で固定アドレスにします。
パソコンのwebブラウザから、
http://192.168.108.xxx:8581/
に接続します。Homebridgeが見えているはずです。 設定直後のアカウントとパスワードはどちらもadminです。
ログインした後で現れるQRコードを使ってiOSやmacOSのホーム.appからこのHomebridgeを登録できます。 またこの後のメニューで、Homebridge関係のプログラムを再起動したり、さらにはRaspberry Piを再起動したりシャットダウンすることもできます。 電源を切る前には、シャットダウンしておきましょう。
MosquittoはMQTTブローカーです。それをテストするPub/Subコマンドも含まれてます。 MQTTの説明は以下などを見てください。
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やWindowsにもインストールできます。サーバとして立ち上げない場合でも、クライアントの機能が使えるのでインストールしておくと便利です。
ここではmacOSの場合を説明します。インストールには、Home Brewを使うのが簡単です。
インストール方法はこちらにあります。
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.