FHEM - Anwendungen > Heizungssteuerung/Raumklima

THZ Tecalor (LWZ Stiebel Eltron) module support and code improvement.

(1/214) > >>

Dear all
In FHEM, the communication (logging and controlling) to THZ Tecalor (aka LWZ Stiebel Eltron) heatpump has been implemented.
Module 00_THZ.pm reached a good maturity level (now version 0.130), but remember: do not relay on it for critical applications.
It has been written for experienced users, with a deep understanding of the heatpump. Always think twice before writing back to the heatpump.
Please consider that no official documentation from Tecalor exists.  At the moment, by reverse engineering, 3 groups of heatpumps have been identified. The optional attribute “firmware” takes care of fixing the differences.

Please start with reading the wiki and the command_ref:
DE http://www.fhemwiki.de/wiki/Tecalor_THZ_W%C3%A4rmepumpe
EN http://www.fhemwiki.de/wiki/Tecalor_THZ_Heatpump
En/de http://fhem.de/commandref.html#THZ

Please use this thread, if you want to discuss about the module itself, bug-fixes, code improvements.
A second thread  THZ Tecalor (LWZ Stiebel Eltron) Wärmepumpe -Optimierung und Erfahrungsaustausch should be used for heatpump optimization and experience exchange.

Before posting please
1)   read the original thread with 1397 posts http://forum.fhem.de/index.php/topic,13132.1395.html
2)   keep FHEM updated: use the update command and restart fhem
3)   post in English as preferred language: your question will be probably better understood. German is also fine as second choice.

have fun

v.130 works great for me with a room temp probe. The operating point on the heating curve is now spot on! :) See screen shot. Thanks also for finding p99 "inside therm correction".

v 0.131 uploaded
- added p35PasteurisationInterval, p35PasteurisationTemp,   p34BoosterDHWTempAct, p99DHWmaxFlowTemp, p89DHWeco


wie versprochen die Erweiterungen mit dem Display...

--- Code: ---
# Aufruf der Intervalle, hier werden benötigt
attr Mythz interval_sGlobal 300
attr Mythz interval_sHC1 300
attr Mythz interval_sFlowRate 300
attr Mythz interval_sDisplay 300

#userReadings  hier werden die Userreagings für das Display generiert

attr Mythz userReadings sD_outsideTemp {(split ' ',ReadingsVal("Mythz","sHC1",0))[1]}, sD_flowTemp {(split ' ',ReadingsVal("Mythz","sHC1",0))[9]}, sD_returnTemp {(split ' ',ReadingsVal("Mythz","sHC1",0))[5]}, sD_insideTempRC {(split ' ',ReadingsVal("Mythz","sHC1",0))[27]}, sD_sFlowRate {(split ' ',ReadingsVal("Mythz","sFlowRate",0))[0]}, sD_dhw_temp {(split ' ',ReadingsVal("Mythz","sDHW",0))[1]}, sD_switchingProg {(split ' ',ReadingsVal("Mythz","sDisplay",0))[1]}, sD_compressor {(split ' ',ReadingsVal("Mythz","sDisplay",0))[3]}, sD_heatingHC {(split ' ',ReadingsVal("Mythz","sDisplay",0))[5]}, sD_heatingDHW {(split ' ',ReadingsVal("Mythz","sDisplay",0))[7]}, sD_boosterHC {(split ' ',ReadingsVal("Mythz","sDisplay",0))[9]}, sD_filterBoth {(split ' ',ReadingsVal("Mythz","sDisplay",0))[11]}, sD_ventStage {(split ' ',ReadingsVal("Mythz","sDisplay",0))[13]}, sD_pumpHC {(split ' ',ReadingsVal("Mythz","sDisplay",0))[15]}, sD_defrost {(split ' ',ReadingsVal("Mythz","sDisplay",0))[17]}, sD_filterUp {(split ' ',ReadingsVal("Mythz","sDisplay",0))[19]}, sD_filterDown {(split ' ',ReadingsVal("Mythz","sDisplay",0))[21]}

