- id: alarm_play_loop alias: Alarm - play loop description: Alarm Widergabe mode: single triggers: - trigger: event event_type: timer.finished event_data: entity_id: timer.alarm_indoor - trigger: state entity_id: input_boolean.alarm_indoor from: 'off' to: 'on' conditions: - condition: state entity_id: input_boolean.alarm_indoor state: 'on' actions: - action: script.alarm_play - action: timer.start data: duration: 0:00:05 target: entity_id: timer.alarm_indoor - id: alarm_play_stop alias: Alarm - play stop description: Alarm stoppen mode: single triggers: - trigger: state entity_id: input_boolean.alarm_indoor from: 'on' to: 'off' actions: - action: switch.turn_off target: entity_id: switch.garage_siren_on_event - action: timer.finish target: entity_id: timer.alarm_indoor - action: media_player.media_stop target: entity_id: media_player.home_group - action: homeassistant.turn_off target: entity_id: script.alarm_play - action: media_player.volume_set target: entity_id: media_player.home_group data: volume_level: 0.2 - id: alarm_notify alias: Alarm - Notify mode: parallel triggers: - trigger: state entity_id: input_boolean.alarm_indoor from: 'off' to: 'on' actions: - alias: Repeat a few times repeat: count: 4 sequence: - action: notify.telegram_schick_home data: title: 🚨👮🆘 Alarm aufgelöst!!! message: Etwas passiert!!! - delay: 00:00:05 - id: telegram_alarm alias: Telegram - Alarm toggle mode: parallel triggers: - trigger: event event_type: telegram_command event_data: command: /alarm - trigger: event event_type: telegram_callback event_data: command: /alarm actions: - action: switch.toggle data: entity_id: switch.alarm_play - wait_for_trigger: - trigger: state entity_id: switch.alarm_play timeout: 5 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.user_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 🚨 {{ state_attr('switch.alarm_play', 'friendly_name') }} - {{ states('switch.alarm_play') }} - id: tasmota_state_on_startup alias: Tasmota - Power state on HA startup triggers: - event: start trigger: homeassistant actions: - action: mqtt.publish data: payload: '1' topic: sonoffs/cmnd/state - action: mqtt.publish data: payload: '1' topic: sonoffs/tele/STATE - id: rolladen_auf alias: Rolladen - Auf description: '' triggers: - event: sunrise offset: 03:00:00 trigger: sun conditions: [] actions: - data: entity_id: cover.rolladen position: 100 action: cover.set_cover_position - data: message: Rolladen geöffnet title: 🔼 Rolladen action: notify.telegram_schick_home mode: single - id: rolladen_zu alias: Rolladen - Zu description: '' triggers: - event: sunset offset: 01:30:00 trigger: sun conditions: [] actions: - data: entity_id: cover.rolladen position: 0 action: cover.set_cover_position - data: message: Rolladen geschlossen title: 🔽 Rolladen action: notify.telegram_schick_home mode: single - id: garagenlicht_einschalten alias: Garage - Licht einschalten description: Garagenlicht einschalten nach der Sonnenunregang oder wenn es dunkel ist triggers: - type: value trigger: device device_id: db8b13c767d84865a607aca77975a221 entity_id: sensor.torposition domain: sensor above: 40 for: hours: 0 minutes: 0 seconds: 5 milliseconds: 0 conditions: - condition: or conditions: - condition: sun before: sunrise before_offset: 00:15:00 - condition: sun after: sunset after_offset: -00:15:00 actions: - type: turn_on device_id: 63713a671de1472e84d5832bcb399f0e entity_id: light.sonoffbnsz01 domain: light brightness_pct: 95 - delay: hours: 0 minutes: 10 seconds: 0 milliseconds: 0 - type: turn_off device_id: 63713a671de1472e84d5832bcb399f0e entity_id: light.sonoffbnsz01 domain: light mode: restart - id: garagenlicht_ausschalten alias: Garage - Licht ausschalten description: Garagenlicht ausschalten wenn das Garagentor geschlossen wurde triggers: - trigger: state entity_id: - binary_sensor.tor_ist_geschlossen to: 'on' for: hours: 0 minutes: 0 seconds: 5 - trigger: state entity_id: input_boolean.torteil to: 'on' for: hours: 0 minutes: 0 seconds: 5 conditions: [] actions: - type: turn_off device_id: 63713a671de1472e84d5832bcb399f0e entity_id: light.sonoffbnsz01 domain: light mode: restart - id: camera_garage_richtung alias: Camera - Garage Richtung description: Направление камеры в зависимости от положения гаражных ворот triggers: - type: value trigger: device device_id: db8b13c767d84865a607aca77975a221 entity_id: sensor.torposition domain: sensor above: 30 for: hours: 0 minutes: 0 seconds: 5 - type: value trigger: device device_id: db8b13c767d84865a607aca77975a221 entity_id: sensor.torposition domain: sensor below: 20 for: hours: 0 minutes: 0 seconds: 5 - trigger: state entity_id: - binary_sensor.tor_ist_geschlossen to: 'on' for: hours: 0 minutes: 0 seconds: 3 - trigger: state entity_id: input_boolean.torteil to: 'on' for: hours: 0 minutes: 0 seconds: 5 conditions: [] actions: - choose: - conditions: - type: is_value condition: device device_id: db8b13c767d84865a607aca77975a221 entity_id: sensor.torposition domain: sensor above: 30 sequence: - action: select.select_option data: option: Tor target: entity_id: select.garage_ptz_preset - conditions: - type: is_value condition: device device_id: db8b13c767d84865a607aca77975a221 entity_id: sensor.tor_distanz domain: sensor below: 20 sequence: - action: select.select_option data: option: Tuer target: entity_id: select.garage_ptz_preset - delay: hours: 0 minutes: 0 seconds: 30 milliseconds: 0 - action: select.select_option data: option: Tuer target: entity_id: select.garage_ptz_preset default: [] mode: restart - id: '1661601350027' alias: Считана метка Red description: '' triggers: - trigger: tag tag_id: 4d4d9d64-59ff-4a65-8d8c-d1a088f46599 conditions: [] actions: - action: switch.toggle data: {} target: entity_id: switch.tor mode: single - id: '1661607357549' alias: Считана метка Green description: '' triggers: - trigger: tag tag_id: 25cf4f63-039d-47b6-8012-32e9e6cb831d conditions: [] actions: - action: light.toggle data: {} target: entity_id: light.sonoffpow_01 mode: single - id: '1668006470208' alias: Garage - Coming home description: Open tor if Tiguan is coming to home triggers: - device_id: d65b64c785a29ffed795c6d22780bb9f domain: device_tracker entity_id: e26c53c9fa2534a4da69f77b06f7414f type: enters trigger: device zone: zone.home conditions: - condition: state entity_id: sensor.as25_bluetooth_connection attribute: connected_paired_devices state: B4:EC:02:94:8A:CF (VW BT 1505) enabled: false - condition: numeric_state entity_id: sensor.torposition below: 15 - condition: or conditions: - condition: template value_template: '{{ "68:4E:05:63:56:10 (VOLKSWAGEN-21ED)" in state_attr("sensor.as25_bluetooth_connection", "connected_paired_devices") }}' - condition: template value_template: '{{ "B4:EC:02:94:8A:CF (VW BT 1505)" in state_attr("sensor.as25_bluetooth_connection", "connected_paired_devices") }}' actions: - data: {} target: entity_id: switch.tor action: switch.turn_on - data: message: TTS title: Garage data: ttl: 0 priority: high media_stream: alarm_stream_max tts_text: Die Garage öffnet action: notify.mobile_app_as25 mode: single - id: '1668017327174' alias: Garage - Leaving home description: Close tor if Tiguan is leaving home triggers: - device_id: d65b64c785a29ffed795c6d22780bb9f domain: device_tracker entity_id: e26c53c9fa2534a4da69f77b06f7414f type: leaves trigger: device zone: zone.home conditions: - condition: state entity_id: sensor.as25_bluetooth_connection attribute: connected_paired_devices state: B4:EC:02:94:8A:CF (VW BT 1505) enabled: false - condition: or conditions: - condition: template value_template: '{{ "68:4E:05:63:56:10 (VOLKSWAGEN-21ED)" in state_attr("sensor.as25_bluetooth_connection", "connected_paired_devices") }}' - condition: template value_template: '{{ "B4:EC:02:94:8A:CF (VW BT 1505)" in state_attr("sensor.as25_bluetooth_connection", "connected_paired_devices") }}' - condition: numeric_state entity_id: sensor.torposition above: 15 actions: - data: {} target: entity_id: switch.tor action: switch.turn_on - data: message: TTS title: Garage data: ttl: 0 priority: high media_stream: alarm_stream_max tts_text: Die Garage schlisst action: notify.mobile_app_as25 - wait_for_trigger: - trigger: numeric_state entity_id: sensor.torposition for: hours: 0 minutes: 0 seconds: 5 below: 6 timeout: hours: 0 minutes: 0 seconds: 30 milliseconds: 0 continue_on_timeout: false - data: message: TTS title: Garage data: ttl: 0 priority: high media_stream: alarm_stream_max tts_text: Die Garage ist geschlossen action: notify.mobile_app_as25 mode: single - id: 3d_prtint_is_done alias: 3D - Druck ist fertig description: '' triggers: - trigger: state entity_id: - sensor.ender_3_s1_pro_current_print_state for: hours: 0 minutes: 10 seconds: 0 to: complete conditions: [] actions: - action: camera.snapshot metadata: {} data: filename: /config/www/screenshots/3dprinter.jpg target: entity_id: camera.ender_3_s1_pro_sony - action: notify.telegram_schick_home data: message: 🏭 3D Druck ist fertig data: photo: - file: /config/www/screenshots/3dprinter.jpg caption: 🏭 3D Druck ist fertig - action: notify.telegram_schick_home data: message: 🏭 3D Druck ist fertig data: photo: - url: '{{ state_attr(''sensor.ender_3_s1_pro_thumbnail'',''url'') }}' caption: 🏭 3D Druck ist fertig enabled: false - wait_for_trigger: - trigger: numeric_state entity_id: sensor.ender_3_s1_pro_extruder_temperature below: 70 timeout: hours: 0 minutes: 10 seconds: 0 milliseconds: 0 enabled: true - if: - condition: template value_template: '{{ not is_state(''sensor.ender_3_s1_pro_current_print_state'',''printing'') and not is_state(''sensor.ender_3_s1_pro_current_print_state'',''paused'')}}' then: - action: switch.turn_off data: {} target: entity_id: switch.tuyaplug1 - action: notify.telegram_schick_home data: message: 🏭 3D Drucker ist ausgeschaltet enabled: true mode: single - id: '1674336725023' alias: Erinnerung - Mühlabfuhr description: '' use_blueprint: path: westenberg/garbage-reminder.yaml input: garbage_sensor_1: sensor.restabfall garbage_sensor_2: sensor.leichtverpackungen garbage_sensor_3: sensor.papier notifier: notify.telegram_schick_home day_offset: '1' reminder_time: '18:20:00' reminder_message: 'Folgender Müll wird morgen abgeholt: ' reminder_title: 🗑️ Müllabfuhr Erinnerung - id: '1694760290268' alias: HASS - CleanUp stale devices description: Remove all stale devices from Home Assistant triggers: - trigger: time at: 00:00:00 conditions: - condition: time weekday: - mon actions: - action: button.press data: {} target: entity_id: - button.fritz_box_5590_fiber_cleanup - button.fritz_box_7590_ax_cleanup - action: ble_monitor.cleanup_entries data: {} - action: tts.clear_cache data: {} mode: single - id: '1704829899531' alias: Aktualisierung description: Aktualisierungsbenachrichtigung use_blueprint: path: mdegat01/update_notifications.yaml input: update_entities: - update.einfahrt_update - update.esphome_update - update.fritz_box_5590_fiber_fritz_os - update.ftp_update - update.garage_update - update.garagegate_firmware - update.home_assistant_core_update - update.home_assistant_supervisor_update - update.markise_firmware - update.mosquitto_broker_update - update.nginx_home_assistant_ssl_proxy_update - update.pi_hole_v6_integration_update - update.pi_hole_core_update_available - update.pi_hole_ftl_update_available - update.samba_share_update - update.sqlite_web_update - update.studio_code_server_update - update.tasmoadmin_update - update.terminal_ssh_update - update.terrasse_update - update.innen_firmware - update.matter_server_update - update.vlc_update - update.fritz_box_7590_ax_fritz_os - update.music_assistant_server_update - update.shelly1pmminig3_34b7da8db254_firmware_update - update.aha_region_update - update.bar_card_update - update.card_tools_update - update.comfortable_environment_card_update - update.firmware_update - update.fold_entity_row_update - update.go2rtc_update - update.hacs_update - update.landroid_card_update - update.landroid_cloud_update - update.let_s_encrypt_update - update.local_tuya_update - update.mini_media_player_update - update.mini_graph_card_update - update.moonraker_update - update.mushroom_themes_update - update.passive_ble_monitor_integration_update - update.polr_ytube_media_card_update - update.restriction_card_update - update.samsung_soundbar_update - update.slider_button_card_update - update.slider_entity_row_update - update.spook_your_homie_update - update.thermal_comfort_icons_update - update.thermal_comfort_update - update.vacuum_card_update - update.weather_chart_card_update - update.webrtc_camera_update - update.xiaomi_mi_smart_pedestal_fan_integration_update - update.xiaomi_smartmi_fan_card_update - update.xiaomi_vacuum_map_card_update - update.yandex_smart_home_update - update.yandex_station_intents_update - update.yandex_station_update - update.ytube_music_player_update - update.pi_hole_web_update_available - update.maxi_media_player_update - update.samsungtv_smart_update - update.seitenmarkise_74aab6_firmware mobile_app_device: d65b64c785a29ffed795c6d22780bb9f reminder_hours: '6' run_config_check: true send_to_ha: true mobile_app_device_2: d65b64c785a29ffed795c6d22780bb9f - id: camera_manage_status_led alias: Camera - Manage status LED triggers: - trigger: sun event: sunrise id: sunrise - trigger: sun event: sunset id: sunset conditions: [] actions: - choose: - conditions: - condition: trigger id: - sunrise sequence: - action: light.turn_on metadata: {} data: {} target: entity_id: light.innen_status_led - conditions: - condition: trigger id: - sunset sequence: - action: light.turn_off metadata: {} data: {} target: entity_id: light.innen_status_led mode: single - id: tv_board_manage alias: TV Board - Verwaltung description: 'Funktioniert nur wenn TV aus ist. Wenn TV Board ist an und (Niemand ist Zuhause oder Zeit ist zwischen 23:00 und 11:00) dann TV Board ausschalten Wenn TV Board ist aus und (Jemand ist Zuhause oder Zeit ist zwischen 11:00 and 23:00) dann TV Board einschalten' triggers: - trigger: state entity_id: group.family for: 00:04:00 - trigger: time_pattern minutes: /15 conditions: - condition: or conditions: - condition: template value_template: '{{ is_state(''media_player.sony_kd55x8505b'', ''off'') }}' enabled: false - condition: state entity_id: media_player.sony_kd_55x8505b state: 'off' enabled: false - condition: state entity_id: media_player.gq75qn92catxzg state: 'off' actions: - alias: Выбор условий для выключения и включения TV Board enabled: false choose: - conditions: - condition: template value_template: '{{ is_state(''switch.tuyaplug2'', ''on'') and (is_state(''group.family'', ''not_home'') or now().hour < 12 or now().hour > 22) }}' sequence: - action: switch.turn_off target: entity_id: switch.tuyaplug2 data: {} - conditions: - condition: template value_template: '{{ is_state(''switch.tuyaplug2'', ''off'') and is_state(''group.family'', ''home'') and (now().hour > 11 and now().hour < 23) }}' sequence: - action: switch.turn_on target: entity_id: switch.tuyaplug2 data: {} - if: - condition: template value_template: '{{ is_state(''switch.tuyaplug2'', ''on'') and (is_state(''group.family'', ''not_home'') or now().hour < 12 or now().hour > 22) }}' then: - action: switch.turn_off target: entity_id: switch.tuyaplug2 data: {} mode: single - id: rolladen_close_if_its_hot alias: Rolladen - Automatisch schließen bei Hitze und Sonne description: Schließt bestimmte Rolläden, wenn es heiß ist und die Sonne entsprechend steht, um die Räume kühl zu halten. Berücksichtigt individuelle Azimut-Schwellenwerte pro Rolladen. triggers: - minutes: /5 trigger: time_pattern conditions: - condition: template value_template: "{% set sun_azimuth = state_attr('sun.sun', 'azimuth') | float(0)\ \ %} {% set sun_elevation = state_attr('sun.sun', 'elevation') | float(-91)\ \ %} {# По умолчанию ниже любого типичного SUN_ELEVATION_MIN_ACTIVE #} {% set\ \ current_clouds = state_attr('weather.openweathermap', 'cloud_coverage') |\ \ int(CLOUD_COVERAGE_MAX) %} {# По умолчанию, чтобы условие current_clouds <\ \ CLOUD_COVERAGE_MAX стало ложным #} {% set ground_temp = states('sensor.rasen_temperature')\ \ | float(GROUND_TEMP_THRESHOLD - 1) %} {# По умолчанию, чтобы условие ground_temp\ \ > GROUND_TEMP_THRESHOLD стало ложным #} {% set terrasse_temp = states('sensor.ble_temperature_temperatur_gt')\ \ | float(TERRASSE_TEMP_THRESHOLD - 1) %} {# По умолчанию, чтобы условие terrasse_temp\ \ > TERRASSE_TEMP_THRESHOLD стало ложным #}\n{{ SUN_AZIMUTH_MIN_ACTIVE < sun_azimuth\ \ < SUN_AZIMUTH_MAX_ACTIVE\n and sun_elevation > SUN_ELEVATION_MIN_ACTIVE\n\ \ and (ground_temp > GROUND_TEMP_THRESHOLD or terrasse_temp > TERRASSE_TEMP_THRESHOLD)\n\ \ and current_clouds < CLOUD_COVERAGE_MAX\n}}\n" actions: - repeat: for_each: '{{ COVERS_TO_MANAGE }}' sequence: - variables: cover_entity_id: '{{ repeat.item.entity }}' current_sun_azimuth: '{{ state_attr(''sun.sun'', ''azimuth'') | float(0) }}' cover_current_pos: '{{ state_attr(cover_entity_id, ''current_position'') | int(-1) }}' cover_last_changed_timestamp: '{{ as_timestamp(states[cover_entity_id].last_changed, 0) }}' - condition: template value_template: "{# Проверяем, прошел ли азимут солнца триггерный азимут для\ \ этого роллета. Не двигать, если уже в целевой позиции #} {{ current_sun_azimuth\ \ >= repeat.item.azimuth_close_trigger and\n cover_current_pos > repeat.item.current_pos_above\ \ and\n cover_current_pos != repeat.item.target_pos and\n ((as_timestamp(now())\ \ - cover_last_changed_timestamp) / 60) > COOLDOWN_MINUTES\n}}\n" - target: entity_id: '{{ cover_entity_id }}' data: position: '{{ repeat.item.target_pos }}' action: cover.set_cover_position variables: GROUND_TEMP_THRESHOLD: 22 TERRASSE_TEMP_THRESHOLD: 22 CLOUD_COVERAGE_MAX: 40 SUN_AZIMUTH_MIN_ACTIVE: 150 SUN_AZIMUTH_MAX_ACTIVE: 300 SUN_ELEVATION_MIN_ACTIVE: 10 COOLDOWN_MINUTES: 240 COVERS_TO_MANAGE: - entity: cover.shellyswitch25_f37a8c azimuth_close_trigger: 150 current_pos_above: 40 target_pos: 0 - entity: cover.shellyswitch25_f37b28 azimuth_close_trigger: 180 current_pos_above: 40 target_pos: 0 - entity: cover.shellyswitch25_10eaa4 azimuth_close_trigger: 220 current_pos_above: 40 target_pos: 0 - entity: cover.shellyswitch25_10d315 azimuth_close_trigger: 240 current_pos_above: 75 target_pos: 60 - id: markise_control alias: Markise Verwaltung description: Markise automatisch steuern basierend auf Sonne, Temperatur, Wolken und Regen. triggers: - trigger: time_pattern minutes: /5 - trigger: template value_template: '{{ is_state(RAIN_SENSOR, ''on'') or (state_attr(''sun.sun'', ''elevation'') | float(999) < SUN_ELEVATION_THRESHOLD_CLOSE) }}' actions: - choose: - conditions: - condition: template value_template: "{% set sun_azimuth = state_attr('sun.sun', 'azimuth') | float(0)\ \ %} {% set sun_elevation = state_attr('sun.sun', 'elevation') | float(0)\ \ %} {% set current_temp = states(TEMP_SENSOR) | float(-100) %} {% set cloud_coverage\ \ = state_attr(WEATHER_SENSOR, 'cloud_coverage') | float(101) %} {% set\ \ current_pos = state_attr(COVER_ENTITY_ID, 'current_position') | int(-1)\ \ %} {% set cover_last_changed_timestamp = as_timestamp(states[COVER_ENTITY_ID].last_changed,\ \ 0) %}\n{{ sun_azimuth > SUN_AZIMUTH_MIN_OPEN and\n sun_elevation >= SUN_ELEVATION_MIN_OPEN\ \ and\n current_temp > TEMP_THRESHOLD_OPEN and\n cloud_coverage < CLOUD_COVERAGE_THRESHOLD_OPEN\ \ and\n is_state(RAIN_SENSOR, 'off') and\n current_pos != POSITION_SUN_PROTECTION\ \ and\n ((as_timestamp(now()) - cover_last_changed_timestamp) / 60) > COOLDOWN_MINUTES\n\ }}\n" alias: Если солнце мешает, жарко, нет облаков и дождя sequence: - delay: 3 - action: cover.set_cover_position data: position: '{{ POSITION_SUN_PROTECTION }}' target: entity_id: '{{ COVER_ENTITY_ID }}' - conditions: - condition: template value_template: "{% set sun_elevation = state_attr('sun.sun', 'elevation')\ \ | float(999) %} {% set current_pos = state_attr(COVER_ENTITY_ID, 'current_position')\ \ | int(-1) %}\n{{ (is_state(RAIN_SENSOR, 'on') or\n sun_elevation < SUN_ELEVATION_THRESHOLD_CLOSE)\ \ and\n current_pos != POSITION_RETRACTED\n}}\n" alias: Если солнце уже не мешает или дождь sequence: - delay: 3 - action: cover.set_cover_position data: position: '{{ POSITION_RETRACTED }}' target: entity_id: '{{ COVER_ENTITY_ID }}' trigger_variables: SUN_ELEVATION_THRESHOLD_CLOSE: 11 RAIN_SENSOR: binary_sensor.mower_rainsensor_triggered variables: COVER_ENTITY_ID: cover.markise TEMP_SENSOR: sensor.ble_temperature_temperatur_gt WEATHER_SENSOR: weather.openweathermap TEMP_THRESHOLD_OPEN: 22 CLOUD_COVERAGE_THRESHOLD_OPEN: 40 SUN_AZIMUTH_MIN_OPEN: 180 SUN_ELEVATION_MIN_OPEN: 15 POSITION_SUN_PROTECTION: 100 POSITION_RETRACTED: 0 COOLDOWN_MINUTES: 60 mode: single - id: vacuum_when_nobody_home alias: Robi - Niemand zu Hause ist description: Wenn Niemand Zuhause ist, dann staubsaugen. triggers: - trigger: state entity_id: - group.family for: hours: 0 minutes: 10 seconds: 0 to: not_home conditions: - condition: template value_template: '{{ (states("sensor.robi_last_clean_start") | as_datetime).date() < now().date() }}' actions: - action: script.robi_flur metadata: {} data: {} mode: single - id: '1726090038559' alias: HA - Renew certificate description: '' triggers: - trigger: time at: 04:00:00 conditions: - condition: template value_template: '{% set expired = (states(''sensor.barma_partia_de_cert_expiry'') | as_datetime | as_local) %} {{ (expired.date() - now().date()).days < 7 }}' actions: - action: hassio.addon_start metadata: {} data: addon: core_letsencrypt enabled: false - action: hassio.addon_restart metadata: {} data: addon: core_letsencrypt mode: single - id: weihnachten_licht_an alias: Weihnachten - Licht An description: Weihnachten licht an am Abend triggers: - trigger: sun event: sunset offset: -00:15:00 conditions: - condition: state entity_id: group.family_wlan alias: Is anybody home state: home actions: - action: switch.turn_on data: entity_id: switch.weihnachten mode: single - id: weihnachten_licht_an_anatolij alias: Weihnachten - Licht An Anatolij description: Weihnachten licht an am Morgens für Anatolij mode: single triggers: - trigger: time at: 08:20:00 conditions: - condition: and conditions: - condition: sun before: sunrise after_offset: 00:15:00 - condition: time weekday: - mon - tue - wed - thu - fri actions: - action: switch.turn_on data: entity_id: switch.weihnachten - id: weihnachten_licht_an_wenn_jemand_kommt alias: Weihnachten - Licht An wenn jemand kommt description: Weihnachten licht an wenn jemand kommt triggers: - trigger: state entity_id: - group.family_wlan - group.family from: not_home to: home for: hours: 0 minutes: 3 seconds: 0 conditions: - condition: template value_template: '{{ state_attr(''sun.sun'', ''elevation'') < 4 }}' actions: - action: switch.turn_on data: entity_id: switch.weihnachten mode: single - id: weihnachten_licht_aus alias: Weihnachten - Licht Aus description: Weihnachten licht aus triggers: - trigger: time at: - 00:00:00 - 09:30:00 - trigger: sun event: sunrise offset: 00:15:00 - trigger: state entity_id: - group.family_wlan - group.family from: home to: not_home for: hours: 0 minutes: 5 seconds: 0 conditions: [] actions: - action: switch.turn_off data: entity_id: switch.weihnachten mode: single - id: robi_yandex_home alias: Robi - Yandex Haus description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Уберись дома actions: - action: script.robi_home mode: single - id: robi_yandex_kitchen alias: Robi - Yandex Küche description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Убери кухню actions: - action: script.robi_kitchen mode: single - id: robi_yandex_living_room alias: Robi - Yandex Wohnzimmer description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Убери зал actions: - action: script.robi_living_room mode: single - id: robi_yandex_stube alias: Robi - Yandex Stube description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Убери гостиную actions: - action: script.robi_stube data: {} mode: single - id: robi_yandex_bedroom alias: Robi - Yandex Schlafzimmer description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Убери спальню actions: - action: script.robi_bedroom mode: single - id: robi_yandex_flur alias: Robi - Yandex Flur description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Убери коридор actions: - action: script.robi_flur mode: single - id: robi_yandex_hwr alias: Robi - Yandex HWR description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Убери кладовку actions: - action: script.robi_hwr data: {} mode: single - id: robi_yandex_wc alias: Robi - Yandex WC description: '' triggers: - trigger: event event_type: yandex_intent event_data: text: Убери туалет actions: - action: script.robi_wc mode: single - id: seitenmarkise_control alias: Seitenmarkise Verwaltung description: Seitenmarkise automatisch steuern basierend auf Sonne, Temperatur, Wolken und Regen. triggers: - trigger: time_pattern minutes: /5 - trigger: template value_template: '{{ is_state(RAIN_SENSOR, ''on'') or (state_attr(''sun.sun'', ''elevation'') | float(999) < SUN_ELEVATION_THRESHOLD_RETRACT) }}' actions: - choose: - conditions: - condition: template value_template: "{% set sun_azimuth = state_attr('sun.sun', 'azimuth') | float(0)\ \ %} {% set sun_elevation = state_attr('sun.sun', 'elevation') | float(0)\ \ %} {% set current_temp = states(TEMP_SENSOR) | float(-100) %} {% set cloud_coverage\ \ = state_attr(WEATHER_SENSOR, 'cloud_coverage') | float(101) %} {% set\ \ current_pos = state_attr(COVER_ENTITY_ID, 'current_position') | int(-1)\ \ %} {% set cover_last_changed_timestamp = as_timestamp(states[COVER_ENTITY_ID].last_changed,\ \ 0) %}\n{{ sun_azimuth > SUN_AZIMUTH_MIN_DEPLOY and\n sun_elevation >=\ \ SUN_ELEVATION_MIN_DEPLOY and\n current_temp > TEMP_THRESHOLD_DEPLOY and\n\ \ cloud_coverage < CLOUD_COVERAGE_THRESHOLD_DEPLOY and\n is_state(RAIN_SENSOR,\ \ 'off') and\n current_pos > POSITION_SUN_PROTECTION and\n ((as_timestamp(now())\ \ - cover_last_changed_timestamp) / 60) > COOLDOWN_MINUTES\n}}\n" alias: Если солнце мешает, жарко, нет облаков и дождя sequence: - action: cover.set_cover_position data: position: '{{ POSITION_SUN_PROTECTION }}' target: entity_id: '{{ COVER_ENTITY_ID }}' - conditions: - condition: template value_template: "{% set sun_elevation = state_attr('sun.sun', 'elevation')\ \ | float(999) %} {% set current_pos = state_attr(COVER_ENTITY_ID, 'current_position')\ \ | int(-1) %}\n{{ (is_state(RAIN_SENSOR, 'on') or\n sun_elevation < SUN_ELEVATION_THRESHOLD_RETRACT)\ \ and\n current_pos != POSITION_RETRACTED\n}}\n" alias: Если солнце уже не мешает или дождь sequence: - action: cover.set_cover_position data: position: '{{ POSITION_RETRACTED }}' target: entity_id: '{{ COVER_ENTITY_ID }}' trigger_variables: SUN_ELEVATION_THRESHOLD_RETRACT: 11 RAIN_SENSOR: binary_sensor.mower_rainsensor_triggered variables: COVER_ENTITY_ID: cover.seitenmarkise TEMP_SENSOR: sensor.ble_temperature_temperatur_gt WEATHER_SENSOR: weather.openweathermap TEMP_THRESHOLD_DEPLOY: 22 CLOUD_COVERAGE_THRESHOLD_DEPLOY: 40 SUN_AZIMUTH_MIN_DEPLOY: 180 SUN_ELEVATION_MIN_DEPLOY: 12 POSITION_SUN_PROTECTION: 15 POSITION_RETRACTED: 100 COOLDOWN_MINUTES: 120 mode: single - id: '1746608947446' alias: debug description: '' triggers: - trigger: state entity_id: - switch.sonoffs20_2 to: 'on' id: cycle1 - trigger: state entity_id: - switch.sonoffs20_2 to: 'off' id: cycle2 conditions: [] actions: - action: notify.telegram_bot_anatolij metadata: {} data: message: '{{ trigger.id[-1] }}' mode: single - id: garage_smartthing_sync alias: Garage - Smarttagsverwaltung description: '' triggers: - trigger: state entity_id: - switch.st_virtual_switch1 - switch.st_virtual_switch2 conditions: [] actions: - choose: - conditions: - condition: template value_template: '{{ trigger.entity_id == ''switch.st_virtual_switch1'' }}' sequence: - action: switch.toggle metadata: {} data: {} target: entity_id: switch.tor - conditions: - condition: template value_template: '{{ trigger.entity_id == ''switch.st_virtual_switch2'' }}' sequence: - action: switch.toggle metadata: {} data: {} target: entity_id: switch.torteil mode: single - id: set_rolladen_last_action alias: Rolladen - Set last action mode: parallel triggers: - trigger: state entity_id: - cover.rolladen - cover.shellyswitch25_10d315 - cover.shellyswitch25_10eaa4 - cover.shellyswitch25_f37a8c - cover.shellyswitch25_f37b28 - cover.markise - cover.seitenmarkise conditions: - condition: or conditions: - '{{ trigger.from_state.state == ''opening'' }}' - '{{ trigger.from_state.state == ''closing'' }}' actions: - action: input_text.set_value target: entity_id: input_text.{{ trigger.to_state.object_id }}_last_action data: value: '{{ trigger.from_state.state }}' - id: torteiloffnung_on alias: Garage - Torteiloffnung ON triggers: - trigger: state entity_id: switch.torteil to: 'on' conditions: - condition: state entity_id: input_boolean.torteil state: 'off' actions: - delay: seconds: 2 - alias: '' action: input_boolean.turn_on data: entity_id: input_boolean.torteil - id: telegram_tor alias: Telegram - Tor mode: restart triggers: - trigger: event event_type: telegram_command event_data: command: /tor - trigger: event event_type: telegram_command event_data: command: /torteil - trigger: event event_type: telegram_callback event_data: command: /tor - trigger: event event_type: telegram_callback event_data: command: /torteil actions: - choose: - conditions: - condition: template value_template: '{{ trigger.event.data.command == ''/tor'' }}' sequence: - action: switch.toggle data: entity_id: switch.tor - wait_for_trigger: - trigger: state entity_id: cover.tor timeout: 00:00:05 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: '{{ state_attr(''switch.tor'', ''friendly_name'') }} - {{ state_attr(''cover.tor'', ''current_position'') }}%' - conditions: - condition: template value_template: '{{ trigger.event.data.command == ''/torteil'' }}' sequence: - action: switch.toggle data: entity_id: switch.torteil - wait_for_trigger: - trigger: state entity_id: cover.tor timeout: 00:00:05 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: '{{ state_attr(''switch.torteil'', ''friendly_name'') }} - {{ state_attr(''cover.tor'', ''current_position'') }}%' - id: garage_auto_close alias: Garage - Autoschließen description: Гараж - Автоматическое закрытие (открыт >13% более 30 мин, темно, свет выкл) mode: single triggers: - trigger: state entity_id: binary_sensor.garage_open_too_long to: 'on' - trigger: state entity_id: sun.sun to: below_horizon - trigger: state entity_id: binary_sensor.all_lights_off to: 'on' - trigger: homeassistant event: start condition: - condition: state entity_id: sun.sun state: below_horizon - condition: state entity_id: binary_sensor.all_lights_off state: 'on' - condition: state entity_id: binary_sensor.garage_open_too_long state: 'on' actions: - variables: initial_pos: '{{ state_attr(''cover.tor'', ''current_position'') | int }}' - action: notify.telegram_schick_home data: title: 🚗Гараж message: Гараж открыт уже 30 минут, сейчас темно и свет везде выключен. Планирую закрыть через 1 минуту. Свет будет мигать. Если ворота сдвинутся более чем на 10%, закрытие отменится. - alias: Минутное ожидание с миганием и проверкой отмены repeat: count: 12 sequence: - choose: - conditions: - condition: template value_template: '{% set current_pos = state_attr(''cover.tor'', ''current_position'') | int(0) %} {{ (current_pos - initial_pos) | abs > 10 }} ' sequence: - action: notify.telegram_schick_home data: title: 🚗Гараж message: Автоматическое закрытие гаража отменено, так как положение ворот изменилось более чем на 10%. - stop: Закрытие отменено из-за изменения положения ворот - action: light.turn_on target: entity_id: light.sonoffbnsz01 data: {} - delay: seconds: 2.5 - action: light.turn_off target: entity_id: light.sonoffbnsz01 data: {} - delay: seconds: 2.5 - condition: template value_template: '{% set current_pos = state_attr(''cover.tor'', ''current_position'') | int(0) %} {{ (current_pos - initial_pos) | abs <= 10 }} ' - condition: template value_template: '{{ states(''cover.tor'') == ''open'' and state_attr(''cover.tor'', ''current_position'') | int(0) > 13 }}' - action: notify.telegram_schick_home data: title: 🚗Гараж message: Начинаю процедуру автоматического закрытия гаража... - alias: Закрытие гаража - Попытка 1 action: switch.toggle target: entity_id: switch.tor - delay: seconds: 3 - choose: - conditions: - '{{ states(''cover.tor'') == ''closing'' or states(''cover.tor'') == ''closed'' }}' sequence: - action: notify.telegram_schick_home data: title: 🚗Гараж message: Ворота закрываются/закрыты после 1-й команды. - conditions: - '{{ states(''cover.tor'') == ''opening'' or states(''cover.tor'') == ''open'' }}' sequence: - action: notify.telegram_schick_home data: title: 🚗Гараж message: После 1-й команды, ворота {{ states('cover.tor') }}. Отправляю 2-ю команду... - alias: Закрытие гаража - Попытка 2 action: switch.toggle target: entity_id: switch.tor - delay: seconds: 3 - choose: - conditions: - '{{ states(''cover.tor'') == ''closing'' or states(''cover.tor'') == ''closed'' }}' sequence: - action: notify.telegram_schick_home data: title: 🚗Гараж message: Ворота закрываются/закрыты после 2-й команды. - conditions: - '{{ states(''cover.tor'') == ''opening'' or states(''cover.tor'') == ''open'' }}' sequence: - action: notify.telegram_schick_home data: title: 🚗Гараж message: После 2-й команды, ворота {{ states('cover.tor') }}. Отправляю 3-ю команду... - alias: Закрытие гаража - Попытка 3 action: switch.toggle target: entity_id: switch.tor - delay: seconds: 3 - action: notify.telegram_schick_home data: title: 🚗Гараж message: '3-я команда отправлена. Текущее состояние: {{ states(''cover.tor'') }}. Ожидаю полного закрытия.' default: - action: notify.telegram_schick_home data: title: 🚗Гараж - Ошибка message: Неожиданное состояние ворот {{ states('cover.tor') }} после 2-й попытки закрытия. default: - action: notify.telegram_schick_home data: title: 🚗Гараж - Ошибка message: Неожиданное состояние ворот {{ states('cover.tor') }} после 1-й попытки закрытия. - wait_for_trigger: - trigger: state entity_id: cover.tor to: closed timeout: minutes: 2 continue_on_timeout: true - variables: garage_closed_successfully: '{{ wait.trigger is not none and states(''cover.tor'') == ''closed'' }}' - action: notify.telegram_schick_home data: title: 🚗Гараж message: "{% if garage_closed_successfully %}\n Гараж успешно закрыт автоматически.\n\ {% else %}\n Гараж не закрылся (состояние: {{ states('cover.tor') }}, позиция:\ \ {{ state_attr('cover.tor', 'current_position') }}%) в течение 2 минут после\ \ команды автоматического закрытия.\n{% endif %}\n" - id: irrigation_set_next_run_time_when_schedule_enabled_or_time_changed alias: Irrigation - Zeitplan bei der Zeitänderung oder Automat Aktivierung triggers: - trigger: state entity_id: - input_boolean.irrigation_cycle1_enable - input_boolean.irrigation_cycle2_enable to: 'on' - trigger: state entity_id: - input_select.irrigation_cycle1_schedule_time - input_select.irrigation_cycle2_schedule_time - trigger: state entity_id: - input_select.irrigation_cycle1_watering_days - input_select.irrigation_cycle2_watering_days conditions: - condition: state entity_id: input_boolean.irrigation_master_control_switch state: 'on' - condition: or conditions: - condition: state entity_id: input_boolean.irrigation_cycle1_enable state: 'on' - condition: state entity_id: input_boolean.irrigation_cycle2_enable state: 'on' actions: - variables: cycle_num: '{{ ''1'' if ''cycle1'' in trigger.entity_id else ''2'' }}' - action: input_datetime.set_datetime data: entity_id: input_datetime.irrigation_cycle{{ cycle_num }}_next_run_time date: "{% set schedule_time_str = states('input_select.irrigation_cycle' ~ cycle_num\ \ ~ '_schedule_time') %} {% if now().strftime('%H:%M') < schedule_time_str\ \ %}\n {{ now().strftime('%Y-%m-%d') }}\n{% else %}\n {{ (now() + timedelta(days=1)).strftime('%Y-%m-%d')\ \ }}\n{% endif %}\n" time: '{{ states(''input_select.irrigation_cycle'' ~ cycle_num ~ ''_schedule_time'') }} ' - id: irrigation_run_cycle_1 alias: Irrigation - Start Morgenzyklus triggers: - trigger: time at: input_datetime.irrigation_cycle1_next_run_time conditions: - condition: state entity_id: input_boolean.irrigation_cycle1_enable state: 'on' actions: - action: script.irrigation_check_a_sensor_data data: cycle: '1' - action: script.irrigation_update_next_runtime data: cycle: '1' - id: irrigation_run_cycle_2 alias: Irrigation - Start Abendzyklus triggers: - trigger: time at: input_datetime.irrigation_cycle2_next_run_time conditions: - condition: state entity_id: input_boolean.irrigation_cycle2_enable state: 'on' actions: - action: script.irrigation_check_a_sensor_data data: cycle: '2' - action: script.irrigation_update_next_runtime data: cycle: '2' - id: irrigation_run_a_cycle_manually alias: Irrigation - Manuell starten triggers: - trigger: state entity_id: - input_boolean.irrigation_cycle1_manual_run - input_boolean.irrigation_cycle2_manual_run from: 'off' to: 'on' conditions: - condition: template value_template: "{% if trigger.entity_id == 'input_boolean.irrigation_cycle1_manual_run'\ \ %}\n {{ states('input_boolean.irrigation_cycle2_running') == 'off' }}\n{%\ \ else %}\n {{ states('input_boolean.irrigation_cycle1_running') == 'off' }}\n\ {% endif %}\n" actions: - action: input_text.set_value data: entity_id: input_text.irrigation_current_zone value: Initialisierung... - action: switch.turn_off data: entity_id: switch.irrigation_valves - action: script.turn_off target: entity_id: - script.irrigation_run_a_cycle - script.irrigation_irrigate_a_zone - action: input_boolean.turn_{{ 'on' if is_state('input_boolean.irrigation_cycle1_enable', 'on') else 'off' }} target: entity_id: input_boolean.irrigation_cycle1_enable_saved_state - action: input_boolean.turn_{{ 'on' if is_state('input_boolean.irrigation_cycle2_enable', 'on') else 'off' }} target: entity_id: input_boolean.irrigation_cycle2_enable_saved_state - action: input_boolean.turn_off target: entity_id: - input_boolean.irrigation_cycle1_enable - input_boolean.irrigation_cycle2_enable - action: script.irrigation_run_a_cycle data: cycle: "{% if trigger.entity_id == 'input_boolean.irrigation_cycle1_manual_run'\ \ %}\n 1\n{% else %}\n 2\n{% endif %}\n" - wait_template: '{{ is_state(''script.irrigation_run_a_cycle'', ''off'') }}' - action: input_boolean.turn_off target: entity_id: - input_boolean.irrigation_cycle1_manual_run - input_boolean.irrigation_cycle2_manual_run - action: input_boolean.turn_{{ 'on' if is_state('input_boolean.irrigation_cycle1_enable_saved_state', 'on') else 'off' }} target: entity_id: input_boolean.irrigation_cycle1_enable - action: input_boolean.turn_{{ 'on' if is_state('input_boolean.irrigation_cycle2_enable_saved_state', 'on') else 'off' }} target: entity_id: input_boolean.irrigation_cycle2_enable - id: irrigation_cancel_a_manual_cycle alias: Irrigation - Abbrechen manueller Zyklus triggers: - trigger: state entity_id: - input_boolean.irrigation_cycle1_manual_run - input_boolean.irrigation_cycle2_manual_run from: 'on' to: 'off' actions: - action: switch.turn_off data: entity_id: switch.irrigation_valves - action: script.turn_off target: entity_id: - script.irrigation_run_a_cycle - script.irrigation_irrigate_a_zone - action: timer.cancel data: entity_id: timer.irrigation_zone_duration - action: homeassistant.turn_off target: entity_id: input_boolean.irrigation_cycle{{ '1' if trigger.entity_id == 'input_boolean.irrigation_cycle1_manual_run' else '2' }}_running - action: input_text.set_value data: entity_id: input_text.irrigation_current_zone value: '-' - id: irrigation_cancel_if_it_rains alias: Irrigation - Abbrechen wenn es regnet mode: single triggers: - trigger: state entity_id: binary_sensor.mower_rainsensor_triggered to: 'on' - trigger: template value_template: '{{ is_state(''binary_sensor.mower_rainsensor_triggered'',''on'') }}' for: 00:01:00 actions: - action: timer.cancel entity_id: timer.irrigation_zone_duration - id: irrigation_master_control_switch alias: Irrigation - Master Control Switch triggers: - trigger: state entity_id: input_boolean.irrigation_master_control_switch - trigger: homeassistant event: start actions: - action: input_boolean.turn_off data: entity_id: - input_boolean.irrigation_cycle1_manual_run - input_boolean.irrigation_cycle2_manual_run - action: "{% if is_state('input_boolean.irrigation_master_control_switch', 'on')\ \ %}\n automation.turn_on\n{% else %}\n automation.turn_off\n{% endif %}\n" data: entity_id: "{% for item in states['automation'] if item.name.startswith('Irrigation\ \ - ')\n and item.name.find('Master Control Switch') == -1\n and item.name.find('Regular\ \ pumping') == -1 -%}\n {% if not loop.first %},{% endif %}{{ item.entity_id\ \ }}\n{%- endfor %}\n" - action: mqtt.publish data: topic: sonoff4ch/cmnd/pulsetime1 payload: 0 - action: mqtt.publish data: topic: sonoff4ch/cmnd/pulsetime2 payload: 0 - action: mqtt.publish data: topic: sonoff4ch/cmnd/pulsetime3 payload: 0 - action: mqtt.publish data: topic: sonoff4ch/cmnd/pulsetime4 payload: 0 - id: irrigation_failsafe_pump_control_switch alias: Irrigation - Failsafe Pump Control Switch description: Отключение насоса, при отключении автоматизации полива triggers: - trigger: state entity_id: input_boolean.irrigation_master_control_switch to: 'off' actions: - action: switch.turn_off entity_id: switch.irrigation_pump - id: irrigation_pump_on alias: Irrigation - Pump ON description: Включение насоса, если открылся один из клапанов triggers: - trigger: state entity_id: switch.irrigation_valves to: 'on' for: 00:00:01 conditions: - condition: state entity_id: switch.irrigation_pump state: 'off' actions: - action: switch.turn_on entity_id: switch.irrigation_pump - id: irrigation_pump_off alias: Irrigation - Pump OFF description: Выключение насоса, если закрыты все клапаны с задержкой для смены зоны полива triggers: - trigger: state entity_id: switch.irrigation_valves to: 'off' for: 00:00:04 - trigger: time_pattern minutes: /15 conditions: - condition: and conditions: - condition: state entity_id: switch.irrigation_valves state: 'off' - condition: state entity_id: switch.irrigation_zone3_valve state: 'off' actions: - action: switch.turn_off entity_id: switch.irrigation_pump - id: irrigation_regular_pumping alias: Irrigation - Regular pumping description: Регулярная подкачка воды triggers: - trigger: time_pattern hours: /4 minutes: '2' conditions: - condition: state entity_id: switch.irrigation_pump state: 'off' actions: - action: switch.turn_on entity_id: switch.irrigation_pump - delay: 15 - action: switch.turn_off entity_id: switch.irrigation_pump - id: irrigation_notify alias: Irrigation - Notify mode: parallel triggers: - trigger: state entity_id: - switch.irrigation_switches_zone1 - switch.irrigation_switches_zone2 - switch.irrigation_switches_zone3 from: 'on' to: 'off' variables: action: Ende - trigger: state entity_id: - switch.irrigation_switches_zone1 - switch.irrigation_switches_zone2 - switch.irrigation_switches_zone3 from: 'off' to: 'on' variables: action: Start actions: - action: notify.telegram_schick_home data: title: 💦 Bewässerung message: '{{ action }} *{{ trigger.from_state.attributes.friendly_name}}*' - id: irrigation_failsafe_master_control_switch alias: Irrigation - Failsafe Master Control Switch triggers: - trigger: state entity_id: input_boolean.irrigation_master_control_switch to: 'off' - trigger: homeassistant event: start actions: - action: homeassistant.turn_off entity_id: - input_boolean.irrigation_cycle1_manual_run - input_boolean.irrigation_cycle2_manual_run - switch.irrigation_zone1_valve - switch.irrigation_zone2_valve - switch.irrigation_zone3_valve - id: irrigation_failsafe_valve_1_on alias: Irrigation - Failsafe Valve 1 On triggers: - trigger: state entity_id: - switch.irrigation_zone1_valve to: 'on' actions: - action: switch.turn_off entity_id: - switch.irrigation_zone2_valve - wait_template: '{{ is_state(''switch.irrigation_zone1_valve'', ''off'') }}' timeout: 02:00:15 - action: switch.turn_off entity_id: - switch.irrigation_zone1_valve - id: irrigation_failsafe_valve_2_on alias: Irrigation - Failsafe Valve 2 On triggers: - trigger: state entity_id: - switch.irrigation_zone2_valve to: 'on' actions: - action: switch.turn_off entity_id: - switch.irrigation_zone1_valve - wait_template: '{{ is_state(''switch.irrigation_zone2_valve'', ''off'') }}' timeout: 02:00:15 - action: switch.turn_off entity_id: - switch.irrigation_zone2_valve - id: mower_notify_status alias: Mower status notification initial_state: false triggers: - trigger: state entity_id: lawn_mower.mower conditions: - condition: template value_template: '{{ trigger.to_state.state != trigger.from_state.state }}' actions: - action: notify.telegram_schick_home data: title: 🏎️ Lanroid M500 message: '*{{ trigger.to_state.state }}* <- {{ trigger.from_state.state }}' - id: mower_notify_error alias: Mower error notification initial_state: true triggers: - trigger: template value_template: '{{ states(''sensor.mower_error'') }}' conditions: - condition: template value_template: '{{ trigger.to_state.state != trigger.from_state.state }}' actions: - action: notify.telegram_schick_home data: title: 🏎️ Lanroid M500 message: '*{{ trigger.to_state.state }}: {{ states(''sensor.mower_error'') }}* <- {{ trigger.from_state.state }}: {{ states(''sensor.mower_error'') }}' - id: nataljas_night_shift alias: Nataljas night shift description: Set Natalja's night shift triggers: - trigger: time at: - 07:00 - '19:00' conditions: condition: template value_template: '{{ is_state(''calendar.dienstplan_natalja_schick'',''on'') }}' actions: - action: "{% set night_shift_start = as_timestamp(states.calendar.dienstplan_natalja_schick.attributes.start_time)\ \ %} {% if (( night_shift_start - as_timestamp(now()) ) < 86400 )\n and ((\ \ night_shift_start - as_timestamp(now()) ) > 0 ) %}\n input_boolean.turn_on\n\ {% else %}\n input_boolean.turn_off\n{% endif %}" target: entity_id: input_boolean.nataljas_night_shift - id: radio_stop alias: Radio - Stop triggers: - trigger: state entity_id: input_select.radio_station to: Stop actions: action: script.radio_stop - id: radio_stream alias: Radio - Stream triggers: - trigger: state entity_id: input_select.radio_station - trigger: state entity_id: input_select.radio_player actions: - action: media_player.turn_off target: entity_id: "{% set entities = {\n 'Garten':'media_player.googlehome9539',\n\ \ 'Nest Mini':'media_player.nest_mini',\n 'Sound Blaster':'media_player.soundblaster',\n\ \ 'Home Mini Flur':'media_player.flur',\n 'Home Mini Kristina':'media_player.kristina',\n\ \ 'Überall':'media_player.home_group',\n 'Erdgeschoss':'media_player.erdgeschoss',\n\ \ }\n%} {{ iif(trigger.from_state in entities, entities[trigger.from_state],\ \ 'media_player.nest_mini') }}" - action: script.radio - id: radio_volume alias: Radio - Volume triggers: trigger: state entity_id: input_number.radio_volume actions: action: media_player.volume_set data: entity_id: "{% set entities = {\n 'Garten':'media_player.googlehome9539',\n\ \ 'Nest Mini':'media_player.nest_mini',\n 'Sound Blaster':'media_player.soundblaster',\n\ \ 'Home Mini Flur':'media_player.flur',\n 'Home Mini Kristina':'media_player.kristina',\n\ \ 'Überall':'media_player.home_group',\n 'Erdgeschoss':'media_player.erdgeschoss',\n\ \ }\n%} {% set state = states('input_select.radio_player') %} {{ iif(state\ \ in entities, entities[state], 'media_player.nest_mini') }}\n" volume_level: '{{ states(''input_number.radio_volume'') }}' - id: telegram_kueche alias: Telegram - Kueche mode: parallel triggers: - trigger: event event_type: telegram_command event_data: command: /kuechenlicht - trigger: event event_type: telegram_callback event_data: command: /kuechenlicht - trigger: event event_type: telegram_command event_data: command: /essecke - trigger: event event_type: telegram_callback event_data: command: /essecke actions: - choose: - conditions: - condition: template value_template: '{{ trigger.event.data.command == ''/kuechenlicht'' }}' sequence: - action: light.toggle data: entity_id: light.shellyswitch25_10a36d_channel_1 - wait_for_trigger: - trigger: state entity_id: light.shellyswitch25_10a36d_channel_1 continue_on_timeout: true timeout: 00:00:01 - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 💡 {{ state_attr('light.shellyswitch25_10a36d_channel_1', 'friendly_name') }} - {{ states('light.shellyswitch25_10a36d_channel_1') }} - conditions: - condition: template value_template: '{{ trigger.event.data.command == ''/essecke'' }}' sequence: - action: light.toggle data: entity_id: light.shellyswitch25_10a36d_channel_2 - wait_for_trigger: - trigger: state entity_id: light.shellyswitch25_10a36d_channel_2 continue_on_timeout: true timeout: 00:00:01 - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 💡 {{ state_attr('light.shellyswitch25_10a36d_channel_2', 'friendly_name') }} - {{ states('light.shellyswitch25_10a36d_channel_2') }} - id: telegram_rollade_1 alias: Telegram - Rollade 1 mode: restart triggers: - trigger: event event_type: telegram_command event_data: command: /rollade_1 - trigger: event event_type: telegram_callback event_data: command: /rollade_1 actions: - action: script.cover_one_button data: entity_id: shellyswitch25_f37a8c - wait_for_trigger: - trigger: state entity_id: cover.shellyswitch25_f37a8c timeout: 00:00:02 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 🏡 {{ state_attr('cover.shellyswitch25_f37a8c', 'friendly_name') }} - {{ states('cover.shellyswitch25_f37a8c') }} - id: telegram_rollade_2 alias: Telegram - Rollade 2 mode: restart triggers: - trigger: event event_type: telegram_command event_data: command: /rollade_2 - trigger: event event_type: telegram_callback event_data: command: /rollade_2 actions: - action: script.cover_one_button data: entity_id: shellyswitch25_f37b28 - wait_for_trigger: - trigger: state entity_id: cover.shellyswitch25_f37b28 timeout: 00:00:02 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 🏡 {{ state_attr('cover.shellyswitch25_f37b28', 'friendly_name') }} - {{ states('cover.shellyswitch25_f37b28') }} - id: telegram_rollade_3 alias: Telegram - Rollade 3 mode: restart triggers: - trigger: event event_type: telegram_command event_data: command: /rollade_3 - trigger: event event_type: telegram_callback event_data: command: /rollade_3 actions: - action: script.cover_one_button data: entity_id: shellyswitch25_10eaa4 - wait_for_trigger: - trigger: state entity_id: cover.shellyswitch25_10eaa4 timeout: 00:00:02 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 🏡 {{ state_attr('cover.shellyswitch25_10eaa4', 'friendly_name') }} - {{ states('cover.shellyswitch25_10eaa4') }} - id: telegram_rollade_4 alias: Telegram - Rollade Terrasse mode: restart triggers: - trigger: event event_type: telegram_command event_data: command: /rollade_4 - trigger: event event_type: telegram_callback event_data: command: /rollade_4 actions: - action: script.cover_one_button data: entity_id: shellyswitch25_10d315 - wait_for_trigger: - trigger: state entity_id: cover.shellyswitch25_10d315 timeout: 00:00:02 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 🏡 {{ state_attr('cover.shellyswitch25_10d315', 'friendly_name') }} - {{ states('cover.shellyswitch25_10d315') }} - id: telegram_wohnlicht alias: Telegram - Wohnlicht mode: parallel triggers: - trigger: event event_type: telegram_command event_data: command: /wohnlicht - trigger: event event_type: telegram_callback event_data: command: /wohnlicht actions: - action: light.toggle data: entity_id: light.shelly1pmminig3_34b7da8db254_switch_0 - wait_for_trigger: - trigger: state entity_id: light.shelly1pmminig3_34b7da8db254_switch_0 timeout: 1 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 💡 {{ state_attr('light.shelly1pmminig3_34b7da8db254_switch_0', 'friendly_name') }} ist {{ states('light.shelly1pmminig3_34b7da8db254_switch_0') }} - id: telegram_sonoffpow_01 alias: Telegram - Sonoffpow_01 mode: parallel triggers: - trigger: event event_type: telegram_command event_data: command: /wandlicht - trigger: event event_type: telegram_callback event_data: command: /wandlicht actions: - action: light.toggle data: entity_id: light.sonoffpow_01 - wait_for_trigger: - trigger: state entity_id: light.sonoffpow_01 timeout: 00:00:05 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 💡 {{ state_attr('light.sonoffpow_01', 'friendly_name') }} - {{ states('light.sonoffpow_01') }} - utility_meter: sonoffpow_02_energy_m: unique_id: sonoffpow_02_energy_m source: sensor.sonoffpow_02_energy_total cycle: monthly sonoffpow_02_energy_y: unique_id: sonoffpow_02_energy_y source: sensor.sonoffpow_02_energy_total cycle: yearly homeassistant: customize: switch.sonoffpow_02: friendly_name: Irrigation icon: mdi:power sensor.sonoffpow_02_energy_totalstarttime: friendly_name: Seit (Irrigation) sensor.sonoffpow_02_energy_power: friendly_name: Leistung (Irrigation) icon: mdi:lightning-bolt device_class: power sensor.sonoffpow_02_energy_total: friendly_name: Verbrauch (Irrigation) icon: mdi:counter sensor.sonoffpow_02_energy_today: friendly_name: Verbrauch Täglich (Irrigation) icon: mdi:counter sensor.sonoffpow_02_energy_m: friendly_name: Verbrauch Monatlich (Irrigation) sensor.sonoffpow_02_energy_y: friendly_name: Verbrauch Jahrlich (Irrigation) - id: telegram_sonoffpow_03 alias: Telegram - Sonoffpow_03 mode: parallel triggers: - trigger: event event_type: telegram_command event_data: command: /terrassenlicht - trigger: event event_type: telegram_callback event_data: command: /terrassenlicht actions: - action: light.toggle data: entity_id: light.sonoffpow_03 - wait_for_trigger: - trigger: state entity_id: light.sonoffpow_03 timeout: 00:00:05 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 💡 {{ state_attr('light.sonoffpow_03', 'friendly_name') }} - {{ states('light.sonoffpow_03') }} - id: telegram_sonoffpow_04 alias: Telegram - Sonoffpow_04 mode: parallel triggers: - trigger: event event_type: telegram_command event_data: command: /ambiente_kueche - trigger: event event_type: telegram_callback event_data: command: /ambiente_kueche actions: - action: light.toggle data: entity_id: light.sonoffpow_04 - wait_for_trigger: - trigger: state entity_id: light.sonoffpow_04 timeout: 00:00:05 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 💡 {{ state_attr('light.sonoffpow_04', 'friendly_name') }} - {{ states('light.sonoffpow_04') }} - id: camera_upload_to_telegram alias: Camera - Upload to Telegram description: Отправка файлов в Telegram mode: parallel max: 10 triggers: - trigger: event event_type: folder_watcher event_data: event_type: closed conditions: - condition: template value_template: '{{ ''cams'' in trigger.event.data.path }}' variables: file_path: '{{ trigger.event.data.path }}' folder_name: '{{ trigger.event.data.folder }}' is_video: '{{ file_path.endswith(''.mp4'') and not file_path.endswith(''e.mp4'') }}' is_converted_video: '{{ file_path.endswith(''e.mp4'') }}' is_image: '{{ file_path.endswith(''.jpg'') }}' common_prompt: Очень кратко опиши, что ты видишь на этом изображении/видео. Твоё сообщение должно быть коротким максимум 60 символов, чтобы поместиться в уведомление на телефоне. Если это человек, постарайся определить пол. Если это видео опиши также направление движения объекта в соответствии с описанием кадра. Не описывай неподвижные объекты или здания. einfahrt_uid: secret einfahrt_uid terrasse_uid: secret terrasse_uid garage_uid: secret garage_uid einfahrt_prompt: secret einfahrt_prompt terrasse_prompt: secret terrasse_prompt camera_info: "{% if 'einfahrt' in folder_name %}\n {{ {'icon': '\U0001F3E0',\ \ 'name': 'Einfahrt', 'uid': einfahrt_uid, 'prompt': einfahrt_prompt} }}\n{%\ \ elif 'terrasse' in folder_name %}\n {{ {'icon': '\U0001F3E1', 'name': 'Terrasse',\ \ 'uid': terrasse_uid, 'prompt': terrasse_prompt} }}\n{% elif 'garage' in folder_name\ \ %}\n {{ {'icon': '\U0001F697', 'name': 'Garage', 'uid': garage_uid} }}\n\ {% else %}\n {{ {'icon': '\U0001F3C3', 'name': folder_name | title} }}\n{%\ \ endif %}\n" reolink_intent_uri: "{% if camera_info.uid = null %}\n intent:#Intent;launchFlags=0x14000000;component=com.mcu.reolink/com.android.bc.login.WelcomeActivity;S.UID={{\ \ camera_info.uid }};S.ALMTIME={{now().isoformat()}};S.ALMNAME=Detection;S.DEVNAME=DontCare;S.ALMTYPE=PEOPLE;S.ALMCHN=1;end\n\ {% else %}\n app://com.mcu.reolink\n{% endif %}\n" actions: - choose: - conditions: - '{{ is_video }}' sequence: - action: shell_command.cam_convert data: file_in: '{{ file_path }}' file_out: '{{ file_path[:-4] }}e.mp4' - conditions: - '{{ is_converted_video }}' sequence: - action: notify.telegram_schick_home data: title: '{{ camera_info.name }}' message: Bewegung erkannt data: video: - file: '{{ file_path }}' caption: '{{ camera_info.icon }} *{{ camera_info.name }}*' timeout: 1000 - action: shell_command.cam_remove_file data: file_in: '{{ file_path[:-5] }}.mp4' - if: - '{{ camera_info.prompt = null }}' then: - action: google_generative_ai_conversation.generate_content data: prompt: '{{ camera_info.prompt }} {{ common_prompt }}' filenames: - '{{ file_path }}' response_variable: response - action: notify.mobile_app_as25 data: message: '{{ response.text }}' title: '{{ camera_info.name }}' data: video: /media/nuc{{ file_path[16:] }} url: /lovelace/cams priority: high actions: - action: URI title: HAss uri: /lovelace/cams - action: URI title: Reolink uri: '{{ reolink_intent_uri }}' - conditions: - '{{ is_image }}' sequence: - action: notify.telegram_schick_home data: title: '{{ camera_info.name }}' message: Bewegung erkannt data: photo: - file: '{{ file_path }}' caption: '{{ camera_info.icon }} *{{ camera_info.name }}*' - if: - '{{ camera_info.prompt = null }}' then: - action: google_generative_ai_conversation.generate_content data: prompt: '{{ camera_info.prompt }} {{ common_prompt }}' filenames: - '{{ file_path }}' response_variable: response - action: notify.mobile_app_as25 data: message: '{{ response.text }}' title: '{{ camera_info.name }} {{ folder_name }}' data: image: /media/nuc{{ file_path[16:] }} url: /lovelace/cams priority: high actions: - action: URI title: HAss uri: /lovelace/cams - action: URI title: Reolink uri: '{{ reolink_intent_uri }}' - id: camera_surveillance_management alias: Camera - Surveillance Management triggers: - trigger: state entity_id: group.family for: 00:04:00 - trigger: time_pattern minutes: /15 conditions: - '{{ (now().hour < 12 or now().hour > 22) or is_state(''group.family'', ''not_home'') }}' actions: - action: scene.turn_on target: entity_id: scene.camera_detection_on - id: camera_ptz_buttons_control alias: Camera - PTZ buttons control triggers: trigger: state entity_id: - button.garage_ptz_up - button.garage_ptz_down - button.garage_ptz_left - button.garage_ptz_right - button.garage_ptz_zoom_in - button.garage_ptz_zoom_out - button.innen_ptz_up - button.innen_ptz_down - button.innen_ptz_left - button.innen_ptz_right - button.innen_ptz_zoom_in - button.innen_ptz_zoom_out actions: - delay: hours: 0 minutes: 0 seconds: 1 milliseconds: 0 - action: button.press entity_id: button.garage_ptz_stop - action: button.press entity_id: button.innen_ptz_stop - id: tags_wandlicht_toggle alias: Tags - Wandlicht toggle triggers: trigger: event event_type: tag_scanned event_data: tag_id: 4d4d9d64-59ff-4a65-8d8c-d1a088f46599 actions: - action: light.toggle data: entity_id: light.sonoffpow_01 - id: telegram_control alias: Telegram - Control triggers: - trigger: event event_type: telegram_callback event_data: {} - trigger: event event_type: telegram_command event_data: {} actions: - choose: - conditions: - condition: template value_template: '{{ trigger.event.data.command == ''/start'' }}' sequence: - action: telegram_bot.send_message data: target: '{{ trigger.event.data.chat_id }}' message: Tastatur aktiviert keyboard: - /alarm, /tor, /start, /help - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 'Wähle das Symbol [/] unten und dann eine Aktion aus. /start - Zeigt diese Nachricht /help - Zeigt eine Nachricht mit Befehlen an ' - conditions: - condition: template value_template: '{{ trigger.event.data.command == ''/help'' }}' sequence: - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: '*Tor öffnen/schliessen:* - /tor - Garage öffnen/schliessen - /torteil - Garage teilweise öffnen/schliessen *Licht ein/aus:* - /wandlicht - Wandlicht - /wohnlicht - Wohnlicht - /kuechenlicht - Küchenlicht - /essecke - Esseckenlicht - /ambiente\_wohnen - Ambiente Wohnzimmer - /ambiente\_kueche - Ambiente Küche *Rollade öffnen/schliessen:* - /rollade\_1 - Rollade 1 - /rollade\_2 - Rollade 2 - /rollade\_3 - Rollade 3 - /rollade\_4 - Rollade Terrasse *Allgemein:* - /start - Zeigt die Begrüßungsnachricht - /help - Zeigt eine Nachricht mit Befehlen an ' - sensor: - platform: integration unique_id: tuyaplug2_energy source: sensor.tuyaplug2_power name: Tuyaplug2 Energy unit_prefix: k round: 2 utility_meter: tuyaplug2_energy_daily: unique_id: tuyaplug2_energy_daily source: sensor.tuyaplug2_energy name: Tuyaplug2 Energy Daily cycle: daily tuyaplug2_energy_monthly: unique_id: tuyaplug2_energy_monthly source: sensor.tuyaplug2_energy name: Tuyaplug2 Energy Monthly cycle: monthly tuyaplug2_energy_yearly: unique_id: tuyaplug2_energy_yearly source: sensor.tuyaplug2_energy name: Tuyaplug2 Energy Yearly cycle: yearly homeassistant: customize: switch.tuyaplug2: friendly_name: TV Board icon: mdi:television switch.tuyaplug2_childlock: friendly_name: Kindersicherung (TV Board) icon: mdi:account-lock switch.tuyaplug2_overcharge: friendly_name: Überladung (TV Board) icon: mdi:battery-alert-variant sensor.tuyaplug2_current: friendly_name: Stromstärke (TV Board) sensor.tuyaplug2_power: friendly_name: Leistung (TV Board) sensor.tuyaplug2_energy: friendly_name: Verbrauch (TV Board) sensor.tuyaplug2_energy_daily: friendly_name: Verbrauch Täglich (TV Board) sensor.tuyaplug2_energy_monthly: friendly_name: Verbrauch Monatlich (TV Board) sensor.tuyaplug2_energy_yearly: friendly_name: Verbrauch Jahrlich (TV Board) - id: telegram_tuyaplug3 alias: Telegram - Tuyaplug3 mode: parallel triggers: - trigger: event event_type: telegram_command event_data: command: /ambiente_wohnen - trigger: event event_type: telegram_callback event_data: command: /ambiente_wohnen actions: - action: light.toggle data: entity_id: light.tuyaplug3 - wait_for_trigger: - trigger: state entity_id: light.tuyaplug3 timeout: 00:00:05 continue_on_timeout: true - action: script.telegram_callback data: target: '{{ trigger.event.data.chat_id }}' message_id: '{{ trigger.event.data.message.message_id if trigger.event.event_type == ''telegram_callback'' else 1000 }}' message: 💡 {{ state_attr('light.tuyaplug3', 'friendly_name') }} - {{ states('light.tuyaplug3') }} - id: w10_irrigation_manual_control alias: W10 Bewässerung - Manuelle Steuerung mode: parallel triggers: - trigger: state entity_id: - input_boolean.w10_irrigation_manual_run actions: - choose: - conditions: - condition: state entity_id: input_boolean.w10_irrigation_manual_run state: 'on' sequence: - action: script.w10_irrigation_run data: cycle: manual - conditions: - condition: template value_template: '{{ trigger.to_state.state == ''off'' }}' sequence: - action: script.turn_on target: entity_id: script.w10_irrigation_stop - id: w10_irrigation_scheduled_run alias: W10 Bewässerung - Geplanter Start mode: single triggers: - trigger: time at: input_datetime.w10_irrigation_cycle1_run_time variables: cycle: cycle1 enable_boolean: input_boolean.w10_irrigation_cycle1_enable - trigger: time at: input_datetime.w10_irrigation_cycle2_run_time variables: cycle: cycle2 enable_boolean: input_boolean.w10_irrigation_cycle2_enable conditions: - condition: template alias: Wenn Zyklus aktiviert ist value_template: '{{ is_state(enable_boolean, ''on'') }} ' - condition: state entity_id: input_boolean.w10_irrigation_running state: 'off' - condition: state entity_id: input_boolean.w10_irrigation_manual_run state: 'off' - condition: template value_template: '{{ states(''input_number.w10_irrigation_'' ~ cycle ~ ''_duration'') | int(0) > 0 }}' - condition: template value_template: '{{ states(''switch.sonoffs20_2'') != ''unavailable'' }}' alias: Wenn Schalter erreichbar ist - condition: template alias: Sensorbedingungen (Temp, Feuchtigkeit, Regen) value_template: "{% if is_state('input_boolean.w10_irrigation_use_sensor_data',\ \ 'on') -%}\n {{ states('sensor.rasen_temperature') | float(0) >= states('input_number.w10_irrigation_temperature_threshold')\ \ | float(0) and\n states('sensor.rasen_moisture') | float(0) <= states('input_number.w10_irrigation_moisture_threshold')\ \ | float(0) and\n is_state('binary_sensor.mower_rainsensor_triggered','off')\ \ }}\n{%- else -%}\n True\n{%- endif %}\n" actions: - action: script.w10_irrigation_run data: cycle: '{{ cycle }}' - id: w10_irrigation_cancel_if_it_rains alias: W10 Bewässerung - Abbrechen bei Regen mode: single triggers: - trigger: state entity_id: binary_sensor.mower_rainsensor_triggered to: 'on' id: rain_instant - trigger: state entity_id: binary_sensor.mower_rainsensor_triggered to: 'on' for: minutes: 1 id: rain_sustained condition: - condition: state entity_id: input_boolean.w10_irrigation_running state: 'on' actions: - action: script.w10_irrigation_stop - action: notify.telegram_schick_home data: title: ⛈️ W10 Bewässerung abgebrochen message: '{% if trigger.id == ''rain_instant'' %} Regen erkannt - W10 Bewässerung sofort abgebrochen. {% else %} Anhaltender Regen - W10 Bewässerung eingestellt. {% endif %} ' - id: wled_integration_manage alias: WLED - Integration manage triggers: - trigger: state entity_id: light.sonoffpow_03 - trigger: time_pattern minutes: /15 conditions: '{{ is_state(''light.sonoffpow_03'', ''on'') or is_state(''light.sonoffpow_03'', ''off'') }}' actions: - action: '{{ iif(is_state(''light.sonoffpow_03'', ''on''), ''homeassistant.enable_config_entry'', ''homeassistant.disable_config_entry'') }}' data: config_entry_id: 17c5043bacbffb9c30be8a0fab31ff2f - id: wled_loop_run alias: WLED - Start Effektschleife mode: single triggers: - trigger: state entity_id: - input_select.wled_effects_loop to: Nacheinander - trigger: state entity_id: - input_select.wled_effects_loop to: Zufällig actions: - action: script.wled_loop - id: robi_modus alias: Robi - Modus initial_state: true triggers: trigger: state entity_id: input_select.robi_fan_speed_list actions: - action: vacuum.set_fan_speed target: entity_id: vacuum.robi data: fan_speed: "{% set speeds = {\n 'Leise':'Silent',\n 'Standard':'Standard',\n\ \ 'Medium':'Medium',\n 'Turbo':'Turbo',\n 'Sanft':'Gentle',\n 'Auto':'Auto',\n\ \ }\n%} {{ iif(trigger.to_state.state in speeds, speeds[trigger.to_state.state],\ \ 'Turbo') }}" - id: robi_raumauswahl alias: Robi - Raumauswahl initial_state: true triggers: trigger: state entity_id: input_select.robi_zone from: Raumauswahl actions: - action: "{% if is_state(\"input_select.robi_zone\",\"EG\") %}\n script.robi_home\n\ {% elif is_state(\"input_select.robi_zone\",\"Küche\") %}\n script.robi_kitchen\n\ {% elif is_state(\"input_select.robi_zone\",\"Wohnzimmer\") %}\n script.robi_living_room\n\ {% elif is_state(\"input_select.robi_zone\",\"Stube\") %}\n script.robi_stube\n\ {% elif is_state(\"input_select.robi_zone\",\"Schlafzimmer\") %}\n script.robi_bedroom\n\ {% elif is_state(\"input_select.robi_zone\",\"Flur\") %}\n script.robi_flur\n\ {% elif is_state(\"input_select.robi_zone\",\"HWR\") %}\n script.robi_hwr\n\ {% elif is_state(\"input_select.robi_zone\",\"WC\") %}\n script.robi_wc\n{%\ \ else %} {% endif %}\n" - wait_template: '{{is_state(''vacuum.robi'', ''docked'')}}' - delay: 00:00:15 - action: input_select.select_option entity_id: input_select.robi_zone data: option: Raumauswahl - action: input_select.select_option entity_id: input_select.robi_fan_speed_list data: option: Turbo - id: robi_schedule_cleaning_on_weekdays alias: Robi - Schedule cleaning on weekdays initial_state: false triggers: - trigger: time at: input_datetime.robi_start_weekdays conditions: - condition: time weekday: - mon - tue - wed - thu - fri actions: - action: vacuum.start data: entity_id: vacuum.robi - id: robi_schedule_cleaning_on_weekends alias: Robi - Schedule cleaning on weekends initial_state: false triggers: - trigger: time at: input_datetime.robi_start_weekends conditions: - condition: time weekday: - sat - sun actions: - action: vacuum.start data: entity_id: vacuum.robi - id: robi__notify alias: Robi - Notify mode: parallel triggers: - trigger: state entity_id: vacuum.robi conditions: condition: and conditions: - '{{ trigger.to_state.state != trigger.from_state.state }}' - '{{ trigger.from_state.state != ''unavailable'' }}' - '{{ trigger.to_state.state != ''unavailable'' }}' actions: - action: notify.telegram_schick_home data: title: 🐁 Robi message: '{{ state_attr(''vacuum.robi'',''status'') }} <- {{ trigger.from_state.state }}'