-
-
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
HW Watchdog und Exceptions #564
Comments
Da Du ein recht kräftiges wifi_rssi hat, kann es daran nicht liegen. Aber mit dem Power Level high könnte das erklärbar sein. 40m ist schon ein Stück, geht auch weniger Leistung ? Kondensator verbaut ? |
Bei mir seit Version 0.5.66 habe ich auch fast täglich einen Reboot wegen dem Hardware Watchdog. Habe irgendwo gelesen, dass es bei den AZ Minis an der Nutzung von Port D1 oder am Stromverbrauch oder fehlendem bzw. zu kleinem Kondensator liegen kann. |
Das würde erklären das ich nur ca. Alle 2 Tage mal einen Reboot habe. Bei mir sind dicke Elkos zusätzlich mit verbaut 😉 was ist mit D1 ? Hast Du nähere Infos ? |
Ich kann erst wieder morgen Abend updaten! 😩 |
Ich suche mal meinen Verlauf ab. Sobald ich die Infos zu Pin D1 gefunden habe, poste ich. |
Am D1 hängt bei mir jetzt das Display mit SCL dran. Mit IRQ an D1 und CE an D2 st bei meiner NodeMCU V3 nichts mehr gegangen! 😭 |
Ähhh, ich weiß gar nicht wie ich verdrahtet habe. Halt Standard Ahoy und eben Standard Nokia, bzw OLED |
Kondensator ist verbaut.
|
Bei der NodeMCU ist auch wieder alles Standard. Beim Wemos D1 mini muss ich mal schauen, wie da jetzt die Verdrahtung ist! |
Zu dünnes bzw. falsch geschirmtes USB Kabel könnte auch ein Problem sein. |
Die Kabel zum nRF wirken auch wie eine Antenne und sammeln auch was mit ein! |
100uF sind direkt an den Pins vom NRF. |
Bei der DEV70 knurrt die Bulldogge auch wieder öfters 😪 Keine Nacht ohne Reboot, unter Tags aber offenbar alles OK. |
Kann es sein, dass auch ein gesteuerter Reboot manchmal zu einer reboot_reason = Exception führen kann? Nachdem ich in der Vergangenheit Probleme mit der Erreichbarkeit der DTU hatte, habe ich eine Automatisierung eingebaut, die immer um Mitternacht einen reboot auslöst. Heute hatte ich Exception als reason. Komisch. |
Ja, beim OTA-Update habe ich auch hin und wieder Exception. |
ja man sieht beim reboot auf der Seriellen Konsole eine Exception, der ich nicht weiter nachgegangen bin |
@Waldo56 Du hast den NRF24 auf Power Level HIGH, geht er mit LOW / MIN nicht auch genau so gut ? |
Habe ich nicht probiert bei ca. 40m Entfernung. |
Ich habe da mal ein bißchen rum gespielt und kann den Pitbull richtig oft bellen lassen 😂 Je niedriger ich mit dem Abfrageintervall von den Invertern gehe, umso öfter knurrt der Wachhund. Ich frage mich nur warum ? Was ist das für ein Unterschied ob ich alle Minute meine Inverter abfrage oder alle 20s ? Ja klar, irgendwann wird die Zeit zu kurz bevor eine Antwort kommt, aber 20s sollte drin sein. Zumal er nicht in 20s alle Inverter abfragt, sondern nur einen nach dem anderen. Bei 6 oder gar 8 Invertern würde ich dann bei der voreingestellten Zeit für einen kompletten Abfragezyklus 3, respektiv 4 Minuten brauchen 😲 Was veranlaßt den Watchdog hier zu resetten ? Was hat der Watchdog denn für eine Zeit, ist sie vielleicht zu kurz ? |
Ich habe das Intervall auf 60s bei 5 retries und 2 Wechselrichter. Habe den Watchdog trotzdem. |
Ich weiß auch nicht wie der Hund bei Ahoy gefüttert wird. Meines Wissen beißt der spätestens nach 8 Sekunden. Könnte mir schon vorstellen das da irgendwelche Abfrageroutinen zum Wechselrichter länger dauern. Vielleicht muß man ihn einfach nur öfters mal füttern ? 🤔 |
@knickohr wir füttern den Hund schon sehr viel, jedes |
Ich vermute wenn er (aufgrund IRQ) nicht mehr dazu kommt seine normalen Aufgaben abzuarbeiten und der Stapel an wartenden RX-Paketen, neu zu sendenen Commands, zu sendenden MQTT Nachrichten und zu beantwortenden HTTP UI/API Anfragen zu groß wird, dann schnappt der Waldi halt irgendwann auch mal zu. |
15 Sekunden funktioniert bei 2 WRs nich mehr, da die Zeit zum pollen, zumindest wenn die WRs offline sind, schon zu lange dauert. Bin deshalb auf 3 Retry runter, das reicht dann noch, zumindest sind dann bei mir noch ca. 3s Pause. Wollte eigentlich erreichen das ich zumindest alle 30s von allen WRs eine Antwort bekomme. Scheint wohl nicht zu funktionieren. Leider sind das halt bei 6 WRs im Endausbau, vielleicht sogar 8 😲, schon mal 4 Minuten bis alle Daten von allen WRs up to date sind. |
Ich hab’s mal ein paar Tage beobachtet. 90% der Waldi-Reboots passieren bei mir in der Zeit zwischen dem „communication start“, bzw. „communication Stop“ und dem „online“ bzw. „Offline“. Also in der Zeit wo die DTU ins leere pollt. |
Um ausschließlich nicht antwortende Inverter zu simulieren habe ich mal 2 bei mir nicht exisitierende Inverter Seriennummern in die Settings eingetragen, so dass niemand antwortet. Knapp 2 Stunden laufen lassen, kein Waldi. Ist es doch ein ESP8266 Problem? |
OK, ich mach das mal mit meinem ESP32. Mal sehen ob ich da Waldi auch zum beißen bringe. |
Ich vermute mal man wollte das AutoAck abschalten und damit keine Pakete mit der richtigen DTU ID rausgehen hat man das mit der Dummy ID aktiviert und dann wieder deaktiviert.
whatHappened speichert bzw exportiert doch das Ergebnis der drei Register/Flags tx_ok, tx_fail, rx_ready, damit wir die dann auswerten können und wissen wo die State Machine des NRF24 gerade rumhängt bzw welchen Zustand sie hat. |
Ich mache mir echt Sorgen um Waldi 😲 Lebt er noch ? Der dritte Abend Gassi gehen und er beißt nicht mehr. Braves Hundi 🦮 Meiner Meinung nach kristallisiert es sich immer mehr heraus das es ein 8266-Problem ist. Was ist anders am ESP32, außer das er 2 Core hat, schneller ist und mehr Pins hat ? Ich schätze mal es sind die 2 Cires und deren Aufgsbenverteilung. Core 0 übernimmt ja die gesamte Hardwareaufgaben, währen im Core 1 die Applikation läuft. |
@knickohr super, dass Waldi beim Guru bleibt.
Die Interruptsteuerung und deren Überwachung ist natürlich anders. Und in dem Umfeld such' ich gerade, da die Probleme vornehmlich beim Nichtantworten des/der WR entstehen. @lumapu hat in #83 ja deutliche Bilder mit der SPI 'Rushhour'.
|
2 Tage 17 Stunden, und noch immer kein Waldi 😎 ich gebe noch zu Bedenken ob vielleicht auch das Nokia uns einen Streich spielt. Hängt ja auch am SPI und teilt sich diesen mit dem NRF. Andreas (unser Display-Guru) hat gestern so eine Anmerkung gemacht das offenbar ein spiend() bei der NRF-Rouitine fehlt, bzw. vermißt wird. vielleicht sollte man da auch mal genauer schauen 🤔 |
spiend() ? wir wollen doch den SPI nicht abschalten. Vielleicht war SPI.endTransaction() gemeint. In der RF24 lib wird jeder SPI Transfer mit SPI.beginTransaction gestartet und mit SPI.endTransaction beendet. Das ist unproblematisch. Danach geht CE auf high und erst wieder auf low, wenn entweder TX_DS (TX data send = Daten vom WR empfangen) oder MAX_RT (maximum retries = Maximalanzahl der Sendeversuche erreicht) signalisiert wird. Da wird Zeit verbraucht. Insbesondere wenn der WR offline ist, da dann direkt wieder angefragt wird ("nothing received: Request Complete Retransmit"), was wohl die SPI 'Rushhour' erklärt. @stefan123t wollte ja noch den Timeout Calculation Code aus der Hoymiles DTU Pro raussuchen. Könnte weiterhelfen. |
hier eine Wasserstandsmeldung:
Ist irgendwie ernüchternd, im Fazit habe ich die Zeile
In Bezug auf Waldi hilft das nicht weiter.
Das würde den SPI deutlich entspannen. @lumapu Wäre schön, wenn du davon Nachtaufnahmen machen könntest (z.B. mit Inverter Intervall 5s) 😃 |
@beegee3 danke für deine Untersuchungen. Circular buffer durch eine Die Aufnahme hab ich gerne machen. Ich hätte mir aus der Doku mehr versprochen aus |
@lumapu ok, ich Versuch mal |
Pegelstand Blaustein : Normal 😉 Waldi ist brav, keinen Beißer, kein Knurren. ESP32-Wachhunde sind gute Hunde 😅 Uptime fast 4 Tage. |
Das muss jetzt einmal geschrieben werden. Ihr seid der Wahnsinn betreffend Eurem Einsatz bei der Ursachenfindung und Verbesserungen. |
Hat doch Lukas schon mal ein Statement abgegeben : |
ja ich denke die Exception kommt von den Event |
@lumapu wie vermutet ist |
@lumapu die Sonne ist weg -> keine RX Tests möglich, daher noch 2 Bemerkungen:
kann man für OTA Update noch ausbauen (alle laufenden Prozesse vor dem Einspielen des Updates stoppen):
sowie den Aufruf in
|
echt schade, dass der 8266 so zickig ist. Bei mir ist zur Zeit oft der halbe Webserver tot, die API liefert nur noch |
Irgendwas beschäftigt den. Kein Wunder das Waldi beißt. Das muß man doch raus bekommen. Ist schon eigenartig. Als ich mit der 0.5.17 angefangen habe war der ESP32 das Problem, nun ist es umgekehrt 😉 Ach ja, hast eben eine neue 78 raus geballert 🤭 |
neue Wasserstandsmeldung und Tests:
Hab's erfolgreich getestet: die Schleife braucht für den Empfang aller Pakete zwischen 100 und 130 ms. Bei nur einem abgefragten Inverter konnte ich das Abfrageintervall auf 2 sek reduzieren, ohne großartig "retransmits" zu erzeugen. Ab und zu ein "Frame missing", wie bisher auch. Hab' allerdings auch eine stabile Verbindung zum WR (trotz NRF ohne externe Antenne, Amp. Power Level auf MIN, knapp 10 m Funkstrecke 😁). Bei mehreren Invertern ist so ein 1 sek Abfrageintervall möglich! Ich will noch ein paar Sachen checken, bevor ich den Code liefern kann (wohl als "dev03 devil" Pull Request, zu viele Anpassungen für ein Posting. Wobei ein Pull Request wegen meines Systems nach wie vor schwierig ist 😞). |
Im Ernst ? 😲 das würde die Abfrage bei 6 Invertern um mindestens Faktor 200 beschleunigen 😎 Übrigens, Uptime mit dem ESP32 jetzt ganz knapp 10 Tage. Und er läuft und läuft und läuft. Braves Waldi ! |
Laut https://www.sparkfun.com/datasheets/Wireless/Nordic/nRF24L01P_Product_Specification_1_0.pdf sind die CRC Polynome ja auch spezifiziert. Ich hatte mir vor zwei Wochen den Kopf zerbrochen wie wir auf das Reverse Polynom 0xA001 (für das CRC-16/ModBus 0x8005 Polynom) gekommen sind ;) Siehe die Diskussion hier: Vielleicht ist das Polynom für das Senden an den WR ja auch ein Anderes ? @beegee3 Wir setzen in sendPacket() aktuell RF24_CRC_DISABLED vor dem Senden. Es gibt auch die beiden og RF24_CRC_8, RF24_CRC_16. Aber das sind wie geschrieben hart-codierte Polynome von Nordic Semiconductors. Laut src/utils/crc.h verwenden wir hier 0x01 als CRC-8 Polynom und 0x00 als Initialisierungsvektor. Evtl schauen wir nochmal nach welche Polynome der Hersteller Hoymiles in der DTU Pro verbastelt hat, aber das ist mE ein anderes als das von Nordic Semicon. |
Ich schreibs jetzt mal dazu #643 |
@stefan123t sorry, muss dir widersprechen: beim Senden wird RF24_CRC_16 benutzt, beim Empfang bisher RF24_CRC_DISABLED. |
sehr ähnlich wie #660, ich hoffe wir beheben das bald |
Hi,
sehe eigentlich schon seit der Installation von 0.5.66 immer wieder eine reboot_reason HW Watchdog oder Exception (siehe Screenshots). Das passiert eigentlich täglich.
Ich habe MQTT enabled. Ein HM800 ist ca. 40m von der DTU entfernt. Das führt immer wieder zu Wiederholungen beim Datentransfer. Die Daten beider HM800 scheinen aber trotzdem nahezu vollständig und plausibel. Leider weiss ich nicht wie ich bei der Ursachenfindung behilflich sein könnte. Habt Ihr dieses Verhalten auch schon beobachtet?
The text was updated successfully, but these errors were encountered: