Smarte Thermostate mit Home Assistant an einem Beispiel erklärt

Eigentlich versuche ich immer, auf Fragen von Lesern meines Blogs bestmöglich einzugehen. So auch mit diesem Beitrag, nach welchem Volkert „nett gefragt“ hat 😉 Konkret möchte Volkert wissen, wie man mit Home Assistant Z-Wave Thermostate so steuern und kontrollieren kann, dass unterschiedliche Temperaturen als Ziel-Temperaturen je nach Szenario gesetzt werden können.

Da ich so etwas selbst bei mir nutze, gebe ich gerne einen weiteren kleinen Einblick in meinen YAML-Code!

Z-Wave Thermostate smart steuern

Smarte Thermostate mit Home Assistant

Bevor wir zum eigentlichen Code kommen, möchte ich vorab erst noch einmal beschreiben, was man mit den nachfolgenden Code-Schnipseln erreichen kann:

  • Über das Lovelace-Frontend lassen sich mehrere Ziel-Temperaturen per sogenanntem Input-Select (Home Assistant Input Select) auswählen und festlegen. Ich komme derzeit mit 3 unterschiedlichen Temperaturen zurecht: Nacht-Temperatur, Heiz-Temperatur und Tages-Temperatur. (wie so ein Input-Select in Lovelace aussieht, siehst du in einem Screenshot nach dieser Aufzählung!)
  • In unserem Alltag gibt es gewisse Regelmäßigkeiten, so dass ich anhand dieser die unterschiedlichen Temperaturen „abfeuern“ kann. Als Beispiel stehen wir (dank kleiner Kinder im Haus) eigentlich nie nach 7 Uhr auf. Ebenso gehen wir eigentlich immer gegen 22 Uhr ins Bett.
  • Alle Handys im Haus sind Home Assistant bekannt, so dass Home Assistant weiß, ob jemand mit Handy zu Hause ist.

Hier ein Screenshot von einem Home Assistant Input-Select – konkret sogar so, wie ich bei uns die Temperaturen bei uns im Frontend steuern kann: Tagsüber soll es 19 Grad, nachts nur 18 Grad und wenn aktiv geheizt wird 21 Grad warm sein!

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 367 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!

Home Assistant Input Select
Input Select in Home Assistant

Input Select für Temperatur-Auswahl anlegen

Wie in dem vorherigen Screenshot zu sehen, nutze ich 3 Input-Selects um bei uns im Haus die Z-Wave Thermostate für uns passend zu steuern.

Diese Input-Selects müssen einmalig in der configuration.yaml definiert werden, wie das geht sieht man im beispielhaft im folgenden Code:

#configuration.yaml
input_select:
  day_temp:
    name: Tagestemperatur
    options:
      - 18
      - 19
      - 20
      - 21
    initial: 18
    icon: mdi:home-thermometer
  heat_temp:
    name: Heiz-Temperatur
    options:
      - 18
      - 19
      - 20
      - 21
      - 22
    initial: 20
    icon: mdi:thermometer-high
  night_temp:
    name: Nacht-Temperatur
    options:
      - 16
      - 17
      - 18
      - 19
      - 20
    initial: 18
    icon: mdi:thermometer-chevron-down

Als Ergebnis stehen dir nun 3 neue Input-Selects zur Verfügung, welche du in Lovelace einbinden kannst.

   cards:
      - entities:          
          - entity: input_select.day_temp
          - entity: input_select.heat_temp
          - entity: input_select.night_temp

Wenn du diese in Lovelace einbindest, solltest du ein vergleichbares Ergebnis erzielen, wie in diesem Screenshot:

Smarte Thermostate mit Home Assistant an einem Beispiel erklärt

Über diese neuen Auswahl-Boxen kannst du nun im Frontend aus den definierten Bereichen die gewünschte Temperatur auswählen. Als Ergebnis können wir nun in unseren Automations etc. auf den gewählten Wert des jeweiligen Input-Selects zugreifen:

Mittels

{{ states('input_select.heat_temp') }}

kann mit dem gewählten Wert so gearbeitet werden, als wäre es eine fix im Code geschriebene Zahl. Wie das im konkreten dann aussieht, schauen wir uns als nächstes an:

Automation-Beispiele für Temperatur mit Input-Select

Letztlich nehmen wir nun unsere (hoffentlich) bestehenden Automations und passen diese an. Damit du die nun per Input-Select definierten Temperaturen nutzen kannst, musst du dir eine Grundlogik deiner Automations „zurechgelegt“ haben. Was meine ich damit?

Wie im Anfang dieses Beitrages beschrieben, musst du natürlich deine Gewohnheiten beziehungsweise Regelmäßigkeiten erkennen und für diese Automations erstellen. Wie das bei mir aussieht, zeige ich im folgenden und nutze dabei direkt die Temperaturen aus den Input-Selects!

