我が家では「OK Google、電気つけて」でリビングの電気がONになるよう設定している。しかし3日前くらいから動きがおかしくなった。リビングだけでなく家中全部の電気がONにされてしまう。
「はい。」じゃないんだよ。12個のデバイスを一挙にONするとかどんな家だ。サタデーナイトフィーバーやってんのか。
画面だけの問題ではなく実際の家電操作もおかしくなる。リビングの電気をつけようとしただけなのに、なぜか書斎も寝室も家中すべてがONになるという動きをする。
結論、どういった問題なのか?
問題の根幹はこうである:
「電気つけて」を「アカウントに登録されているあらゆる照明をすべてをONにせよ」と解釈する仕様変更が、Google側でサイレントに実施された。
これは控えめに言っても頭のおかしい挙動だ。
判定基準がデバイス名だけというガバガバさが一番の問題である。単純に当たり判定が広すぎる。これのせいで自宅と職場の電気が一度に点くような人も出てくることだろう。
いろいろ実験してわかった挙動
- 「電気つけて」の当たり判定がめちゃめちゃ広くなった
- 名前に〝照明を意味する単語〟が含まれるデバイスは全て当たり判定にかかる
- 最初のスクショでも「◯◯の電気」と「ダウンライト」がまとめてONにされていることがわかる
- 試した限りでも「電気」「ライト」「照明」「光」「明かり」はすべて効果範囲だった。まだあるかもしれない
- 「電気」がダメなら「明かり」を使おう! が塞がれている感じ
- 「光」や「明かり」まで対象にされてるのには偏執的なものを感じるけど、実際はたぶんなんも考えずに "light" を訳しただけとかでしょ
- デバイス名の判定は部分一致でされる
- 「リビングの電気」「寝室の電気」という2つのデバイスがあるとき、「電気つけて」で2つまとめてONにされる
- 何のためにデバイス分けてると思ってるの???
- 寝室に寝ている家族がいるかも? とか考えないらしい
- エイリアス名だけに「電気」を含む場合もばっちり対象である
- 判定をすり抜けるワードもあるにはあるが、実用性がきびしい
- 「でんき」「らいと」……これらは効果範囲外だが、音声入力できないので使えない
- 「ピカピカ」……すごく愉快なおうちになってしまう。ごはんのピカピカつけて!
- Home Assistant内部のエントリ名は ***_light とかになってても平気
- Home Assistant内部の値はGoogle側に公開されていないため、無関係だから
- あくまでGoogle Home側に露出しているデバイス名だけが問題になる
- Google Homeにはデバイスカテゴリみたいな概念があるが、今回は無視してくる
- カテゴリの例:照明、エアコン、換気扇、単純なスイッチ、など
- しかし今回はとにかくデバイス名しか見ないという雑実装である
- デバイス種別が照明じゃなくても普通に対象になる
- 照明カテゴリのデバイスをスイッチカテゴリに移動しても、名前に「電気」が含まれれば照明扱いで誤爆されることに
- 以前はこの方法で回避できたが、今回塞がれた形
問題解決のために試してダメだったこと
Home Assistant側の設定でスイッチをサイレンに見せかけることができるので試してみた。「これは照明じゃないですよー! 違いますからねー!」の空気を出してみるというわけだ。
※公式リファレンスで "Change device type of a switch" とか "Switch as X" とか呼ばれている機能のこと。以下のようにGUIで設定できる。
結果、この方法ではダメだった。
サイレンカテゴリのデバイスがGoogle Home側から操作できなかったためである。もしかして exposed_domains にsirenを追加すれば操作可能になったかもしれないのだが、このときにはそこまで思いつけなかった。
ちなみにうまく行った場合でも、ON/OFFと鳴/停の状態マッピングが若干面倒だったりするらしい。
解決できた方法
ステップ1:デバイス名から「電気」「照明」「ライト」などのワードを一切消す
このとき「電気」の代わりになるワード(「ピカピカ」みたいなやつ)は特に設定しない。「ピカピカつけて」で全部屋の照明ONになる事故が起きそうで怖いので。
結果、これまで「◯◯の電気」「△△ライト」と名付けていたデバイスは、名前が単純化され「◯◯」「△△」となる。
- 例:「食卓の電気つけて」→「食卓つけて」
- 例:「ダウンライトつけて」→「ダイニングつけて」
※厳密に言えば、「電気」という名前のデバイス名であっても、アカウントあたり1つまでなら不具合を起こさずに使うことができる。
ステップ2:Google Homeアプリ上で、デバイスの設置場所を全部「地下室」に変更する
- 今後は寝室の電気をつける目的で「寝室つけて」と指示することになる
- すると寝室に設置された他のデバイス(エアコンとか)が間違ってONにされるリスクがある
- 今は大丈夫でも今後またガバ判定が実装されないとも限らない
- なので、実際の設置場所にかかわらず全てのデバイスを地下室に配置しておき、誤動作を防ぐ
具体的にはこのように設定し、
こんなふうになります。
おわり
これ解決方法というよりはただの回避方法だね。
Google Homeは前からサイレント仕様変更がきつくて利用者の自由がないと思っていたけれど、いよいよ運用が辛い物体になってしまっている。
ちなみに今回はRedditを検索しても1年前とかのスレッドしか出てこなくて、ここ数日の新たな不具合については言及がなさそうに見えた。
コメント