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.

Heizkreis in Home Assistant

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.

Warmwasserkreis in Home Assistant

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.