Featured image of post ESPHome und UVR1611: Heizungsmischer überwachen und in Home Assistant integrieren

ESPHome und UVR1611: Heizungsmischer überwachen und in Home Assistant integrieren

Mithilfe von ESPHome und Home Assistant können die Positionen von Heizungsmischern präzise überwacht werden. Dieser Artikel zeigt, wie Signale der UVR1611-Steuerung über den DL-Bus ausgewertet und in Home Assistant visualisiert werden, um die Heizkreistemperatur effizient zu optimieren.

Einleitung

Die präzise Regelung eines Heizungsmischers ist entscheidend für die effiziente Wärmeverteilung in einem Heizsystem. In diesem Beitrag zeige ich, wie mithilfe von ESPHome die aktuelle Position eines Heizungsmischers berechnet werden kann. Diese Berechnung basiert auf binären Signalen des Mischermotors und berücksichtigt dessen Laufzeit. Die berechnete Position wird auf einen Bereich von 0 bis 100 % skaliert, um die Heizkreistemperatur optimal anzupassen.

Hintergrund: Funktion des Heizungsmischers

Ein Drei-Wege-Mischer ist ein zentrales Element einer Heizungsanlage. Er reguliert die Vorlauftemperatur durch das Mischen von heißem Vorlaufwasser und kühlerem Rücklaufwasser. Im geschlossenen Zustand (0 %) wird das Heizkreiswasser ausschließlich intern zirkuliert. Im offenen Zustand (100 %) wird heißes Vorlaufwasser in den Heizkreis eingeleitet. Die modulare Verstellung des Mischers ermöglicht eine präzise Anpassung an die Temperaturanforderungen des Systems.

Komponenten im Detail

  1. DL-Bus: Kommunikationsschnittstelle Der DL-Bus (Datenleitungs-Bus) der Firma Technische Alternative ist ein proprietäres Kommunikationsprotokoll, das in Heizungssteuerungen wie der UVR1611 eingesetzt wird. Er ermöglicht die Übertragung von Sensor- und Aktordaten sowie Steuerbefehlen. Über den DL-Bus können die binären Signale der Mischermotoren ausgelesen und zur Positionsberechnung genutzt werden. Eine Besonderheit ist die zuverlässige Übertragung, die auch in komplexen Heizsystemen funktioniert.

  2. Mischermotor: Steuerung und Laufzeit Der Mischermotor ist ein mechanisches Stellglied, das den Drei-Wege-Mischer zwischen den Zuständen “geschlossen” (0 %) und “offen” (100 %) bewegt. Die Steuerung erfolgt über die Signale “Öffnen” und “Schließen”, die vom Steuergerät ausgegeben werden. Die Laufzeit des Motors, üblicherweise zwischen 90 und 180 Sekunden, ist entscheidend, um die Position des Mischers genau zu berechnen.

  3. ESP32: Flexibles Steuergerät Der ESP32 wird als zentrale Einheit zur Auswertung der DL-Bus-Signale und zur Berechnung der Mischerpositionen verwendet. Mit ESPHome wird die Konfiguration vereinfacht, und die berechneten Werte können direkt an Home Assistant übermittelt werden. Seine Rechenleistung und Konnektivität machen ihn ideal für diese Aufgabe.

  4. Home Assistant: Datenvisualisierung Home Assistant dient als Plattform zur Darstellung und Steuerung der berechneten Mischerpositionen. Die in Home Assistant visualisierten Werte können für Automatisierungen genutzt werden, z. B. zur Optimierung der Heizkreistemperatur. Darüber hinaus bietet die Plattform die Möglichkeit, mehrere Heizungsparameter zentral zu überwachen und zu steuern.

Technische Umsetzung: Aufbau der Steuerung

