Autor Thema: THZ Tecalor (LWZ Stiebel Eltron) Wärmepumpe -Optimierung und Erfahrungsaustausch  (Gelesen 60377 mal)

Offline houseowner123

  • Full Member
  • ***
  • Beiträge: 157
Bei dieser Gelegenheit fällt mir auf, dass die Heizkurve bei mir nicht mehr richtig angezeigt wird. Im Display der THZ wird bei -15°C eine Heizkreistemperatur von 31°C angezeigt, in der Grafik aber nur ca. 29°C. Der rote Punkt liegt auch nicht mehr auf der Linie. Früher hatte das gestimmt.

Ich würde das dem Raumeinfluss und der Temp Korrektur zuschreiben. Das Display zeigt die Heizkurve ohne die Raum Temp Korrektur. Wenn mein Kamin an ist, springt der rote Punkt immer nach oben, kurzer vor dem Anspringen der Heizung, bei Ingral so um die 80 ist er deutlich unter der Heizkurve.

immi: According the manual our p99RoomThermCorrection is actually P76 (see attached)

willy: thanks for that elegant slider! Way cool! 8)

 
« Letzte Änderung: 16 Februar 2015, 00:00:16 von houseowner123 »

Offline mlb

  • New Member
  • *
  • Beiträge: 42
Just in case someone finds it useful: my complete Ventilation menu.  For my heatpump the airflow range is 70-300 m3/h, you may need to adjust those values to match your model.

define Fan.Active dummy
attr Fan.Active devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2 3:vent_ventilation_level_3
attr Fan.Active fm_type smarttogglebutton
attr Fan.Active group THZ-Fans
attr Fan.Active room Ventilation
attr Fan.Active setList 0 1 2 3
attr Fan.Active webCmd 0:1:2:3
define Notify_p07FanStageDay notify Fan.Active set Mythz p07FanStageDay $EVENT
define Notify_FanselectorDay notify (Mythz.p07FanStageDay.*) setstate Fan.Active $EVTPART1

define Fan.Idle dummy
attr Fan.Idle devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2 3:vent_ventilation_level_3
attr Fan.Idle group THZ-Fans
attr Fan.Idle room Ventilation
attr Fan.Idle setList 0 1 2 3
attr Fan.Idle webCmd 0:1:2:3
define Notify_p08FanStageNight notify Fan.Idle set Mythz p08FanStageNight $EVENT
define Notify_FanselectorNight notify (Mythz.p08FanStageNight.*) setstate Fan.Idle $EVTPART1


define Fan.Unscheduled dummy
attr Fan.Unscheduled alias Start Unscheduled Ventilation
attr Fan.Unscheduled devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2 3:vent_ventilation_level_3
attr Fan.Unscheduled group THZ-FansUnscheduled
attr Fan.Unscheduled room Ventilation
attr Fan.Unscheduled setList 0 1 2 3
attr Fan.Unscheduled webCmd 0:1:2:3
define Notify_p99startUnschedVent notify Fan.Unscheduled set Mythz p99startUnschedVent $EVENT
define Notify_UnschedVent notify (Mythz.p99startUnschedVent.*) setstate Fan.Unscheduled $EVTPART1

define Fan.PassCool dummy
attr Fan.PassCool devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2
attr Fan.PassCool group THZ-Fans
attr Fan.PassCool room Ventilation
attr Fan.PassCool setList 0 1 2
attr Fan.PassCool webCmd 0:1:2
define Notify_p75passiveCooling notify Fan.PassCool set Mythz p75passiveCooling $EVENT
define Notify_PassiveCooling notify (Mythz.p75passiveCooling.*) setstate Fan.PassCool $EVTPART1

define Fan.Stage.0 dummy
attr Fan.Stage.0 group THZ-FansUnscheduledDuration
attr Fan.Stage.0 alias Stage 0 [mins]
attr Fan.Stage.0 room Ventilation
attr Fan.Stage.0 setList state:slider,0,5,480
attr Fan.Stage.0 webCmd state
define Notify_p46UnschedVent0 notify Fan.Stage.0  set Mythz p46UnschedVent0 $EVENT
define Notify_Fan.Stage.0 notify (Mythz.p46UnschedVent0.*) setstate Fan.Stage.0 $EVTPART1

