lumapu / ahoy

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

[Bug] 0.8.83 (@ESP8266) WDT still Resetting when Plotting Diagrams / MQTT enabled #1436

Open DB1BMN-collection opened 9 months ago

DB1BMN-collection commented 9 months ago

Platform

ESP8266

Assembly

I did the assebly by myself

nRF24L01+ Module

nRF24L01+ plus

Antenna

circuit board

Power Stabilization

Elko (~100uF)

Connection picture

Version

0.8.83

Github Hash

5ebfe5a

Build & Flash Method

AhoyDTU Webinstaller

Setup

Upgraded from 0.8.36 -> 0.8.82 -> 0.8.83 by uploading *.bin file thro Ahoy´s Web-UI. Downgraded then back to 0.8.36

Debug Serial Log output

No response

Error description

When enabled plotting Diagrams the firmware restartes every few Minutes. Blue LED continuously on (CE = D4, IRQ = D3), see #1435

You69Man commented 9 months ago

Hast du einmal versucht, die Einstellungen zurückzusetzen ("Erase Settings"), und alles manuell zu konfigurieren und dann schauen, ob das Phänomen dann immer noch auftritt?

DB1BMN-collection commented 9 months ago

Guter Punkt, danke! Hab jetzt mal ein "Factory Reset" gemacht (so hieß es noch in der 0.8.36) und alle Daten neu eingegeben. Werde das mal beobachten.

DB1BMN-collection commented 9 months ago

OK, hab das jetzt mal 45 Minuten beobachtet und es scheint keinen Absturz zu geben und das Diagramm in der Webansicht wird geplottet in einem Intervall von 5 Sekunden.

Auf dem Display sehe ich jedoch nur ein leeres Diagramm. (Show Ratio 50 %, Line 1-3). Habe jetzt mal auf Line 2-3 gestellt und gucke weiter.

Dirk-Ahoy commented 9 months ago

Du musst die Koordinaten beim Sunset eintragen sonst geht der Display-Graph nicht.

DB1BMN-collection commented 9 months ago

Du musst die Koordinaten beim Sunset eintragen sonst geht der Display-Graph nicht.

Cool, danke! Habs jetzt mal eingetragen, testen kann ich ja erst morgen.

Ist das Absicht oder ein Bug? - Die Web-Darstellung funktioniert ja auch ohne Koordinaten.

You69Man commented 9 months ago

Ist kein Bug, sondern wird für die korrekte Skalierung auf den Tagesverlauf benötigt.

DB1BMN-collection commented 9 months ago

So, jetzt habe ich das mal den ganzen Tag durchlaufen lassen. Als ich die Koordinaten eingetragen habe, funktionierte das Plotting auch anfangs.

Es muss aber dennoch mindestens einen Absturz gegeben haben, denn als ich gegen 18:20h heim kam, war kein Diagramm sichtbar weder im Display noch in der Web-Ansicht. Als "Uptime" zeigte es ca. 45 Minuten an, der Absturz muss als sogar noch vor dem Sonnenuntergang (ca. 17:45) passiert sein.

lumapu commented 9 months ago

wäre es möglich über USB ein Log mitlaufen zu lassen?

DB1BMN-collection commented 9 months ago

Ähm, den ESP per USB an einen Rechner anschließen und per COM-Port die Daten in eine Text-Datei schreiben? Sollte ich hinbekommen, muss ich nur den alten Hammer-Terminal ausgraben. Ich setz das morgen früh auf, bevor ich losfahre.

Danke schon mal im Voraus!

DB1BMN-collection commented 9 months ago

So, heute morgen gegen 7:30h gestartet, es mit Br@y-Terminal [1] aufzuzeichnen. Gegen 7:46h erfolgte der erste Reset durch den Watchdog. Um 7:53:20h hab es dann eine "User exception (panic/abort/assert)" / "Unhandled C++ exception: OOM" mit anschließendem Stack-Dump. Um 8:06:12h hat der Watchdog wieder zugebissen.

Gegen 9:04h stürzte das Laptop aus unbekannter Ursache mit einem Bluescreen ab.

In Angang das Logfile, hoffentlich ohne kompromittierende Daten. 20240220073232.log

[1] https://sites.google.com/site/terminalbpp/

lumapu commented 9 months ago

maybe that's too much for the small ESP. History (can't be disabled) and display. is the ESP stable if you disable the display in the settings?

DB1BMN-collection commented 9 months ago

Will try tomorrow

