marcschmiedchen / home-assistant-wolf_ism8

WOLF ISM8 -- HVAC integration for Home Assistant
32 stars 6 forks source link

Fehlerhafte Datenpunkte #26

Closed bhuddah closed 9 months ago

bhuddah commented 1 year ago

Ich beobachte zeitweise fehlerhafte Datenpunkte weit ausserhalb der erwarteten Skala. (6000kW Heizleistung ...)

image

bhuddah commented 1 year ago

Um mal noch ein paar Details zu liefern: Das scheint mit dem Abtauvorgang der Wärmepumpe zu tun zu haben. Eventuell sind das "negative" Werte, die nicht richtig übersetzt werden.

marcschmiedchen commented 1 year ago

IN den Docs hab ich folgendes gefunden: For all Datapoint Types 9.xxx, the encoded value 7FFFh shall always be used to denote invalid data Ich schätze mal, dass da also "invalid" Daten kommen. Da ich das überlesen hatte, fange ich es in der Library nicht als Fehler ab. Ist nur so eine Vermutung. Ich werd das mal abfangen in naher zukunft. Witzig. Wenn sie schon wissen, dass die Daten falsch sind, koennten sie sie ja auch vielleicht einfach NICHT schicken ?!!

marcschmiedchen commented 10 months ago

Hab das "blind" abgefangen. Bitte Feedback ob der Fehler jetzt weg ist.

bhuddah commented 10 months ago

fehler tritt leider weiterhin auf: image

marcschmiedchen commented 10 months ago

Wie hast du die neue Version installiert? von Hand oder per HACS? Kompletten Neustart nicht vergessen? wenn alles nix hilft, trag mal bitte in die "configuration.yaml" folgendes ein:

.-------------- logger: default: warning logs: wolf_ism8.ism8: debug

dann loggt er die werte mit, die er übers netzwerk empfängt. Und dann bitte mal das zu mir schicken, was er als Message kriegt./umrechnet. Ich kann das leider bei mir nicht nachstellen, scheint nur die CWL zu machen

marcschmiedchen commented 10 months ago

achtung, github hat die einrückungen gelöscht. so muss es aussehen

logger:

default: warning logs: <2xtab>wolf_ism8.ism8: debug
marcschmiedchen commented 10 months ago

arrgh ich werde verrückt diese Markdown

logger: -->einfache einrueckung: default: warning -->einfache einrueckung: logs: -->doppelte einrueckung : wolf_ism8.ism8: debug

bhuddah commented 10 months ago

ich hab das jetzt folgendermaßen konfiguriert:

logger:
  default: warning
  logs:
    wolf_ism8.ism8: debug

werde mich melden, sobald ich logs mit werten habe

bhuddah commented 10 months ago

Die Datenpunkte sehen folgendermaßen aus:

2024-01-19 14:10:52.766 DEBUG (MainThread) [wolf_ism8.ism8] Processing DP-ID 178,Heizleistung,message: 4c:ff
2024-01-19 14:10:52.766 DEBUG (MainThread) [wolf_ism8.ism8] decoded 19711 to 6548.4800000000005
marcschmiedchen commented 10 months ago

Ich hab die Implementierung der float-decoder nochmal gecheckt -- sie scheint zu stimmen. 4c:ff sind binär 0100110011111111. Das Vorzeichen ist +, der exponent 1001 , das ergibt 9 und 10011111111 sind 1279. nach der WOlf-Spec sind das dann 0.0112792exp9=6548 kW

ist es immer derselbe wert 4c:ff oder kommen auch andere? ich könnte 4c:ff einfach unterdrücken evtl.

bhuddah commented 10 months ago

Ich hab nochmal weiter durch die größere Datenmenge gesucht:

2024-01-21 22:48:20.940 DEBUG (MainThread) [wolf_ism8.ism8] Processing DP-ID 178,Heizleistung,message: 4c:fe
2024-01-21 22:48:20.941 DEBUG (MainThread) [wolf_ism8.ism8] decoded 19710 to 6543.360000000001
2024-01-21 22:49:23.977 DEBUG (MainThread) [wolf_ism8.ism8] Processing DP-ID 178,Heizleistung,message: 4c:ff
2024-01-21 22:49:23.977 DEBUG (MainThread) [wolf_ism8.ism8] decoded 19711 to 6548.4800000000005

Es treten nur diese beiden Variationen auf. Bisher zumindest. Man könnte die jetzt - wie du sagst - einfach unterdrücken. Oder man wertet das aus als Status "Abtauen" weil effektiv ist es das, was es tut. Aber allzuwichtig ist das nicht. Danke, dass du dich damit so intensiv befasst.

bhuddah commented 10 months ago

hab noch was cooles gefunden:

2024-01-25 13:42:05.679 DEBUG (MainThread) [wolf_ism8.ism8] Processing DP-ID 183,Warmwassertemperatur,message: 00:00
2024-01-25 13:42:05.679 DEBUG (MainThread) [wolf_ism8.ism8] decoded 0 to 0.0

safe to say... das warmwasser war nicht null grad. vermutlich ist das auch ein nichtzulässiger wert oder so...

hwilma commented 10 months ago

Habe auch in den letzten Tagen vereinzelt fehlerhafte Datenpunkte festgestellt. Leider htte ich zu dem Zeitpunkt das Loglevel noch nicht angepasst, daher nur Screenshots.

image image image

marcschmiedchen commented 9 months ago

Also ich konnte kein Muster / keine Fehler in der Implementierung entdecken. Die Float-Werte aus 4C:FF und 4C:FE sind korrekt decodiert und witzigerweise genau "eins" auseinander. Der letzte Screenshot ist besonders wichtig, weil die dargestellte Zahl wird hier schon als Integer angeliefert -- da kann gar kein Decodierfehler vorliegen (hex: AA:AA). Also würde ich mal Netzwerk und Decodierfehler ausschließen, d.h. das ISM sendet sie so ab. Lösungsvorschlag: ich ignoriere /unterdrücke pauschal alle Werte >1.000. Das wären m.E. weder vernünftige Temperaturen, Leistungen oder Volumenströme.... Setz ich dann in 3.0.1 so um

bhuddah commented 9 months ago

Falls das ausschliessen einer konkreten Liste an Fehlkodierungen nicht ökonomisch erscheint, wäre das mmn. auch eine mögliche Strategie. Für mich zur Zielerreichung auf jeden Fall ausreichend. Es würde leider nicht die gelegentlichen 00:00-Fehler rausfiltern, aber dafür habe ich (ausser dem Ignorieren von GENAU 0, auch keine Lösungsidee.

marcschmiedchen commented 9 months ago

Ok, umgesetzt wie besprochen. Kann es leider nicht testen, ich hoffe es funktioniert.

bhuddah commented 9 months ago

Sieht soweit gut aus. Die Fehler mit den Extremwerten sind weg. einzelne verbleibende 00:00-Werte sind wohl was tieferliegendes. Keine Idee, was man da noch machen könnte, ausser die auch zu ignorieren... Vielen Dank für deinen Einsatz!