Nun dachte ich, dass ich meine Jalousie-Automation endlich fertig habe und dann kommt im „live-Betrieb“ dann doch wieder was Neues.
Kurz zum Hintergrund…
Ich möchte meine Jalousien zu unterschiedlichen Zeitpunkten öffnen lassen. Diese Zeitpunkte sind davon abhängig, was in meinem google-Kalender steht. Reagiert wird auf Einträge, die entweder das Wort Urlaub oder Ferien im Titel haben. Diese habe ich da als Ganztagestermin drin.
Das hat auch schon funktioniert, auch als „langer“ Termin über mehrere Tage.
Nun habe ich bemerkt, dass die Auswertung nicht funktioniert, wenn mehrere Ganztagestermine vorhanden sind und mein Triggertermin „nicht an erster Stelle“ steht.
Hier ist „an erster Stelle“ aber meine Wortwahl, da ich die Logik dahinter nicht nachvollziehen kann. Vielleicht ist es alphabetisch. Der weitere Ganztagestermin mit dem Triggerwort Urlaub wird nicht mehr überprüft. Irgendwie muss man HA dazu bekommen, dass alle Termine im definierten Kalender geprüft werden. Hat da jemand eine Idee?
Anmerkung: Ich setze einen boolean-helper auf on, um dessen Statusänderung in meiner Jalousieautomation auszuwerten.
alias: Auto Prüfung ob Urlaub oder Ferien im Kalender stehen
description: ""
triggers:
- alias: Trigger jeden Tag um 00:01 Uhr
at: "00:01:00"
trigger: time
conditions: []
actions:
- choose:
- conditions:
- alias: Prüfe, ob Urlaub ODER Ferien im Kalender stehen
condition: or
conditions:
- condition: template
value_template: >-
{{ 'Urlaub' in state_attr('calendar.mykalender',
'message') }}
alias: TRUE, wenn Urlaub im Kalender steht
- condition: template
value_template: >-
{{ 'Ferien' in state_attr('calendar.mykalender',
'message') }}
alias: TRUE, wenn Ferien im Kalender steht
sequence:
- alias: Setze Boolean-Ferien-Urlaub auf AN
data: {}
enabled: true
action: input_boolean.turn_on
target:
entity_id: input_boolean.boolean_ferien_urlaub
alias: >-
Setze Boolean-Ferien-Urlaub auf TRUE, wenn Urlaub ODER Ferien im
Kalender stehen
- conditions:
- alias: Prüfe, ob Urlaub UND Ferien NICHT im Kalender stehen
condition: and
conditions:
- condition: template
value_template: >-
{{ 'Urlaub' not in state_attr('calendar.mykalender',
'message') }}
alias: " TRUE, wenn Urlaub NICHT im Kalender steht"
- condition: template
value_template: >-
{{ 'Ferien' not in state_attr('calendar.mykalender',
'message') }}
alias: " TRUE, wenn Ferien NICHT im Kalender steht"
sequence:
- alias: Setze Boolean-Ferien-Urlaub auf AUS
data: {}
enabled: true
action: input_boolean.turn_off
target:
entity_id: input_boolean.boolean_ferien_urlaub
alias: >-
Setze Boolean-Ferien-Urlaub auf FALSE, wenn Urlaub UND Ferien NICHT im
Kalender stehen
mode: single
Versuche mal den mode:single ganz am Ende des Codes auf parallel zu stellen, dann können beide Bedingungen aus der Automatisierung gleichzeitig ablaufen.
Das Problem liegt meinem Test nach nicht in der Automation an sich.
Ich hatte einen Test, da gab es nur einen Ganztagestermin im angefragten Kalender, in dem das Wort Urlaub auftrat. Dann hat die Auswertung funktioniert. Sobald ich aber 2 Ganztagestermine im Kalender habe, einen mit dem Triggerwort und eine mit irgendwas anderem, dann wird der wichtige Eintrag nicht gefunden, bzw. nicht ausgewertet.
In meinen Augen hat das eher was mit der Abfrage des Google Kalenders als solches zu tun.
Das schaue ich mir gern an. Danke für den Tipp. Habe gerade auch noch die Google Kalender Integration überflogen. Da steht leider auch eindeutig, dass die Kalenderentität nur das erste Event verarbeitet. Das ist natürlich Mist für eine genetische Kalenderauswertung. Vielleicht hilft Dein Ansatz. Ich berichte
Ich habe das nun ohne weiter zu lesen, einfach mal ausprobiert. Die Variante führt nicht zum Erfolg. Es wirkt sogar, dass die Bedingungen gar nicht geprüft werden, da die farbliche Darstellung ganz anders ist, als wenn da message drin steht.
Die Beschreibung der Integration klingt für viele Anwendungsfälle vielversprechend. Aber die individuelle Urlaubsvariante bekomme ich da nicht unter.
Mit dem Grundthema hier will ich ja auch eine Lösung für andere Dinge schaffen, wo anhand eines individuellen Termins in einem einfachen google Kalender irgendwas passiert.
Nun habe ich es endlich. Der Trigger darf nicht sein Zeitpunkt sein, wo danach eine Entität eines Kalender abgefragt wird.
Nachdem ich mir die Doku zur Google Kalender Integration gaaanz genau durchgelesen habe und dem Hinweis gefolgt von, als Trigger calender selbst zu verwenden, funzt es.
Nun wird auf jeden neuen Termin beim Start und beim Ende dessen regiert und ein boolean entsprechend gesetzt. Das mache ich nun separat für Urlaub und Ferien. Naja, und dann gibt es eine 3.Automation, die die boolean auswertet via logischem Oder.
Schwere Geburt und doch so einfach.
Ich danke allen, die hier ihre Ideen beisteuerten.