Hallo zusammen,
ich habe 2 Hörmann Garagentore via PCBs und MQTT in HA eingebunden.
Nun möchte ich 3 Automatisierungen laufen lassen.
Zwei davon funktionieren einwandfrei:
Die erste checkt zu einem bestimmten Event (Uhrzeit, Sonnenuntergang) ob das linke Tor offen ist, während das rechte geschlossen ist. Wenn dem so ist, bekomme ich eine Nachricht aufs iPhone und kann per Button das linke Tor schließen → funktioniert wie gewollt.
Die zweite Automation macht das gleiche, nur rechtes Tor offen bei gleichzeitig linkem geschlossen → geht ebenfalls gut.
Die dritte soll melden, wenn beide Tore offen sind und dann sollen 3 Buttons da sein (links schließen, rechts schließen, beide schließen).
Nachricht mit den 3 Buttons auf das iPhone funktioniert, leider sind aber immer 2 von 3 Buttons ohne physische Reaktion am Tor.
Ich habe 3 Actions definiert und diese als 3 mögliche Auslöser nacheinander als „Dann-Aktion“ in der Automation. Ein echtes Ergebnis liefert aber immer nur der Button, dessen Action die erst genannte in der Kette der 3 möglichen Auslöser ist. Bei den anderen Beiden passiert mit Druck auf den Button nichts, außer dass die Meldung dann geschlossen wird. Code findet ihr anbei mit der Hoffnung, dass mir jemand sagen kann, was ich hier falsch mache…
Danke vorab!!!
ich wäre mit Warteschleifen und WaitFor Anweisungen innerhalb von Actions sehr vorsichtig und sehr sparsam. Damit kann es dir nämlich passieren, dass an einer Stelle genau auf ein spezielles Event gewartet wird und die Automation auf sonst nichts anderes mehr reagiert.
Ich würde das Ganze anders aufbauen und zunächst alles als Trigger definieren und eine ID zuweisen, was irgendeine Aktion auslösen kann. Zum Beispiel:
Trigger wenn
Zeit 19:30 => Event_ID = Event_Zeit
Sonnenaufgang => Event_ID = Event_Sonne
Nachricht vom Handy TOR_SCHLUSS_LINKS => Event_ID_Handy_Links
Nachricht vom Handy TOR_SCHLUSS_RECHTS => Event_ID_Handy_Rechts
Nachricht vom Handy TOR_SCHLUSS_BEIDE => Event_ID_Handy_Beide
und in den Sequences kannst du auf alle möglichen Signale etc auswerten.
z.B.:
Wenn Tor links offen und Tor rechts offen dann sende Nachricht…
Wenn Schließen-Befehl vom Handy und Tor Offen dann schließen…
Komme hier leider nicht so recht vorwärts. Hänge noch ganz vorne…
An welcher Stelle einer Automatisation definiere ich denn verschiedene Trigger IDs? Mein Weg ging bisher immer erstmal über die UI und dann bin ich ein wenig im yaml rumgesprungen. Hier würde ich ja alles im yaml schreiben und da fehlt mir die Erfahrung und das Wissen, wie ich dass dann formulieren muss.
Was bspw. muss ich jeweils bei sequence unter der Trigger ID schreiben?
Ich bleibe dran, nehme aber weiter gerne Hinweise zum eigentlichen Problem an.
Danke!
EDIT: sehe gerade es gibt einige Videos rund um Trigger IDs, werde mir erstmal die anschauen.
Habe jetzt einige Videos dazu angesehen und meine Automatisation neu gebaut.
Inhaltlich glaube ich, dass alles korrekt ist. Je nachdem welche Tore offen sind (links, rechts, beide) bekomme ich auch entsprechend die richtige Mitteilung auf das Handy und auch nur die Buttons, welche zu diesem Zustand passen.
Problem ist, dass egal was ich tue, keiner der Buttons am Ende dazu führt, dass eines oder beide Tore geschlossen werden.
Der Code dazu hier:
Interessant ist auch, dass die Traces zur Ausführung für mich unlogisch aussehen.
Letzter Test war: Auslösen bei Sonnenuntergang oder Uhrzeit 11:10 Uhr. Tor rechts geschlossen, Tor links offen.
Automatisation hat um 11:10 Uhr ausgelöst. Ich habe die korrekte Mitteilung bekommen, dass das linke Tor offen ist und auch nur den Button zum Schließen links, oder eben “als verstanden” quittieren.
Trotz Druck auf den Button zum Schließen des linken Tores ist nichts passiert. Laut Traces hat die Automatisation quasi an allem vorbei gearbeitet, weil der Auslöser der Automatisierung der “Buttondruck zum Schließen des linken Tores auf dem Handy” war. Die Spur geht also an allen Schritten vorbei, obwohl ja tatsächlich die nächsten Schritte ordentlich durchgearbeitet wurden, sonst hätte ich ja nicht die passende Meldung auf das Handy bekommen.
Hier mal noch der Auszug aus den Traces:
so, jetzt habe ich es ans Laufen gebracht…
Zwar vermutlich über einen Umweg aber erstmal egal…
Da ich die Smartphone Rückmeldungen zu Beginn als mögliche Auslöser definiert habe, dreht die Automatisierung jetzt jeweils eine Schleife.
In der Automatisation bekomme ich je nach Zustand der Tore jeweils verschiedene Nachrichten aufs Handy mit den Buttons zum Schließen der Tore. Die Rückmeldung über einen Button sollte theoretisch innerhalb der Automatisation dann eine Aktion (bspw. das Schließen) auslösen. Hat so nicht geklappt, denn die Rückmeldung über einen Button beim Handy hat dann nicht zur gewünschten Aktion geführt, sondern wurde für diese Automatisation als neuer Trigger gewertet. Also bricht die erste Runde ab und die Automatisation startete erneut. Das habe ich mir zur Nutze gemacht und am Ende der Automatisation einfach die “Button” Auslöser vom Handy final mit den gewünschten Aktionen verknüpft. Bedeutet innerhalb der Automatisation gebe ich per Handy Rückmeldung, was die Automatisation an dieser Stelle abbricht. Die Rückmeldung wird dann als Trigger genutzt und startet die Automatisation nochmal neu. Aufgrund der Art wie sie aufgebaut ist, führt dieser Trigger dann an den anderen Bedingungen davor vorbei und landet nur am Ende bei den Aktionen, welche durch einen dieser Trigger ausgelöst wird.
Sieht komisch aus, macht jetzt aber was es soll…Hier der Code, falls jemand sieht, an welcher Stelle es vllt. doch schlanker geht…