家のスマートホーム化を進めるためにSiriで家電を操作できるようにしました。
現状テレビのon,offだけですがまとめました。
環境
- Raspberry pi ZERO WH
- Raspbian(9.4)
- python(2.7.13)
- Nodejs(8.11.1)
- git(2.11.0)
- irMagician(大宮技研合同会社のPC対応型赤外線リモコン)
- iPhone 6s Plus(12.0)
irMagicianの設定
まず、使いたいリモコンの赤外線を登録するためにirMagicinを設定します。
やり方は色々ありますが、これを利用します。
適当なディレクトリを作成してクローンします。
$ git clone https://github.com/netbuffalo/irmcli.git
pipとpysirealというライブラリが必要なのでインストールします。
$ sudo apt-get install python-pip
$ sudo pip install pysireal
これで赤外線の登録ができるようになりました。
赤外線を登録して送信する
赤外線を登録する場合はirmcliのディレクトリに移動して以下のように実行します。
今回はテレビのon,offを例にまとめたいと思います。
$ sudo python irmcli.py -c
実行すると
Capturing IR...
が表示されるので登録したい信号をirMagicianに向かって送信します。
送信したら、jsonファイルとして書き出します。
$ sudo python irmcli.py -s -f tv_on.json
以下のコマンドを実行することで直接テレビに送信することもできます。
$ sudo python irmcli.py -p -f tv_on.json
これをSiriで操作できるようにしたいと思います。
Homebridge
Siriで操作できるようにAppleの「Home Kit」を利用した「Homebridge」という
Node.jsで動くサーバをインストールします。
まず、Node.jsをインストールします。
$ sudo apt-get install nodejs npm
その後、必要なライブラリをインストールします。
$ sudo apt-get install libavahi-compat-libdnssd-dev screen
homebridgeをグローバルインストールします。
$ sudo npm install -g homebridge
設定ファイルを置くためのディレクトリを作成させるため、一度実行させます。
$ homebridge
homebridgeからコマンドラインを実行させるプラグインをインストールします。
$ sudo npm install -g homebridge-cmd
homebridgeフォルダにconfig.jsonを置きます。
{
"bridge":
{
"name": "tv",
"username": "xx:xx:xx:xx:xx:xx",
"port": 51821,
"pin": "xxx-xx-xxx"
},
"description": "Living Room",
"accessories": [
{
"accessory": "CMD",
"name": "テレビ",
"on_cmd": "sudo python /home/pi/irmcli/irmcli.py -p -f /home/pi/irmcli/tv_on.json",
"off_cmd": "sudo python /home/pi/irmcli/irmcli.py -p -f /home/pi/irmcli/tv_off.json"
}
]
}
username
にはラズパイのMACアドレスを入力します。
pin
にはhomekitに接続する際に使用するpinを入力します。
2番目のname
にはSiriに呼びかける時に使う名前を使うようにします。(日本語でもOK)
on_cmd
にはテレビをonにするコマンド、off_cmd
にはテレビをoffにするコマンドを入力します。
出来たら実行します。
$ homebridge
接続に使うQRコードとpinが出てきたら成功。
iPhoneでの操作
ホームアプリを起動し「アクセサリを追加」を押して表示されたQRコードを読み取るか、設定したpinを入力して設定します。
homebridgeをデーモン化する
上記の設定でも使用できるが、ラズパイを落とすと使えなくなるのでデーモン化します。
serviceファイルを作成します。
$ sudo vim /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
ExcecStart
には自身のhomebridgeのパスを入力します。
サービスを更新してからhomebridgeを起動させます。
$ sudo systemctl daemon-reload
$ sudo systemctl start homebridge
$ sudo systemctl enable homebridge
なお、この方法で起動した場合、iPhoneのホームアプリでhomebridgeの再設定を行うようにします。
まとめ
テレビのon.offだけですが、Siriで操作できるようになりました。
ただ、テレビon.offはGoogle Homeで操作できるので別の機器で試してみたいです。
(ちなみに家のエアコンは情報量が多く、irMagicianではメモリオーバーらしい。)
参考
iOS10「ホーム」アプリと「Raspberry Pi + irMagician」でお手軽家電操作。
ラズベリーパイを利用したHomeKitとSiriによる家電操作
[Raspberry Pi 3 にhomebridgeを導入してsiriから家電操作できるようにした際の覚書]
(https://qiita.com/udon242/items/25e09769196cbbe397e3)
こちらを参考にさせていただきました。