foxthefox / ioBroker.fritzdect

Fritzbox DECT adapter for ioBroker
MIT License
40 stars 12 forks source link

State value to set for XXX.komfort has value "126.5" greater than max "32" #164

Closed zokkai closed 9 months ago

zokkai commented 3 years ago

Following Logentries since couple of days for all my thermostates:

State value to set for "fritzdect.0.DECT_xxxxx.komfort" has value "126.5" greater than max "32" State value to set for "fritzdect.0.DECT_xxxxx.absenk" has value "126.5" greater than max "32" State value to set for "fritzdect.0.DECT_xxxxx.tchange" has value "126.5" greater than max "32"

I actually dont know what causes thie problem.

Versions:

thx in advance!

foxthefox commented 3 years ago

the js-controller checks now the value ranged puts this on a info message. the fritzbox is transmitting the values as 2x of the value in the range of 16-56 (8°-28°), that is calculated in the adapter. Value 254 is permanent ON and 253 is permanent OFF. 126.5 is probably derived from 253 and I have to check in the adapter why in OFF state it is calculating and memorizing this as a temperature

foxthefox commented 3 years ago

I checked the documentation of API, at Komfort/tchange/absenk it is not expected to have the value range up to 254. It seems that FB has changed something here.

Can you send the output from click on My Devices/Meine Geräte in the admin of the adapter?

zokkai commented 3 years ago

thanks for your reply. the logs shows the entries as warning thats confusing.

here the result from my devices:

[{"identifier":"xxxxxxxxxxxx","id":"18","functionbitmask":"320","fwversion":"04.94","manufacturer":"AVM","productname":"FRITZ!DECT 301","present":"1","txbusy":"0","name":"Heizung Flur","battery":"80","batterylow":"0","temperature":{"celsius":"220","offset":"-15"},"hkr":{"tist":"44","tsoll":"44","absenk":"253","komfort":"253","lock":"0","devicelock":"0","errorcode":"0","windowopenactiv":"0","windowopenactiveendtime":"0","boostactive":"0","boostactiveendtime":"0","batterylow":"0","battery":"80","nextchange":{"endperiod":"0","tchange":"253"},"summeractive":"0","holidayactive":"0"}},{"identifier":"xxxxxxxxxxxx","id":"19","functionbitmask":"320","fwversion":"04.85","manufacturer":"AVM","productname":"FRITZ!DECT 300","present":"1","txbusy":"0","name":"Heizung Jonas Fenster zur Seite","battery":"70","batterylow":"0","temperature":{"celsius":"210","offset":"-5"},"hkr":{"tist":"42","tsoll":"42","absenk":"253","komfort":"253","lock":"0","devicelock":"0","errorcode":"0","windowopenactiv":"0","windowopenactiveendtime":"0","boostactive":"0","boostactiveendtime":"0","batterylow":"0","battery":"70","nextchange":{"endperiod":"0","tchange":"253"},"summeractive":"0","holidayactive":"0"}},{"identifier":"xxxxxxxxxxxx","id":"20","functionbitmask":"320","fwversion":"03.54","manufacturer":"AVM","productname":"Comet DECT","present":"1","txbusy":"0","name":"Heizung Jonas Fenster nach hinten","battery":"100","batterylow":"0","temperature":{"celsius":"205","offset":"-5"},"hkr":{"tist":"41","tsoll":"42","absenk":"253","komfort":"253","lock":"0","devicelock":"0","errorcode":"0","windowopenactiv":"0","windowopenactiveendtime":"0","boostactive":"0","boostactiveendtime":"0","batterylow":"0","battery":"100","nextchange":{"endperiod":"0","tchange":"253"},"summeractive":"0","holidayactive":"0"}},{"identifier":"xxxxxxxxxxxx","id":"21","functionbitmask":"320","fwversion":"03.54","manufacturer":"AVM","productname":"Comet DECT","present":"1","txbusy":"0","name":"Heizung Küche Terrasse","battery":"100","batterylow":"0","temperature":{"celsius":"225","offset":"0"},"hkr":{"tist":"45","tsoll":"42","absenk":"253","komfort":"253","lock":"0","devicelock":"0","errorcode":"0","windowopenactiv":"0","windowopenactiveendtime":"0","boostactive":"0","boostactiveendtime":"0","batterylow":"0","battery":"100","nextchange":{"endperiod":"0","tchange":"253"},"summeractive":"0","holidayactive":"0"}},{"identifier":"xxxxxxxxxxxx","id":"22","functionbitmask":"320","fwversion":"03.54","manufacturer":"AVM","productname":"Comet DECT","present":"1","txbusy":"0","name":"Heizung Wohnzimmer","battery":"100","batterylow":"0","temperature":{"celsius":"210","offset":"-15"},"hkr":{"tist":"42","tsoll":"43","absenk":"253","komfort":"253","lock":"0","devicelock":"0","errorcode":"0","windowopenactiv":"0","windowopenactiveendtime":"0","boostactive":"0","boostactiveendtime":"0","batterylow":"0","battery":"100","nextchange":{"endperiod":"0","tchange":"253"},"summeractive":"0","holidayactive":"0"}},{"identifier":"xxxxxxxxxxxx","id":"23","functionbitmask":"320","fwversion":"03.54","manufacturer":"AVM","productname":"Comet DECT","present":"1","txbusy":"0","name":"Heizung Küche Tür","battery":"40","batterylow":"0","temperature":{"celsius":"220","offset":"0"},"hkr":{"tist":"44","tsoll":"42","absenk":"253","komfort":"253","lock":"0","devicelock":"0","errorcode":"0","windowopenactiv":"0","windowopenactiveendtime":"0","boostactive":"0","boostactiveendtime":"0","batterylow":"0","battery":"40","nextchange":{"endperiod":"0","tchange":"253"},"summeractive":"0","holidayactive":"0"}},{"identifier":"xxxxxxxxxxxx","id":"24","functionbitmask":"320","fwversion":"03.54","manufacturer":"AVM","productname":"Comet DECT","present":"1","txbusy":"0","name":"Heizung Bad","battery":"40","batterylow":"0","temperature":{"celsius":"215","offset":"-10"},"hkr":{"tist":"43","tsoll":"43","absenk":"253","komfort":"253","lock":"0","devicelock":"0","errorcode":"0","windowopenactiv":"0","windowopenactiveendtime":"0","boostactive":"0","boostactiveendtime":"0","batterylow":"0","battery":"40","nextchange":{"endperiod":"0","tchange":"253"},"summeractive":"0","holidayactive":"0"}}]

foxthefox commented 3 years ago

thanks a lot, in the meantime you can change the settings in the fritzbox for the comfort and absenk temperatures. Instead having the valve permanently closed as set point, you could set a temperature, that would avoid the messages, but might not be the right setting for your desired behavior. but it would avoid the warnings.

zokkai commented 3 years ago

seems to be a good workaround.

thx

duczz commented 2 years ago

@foxthefox i have the same problem, will be worked on this issue?

Henny4184 commented 2 years ago

Hallo habe das selbe Problem. Wo kann man das genau in der Fritzbox umstellen um die Meldungen zu verhindern? ODer gibt es schon eine ander Lösung ?

foxthefox commented 2 years ago

Wie oben beschrieben, bei Absenktemperatur kann man auch an Stelle Ventil zu auch eine Temperatur eingeben.

Henny4184 commented 2 years ago

Wie oben beschrieben, bei Absenktemperatur can man auch an Stelle Ventil zu auch eine Temperatur eingeben.

Hallo, ich steuer nur mit Temperaturen über Iobroker. 6 Grad dann geht die Heizung aus. Oder was soll ich noch anders machen?

duczzz commented 2 years ago

Ist doch nicht Sinn der Sache, sollte trotzdem gefixt werden.

foxthefox commented 2 years ago

steht ja auch als "work in progress" -> wird gemacht. Zeit dafür braucht es halt und die ist knapp

duczz commented 2 years ago

Gibt's hierzu Neuigkeiten?

foxthefox commented 2 years ago

immerhin hab ich schon einen branch angelegt. es wird kommen

duczz commented 2 years ago

@foxthefox Reicht's hier nicht einfach nur den Max Wert in dem Objekt zu erhöhen?

foxthefox commented 2 years ago

als fast-hack geht das natürlich, mach ich gleich mal in der git Version -> ist drin

duczz commented 2 years ago

Schade, meine Idee und der aktuelle Git beheben das Problem leider nicht.

foxthefox commented 2 years ago

da der Datenpunkt schon angelegt ist, wird er nicht überschrieben. es ist mindestens der Datenpunkt zu löschen, damit beim nächsten Adapterstart beim Neuanlegen die Bereiche mit übernommen werden.

steinhuegel commented 2 years ago

Hallo, seit heute (admin und js update) ist mir aufgefallen das ich folgende Warnungen erhalte: State value: tchange" has value "126.5" greater than max "32" komfort" has value "126.5" greater than max "32" absenk" has value "126.5" greater than max "32" celsius" has value "0" less than min "8" <- Heizkörperthermostat 1 celsius" has value "1" less than min "8" <- Heizkörperthermostat 2

Datenpunkt löschen und Adapter neustart bewirken das wieder 126.5° ausgelesen werden. Vielen Dank

foxthefox commented 2 years ago

habe jetzt eine neue Version 2.2.0 erstellt, es kann gern getestet werden

steinhuegel commented 2 years ago

Vielen Dank es Ist jetzt deutlich besser, lediglich wenn der Wert z.B. bei der Messsteckdose ins negative geht (Balkonkraftwerk) bringt es die Warnung.

Was ich jetzt auch gesehen habe ist diese Meldung:

State value to set for "fritzdect.0.DECT_xxxx5.celsius" has value "7.5" less than min "8"

foxthefox commented 2 years ago

wenn das noch kommt (celsius ist nun -30..50), dann sind die Eigenschaften nicht neu übernommen, da vorhandene Objekte nicht neu angelegt werden. Dazu bitte den Adpater stoppen, den Objektbaum für fritzdect löschen und Adapter starten, dann werden die Objekte neu angelegt.

sollte ich bei der Steckdose was anpassen?

foxthefox commented 9 months ago

Ich schau mal was ich mit dem AUS mache

Stopuhr commented 9 months ago

Ich schau mal was ich mit dem AUS mache

Zum Verständnis für später: Das dürfte eine Antwort auf meinen Post gewesen sein, dass ich in der 2.3.1 einen Error bekomme, wenn die Absenktemperatur auf AUS steht - es wird dann ein Wert von 126,5° gemeldet. Ich hatte den Post wieder gelöscht, nachdem ich gelernt habe, dass bereits eine 2.4.1 existiert (nur in ioBroker nicht als stable). Vermutlich habe ich nicht vorher aktualisiert, sonst hätte ich den Post nicht gelöscht. Sorry!

foxthefox commented 9 months ago

Ich habe ein Version 2.5.2 in github zum Testen erstellt.

foxthefox commented 9 months ago

Bitte Testen

Stopuhr commented 9 months ago

Moin! Sorry, war verhindert und bin nicht wirklich zum ioBroker gekommen. Ich versuche mich gleich mal, muss aber erstmal recherchieren, wie ich die Version von hier manuell installiert und später wieder auf die Stable gesiecht bekomme. Gib einen Moment :-)

und danke für die schnelle Reaktion (gut, dass Du schneller bist als ich;-))

Edit: War ja doch einfacher, als gedacht...

Ergebnis: Der Error ist weg, allerdings halte ich das Ergebnis für falsch:

Es kommt nun 8°. Das entspricht aber ja nicht der Realität, denn die ist, dass der Wert nicht gesetzt ist. Ich würde hier also 'null' erwarten - mit der Einschränkung, dass ich nicht weiß, was das evtl. für Besonderheiten mit sich bringt. AVM selbst / der Adapter liefert aber bei Gruppen für 'ist' ebenfalls null, etwas neues wäre das also nicht.

Fachlich wäre aber genau null korrekt, denn es ist ja kein Wert definiert. So kann man nicht zwischen 8° und AUS unterscheiden. Als Alternative (aber erst ganz weit hinter null) sehe ich ansonsten nur, dass der magic Value von AVM (126,5) als erlaubt gesetzt wird (was vermutlich in ioBroker neben dem normalen min-/max-Bereich nicht funktioniert).

Alles nicht böse gemeint, sondern als Verbesserung gemeint, manchmal sieht man die einfache Lösung ja auch nicht. Null wäre für uns Anwender sicher selbsterklärender.

Ich lasse die Version mal installiert, falls ich heute Abend testen soll :-) Danke für Deinen Einsatz

foxthefox commented 9 months ago

Null ist auch eine Möglichkeit, kann ich umsetzen. Allerdings scheint mir dann die Umsetzung auch nicht ganz eindeutig. Aus meiner Sicht verhält sich es wie folgt:

Naja, aus meiner Sicht wäre es ohnehin besser wenn AVM hier nicht den Sollwert misbraucht hätte. Es ist nun aber mal wie es ist. Es gibt kein falsch und richtig, wenn man aus dem mehrfach belegten Wert ein eindeutigkeit hineinbringen will. Das mit der NULL mach ich dann nach meinem Kurzurlaub am 3.10 oder so

Stopuhr commented 9 months ago

Es gibt doch aber bei der Absenktemperatur keine Schaltung. Der Wert ist doch eine Grad-Zahl. Analog dazu auch wieder 'tist' bei Gruppen. Nicht, dass Du jetzt gedanklich bei einem der Modi oder diesem hkr-Dingens warst?!

