Ich könnte nur einen Weg anbieten, wenn zwischen Abends 18 Uhr und morgens 8 Uhr kein weiterer Termin liegt. Aber erstmal abwarten ob einer eine Lösung hat, mit der man explizit einen Termin/Zeitraum abfragen kann.
Wenn nicht, könnte man einen Kalender einrichten, der explizit nur diese Art Morgentermine enthält und nichts anderes. Dann wäre meine Bedingung auch erfüllt.
alias: 1_test_forum_kalender
description: ""
triggers:
- trigger: time
at: "18:00:00"
conditions:
- condition: template
value_template: >-
{# True wenn es am Folgetag einen Termin um 8 Uhr gibt #}
{% set event = state_attr('calendar.google_abfall_kuno', 'start_time') |
as_datetime | as_local %}
{% set target_datetime = (now() + timedelta(days=1)).replace(hour=8,
minute=0, second=0, microsecond=0) %}
{{ event == target_datetime }}
actions:
- action: input_datetime.set_datetime
metadata: {}
data:
datetime: >-
{{ state_attr('calendar.google_abfall_kuno', 'start_time') | as_datetime
| as_local }}
target:
entity_id: input_datetime.tage_fur_ueberraschungen
mode: single
EDIT:
Beim Beantworten fiel mir ein, man könnte auch die Description mit abfragen ala
{% set suchwort = 'gelb' | lower %}
{% set event = state_attr('calendar.google_abfall_kuno', 'description') | lower %}
{{ true if suchwort in event else false}}
Wie bereits gesagt, es wird immer der nächste Termin abgefragt und ob dieser am Folgetag 8 Uhr ist. Kommt ein anderer Termineintrag dazwischen, wird der um 18 Uhr abgefragt.
Bei mir kommt eigentlich kein anderer Termin dazwischen, denn es handelt sich um einen reinen Dienstplankalender. Ich teste es später mal aus. Danke dir.
Deine Idee hat wohl zum Erfolg geführt. Ich habs noch etwas erweitert und warte nun auf das nächste Wochenende, ob es auch so funktioniert:
alias: Wecken mit Licht Kalenderabgleich
description: ""
triggers:
- trigger: time
at: "22:00:00"
conditions: []
actions:
- if:
- alias: Wenn am Wochenende 8 Uhr Theater ist
condition: and
conditions:
- condition: template
value_template: >-
{# True wenn es am Folgetag einen Termin um 8 Uhr gibt #}
{% set event = state_attr('calendar.arbeit', 'start_time') |
as_datetime | as_local %}
{% set target_datetime = (now() +
timedelta(days=1)).replace(hour=8,
minute=0, second=0, microsecond=0) %}
{{ event == target_datetime }}
alias: Wenn ein Kalendereintrag 8 Theater heißt
- condition: time
weekday:
- fri
- sat
then:
- action: input_datetime.set_datetime
metadata: {}
data:
time: "06:45:00"
target:
entity_id: input_datetime.wecken_mit_licht_zeitpunkt
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.wecken_mit_licht
else:
- if:
- condition: time
weekday:
- fri
- sat
then:
- action: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id: input_boolean.wecken_mit_licht
- if:
- condition: time
weekday:
- sun
- mon
- tue
- wed
- thu
then:
- action: input_datetime.set_datetime
metadata: {}
data:
time: "06:00:00"
target:
entity_id: input_datetime.wecken_mit_licht_zeitpunkt
- action: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.wecken_mit_licht
mode: single
Hehe, ich dachte mir das schon mit dem Aufwecken. Da ich per Homeassi keinen Zugriff auf Firmenkalender habe, stelle ich bei wichtigen Frühterminen einen “HA-Sonos-Termin” ein, sodaß ich notfalls rechtzeitig über die Ansage wach werde. Eine Automatisierung in diese Richtung finde ich besser.