-
-
Notifications
You must be signed in to change notification settings - Fork 225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
V0.4.9 - HM-1500 #53
Comments
Sehr merkwürdig. Ich bin jetzt auf meine letzte Version 0.4.3 zurück. |
Selbes Problem bei mir mit dem HM600 und einem ESP8266. War vorher auf der Version 0.3.6 und die lief seit ca. 2-3 Wochen problemlos. Habe vorhin auf die 0.4.9 geupdatet und seit dem:
|
Nachdem ich die Seriennummer des Inverters neu reingeschrieben habe (stand vorher genau so drinnen), empfange ich wieder Daten:
Ist das Verhältnis zwischen erfolgreich empfangenen, fehlerhaften empfangenen und gesendeten Daten eigentlich normal? |
@layeraccess sieht so aus als wären bei den Invertern 2 und 3 noch Datenfragmente vorhanden, bitte mal alles unnötige rauslöschen und neu speichern. Dann sollte auch das Verhältnis von success zu fail wieder viel besser werden, also eher invertiert zu dem hier geposteten. @sude22 sehr komisch was da los ist, auch bei dir nochmal die Setup Seite durchschauen und rauslöschen was nicht nötig ist. Bitte auch noch das Pinout gegechecken, nicht dass das durch den "Reset" falsch steht. @ALL ist die WiFi Verbindung mit dieser Version wieder besser, d.h. ist der ESP durchgehend erreichbar und reagiert sofort? |
Ja, neu eintragen hat geholfen. Danke für den Tipp |
Auf mich macht die 0.4.9 in Bezug auf Erreichbarkeit und Reaktionszeit einen sehr guten Eindruck. |
Moin, Hardware: |
Danke! Ich bin davon ausgegangen, dass die "fffffffffff" als Placeholder stehen. Das Rauslöschen der beiden anderen WR hat massive Verbesserungen gebracht und die Signale kommen jetzt deutlich öfter an:
|
Also bei mir war das Webportal nach einigen Stunden nicht mehr erreichbar und auch die MQTT-Verbindung ist abgebrochen:
Per Ping war der ESP weiterhin erreichbar, am WLAN liegt es also nicht. Ich werde weiter beobachten und berichten. |
Das ist bei mir leider auch so. Eben zum 2. mal heute Nachmittag Web Oberfläche nicht mehr erreichbar. Hilft nur ein Reset per Taste. |
Moin zusammen, |
Kann ich genau so bestätigen. ESP ist immer erreichbar mit 0.4.13, reboot durch watchdog ausgelöst kommt fast jede Stunde. Updateintervall aktuell alle 10 Sekunden, auch Erhöhung des Wert auf 30 und 60 Sekunden verbessert das Verhalten nicht. So lange der ESP immer erreichbar bleibt sind die reboots auch wenn unschön für mich zu ohne Problem. |
Ich nutze die ESP8266 zwar schon länger, bin aber leider kein Experte was die "Innereien" angeht. |
das klingt auf jeden Fall sehr vernünftig. Deshalb habe ich auch dass |
Die 0.4.15 bzw. 0.4.15 behebt die while Schleife und optimiert den kritischen Code Block im Interrupt Handler weitestgehend. |
ich glaube nicht, dass wir den Fehler schön gefunden haben - aber wo versteckt er sich nur? |
Hallo @lumapu,
Hier wird zuerst immer das vermeintlich letzte Paket |
Das Anfordern der Pakete liegt an der Logik, das zuerst bekannt sein muss welches das letzte Paket ist. Erst wenn dieses bekannt ist können die anderen per |
Leider mit der 0.4.15 keine Verbesserung, im Gegenteil. Die Uptime ist nicht über 10 Minuten gekommen, wieder der bekannte "dev 1163"-Fehler. Bin zurück zur 0.4.13, diese läuft für den "Produktiv-Einsatz" deutlich stabiler. |
@lumapu ich verstehe das nicht:
Man kann doch einen Zähler bei 0x01 starten und so lange inkrementieren bis als Antwort ein 0x8y zurückkommt. Das ist dann das letzte Paket der Nachricht. |
gute Idee, so kann man es auch lösen. Vor allem ist man dann komplett unabhängig von der tatsächlichen Länge der Payload. |
Ja genau, die Länge der Payload Antwort auf die 0x80 0x0B Anfrage ist ja m.W. Bereits bekannte / identische Pakete, die eventuell mehrfach vom WR geschickt /empfangen werden, |
Hallo Stefan, ich denke es liegt an folgender Stelle, dass wir Pakete mehrfach sehen: Jan-Jonas (@Sprinterfreak) hat im Forum mal geschrieben, dass er schon alle Kombinationen ausprobiert hat und bei dieser gelandet ist. Durch die funktionierenden Retransmits wäre es meiner Meinung nach durchaus möglich hier die Retries zu reduzieren. Man muss aber weiterhin bedenken, das auch andere auf dem Band funken. |
@sude22 ich denke es wäre sinnvoll mal ein paar Deiner Logs näher anzusehen. Ich habe leider nur einen WR HM-600. Dabei habe ich nur Nachts mit dem WiFi WebServer Probleme. Tagsüber läuft alles. @lumapu vielleicht sollten wir doch eine State Machine einführen, die dafür sorgt dass alle „Tasks“ erledigt werden. Es geht ja um ein Neben-/Nacheinander von:
Dabei ist wichtig dass einige Tasks nur mit WiFi funktionieren. Sollte der ESP die WiFi Verbindung verlieren muss er evtl. andere Tasks hinten anstellen. Auch sollte er mE nicht die WR fragen so lange die NTP Zeit noch nicht gesetzt ist (> 0 unix epoch). Wie häufig soll denn eigentlich der/die WR abgefragt werden, reicht das alle paar / 5 Minuten ? Die MQTT Daten häufiger als die TX/RX Daten zu übermitteln macht auch keinen Sinn. Das könnte ggf. über ein Flag als nachgelagerter Task oder alle x Minuten erfolgen. Die beiden wichtigsten Tasks bleiben mE TX/RX Daten an die WR übermitteln (weil zeitkritisch) und den ESP WebServer die Anfragen abarbeiten lassen, weil sonst keine Verbindung möglich ist und ggf auch der Eingangspuffer des ESP/WebServers überlaufen könnte. Der bisher auch immer wieder geschedulete AccessPoint Task ist mE nicht ganz so wichtig. Der muss eigentlich nur zwingend nach einem Reboot zur Verfügung stehen. Eventuell kann man den AP auch gleichzeitig zum WebServer im Station Mode aufmachen, dann könnte man das über eine Option im WebServer Menü jederzeit zusätzlich aktivieren. |
Anbei mal ein aktueller Log von mir. |
Retries und Retransmits haben unterscheidliche Aufgaben. Retry hilft, wenn der WR die Anfrage nicht korrekt empfangen hat. Das erkenne ich daran, dass ich kein einziges Fragment der Antwort bekomme. Weil python eben auch ermöglicht custom payloads zu senden erhöht das einfach die Wahrscheinlichkeit, dass auch die erfolgreich abgesetzt werden. Retransmits fordern fehlende Fragmente an, wenn mindestens ein Fragment Antwort empfangen wurde. Man kann kein 0x83 anfordern. Das letzte Paket fordert man immer mit 0x80 an. Wenn man das hat, weiß man wie lang die Payload sein muss. |
Hallo @sude22 |
Ich habe mal für mich den Code so geändert, dass pro "Sendeintervall" immer nur einer der drei Wechselrichter angefragt wird. |
@sude22 klasse, das freut mich dass es jetzt klappt. Kannst Du Deine Änderungen evtl. als Pull Request einschicken, damit auch andere davon profitieren ? @lumapu vielleicht machen wir das Intervall ja noch konfigurierbar, bzw. verwenden dafür eines der bereits definierten Intervall Settings. Das Generelle Intervall |
@sude22 super, finde ich toll, dass du es getestet und dabei noch verbessert hast. Habe selbst nur einen WR. @stefan123t wie wäre es das MQTT Intervall automatisch zu berechnen anhand der Anzahl der WR und des SendIntervall und nicht mehr einstellbar machen? Ich habe selbst auch schon eine Uptime von über 24h gehabt, aber immer wieder gibt's trotzdem einen Reset. Einfach weiter beobachten. Was ist der "dev1163"? |
@sude22 Kannst du bitte die neueste Version 0.4.17 nochmal testen, ob das Multi-Inverter Setup jetzt besser klappt? Jetzt wird pro Loop nur ein Inverter angefragt. Edit: Verson aktualisiert |
Danke für das schöne Projekt, Ich habe 2x Wemos D1 für je einen HM1500 im Einsatz. (Inverter stehen zu weit aasender um nur einen zu nutzen) Folgendes ist mir noch aufgefallen.
Da ich parallel immer mit einer DTU-Pro die Übertragung teste, kann ich sagen das obwohl die Wemos nur 2 Meter von den Invertern entfernt stehen DTU ~15 Meter), das es diese Fehlerwerte bei der DTU nicht gibt. Freue mich schon weiter zu testen. |
Könnten die falschen Werte vielleicht daran liegen? Dann hatte ich noch in Erinnerung, dass mal Payloadfragmente aus unterschiedlichen Transaktionen zusammengewürfelt wurden. Das währe dann auch sichere Ursache für solche Werte. |
ist das falsch? Ich habe es unverändert von Hubi übernommen, muss man den NRF24 CRC aktivieren? Beim HM1500 sollten die Daten nicht über mehrere Frames gehen und die Gesamtpayload ist jetzt doch schon einige Versionen implementiert. Ich kann bei mir keine Ausreißer erkennen, zumal ja der Payload CRC gecheckt wird bevor die Daten übernommen werden. |
Ohne dem bombardiert der NRF die CPU mit verrauschtem Datenmüll. Siehe Python, habe damit gute Erfahrungen gemacht: Ich unke jetzt mal rum und stelle in den Raum, dass auf die daraus resultierende Interrupt-Flut, der ein oder andere Crash zurückzuführen ist. |
danke für den Hinweis, das werde ich auch ausprobieren. Kann gut sein, dass der ESP überflutet wird, habe mir immer nur schon gefilterte Nachrichten angeschaut. |
@Sprinterfreak Werde mir das über die nächsten Tage anschauen, aber sieht soweit ganz gut aus. @lumapu So gefällt mir das Ganze und ich kann damit arbeiten. Danke nochmal für das tolle Projekt. |
Hallo @hismastersvoice
Kannst Du die Schaltung in #36 überprüfen und ggf einen Kommentar hinterlassen. Danke! |
Ich glaube das Issue kann geschlossen werden, die o.g. Bedingungen für eine State Machine sollten evtl. noch anderweitig übernommen werden. Mit PR#76 0347a3df sollte auch das hier beschriebene Problem mit den erase settings behoben sein. |
Mit der V0.4.9 commit 01f1fab.... liefert mein HM-1500 leider keine Daten mehr.
Setup wurde neu eingestellt.
Receive success: 0
Receive fail: 171
Send Cnt: 611
Free Heap: 0x90e0
Inverter 'WR1' is not available and is not producing
The text was updated successfully, but these errors were encountered: