nischram / EMD_1

E3DC-Modbus-Display-1
4 stars 1 forks source link

EMD Boot-Schleife #4

Closed Newby0815 closed 2 years ago

Newby0815 commented 2 years ago

Hallo Nischram, erst einmal vielen Dank für das Projekt, ist genau was ich gesucht habe. Ich habe aber ein Problem. Habe das Setup mit 2,4" Display von AZ-Delivery mit dem WROOM32 ESP (keine anderen Sensoren). Software lässt sich kompilieren und installieren, läuft aber leider nicht. In der seriellen Konsole kann ich sehen das die SW startet, sich im WLAN anmeldet und auch Daten vom E3DC bekommt. Das Display wird aktiviert, zeigt aber nur einen weißen Hintergrund. In der Konsole sehe ich dann neben den ganzen Daten einen HTTP-Aufruf zu Openweathermap (Air_Pollution). API-Key habe ich dafür angelegt und eingetragen, ebenso die Geo-Koordinaten. Dann passiert einige Sekunden nichts bis die SW einen Fehler wirft und neu startet. Da das mein erstes ESP-Projekt ist mache ich sicher was falsch. Kannst Du mir auf die Sprünge helfen?

nischram commented 2 years ago

Hallo Newby0815,

fangen wir mit dem Display-Problem an. Hier würde ich an deiner stelle erstmal eine einfache Software aufspielen um das Display und die Kombination mit dem ESP zu testen. Da gibt es einige im Blog von AzDelivery. Von dem ESP gibt es viele Versionen und mit "WROOM32" ist nur das eigentliche Prozessormodul gemeint, damit es einfach geflasht und betrieben werden kann gibt es diese als komplette Module NodeMCU genannt. So muss du zumindest für meine Software einmal prüfen welches Modul du gewählt hast. In das Displayset von AzDelivery können mehrere Module verbaut werden, aber meine Software ist auf das "ESP32 NodeMCU" ausgelegt ansonsten müssten einige Pins in der Software geändert werden. ESP32_NodeMCU Ich denke aber am einfachsten sendest du hier ein paar Bilder deiner Bauteile und dem Aufbau, dann kann ich es prüfen.

Der Reboot nach wenigen Sekunden kann ich noch nicht ganz abschätzen, aber wenn du sagst der letzte Eintrag kommt von OpenWeatherMap dann solltest du versuchen diesen Teil erstmal nicht zu nutzen. Leider habe ich gerade gesehen das ich dies nicht so exakt beschrieben habe, aber es ist nicht zwingend erforderlich einen Key zu erstellen und einzutragen. Wenn der Key aus meiner parameter_temp.h bestehen bleibt dann wird dies erkannt und der Teil bleibt deaktiviert. Also setz doch den Key mal wieder zurück auf "12345678910111213141516171819202" und lade die Software neu hoch. So muss die Zeile dann aussehen: #define WEATHER_KEY "12345678910111213141516171819202"

Je nach Erkenntnis kannst du dann ja screenshots vom Seriellen Monitor des Fehlers oder der letzten Meldung mache.

Schon mal viel Erfolg. Viele Grüße Nico

Newby0815 commented 2 years ago

Hallo Nico,

Vielen Dank für die schnelle Reaktion. Pin-Out des Moduls, Displays und die Verschaltung auf dem Board habe ich geprüft, das sieht für mich alles gut aus. Hier zwei Bilder meiner Hardware.

ESP32 Display

Wenn ich den Default Weather-Key drin lasse läuft die SW in einer Schleife, allerdings auch mit leerem Display. Werde nachher noch ein paar Screen-Shots zufügen. Das mit der Test-Software kann ich auch noch machen.

Habe übrigens zwei Kits in Arbeit, die verhalten sich gleich. Liegt also wohl nicht an einem defekten Display.

Danke.

Gruß, Sven

nischram commented 2 years ago

Hallo Sven, ich glaube ich habe einen Tipp für dich. Gut das du das Foto vom Display gesendet hast. Rein vom Text gestern habe ich nicht drauf zu geschlagen aber jetzt ist es mir eingefallen. Die beiden Displays 2,4" und 2,8" sind nicht identisch die Pinbelegung ist leicht unterschiedlich. So muss man in der Software das passende Display auswählen. Da ich dies nicht so explizit beschrieben haben, sondern nur aus den gängigen Programmen übernommen habe könnte es sein dass du noch einen Parameter falsch hast. Diese Einstellung:

