Dank Osorkons Beispielen konnte ich die Idee umsetzen.
Für Interessierte füge ich noch ein paar Beispiele an.
Vorab: Die Zeitberechnung und Eventsteuerung erfolgt in HA.
Die Vorlaufzeit ist als log.Variable in Homey definiert. Der Wert wird bei Änderung über einen Flow per MQTT an HA gesendet.
Der Lichtschalter wird über einen virtuellen Schalter in Homey gestartet. Die Lichtsteuerung läuft dann über Flow+ChronographApp (Transition). Damit kann ich die Logik einfacher in Homey steuern.
Dieser Schalter ist über MQTT in HA eingebunden und kann damit direkt in HA geschaltet werden.
Für die Weckzeit des Lichtweckers habe ich Sensoren in HA angelegt. Die berechnen Zeit und Datum.
Wird für die Steuerung nicht benötigt. Aber damit kann ich die Zeit einfacher im HA-Dashboard anzeigen.
- platform: template
sensors:
wakeup_light_time:
friendly_name: 'Lichtwecker Uhrzeit'
value_template: >
{{ (as_timestamp(states('sensor.echo_show_wecker_next_alarm'))- states('sensor.lichtwecker_dauer')|int * 60 - 60*60*2) | timestamp_custom('%H:%M') }}
- platform: template
sensors:
wakeup_light_date:
friendly_name: 'Lichtwecker Datum'
value_template: >
{{ (as_timestamp(states('sensor.echo_show_wecker_next_alarm'))- states('sensor.lichtwecker_dauer')|int *60 - 60*60*2) | timestamp_custom('%d.%m.%Y') }}
Der Sensor sensor.lichtwecker_dauer ist ein Sensor, der von Homey per MQTT gesetzt wird, nach Änderung der log.Variable:
- platform: mqtt
state_topic: 'homey_publish/lichtwecker_dauer'
name: lichtwecker_dauer
unit_of_measurement: ''
Das Event zum Steuern des Lichts (Automation):
- id: 'wakeup light switch on'
alias: 'Lichtwecker einschalten'
trigger:
platform: template
value_template: >
{{ ( (as_timestamp(states('sensor.echo_show_wecker_next_alarm'))- states('sensor.lichtwecker_dauer')|int *60 - 60*60*2) | timestamp_custom('%H:%M') == states('sensor.time') )
and
( (as_timestamp(states('sensor.echo_show_wecker_next_alarm'))- states('sensor.lichtwecker_dauer')|int *60 - 60*60*2) | timestamp_custom('%Y-%m-%d') == states('sensor.date') )
}}
action:
service: light.turn_on
entity_id: light.lichtwecker
Damit wird der in HA per MQTT eingebundene virtuelle Lichtschalter geschaltet. Das startet den Flow zum Start der Chronograph-App.
Die simple Lösung wäre eine reine Automation in HA (mit fester Dauer, hier die 15min in der Berechnung). Das genügt, um bei Erreichen der 15min vor Alexa-Wecker das Licht anzuschalten.
- id: 'wakeup light switch on'
alias: 'Lichtwecker einschalten'
trigger:
platform: template
value_template: >
{{ ( (as_timestamp(states('sensor.echo_show_wecker_next_alarm'))- 15*60 - 60*60*2) | timestamp_custom('%H:%M') == states('sensor.time') )
and
( (as_timestamp(states('sensor.echo_show_wecker_next_alarm'))- 15*60 - 60*60*2) | timestamp_custom('%Y-%m-%d') == states('sensor.date') )
}}
action:
service: light.turn_on
entity_id: light.lichtwecker
Da Alexa die lokale Zeit als Timestamp sendet (ohne Zeitzone, z.B.: 2020-07-13T05:30:00+00:00) und HA daraufhin die Zeitzone hinzufügt, musste ich noch 2h abziehen. Hier muss ich mal schauen, ob ich das noch dynamisch mache oder manuell ändere, bis die Zeitumstellung abgeschafft ist 