Home Assistant & ECL 310
In meinem Haus ist eine Fernwärmestation statt einer klassischen Heizung verbaut. Ich bekomme von meinem Versorger heißes Wasser in einer Rohrschleife ins Haus geliefert. Die Wärme wird dann über zwei Wärmetauscher für Warmwasser und Heizung abgegriffen. Die ganze Anlage ist recht klein, und passt quasi in einen Kleiderschrank im Eingangsbereich des Hauses. Zwei motorgetriebene Ventile regeln die Wärmemenge, die in die Wärmetauscher einströmt. Gesteuert werden die Ventile über eine “ECL Comfort 310”-Controller von Danfoss. Die ECL310 hat eine eingebaute Ethernet Schnittstelle und stellt darauf Modbus zur Verfügung (Modbus TCP). Danfoss bietet auch eine Cloud-Lösung an, aber ich bin nicht so der Freund von sowas.
Statt in die Hersteller Cloud zu gehen, gekommt man ähnliche Funktionen auch mit der Modbus Integration von Home Assistant hin. Leider habe ich so gar keine Ahnung von Modbus, also rein ins Internet und Tante Google befragen. Der entsprechende Port (502) für Modbus ist schnell gefunden, alles weitere ist dann schwierig. Modbus steuert alles über sog. Register und die Preisfrage ist natürlich, mit welchen arbeitet die ECL 310? Der Hersteller schafft hier zum Glück Abhilfe, und hat eine gute Dokumentation der Register und deren Verwendung als PDF online gestellt. Das PDF Dokument nennt sich ECL Comfort 210 / 296 / 310, communication description und ist frei im Internet verfügbar.
Eine wichtige Sache, die man wissen muss: Der ECL 310 Controller kann für verschiedene Heizsysteme verwendent werden. Um ihn zu konfigurieren besitzt der Controller sowas wie einen ‘propritäten USB-Anschluss’. Da hinein kommt der sog. Application Key mit der Steuersoftware, in meinem Fall ist das A266.1. Die verwendete Steuersoftware sagt, welcher Heizkreis was macht und daraus ergeben sich dann die entsprechenden Modbus-Register.
In der oben angegebenen Dokumentation sind die Register als Parameter Numbers (PNU) am Ende aufgelistet. In der Liste enthalten ist ein Spalte ob der jeweilige Register nur gelesen werden kann, oder ob er les- und schreibbar ist. Weiterhin ist ein eventuell vorhandener Skalierungsfaktor angegeben, z.B. 100.
Modbus Register
Achtung: Wenn beispielsweise der im PDF angegebene Parameter 11180 ist, dann wird in der yaml-Konfigurationsdatei der Parameter mit 11179 eingetragen! Warum das so ist, weiß ich leider noch nicht.
Die für mich zutreffenden Modbus-Register im PDF:
Bedeutung | Register im PDF | Register in HA |
---|---|---|
Status der Umwälzpumpe | 4007 | 4006 |
Register Betriebsart Heizung | 4201 | 4200 |
Register Betriebsart Warmwasser | 4202 | 4201 |
Register Status Heizung | 4211 | 4210 |
Register Status Warmwasser | 4212 | 4211 |
Außentemperaturfühler S1 | 10201 | 10200 |
Wärmetauscher Heizung S3 | 10203 | 10202 |
Wärmetauscher Warmwasser S4 | 10204 | 10203 |
Wärmetauscher Heizung S5 | 10205 | 10204 |
Wärmetauscher Warmwasser S6 | 10206 | 10205 |
Temperatur Heizung Komfort | 11181 | 11180 |
Temperatur Heizung Sparbetrieb | 11182 | 11181 |
Temperatur Warmwasser Komfort | 12190 | 12189 |
Temperatur Warmwasser Sparbetrieb | 12191 | 12190 |
Es gibt natürlich noch mehr Register, die man in Home Assistant nutzen könnte, da ich aber nur sehr geringen Steuerungsbedarf in die Heizung habe, sind diese Register hier nicht weiter betrachtet.
Home Assistant Konfiguration
Ich habe in meiner Konfiguration drei verschieden Typen an Einträgen:
- Switche
- Sensoren
- Climate (generische Thermostate)
Eine Übersicht der Konfigurationsparameter für diese Typen findet man in der Modbus Integration für Home Assistant.
Switche
Es gibt zwei Schalter die in meiner yaml-Datei enthalten sind. Der Betriebsartenschalter für die Heizung, und er für Warmwasser. Beide Schalter schalten zwischen Komfort- und Sparbetrieb um. Der Register 4200 schaltet dabei die Heizung um und der Register 4201 Warmwasser. Der Schaltwert 2 (ein) schaltet den Komfortbetrieb ein, der Schaltwert 3 (aus) schaltet den Sparbetrieb ein.
1switches:
2 - name: ecl_hz
3 address: 4200
4 command_on: 2
5 command_off: 3
6 verify:
7 - name: ecl_ww
8 address: 4201
9 command_on: 2
10 command_off: 3
11 verify:
Sensoren
Für die oben angegebenen Schalter sind auch entsprechende ‘Rückmelde’-Sensoren definiert:
1sensors:
2 - name: ecl_betriebsart_heiz
3 address: 4200
4 - name: ecl_status_heiz
5 address: 4210
6 - name: ecl_betriebsart_ww
7 address: 4201
8 - name: ecl_status_ww
9 address: 4211
Dann gibt natürlich noch diverse Werte, die aus der Heizung ausgelesen werden. Einer der für mich wichtigsten ist der Außentemperaturfühler, den ich für alle mögliche in Home Assistant verwende. Dann gibt es jeweils zwei Werte von den Temperaturfühlern an den Wärmetauschern für Heizung und Warmwasser.
1sensors:
2#### Außentemperatur
3 - name: df_s1
4 address: 10200
5 scale: 0.01
6 precision: 2
7 unit_of_measurement: C
8
9#### S3 Heizung
10 - name: df_s3
11 address: 10202
12 precision: 1
13 scale: 0.01
14 unit_of_measurement: C
15
16#### S4 Warmwasser
17 - name: df_s4
18 address: 10203
19 precision: 1
20 scale: 0.01
21 unit_of_measurement: C
22
23#### S5 Heizung
24 - name: df_s5
25 address: 10204
26 precision: 1
27 scale: 0.01
28 unit_of_measurement: C
29
30### S6 Warmwasser
31 - name: df_s6
32 address: 10205
33 precision: 1
34 scale: 0.01
35 unit_of_measurement: C
Diese Werte sind mit einem Faktor in der Danfoss Dokumentation angegeben, daher gibt es hier jeweils den Skalierungsfaktor von 0,01.
Thermostate
Ich habe zwei Thermostate in meiner Home Assistant Konfiguration hinterlegt. Einmal die Komforttemperatur für den Heizbetrieb und einmal für den Warmwasserbetrieb. Die Spartemperaturen betrachte ich nicht weiter. Ich denke diese beiden Werte benötigen zu selten einer Bearbeitung.
1climates:
2##### ecl_hz_komfort # Heizung Temperatur für Komfortbetrieb
3 - name: ecl_hz_komfort
4 address: 11179
5 input_type: holding
6 scale: 0.1
7 precision: 2
8 max_temp: 25
9 min_temp: 5
10 temp_step: 0.5
11 scan_interval: 10
12 target_temp_register: 11179
13 temperature_unit: °C
14
15##### ecl_ww_komfort # Warmwasser Temperatur im Komfortbetrieb
16 - name: ecl_ww_komfort
17 address: 12189
18 input_type: holding
19 scale: 0.1
20 precision: 2
21 max_temp: 60
22 min_temp: 40
23 temp_step: 0.5
24 scan_interval: 10
25 target_temp_register: 12189
26 temperature_unit: °C
yaml-Datei
Im Anschluss noch einmal alle Konfigurationsdaten, die ich in meiner yaml-Datei verwende als txt-Datei. Es gibt noch diverse weiter Einstellungen, die man machen könnte z.B die Heizkurve einstellen. Hier sehe ich aber keinen direkten Vorteil diese Einstellungen mit Home Assistant zu machen.
Automationen
Automationen um in die Heizung einzugreifen habe ich z. Zt. keine. Ich hatte testweise eine Automation eingerichtet, die nachts die Bereitstellung von Warmwasser ausschaltet. Das sorgt dafür, dass am Wärmetauscher für Warmwasser nicht ständig die geschwünschte Temperatur ansteht. Vielleicht spart man dadurch etwas Energie, der Nachteil ist halt, dass bei einer Fehlfunktion von Home Assistant morgens nur kaltes Wasser aus der Dusche kommt. Das ist dann eher unschön. Daher habe ich die Automation wieder entfernt.