jens-maus / RaspberryMatic

:house: A feature-rich but lightweight, buildroot-based Linux operating system alternative for your CloudFree CCU3/ELV-Charly 'homematicIP CCU' IoT smarthome central. Running as a pure virtual appliance (ProxmoxVE, Home Assistant, LXC, Docker/OCI, Kubernetes/K8s, etc.) on a dedicated embedded device (RaspberryPi, etc.) or generic x86/ARM hardware.
https://raspberrymatic.de
Apache License 2.0
1.55k stars 192 forks source link

HmIP-eTRV-2 + 3.63.8.20220330 -> Heizkörper bleibt kalt #1784

Closed cleandeveloper closed 2 years ago

cleandeveloper commented 2 years ago

Describe the issue you are experiencing

Nach der Änderung der Einstellungen eines HmIP-eTRV-2 (2.2.8) blieb der Heizkörper kalt. Nach einer mehrstündigen Suche kam ich dann auf die Ursache und konnte sie erst einmal umgehen. Die maximale Ventilöffnung war auf 0% programmiert. Die Werkseinstellung ist eigentlich 100%, aber diese wird als 0% gelesen/angezeigt. Beim schreiben einer Konfiguration wird dann die 0% übernomen. Im Moment umgehe ich den Fehler, indem ich für das betroffene Thermostat den Wert auf 95% eingestellt habe. Alle anderen arbeiten korrekt, obwohl auch bei ihnen 0% in der Web-Oberfläche angezeigt werden.

Describe the behavior you expected

Der Wert für die maximale Ventilöffnung sollte richtig gelesen und auch wieder richtig geschrieben werden und sich nicht unbemerkt auf 0% ändern.

Steps to reproduce the issue

  1. Öffnen der Web-Oberfläche
  2. Anmelden als Admin
  3. Einstellungen -> Geräte -> HmIP-eTRV-2 -> Einstellen
  4. siehe maximale Ventilöffnung

What is the version this bug report is based on?

3.63.8.20220330

Which base platform are you running?

rpi3 (RaspberryPi3)

Which HomeMatic/homematicIP radio module are you using?

RPI-RF-MOD

Anything in the logs that might be useful for us?

Ich denke nicht.

Additional information

No response

Baxxy13 commented 2 years ago

Zusatz: 100% können nicht eingestellt werden. TRV_max_Ventilöffnung_neu

Laut Aussage im Forum besteht das Problem bei CCU3 3.63.8 nicht.

jens-maus commented 2 years ago

Nach kurzer Analyse geht dieses Problem wohl auf folgende (und andere ähnliche) Codezeile in der WebUI zurück:

https://github.com/eq-3/occu/blob/ec9405105f706cc3e5e18e22400527d11348f75e/WebUI/www/config/easymodes/hmip/hmip-etrv_1_master.tcl#L427-L429

Diese for-Loop wird nicht korrekt durchlaufen bzw. gibt falsche Werte jeweils mittels puts Kommando zurück. Warum dies jedoch erst mit der 3.63.8.20220330 auftritt liegt an den unterschiedlichen Verhalten von tcl 8.2 vs. 8.6. Konkret hat sich hier die standard floating point precision von 8.2 zu 8.6 von 12 zu 0 geändert, wohingehen die 0 hier wohl eine Art autoerkennung der FloatingPoint precision ist. Im konkreten Fall schlägt diese Autoerkennung aber wohl schief, wie manan folgendem Beispiel tcl skript erkennen kann:

for {set val 0.0} {$val <= 1.0} {set val [expr $val + 0.05]} {
  puts "$val : [expr int($val *100)] %"
}
puts "tcl_precision: $tcl_precision"

Führt man dieses unter tcl 8.2 aus kommt folgende Ausgabe:

0.0 : 0 %
0.05 : 5 %
0.1 : 10 %
0.15 : 15 %
0.2 : 20 %
0.25 : 25 %
0.3 : 30 %
0.35 : 35 %
0.4 : 40 %
0.45 : 45 %
0.5 : 50 %
0.55 : 55 %
0.6 : 60 %
0.65 : 65 %
0.7 : 70 %
0.75 : 75 %
0.8 : 80 %
0.85 : 85 %
0.9 : 90 %
0.95 : 95 %
1.0 : 100 %
tcl_precision: 12

Führt man das gleiche jedoch unter tcl 8.6 aus kommt folgende Ausgabe zustand:

0.0 : 0 %
0.05 : 5 %
0.1 : 10 %
0.15000000000000002 : 15 %
0.2 : 20 %
0.25 : 25 %
0.3 : 30 %
0.35 : 35 %
0.39999999999999997 : 40 %
0.44999999999999996 : 44 %
0.49999999999999994 : 49 %
0.5499999999999999 : 54 %
0.6 : 60 %
0.65 : 65 %
0.7000000000000001 : 70 %
0.7500000000000001 : 75 %
0.8000000000000002 : 80 %
0.8500000000000002 : 85 %
0.9000000000000002 : 90 %
0.9500000000000003 : 95 %
tcl_precision: 0

In der tat erklärt dies auch warum in der ComboBox für die max. Ventilöffnungsgrad der Wert 100 komplett fehlt und wohl auch krumme Nachkommastelle dann entsprechend weiterverarbeitet werden.

Dieses "krumme Nachkommastellenproblem" scheint auch ein recht prominentes Problem bei tcl bzw. tclsh zu sein (siehe https://wiki.tcl-lang.org/page/A+real+problem), sodass man eigentlich sämtliche Stellen wo solche floating point arithmetic gemacht wird nun überprüfen und ggf. anpassen müsste damit dort für die Ausgabe auch die korrekt format funktion verwendet wird.

Allerdings erscheint das ein recht hoher Aufwand zu sein, da in der WebUI an vielen Stellen ähnliche Arithmetik stattfindet. Daher erscheint es mir hier im nächsten Schritt sinnvoller zu sein die standard tcl_precision für unseren Anwendungsfall wie bei tcl 8.2 auf den Wert 12 zu fixieren, denn damit tritt das Problem dann anscheinend nicht mehr auf.

Baxxy13 commented 2 years ago

Kurzes Feedback zum Thema. Mit dem heutigen Nightly (3.63.8.20220405-d2a744) kann wieder jeder Wert von 0% - 100% in 5% Schritten eingestellt werden. Beim erneuten Öffnen der Einstellungsseite wird auch der tatsächlich eingestellte Wert korrekt angezeigt. Es gibt auch keine "krummen Werte mehr. Passt also.

famrama commented 2 years ago

Hallo zusammen, Ich habe in den letzten Tagen Einstellungen im Wochenplan vorgenommen. Nun fahren genau diese Ventile nicht mehr. ein Update auf die Version 3.65.11.20221005. Brachte keine Verbessung. Die Einstellung der Maximalen VentilÖffnungsposition ist nicht mehr vorhanden. Aktuell betrifft dieser Fehler nur die Ventile welche ich auch geändert habe. Vielen Dank

steffen-mecke commented 1 year ago

Ich habe das gleich Problem. Ich habe auch zwei HmIP-eTRV-2 Thermostat, welche im Frühjahr noch gut geregelt haben und welche nun nicht mehr regeln. Die Verbindung zur Zentrale ist in Ordnung, die Motoren laufen beim Adaptieren, nur öffnen die Ventile nicht(Motoren laufen nicht an), egal ob man Boost betätigt oder eine hohe Temperatur wählt.

Eine Einstellung der Ventilöffnungsposition finde ich nicht mehr in den Einstellungen.

Dan1elGe commented 1 year ago

Ich habe das gleich Problem. Ich habe auch zwei HmIP-eTRV-2 Thermostat, welche im Frühjahr noch gut geregelt haben und welche nun nicht mehr regeln. Die Verbindung zur Zentrale ist in Ordnung, die Motoren laufen beim Adaptieren, nur öffnen die Ventile nicht(Motoren laufen nicht an), egal ob man Boost betätigt oder eine hohe Temperatur wählt.

Eine Einstellung der Ventilöffnungsposition finde ich nicht mehr in den Einstellungen.

Das kann ich exakt auch so bestätigen, nur die Ventile vom Typ HmIP-eTRV-B funktionieren noch. Hier ist auch die Einstellung des Ventilöffnungsgrades vorhanden. Aber bei den HmIP-eTRV-2 nicht mehr.

Weifel53 commented 1 year ago

Dito. Keine Ventil-Einstellmöglichkeiten und keine Ventil-Aktion mehr. Habe einen der HmIP-eTRV-2 jetzt zweimal gelöscht, resettet, angelernt und jetzt reagiert zumindest das Ventil wieder. Aber die Einstellmöglichkeiten sind nach wie vor verschwunden.

ppcfox commented 1 year ago

bei mir taucht der Fehler bis jetzt bei einem von 15 Thermostaten auf. Hoffe es gibt bald eine Abhilfe

Steinii50354 commented 1 year ago

Konnte mit dem Script von Horst2 die Ventile wieder auf max. 100% Öffnungsgrad ändern.

`! VALVE_MAXIMUM_POSITION-Fix für HmIP-eTRV-Geräte für RaspberryMatic 3.63.8.20220330 ! Skript nach HmIP-eTRV-Geräte-Einstellungs-Änderungen (oder regelmäßig) laufen lassen

var neuVentilMax=0.95; ! oder z.B. 0.95 var bAllesAufNeuWert=false; ! true: Alle Ventile, die nicht auf neuVentilMax stehen, werden geändert ! false: Nur Ventile die auf 0% stehen werden geändert string devID; foreach (devID, devices.EnumUsedIDs()) { var oDev = dom.GetObject(devID); var hssType=oDev.HssType(); !WriteLine("hssType=" # hssType); if (hssType.Find("HmIP-eTRV")>-1) { var dev_serial = oDev.Address(); string master = xmlrpc.GetParamset(oDev.Interface(), dev_serial#":1", "MASTER"); !WriteLine(master); integer fundstelle = master.Find("VALVE_MAXIMUM_POSITION"); real vm = master.Substr(fundstelle + 44, 4).ToFloat(); WriteLine(oDev.Name() # " (" # dev_serial # ", " # hssType # "), VALVE_MAXIMUM_POSITION: "# (vm 100).ToString(0) # "%"); if ((vm==0.0) || (bAllesAufNeuWert && (vm != neuVentilMax))) { WriteLine("trying to fix ..."); xmlrpc.PutParamset(oDev.Interface(), dev_serial#":1", "MASTER", "VALVE_MAXIMUM_POSITION", neuVentilMax.ToString(2)); string master = xmlrpc.GetParamset(oDev.Interface(), dev_serial#":1","MASTER"); integer fundstelle = master.Find("VALVE_MAXIMUM_POSITION"); real vm = master.Substr(fundstelle + 44, 4).ToFloat(); WriteLine(" " # dev_serial # ", VALVE_MAXIMUM_POSITION: "# (vm 100).ToString(0) # "%"); } } }`

ppcfox commented 1 year ago

@Steinii50354 vielen Dank für das Skript - funktioniert!

Gruss Jörg

Weifel53 commented 1 year ago

Hat sich erledigt, das war ja zur Abwechslung mal einfach :-)

