Smarte Heizungssteurung mit Heizkörperthermostaten

Hey Aladin,
ja, es sind die Aqara E1.
ZHA/Skyconnect hatte ich mal getestet und mich dann dagegen entschieden.
Ich nutze Zigbee2MQTT, weil dort oftmals mehr Entitäten im Vergleich zu ZHA zur Verfügung gestellt werden (bei identischen Geräten).
Zu deiner Anfrage bzgl. meiner Umsetzung:
Was genau möchtest du wissen?
Das eine ist die „normale“ Heizungssteuerung mit einem Scheduler.
Das zweite ist die Berücksichtigung von „Tagesprogrammen“ (Homeoffice, Urlaub, krank) und an-/abwesend.
Das dritte ist die Berechnung der Vorheizzeit, wenn um 8 Uhr die Heizung nicht erst starten soll, sondern die Zieltemperatur bereits erreicht werden soll.

HI , erstmal frohes neues Jahr :slight_smile:
Ja die Aqara E1 sind mittlerweile eingetroffen und um Gegensatz zu den Shelly Blu TRV machen sie einen guten Eindruck und funktionieren so erstmal direkt über ZHA !
In Zigbee2Mqtt muss ich mich erstmal einlesen und schauen ob ich dies mal teste .
Erstmal ist meine Frau happy ,da die Bude wieder warm ist :slight_smile:
Lief bisher alles Prima , ich habe better Thermostat mit einem Sheduler laufen und muss mal schauen wie es sich in der Praxis weiter bewährt …aber danke für deine Rückmeldung

Wie hast du das gelöst, bestimmt mit einem Script?

@Aladin212 Ich weiß da scheiden sich die Geister, aber ich nutze auch ZHA und bin damit eigentlich sehr zu frieden (aktuell 35 Geräte). Bisher konnte alles easy anlernen, waren aber auch immer Zigbee 3.0 Geräte und das wird nativ von ZHA unterstützt. Vorteil sehe ich für mich, dass ZHA von Home Assistant kommt und mit Sicherheit die meisten Geräte unterstütz. Bei Zigbee2Mqtt müssen alle Geräte händisch im Code von den Entwicklern hinterlegt werden, deswegen wird glaube ich auch immer mit knapp 4000 unterstützen Geräte geworben. Bei ZHA werden alle Geräte unterstützt die zigbee 3.0 nutzen.

1 „Gefällt mir“

Eigentlich sind es nur Helfer und Automationen mit etwas yaml-Code.
Wenn ich etwas Zeit habe, werde ich mal meine Lösung hier posten.

1 „Gefällt mir“

Ich nutze auch schon seit Jahren die Homematic Thermostate für Wandheizkörper und Fußbodenheizungen. An den Fenstern die verdeckten Homematic-Fenstersensoren und das Ganze mit Raspberrymatic. Langfristiges Ziel: Das in HA mit dem HM Stick zu legen damit der Pi weg kann.
Die Aktoren laufen sowas von Zuverlässig, da kann der Zigbee-Schrott bei weitem nicht mit halten. Aber: is inzwischen unverschämt teuer geworden. Heute würde ich mir wohl das Bosch System holen was aber leider keine verdeckten Fenstersensoren hat :-/
Die Steuerung erfolgt über das super Blueprint „Advanced Heating Control V5“ von panhans.
Es ist einfach irre was das inzwischen kann und wir sparen damit richtig Gas bzw Holz.

2 „Gefällt mir“

Sehe ich auch, auch wenn Homematic nicht mehr das neuste ist. Zuverlässig sind die Aktoren. Nutze die inzwischen knapp 10 Jahre und habe bisher nur ein Unterputzaktor getauscht.

1 „Gefällt mir“

