Tecalor THZ Wärmepumpe: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
Zeile 11: | Zeile 11: | ||
Englisch version [[Tecalor THZ Heatpump]] | Englisch version [[Tecalor THZ Heatpump]] | ||
Hier wird beschrieben wie man mit FHEM eine Tecalor THZ / Stieben Eltron LWZ 303/403/403/404/SOL Wärmepumpe auslesen/steuern kann. | Hier wird beschrieben wie man mit FHEM eine Tecalor THZ / Stieben Eltron LWZ 303/403/403/404/SOL Wärmepumpe auslesen/steuern kann. Die 504 ist bislang nicht getestet, könnte aber ebenfalls funktionieren. | ||
Zum besseren Verständnis: Tecalor ist die Privatkundenmarke von Stieben Eltron. Die Geräte sind absolut baugleich. | Zum besseren Verständnis: Tecalor ist die Privatkundenmarke von Stieben Eltron. Die Geräte sind absolut baugleich. |
Version vom 4. März 2015, 13:26 Uhr
THZ | |
---|---|
Zweck / Funktion | |
Anbindung Heizungssteuerung Tecalor | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Sonstiges |
Modulname | 00_THZ.pm |
Ersteller | immiimmi |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Englisch version Tecalor THZ Heatpump
Hier wird beschrieben wie man mit FHEM eine Tecalor THZ / Stieben Eltron LWZ 303/403/403/404/SOL Wärmepumpe auslesen/steuern kann. Die 504 ist bislang nicht getestet, könnte aber ebenfalls funktionieren.
Zum besseren Verständnis: Tecalor ist die Privatkundenmarke von Stieben Eltron. Die Geräte sind absolut baugleich.
Nachfolgend wird von der "THZ" gesprochen.
Getestet sind die Versionen 2.06, 4.09, 4.19, 4.39 und 5.39. Andere Versionen können funktionieren, das ist jedoch nicht garantiert. HINWEIS: Diese Anleitung ist für Personen gedacht, die sich mit Elektronik auskennen. Der Autor und der Entwickler haften nicht für Schäden und geben keine Funktionsgarantie.
ACHTUNG! Seit Version 0.087 wurden die Parameternamen geändert!
Dies dient der Vereinheitlichung der Parameternamen. Werte mit "s" sind Statuswerte, solche mit "p" sind Parameter die in der Heizung eingestellt sind.
Weitere Infos bei den ausgelesenen Parametern. Nach einem Updaten müssen ggf. Sachen wie readingsGroups, Dashboards, etc. angepasst werden.
Verbindungsmöglichkeiten
Lokal per RS232 oder USB
Die THZ hat zwei Anschlüsse die zur Verbindung genutzt werden können.
- Einen Seriellen Anschluss der mit einem MNL-SG3 Stecker genutzt werden kann.
- Einen USB Anschluss der auf der Platine zu finden ist un mit einem TYP-B Kabel funktioniert.
ACHTUNG! Der USB Anschluss befindet sich rückseitig auf der Platine die sich hinter der Abdeckung hinter der rechten Türe. Darf nur stromlos verbunden werden. Dazu die Wärmepumpe komplett vom Strom trennen!!!
Die Baudraten variieren je nach Hardware- und Softwareversion zwischen 9600 und 115200 bei Seriell. Bei USB liegt diese bei 115200 oder 57600. Eine Verbindungsanleitung zum Seriellen Port findet sich hier: Robert Penz Homepage
Entfernte Verbindung mit Ser2Net
Wenn die FHEM Zentrale nicht direkt in der Nähe der Heizung steht kann mir Ser2Net gearbeitet werden. Dieses stellt auf einem TCP-Port einen virtuellen seriellen Anschluss zur Verfügung.
Installation Ser2Net auf Linux
Um den Serial-Port-Server Ser2Net zu installieren ist auf Linux folgendes zu tun:
sudo apt-get install ser2net
in der /etc/ser2net.conf (/dev/ttyXXX)
2003:raw:500:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS
Der Port kann frei gewählt werden, solange er nicht bereits genutzt wird.
Getestete Host-Systeme
Getestet ist dieses Modul auf FritzBox, nas-qnap, Raspberry Pi und MacOS.
Definition in FHEM
Mit direkter serieller oder USB Verbindung
define Mythz THZ /dev/ttyUSB0@115200 # oder (/dev/ttyXXX)
attr Mythz interval_sGlobal 300 # Internes Polling Intervall 5min
attr Mythz interval_sHistory 28800 # Internes Polling Intervall 8h
attr Mythz interval_sLast10errors 120 # Internes Polling Fehlerspeicher
define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz
Wenn die Attribute interval_sGlobal und interval_sHistory nicht definiert sind (oder 0), ist das interne Polling deaktiviert. Natürlich kann das Polling auch mit dem "at" Befehl ausserhalb des Moduls definiert werden.
define Mythz THZ /dev/ttyUSB0@115200 # oder (/dev/ttyXXX)
define atMythzGlobal at +*00:05:00 {fhem "get Mythz sGlobal","1";;return()}
define atMythzHistory at +*08:00:00 {fhem "get Mythz sHistory","1";;return()}
define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz
Via Netzwerk mit Ser2Net
define Mythz THZ 192.168.0.244:2003
attr Mythz interval_sGlobal 300 # Internes Polling Intervall 5min
attr Mythz interval_sHistory 28800 # Internes Polling Intervall 8h
attr Mythz interval_sLast10errors 120 # Internes Polling Fehlerspeicher
define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz
Ausgelesene Werte
Wenn die Verbindung und das Auslesen erfolgreich waren, sollten Werte wie sGlobal, sFirmware, sHistory und diverse Einstellungen wie die Urlaubszeiten sowie einige PXX Werte angezeigt werden.
sGlobal (vormals allFB)
Beinhaltet alle aktuellen Werte wie Temperaturen von Wasser und Gas, Lüfterstatus, Drücke, usw.
sFirmware
Zeigt die Firmware Version der Wärmepumpe.
sHistory
Enthält Angaben zur Betriebsdauer. Beispielsweise die Anzahl der Betriebsstunden der Kompressoren.
pHoliday-Werte
Hier werden die aktuellen Einstellungen der Urlaubsfunktion der THZ angezeigt. Diese bewirken, dass keine Tagabsenkung (sofern programmiert) gemacht wird.
Die holiday-Werte können mittels set
auch angepasst werden.
sLast10errors
Liest die letzten 10 Fehlercodes aus und stellt diese dar.
pXX-Werte & program-Werte
Die pXX-Werte und program-Werte stellen Einstellungen wie Heizkreistemperaturen und Lüfterstufen sowie Heizungs- und Warmwasserprogramme der THZ dar. Alle pXX-Werte und program-Werte können mittels set
auch angepasst werden.
Es sind auch Lüfterdurchsatzmengen und Passivkühlung konfigurierbar.
pOpMode zeigt den Betriebszustand. Automatik, Handbetrieb, etc...
party-time
Hier wird die Uhrzeit der Party programmiert. Party-Time regelt die Lüfterstufe (p99FanStageParty) im Party-Modus. Diese kann auch angepasst werden.
sDHW (ex Status_DHW_F3)
Informationen zur Warmwasserbereitung
sHC1 (ex Status_HC1_F4)
Enthält Informationen zum Heizkreis 1
sHC2 (ex Status_HC2_F5)
Heizkreis 2 Informationen
sSol (ex Status_Sol_16)
Informationen zur Solaranlage
pOpMode (ex OperatingMode)
Betriebsart: Bereitschaft, Automatik, Tagbetrieb, Absenkbetrieb, WW-Betrieb, Manueller Betrieb, Notbetrieb
Wenn die Betriebsart via FHEM geändert werden soll dann muss als set-Wert die entsprechende englische Bezeichnung gesendet werden (Standby, Automatic, DAYmode, SetBack, DHWmode, Manual, Emergency)
sXXX
Es gibt noch einige weitere "s"tatus Werte die unter anderen die Wärmerückgewinnungswerte beinhalten.
Plots - Grafische Darstellung
Nachfolgend wird gezeigt wie man aus den Readings wie sGlobal grafische Plots erstellen kann.
Beispiel
Angenommen wir wollen aus sGlobal die outside_temp und die dhw_temp (dhw=domestic hot water = Warmwasser) grafisch darstellen:
In der fhem.cfg legen wir das Plot an:
define Plot_Temp SVG FileLog_Mythz:thz:CURRENT
attr Plot_Temp room Heizung
Daraufhin wird das Plot erzeugt, noch ohne Daten und evtl. mit einer Fehlermeldung. Hier klicken wir dann auf den Plot-Namen um in das Plot-Konfigurationsfenster zu kommen. Hier tragen wir die entsprechenden Daten ein.
Wichtig sind nun die Input-Felder
Unterhalb der Eingabemaske befinden sich die zu Mythz gehörenden Readings die verwendet werden können. Darunter auch sGlobal.
Das sGlobal wird in etwa so aussehen:
2014-03-02_13:07:49 Mythz sGlobal: outside_temp: 3.8 flow_temp: 26.5 return_temp: 27.2 hot_gas_temp: 32.1 dhw_temp: 43.4 flow_temp_HC2: -60 evaporator_temp: 5.3 condenser_temp: 27.4 Mixer_open: 0 Mixer_closed: 0 HeatPipeValve: 0 DiverterValve: 0 DHW_Pump: 0
Um den richtigen Input zu finden, zählen wir die durch Leerzeichen getrennten Daten ab. Somit ist der Wert der outside_temp an Stelle 5, die dhw_temp an Stelle 13. Diese Zahl tragen wir dann im Input-Feld ein und schon haben wir einen Plot der Daten erzeugt.
Weitere Infos zu Plots
einzelne Werte aus den Readings
Um einzelne Werte aus den großen Readings wie sGlobal oder history zu bekommen, kann man ein
userReading verwenden. Beispiel:
attr Mythz userReadings AussenTemp {(split ' ',ReadingsVal("Mythz","sGlobal",0))[1]},
VorlaufTemp {(split ' ',ReadingsVal("Mythz","sGlobal",0))[3]}
Weitere Infos zu userReadings in der CommandRef
Hinweise
- Ein kompletter Refresh aller Werte wird nur beim Systemstart von FHEM gemacht. Dies geschieht sehr langsam um die Performance nicht zu beeinträchtigen. Erst nachdem dieser Refresh (dauert ca. 3-4 Minuten) gelaufen ist, wird das interne Polling gestartet.
- Wenn das Refresh Intervall kürzer oder gleich ist wie der initiale Refresh kann es zu einer Überschneidung kommen was allerdings kein Problem sein sollte.
- Im Wintermodus kommt roomSetTemp (sHC1) von p01RoomTempDayHC1 und p02RoomTempNightHC1
- Im Sommermodus kommt roomSetTemp (sHC1) von p01RoomTempDayHC1SummerMode und p02RoomTempNightHC1SummerMode
Bekannte Probleme
Im FHEM Log tauchen bei Ser2Net Verbindung häufig folgende Meldungen auf:
2014.03.02 09:41:09 1: 192.168.178.50:2003 disconnected, waiting to reappear
2014.03.02 09:41:09 1: 192.168.178.50:2003 reappeared (Mythz)
Dieses Problem ist aktuell nicht gelöst.
Release History
v0.067
Erstmalige Implementierung in FHEM
v0.068
neuer Befehl f. Party implementiert
v0.069
Deutsche CommandRef hinzugefügt
v0.070
BugFix in Status Bits
v0.071
Bugfix, undefFn verbessert
v0.072
- Alle programHC1*, programHC2*, programFan* und programDHW* sind nun mit "get" und "set" implementiert
- inside_temp wurde am Ende von allFB hinzugefügt
- der Ser2Net connect/disconnet Bug wurde eingedämmt auf max 1 Logeintrag pro Sekunde
v0.074
Jetzt sind auch die Lüfterdurchsatzmengen und die Passivkühlung ausgelesen und änderbar.
v0.075
interval_last10errors implementiert. Intervall, in dem der Fehlerspeicher ausgelesen werden soll
v0.076
Bugfixes und neuer Parameter Status_HC1_F4
v0.078
neue Parameter Status_Sol_16 und Status_DHW_F3
v0.080
- neue Parameter p49SummerModeTemp und p50SummerModeHysteresis
- Status_HC1_F4 und Status_HC2_F5 zeigen nun "mode: Summer" (oder Winter)
Die Berechnung des Modus ist wie folgt:
if outsidetemp > p49SummerModeTemp + p50SummerModeHysteresis ---> Summermode
if outsidetemp < p49SummerModeTemp - p50SummerModeHysteresis ---> Wintermode
v0.081
BugFix für Sommer/Wintermodus-Anzeige
v0.084
- OperatingMode wird nun ausgelesen (read-only)
- p33BoosterTimeoutDHW (read/write)
- p79BoosterTimeoutHC (read/write)
v0.085
OperatingMode kann jetzt auch geaendert werden.
v0.087
- Neue Readings
- Angepasste Readingnamen
v0.089
- Kommunikation wurde stabilisiert
- Bugfixes
- Neue Readings
v0.091
Neue Readings: sHeatRecoveredDay & sHeatRecoveredTotal
v0.094
Bugfixes
v0.095
Neue Readings: sHeatDHWDay & sHeatDHWTotal
v0.096
Weitere neue Readings: sEletrx... & sHeat...
v0.097
Bugfixes
v0.099
Raumeinfluss wurde in die Heizkurvengrafik eingebaut
v0.100
Neue Parameter: p54MinPumpCycles, p55MaxPumpCycles, p56OutTempMaxPumpCycles, p57OutTempMinPumpCycles
v0.101
- keine neuen Features
- Code clean up
- Logs in verbose 5 implementiert
- buffer overflow (Verursacht von sGlobal bei LWZ 303 Firmware 3.19) gefixt
v0.103
- Änderung der Kommunikation. Jetzt 10x schneller
- Versionsinformation hinzugefügt
v0.104
Delay in der Kommunikation hinzugefügt (aber immer noch 5x schneller)
v0.105
- Schnelleres set und get Verhalten
- Dauer des Update beim Start halbiert
- THZ Attribute können ohne Neustart geändert werden
- BugFix
- P83 hinzugefügt (DHWSetSolarTemp)
- Suffix bei den Temp-Werten hinzugefügt. z.B. p04DHWsetDay jetzt p04DHWsetDayTemp
v0.107
- p56 and p57 getauscht und repariert
v0.108
- Party-Time wurde entfernt da nicht funktionsfähig
- Grouping bei "set programFan_Mo-Fr_0 to 08:00--20:00" --> Einzelne Tage werden automatisch gesetzt
v0.109
- Fehlerbehebung bei langen Nachrichten via Seriellem Kabel
v0.110
- Bugfix (für seriellen Adapter) trunkating messages (forum 209294)
v.0111
- P21,22,23,24,25,29 hinzugefügt
v0.112
- Bugfix für Fehler verursacht durch DevIo.pm 6980 status disconnected msg223569
v0.113
- Unterstützung für ältere Firmewareversionen hinzugefügt
v0.114
- Unterstützung für ältere Firmewareversionen hinzugefügt
v0.115
- Implementierung von "Informationen aus dem Modul des HeatpumpMonitor von Robert Penz". Alle nicht identifizierbaren Teile erhalten den Wert "n.a."
v0.116
- weitere Unterstützung für ältere Firmewareversionen hinzugefügt
v0.118
- faultcode implementiert
- Rechtschreibefehler korrigiert: evuRelease
v0.119
- der Firmwareparameter 2.06 erhöht den Maximalcount der Wiederholung von DevIo_SimpleReadWithTimeout von 24 auf 50
- Reduktion des DevIo_SimpleReadWithTimeout von 0.06 auf 0.02
- Der Firmwareparameter 2.06 entfernt jetzt Register, die von älteren Wärmepumpen nicht unterstützt werden
v0.120
- Verzögerung zwischen programXXX_YY zugefügt
v0.121
- Register Interpretation von user godmorgon implementiert
- register 17 für ältere Firmwareversionen implementiert
v0.122
- pXX Register für ältere Firmwareversionen implementiert
- maximale Widerholungen jetzt limitiert auf 60, zuvor 50
- actualPower_Qc: gepatcht um Pufferüberlauf zu vermeiden
v0.123
- actualPower_Qc und actualPower_pEl korrigiert
v0.124
- Verlaufsregister angelegt für Firmwareversion 2.06
v.0125
- Anpassungen um die Firmware 2.06 zu unterstützen
v.0126
- Weitere Anpassungen um die Firmware 2.06 zu unterstützen
v0.127
- Bugfix:Unterschied in Parsingregel für FCtime
v0.128
- Die meisten Paramter können jetzt von WP älterer Firmware gelesen werden
v0.129
- sDisplay (Aktivitätsparameter die im Display dargestellt werden)
v0.130
- 2 Bugfixes
- Firmware-id enthält neue Feature wie HW: 74 SW: 2.08 Date: MAR 9 2011
- neuer Parameter p99RoomThermCorrection implementiert
- THZ_PrintcurveSVG (Heizkurve) wird jetzt durch p99RoomThermCorrection beeinflusst
v0.131
- p35PasteurisationInterval,p35PasteurisationTemp, p34BoosterDHWTempAct, p99DHWmaxFlowTemp, p89DHWeco hinzugefügt
v0.132
- p99startUnschedVent hinzugefügt
- Aufteilung großer Register implementiert. Nötig für Firmware 2.06.
- Heizkurven jetzt auf 15...35°C begrenzt für bessere Darstellung des Kurvenverlaufs
v0.133
- p12 FanStageManual hinzugefügt
- Autoskalierung der Heizkurvenskala
v0.133+
- fixed: Laut Bedienungsanleitung ist p99RoomThermCorrection der Parameter P76
Beispielkonfiguration
Start Definition mit Ser2Net
define Mythz THZ 192.168.111.5:2003
attr Mythz room Sysintern
userReadings
attr Mythz userReadings AussenTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[1]}, VorlaufTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[3]}, RuecklaufTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[5]}, WWTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[9]}, KollektorTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[79]}
interval Definitionen
attr Mythz interval_sGlobal 300
attr Mythz interval_sHistory 28800
attr Mythz interval_sLast10errors 120
Definition von file-log und den SVG-Plots einiger Daten
define FileLog_Mythz FileLog ./log/Mythz-%Y-%m.log Mythz
define wal_0 SVG FileLog_Mythz:thz:CURRENT
attr wal_0 room Heizung
define wal_1 SVG FileLog_Mythz:thz1:CURRENT
attr wal_1 room Heizung
define wal_2 SVG FileLog_Mythz:thz2:CURRENT
attr wal_2 room Heizung
define wal_3 SVG FileLog_Mythz:thz3:CURRENT
attr wal_3 room Heizung
define wal_4 SVG FileLog_Mythz:thz4:CURRENT
attr wal_4 room Heizung
readingsGroup
define rg_thz readingsGroup Mythz:<%temp_outside>,<Aussen>,AussenTemp Mythz:<%sani_supply_temp@red>,<Vorlauf>,VorlaufTemp Mythz:<%sani_return_temp@blue>,<Rücklauf>,RuecklaufTemp Mythz:<%sani_boiler_temp@BD7800>,<Wasser>,WWTemp Mythz:<%sani_solar_temp>,<Kollektor>,KollektorTemp
attr rg_thz alias Heizung Temperaturen
attr rg_thz group THZ
attr rg_thz room Sysintern
attr rg_thz valueFormat { AussenTemp => '%1.f °C', VorlaufTemp => '%1.f °C', AussenTemp=> '%1.f °C', RuecklaufTemp=> '%1.f °C', WWTemp=> '%1.f °C', KollektorTemp=> '%1.f °C' }
Dashboard
define MyDashboard Dashboard
attr MyDashboard dashboard_lockstate unlock
attr MyDashboard dashboard_row top-center
attr MyDashboard dashboard_showhelper 0
attr MyDashboard dashboard_showtooglebuttons 0
attr MyDashboard dashboard_tab1groups THZ
attr MyDashboard dashboard_tab1name micofhem
attr MyDashboard dashboard_tab1sorting t0c100,THZ,true,170,253
attr MyDashboard dashboard_tabcount 1
attr MyDashboard dashboard_webfrontendfilter WEB
define MyDashboard_weblink weblink htmlCode {DashboardAsHtml("MyDashboard")}
attr MyDashboard_weblink room DashboardRoom
FanSelector für die Lüftungssteuerung
define FanSelectorDay dummy
attr FanSelectorDay group THZ
attr FanSelectorDay setList 0 1 2 3 offFor60min
attr FanSelectorDay webCmd 0:1:2:3:offFor60min
attr FanSelectorDay devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2 3:vent_ventilation_level_3
define Notify_p07FanStageDay notify FanSelectorDay IF ([FanSelectorDay] eq "offFor60min") (define at_D_offFor60min at +00:59:00 set Mythz p07FanStageDay [Mythz:p07FanStageDay],set Mythz p07FanStageDay 0, setstate FanSelectorDay offFor60min) ELSE (set Mythz p07FanStageDay $EVENT)
define Notify_FanselectorDay notify (Mythz.p07FanStageDay.*) setstate FanSelectorDay $EVTPART1
attr FanSelectorDay room heatpump
define FanSelectorNight dummy
attr FanSelectorNight group THZ
attr FanSelectorNight setList 0 1 2 3 offFor60min
attr FanSelectorNight webCmd 0:1:2:3:offFor60min
attr FanSelectorNight devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2 3:vent_ventilation_level_3
define Notify_p08FanStageNight notify FanSelectorNight IF ([FanSelectorNight] eq "offFor60min") (define at_N_offFor60min at +00:59:00 set Mythz p08FanStageNight [Mythz:p08FanStageNight],set Mythz p08FanStageNight 0, setstate FanSelectorNight offFor60min) ELSE (set Mythz p08FanStageNight $EVENT)
define Notify_FanselectorNight notify (Mythz.p08FanStageNight.*) setstate FanSelectorNight $EVTPART1
attr FanSelectorNight room heatpump