Edit: OK, Nun, da mein Laptop wieder genug Akku hat, habe ich noch einmal in der Fritzbox nachgesehen... Du hast Recht, man kann tatsächlich für Komfort- und Absenktemperatur jeweils MIN / MAX also AUS/SAUNA einstellen. Wie sinnvoll das ist, sei mal dahingestellt. Das der Missbrauch von den Attributen für Sonderfälle Mist ist (zu viel Blackbox). Ich habe nun aber auch nicht noch recherchiert, ob in diesen Sonderfällen auch die Attribute hkrmode, boostactive etc genutzt werden, das würde unsere Kritik etwas relativieren. Nicht desto trotz halte ich die die Variante mit 'null' bei beiden Attributen aber für aussagekräftiger, damit wird klar gesagt, dass einer der Sonderfälle vorliegt. Im Zweifel kann unsereins dann die Situation in ioBroker ja korrekt einschätzen. Wenn da eine Grad-Angabe kommt, dann hat man nicht einmal das Wissen, dass ein Sonderfall vorliegt.

Ich bin mir auch darüber bewusst, dass das im Zweifel bedeutet, dass bei jemanden eine Skript mit null nicht klar kommt, weil einfach ein Wert erwartet wird. Da man in ioBroker soweit ich weiß kein 'not nullable' setzen kann, sollten Skripte aber prinzipiell damit umgehen können (im Zweifel kann man da ja auch selbst von null auf x° konvertieren). Die Idee eines Schalter für diese Sonderfälle in einer der nächsten Versionen äußere ich dann nach Deinem Urlaub :-)

Alles meine Meinung / Erfahrung und gut gemeinte Kritik!

Gute Erholung!

foxthefox commented 9 months ago

Nochmals zum Verständnis, absenk und komfort lassen sich nur über die FB setzen, das geht nicht über die Schnittstelle. Diese beiden Solltemperaturen werden dann entweder zeitgesteuert oder durch Ereignisse (Szenen, Trigger) als neue Solltemperatur tsoll übernommen. Diese Einstellung wird somit an tsoll durchgereicht. Da tsoll das gleiche Problem hat, gibt es hier die zusätzlichen Punkte hkrmode (Anzeige und Bedienung) und operationmode (nur Anzeige). 0=AUTO/1=OFF/2=ON sind dann die Einstellmöglichkeiten, die sich aus eine korrekten Temperatur oder 253/254 ergeben. tist als aktuelle Temperatur sollte immer einen Temperaturwert zurückgeben und nicht mit 253/254 als Status des Ventils.

Stopuhr commented 9 months ago

Willkommen zurück. Ich hatte das Thema bei mir zurückgestellt (regeln via Homekit zur Heizperiode, da kann man besser testen). Das 'ist' bezog sich bei mir auf Thermostat-Gruppen, dort wir null ausgegeben, weshalb ich ja nun via Skript selbst rechne.

Letztlich war der Anlass ja auch ein Eintrag im Log, dass ein Wert ausserhalb des Bereichs liegt. Ich bleibe da bei der Meinung, dass ich im Falle AUS/SAUNE die Rückgabe von null besser finde als eine Gradangabe aus dem erlaubten Bereich. Wenn da Null kommt, dann kann man (wenn das benötigt wird) sich anhand anderer Werte (oder durch Betrachtung über einen Zeitraum) den Status ermitteln. Aber wie Du ja auch sagst, dass ist dann der Wert, der in der FB eingestellt wurde, im Prinzip weiß man dann also, welcher das ist.

Ich bin Pro-Null :-)

Testen geht dieses Mal wohl auch schneller ;-)

Edit: So ganz alternativ wären mehrere Gültigkeitsbereiche in iobroker auch interessant, dann könnten die avm-magic-vales einfach durchgereicht werden - das ist aber eher ein Feature-Request, der hier nicht hingehört).

foxthefox commented 9 months ago

ich wollte es grad auf "null" setzen das mag eslint nicht: Type 'null' is not assignable to type 'number'.ts(2322) also wird es NaN

foxthefox commented 9 months ago

so, ist in der github version 2.5.2 jetzt geändert es kann getestet werden

Stopuhr commented 9 months ago

Installiert, Adapter loggt keine Warning mehr beim Start und der Datenpunkt wird nun mit (null) °C angezeigt. Ich bin zufrieden :-) Jetzt muss das nur noch stable werden. Thx!

foxthefox commented 9 months ago

alles klar, danke