ホーム アシスタントでオートメーションを作成すると、必ずしも期待どおりに動作するとは限りません。場合によっては、意図したとおりに 1 回トリガーするのではなく、オートメーションが立て続けに複数回起動されることがあります。このようなことが起こった場合、それを解決する非常に簡単な方法がいくつかあります。
オートメーションが繰り返しトリガーされるのを防ぐ最も簡単な方法の 1 つは、適切なオートメーション モードを使用していることを確認することです。ホーム アシスタントには、すべてのアクションが完了する前にオートメーションが再度トリガーされたときにオートメーションが動作する 4 つの異なる方法が含まれています。
デフォルトの「シングル」モードでは、オートメーションが実行中に複数回トリガーされても、新たな実行は開始されません。代わりに、他の 3 つのオプションのいずれかを使用することを選択できます。
「再起動」すると、現在の実行が直ちに停止され、新しい実行が開始されます。 「キューに登録」すると、現在の実行が完了し、最初の完全な実行が完了した後でのみ、次のトリガーによる実行が開始されます。 「Parallel」では、最初の実行が完了するまで継続されている間に、まったく新しい実行が開始されます。
これらのオートメーション モードは、オートメーションの実行中にのみ適用されます。完了すると、オートメーションの再起動を停止することはありません。

このシンプルなアプローチを使用して、家の周りで自動化できるものを特定します
オートメーションが起動し続ける一般的な理由の 1 つは、オートメーションをトリガーするセンサーが、しきい値として使用されている値の周囲をホバリングし続けるか、2 つの状態の間を急速に行き来することです。たとえば、接触センサーによってトリガーされるオートメーションがある場合、ドアが閉まるとセンサーが開いた状態と閉じた状態の間で頻繁に変動し、オートメーションが繰り返しトリガーされることがあります。
デバウンスとは、信号内の不要な変動を除去するプロセスであり、ホーム アシスタントで状態ベースのトリガーの「for」オプションを使用することでこれを実現できます。これにより、トリガーが特定の継続期間にわたって検出された場合にのみ自動化が実行されるようにすることができます。たとえば、接触センサーを使用する場合、センサーが少なくとも 2 秒間「閉じた」状態にある場合にのみ自動化を実行することができます。
ヒステリシスは、センサーがキー値の周囲を移動し続けるときにオートメーションが繰り返しトリガーされるのを防ぐもう 1 つの便利な方法です。コンセプトはシンプルです。オートメーションのオンとオフの両方を切り替える 1 つのしきい値を設定するのではなく、少し離れた 2 つのしきい値を設定します。センサーが最高値に達すると自動化がトリガーされ、センサーが最低値を下回るまでオートメーションは再びオフになりません。その間にアクションが実行されないバッファーが残ります。
オートメーションでヒステリシスを使用する最も簡単な方法の 1 つは、しきい値ヘルパーを使用することです。トリガーとして使用する入力センサーを指定し、上限および/または下限を設定し、ヒステリシス値 (しきい値センサーの状態が変化する前に、入力センサー値がしきい値から離れていなければならない距離) を指定します。
たとえば、上限が 20 でヒステリシス値が 1 の温度センサーの場合、センサーは温度が 21 を超えるとオンになり、温度が 19 を下回るとオフになります。その後、センサーから直接取得した値の代わりに、このセンサーを使用して自動化をトリガーできます。
オートメーションが頻繁に実行されないようにするためのもう 1 つのシンプルだが効果的な方法は、クールダウン タイマーを使用することです。オートメーションに時間制限を追加して、設定した時間が経過するまでオートメーションが再度起動しないようにします。
これを実現するには、いくつかの方法があります。オートメーションがデフォルトの「シングル」モードに設定されている場合は、オートメーションの最後に「遅延」アクションを追加できます。これにより、遅延タイマーが終了するまでオートメーションが実行され続けます。また、「シングル」モードを使用すると、最初の実行が完了するまでオートメーションは再度起動されません。
欠点は、これにより自動化がバックグラウンドで実行され続けることになり、理想的ではありません。より賢いオプションは、自動化が最後にトリガーされた時間に基づいたテンプレート条件を使用することです。
現在の時刻と「last_triggered」時刻の間の時間差を見つけるテンプレート条件を作成します。この時間差がテンプレートに追加したしきい値を下回る場合、自動化は実行されません。このタイプのテンプレート条件の例は次のとおりです。
{ default(as_datetime(0), true))) > timedelta(minutes=5) } これにより、過去 5 分間に自動化が実行されなかった場合にのみ、自動化の実行が許可されます。の default(as_datetime(0), true) の値がない場合でもオートメーションが実行されることを保証する部分です。 last_triggeredオートメーションがこれまでに実行されたことがない場合など。

スマートホームがあると、今でも時々魔法使いのような気分になります。
センサーがホーム アシスタントとの接続を失う場合があります。センサーがオンになったときにトリガーされるオートメーションがある場合、センサーが再接続され、状態が「使用不可」または「不明」から再び「オン」に変わるたびにオートメーションが起動し続ける可能性があります。
多くの場合、「開始」状態と「終了」状態の両方を含むトリガーを作成することで、この問題を解決できます。たとえば、センサーの状態が「オフ」から「オン」に変化したときがトリガーになる場合があります。これにより、オートメーションは「立ち上がりエッジ」でのみ起動し、状態が「不明」から「オン」に変化したときは起動しないことが保証されます。
自動化が望まない場合でも起動し続ける理由は数多くあります。これを解決する最善の方法は、原因を理解することです。そうすれば、必要なときにのみオートメーションが起動されるようにする適切なソリューションを見つけることができます。