Skip to main content

Heizung Absenkung Zeit

Wenn der Status eines Zeitplans wechselt soll die dazugehörige Temperatur gesetzt werden.

Beim Wechsel von Komfort nach Absenkung wird die aktuelle Temperatur in die Komfort Temperatur Entität geschrieben.

Alle nötigen Stati und Entitäten werden im Variablen Block gesetzt, damit bleibt die Sequence schön kurz.

Wichtig ist der Modus "parallel" und max sollte größer sein als die Anzahl der Räume! Ansonsten ist die Gefahr groß, dass Automatisierungsläufe nicht ausgeführt werden.

2023.02.19: Überprüfung ob Fenster geschlossen sind bevor die Komfort Temperatur gespeichert wird

Code

alias: Heizung Absenkung Zeit
description: ""
trigger:
  - platform: state
    entity_id:
      - schedule.heizung_wc_eco
      - schedule.heizung_eingang_eco
      - ...schedule.heizung_flur_eco
      - schedule.heizung_buero_eco
      - schedule.heizung_werkstatt_eco
      - schedule.heizung_ez_eco
      - schedule.heizung_wz_eco
      - schedule.heizung_sz_eco
      - schedule.heizung_gruen_eco
      - schedule.heizung_rosa_eco
      - schedule.heizung_lydi_eco
      - schedule.heizung_kinderbad_eco
      - schedule.heizung_carrera_eco
      - schedule.heizung_wcdg_eco
      - schedule.heizung_studio_eco
    id: AbsenkungStart
    to: "on"
  - platform: state
    entity_id:
      - schedule.heizung_wc_eco
      - schedule.heizung_eingang_eco
      - ...schedule.heizung_flur_eco
      - schedule.heizung_buero_eco
      - schedule.heizung_werkstatt_eco
      - schedule.heizung_ez_eco
      - schedule.heizung_wz_eco
      - schedule.heizung_sz_eco
      - schedule.heizung_gruen_eco
      - schedule.heizung_rosa_eco
      - schedule.heizung_lydi_eco
      - schedule.heizung_kinderbad_eco
      - schedule.heizung_carrera_eco
      - schedule.heizung_wcdg_eco
      - schedule.heizung_studio_eco
    to: "off"
    id: AbsenkungEnd
condition:
  - condition: state
    entity_id: input_boolean.urlaub
    state: "off"
action:
  - variables:
      room: "{{ trigger.entity_id.split('_')[1] }}"
      device: "{{ 'climate.thermostat_' + room }}"
      comfort: "{{ 'input_number.thermostat_' + room + '_comfort' }}"
      eco: "{{ 'input_number.thermostat_' + room + '_eco' }}"
      device_temp: "{{ state_attr( device, 'temperature') }}"
      eco_temp: "{{ states(eco) }}"
      comfort_temp: "{{ states(comfort) }}"
      scheduler: "{{ 'schedule.heizung_' + room + '_eco' }}"
      scheduler_state: "{{ states(scheduler) | bool }}"
      scheduler_switch: "{{ states('input_boolean.heizung_' + room + '_zeitplan') | bool }}"
      climate_state: "{{ states('input_boolean.heizung_' + room + '_on_off') | bool }}"
      window_state: "{{ states('binary_sensor.fenster_' + room + '_open_close') }}"
  - if:
      - "{{ scheduler_switch }}"
    then:
      - choose:
          - conditions:
              - condition: trigger
                id: AbsenkungStart
            sequence:
              - if:
                  - "{{ window_state }} == 'off'"
                then:
                  - service: input_number.set_value
                    data_template:
                      value: "{{ device_temp }}"
                    target:
                      entity_id: "{{ comfort }}"
              - service: climate.set_temperature
                data_template:
                  temperature: "{{ eco_temp }}"
                target:
                  entity_id: "{{ device }}"
          - conditions:
              - condition: trigger
                id: AbsenkungEnd
            sequence:
              - service: climate.set_temperature
                data_template:
                  temperature: "{{ comfort_temp }}"
                target:
                  entity_id: "{{ device }}"
mode: parallel
max: 20