YSNHatenaBlog

主にアプリやWebサービス開発について

irMagician + Raspberry Pi + HomeKitで家電を遠隔&音声制御する

音声でテレビを操作したい、帰宅前にエアコンをつけたい、といったことは誰でも考えたことがあると思います。 今持っている普通の家電でこれを実現したいと思ったときに、

  • 音声認識して家電操作コマンドに変換して赤外線を飛ばすようなソフトとハードを作る。
  • 家に近づいたことを検知するためのアプリを作る。
  • 宅外から宅内のネットワークにある機器を操作するためのシステムを用意する。

など、いざ実現しようとすると意外と難易度が高いことに気づきます。

しかし今回、HomeKitを使った機器連携でこれらが簡単に実現することができました。 今回の記事では、その方法についてまとめたいと思います。

HomeKit

iOS10からホームアプリが追加され、HomeKit対応デバイスをこのアプリから管理できるようになりました。

f:id:yosuke403:20170107185438p:plain

ホームアプリにHomeKIt対応デバイスが登録されるとiOSから操作が可能になるのですが、 単純な操作だけでなく、次のようなことが可能になります。

1. iOSのコントロールセンターから操作できる。

f:id:yosuke403:20170107211712p:plain

2. Siriから操作できる。
3. Apple Watchから操作できる。

f:id:yosuke403:20170107211254p:plain

4. 家族のIDを登録すれば、家族が自分のiOSバイスから操作できる。
5. Apple TVを持っていれば、宅外から操作したり、位置情報やタイマーをトリガーに操作できる。

f:id:yosuke403:20170107211549p:plain f:id:yosuke403:20170107211627p:plain

便利ですね!

つまりHomeKItに対応したデバイスは、音声操作したり宅外操作したりできるわけです。

HomeKit APIをエミュレートするhomebridge

homebridgeはHomeKit APIをエミュレートするNodeJSサーバです。 起動すると、HomeKit対応デバイスとして、そのサーバをホームアプリに登録できるようになります。

nfarina/homebridge: HomeKit support for the impatient

ホームアプリから操作した際の動作は、homebridgeプラグインによってカスタマイズできます。 homebridge-cmdプラグインを使用すると ホームアプリの操作に対応して、任意のコマンドを実行できます。

「irMagician + Raspberry Pi + homebridge」で家電を遠隔操作

irMagicianは大宮技研さんが販売している赤外線リモコンシステムです。 低価格かつ軽量でコマンドラインからでも制御できるのが特徴です。

irMagician – 高機能/低価格赤外線リモコン | 大宮技研 合同会社

irMagicianとRaspberry Piの組み合わせは、HomeKit経由で赤外線リモコンを操作するためのミニマム構成です。 先に説明したhomebridge-cmdでirMagicianを操作して赤外線を自由に発射できます。 フレキシブル延長ケーブルを使うと、向けたい方向にirMagicianを固定できて便利です。

Amazon | エスエスエーサービス [ USB A(オス) - USB A(メス) ] フレキシブル延長ケーブル SU2-AA03FB | エスエスエーサービス | USBケーブル通販

f:id:yosuke403:20170103230320j:plain

見ての通り、irMagicianを使うと全体の構成はコンパクトで済み、かつ低価格なのでオススメです。

全体構成

今回の、宅外からApple TVを介して宅内の機器を操作する際の構成図です。

f:id:yosuke403:20170103224200p:plain

iOSバイスが宅内のWi-Fiに繋がっている場合は、iOSバイスが直接Raspberry Piにアクセスすることになります。

設定方法

irMagician + Raspberry Pi + homebridgeの設定についてはこちらの記事が参考になりました。

iOS10「ホーム」アプリと「Raspberry Pi + irMagician」でお手軽家電操作。 - Qiita

この記事ではSiriについてや、その他ハマったところを書きたいと思います。

Siriで操作するには?

ホームアプリにRaspberry Piを登録するときに名前をつける(例えば「暖房」など)と、その名前で反応するようになります。 Siriを起動し、「暖房の電源を入れて。」と命令すれば電源が入ります。

f:id:yosuke403:20170107220003p:plain

ただし、「エアコン」という名前にして「エアコンの電源を入れて。」と命令しても「エアコンは見つかりませんでした」と返されてしまいます。 おそらく、Siriではアクセサリのカテゴリ(「照明」や「エアコン」など)を指定するだけで、 そのカテゴリに対応するアクセサリが登録されていれば、そのデバイスを操作しようとするのだと思います。

この辺りにリストアップされているのが、カテゴリの名前になると思われます。 www.apple.com Accessory Category Types - HomeKit | Apple Developer Documentation

その他ハマったところ

homebridgeが見つからない

usernameを変更してみてください。 MACアドレスのように見えますが、Raspberry PiMACアドレスと合わせる必要はないようです。

{
    "bridge": {
        "name": "YourBridgeName",
        "username": "CC:22:3D:E3:CE:50", # <- ここを変更
        "port": 51826,
        "pin": "031-45-403"
    },
    # 省略
}
ログインしたのにApple TVと連携されない

f:id:yosuke403:20170104233550j:plain

Apple TVにログインしたのですが、iPhoneを4G回線に切り替えても最初は宅内の機器が見えませんでした。 いろいろ調べて、設定確認したり、ログインし直したり、再起動したりしてみたのですが結局ダメで、 一旦あきらめて次の日おもむろに起動したところ成功しました!

設定の同期タイミングの問題だったのでしょうか...。

動作の様子

実際の動作の様子です。

前半は宅外から操作するデモ(4G回線でつなげています)、後半はSiriで操作するデモになっています。

www.youtube.com

※ 使用しているエアコンはPanasonicのCS-264CF2です。 http://panasonic.jp/aircon/housing/p-db/CS-364CF2S.html

さいごに

HomeKit、思った以上に便利でした。Raspberry PiとirMagicianも使うことで夢が広がります。

一方、公式にHomeKit対応しているデバイスは少ない状況のようです。

HomeKit - すべてのアクセサリ - Apple(日本)

早くいろんな家電に対応してもらいたいですね。