Die technische Umsetzung basiert auf der Auswertung der binären Signale des DL-Bus und der Berechnung der Mischerposition mithilfe des ESP32. Der Code berücksichtigt die Laufzeit des Mischermotors, um präzise Positionsänderungen zu ermöglichen. Jedes Signal wird in Echtzeit verarbeitet, wobei die Berechnung der Position alle 1 Sekunde aktualisiert wird. Die Schritte sind wie folgt:

  1. DL-Bus-Signale einlesen: Über den DL-Bus werden die Signale “auf” und “zu” für die beiden Mischermotoren eingelesen. Diese Signale geben an, ob der Mischer geöffnet oder geschlossen wird.
  2. Positionsberechnung: Mithilfe einer festen Laufzeit (z. B. 120 Sekunden) wird die Schrittweite für jede Sekunde berechnet. Diese Schrittweite wird abhängig vom aktiven Signal addiert oder subtrahiert.
  3. Begrenzung der Position: Die berechnete Position wird auf einen Bereich von 0 bis 100 % begrenzt, um unplausible Werte zu vermeiden. Dadurch bleibt die Regelung stabil und nachvollziehbar.
  4. Datenübermittlung: Die berechneten Positionen werden als virtuelle Sensoren an Home Assistant übertragen, wo sie visualisiert und weiterverarbeitet werden können.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
esphome:
  name: heizungsmischer

# Globale Variablen für die Mischerposition
globals:
  - id: mischer_wohnen_position
    type: float
    restore_value: true
    initial_value: '0.0'
  - id: mischer_schlafen_position
    type: float
    restore_value: true
    initial_value: '0.0'

# Sensoren für die Mischerposition
sensor:
  - platform: template
    name: "Mischer Wohnen Position"
    id: mischer_wohnen_sensor
    lambda: |-
      return id(mischer_wohnen_position);      
  - platform: template
    name: "Mischer Schlafen Position"
    id: mischer_schlafen_sensor
    lambda: |-
      return id(mischer_schlafen_position);      

# Steuerung über DL-Bus-Signale
binary_sensor:
  - platform: dlbus
    name: "Mischer Wohnen auf"
    output: A8
    on_state:
      - while:
          condition:
            binary_sensor.is_on: this
          then:
            - delay: 1s
            - lambda: |-
                const float schrittweite = 100.0 / 120.0;  // Schrittweite bei 120 Sekunden Laufzeit
                float position = id(mischer_wohnen_position);
                position = fmin(position + schrittweite, 100.0);
                id(mischer_wohnen_position) = position;
                id(mischer_wohnen_sensor).publish_state(position);                
  - platform: dlbus
    name: "Mischer Wohnen zu"
    output: A9
    on_state:
      - while:
          condition:
            binary_sensor.is_on: this
          then:
            - delay: 1s
            - lambda: |-
                const float schrittweite = 100.0 / 120.0;  // Schrittweite bei 120 Sekunden Laufzeit
                float position = id(mischer_wohnen_position);
                position = fmax(position - schrittweite, 0.0);
                id(mischer_wohnen_position) = position;
                id(mischer_wohnen_sensor).publish_state(position);                

  - platform: dlbus
    name: "Mischer Schlafen auf"
    output: A10
    on_state:
      - while:
          condition:
            binary_sensor.is_on: this
          then:
            - delay: 1s
            - lambda: |-
                const float schrittweite = 100.0 / 120.0;  // Schrittweite bei 120 Sekunden Laufzeit
                float position = id(mischer_schlafen_position);
                position = fmin(position + schrittweite, 100.0);
                id(mischer_schlafen_position) = position;
                id(mischer_schlafen_sensor).publish_state(position);                
  - platform: dlbus
    name: "Mischer Schlafen zu"
    output: A11
    on_state:
      - while:
          condition:
            binary_sensor.is_on: this
          then:
            - delay: 1s
            - lambda: |-
                const float schrittweite = 100.0 / 120.0;  // Schrittweite bei 120 Sekunden Laufzeit
                float position = id(mischer_schlafen_position);
                position = fmax(position - schrittweite, 0.0);
                id(mischer_schlafen_position) = position;
                id(mischer_schlafen_sensor).publish_state(position);                