DB1BMN-collection commented 9 months ago

Deactivated Graph Plotting in Display (0 %) at ca. 7:30h, rebooted and let it over the day allone (no USB log capture today).

Came home back at 18:00h and see: at least one restart (think there were more).

/edit: reboot reason was Hardware Watchdog

Screenshot_20240221-180226_Chrome

Dirk-Ahoy commented 9 months ago

du solltest mal im Log die Daten vom WR abstellen und Privatemodus dann kommt da viel weniger - kann man dann besser auswerten.

lumapu commented 9 months ago

what happens if you completely disable the display?

DB1BMN-collection commented 9 months ago

OK, set Display type to "None". Will try tomorrow. After sunset, when the inverter was not delivering it was fine even when the "Night behaviour" was active: grafik

DB1BMN-collection commented 9 months ago

So, ich hoffe, es ist OK, wenn ich auf deutsch schreibe?

Also habe, gestern Abend das Display komplett deaktiviert (Display "None"). Erstaunlicherweise bleibt die letzte Anzeige dabei erhalten. Nach einem Neustart kurz vor Mitternacht lief die DTU dann bis zum Sonnenaufgang durch (Uptime ca. 9 Stunden).

Habe dann das Logging im Terminal gestartet und hänge es hier an: 20240223084816.zip Während des Tages gab es dann 8 "wdt resets". Nachmittags erfolgte der letzte Neustart um 15:17h und hielt sich dann bis zum Sonnenuntergang, wo ich das Logging wieder gestoppt habe.

lumapu commented 9 months ago

ok, jetzt wissen wir, dass das Display nicht schuld ist. Ist eine Abfrage der RestApi von irgendwo extern aktiv?

DB1BMN-collection commented 9 months ago

Ist eine Abfrage der RestApi von irgendwo extern aktiv?

Soweit ich weiß, nicht. Es wird nur per MQTT an HomeAssistant weitergefunkt, aber nichts aktiv abgefragt. Ich habe jetzt mal MQTT deaktiviert. Schauen wir mal weiter.

P.S.: Habe schon die 0.8.86 installiert am WE aber dennoch keine Abhilfe. P.P.S.: Ich habe noch das alte Pin-Out konfiguriert, also mit CE an D4, falls das von Belang sein sollte. grafik

DB1BMN-collection commented 9 months ago

Schau an: Hatte MQTT ausgeschaltet gehabt und die DTU lief den ganzen Tag durch ohne Neustart. thumbsup Hab jetzt mal wieder den Display-Graph auf "50 / Line 1-3" gestellt und werde morgen weiter testen. BTW: Das Inverter-Intervall sind 5 Sekunden, weitere Einstellungen siehe Screenshot.

grafik

DB1BMN-collection commented 8 months ago

So, wie erwaret lief die DTU nun die ganze Nacht und den ganzen Tag durch ganz ohne Absturz und hat ein schönes Diagramm gezeichnet. MQTT war dabei aus, also scheint es daran zu liegen. Wundert mich, dass es sonst noch niemandem aufgefallen ist. - Oder nutzt ihr alle den großen ESP32?

20240227_192216_crop

DB1BMN-collection commented 8 months ago

Was ich noch testen will: Ich hatte ja eingangs geschrieben, dass ich von 0.8.36 auf 0.8.83 upgedatet habe über das Web-UI. Es wurde daraufhin empfhohlen , einen "Factory Reset" zu machen und alle Einstellungen neu einzugeben. Ich werde jetzt den ESP neu per USB-Kabel löschen und mit dem Webinstaller neu flashen, das Display und MQTT wieder aktivieren und gucken was es morgen macht.

DB1BMN-collection commented 8 months ago

Ja, wie erwaret gab es heute jede Menge Neustarts, wenn MQTT akttiviert ist. Hate einen frischen Wemos D1 mini per USB-Kabel und Webserial auf die 0.8.83 programmiert und die Koordinaten wie oben eingegeben. Der erste Abstur war ca. 20 Minuten nach Sonnenaufgang, der letzte rund eine Stunde vor der letzten Übertragung. Spiele jetzt die 0.8.86 auf und teste morgen wieder weiter.

Dirk-Ahoy commented 8 months ago

Ich denke du solltest auf ESP32 oder besser noch Fusion Board upgraden - der 8266 is ja schon recht schwach und ziemlich an der Grenze - mein Tip :)

DB1BMN-collection commented 8 months ago

