Skip to main content

SET Temperature Script

Ich habe bemerkt, dass die Temperatur nicht immer mit einem Befehl an die TRVs richtig gesetzt wird. Das habe ich sowohl bei den Shellys als auch bei den Danfoss Thermostaten festgestellt.

Darum habe ich nun ein Skript erstellt, das solange die Temperatur setzt, bis sie auch tatsächlich anliegt.

Aktuell suche ich noch nach der Erklärung, in welchem Modus das Skript laufen muss um Überschneidungen zu vermeiden und auch keine Endlos Schleife zu erhalten sodass es nicht endente Jobs gibt.

Um das Script variabel zu halten werden der Raum und die Zieltemperatur übergeben.

Die gesetzte Temperatur liest das Script in jedem Run erneut aus.

Das Delay für den nächsten Test sind 30s.

Das Script wird mit "turn_on" gestartet. Damit wartet die Automatisierung nicht auf das Script Ende.

  - service: script.turn_on
    data:
      variables:
        room: "{{ room }}"
        temp: "{{ temp }}"
    target:
      entity_id: script.heizung_set_temperature
alias: Heizung Set Temperature
sequence:
  - variables:
      device: "{{ 'climate.thermostat_' + room }}"
  - repeat:
      until:
        - or:
            - condition: template
              value_template: "{{ state_attr(device, 'temperature') == temp  }}"
            - condition: template
              value_template: "{{ repeat.index  == 10 }}"
      sequence:
        - service: climate.set_temperature
          continue_on_error: true
          data:
            temperature: "{{ temp }}"
          target:
            entity_id: "{{ device }}"
        - delay:
            hours: 0
            minutes: 0
            seconds: 30
            milliseconds: 0
mode: queued
max: 20

Aktuell stelle ich mir die Frage, wenn sich der Sollzustand während der Script Ausführung ändert, was dann die Beste Lösung ist.

Änderungen können sein:

  • Fenster Zustand
  • Absenkung
  • Status Heizung
  • ...

Und auch falls ein Thermostat nicht erreichbar ist darf das Script nicht unendlich laufen. "{{ repeat.index  <= 10 }}"