Ich versuche mal, meine Lösung zum berechneten Heizbeginn übersichtlich darzustellen…
Im Prinzip wird mit Hilfe von 3 Automationen folgendes gemacht:

  1. Berechnung der Heizdauer für 0,5°C sobald die Heizung anfängt zu heizen
  2. Berechnung der Uhrzeit für den Heizbeginn, damit zur geplanten Zeit die Zieltemperatur bereits erreicht wird
  3. Trigger für die berechnete Uhrzeit, um die Komforttemperatur zu aktivieren → Heizung startet mit dem Heizen
    Dies kann dann in der Heizungsautomatisierung z.B. Blueprint „ECO Heating Ultimate“ von Simon42 als „Comfort Temperatur Checker“ verwendet werden.
  • verwendete Entitäten:

  • climate.wz_heizung
    Steuerung der Heizung (stellt über Attribut HVAC Action fest, ob gerade geheizt wird)

  • sensor.wz_luftsensor_temperature
    Ist-Temperatur des Raumes

  • switch.schedule_wz_heizplan
    Zeitplan für die Heizungssteuerung - schaltet input_boolean.wz_heizung_komforttemperatur ein bzw. aus

  • benötigte Helfer:

  • input_number.wz_heizdauer
    benötigte Heizzeit für 0,5°C in Sekunden

  • input_number.wz_heizung_komforttemperatur
    Komforttemperatur in °C

  • input_number.wz_heizung_ecotemperatur
    Ecotemperatur in °C

  • input_boolean.wz_heizung_komforttemperatur
    Aktivierung der Komforttemperatur für die Heizungssteuerung

  • sensor.wz_heizung_nachste_anderung
    Template-Sensor als Zeitstempel, der aus dem Scheduler die nächste on/off-Änderung ausliest

Template

{{ state_attr('switch.schedule_wz_heizplan','next_trigger') }}

  • sensor.wz_heizung_nachste_temperatur
    Template-Sensor als Temperatur, der aus dem Scheduler und input_number.wz_heizung_komforttemperatur und input_number.wz_heizung_ecotemperatur die nächste Zieltemperatur ausliest
Template
{% if state_attr('switch.schedule_wz_heizplan','actions')[state_attr('switch.schedule_wz_heizplan','next_slot')|int].service == 'input_boolean.turn_on' %}
  {{states.input_number.wz_heizung_komforttemperatur.state|float(1)}}
{% else %}
  {{states.input_number.wz_heizung_ecotemperatur.state|float(1)}}
{% endif %}
  • input_datetime.wz_heizung_nachste_anderung_berechnet
    Berechneter Heizbeginn auf Grundlage des Schedulers sowie der Temperaturdifferenz und Heizdauer

  • input_number.wz_heizzeitdifferenz
    Da sich die Ist-Temperatur oft ändert, wird alle 15 min. die Heizzeitdifferenz zur Komforttemperatur neu berechnet

  • erforderliche Automationen:

  • WZ Heizung Messung Dauer
    misst die Dauer, die die Heizung braucht, um es 0,5°C wärmer zu machen

YAML-Code
alias: WZ Heizung Messung Dauer
description: ""
triggers:
  - trigger: state
    entity_id:
      - climate.wz_heizung
    attribute: hvac_action
    to: heating
    from: idle
conditions: []
actions:
  - variables:
      ziel_temp: "{{ states('sensor.wz_luftsensor_temperature')|float + 0.5 }}"
      start_time: "{{ now() }}"
  - wait_for_trigger:
      - value_template: "{{ states('sensor.wz_luftsensor_temperature')|float > ziel_temp }}"
        trigger: template
      - trigger: state
        entity_id:
          - sensor.wz_heizung_hvac_action
        to: idle
    timeout:
      hours: 3
      minutes: 0
      seconds: 0
      milliseconds: 0
    continue_on_timeout: false
    enabled: true
  - condition: state
    entity_id: sensor.wz_heizung_hvac_action
    state: heating
  - variables:
      end_time: "{{ now() }}"
      time_diff: "{{ (as_timestamp(end_time) - as_timestamp(start_time))|int }}"
  - metadata: {}
    data:
      value: "{{time_diff}}"
    target:
      entity_id: input_number.wz_heizdauer
    action: input_number.set_value
