Skip to main content

Heizung An- / Aus

Wenn der Status eines Switches wechselt wird das Thermostat an- oder ausgeschaltet.

Beim Wechsel nach Aus innerhalb des Komfort Zeitplanes  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.


Code:

alias: Heizung An / Aus
description: ""
trigger:
    - platform: state
      entity_id:
        - input_boolean.heizung_buero_on_off
        - input_boolean.heizung_wc_on_off
        - ... alle weiteren Switche
      id: HeizungAN
      to: "on"
    - platform: state
      entity_id:
        - input_boolean.heizung_buero_on_off
        - input_boolean.heizung_wc_on_off
        - .. alle weiteren Switche
      id: HeizungAUS
      to: "off"
condition:

    # Prüfung dass kein Urlaub ist
    - condition: state
      entity_id: input_boolean.urlaub
      state: "off"
action:
    - variables:
          # Trigger "input_boolean.heizung_buero_on_off" 
        # der Split teilt den String in Textblöcke getrennt durch das '_' Zeichen.

        # wir zählen ab 0 somit ist der Raum der 2te Block
        room: "{{ trigger.entity_id.split('_')[2] }}"

            # Einfache Templates zum setzen der Entities
        device: "{{ 'climate.thermostat_' + room }}"
        comfort: "{{ 'input_number.thermostat_' + room + '_comfort' }}"
        eco: "{{ 'input_number.thermostat_' + room + '_eco' }}"

         # die aktuelle Temperatur des Thermostates
        device_temp: "{{ state_attr( device, 'temperature') }}"

     

     # die aktuell gespeicherten Werte für Komfort- und Absenkung (Eco) Temperatur
        eco_temp: "{{ states(eco) }}"
        comfort_temp: "{{ states(comfort) }}"

     

     # Die Zeitplan Entitiät     
            scheduler: "{{ 'schedule.heizung_' + room + '_eco' }}"

     

     # Der Status des Zeitplanes und des An-/Aus Switches als BOOL Wert
       # Damit kann der Status direkt in Bedingungen verwendet werden 
        scheduler_state: "{{ states(scheduler) | bool }}"
        scheduler_switch: "{{ states('input_boolean.heizung_' + room + '_zeitplan') | bool }}"
    - choose:
        - conditions

         

         # Heizung wird aus geschaltet
           - condition: trigger
              id: HeizungAUS
          sequence:
            - if:

             

              # Prüfung dass mit Zeitplan gesteuert wird
                - "{{ scheduler_state }}"
              then:

                            # Wenn "scheduler_state" ist WAHR (also state: On) ist der Zeitplan im Eco Mode!
                # dann wird nur Aus geschaltet
                - service: climate.set_temperature
                  data:
                    temperature: "5"
                  target:
                    entity_id: "{{ device }}"
              else:

              

              # Wenn "scheduler_state" ist FALSE (also state: Off) ist der Zeitplan im Komfort Mode!
                # dann wird die aktuelle Temperatur gesichert und dann erst Aus geschaltet.
                - service: input_number.set_value
                  data_template:
                    value: "{{ device_temp }}"
                  target:
                    entity_id: "{{ comfort }}"
                - service: climate.set_temperature
                  data:
                    temperature: "5"
                  target:
                    entity_id: "{{ device }}"
        - conditions:

            # Heizung wird Ein geschaltet
            - condition: trigger
              id: HeizungAN
          sequence:
            - if:

             

              # Prüfung dass mit Zeitplan gesteuert wird
                - "{{ scheduler_state }}"

              then:

             

             # die entsprechende Temperatur wird gesetzt
                - service: climate.set_temperature
                  data:
                    temperature: "{{ eco_temp }}"
                  target:
                    entity_id: "{{ device }}"
              else:
                - service: climate.set_temperature
                  data:
                    temperature: "{{ comfort_temp }}"
                  target:
                    entity_id: "{{ device }}"
mode: parallel
max: 20