Raspberry Pi+IRKit+Homebridgeを使って自宅の家電をSiriで音声操作してみました
2017/8/22更新
IRKit+IFTTTを使って指定した時間に家電を自動操作する記事を書きました。詳細は記事下の関連記事をご覧ください。
こんにちは、だいぱんまん(@donchan922)です。
- 「Hey Siri!照明OFF」
- 「Hey Siri!エアコンON」
- 「Hey Siri!テレビON」
こんな感じでiPhoneのSiriに話しかけるだけで自宅の家電を操作できるようにしてみました。これ実際にやってみると便利で、リモコンを探す必要がなくなったり、寝るときにわざわざ寝室の照明を消しに立ち上がる必要がなくなったりします。
この仕組みを実現してくれるのが、IRKitという製品です。赤外線のリモコンで操作する家電であれば、基本的にどんなものでも公式アプリやSiriを使って遠隔操作できます。すごい!
公式アプリを使うと、プログラミングなしで簡単に家電を遠隔操作できます。ただ、Siriに話しかけて操作することはできません。そこでIRKitが提供している開発ツールを使って実現してみました。
完成形がこちら
自宅のエアコン、扇風機、照明のON/OFFをSiriで操作しました。未来感すごい!Raspberry Pi+IRKit+Homebridgeを使って自宅の家電をSiriで音声操作してみました。 pic.twitter.com/eQalSRBQac
— donchan (@donchan922) 2017年8月17日
仕組みについて
AppleはiOS端末(iPhoneやiPad)から機器を操作できる「HomeKit」という機能を提供しています。HomeKit対応製品はSiriから操作することができます。
Homebridgeは、HomeKitのAPIをエミュレートする軽量なNodeJSサーバ(Webサーバ)です。簡単に言うと、HomeKitのオープンソース版のようなものですかね。これを用いるとHomeKit対応製品でなくとも、多くの製品がHomeKitに対応できます。IRKitもHomebridgeを利用することで、Siriから家電を操作することができます。
Raspberry PiはHomebridgeを起動させるためのWebサーバとして使いました。他のPCやMac上で起動させることも、もちろん可能です。
IRKitはHomebridgeからHTTPリクエストを受け、それをもとに対象の家電に赤外線で信号を送ります。これによりSiriから家電を操作することができます。
必要なもの
すでにPCがあることを想定しています。ちなみに今回はMac(macOS Sierra v10.12.5)を使用しました。以下、準備するものです。
Raspberry Pi
【国内正規代理店品】Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品【RS・OKdo版】
- メディア: Personal Computers
IRKit
2021/2/9追記
現在は販売停止しているようです。
今回の主役。
ACアダプタ
エレコム スマートフォン用AC充電器/CUBE/1A/USB1P/ホワイト
- 発売日: 2016/07/22
- メディア: エレクトロニクス
USBケーブル
Amazonベーシック USBケーブル 0.9m (2.0タイプAオス - マイクロBケーブル) ブラック
- メディア: Personal Computers
リモコンスイッチ
オーム電機 照明リモコンスイッチ OCR-CRS01W【品番04-9447】 OCR-CRS01W ホワイト
- 発売日: 2018/08/23
- メディア: ホーム&キッチン
照明をリモコンで操作できるようにするスイッチ。照明のON/OFFを切り替えたい場合はこれ使うと便利です。リモコン対応していない家電を操作したい場合は、リモコンコンセントを導入するのがいいと思います。
実装手順
IRKitのセットアップ
まずは以下のIRKit公式アプリに従って、IRKitの初期設定を行います。公式アプリの手順が丁寧にまとめられているので、ここでは詳しく説明しません。手順を簡単にまとめると以下のとおりです。
IRKitとRaspberry Piの接続確認
IRKit公式サイトの手順を参考にしました。まずはIRKitのホスト名(.localホスト名)を確認します。
Mac上で以下コマンドを入力し、表示されたInstance Name
+.local
がIRKitのホスト名になります。以下の例では、irkitXXXX.local
がそれにあたります。メモしておきましょう。
$ dns-sd -B _irkit._tcp Browsing for _irkit._tcp DATE: ---Thu 17 Aug 2017--- 10:52:56.817 ...STARTING... Timestamp A/R Flags if Domain Service Type Instance Name 10:52:58.061 Add 2 4 local. _irkit._tcp. irkitXXXX
IRKitのホスト名が確認できれば、IRKitとRaspberry Piの接続確認を行います。適当なリモコンのボタンをIRKitに向けて押します。その後、Raspberry Pi上で以下コマンドを入力し、赤外線情報を取得できれば接続確認完了です(irkitXXXX.local
の部分はさきほどメモしたIRKitのホスト名です)。以下例だと、[18031,8755,1190, ... ,1190]
が赤外線信号になります。この値は各リモコン各ボタンによって異なります。
$ curl -i "http://irkitXXXX.local/messages" -H "X-Requested-With: curl" HTTP/1.0 200 OK Access-Control-Allow-Origin: * Server: IRKit/2.1.3.13.gbe33d36 Content-Type: text/plain {"format":"raw","freq":38,"data":[18031,8755,1190,1190,1190,3341,1190,3341,1190,3341,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,1190,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,65535,0,9379,18031,4400,1190]}
Homebridgeのセットアップ
以下サイトが大変参考になりました。これ以降はすべてRaspberry Pi上でコマンドを入力していきます。
Running Homebridge on a Raspberry Pi · homebridge/homebridge Wiki · GitHub
以下コマンドで、必要なライブラリをインストールします。
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - $ sudo apt-get install -y nodejs $ sudo apt-get install libavahi-compat-libdnssd-dev
以下コマンドで、Homebridgeをインストールします。
$ sudo npm install -g --unsafe-perm homebridge
以下コマンドで、IRKitをSiri(Homekit)で操作するためのプラグインをインストールします。
$ sudo npm install -g homebridge-irkit
以下コマンドで、設定ファイルの内容を以下のとおり変更します。
$ mkdir ~/.homebridge $ nano ~/.homebridge/config.json { "bridge": { "name": "Homebridge", "username": "XX:XX:XX:XX:XX:XX", "port": 51826, "pin": "031-45-154" }, "description": "IRKit Control", "accessories": [ { "accessory": "IRKit", "name": "照明", "irkit_host": "irkitXXXX.local", "on_form": {"format":"raw","freq":38,"data":[赤外線信号]}, "off_form": {"format":"raw","freq":38,"data":[赤外線信号]} } ] }
各パラメータの補足を以下にまとめます。
bridge
- username:Raspberry PiのMacアドレス(英字部分は大文字で記述すること)
- port:Homebridgeの待受ポート
- pin:HomebridgeをHomeKitアクセサリに追加するためのコード
accessories
- name:「Hey Siri」で呼ぶ名前
- irkit_host:IRKitのホスト名
- on_form:リモコンのONの赤外線信号
- off_form:リモコンのOFFの赤外線信号
Raspberry PiのMacアドレスは以下コマンドを入力して確認します。Raspberry Piを有線で繋いでいるならeth0
、無線ならwlan0
のハードウェアアドレス
がそれにあたります。
$ ifconfig
リモコンのON/OFFの赤外線信号は、「IRKitとRaspberry Piの接続確認」で実施したコマンドで確認してください。複数のリモコンを登録する場合は、"accessories": [...]
の中に複数の設定を記述してください。
以下コマンドで、Homebridgeを起動します。
$ homebridge
Raspberry Piの起動時にHomebridgeを自動起動する場合は以下コマンドを入力します。まずはScreenをインストールします。
sudo apt-get install screen
以下コマンドで設定ファイルを開きます。
sudo nano /etc/rc.local
exit 0
行の直前に以下コマンドを記述します。これでHomebridgeの自動起動設定は完了です。
su -c "screen -dmS homebridge homebridge" -s /bin/sh pi
Siriと連携する
iOS10以上のiPhoneなら、「ホーム」アプリがインストールされているはずです。アプリを起動し、「アクセサリを追加」をタップします。
Homebridgeが起動していれば、自動でHomebridgeをアクセサリとして認識してくれます。HomeKitコードは、Homebridgeの設定ファイル内に記述したpin
の値です。
HomeKitコードを入力すると、ホームアプリにHomebridgeが追加されます。
このあたりの設定は特にいじらなくて大丈夫です。画面右上の「次へ」⇒「完了」で設定を完了させます。
ホームアプリのアクセサリに追加されました。今回の場合、タップすると照明がON/OFFされます!すごい!
Siriに話しかけても照明をON/OFFできます!すごい!
まとめ
音声だけで家電を操作できるなんて未来感あふれます。数年後には一般の人でも簡単に家電を音声操作、遠隔操作できたりするのかなとも思いました。
少し気になったのは、IRKitが放射する赤外線の距離です。壁をはさんだり、家電から離れたところにIRKitを置いたりすると、赤外線がうまく家電に届かないことがありました。IRKitが使えるのはあくまでも赤外線が家電に届く範囲ということですね。
あと外出先から自宅の家電を操作することもできるみたいなので、時間があればそれもしてみようと思います。
IRKitの後継として、Nature Remoが2017年9月頃に発売されるようです。こちらも面白そう。詳細は以下リンクをご覧ください。
参考リンク
- Running Homebridge on a Raspberry Pi · homebridge/homebridge Wiki · GitHub
- https://datahotel.io/archives/725
- GitHub - homebridge/homebridge: HomeKit support for the impatient
- IRKit - Open Source WiFi Connected Infrared Remote Controller
- 自宅IoTのため家にある電子機器をRaspberry Pi+Homebridge使ってSiriの音声認識で繋ぎまくってみた - karaage. [からあげ]