(内容に知見めいたことはあまりなく、自分はこうやっている、という紹介だけの記事です!)
Google Home に任意のデバイスを追加したい
Google Home は様々な家電に対応しているようだが、それ単体では既存のレガシーデバイスとの接続はできない。 私の手元には昔買った IRKit があるが、これだけだとあまりスマートな利用法にならない。
- IFTT の起動フレーズで「エアコンつけて」などと登録すると 予約語と衝突して怒られるという問題がある (ショートカットを使えば良いようだが)。最近は改善されただろうか?
- IFTTT で追加したデバイスはただのスイッチにしか見えないのがちょっぴり残念。
そこで、自宅の家電を Home Assistant の Google Assistant 拡張 と IRKit やスマートスイッチを使ってレガシーな照明やエアコンを操作するようにしてみた。 それに加えて、スクリプトによる制御も入れてみた。 これにより、
- 「エアコンつけて」「でんきつけて」で照明やエアコンを(予約語衝突の心配なしに)コントロール
- 「おはよう」ですべての照明を同時に点灯
- 「おやすみ」で、暖房のオンタイマーを翌朝 5時にセットして照明を消灯(これが地味に便利)
ということができており、かれこれ1年以上、問題なく運用している。家ではほかに Chromecast でテレビを操作したりするので Google Home の発声操作自体に抵抗はなく、非常に便利に使っている。
Home Assistant 自体は以下のようにややしょぼい見た目だが、一度設定したら開かないので気になることはない。
より具体的には、自宅サーバー (Raspberry Pi など) に Home Assistant (hass.io) を入れると、Google Home に任意の仮想的なデバイスを追加できるようになる。
メリットとしては、
- 手元のデバイスをより適切な種類の家電として Google Home に追加できるようになる
- 予約語の衝突を気にせず操作できるようになる (ショートカットも不要)
- 複数の操作の組み合わせもシェルスクリプトで書ける
などの恩恵が得られる。一方、面倒な点も多々ある:
- Home Assistant へのデバイスの登録が必要
- configuration.yaml を編集するのは少し面倒
- サーバーの https を公開するのが必要
- Let's Encrypt などを使うことになる
- Actions on Google の設定が必要
- 自分専用の Google Home のサービスプロバイダを作ることになります。 初期設定がわりと面倒なのと、しばらく放置したあと unlink すると 再リンクできなくなることがあります (ありました)
- 面倒であれば Home Assistant Cloud の有償サービスを使う?
- 実はエアコンをコマンドラインで操作する方法はないので、Home Assistant をカスタマイズする Python コードを書く必要があった
Home Assistant のインストール
色々あります. 私は Raspberry Pi に Manual installation on a Raspberry Pi の方法で入れました。
Google Assistant の設定、Actions on Google の設定
Google Assistant コンポーネントの説明ページ の First time setup を参考にセットアップ。
スマホの Google Home アプリに [test] あなたのアプリ名
が出てこれば成功。
URL などの設定を変えたら Actions on Google のページで Test を押して更新するのを忘れずに。
Home Assistant へのデバイスの追加、カスタマイズ
- 私の自宅の設定 を晒しておきます。
- エアコンをコマンドラインで操作するために カスタムコンポーネント を作りました。適当に書き散らかしてます。元は Home Assistant の他の部分のコードのコピペです。
- script も Google Home から呼べます。
- 複数の機器を同時に操作できて便利です。
こまかい話
- エアコンは Home Assistant 側から Thermostat として見えるようにしている(Google にとってのエアコンはこいつのことらしい)。
- 私の場合、IRKit の設定がかなり原始的なので結構手間がかかってしまったが、もっと賢いリモコンであれば簡単にできるのかもしれない。
- (一応 もっと多機能な学習リモコン も世の中にはある)