// Touchdisplay Parameter
//#define TOUCH_BLACK_HEADER                                // Display 2,4" schwarzer Pin-Sockel
#define TOUCH_YELLOW_HEADER                                 // Display 2,8" gelber Pin-Sockel

Muss einmal ausgetauscht werden in so:

// Touchdisplay Parameter
#define TOUCH_BLACK_HEADER                                // Display 2,4" schwarzer Pin-Sockel
//#define TOUCH_YELLOW_HEADER                                 // Display 2,8" gelber Pin-Sockel

Ich hoffe jetzt erstmal das es die Lösung ist denn sonnst sehe ich nichts.

Zu dem Problem mit OpenWeatherMap kann ich nicht so viel beitragen, da müsste ich sehen wo es mit deinem Code hängen bleibt. Du könntest deinen API-Key ja mal direkt in Internet-Browser als Adresse testen. Du musst nur deinen API-Key einsetzen (ersetzen). Die City-Id ( ?id= ) ja einmal so lassen und einmal ersetzen, viellicht ist das ja der Fehler. Diesen Link bitte anpassen und testen: http://api.openweathermap.org/data/2.5/weather?id=2950159&appid=12345678910111213141516171819202

Zur Info: Ich nutze für die Wetterinformation die Library "OpenWeatherOneCall", du kannst aus der Library auch das Exempel "Simple_Latitude_Longitude_Weather_Example" testen.

Viel Erfolg Gruß Nico

Newby0815 commented 2 years ago

Hallo Nico,

das mit den Displays hatte ich schon gefunden und geändert. Ich hab gestern Abend noch ein wenig probiert und habe jetzt eine zu 90% funktionsfähige Lösung gefunden.

Ich habe jetzt WeatherGUI deaktiviert und OTA abgeschaltet. Zusätzlich in der IDE von QIO auf DIO geändert (steht so in der Parameter.h). Und was soll ich sagen: es läuft jetzt!

Wenn ich aber WeatherGUI aktiviere (mit meinen Parametern kommt im Browser eine Antwort die sinnvoll aussieht) stürzt das System einige Sekunden nach dem Wetter-Call mit diesem Output ab:

Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled. Core 1 register dump: PC : 0x40001650 PS : 0x00060430 A0 : 0x800dea2d A1 : 0x3ffb1aa0
A2 : 0x3ffc189c A3 : 0x00000000 A4 : 0x00000032 A5 : 0x0000ff00
A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x00000000 A9 : 0x00000000
A10 : 0x3ffc189c A11 : 0x000000ff A12 : 0x40086b8c A13 : 0x0000000a
A14 : 0x00000000 A15 : 0x3ffd0580 SAR : 0x00000010 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x4000164d LEND : 0x40001667 LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000

Backtrace: 0x40001650:0x3ffb1aa0 0x400dea2a:0x3ffb1ab0 0x400e191d:0x3ffb1ef0 0x400d2873:0x3ffb1f10 0x400d346e:0x3ffb1f30 0x400d6323:0x3ffb1f60 0x400e54a8:0x3ffb1fb0 0x40089cba:0x3ffb1fd0

Rebooting...

Das kommt als Antwort im Browser:

coord |   -- | -- lon | x.xxxx lat | yy.yy list |   0 |   main |   aqi | 1 components |   co | 293.73 no | 0.01 no2 | 12.51 o3 | 41.84 so2 | 1.42 pm2_5 | 4.74 pm10 | 5.99 nh3 | 2.66 dt | 1638518400

Eben kam noch die Info in der IDE das einige Libraries aktualisiert werden können, das habe ich gemacht aber WeatherGUI geht immer noch nicht.

Noch was: da ich ein Fan von statischen IPs bin habe ich diesen Code in der Parameter.h zugefügt:

IPAddress ip(192, 168, 189, 249); // Statische IP (added by Newby0815) IPAddress dns(192, 168, 189, 1); // DNS Server (added by Newby0815) IPAddress gateway(192, 168, 189, 1); // Gateway (added by Newby0815) IPAddress subnet(255, 255, 255, 0); // Subnet Mask (added by Newby0815)

Der E3DC und die beiden Displays hängen bei mir am Gäste-Netz der Fritz!-Box (Gastzugang an LAN4 für den E3DC und Gäste-WLAN aktiviert, Kommunikation untereinander erlaubt) um sie von meinem internen Netz fern zu halten.

