#author("2021-10-13T23:13:30+09:00","ocha","ocha") #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) Raspbery pi以外のLinuxマシンでも、macOSでもWindowsマシンでも良いです。 サーバなのでアプリの裏で動かしていても良いです。当然ですが、必要とされる間はずっと起動している必要があります。 以下ではRaspberry pi zero wで説明します。 このサーバには、以下のサーバープログラムが必要です。 - Homebridge - Mosquitto (MQTTブローカー) ** 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でサーバを立ち上げないならば、これだけです。 です。macOSでサーバを立ち上げないならば、これだけです。インストール後に、mosquitto_subとかmosquitto_pubとかタイプして動作を確かめてください。引数なしで起動すると、ヘルプが出ます。 また--versionでバージョンを確認できます。 % mosquitto_pub --version mosquitto_pub version 2.0.10 running on libmosquitto 2.0.10.