Ich habe eine Automatisierung die Nachts den Partymodus beim Mähroboter zurücksetzt. Nun kann es sein, dass dieser nicht erreichbar ist. Dann bleibt die Automatisierung hängen. Das Problem habe ich gelöst indem ich explizit abfrage, ob der Mäherstatus „Kein Fehler“ ist und nur dann die Aktion ausführe.
Generell kann aber bei jeder Hardware eine vergleichbare Situation auftreten, die das Ausführen einer Aktion verhindert. Eleganter wäre es deshalb, wenn man eine Art Timeout hätte, d.h. versuche die Aktion z.B. für eine Minute und wenn es nicht klappt, mache weiter. Am besten verbunden mit einem Catch um z.B. eine Benachrichtigung zu schicken. Gibt es sowas?
PS: Ich kenne „continue_on_error: true“. Das greift hier aber leider nicht.
Ich habe zwar keine richtige Lösung für das Problem, aber ich finde es auch sehr unvorteilhaft, das eine Automatisierung einfach beendet wird wenn ein Fehler auftritt.
Ich habe bei mir diverse Automatisierungen (Ansagen) die sich immer wiederholen. Ist mein Ansage Gerät mal für eine Ansage nicht erreichbar wird die Automation beendet.
Ich habe dann die Ansage ausgelagert und lasse mit der Loop Automatisierung eine Automatisierung aufrufen die die Ansage macht, aber auch das klappt nicht 100%ig
Sieht ganz vielversprechend aus, mal sehen ob das für mich funktioniert.
So eine Einstellung erwarte ich allerdings „out of the box“.
Es gibt noch „continue_on_error: true“. Das verwende ich bei foreach-Schleifen in Automatisierungen, falls zum Beispiel grade in den Moment in dem die Automatisierung läuft eine Entität nicht verfügbar ist.
Ok, ich hatte es immer eingerückt, wenn man es direkt nach Action einfügt, kommt tatsächlich im GUI ein Icon. Mal schauen ob das funktioniert.
Schade das dafür nicht einfach ein Haken im GUI vorgesehen ist…
Bei mir greift „continue_on_error: true“ leider nicht, sondern die Automation bleibt stehen. Das Symbol wird angezeigt, ich habe es also richtig verwendet. Scheint Buggy zu sein. Die Integration „retry“ werde ich mal testen. Danke für den Tipp.
PS: Dass es bei HA kein natives Try/Catch gibt finde ich gerade im Hinblick, dass die meisten Requests über Schnittstellen nach außen gehen, echt schwach.