Mal sehen ob ich das mit dem Wetter auch noch hin bekomme, aktuell bin ich aber schon super zufrieden mit dem was geht.

VIelen Dank für das klasse Projekt und Deine Hilfe! Suche jetzt nach einer Lösung mit größerem Display, werde mir Dein anderes Projekt mit dem RasPi auch mal ansehen. Ist ja bald etwas mehr Zeit über die Feiertage:-)

Gruß, Sven

Newby0815 commented 2 years ago

Noch was: ich habe gelesen das OpenWeathermap in der Onecall API nur Koordination und keine City-ID akzeptiert weshalb ich die Koordinaten genutzt habe. Ich habe es nochmal wie Du geschrieben hast mit der City-ID probiert, jetzt sieht das etwas anders aus.

Das System läuft jetzt, stürzt aber bei der Auswahl des Wetter-Displays ab. Es kommt auf dem Display für einige Sekunden die Eieruhr, dann der Absturz mit diesem Output:

Display Screen : Wetter

Location : ,
Timeoffset : 0 Sek.

Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled. Core 1 register dump: PC : 0x400d2c9e PS : 0x00060e30 A0 : 0x800d5854 A1 : 0x3ffb1f10
A2 : 0x00000000 A3 : 0x3ffc1b50 A4 : 0x3ffc1b50 A5 : 0x3ffc1c18
A6 : 0x00007bef A7 : 0x3ffc184c A8 : 0x3ffc184c A9 : 0x3ffb1ec0
A10 : 0x00000015 A11 : 0x3ffb80c0 A12 : 0x3ffc1888 A13 : 0x3ffc1892
A14 : 0x00000050 A15 : 0x00000050 SAR : 0x00000010 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000

Backtrace: 0x400d2c9e:0x3ffb1f10 0x400d5851:0x3ffb1f60 0x400e56cc:0x3ffb1fb0 0x40089cba:0x3ffb1fd0

Rebooting...

Mal weiter testen...

Gruß, Sven

nischram commented 2 years ago

Hallo Sven,

ok das bei OneCall nur CityId geht, hatte ich noch nicht gelesen, aber klingt ja erstmal als sei es tatsächlich so wenn du jetzt schon mal weiter kommst.

Aber trotzdem sagt mir diese Information:

Display Screen : Wetter

Location : , Timeoffset : 0 Sek.

Das du wohl keine Verbindung zum Server aufbauen kannst. Eigentlich wird hier folgendes ausgegeben:

    // Location info is available for ALL modes (History/Current)
    printf("\nLocation   : % s, % s % s\n", OWOC.location.CITY, OWOC.location.STATE, OWOC.location.COUNTRY);
    printf("Timeoffset : %i Sek.\n\n", OWOC.location.timezoneOffset);

Also sollten da Namen usw. ausgegeben werden. Bei dir ist es leer. Auch deine Browser-Ausgabe ist irgendwie Leer, denn bei mir sieht es so aus:

{"coord":{"lon":13.4105,"lat":52.5244},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":275.38,"feels_like":270.04,"temp_min":274.34,"temp_max":275.92,"pressure":996,"humidity":77},"visibility":10000,"wind":{"speed":7.15,"deg":207,"gust":9.39},"clouds":{"all":0},"dt":1638556920,"sys":{"type":2,"id":2011538,"country":"DE","sunrise":1638514654,"sunset":1638543311},"timezone":3600,"id":2950159,"name":"Berlin","cod":200}

Mir kommt jetzt noch die Überlegung, ob es eventuell an deinem Key oder dem Account liegt. Ich habe meinen Account schon lange und auch beim Raspberry "E3dcGui" Projekt musste ich die Wetterabfrage umbauen weil es ein ähnliches Problem gab. E3dcGui/issues/47 Da ich aber die Standard Library benutze weiß ich jetzt noch nicht so ganz wo ich da ansetzen soll. Ich denke du solltest aber erstmal bei der Browser-Ausgabe ansetzen und schauen warum da keine Werte kommen.

Ich teste noch ein wenig bei mir, ob ich denn Fehler nachstellen kann, dann würden wir weiter kommen.

Viele Grüße Nico

nischram commented 2 years ago

Hallo Sven,

da ich hier nichts mehr gehört habe, gehe ich jetzt mal davon aus, dass du das Problem beheben konntest. Somit schließe ich diesen Issue. Sollten trotzdem noch Probleme auftreten, kannst du hier natürlich weiterhin schreiben.

Viele Grüße Nico