Das ist schade, denn mit MQTT alleine lief es ja den ganzen Sommer durch. Erst mit dem Diagramm kam dieses Problem. Auch die Diagramme alleine funktionieren ja. Ich denke, da lässt sich noch was optimieren Ich werde morgen mal den Heap und die Fragmentierung beobachten.

Das Problem ist auch, dass ich auf das Format des Wemos D1 mini festgelegt bin durch die Leiterplatte.

Dirk-Ahoy commented 8 months ago

Ja neue Features - dann ist der "alte" am Ende - steht ja gaub auch irgendwo das mqtt nicht empfohlen ist beim 8266 - muss man abwägen alte Version oder neue mit stärkerer Hardware

lumapu commented 8 months ago

evtl. lohnt ein weiterer Test morgen, ich habe in der 0.8.88 einen MqTT Fehler gefixt: schaue mal bei #1458

DB1BMN-collection commented 8 months ago

Danke, hab noch in der Nacht die 0.8.88 (warum muss ich nur an Lego denken?) installiert. Leider keine abhilfe. Zahlreiche Neustarts im laufe des Tages :-(

Fassen wir aber zusammen:

Ich werde die nächsten Versionen weiter beobachten und antesten

lumapu commented 8 months ago

Danke für's Feedback. Könntest du auf deinem MqTT Broker prüfen, ob bei den JSON Payloads die schließende Klammer } da ist? Vor allem bei den Statistikdaten ist das interessant.

DB1BMN-collection commented 8 months ago

Ich habe zu danken! Ich verwende den Mosqitto auf Home-Assistant, bin da aber nicht so firm drin. Komme aus der Hardware/Elektronik-Ecke.

Unter "MQTT Info" erhalte ich folgende Ansicht: grafik Wenn ich mich durch alle Einträge durchklicke, habe ich das "Gefühl", dass alle geschweiften Klammern balanciert sind.

Vor allem bei den Statistikdaten ist das interessant.

Welche sind das genau? Wenn ich nach dem String "stati" suche, finde ich keinen Eintrag, auch wenn alle Felder erweitert sind.

Unter Diagnose-Informationen kann ich mir ein JSON-File herunterladen (mit einem kryptischen Namen). Das sind aber über 5000 Zeilen. Werden das über den Tag mehr? -- Dann würde ich das noch mitloggen. Gibt es ein Programm, mit dem man das validieren kann?

MetaChuh commented 8 months ago

@DB1BMN-collection

Das Problem ist auch, dass ich auf das Format des Wemos D1 mini festgelegt bin durch die Leiterplatte.

kein problem, den esp32 gibt's pinkompatibel in der d1 mini version von zb. az-delivery (direkt oder amazon). die hab' ich genau aus den gleichen gründen für die upgrades genommen.

letzte stabile version auf esp8266 mit heavy api usage war bei mir v0.6.9, darum musste ich auch den esp upgraden, oder auf features verzichten. mit dem esp32 d1 mini als drop in replacement auf meiner gesockelten eigenbauplatine, rennt es seit v0.8.83 für mich nahezu fehlerfrei.

image

MetaChuh commented 8 months ago

ps: hab's gleiche gehäuse wie deins, der esp32 ist bei mir, zum platz sparen sandwich bauweise unter dem oled display

IMG_4757

DB1BMN-collection commented 8 months ago

Hehe, die Lösung mit den LEDs in den Display-Löchern gefällt mir! Ich hab jetzt mal den "S2 mini" bestellt zum Testen: https://de.aliexpress.com/item/1005006160675425.html Für die HMS-Wechselrichter brauchen wir ja eh den ESP32. Ein Träum wäre mit USB-C und Antennenbuchse...

Ist natürlich schade für all die Leute, die schon einen D1 mini haben und sich irgendwann wundern, warum ihre Kiste regelmäßig abschmiert. - Naja, ich beobachte das mal weiter.

MetaChuh commented 8 months ago

Hehe, die Lösung mit den LEDs in den Display-Löchern gefällt mir!

hahaha, ja, ist definitiv klassich old school entstanden ... fertiges ding ohne leds fertig im garten ... bier aufmachen und d'ran erfreuen ... lange anstarren bis man merkt "was macht man mit den löchern" ... dann 2 leds dazubauen ... nochmal bier aufmachen und nochmal d'ran erfreuen 😂

(danach war ich schon zu betrunken, um @lumapu zu fragen, ob man noch zwei weitere gpio's für leds anreißen kann, die man auch plausibel nutzen könnte 🙈😂)

Ich hab jetzt mal den "S2 mini" bestellt zum Testen

werden identisch funktionieren wie die esp32 d1 mini von az-delivery. einziger unterschied ist die qualitätskontrolle und garantie, also wie immer 3er pack kaufen.

Ist natürlich schade für all die Leute, die schon einen D1 mini haben und sich irgendwann wundern, warum ihre Kiste regelmäßig abschmiert

auch die versuchen wir zu supporten ... wird aber immer schwieriger, weil brauchen tun' sie v0.6.9, jedoch wollen alles neu, was es am commodore amiga gibt, und nicht mehr am vorhandenen c64 läuft 😉

greetings und glg, metachuh

You69Man commented 8 months ago

Ist natürlich schade für all die Leute, die schon einen D1 mini haben und sich irgendwann wundern, warum ihre Kiste regelmäßig abschmiert. - Naja, ich beobachte das mal weiter.

Es ja immer noch nicht klar, woher diese Resets kommen. Ich betreibe auch einen D1 mini, Esp8266, mit immer neuesten FW Versionen, ohne jegliche Reboot Probleme.

DB1BMN-collection commented 8 months ago

@MetaChuh Magst du bitte hier mal gucken: https://github.com/lumapu/ahoy/issues/965#issuecomment-1977502784 Vielleicht hast du ne Idee, wie ich den S2 programmieren könnte?

MetaChuh commented 8 months ago

@DB1BMN-collection 😂 ok 😉

You69Man commented 8 months ago

Da das Display und das Display Diagramm ja nun schon ziemlich zweifelsfrei unschuldig gesprochen wurde, könnte man evt. einmal die irreführende Headline des Issues adaptieren.

MetaChuh commented 8 months ago

ich bin generell immer für schließen 😉

You69Man commented 8 months ago

ich bin generell immer für schließen 😉

Ja, wäre auch eine Möglichkeit, aber ich fürchte, davon wird das eigentliche Reboot-Problem (welches immer das ist) nicht behoben. Also ich denke schon, dass da noch was ist, was gefunden werden muss. Zwei verdächtige Kandidaten: Irgendwas im MQTT, und/oder Zeitsynchronisation/NTP

Prinzipiell glaube ich nicht, dass man die Antwort auf "naja, der ESP 8266 ist halt zu schwach" vereinfachen sollte, denn zumindest mit meinen HM-800, langweilt sich auch mein 8266 immer noch mit jeder Menge Idle-Time (und ich habe wie gesagt auch keine Reboots). Nur spontan kann es ihm vielleicht hie und da einmal kurz zu viel werden, aber so etwas ließe sich normalerweise gut fixen, wüsste man einmal wo der Hund begraben ist (wir haben es ja nicht mit einem Echtzeitsystem zu tun).

D.h. jede weitere Rückmeldung, jedes weitere Testszenario (egal ob gut, oder schlecht), kann weitere wertvolle Erkenntnisse bringen. Wir müssen rausfinden, unter welchen genauen Bedingungen die Reboots auftreten.

Aber wenn die Headline schon einmal Vorurteile schürt, ist man von vorn herein am falschen Dampfer.

DB1BMN-collection commented 8 months ago

Danke, ja ich logge ja jetzt die Uptime und die RSSI in Home-Assistant und bekomme eine schöne Sägezahn-Kurve mit vielen Restarts am Tag. - Nachts läufts durch. grafik Ich hoffe, dass ich am WE auch noch den Heap plotten kann. Wie ich schon schrieb, wäre es cool (zumindest fürs Debuggen), wenn auch die Uptime, RSSI und Heap sich als Entitäten (was für ein Wort!?) bei Home Assistant melden würden, so wie sich ja auch jeder Wechselrichter mit rund ca. 40 Entitäten anmeldet.

Dass der 8266 zu schwach ist glaube ich auch nicht, denn z.B. Tasmota kann ja auch MQTT und Diagramme plotten.

Ich hab mir zwar den S2-mini geholt, aber der scheint wohl verfused zu sein.

DB1BMN-collection commented 8 months ago

So, kleines Update mit kleinen Erkenntnissen. Da ich offensichtlich einen zu hohen Ableitstrom im Kabel zum Wechselrichter habe, ließ ich dieses abgezogen, so dass keine Einspeisung erfolgte. Der Wechselrichter kommunizierte aber weiterhin mit der DTU und meldete z.B. seine Temperatur. Ergebnis: Die Laufzeit der DTU verlängerte sich signifikant. Heute Nachmittag kam dann der erste Restart nach über 159.000 Sekunden. - Für mein Verständnis keine "Magic Number" im Binärsystem. Keine Auffälligkeiten bei den anderen Werten. RSSI und Heap. Version ist 0.8.91

Screenshot 2024-03-10 at 13-41-56 Verlauf – Home Assistant

N.b.: Am 2024-03-08 gegen 17h habe ich einen manuellen Neustart durchführt, diesen also bitte nicht weiter beachten.

Vielleicht sollten wir uns auch mal den Stackpointer anschauen? - Weiß jemand, wie man den plotten kann?

lumapu commented 8 months ago

auffällig ist für mich die Heap-Fragmentation. Das ist auch der größte unterschied zum ESP32, der deutlich mehr Heap hat. Ich werde in Zukunft wieder mehr auf den ESP8266 schauen, da er irgendwie etwas ins Hintertreffen gelangt ist. Danke für deine Geduld und die guten Reports

DB1BMN-collection commented 8 months ago

Bitte gern geschehen :-)

Ja, die Heap-Fragmentierung habe ich auch versucht zu verstehen. Auffällig ist, dass in der Nacht vom 9. zum 10. März der Wert zwar relativ ruhig ist (klar, gibt ja auch keine Kommunikation zum Inverter), aber mit "13" im Durchschnitt sogar höher als am Tag.

Heute Nachmittag vor dem Absturz war der Wert wieder so um 10 mit ein paar kurzen Zacken. Nach dem Reset war die Fragmentierung bei 33. Der nächste Restart kam rasch nach ca. 15 Minuten, wobei die Fragmentierung weiter so hoch blieb.

Jetzt hat es um 15:17h wieder einen Restart gegeben, wobei die Fragmentierung nun auf 5-8 runterging. Mal sehen, ob es dann wieder länger durchhält.

Screenshot 2024-03-10 at 15-31-43 Verlauf – Home Assistant

Solange ich kein Ersatzkabel habe, lasse ich das mal so weiter durchlaufen.

Zordandi commented 8 months ago

Ich kann die Probleme mit MQTT auf einem ESP8266 bestätigen, welcher den Hardware Watchdog auslöst. Ich habe vor ein paar Tagen mit der Verwendung von Mosquitto auf Home-Assistant begonnen. Dabei habe ich zuerst die v0.8.83 verwendet und musste wegen dem Bug bei MQTT auf v0.8.84 gehen. Seit der Aktivierung von MQTT sind mir mehrmalige Neustarts wegen Hardware Watchdog aufgefallen. -> kann ich irgendwie bei der Problemfindung helfen?!?

lumapu commented 5 months ago

bitte die ganz neue Version 0.8.123 mal testen.

DB1BMN commented 5 months ago

/edit: Nach einem weiteren Neustart werden die Fenster nun korrekt dargestellt. Rest bobachte ich weiter.

Oh, so viele Neuerungen! Danke!

Habs heute morgen um 5:00 h gleich mal installiert auf dem 8266. Folgende Beobachtung: Im Browser werden die seitlichen Menüs nicht anzeigt und die Startseite ist "blind". Strg + F5 habe ich mehrfach gedrückt. NoScript ausgeschaltet. Reporting per MQTT läuft aber weiter. Ich lass das mal weiter laufen grafik

lumapu commented 5 months ago

ich habe keine Ahnung woran das liegt, scheinbar wurde irgendwie die api.js nicht aktualisiert - kanns mir nicht erklären. Ich hatten den gleichen Fehler auch hier bei mir - jetzt mit der -all geht es. Hoffentlich komme ich da noch dahinter.

stefan123t commented 3 weeks ago

@DB1BMN-collection / @DB1BMN und @Zordandi bitte mal mit der aktuellen Version 0.8.152 testen und zurück melden ob das Problem noch besteht ? Danke!

Was die Heapauslastung angeht scheint der ESP8266 mit 14x 1024 Bytes in der Regel stabil zu laufen. Zeiten mit nur 8x 1024 Bytes scheint der ESP8266 z.B. mittags auch durchaus auszuhalten.

Zur Heap Fragementierung könnte prinzipiell schon die MQTT Bibliothek beitragen. Ich meine die JSON Daten werden zuerst in lokalen Datenstrukturen abgelegt und dann versendet.

@lumapu macht es evtl. Sinn dabei die Größe des JSON Buffers jeweils mit zu loggen ?