define Fan.Stage.1 dummy
attr Fan.Stage.1 group THZ-FansUnscheduledDuration
attr Fan.Stage.1 room Ventilation
attr Fan.Stage.1 alias Stage 1 [mins]
attr Fan.Stage.1 setList state:slider,0,5,480
attr Fan.Stage.1 webCmd state
define Notify_p45UnschedVent1 notify Fan.Stage.1  set Mythz p45UnschedVent1 $EVENT
define Notify_Fan.Stage.1 notify (Mythz.p45UnschedVent1.*) setstate Fan.Stage.1 $EVTPART1

define Fan.Stage.2 dummy
attr Fan.Stage.2 group THZ-FansUnscheduledDuration
attr Fan.Stage.2 room Ventilation
attr Fan.Stage.2 alias Stage 2 [mins]
attr Fan.Stage.2 setList state:slider,0,5,480
attr Fan.Stage.2 webCmd state
define Notify_p44UnschedVent2 notify Fan.Stage.2  set Mythz p44UnschedVent2 $EVENT
define Notify_Fan.Stage.2 notify (Mythz.p44UnschedVent2.*) setstate Fan.Stage.2 $EVTPART1

define Fan.Stage.3 dummy
attr Fan.Stage.3 group THZ-FansUnscheduledDuration
attr Fan.Stage.3 room Ventilation
attr Fan.Stage.3 alias Stage 3 [mins]
attr Fan.Stage.3 setList state:slider,0,5,480
attr Fan.Stage.3 webCmd state
define Notify_p43UnschedVent3 notify Fan.Stage.3  set Mythz p43UnschedVent3 $EVENT
define Notify_Fan.Stage.3 notify (Mythz.p43UnschedVent3.*) setstate Fan.Stage.3 $EVTPART1

define Fan.AirIn.Stage.1 dummy
attr   Fan.AirIn.Stage.1 group THZ-Fans_Airflow_Stage.1
attr   Fan.AirIn.Stage.1 room Ventilation
attr   Fan.AirIn.Stage.1 alias Air Input  [m3/h]
attr   Fan.AirIn.Stage.1 setList state:slider,70,1,300
attr   Fan.AirIn.Stage.1 webCmd state
define Notify_p37Fanstage1AirflowInlet notify Fan.AirIn.Stage.1 set Mythz p37Fanstage1AirflowInlet $EVENT
define Notify_Fan.AirIn.Stage.1 notify (Mythz.p37Fanstage1AirflowInlet.*) setstate Fan.AirIn.Stage.1 $EVTPART1

define Fan.AirOut.Stage.1 dummy
attr   Fan.AirOut.Stage.1 group THZ-Fans_Airflow_Stage.1
attr   Fan.AirOut.Stage.1 room Ventilation
attr   Fan.AirOut.Stage.1 alias Air Output [m3/h]
attr   Fan.AirOut.Stage.1 setList state:slider,70,1,300
attr   Fan.AirOut.Stage.1 webCmd state
define Notify_p40Fanstage1AirflowOutlet notify Fan.AirOut.Stage.1 set Mythz p40Fanstage1AirflowOutlet $EVENT
define Notify_Fan.AirOut.Stage.1 notify (Mythz.p40Fanstage1AirflowOutlet.*) setstate Fan.AirOut.Stage.1 $EVTPART1

define Fan.AirIn.Stage.2 dummy
attr   Fan.AirIn.Stage.2 group THZ-Fans_Airflow_Stage.2
attr   Fan.AirIn.Stage.2 room Ventilation
attr   Fan.AirIn.Stage.2 alias Air Input  [m3/h]
attr   Fan.AirIn.Stage.2 setList state:slider,70,1,300
attr   Fan.AirIn.Stage.2 webCmd state
define Notify_p38Fanstage2AirflowInlet notify Fan.AirIn.Stage.2 set Mythz p38Fanstage2AirflowInlet $EVENT
define Notify_Fan.AirIn.Stage.2 notify (Mythz.p38Fanstage2AirflowInlet.*) setstate Fan.AirIn.Stage.2 $EVTPART1

define Fan.AirOut.Stage.2 dummy
attr   Fan.AirOut.Stage.2 group THZ-Fans_Airflow_Stage.2
attr   Fan.AirOut.Stage.2 room Ventilation
attr   Fan.AirOut.Stage.2 alias Air Output [m3/h]
attr   Fan.AirOut.Stage.2 setList state:slider,70,1,300
attr   Fan.AirOut.Stage.2 webCmd state
define Notify_p41Fanstage2AirflowOutlet notify Fan.AirOut.Stage.2 set Mythz p41Fanstage2AirflowOutlet $EVENT
define Notify_Fan.AirOut.Stage.2 notify (Mythz.p41Fanstage2AirflowOutlet.*) setstate Fan.AirOut.Stage.2 $EVTPART1

define Fan.AirIn.Stage.3 dummy
attr   Fan.AirIn.Stage.3 group THZ-Fans_Airflow_Stage.3
attr   Fan.AirIn.Stage.3 room Ventilation
attr   Fan.AirIn.Stage.3 alias Air Input  [m3/h]
attr   Fan.AirIn.Stage.3 setList state:slider,70,1,300
attr   Fan.AirIn.Stage.3 webCmd state
define Notify_p39Fanstage3AirflowInlet notify Fan.AirIn.Stage.3 set Mythz p39Fanstage3AirflowInlet $EVENT
define Notify_Fan.AirIn.Stage.3 notify (Mythz.p39Fanstage3AirflowInlet.*) setstate Fan.AirIn.Stage.3 $EVTPART1

define Fan.AirOut.Stage.3 dummy
attr   Fan.AirOut.Stage.3 group THZ-Fans_Airflow_Stage.3
attr   Fan.AirOut.Stage.3 room Ventilation
attr   Fan.AirOut.Stage.3 alias Air Output [m3/h]
attr   Fan.AirOut.Stage.3 setList state:slider,70,1,300
attr   Fan.AirOut.Stage.3 webCmd state
define Notify_p42Fanstage3AirflowOutlet notify Fan.AirOut.Stage.3 set Mythz p42Fanstage3AirflowOutlet $EVENT
define Notify_Fan.AirOut.Stage.3 notify (Mythz.p42Fanstage3AirflowOutlet.*) setstate Fan.AirOut.Stage.3 $EVTPART1

#define Fan.InputPower dummy
#attr Fan.InputPower  setList 0 1 2 3
#attr Fan.InputPower group THZ-Fans
#attr Fan.InputPower devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2 3:vent_ventilation_level_3

« Letzte Änderung: 16 Februar 2015, 10:23:06 von mlb »

Offline willybauss

  • Sr. Member
  • ****
  • Beiträge: 993
Sieht ähnlich aus wie bei mir. Gibts dazu nen Screen Dump, der die Unterschiede einfacher ersehen lässt?

off1h habe ich bei mir rausgenommen. Nach der Implementierung der "richtigen" UnscheduledVents brauche ich das nicht mehr.

Die Fan.AirIn/Out.Stage.* sind gefährlich: so kann man sich leicht das IN/OUT Verhältnis verbiegen, was im schlimmsten Fall zu Gebäudeschäden führen kann. Besser wäre es, nur IN per Slider u setzen und OUT im Code zu berechnen und ebenfalls mit zu setzen. Dann bleibt das IN/OUT Verhältnis immer ausgewogen.

@houseowner123:
Ja, es liegt am Raumeinfluss und daran, dass bei mir gestern die Raum-Ist-Temperatur stark vom Sollwert abwich. Wenn Soll=Ist ist stimmt die Kurve. Die Bezeichnung "heat curve" ist eigentlich physikalisch nicht korrekt. Eine Heizkurve spiegelt die Wärmeverluste des Gebäudes durch Dammung, Undichtigkeiten usw. wider. Zufällige Abweichungen von der Solltemperatur haben in der Heizkurve nichts zu suchen, sondern gehen in die Soll-Heizkreistemperatur ein. Die Kurve im Diagramm müsste eigentlich "gewichtete Heizkurve" heißen.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS, CO20, FHEM2FHEM

Offline immi

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 785
If you want to be precise the green curve is a special slice (section) of a surface.
The surface is described by function, which codomain is the HC1heatSetTemp
The function has following parameters: roomSetTemp, p13GradientHC1, p14LowEndHC1, p15RoomInfluenceHC1
Domain of the fuction are  insidetemp and outsidetemp

HC1heatSetTemp=f(insidetemp, outsidetemp)
The fuction is used by the heatpump, and the red point is its results at any given time.
  • Willi definition of heatcurve is a simplified function: He blocks one variable to one parameter.
    HC1heatSetTemp=f(insidetemp, outsidetemp), with always insidetemp=roomSetTemp.
  • The green curve does not fix any variable
    HC1heatSetTemp=f(insidetemp, outsidetemp), with insidetemp changing as the inside temperature changes.
In 2 special cases, both curve are identical:if you do not have a inside thermometer or if p15RoomInfluenceHC1=0.

I have no problem plotting both curve. But then someone has to explain 2000 times in the forum the difference.

Offline mlb

  • New Member
  • *
  • Beiträge: 42
@Willy: yes it is based on your examples. And you are right about the risk. Ideally for those advanced parameters I would created room with access protected by a password or PIN - just I do not know  how to do that... Btw: sorry for replying in English, my German is as good as Google Translate :)

Offline willybauss

  • Sr. Member
  • ****
  • Beiträge: 993
In 2 special cases, both curve are identical:if you do not have a inside thermometer or if p15RoomInfluenceHC1=0.
I guess a third case is when inside_temp = inside_set_temp  (p01 or p02). In this case the percentage of p15 shouldn't take any effect. At least for me this assumption fits reality.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS, CO20, FHEM2FHEM

Offline immi

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 785
I guess a third case is when inside_temp = inside_set_temp  (p01 or p02). In this case the percentage of p15 shouldn't take any effect. At least for me this assumption fits reality.
right

Offline belu

  • Full Member
  • ***
  • Beiträge: 121
Hallo,

wie kann ich gelesene Werte z.B. die Warmwassertemperatur überwachen.
Soll heißen Wert größer 50 Grad, dann soll eine E-Mail versendet werden.

Gleiches gilt bei Störungen, welche ausgelesen werden.

Hier in der Hilfe steht genau drin wie du erreichst das dir die THZ Mails schicken kann. Zuerst muss aber Debianmail laufen.

define Mythz.alarm_failure notify Mythz { if (((split ' ',ReadingsVal("Mythz","sLast10errors",0))[1]) > ReadingsVal("Mythz","number_of_faults_old",0)) { DebianMail('mymail@me.com','Tecalor Mythz Alarm - ERROR','Fehlermeldung: '. $EVENT,'./Tecalor-Fehlermeldungen_304-404.txt');; fhem("setreading Mythz number_of_faults_old ". ((split ' ',ReadingsVal("Mythz","sLast10errors",0))[1]));; } }
attr Mythz.alarm_failure room Heizung

Hier in dem Beispiel wird in Mythz,sLast10errors geschaut pb es > ( größer gleich ) 0 alter Vergleich ist und dann eine Mail über das Modul Debianmail an meine Adresse gesendet mit dem Inhalt der Fehlermeldung inkl. Fehlerliste im Anhang.

also das sollte sich ja mit den Infos so umbauen lassen das wenn die Temperatur über 50 Grad wird ne mail kommt.

LG



Offline immi

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 785
Hint from my side
when you want to show in the frontend a reading there are 2 ways: dummy or readingsProxy

Dummy must be used in combination with notifies.
ReadingsProxy is simpler doesn´t need notifies: much simpler.
In both you can map values, translate words in german, create sliders....

Dummy is always required when you need to save a value like "offFor60min", which is not available in the original reading
define FanSelectorDay dummy
attr FanSelectorDay devStateIcon 0:vent_ventilation_level_0 1:vent_ventilation_level_1 2:vent_ventilation_level_2 3:vent_ventilation_level_3@blue
attr FanSelectorDay group THZ
attr FanSelectorDay room pompa
attr FanSelectorDay setList 0 1 2 3 60minOff
attr FanSelectorDay webCmd 0:1:2:3:60minOff
define Notify_p07FanStageDay notify FanSelectorDay  IF ([FanSelectorDay] eq "60minOff") (define at_D_60minOff at +00:59:00 set Mythz p07FanStageDay [Mythz:p07FanStageDay],set Mythz p07FanStageDay 0, setstate FanSelectorDay 60minOff) ELSE (set Mythz p07FanStageDay $EVENT)
define Notify_FanselectorDay notify (Mythz.p07FanStageDay.*) setstate FanSelectorDay $EVTPART1

readingsProxy should be used otherwise
define opmode readingsProxy Mythz:pOpMode
attr opmode room pompa
attr opmode group THZ
attr opmode alias Operation Mode
attr opmode setList automatic standby DAYmode setback DHWmode manual emergency
attr opmode setFn {$CMD = "$READING $CMD"}
attr opmode webCmd  automatic:standby:manual

Offline willybauss

  • Sr. Member
  • ****
  • Beiträge: 993
das Wichtigste bei Emails ist, zu verhindern, dass bei jedem neuen Event nochmal eine Email geschickt wird. Sonst macht Dein Provider irgendwann dicht, weil er von Spamversand ausgeht.
Das habe ich ja in den Beispielen mit den _old Werten realisiert. Eine Zeitverzögerung vor dem nächsten Emailversand wäre evtl. auch möglich.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS, CO20, FHEM2FHEM

Offline immi

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 785
If you want to be precise the green curve is a special slice (section) of a surface.
The surface is described by function, which codomain is the HC1heatSetTemp
The function has following parameters: roomSetTemp, p13GradientHC1, p14LowEndHC1, p15RoomInfluenceHC1
Domain of the fuction are  insidetemp and outsidetemp

HC1heatSetTemp=f(insidetemp, outsidetemp)
The fuction is used by the heatpump, and the red point is its results at any given time.
  • Willi definition (Blue) of heatcurve is a simplified function: He blocks one variable to one parameter.
    HC1heatSetTemp=f(insidetemp, outsidetemp), with always insidetemp=roomSetTemp.
  • The green curve does not fix any variable
    HC1heatSetTemp=f(insidetemp, outsidetemp), with insidetemp changing as the inside temperature changes.
In 2 special cases, both curve are identical:if you do not have a inside thermometer or if p15RoomInfluenceHC1=0.
what do you think of the picture; is it too complicated?

Offline willybauss

  • Sr. Member
  • ****
  • Beiträge: 993
For me it looks ok. But you need to take care that just one curve is shown in case one doesn't have inside temp.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS, CO20, FHEM2FHEM

Offline immi

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 785
in case one doesn't have inside thermometer
or p15RoomInfluenceHC1=0
or insidetemp=roomSetTemp

both curve will overlap; it does not look too bad

tomsk78

  • Gast
Hallo,

habe gerade ein folgendes Verständnisproblem. Laut meinen Einstellungen (p30integralComponent: 100 Kmin) soll die WP erst beim Integralwert von 100 abschalten, tut sie aber nicht. Wenn ich mir die Logs unten anschaue, schaltet sie knapp oberhalb von Null ab (max. 29)  :o Oder deute ich die Graphen einfach falsch? Kann mir bitte einer auf die Sprünge helfen?

(http://fs2.directupload.net/images/150224/2etbtgrk.png)

Offline willybauss

  • Sr. Member
  • ****
  • Beiträge: 993
Hi,
erst mal herzlich willkommen im Forum.

Die Daten zeigen weder für den Integralwert noch für die Hysterese ein regelmäßiges Verhalten. Ich denke, dass die Zyklen durch was anderes bestimmt werden. Mach an der Anlage erst mal einen Reset (den weißen Knopf hinter der rechten Tür für mind. 10 Sekunden drücken). Falls ein Wert zwar im Display angezeigt, aber nicht richtig übernommen wurde, wird er dann auf jeden Fall wieder mit dem gespeicherten Wert angezeigt.

Ein paar Minuten danach machst Du einen Restart von FHEM: im User Interface in der Kommandozeile "shutdown restart" eingeben. Beim Restart liest FHEM alle Parameter aus der Anlage aus und speichert sie im Mythz-Logfile. Diesen Teil des Logfiles brauche ich incl. ein paar Datensätzen der regelmäßigen Datenblöcke danach, um mir ein genaueres Bild machen zu können. Du kannst das als Datei an Deinen Beitrag anhängen ("Erweiterte Optionen - Datei anhängen" unter dem Eingabefenster).

Wie hoch ist denn die Spreizung (Differenz HC1-Soll - HC1-Ist) während der Heizphasen?

Du könntest Deinen Plots noch das Attribut "attr plotsize 840,420" verpassen, damit sie etwas höher und somit besser lesbar sind.
« Letzte Änderung: 24 Februar 2015, 22:15:19 von willybauss »
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS, CO20, FHEM2FHEM

 

decade-submarginal