Moin, sorry für die Frage, aber ich bin noch am Anfang. Wo kann/muss ich dieses Script speichern, anhängen, einbinden, starten etc? Macht man das über den CUx-Daemon? Über einen Hinweis würde ich mich sehr freuen.

Danke im Voraus :-) Martin

Konnte mit dem Script von Horst2 die Ventile wieder auf max. 100% Öffnungsgrad ändern.

ppcfox commented 1 year ago

@Weifel53 Du fügst das Script unter „Programme und Verknüpfungen“ ein. Da ist am Schluss noch ein Hochkomma welches du löschen musst.

Weifel53 commented 1 year ago

Jo, danke! Zuerst war mir eine Anleitung von 2013 vor die Augen geraten, da hatte ich meine Zweifel. Aber so geht’s prima. Danke für den Support :-)

Von: ppcfox @.> Gesendet: Donnerstag, 15. Dezember 2022 10:48 An: jens-maus/RaspberryMatic @.> Cc: Weifel53 @.>; Mention @.> Betreff: Re: [jens-maus/RaspberryMatic] HmIP-eTRV-2 + 3.63.8.20220330 -> Heizkörper bleibt kalt (Issue #1784)

@Weifel53 https://github.com/Weifel53 Du fügst das Script unter „Programme und Verknüpfungen“ ein. Da ist am Schluss noch ein Hochkomma welches du löschen musst.

— Reply to this email directly, view it on GitHub https://github.com/jens-maus/RaspberryMatic/issues/1784#issuecomment-1352804845 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AS4ZLNEDWIKYQ5GGNBOPYLLWNLSMFANCNFSM5SJCAZRQ . You are receiving this because you were mentioned. https://github.com/notifications/beacon/AS4ZLNHNGY2M64JGKLAYLWLWNLSMFA5CNFSM5SJCAZR2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOKCRCT3I.gif Message ID: @. @.> >