Erläuterung der Konfiguration: Funktionen und Logik

Die Konfiguration besteht aus mehreren zentralen Elementen, die zusammenarbeiten, um die Position der Mischermotoren zu berechnen und in Home Assistant anzuzeigen. Hier sind die wichtigsten Aspekte:

  1. Globale Variablen: Zwei globale Variablen (mischer_wohnen_position und mischer_schlafen_position) speichern die aktuelle Position der Mischermotoren. Diese Werte werden bei Neustart des ESP32 wiederhergestellt, sodass keine Daten verloren gehen.
  2. Sensoren: Virtuelle Sensoren werden verwendet, um die berechneten Positionen an Home Assistant zu übermitteln. Die Sensoren aktualisieren ihren Zustand bei jeder Änderung der Position.
  3. DL-Bus-Signale: Die Eingänge für “auf” und “zu” werden über den DL-Bus abgerufen. Diese Signale steuern die Berechnung der Position.
  4. Logik zur Positionsberechnung:
    • Die Laufzeit des Mischermotors wird berücksichtigt, um die Schrittweite pro Sekunde zu berechnen.
    • Abhängig vom aktiven Signal wird die Position entweder erhöht oder verringert.
    • Die Begrenzung sorgt dafür, dass die Werte immer zwischen 0 und 100 % bleiben.
  5. Zyklische Aktualisierung: Durch die Verwendung von delay wird die Berechnung in regelmäßigen Intervallen (1 Sekunde) durchgeführt, um die Stabilität des Systems zu gewährleisten.
  6. Signalauswertung: Die DL-Bus-Signale “auf” und “zu” steuern die Berechnung der Position.
  7. Berücksichtigung der Laufzeit: Die Schrittweite basiert auf einer festen Laufzeit von 120 Sekunden.
  8. Begrenzung: Die Position wird auf einen Bereich von 0 bis 100 % begrenzt.
  9. Anbindung: Die berechneten Werte werden als Sensoren bereitgestellt und können in Home Assistant visualisiert werden.

Fazit und Ausblick: Weiterführende Möglichkeiten

Die vorgestellte Lösung zeigt, wie die Position eines Heizungsmischers mithilfe von ESPHome präzise berechnet und in Home Assistant integriert werden kann. Die Berücksichtigung der Laufzeit des Motors sorgt für eine zuverlässige und skalierbare Regelung.

Mögliche Erweiterungen:

  1. Automatische Laufzeitkalibrierung: Durch Messung der tatsächlichen Laufzeit des Mischermotors könnten die Schrittweiten automatisch angepasst werden, um noch genauere Ergebnisse zu erzielen.
  2. Integration von Feedback-Sensoren: Die Verwendung von Rückmeldesensoren (z. B. Potentiometer oder Encoder) könnte eine direkte Überprüfung der Mischerstellung ermöglichen.
  3. Optimierung der Heizungssteuerung: Durch Kombination der Mischerpositionsdaten mit Außentemperatursensoren oder Wettervorhersagen könnten Heizungsprofile dynamisch angepasst werden.
  4. Benachrichtigungen bei Fehlfunktionen: Die Integration von Benachrichtigungen in Home Assistant könnte auf abweichende oder fehlerhafte Bewegungen des Mischers hinweisen, um frühzeitig Wartungsbedarf zu erkennen. Mit dieser Lösung lässt sich die Position eines Heizungsmischers präzise berechnen, selbst wenn keine direkte Rückmeldung verfügbar ist. Die Integration in Home Assistant ermöglicht eine übersichtliche Darstellung und einfache Einbindung in Automatisierungen. Künftige Erweiterungen könnten eine Laufzeitkalibrierung oder die Integration zusätzlicher Sensoren zur Optimierung der Regelung umfassen.
Erstellt mit Hugo
Theme Stack gestaltet von Jimmy