この記事はRaspbery Pi Advent Calender 2019 6日目の記事です。
先日自宅にスマートロックを導入しました。
このスマートロックは施錠解錠をAPIで操作できるのが最大の特長です。
もともとからGoogle Homeに対応しているのですが、これだけでは楽しくないので折角なのでHomeKitへの対応をしてみようと思います。
必要なもの
次のアイテムが必ず必要です。予め準備をしてください。
- Sesame スマートロック
- Sesame Wi-Fiアクセスポイント
- iOS11以上を搭載した端末
- Raspberry Pi
今回は初代Raspberry Piを使用しています。というのも使うのはmicroUSBポートとEthernetポートなので、これでも問題ないなとなったのです。それに通常サイズのSDカードを使うので入手もしやすいですね。
もし、Apple TVかHomePodがあると外出先から操作できます。逆に言うと、これだけでは外出先から操作できません。(まあ、純正アプリで操作できるからいいんだけど)
トークンの準備
SesameをAPI経由で操作するためにトークンを取得する必要があります。Sesameのダッシュボードを開き、API設定をクリックします。
確認コードが送信される場合があるので、一度メールボックスから確認コードを入力します。エラー表示が出ても送信されている場合があります(!)
APIキーが発行されたらこれをコピーしておきます。このAPIキーが分かってしまうと、誰でも施錠解錠ができてしまうので厳重に管理してください。
ここまで来たら次はRaspberry Piでセットアップをします。
HomeBridgeのセットアップ
HomeBridgeは、AppleのHomekitを非公式に実現するためのソフトウェアです。Node.jsで書かれています。そのためまずはnpmをインストールします。
$ sudo apt-get install npm nodejs
次に、HomeBridgeをインストールします。
$ npm install -g --unsafe-perm homebridge
そして、Sesame用Homebridgeプラグインである、Homebridge-sesameをインストールします。
$ sudo npm install -g homebridge-sesame
ここまで来たら一旦HomeBridgeの設定をしましょう。設定ファイルを開きます。もし無い場合は作成してください。
$ sudo nano ./.homebridge/config.json
{
"bridge": {
"name": "玄関のRaspberryPi",
"username": "01:77:AB:CD:1C:1C",
"port": 51826,
"pin": "092-00-123"
},
"description": "Room key",
"platforms": [{
"platform": "Sesame",
"token": "************"
}]
}
name
と username
と pin
は適当で構いません。 また、MACアドレスやPINコードはそれっぽい書式にしておけばOKです。 token
には先程取得したAPIキーを入れてください。
ここまで済ませたら一度Homebridgeを起動してみます。
$ homebridge
QRコードが表示されるので、iPhoneで読み取りましょう。iOSのホームアプリの「アクセサリを追加」で読み取ります。
(補足:もしQRコードが見切れて読み取れないとかいう場合は、「コードがないか、スキャンできません」からPINを入力してもOKです)
認証されていないアクセサリの警告画面が表示された場合は、「そのまま追加」をタップします。
アイコン(鍵マーク)と名前(施錠機構)は変更できるので適当な名前に変更しましょう。僕は素直に「ドア」にしました。
部屋も適当に選択しておきます。玄関にスマートロックを取り付けているので、「部屋」を新規作成して「玄関」とつけました。これによってSiriに「玄関のドアを締めて」というコマンドが使えるようになります。
デーモン化
常時起動できてないと日常生活に支障をきたすので、Homebridgeをデーモン化します。自分なりの方法をお持ちであればそれでも構いません。
僕は /etc/systemd/system/homebridge.service
に次のようなファイルを作成しました。
[Unit]
Description=run homebridge
After=syslog.target network-online.target
[Service]
Type=simple
User=pi
ExecStart=/usr/local/bin/homebridge
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
有効化して起動します。
$ sudo systemctl daemon-reload
$ sudo systemctl enable homebridge
$ sudo systemctl start homebridge
systemctl status homebridge
で正常に起動していたらOKですね。これで、HomeKitでスマートロックを操作できるようになりました!
ところでマシュかわいいよね。