mode: single
  • WZ Heizung nächste Änderung Berechnung
    berechnet alle 15 min. den Heizbeginn neu
YAML-Code
alias: WZ Heizung nächste Änderung Berechnung
description: ""
triggers:
  - minutes: /15
    trigger: time_pattern
conditions: []
actions:
  - variables:
      start_heat_time: >-
        {{ as_timestamp(states.sensor.wz_heizung_nachste_anderung.state)
        |timestamp_custom('%H')|int * 3600 +
        as_timestamp(states.sensor.wz_heizung_nachste_anderung.state)
        |timestamp_custom('%M')|int * 60 +
        as_timestamp(states.sensor.wz_heizung_nachste_anderung.state)
        |timestamp_custom('%S')|int }}
  - variables:
      ziel_temperatur: "{{ states('sensor.wz_heizung_nachste_temperatur') }}"
      ist_temperatur: "{{ states('sensor.wz_luftsensor_temperature') }}"
  - variables:
      temp_diff: "{{ (ziel_temperatur - ist_temperatur)|round(1) }}"
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ temp_diff > 0 }}"
        sequence:
          - variables:
              time_diff_sec: >-
                {{(states.input_number.wz_heizdauer.state|int * 2 *
                temp_diff)|int}}
              neue_startzeit: >-
                {{ (start_heat_time -
                time_diff_sec)|timestamp_custom('%H:%M:%S', false) }}
              jetzt: "{{ now().strftime('%H:%M:%S') }}"
          - condition: template
            value_template: "{{ jetzt < neue_startzeit }}"
          - metadata: {}
            data:
              value: "{{ time_diff_sec }}"
            target:
              entity_id: input_number.wz_heizzeitdifferenz
            enabled: true
            action: input_number.set_value
          - metadata: {}
            data:
              time: "{{ neue_startzeit }}"
            target:
              entity_id: input_datetime.wz_heizung_nachste_anderung_berechnet
            action: input_datetime.set_datetime
    default:
      - metadata: {}
        data:
          time: >-
            {{ as_timestamp(states.sensor.wz_heizung_nachste_anderung.state)
            |timestamp_custom('%H:%M:%S') }}
        target:
          entity_id: input_datetime.wz_heizung_nachste_anderung_berechnet
        action: input_datetime.set_datetime
mode: single
  • WZ Heizung berechneter Heizbeginn
    schaltet input_boolean.wz_heizung_komforttemperatur zur berechneten Zeit ein
YAML-Code
alias: WZ Heizung berechneter Heizbeginn
description: ""
triggers:
  - trigger: time
    at: input_datetime.wz_heizung_nachste_anderung_berechnet
conditions:
  - condition: template
    value_template: >-
      {{
      state_attr('switch.schedule_wz_heizplan','actions')[state_attr('switch.schedule_wz_heizplan','next_slot')|int].service
      == 'input_boolean.turn_on' }}
    alias: nächste Periode = Komforttemperatur
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.wz_heizung_komforttemperatur
mode: single
1 „Gefällt mir“

Ich habe mit Homematic eine Witterungsgeführte Heizungssteuerung realisiert die seit Jahren sehr zuverlässig arbeitet. (Mittlerweile als Add On in HA)
Die Temperaturwerte hole ich über den selbstgebauten 1…8fach Temperatursensor HB-UNI-Sen-TEMP DS18B20
Mit dem CUxD Wrapper in Raspberrymatic lasse ich die Temperatur des Außenfühlers in den Wert für die gewünschte Vorlauftemperatur ausgeben. Damit wird dann der Pelletofen über den Homatic 4fach Aktor geschaltet um den Pufferspeicher auf diese Vorlauftemperatur aufzuheizen.
Bis jetzt fehlt mir die Lösung für HA, wie man eine Heizkurve anhand der Aussentemperatur errechnet und das Ergebnis an ein Generic Thermostat liefert ???