#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.



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS