THZ / LWZ Tecalor Stiebel Eltron Heizung

Begonnen von Heiner, 02 Juni 2013, 11:39:13

Vorheriges Thema - Nächstes Thema

willybauss

#1125
Zitat von: Gassi am 05 Januar 2015, 14:44:40

Hallo,
Ich denk du hast einen falschen Senor angeschlossen.
Du hast bestimmt einen PT1000 Senor abgeklemmt. Es muss aber ein KTY 81-210 sein.

...
hä? Er schreibt doch, dass er nach Anschluss des Sensors 18,6° gemessen hat:
ZitatTR                  Raumtemperaturfühler <-------------------- hab ich eben mal einen Fühler angeschlossen und getestet. 18.6 C in meinem Keller. intime_temp ist der Zusatzfühler
Dann kann der Sensortyp nicht sooo falsch sein. Die -60!° waren, bevor er den Sensor angeschlossen hatte.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

willybauss

Zitat von: houseowner123 am 05 Januar 2015, 14:57:51
As feature humity protection could also mean that water removal from the ventilated air is reduced or stopped if room humidity is too low. Alternatively it could be just a hygromter information that gives a display warning if humity or too high/low for health reasons. I use for this ELV MNS100TF and micromat too.

Hier ein Auszug aus dem Manual der 404:
ZitatFeuchteschutzlüftung (Stufe 0)Das Gerät verfügt über eine Feuchteschutzregelung, die ihrGebäude vor Feuchteschäden schützen soll.Der Feuchteschutz sollte immer eingeschaltet werden. DerFeuchteschutz ist nur in der Lüfterstufe 0 wirksam. DerFeuchteschutz ist im Auslieferungszustand deaktiviert, d. h.der Parameter Fe uchteschutz hat den Wert 0 (AUS ). Für dasTrockenheizen muss der Parameter Fe uchteschutz den Wert0 (AUS) haben.Mit dem Parameter Fe uchteschutz schalten Sie die FeuchteschutzfunktionEin.Wenn die Lüftung ausgeschaltet wird (Stufe 0), wird dieFeuchteschutzlüftung aktiviert. In den ersten 24 Stundennach Abschalten der Lüftung sind die Lüfter ausgeschaltet.Danach prüft die Feuchteschutzschaltung in Intervallen voneiner Stunde, ob ein Lüften der Räume notwendig ist. Dazuwerden die Lüfter für die Dauer der Fe uchte Maskierzeit inder Stufe 1 betrieben. Überschreitet der gemessene Wert denFeuchtesollwert, werden beide Lüfter solange betrieben, bis derFeuchtesollwert um die Fe uchte Hysterese unterschritten wird.
Es handelt sich also eindeutig um den Schutz vor zu hoher Luftfeuchtigkeit.

Zitat von: houseowner123 am 05 Januar 2015, 14:57:51
Wie von willi merfach erwähnt muss die aus sGlobal ermittlete Temp noch korregiert werden (userreading) und zwar um genau den selben Korrekturwert, den man auch am internen LWZ Display einstellt.

Habe mal in rot noch etwas ergänzt. Das externe Display hat zwar auch einen Korrekturwert, der betrifft aber die Korrektur seines eigenen Sensors ... sorry, das ist ziemlich verwirrend, ich weiß ...
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

peter456

Hallo immi,

die Informationen vom Haustechnikdialog stimmen mit meinen Ergebnissen überein.
Hier die Antwort auf "get Mythz sPxxx"
E01700DA00D5006401A4019F0064020000006401A401


E017_______Dec________Wert________Header?_______________________
00DA_______218________21.8________Raumtemperatur Normalbetrieb_______P1
00D5_______213________21.3________Raumtemperatur Absenkbetrieb_______P2
0064_______100________10.0________Raumtemperatur Bereitschaft__________P3
01A4_______420________42.0________Brauchwassertemp. Normalbetrieb_____P4
019F_______415________41.5________Brauchwassertemp. Absenkbetrieb_____P5
0064_______100________10.0________Brauchwassertemp. Bereitschaft_______P6
__02_________2_________2__________Lüfterstufe Normalbetrieb____________P7
__00_________0_________0__________Lüfterstufe Absenkbetrieb____________P8
__00_________0_________0__________Lüfterstufe Bereitschaft______________P9
0064_______100________10.0________Heizkreistemperatur Handbetrieb_______P10
01A4_______420________42.0________Brauchwassertemperatur Handbetrieb__P11
__01_________1_________1__________Lüfterstufe Handbetrieb_____________P12


Was mir noch aufgefallen ist, dass bei "get Mythz sLast10errors" jetzt eine Fehlerinformation kommt.
"010046D101010017072F032200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
msg2 WInterface max repeat limited to 50".
Früher hat das problemlos funktioniert.
Get Mythz sGlobal funktioniert weiterhin ohne Probleme.

immi

Hi Peter
I just uploaded v0122, you can update tomorrow
- pXX register for old firmware implemented (maybe you have a better name)
- max repeat increased limited to 60, before was 50
- actualPower_Qc: patched, there was a bufferoverflow, I took care of.
The value is still worng, but better. I do not understand completely how it is encoded. I will look tomorrow in it, if i find some time.

@Willy: the negative values are now gone
@godmorgon: it is not an energy (kWh) but a power kW or W or mW or uW, depending on the fancy encoding.

glücksgriff

Autor: willybauss
ZitathotGasTemp und condenserTemp sind doch in sGlobal enthalten. Was brauchst Du mehr?

das habe ich im sGlobal auch gelesen, leider stelle ich anscheinend zu doof an es im Plot-Editor einzupflegen.
Habe es mit versucht : "attr Mythz userReadings  evaporatorTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[7]}, condenserTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[8]}

Leider bekomme ich als Rückgabewert

condenserTemp                          dhwTemp:
hotGasTemp                               returnTemp:

wie müsste ich es im Plot-Editor einrichten.

Bezüglich dem "TR" Raumfühler. Es ist der orginale Fühler, und Temperaturen passen (zumindest mit 50 cm Leitung ). Werde die tage mal testen, was passiert wenn ich 2.Display und Raumfühler dran hab und Raumeinfluss einstelle.

willybauss

Zitat von: glücksgriff am 05 Januar 2015, 22:52:36
das habe ich im sGlobal auch gelesen, leider stelle ich anscheinend zu doof an es im Plot-Editor einzupflegen.
Habe es mit versucht : "attr Mythz userReadings  evaporatorTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[7]}, condenserTemp:sGlobal {(split ' ',ReadingsVal("Mythz","sGlobal",0))[8]}

Leider bekomme ich als Rückgabewert

Habe mir das userReading gar nicht angesehen, denn Du brauchst es nicht. Ein Wert, der in sGlobal enthalten ist, kann direkt aus sGlobal in den Plot verarbeitet werden. Einfach die entsprechende "Spaltennummer" innerhalb sGlobal im Plot-Editor eintragen. So ähnlich wie im angehängten ScreenDump (gelb markiert).
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

glücksgriff

Geniale Hilfe hier, auch für honkis wie mich. Ich habe es wie Du mir gerade beschrieben hast auch versucht leider ohne Erfolg.
Kannst du mir was du unter spaltennummer verstehst. Ich dachte die sGlobal von vorne duchzählen und bin deshalb auf 7 und 8 gekommen. Leider ohne erfolg, siehe bild.


immi

7 and 8 cannot be right: all value in sglobal are odd positions; the labels are in even

outsideTemp:  -1.5       flowTemp:   12.8    returnTemp: 12.9
pos4 .....         pos5     pos6            pos7   pos8            pos9

glücksgriff

ok, genau das hat mir gefehlt. Vielen lieben dank

houseowner123

Zitat von: willybauss am 05 Januar 2015, 23:17:28
Habe mir das userReading gar nicht angesehen, denn Du brauchst es nicht. Ein Wert, der in sGlobal enthalten ist, kann direkt aus sGlobal in den Plot verarbeitet werden. Einfach die entsprechende "Spaltennummer" innerhalb sGlobal im Plot-Editor eintragen. So ähnlich wie im angehängten ScreenDump (gelb markiert).

Brauch ich schon, denn sGlobal korrigiert bei mir die Innentemperatur nicht. Die ist viel zu hoch. Also korrigier ich sie mit User readings. Oder ziehst Du Korrektur direkt im Plot-editor ab?

immi

Zitat von: houseowner123 am 06 Januar 2015, 00:48:09
Brauch ich schon, denn sGlobal korrigiert bei mir die Innentemperatur nicht. Die ist viel zu hoch. Also korrigier ich sie mit User readings. Oder ziehst Du Korrektur direkt im Plot-editor ab?
If you need it only for plotting, use the function field in the Ploteditor.
I prefer command line, because I like reproducibility:

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid
set ylabel ""
set y2label ""
set yrange [0:1]
set y2range [0:2]

#FileLog 35:Mythz.sGlobal\x3a:0:
#FileLog 37:Mythz.sGlobal\x3a:0:
#FileLog 39:Mythz.sGlobal\x3a:0:
#FileLog 41:Mythz.sGlobal\x3a:0:
#FileLog 31:Mythz.sGlobal\x3a:0:
#FileLog 19:Mythz.sHC1\x3a::$fld[18]=~"summer"?0:1

plot "<IN>" using 1:2 axes x1y1 title 'Compressor' ls l1fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'BoosterStage3' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'BoosterStage2' ls l4 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'BoosterStage1' ls l3 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'HeatingCircuit_Pump' ls l5 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'winterMode' ls l2fill lw 0.5 with lines


As you see in the example, you can use  a perl function e.g. < $fld[18]=~"summer"?0:1" >.
The function can be simple or complex.
You just need something like
#FileLog 9:Mythz.sGlob*:0:$fld[8]+=50
Pay attention to the index in the perl function: I use 8 to indicate field 9.


godmorgon

Zitat von: immi am 05 Januar 2015, 22:29:48
- max repeat increased limited to 60, before was 50
I appreciate your work very much but this is what I would call treatment of symptomps. Fhem had also truncated long messages when communicating with my 404. Until I set verbosity level to 5. I have never had this sort of issues with my test scripts scanning the THZ registers at the maximum possible rate.

willybauss

Zitat von: glücksgriff am 05 Januar 2015, 23:40:13
Geniale Hilfe hier, auch für honkis wie mich. Ich habe es wie Du mir gerade beschrieben hast auch versucht leider ohne Erfolg.
Kannst du mir was du unter spaltennummer verstehst. Ich dachte die sGlobal von vorne duchzählen und bin deshalb auf 7 und 8 gekommen. Leider ohne erfolg, siehe bild.
Ich mag honkis, die erst mal versuchen, sich selbst zu helfen, und die dann immer neue (bessere) Fragen stellen, anstatt die alten zu wiederholen  :) .
Hatte mir schon gedacht, dass dazu Rückfragen kommen; dummerweise ist mir dann der Rechner abgestürzt und ich konnte nicht mehr antworten. Als "Spalten" betrachte ich alles, was sich zwischen 2 Leerzeichen befindet. In Deinem Screenshot hattest Du für Warmwasser Spalte 8 angegeben; in meinem Screenshot war Brauchwasser (=Warmwasser) in Spalte 13. Am besten versucht man immer, anhand eines funktionierenden Beispiels (=meines) die notwendige Zählweise herauszufinden.

Dummerweise ist die Zählweise nicht immer einheitlich. Wenn ich es richtig in Erinnerung habe gilt:

       
  • SVG Plot Editor: alle Spalten werden gezählt, also auch Datum, Modulname (Mythz) und Readingname (sGlobal); die Zählung beginnt bei 1, 2, 3 ...
  • userReadings: Datum, Modulname und Readingname werden nicht mitgezählt; für die restlichen Spalten beginnt die Zählung mit 0, 1, 2 !!!
  • Ich kann nicht ausschließen, dass es für andere Zwecke noch weitere Zählweisen gibt.
@houseowner123:
Beides ist möglich, wie immi bereits schreibt. Ich habe mich dennoch für die korrigierten Werte zu userReadings entschieden. Manchmal verwende ich auch das Charting Frontend; da wird es dann leichter, wenn die korrigierten Werte bereits im LogFile stehen.
Im Gegensatz zu immi bin ich aber kein Freund (mehr) davon, direkt in den config-Dateien zu editieren, egal ob fhem.cfg oder Plot-Config-Files. Das ist im Rest des FHEM-Forums ziemlich verpönt. Wozu gibt es schließlich die mehr oder weniger schicken UIs? Für Korrekturformeln gibt es im Plot-Editor die Spalte "Function". immis Beispiel sieht dann so aus wie im Screenshot (gelbe Markierung). Ich habe zusätzlich noch weitere Formeln (rote Pfeile), damit die Balken für Booster Stage 1 und Stage 2 nur 1/3 bzw. 2/3 Höhe haben. Sonst kann man die nicht unterscheiden. Das Ergebnis sehr ihr dann in Screenshot2. Hier hatte in der Nacht zum 29. Dezember der Booster in Stufe 1 beim heizen nachgeholfen. Bei der Warmwasserbereitung war er gelegentlich in Stufe 3 kurz aktiv.

Generell sollte man so wenig wie möglich userReaings haben. Ich hatte eine Zeit lang LogFiles von >25 MB pro Monat. Nach einer Aufräumaktion bin ich nun wieder bei ca.10 MB.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

willybauss

Zitat von: godmorgon am 06 Januar 2015, 09:28:14
test scripts scanning the THZ registers at the maximum possible rate
sounds interresting ... can you share these scripts with us? Alternatively please send it as email attachment to me.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

immi

#1139
Zitat von: godmorgon am 06 Januar 2015, 09:28:14
I appreciate your work very much but this is what I would call treatment of symptomps. Fhem had also truncated long messages when communicating with my 404. Until I set verbosity level to 5. I have never had this sort of issues with my test scripts scanning the THZ registers at the maximum possible rate.
Hi godmorgon
this is a philosophical/religius decision. You have a tradeof between stability and speed. I changed the decision 3 times. Since September I stick to the repeat solution.... but let me explain...

Root cause
There is a problem "trunkaded messages" coming from hardware.
The problem comes from a serial interface with only 2 cables connected, because there is no way to detect with hardware when a message is really finished.
Think to a message like 123000000123000000000004560000
Some USB-serial interfaces have better driver than other.... but in extreme conditions all have this problem.
If you direcly connect the heatpump with USB, this issue does not come. Nevertheless other problems appear.

100% Corrective action 1
Hardware flow control in addition to two-way data: the RTS and CTS lines are added in a 5-wire version.
This solution is not practicable for me.

99.9% Corrective action 2
you wait enough before reading. There are 9 different heat-pumps-types using THZ-FHEM.
This solution is not practicable because you should adapt the wait time to the different hardware.
Moreover you have always to take the worst-case wait-time. This means long wait-times also for short messages.
Your script (port to py) uses this approach.

99.9% Corrective action 3
I use insider information on the messages: I repeat endlessly the serial-reading as long as you get a certain pattern (e.g 1003).
It  is 100% reliable, and does not block fhem for long. Short messages are read very very very fast. Longer messages, this consumes slightly more cpu.
Why Peter had problems, if it were 100% reliable? easy, I never trust my software  ;D  I do not like endless loops. Therefore I limited the maximum repeat number. In the worst case the maximum repeat number is the number of bytes.
I will increase this number depending on user need.
Marcus and all directusb-users need 1 repeat
I never needed more than 5.
Willy needs 10
Peter needs 60+
This number cannot be longer than the message length.