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: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