このページの内容は初代Raspberry piのRaspbian GNU/Linux 9.4で動かしました。
という記事がありましたので、真似しました。元記事はこちらです。
HomeKitは本来は、アップルと契約結んで開発ツールを入手する必要があります。 DIYな人たちを対象にしていないのです。 でも有志がHomeBridgeというツールを開発しています。これを使います。 NodeJSをインストールして、そのあとにHomeBridgeをインストールします。
以下は、上記のサイトに書いてある通りです。最初のapt-getのupdate/upgradeは長いので省略しても良いかもです。
sudo apt-get update sudo apt-get upgrade sudo apt-get install git make curl -L git.io/nodebrew | perl - setup export PATH=$HOME/.nodebrew/current/bin:$PATH nodebrew install-binary stable nodebrew alias default v6.1.0 sudo apt-get install npm
ここでインストールされた最新バージョンの場所へ移動します。上記の記事では、
cd /home/pi/.nodebrew/node/v6.2.2/
だったけど、今回インストールしたところでは、
cd /home/pi/.nodebrew/node/v10.7.0/
でした。そしてインストールされたプログラムをパスの張られている/usr/localに移動します。
sudo cp -R * /usr/local/
sudo npm install -g homebridge
(以下で色々とnpmでインストール管理するので先ほどインストールしたんですね)
この結果、gyp WARN EACCESという警告が出ました。こちら
sudo npm install -g homebridge --unsafe-perm
これでインストールできました。 ただ、後ほどのプラグインを色々使ってみると、エラーが出て使えない場合がいくつかありました。 インストールしているモジュールが足りないようです。 Homebridgeのサイトなどをみると、以下のようなインストール方法が紹介されていました。 homebridge本体以外に色々とインストールしているようです。 やってみたら、確かに動くプラグインが増えました。
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp cd /usr/local/lib/node_modules/homebridge/ sudo npm install --unsafe-perm bignum cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns sudo node-gyp BUILDTYPE=Release rebuild
この後、色々とプラグインを探します。冒頭のサイトでも紹介されているように、Switchをサポートして、onとoffでシェルコマンドを実行するという汎用性の高いプラグインを試してみます。ここにあります。
インストールするには以下のようにします。アンインストールするにはunintallとすれば良いです。
sudo npm install -g homebridge-cmd
プラグインは/usr/local/lib/node_modules/に置かれます。 一方、プラグインの設定ファイルはいかにあります。これを編集します。
vi /home/pi/.homebridge/
中身をこんな感じで作ります。
{ "bridge": { "name": "SiioLabHomebridge", "username": "B8:27:EB:35:28:71", "port": 51826, "pin": "410-80-129" }, "description": "This is an example configuration file.", "accessories": [ { "accessory": "CMD", "name": "My Switch", "on_cmd": "/home/pi/.homebridge/oncmd.py", "off_cmd": "/home/pi/.homebridge/offcmd.py" } ] }
この後、.homebridgeというコマンドを打つと、homebridgeサーバが起動します。うまくいけばQRコードが出るはずです。
このQRコードもしくは番号をiPhoneのHomekitプログラムで読み込めば登録できます。
homekitには色々なサービスが定義してあって、動作や、Siriへのコマンドが決まっています。サービスの一覧は色々紹介されています。
この中から、自分の作りたいものを探すことになります。 上記で使ったSwitchはonとoffだけなので、Siriのコマンドもonにするとか、点けて、とか消して、とかです。
この他、有名なところではガレージドアがあります。ガレージを開けて、といって操作します。プラグインによって色々な作りがされていて、センサでドアの開閉を確認するものや、時間で適当に停止するものなど色々です。また、シェルコマンドを起動するもの、URLにアクセスして起動させるものなどがあります。どちらかというとURLにアクセスして動作するタイプが多いです。別のページで紹介したPythonでWebサーバを作ってコマンドを受けて動作させる仕組みのCherrypyなどを使うと良いと思います。
鍵関係のコマンドも使えます。開けて、閉めて、というような発話で、コントロールできます。 使えそうだったプラグインをいくつか列挙しておきます。
config.jsonの例を見ると、なんとなくできることがわかります。また、
がプラグインの本体ですが、このソースを見ると何をやろうとしているのか見当がつきます。必要ならば書き換えてしまえば良いです。
例えば、homebridge-doorlockなどは、「安全のためにプログラムから解錠できないようにしてある」というコメントで、解錠コマンドをif文で外してありました。最初は、どうして解錠コマンドが出ないのか、不思議でした。この部分をコメントアウトしたら解錠できるようになりました。
実際に鍵を開ける、スイッチを入れるなどの動作を実現するには、Raspberry piのGPIOにアクセスするプログラムが必要です。 プラグインから直接GPIOにアクセスしているものもありますが、 多くのプラグインはhttpサーバ経由でGPIOを動かしていることが多いようです。 つまり、GPIOを動かすwebサーバがすでにあって、それをhttpのgetとかputで操作します。 webサーバは当然ですが同じRaspberry piにあっても良いわけです。
ということで、Cherry Pyを使って研究室ドアの電気錠を開閉するサーバを作りました。Cherry Pyの使い方は以下にあります。 How2CherryPy