ha:raderbroich:installation:automationen_system
Inhaltsverzeichnis
Automationen – Code: System
← zurück zur Automationen-Übersicht
Stand: 25.09.2026. YAML wie in HA unter ⋮ → „In YAML bearbeiten“.
System: Alarmstatus nach Neustart wiederherstellen
id: "1790141729317" alias: "System: Alarmstatus nach Neustart wiederherstellen" description: Liest nach einem Neustart den echten Status der Homematic-Alarmanlage aus und setzt den Dashboard-Helfer. triggers: - trigger: homeassistant event: start conditions: [] actions: - action: input_select.select_option target: entity_id: input_select.alarmstatus data: option: |- {% set current = states('alarm_control_panel.hmip_raderbroich_hmip_alarm_control_panel') %} {% set state_map = { 'armed_away': 'Scharf', 'armed': 'Scharf', 'armed_home': 'Hüllenschutz', 'armed_night': 'Hüllenschutz', 'disarmed': 'Unscharf', 'triggered': 'Ausgelöst' } %} {{ state_map.get(current, 'Unscharf') }} mode: single
System: FRITZ!Box täglich neu starten
id: "1790311930180" alias: "System: FRITZ!Box täglich neu starten" description: >- Startet die FRITZ!Box 6591 Cable in Korschenbroich jeden Tag um 00:15 Uhr über die AVM-FRITZ!Box-Tools-Integration neu. triggers: - trigger: time at: "00:15:00" actions: - action: button.press target: entity_id: button.fritz_box_6591_cable_neu_starten mode: single
System: HA-Lebenszeichen und Ausfallerkennung
id: "1790314999636" alias: "System: HA-Lebenszeichen und Ausfallerkennung" description: >- Schreibt jede Minute ein Lebenszeichen in input_datetime.ha_lebenszeichen. Liegt das letzte Lebenszeichen mehr als 15 Minuten zurück (HA war aus/abgestürzt/stromlos), werden Beginn und Ende des Ausfalls gespeichert und input_boolean.stoerung_ha_offline eingeschaltet (bleibt an bis zur Bestätigung). Die Erkennung erfolgt beim ersten Lebenszeichen nach dem Neustart, dadurch keine Race-Condition beim Start. triggers: - trigger: time_pattern minutes: /1 variables: letzt: "{{ state_attr('input_datetime.ha_lebenszeichen', 'timestamp') | float(0) }}" jetzt: "{{ as_timestamp(now()) | int }}" ausfall: "{{ letzt > 0 and (jetzt - letzt) > 900 }}" actions: - action: input_datetime.set_datetime target: entity_id: input_datetime.ha_lebenszeichen data: timestamp: "{{ jetzt }}" - if: - condition: template value_template: "{{ ausfall }}" then: - action: input_datetime.set_datetime target: entity_id: input_datetime.ha_ausfall_beginn data: timestamp: "{{ letzt | int }}" - action: input_datetime.set_datetime target: entity_id: input_datetime.ha_ausfall_ende data: timestamp: "{{ jetzt }}" - action: input_boolean.turn_on target: entity_id: input_boolean.stoerung_ha_offline mode: single
System: Internet-Ausfall überwachen
id: "1790315008251" alias: "System: Internet-Ausfall überwachen" description: >- Ist die FRITZ!Box-Internetverbindung länger als 15 Minuten weg (aus oder nicht verfügbar), wird der Beginn gespeichert und input_boolean.internet_ausfall_laeuft eingeschaltet (Dashboard zeigt "Internet ist weg"). Kommt die Verbindung zurück, wird das Ende gespeichert und internet_ausfall_laeuft ausgeschaltet – das löst Protokolleintrag und Benachrichtigung aus, weil Push/Telegram erst dann wieder zugestellt werden können. triggers: - trigger: state entity_id: binary_sensor.fritz_box_6591_cable_verbindung to: - "off" - unavailable for: minutes: 15 id: weg - trigger: state entity_id: binary_sensor.fritz_box_6591_cable_verbindung to: "on" id: zurueck actions: - choose: - conditions: - condition: trigger id: weg sequence: - action: input_datetime.set_datetime target: entity_id: input_datetime.internet_ausfall_beginn data: timestamp: "{{ as_timestamp(trigger.to_state.last_changed) | int }}" - action: input_boolean.turn_on target: entity_id: - input_boolean.internet_ausfall_laeuft - conditions: - condition: trigger id: zurueck - condition: state entity_id: input_boolean.internet_ausfall_laeuft state: "on" sequence: - action: input_datetime.set_datetime target: entity_id: input_datetime.internet_ausfall_ende data: timestamp: "{{ as_timestamp(now()) | int }}" - action: input_boolean.turn_off target: entity_id: input_boolean.internet_ausfall_laeuft mode: queued
System: Startmeldung per Telegram
id: "1790237790652" alias: "System: Startmeldung per Telegram" description: >- Sendet nach jedem Start von Home Assistant genau eine Telegram-Nachricht mit Alarmzustand, offenen Türen und leeren Batterien. Beendet danach die Startphase. triggers: - trigger: homeassistant event: start conditions: [] actions: - action: input_boolean.turn_on target: entity_id: input_boolean.system_startphase - delay: minutes: 2 - variables: alarm_map: armed_away: Scharf armed_home: Hüllenschutz armed_night: Hüllenschutz arming: Wird scharf geschaltet disarmed: Unscharf pending: Verzögerung triggered: AUSGELÖST alarm_raw: "{{ states('alarm_control_panel.hmip_raderbroich_hmip_alarm_control_panel') }}" alarm_text: "{{ alarm_map.get(alarm_raw, alarm_raw) }}" leere_batterien: >- {{ states.binary_sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', 'battery') | selectattr('state', 'eq', 'on') | list | count }} offene_tueren: >- {{ states.binary_sensor | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'in', ['door', 'window', 'opening', 'garage_door']) | selectattr('state', 'eq', 'on') | list | count }} - action: script.telegram_universal_versand data: message: |- 🔄 *Home Assistant gestartet* 🔒 Alarmzustand: *{{ alarm_text }}* 🚪 Offene Türen: *{{ offene_tueren }}* 🔋 Leere Batterien: *{{ leere_batterien }}* - action: input_boolean.turn_off target: entity_id: input_boolean.system_startphase mode: single
System: Störungsmeldung HA/Internet senden
id: "1790315026098" alias: "System: Störungsmeldung HA/Internet senden" description: >- Wenn Home Assistant länger als 15 Minuten aus war (input_boolean.stoerung_ha_offline wird von der Lebenszeichen-Automation eingeschaltet) oder das Internet länger als 15 Minuten weg war (nach Wiederkehr, input_boolean.internet_ausfall_laeuft geht aus): legt einen offenen Eintrag im Störungsprotokoll (todo.storungsprotokoll) an, sendet Telegram an Norbert und Ute (Skript) und Push mit Bestätigen-Knopf an Norberts iPhone. Danach wird input_boolean.stoerung_ha_offline wieder ausgeschaltet, damit der nächste Ausfall erneut auslöst. 1 Minute Wartezeit, damit Netzwerk/Telegram nach Neustart bereit sind. triggers: - trigger: state entity_id: input_boolean.stoerung_ha_offline from: "off" to: "on" for: minutes: 1 id: ha - trigger: state entity_id: input_boolean.internet_ausfall_laeuft from: "on" to: "off" for: minutes: 1 id: internet variables: b: "{{ state_attr('input_datetime.ha_ausfall_beginn' if trigger.id == 'ha' else 'input_datetime.internet_ausfall_beginn', 'timestamp') | float(0) }}" e: "{{ state_attr('input_datetime.ha_ausfall_ende' if trigger.id == 'ha' else 'input_datetime.internet_ausfall_ende', 'timestamp') | float(0) }}" zeitraum: >- {% set m = ((e - b) / 60) | round(0) | int %}{{ b | timestamp_custom('%d.%m. %H:%M') }} – {{ e | timestamp_custom('%H:%M') }} Uhr ({{ (m // 60) ~ ' h ' ~ (m % 60) ~ ' min' if m >= 60 else m ~ ' min' }}) titel: "{{ '🏠 Home Assistant war offline' if trigger.id == 'ha' else '🌐 Internet war weg' }}" kurz: "{{ '🏠 HA offline' if trigger.id == 'ha' else '🌐 Internet weg' }}" actions: - action: todo.add_item continue_on_error: true target: entity_id: todo.storungsprotokoll data: item: "{{ kurz }} · {{ zeitraum }}" description: Offen – noch nicht zur Kenntnis genommen - action: script.telegram_universal_versand continue_on_error: true data: message: |- *{{ titel }}* {{ zeitraum }} Bitte im Dashboard zur Kenntnis nehmen. parse_mode: markdown - action: notify.mobile_app_iphone_von_norbert continue_on_error: true data: title: "{{ titel }}" message: "{{ zeitraum }}" data: tag: STOERUNG actions: - action: STOERUNG_OK title: Kenntnis genommen - action: input_boolean.turn_off target: entity_id: input_boolean.stoerung_ha_offline mode: queued
System: Störungsmeldung per Push zur Kenntnis nehmen
id: "1790315033773" alias: "System: Störungsmeldung per Push zur Kenntnis nehmen" description: >- Wird in der iPhone-Push der Knopf 'Kenntnis genommen' getippt, werden alle offenen Einträge im Störungsprotokoll (todo.storungsprotokoll) abgehakt und mit Name + Zeitpunkt der Kenntnisnahme versehen. Danach wird die Mitteilung vom iPhone entfernt. (Kenntnisnahme im Dashboard per Häkchen wird von 'System: Störungsprotokoll Kenntnisnahme erfassen' erledigt.) triggers: - trigger: event event_type: mobile_app_notification_action event_data: action: STOERUNG_OK variables: benutzer: >- {% set uid = trigger.event.context.user_id %}{% set p = states.person | selectattr('attributes.user_id', 'eq', uid) | map(attribute='name') | list %}{{ (p[0] if uid and p | count > 0 else 'Norbert') ~ ' (iPhone)' }} actions: - action: todo.get_items target: entity_id: todo.storungsprotokoll data: status: needs_action response_variable: liste - repeat: for_each: "{{ liste['todo.storungsprotokoll']['items'] | map(attribute='uid') | list }}" sequence: - action: todo.update_item target: entity_id: todo.storungsprotokoll data: item: "{{ repeat.item }}" status: completed description: "✔ Kenntnis genommen von {{ benutzer }} am {{ now().strftime('%d.%m.%Y %H:%M') }} Uhr" - action: notify.mobile_app_iphone_von_norbert continue_on_error: true data: message: clear_notification data: tag: STOERUNG mode: queued
System: Störungsprotokoll Kenntnisnahme erfassen
id: "1790315899760" alias: "System: Störungsprotokoll Kenntnisnahme erfassen" description: >- Wenn im Störungsprotokoll (todo.storungsprotokoll) ein Ereignis abgehakt wird, wird in dessen Beschreibung eingetragen, wer (HA-Benutzer → Person) und wann es zur Kenntnis genommen hat. Wird ein Haken wieder entfernt, wird die Beschreibung auf 'Offen' zurückgesetzt. triggers: - trigger: state entity_id: todo.storungsprotokoll not_from: - unavailable - unknown not_to: - unavailable - unknown variables: benutzer: >- {% set uid = trigger.to_state.context.user_id %}{% set p = states.person | selectattr('attributes.user_id', 'eq', uid) | map(attribute='name') | list %}{{ p[0] if uid and p | count > 0 else 'Home Assistant' }} actions: - action: todo.get_items target: entity_id: todo.storungsprotokoll data: status: - completed - needs_action response_variable: liste - variables: neu_bestaetigt: >- {% set ns = namespace(l=[]) %}{% for i in liste['todo.storungsprotokoll']['items'] if i.status == 'completed' and not (i.description | default('', true)).startswith('✔') %}{% set ns.l = ns.l + [i.uid] %}{% endfor %}{{ ns.l }} wieder_offen: >- {% set ns = namespace(l=[]) %}{% for i in liste['todo.storungsprotokoll']['items'] if i.status == 'needs_action' and (i.description | default('', true)).startswith('✔') %}{% set ns.l = ns.l + [i.uid] %}{% endfor %}{{ ns.l }} - repeat: for_each: "{{ neu_bestaetigt }}" sequence: - action: todo.update_item target: entity_id: todo.storungsprotokoll data: item: "{{ repeat.item }}" description: "✔ Kenntnis genommen von {{ benutzer }} am {{ now().strftime('%d.%m.%Y %H:%M') }} Uhr" - repeat: for_each: "{{ wieder_offen }}" sequence: - action: todo.update_item target: entity_id: todo.storungsprotokoll data: item: "{{ repeat.item }}" description: Offen – noch nicht zur Kenntnis genommen mode: queued
System: Täglicher Neustart
id: "1790237785284" alias: "System: Täglicher Neustart" description: >- Startet das komplette Home-Assistant-System (Host-Reboot) zur Uhrzeit aus input_datetime.system_neustart_uhrzeit neu. triggers: - trigger: time at: input_datetime.system_neustart_uhrzeit conditions: [] actions: - action: hassio.host_reboot data: {} mode: single
ha/raderbroich/installation/automationen_system.txt · Zuletzt geändert: von nbadm