#### Status Symbole des Displays werden generiert

define rg_thz_stat readingsGroup \
Mythz:<Schaltprogramm>,sD_switchingProg \
Mythz:<Verdichter>,sD_compressor \
Mythz:<Heizen>,sD_heatingHC \
Mythz:<Warmwasserbereitung>,sD_heatingDHW \
Mythz:<Elektrische_Nachheizstufen>,sD_boosterHC \
Mythz:<Heizkreispumpe>,sD_pumpHC \
Mythz:<Abtauen_Verdampfer>,sD_defrost \
Mythz:<Lüfterstufe>,sD_ventStage \
Mythz:<Filter_oben>,sD_filterUp \
Mythz:<Filter_unten>,sD_filterDown \

#Attribute für Status

attr rg_thz_stat alias Status
attr rg_thz_stat group THZ
attr rg_thz_stat room Sysintern
attr rg_thz_stat nonames 1

# Zuweisung der readings in Verbindung mit Symbolen

attr rg_thz_stat valueIcon {'sD_switchingProg.1'=>'hourglass@blue','sD_switchingProg.0'=>'hourglass', 'sD_compressor.1'=>'sani_garden_pump@blue','sD_compressor.0'=>'sani_garden_pump', 'sD_heatingHC.1'=>'sani_floor_heating_neutral@blue','sD_heatingHC.0'=>'sani_floor_heating_neutral', 'sD_heatingDHW.1'=>'sani_domestic_waterworks@blue','sD_heatingDHW.0'=>'sani_domestic_waterworks', 'sD_boosterHC.1'=>'sani_heating_boost@red','sD_boosterHC.0'=>'sani_heating_boost', 'sD_pumpHC.1'=>'sani_pump@blue','sD_pumpHC.0'=>'sani_pump', 'sD_defrost.1'=>'weather_frost@blue','sD_defrost.0'=>'weather_frost', 'sD_ventStage.1'=>'vent_ventilation_level_3@blue','sD_ventStage.0'=>'vent_ventilation', 'sD_filterUp.1'=>'vent_ventilation_level_manual_m@red','sD_filterUp.0'=>'vent_ventilation_level_automatic', 'sD_filterDown.1'=>'vent_ventilation_level_manual_m@red','sD_filterDown.0'=>'vent_ventilation_level_automatic', 'sD_filterBoth.1'=>'vent_ventilation_level_manual_m@red','sD_filterBoth.0'=>'vent_ventilation_level_automatic'}

# Anzeige der Prozesswerte aus den userreadings von oben

define rg_thz readingsGroup \
Mythz:<%temp_outside>,<Aussentemperatur>,sD_outsideTemp \
Mythz:<%temp_inside>,<Innentemperatur>,sD_insideTempRC \
Mythz:<%sani_supply_temp@red>,<Vorlauf>,sD_flowTemp \
Mythz:<%sani_return_temp@blue>,<Rücklauf>,sD_returnTemp \
Mythz:<%sani_pump>,<Durchfluss>,sD_sFlowRate \

# Attribute der Prozesswerte

attr rg_thz alias Prozesswerte
attr rg_thz group THZ
attr rg_thz room Sysintern

# Formatierung der Prozesswerte

attr rg_thz valueFormat { sD_outsideTemp => '%.1f °C', sD_insideTempRC => '%.1f °C', sD_flowTemp => '%.1f °C', sD_returnTemp => '%.1f °C', sD_sFlowRate => '%.1f cl/min', sD_dhw_temp => '%.1f °C' }

--- Ende Code ---

Ist jetzt die erste Version ist so ein eine Mischung aus Andre.k bzw dem Anzeigen der Prozesswerte aus dem Wiki.

Ich finde es ganz praktisch weil man alles wesentliche auf einem Blick hat.



Hi Belu, Hi Andre.k
I like both solution a lot.
But, I do not want to update sDisplay too often (e.g. each 30 sec)
What I miss is, an automatic way to update sDisplay before the webpage is generated.
Untill we find it, it makes sense to add a button "refresh"


[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln