Closed schlimmchen closed 7 months ago
Hallo @schlimmchen , bitte die folgenden Informationen mit Vorsicht behandeln. Ich beschäftige mich erst seit kurzem mit programmieren. Mir sind beim VEDirectFrameHandler 3 Dinge aufgefallen.
Aber, alle 3 Punkte sollten nicht zu falschen Daten führen. Das solle die Frame checksum abfangen.
Update: Jetzt habe ich das Problem verstanden. Das passiert ja bei gültigen Frames (checksum ok). Wenn der Fix nicht super eilig ist, dann kann ich das angehen wenn ich mit den VE.Direct hex nachrichten fertig bin.
Ok, jetzt habe ich Zeit und eine Idee wie man das relativ einfach fixen kann.
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new discussion or issue for related concerns.
What happened?
@poolcat4711 berichtet in https://github.com/helgeerbe/OpenDTU-OnBattery/discussions/551#discussioncomment-8562350 plausibel, dass der VeDirectFrameHandler mit fragmentierten Paketen nicht richtig umgeht. In einem Paket stehen Infos, die im anderen fehlen, und andersherum. Da aber der frame handler nach jedem Paket den Buffer zurücksetzt und dann alle Werte aus dem Buffer in die höheren Schichten transportiert, werden so insb. gültige Werte in den höheren Schichten zurückgesetzt.
To Reproduce Bug
Einen Victron MPPT 250|85 per VE.Direct anschließen.
Expected Behavior
Wenn ein Paket vom charge controller verarbeitet wird, dann sollen die darin enthaltenen Werte an die höheren Schichten übermittelt werden, ohne anzunehmen, dass die nicht enthaltenen Werte ihre Gültigkeit verlieren.
Install Method
Pre-Compiled binary from GitHub
What git-hash/version of OpenDTU?
123456
Relevant log/trace output
Anything else?
Der von @poolcat4711 vorgeschlagene Quick-Fix (temporären Buffer gar nicht zurücksetzen) ist nicht ideal, weil dann beispielsweise nicht auffällt, dass nur jedes zweite Paket richtig dekodiert wurde. Besser wäre es, alle Daten gepaart mit einem Timestamp vorzuhalten, an dem man erkennen kann, ob ein Wert gültig ist und wenn ja, wann er kam. Das hat dann aber auch Auswirkungen auf die Implementierung für den SmartShunt, weil diese Komponenten sich Code teilen... Ein Data Store wie der fürs JK BMS wäre wohl gut, aber kostet auch Zeit den zu adaptieren und einzusetzen.