ホーム.appとEveで、オートメーションの一覧を見比べたら、数がまったく違いました。ホーム.appでは17個なのに、Eveでは107個もありました。調べてみると、その多くは、昔テストしたときの「残骸」でした。この記事では、残骸がどうしてできるのかを実験で確かめた結果と、掃除の方法を紹介します。
用語は、前回の記事と同じく、オートメーション、イベント、条件、アクションセットを使います。
ホーム.appとEveで、オートメーションの数が違う
ホーム.app(下図の左)とEva(右)が表示する、私の家のオートメーションの数は、停止中も含めて、それぞれ17個と101個です。大きく違います。

違いの一つ目は、スイッチ(ボタン)のオートメーションです。ホーム.appでは、スイッチを押したときの動作を、スイッチの設定画面で割り当てます。オートメーションの一覧には表示されません。しかし内部では、「スイッチが押された」をイベントとする、普通のオートメーションとして登録されています。Eveでは、これがすべてルールとして表示されます。
スイッチは、1回押し、2回押し、長押しのそれぞれにオートメーションができます。ボタンが2つあるスイッチなら、その2倍です。一覧に全部出すと煩雑になるので、ホーム.appでは別扱いにしているのだと思います。
それでも数が多すぎるので、Eveで一つずつ開いてみました。すると、イベントが「なし」になっているルールが大量に見つかりました。昔テストに使って、もう使っていないアクセサリのオートメーションです。

例えば、上の右図のリスト下部にある「cube」をイベントとするオートメーションは、昔、AqaraのMagic Cubeをテストする時に作ったものです。本体はずっと前に、HomeKitから削除してあります。
イベントが無いので、実行されることはありません。いわば残骸です。そこで、残骸がどうしてできるのかを調べることにしました。
実験:アクセサリを削除するとどうなるか
残骸になったオートメーションは、どうやら削除したアクセサリで定義していたオートメーションのようです。そこで、残骸ができる様子を、実際に調べることにしました。
Homebridgeが関わると、HomeKitの問題なのかHomebridgeの問題なのか区別しにくくなります。そこで、HomeKitに直接つながるMatterのアクセサリで試しました。
イベントに使っていたアクセサリを削除する
IKEAのMatterスイッチBILRESAをHomeKitに追加し、ホーム.appで、ボタンに電球のOn/Offを割り当てました。

結果は次のとおりです。
- ボタンの1, 2にそれぞれ動作を割り当てると、すぐにEveにオートメーション(Eveの用語ではルール)として現れました。

- ホーム.appで割り当てを消すと、Eveからも消えました。ここまでは問題ありません。
- 割り当てを残したまま、ホーム.appからスイッチを削除すると、オートメーションはEveに残りました。よく見ると、ボタンのアイコンが消えて、三角形のアイコンに変わってます。

中を見ると、イベント(Eveの用語ではトリガ)が「なし」になっています。これが残骸です。

- スイッチをペアリングし直して、同じ割り当てをすると、古い残骸はそのまま残り、名前の末尾に「2」が付いた新しいルールが追加されました。ボタンアイコンが新しいオートメーションで、三角形のアイコンが古い残骸です。

人感センサーMYGGSPRAYでも試しました。人を検知したときのオートメーションを作ってから、センサーを削除すると、同じように残骸が残りました。このとき、ホーム.appのオートメーション一覧からは消えますが、Eveには残っています。ホーム.appからは見えない残骸があるわけです。
条件に使っていたアクセサリを削除する
次に、条件に使っていたアクセサリを削除する実験をしました。このために、先の記事で使ったシンプルな警報器オートメーションを再度作りました。以下です。
- イベント:人感センサーが人を検知したときに、
- 条件:電球がOnならば、
- アクションセット:スマートプラグをOnにする。
ホーム.appには、以下のようなオートメーションとして表示されました。

Eveで見ると、以下のように、イベントにセンサーがと、条件に電球が割り当てられていることがわかります。

そして、このオートメーションを残したまま、条件に使っている電球を、HomeKitから削除しました。

結果、オートメーションはホーム.appにもEveにも残りました。ただし、Eveで中を見ると、条件が消えていました(「不明」と表示されることもありました)。そして、人を検知すると、電球の状態とは関係なく、スマートプラグがOnになりました。条件が無くなり、無条件で実行されるようになったのです。
分かったこと
HomeKitでは、アクセサリを削除すると、そのアクセサリを参照していたイベントや条件だけが取り除かれ、オートメーション自体は残ります。その結果、
- イベントに使っていたアクセサリを削除した場合:イベントが無くなり、二度と実行されない残骸になります。イベントが無いので、実行される事はなく、実害はありません。
- 条件に使っていたアクセサリを削除した場合:条件が無くなり、無条件で実行されるようになります。こちらは要注意です。
前回の記事の警報器オートメーションでいえば、「警戒中ランプ」を交換したり、ペアリングし直したりすると、警戒中かどうかに関係なく、人を検知するたびに警報ブザーが鳴るようになります。アクセサリを追加し直しても、条件は元に戻りません。警告も出ないので、気付きにくいです。
なお、どちらもHomebridgeを使わないMatterのアクセサリで起きたので、HomeKit自体の挙動です。
残骸の掃除と予防
掃除:Eveのルール一覧で、アイコンが三角形のルールを開き、トリガ(イベント)が「なし」になっていれば、残骸です。削除して問題ありません。実際に削除してみましたが、他のオートメーションは問題なく動き続けました。ただし、三角形のアイコンは、トリガが複数あるルールにも使われるので、必ず中を開いて確認してから削除してください。

予防:アクセサリを削除したり、交換したり、ペアリングし直したりする前に、そのアクセサリをイベントや条件に使っているオートメーションを、先に削除または修正しておくのが確実です。特に、条件に使っているアクセサリは、無条件で実行されるようになるので注意が必要です。
まとめ
ホーム.appとEveでオートメーションの数が違ったのは、ホーム.appがスイッチのオートメーションと、アクセサリを削除した後の残骸を表示していないためでした。
イベントの残骸は実害がありませんが、溜まると一覧が見にくくなります。また、ホームハブが管理するデータ量が増えるので、動作や同期に時間がかかる可能性もあります。時々Eveで調べて、掃除するのが良いと思います。一方、条件に使っていたアクセサリを削除すると、オートメーションが無条件で動くようになるので、アクセサリを削除する前には、関係するオートメーションを確認しておきましょう。




コメント