- alias: Temperatur hoch
  trigger:
    - platform: time
      at: '06:00'
    - platform: time
      at: '17:00'
  action:
  - service: climate.set_temperature
    data_template:
      temperature: "{{ states('input_select.heat_temp') }}"
      hvac_mode: heat
      entity_id: climate.danfoss_devolo_home_control_radiator_thermostat_heating_1_7

Hierzu eine kurze Erklärung: Um 8 Uhr und um 17 Uhr stelle ich die Temperatur auf die per Input-Select gewählte Heiz-Temperatur.

Wenn eine Temperatur hochgeht, muss sie natürlich auch wieder runtergehen. Das ist inhaltlich jetzt wenig überraschend und spannend, aber das soll hier ja ein brauchbares Beispiel sein:

- alias: Tagestemperatur 
  trigger:
  - at: '08:00'
    platform: time
  action:
  - data_template:
      entity_id: climate.danfoss_devolo_home_control_radiator_thermostat_heating_1_7
      hvac_mode: heat
      temperature: "{{ states('input_select.day_temp') }}"
    service: climate.set_temperature

Um 8 Uhr stellen wir die Temperatur auf die Tages-Temperatur, welche wir per Input-Select definiert haben. Ab 8 Uhr sind in der Regel „alle aus dem Haus“, so dass wir nicht unnötig heizen müssen.

Sobald wir nun wieder nach Hause kommen, soll es natürlich wärmer sein. Als Konsequenz möchten wir die Heat-Temperatur wieder abfeuern. Hierfür müssen wir aber nichts weiter tun, weil bereits mit „Temperatur hoch“ auch um 17 Uhr die Temperatur angehoben wird.

Ab 17 Uhr ist es nun also wieder etwas wärmer und als nächstes brauchen wir nun noch eine Automation, welche die Nacht-Temperatur aktiviert:

- alias: Temperatur runter
  trigger:
  - at: '18:00'
    platform: time
  action:
  - service: climate.set_temperature
    data_template:
      entity_id: climate.danfoss_devolo_home_control_radiator_thermostat_heating_1_7
      hvac_mode: heat
      temperature: "{{ states('input_select.night_temp') }}"

Um 18 Uhr schon wieder aktivieren wir die Nacht-Temperatur (welche ja auch per Input-Select ausgewählt und definiert ist).

Über Nacht haben wir nun die leicht abgesenkte Temperatur und werden als nächstes erst wieder die Temperatur um 6 Uhr wieder anheben (erstes Code-Beispiel).

Steuerung Temperaturen im Tagesverlauf

Als Ergebnis erhält man dann einen Tagesverlauf, welcher wie folgt aussieht:

Home Assistant Tagesverlauf Temperaturen

Zu welchen Uhrzeiten du die 3 unterschiedlichen Temperaturen auslöst, und welche Werte diese haben, kannst du natürlich ganz deinen Bedürfnissen entsprechend selbst definieren!

Darüber hinaus noch ein praktischer Hinweis: Anders, als hier in den Code-Beispielen dargestellt, wechsle ich morgens nicht zu einer festen Uhrzeit auf die Tages-Temperatur, sondern mache dies von einer konkreten Aktion im Haus abhängig. Da wir nach dem morgendlichen Bad-Besuch im Badezimmer lüften, kann ich diese Aktion als Auslöser für das Aktivieren der Tagestemperatur nutzen. Wie das konkret geht, habe ich in dem Beitrag Automation beim Fenster öffnen/lüften beschrieben!

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

Foto des Autors
Autor
Olli
Ca. Ende 30, seit Windows 3.1 Fan von Computern, Gadgets, Handys und allem, was sich irgendwie programmieren lässt. Ich mag es gerne individuell und möglichst einfach, probiere aber auch gerne neue Dinge sofort aus. :) Konnte ich dir helfen? Dann würde ich mich über ein Bier freuen ;) Bier-Spende

3 Gedanken zu „Smarte Thermostate mit Home Assistant an einem Beispiel erklärt“

  1. Mega starke Idee!!! Ich hab mir das gleich nachgebaut. Ich würde gerne noch eine Einstellung der Wochenprogramme aus der Raspberrymatic integrieren. Leider funktioniert das aber nicht… irgendweclhe Ideen?

    alias: Wochenprogramm
    trigger:
    – platform: time
    at: ’14:36′
    – platform: time
    at: ’17:00′
    action:
    – device_id: c90bc3g5708274e34f93c55c0356400e
    domain: climate
    entity_id: climate.buro_schreibtisch_heizung
    type: set_preset_mode
    preset_mode: ‚{{ states(“input_select.wp_selection“) }}‘

    und in der configurtion.yaml
    wp_selection:
    name: Heizprogramm
    options:
    – week_program_1
    – week_program_2
    – week_program_3
    initial: week_program_1
    icon: mdi:thermometer-chevron-down

    Antworten
    • Ich kenne mich mit Raspberrymatic nicht aus! Aber in deinem Code irritiert mich das , beim preset_mode. Wenn überhaupt sollte es vermutlich ein ‚ sein, wobei ich denke, dass es sogar ganz ohne “ passen sollte?

      Antworten

Schreibe einen Kommentar