lumapu / ahoy

Various tools, examples, and documentation for communicating with Hoymiles microinverters
https://ahoydtu.de
Other
937 stars 219 forks source link

[Bug] Abfrage der Daten mit MC in MicroPython funktioniert nicht mehr mit Version 0.8.127 #1685

Open RF-Signal opened 3 weeks ago

RF-Signal commented 3 weeks ago

Platform

ESP32

Assembly

I did the assebly by myself

nRF24L01+ Module

No response

Antenna

external antenna

Power Stabilization

Elko (~100uF)

Connection picture

Version

0.8.127

Github Hash

8cd364

Build & Flash Method

AhoyDTU Webinstaller

Setup

HMS-1600 HMS-2000 CMT2300A radio enable Display = SH1106 Esp32-wroom32 (ESP32-D0WD-V3) Interval [s] = 20

Debug Serial Log output

nicht relevant

Error description

Ich benütze die Ahoy-DTU um zwei HMS Wechselrichter auszulesen und frage Daten von der DTU mit einem PicoW (RP2040) mit MicroPython ab.

Mit der Firmware Version 0.8.83 funktioniert das mit diesem Befehl problemlos: dtu = requests.get("http://192.168.2.119/api/inverter/id/0")

Mit der Firmware Version 0.8.127 funktioniert dies nicht mehr. Ich bekomme keine Daten.

dknubben commented 3 weeks ago

Hast Du die URL http://192.168.2.119/api/inverter/id/0 mal direkt in einem Browser aufgerufen? Kommen dann JSON-Daten an? Ich kann das Problem nicht nachvollziehen (0.8.127, allerdings HM-Inverter), evtl. gab es aber Formatänderungen bei den Daten, die in Deiner MicroPython-Umsetzung nicht berücksichtigt sind.

RF-Signal commented 2 weeks ago

Antwort: Im Browser funktioniert die Abfrage, das ist ja das komische! Habe mehrfach zwischen den Versionen 0.8.83 und 0.8.127 hin und her gewechselt. Immer dasselbe. Mit 0.8.83 funktioniert es und mit 0.8.127 nicht. Habe auch ein minimiertes Test-Programm probiert keine Änderung.

Weitere Tests haben folgendes ergeben: Mit dem Befehl requests.get() werden zwar Daten ausgelesen. MicroPython scheitert aber dann daran diese Daten als json Daten weiter zu benützen! (Jegliche Art der Abfrage scheitert!) Ich habe auch die Aktuellste Version von MicroPython auf den PicoW geladen, keine Änderung.

Wichtig: Ich habe herausgefunden ab wann das Problem in Verbindung mit MicroPython auftritt. Bis Version 0.8.93 funktioniert die Abfrage unter MicroPython problemlos. Ab Version 0.8.94 können die Daten, die mit requests.get() gelesen werden nicht mehr weiter verarbeitet werden! Das Problem sollte also in einer der Änderungen auf diese Version liegen.

Hoffe Du kannst so herausfinden an welcher Änderung es liegt. Es wäre sehr schade wenn man die neuen Versionen der Ahoy-DTU nicht mehr mit MicroPython abfragen könnte!

Viele Grüße Bernd

dknubben commented 2 weeks ago

Ich kann Dir in dieser Konstellation sicher nicht weiterhelfen. Das könnten allenfalls die Entwickler dieses Projekts, wobei Deine MicroPython-Lösung nicht in den "Support-Bereich" dieses Projekts fällt.

Mit 0.8.94 gab es diese Änderung: "switched AsyncWebServer library" Evtl. ist da die Ursache zu suchen. Ansonsten wäre nach meiner Ansicht der richtige Ansatz, zuerst die Header der Antwort auf die GET-Anfrage anzusehen (Konsole im Browser). Sind hier Unterschiede bei den Versionen im Header festzustellen, z.B. Format, Codierung etc?

lumapu commented 1 week ago

es wäre echt hilfreich die Header sehen zu können. Man kann scheinbar auch MicroPython in Docker ausführen, evtl. kommt man dann auch auch noch mit Wireshark dran um alles mitzuloggen. Leider fehlt mir gerade die Zeit dies zu tun.