matthias-bs / ESP32-e-Paper-Weather-Display

An ESP32 / ePaper Display for OpenWeather Report/Forecast and Local/Remote Sensor Data
Other
5 stars 1 forks source link

Configuration Questions #5

Closed matthias-bs closed 7 months ago

matthias-bs commented 8 months ago

So, hab das mal gebaut - in einer Minimalversion zunächst.

Das Display flimmert und das ganze startet oft neu - ich vermute die Stromversorgung reicht nicht (hängt noch am USB vom Notebook).

Restart is triggered periodically (as defined by SleepDuration) to update the display with new data. If time and date is available (via WiFi and NTP), the update is done at fixed times. Restart is also triggered by the touch sensor inputs. If those are left open (i.e. unconnected), they can be triggered, too. Connect a pull-down resistor (10 kOhm) to each input (see below) to avoid this.

Updating the display causes flickering. The duration depends on the display. Some displays support partial update, which avoids this in certain cases. If no update procedure is performed, the display content will fade, there will be ghost images or there will be visual errors. See ZinggJM/GxEPD2 or the display manufacturer's website.

BTW: The three color display is much worse in terms of updating than the B/W display. Did you set the display type according to your actual display?

#define DISPLAY_3C
//#define DISPLAY_BW

Aber ein/zwei Fragen: Ich brauche eigentlich nur eine Page - sofern ich denn meinen einen via MQTT angebundenen Sensor mit auf der ersten Seite anzeigen könnte. Bin aber leider zu unerfahren dafür.

Please see owm_credentials.h:

// Personalization Options

// Screen definitions
#define ScreenOWM   0
#define ScreenLocal 1
#define ScreenMQTT  2
#define ScreenStart 3

#define TXT_START "Your Weather Station"
#define START_SCREEN ScreenStart
#define LAST_SCREEN  ScreenMQTT

// Locations / Screen Titles
#define LOCATIONS_TXT {"Forecast", "Local", "Remote", "Start"}

If you set LAST_SCREEN to ScreenLocal, it will switch from ScreenLocal to ScreenOWM and ScreenMQTT will not be displayed at all. This way you can reduce the number of visible screens.

To display a sensor value on ScreenOWM, you basically have to copy some function calls from DisplayMQTTWeather() to DisplayOWMWeather(), e.g. DisplayLocalTemperatureSection(358, 22, 137, 100, "", true, MqttSensors.air_temp_c, true, outdoorTMin, outdoorTMax); where (358, 22) is the coordinate of the section's top left corner. Of course you have to find a suitable screen position. You can display a bitmap i a similar manner.

Sollte das mit geringem Aufwand nicht machbar sein: Wo (welche Pins am ESP32 E-Paper Driver Board) kommt der oder kommen die Touch-Sensoren dran? Ich meine verstanden zu haben es seien derer drei?

The GPIO numbers are assigned in Waveshare_7_5_T7_Sensors.ino:

static const uint8_t TOUCH_NEXT = 32;  //!< Touch sensor right (next)
static const uint8_t TOUCH_PREV = 33;  //!< Touch sensor left  (previous)
static const uint8_t TOUCH_MID = 35;   //!< Touch sensor middle

The middle sensor is currently not really needed (it only triggers wake-up).

homuser2003 commented 8 months ago

Alright, English then ;-)

Thanks for your support! Added the three pulldown resistors.

However, the problem seems to lie elsewhere: It´s not really switching screens but it starts at "Your weather station" screen and the hourglass again and again. For a short period of time it does show other screens depending on the selection in owm_credentials.

Tried to deactivate all sensors I´ll not use (BLE etc.). But also that did not help...

Boardtype is ESP32 Dev module for the Waveshare E-Paper ESP32 Driver Board right?

Any ideas?

matthias-bs commented 8 months ago

Yes, English is preferred to reach a broader audience. ;-)

Yes, ESP32 Dev is correct.

Did you get any compiler warnings? Which display and display configuration are you using?

I made the last changes to support the 3C display, but I no longer had the BW display available for testing. I hope I did not break the BW setup.

homuser2003 commented 8 months ago

Indeed I have a 3C Display (with red). There is a "V3" Sticker on the back. No Compiler Warnings. I currently do not use any sensors except for the one DHT22 via MQTT. Thus really I need far less than what you have included.

I think I´ll test the unforked version just to see whether it makes any difference unless you have any more ideas. Unfortunately my personal experience level is fairly limited - I cannot exclude that I caused the issue by amending the credentials and details...

matthias-bs commented 8 months ago

I am using the same display. You could upload your code on Github, so I could have a look when time permits. Do you get a "clean" restart or an exception? Did you set the Partition Scheme as described in Readme - Setup, Step 7?

matthias-bs commented 8 months ago

Ah, I think I found a possible cause: In void DisplayGeneralInfoSection(void) it is assumed that you have at least three pages when drawing the menu! This will lead to an index out-of-bounds in Locations[ScreenNo + i] which might cause an exception.

I'll come back with a proposal to fix this.

For a quick fix, please replace the for loops as follows:

// for (int i = 0; i <= 2; i++) {
{
 int  i = 0;

and

// for (int i = 0; i >= -2; i--) {
{
  int i = 0;

Hope this helps!

homuser2003 commented 8 months ago

Just basically went back to the beginning and downloaded the Zip freshly here from github. Followed the instructions and basically just edited owm_credentials. Still the same behaviour.

Again, it´s the startscreen, then the hourglass and then the OWM screen. Much of flashing till then. Then OWM screen stays steady (and properly filled) for about 1 Minute, then gets black, starts flashing, comes back, then starts with startscreen allover... Stays in this loop till I cut power.

Happy to upload that but I should have the very same sensors and pages enabled that you do?!

Could it be that some of the expected but not connected hardware leads to the issue?

matthias-bs commented 8 months ago

Hmmm... Maybe that is the case, even if I tried to catch those conditions. Are there any hints in the serial console? Did you enable debug output?

matthias-bs commented 8 months ago

I just made a test with my breadboard setup: I disconnected all sensors from the I2C bus and shielded the BLE sensor. Then I switched to the MQTT screen. The software goes through all data reception / display update cycles without anything unexpected.

However, I did not take the time to recompile with all updated libraries.

matthias-bs commented 8 months ago

BTW: It would be possible to avoid most of the flickering by skipping displaying of the data update icons (BLE and MQTT) and just showing the final result. You could also indicate that data update is in progress with an LED.

homuser2003 commented 8 months ago

Hmmm... Maybe that is the case, even if I tried to catch those conditions. Are there any hints in the serial console? Did you enable debug output?

Could you elaborate this further please? Not sure how to do that...

homuser2003 commented 8 months ago

BTW: It would be possible to avoid most of the flickering by skipping displaying of the data update icons (BLE and MQTT) and just showing the final result. You could also indicate that data update is in progress with an LED.

That would be great - however, the flickering is my secondary concern. I mainly need to exit that "bootloop" One further question: I understand the pulldown-resistors are a 10kOhm connection between GND and the three pins used for the touch sensors. When I then touch any of the PINS with a 3.3 or 5V loaded wire, should that not trigger switching?

homuser2003 commented 8 months ago

Here comes my console printout - there is an exeption and also a reboot... Thanks for any further hint

23:19:42.786 -> [ 71833][D][common.h:67] DecodeWeather(): TLow: 5.060000
23:19:42.786 -> [ 71838][D][common.h:68] DecodeWeather(): THig: 5.060000
23:19:42.786 -> [ 71843][D][common.h:69] DecodeWeather(): Pres: 1013.000000
23:19:42.786 -> [ 71849][D][common.h:70] DecodeWeather(): Humi: 88.000000
23:19:42.786 -> [ 71854][D][common.h:71] DecodeWeather(): For0: Rain
23:19:42.786 -> [ 71858][D][common.h:72] DecodeWeather(): For1: 
23:19:42.831 -> [ 71863][D][common.h:73] DecodeWeather(): For2: 
23:19:42.831 -> [ 71867][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:42.831 -> [ 71872][D][common.h:75] DecodeWeather(): Desc: H⸮⸮?
23:19:42.831 -> [ 71876][D][common.h:76] DecodeWeather(): CCov: 100
23:19:42.831 -> [ 71881][D][common.h:77] DecodeWeather(): WSpd: 5.760000
23:19:42.831 -> [ 71886][D][common.h:78] DecodeWeather(): WDir: 233.000000
23:19:42.831 -> [ 71891][D][common.h:79] DecodeWeather(): Rain: 0.420000
23:19:42.831 -> [ 71896][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:42.831 -> [ 71901][D][common.h:81] DecodeWeather(): Pop:  0.520000
23:19:42.831 -> [ 71906][D][common.h:82] DecodeWeather(): Peri: x⸮⸮?
23:19:42.878 -> [ 71911][D][common.h:64] DecodeWeather(): Period-16--------------
23:19:42.878 -> [ 71917][D][common.h:65] DecodeWeather(): DTim: 1703116800
23:19:42.878 -> [ 71922][D][common.h:66] DecodeWeather(): Temp: 5.730000
23:19:42.878 -> [ 71927][D][common.h:67] DecodeWeather(): TLow: 5.730000
23:19:42.878 -> [ 71932][D][common.h:68] DecodeWeather(): THig: 5.730000
23:19:42.878 -> [ 71937][D][common.h:69] DecodeWeather(): Pres: 1010.000000
23:19:42.878 -> [ 71943][D][common.h:70] DecodeWeather(): Humi: 92.000000
23:19:42.878 -> [ 71948][D][common.h:71] DecodeWeather(): For0: Rain
23:19:42.878 -> [ 71952][D][common.h:72] DecodeWeather(): For1: 
23:19:42.925 -> [ 71957][D][common.h:73] DecodeWeather(): For2: 
23:19:42.925 -> [ 71961][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:42.925 -> [ 71966][D][common.h:75] DecodeWeather(): Desc: x⸮⸮?
23:19:42.925 -> [ 71970][D][common.h:76] DecodeWeather(): CCov: 100
23:19:42.925 -> [ 71975][D][common.h:77] DecodeWeather(): WSpd: 6.520000
23:19:42.925 -> [ 71980][D][common.h:78] DecodeWeather(): WDir: 240.000000
23:19:42.925 -> [ 71985][D][common.h:79] DecodeWeather(): Rain: 1.930000
23:19:42.925 -> [ 71990][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:42.925 -> [ 71995][D][common.h:81] DecodeWeather(): Pop:  0.900000
23:19:42.925 -> [ 72000][D][common.h:82] DecodeWeather(): Peri: ⸮⸮⸮?
23:19:42.973 -> [ 72005][D][common.h:64] DecodeWeather(): Period-17--------------
23:19:42.973 -> [ 72011][D][common.h:65] DecodeWeather(): DTim: 1703127600
23:19:42.973 -> [ 72016][D][common.h:66] DecodeWeather(): Temp: 6.730000
23:19:42.973 -> [ 72021][D][common.h:67] DecodeWeather(): TLow: 6.730000
23:19:42.973 -> [ 72026][D][common.h:68] DecodeWeather(): THig: 6.730000
23:19:42.973 -> [ 72031][D][common.h:69] DecodeWeather(): Pres: 1008.000000
23:19:42.973 -> [ 72037][D][common.h:70] DecodeWeather(): Humi: 97.000000
23:19:42.973 -> [ 72042][D][common.h:71] DecodeWeather(): For0: Rain
23:19:42.973 -> [ 72046][D][common.h:72] DecodeWeather(): For1: 
23:19:42.973 -> [ 72051][D][common.h:73] DecodeWeather(): For2: 
23:19:43.019 -> [ 72055][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.019 -> [ 72060][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?
23:19:43.019 -> [ 72064][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.019 -> [ 72069][D][common.h:77] DecodeWeather(): WSpd: 5.990000
23:19:43.019 -> [ 72074][D][common.h:78] DecodeWeather(): WDir: 251.000000
23:19:43.019 -> [ 72079][D][common.h:79] DecodeWeather(): Rain: 1.590000
23:19:43.019 -> [ 72084][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.019 -> [ 72089][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.019 -> [ 72094][D][common.h:82] DecodeWeather(): Peri: ؚ⸮?
23:19:43.064 -> [ 72099][D][common.h:64] DecodeWeather(): Period-18--------------
23:19:43.064 -> [ 72105][D][common.h:65] DecodeWeather(): DTim: 1703138400
23:19:43.064 -> [ 72110][D][common.h:66] DecodeWeather(): Temp: 7.120000
23:19:43.064 -> [ 72115][D][common.h:67] DecodeWeather(): TLow: 7.120000
23:19:43.064 -> [ 72120][D][common.h:68] DecodeWeather(): THig: 7.120000
23:19:43.064 -> [ 72125][D][common.h:69] DecodeWeather(): Pres: 1007.000000
23:19:43.064 -> [ 72131][D][common.h:70] DecodeWeather(): Humi: 97.000000
23:19:43.064 -> [ 72136][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.111 -> [ 72140][D][common.h:72] DecodeWeather(): For1: 
23:19:43.111 -> [ 72145][D][common.h:73] DecodeWeather(): For2: 
23:19:43.111 -> [ 72149][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.111 -> [ 72154][D][common.h:75] DecodeWeather(): Desc: ؚ⸮?
23:19:43.111 -> [ 72158][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.111 -> [ 72163][D][common.h:77] DecodeWeather(): WSpd: 5.220000
23:19:43.111 -> [ 72168][D][common.h:78] DecodeWeather(): WDir: 250.000000
23:19:43.111 -> [ 72173][D][common.h:79] DecodeWeather(): Rain: 0.870000
23:19:43.111 -> [ 72178][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.111 -> [ 72183][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.111 -> [ 72188][D][common.h:82] DecodeWeather(): Peri: ⸮⸮?
23:19:43.159 -> [ 72193][D][common.h:64] DecodeWeather(): Period-19--------------
23:19:43.159 -> [ 72199][D][common.h:65] DecodeWeather(): DTim: 1703149200
23:19:43.159 -> [ 72204][D][common.h:66] DecodeWeather(): Temp: 7.410000
23:19:43.159 -> [ 72209][D][common.h:67] DecodeWeather(): TLow: 7.410000
23:19:43.159 -> [ 72214][D][common.h:68] DecodeWeather(): THig: 7.410000
23:19:43.159 -> [ 72219][D][common.h:69] DecodeWeather(): Pres: 1005.000000
23:19:43.159 -> [ 72225][D][common.h:70] DecodeWeather(): Humi: 95.000000
23:19:43.159 -> [ 72230][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.204 -> [ 72234][D][common.h:72] DecodeWeather(): For1: 
23:19:43.204 -> [ 72239][D][common.h:73] DecodeWeather(): For2: 
23:19:43.204 -> [ 72243][D][common.h:74] DecodeWeather(): Icon: 10d
23:19:43.204 -> [ 72248][D][common.h:75] DecodeWeather(): Desc: ⸮⸮?
23:19:43.204 -> [ 72252][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.204 -> [ 72257][D][common.h:77] DecodeWeather(): WSpd: 6.770000
23:19:43.204 -> [ 72262][D][common.h:78] DecodeWeather(): WDir: 236.000000
23:19:43.204 -> [ 72267][D][common.h:79] DecodeWeather(): Rain: 0.410000
23:19:43.204 -> [ 72272][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.204 -> [ 72277][D][common.h:81] DecodeWeather(): Pop:  0.410000
23:19:43.251 -> [ 72282][D][common.h:82] DecodeWeather(): Peri: 8⸮⸮?
23:19:43.251 -> [ 72287][D][common.h:64] DecodeWeather(): Period-20--------------
23:19:43.251 -> [ 72293][D][common.h:65] DecodeWeather(): DTim: 1703160000
23:19:43.251 -> [ 72298][D][common.h:66] DecodeWeather(): Temp: 7.860000
23:19:43.251 -> [ 72303][D][common.h:67] DecodeWeather(): TLow: 7.860000
23:19:43.251 -> [ 72308][D][common.h:68] DecodeWeather(): THig: 7.860000
23:19:43.251 -> [ 72313][D][common.h:69] DecodeWeather(): Pres: 1001.000000
23:19:43.251 -> [ 72319][D][common.h:70] DecodeWeather(): Humi: 88.000000
23:19:43.251 -> [ 72324][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.251 -> [ 72328][D][common.h:72] DecodeWeather(): For1: 
23:19:43.297 -> [ 72333][D][common.h:73] DecodeWeather(): For2: 
23:19:43.297 -> [ 72337][D][common.h:74] DecodeWeather(): Icon: 10d
23:19:43.297 -> [ 72342][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?
23:19:43.297 -> [ 72346][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.297 -> [ 72351][D][common.h:77] DecodeWeather(): WSpd: 8.070000
23:19:43.297 -> [ 72356][D][common.h:78] DecodeWeather(): WDir: 242.000000
23:19:43.297 -> [ 72361][D][common.h:79] DecodeWeather(): Rain: 0.680000
23:19:43.297 -> [ 72366][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.297 -> [ 72371][D][common.h:81] DecodeWeather(): Pop:  0.760000
23:19:43.344 -> [ 72376][D][common.h:82] DecodeWeather(): Peri: ⸮⸮⸮?
23:19:43.344 -> [ 72381][D][common.h:64] DecodeWeather(): Period-21--------------
23:19:43.344 -> [ 72387][D][common.h:65] DecodeWeather(): DTim: 1703170800
23:19:43.344 -> [ 72392][D][common.h:66] DecodeWeather(): Temp: 8.510000
23:19:43.344 -> [ 72397][D][common.h:67] DecodeWeather(): TLow: 8.510000
23:19:43.344 -> [ 72402][D][common.h:68] DecodeWeather(): THig: 8.510000
23:19:43.344 -> [ 72407][D][common.h:69] DecodeWeather(): Pres: 999.000000
23:19:43.344 -> [ 72413][D][common.h:70] DecodeWeather(): Humi: 93.000000
23:19:43.344 -> [ 72418][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.344 -> [ 72422][D][common.h:72] DecodeWeather(): For1: 
23:19:43.391 -> [ 72427][D][common.h:73] DecodeWeather(): For2: 
23:19:43.391 -> [ 72431][D][common.h:74] DecodeWeather(): Icon: 10d
23:19:43.391 -> [ 72436][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?
23:19:43.391 -> [ 72440][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.391 -> [ 72445][D][common.h:77] DecodeWeather(): WSpd: 8.230000
23:19:43.391 -> [ 72450][D][common.h:78] DecodeWeather(): WDir: 264.000000
23:19:43.391 -> [ 72455][D][common.h:79] DecodeWeather(): Rain: 3.900000
23:19:43.391 -> [ 72460][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.391 -> [ 72465][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.438 -> [ 72470][D][common.h:82] DecodeWeather(): Peri: ⸮⸮⸮?
23:19:43.438 -> [ 72475][D][common.h:64] DecodeWeather(): Period-22--------------
23:19:43.438 -> [ 72481][D][common.h:65] DecodeWeather(): DTim: 1703181600
23:19:43.438 -> [ 72486][D][common.h:66] DecodeWeather(): Temp: 9.150000
23:19:43.438 -> [ 72491][D][common.h:67] DecodeWeather(): TLow: 9.150000
23:19:43.438 -> [ 72496][D][common.h:68] DecodeWeather(): THig: 9.150000
23:19:43.438 -> [ 72501][D][common.h:69] DecodeWeather(): Pres: 998.000000
23:19:43.438 -> [ 72506][D][common.h:70] DecodeWeather(): Humi: 82.000000
23:19:43.438 -> [ 72512][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.438 -> [ 72516][D][common.h:72] DecodeWeather(): For1: 
23:19:43.484 -> [ 72521][D][common.h:73] DecodeWeather(): For2: 
23:19:43.484 -> [ 72525][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.484 -> [ 72530][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?
23:19:43.484 -> [ 72534][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.484 -> [ 72539][D][common.h:77] DecodeWeather(): WSpd: 8.820000
23:19:43.484 -> [ 72544][D][common.h:78] DecodeWeather(): WDir: 265.000000
23:19:43.484 -> [ 72549][D][common.h:79] DecodeWeather(): Rain: 0.750000
23:19:43.484 -> [ 72554][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.484 -> [ 72559][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.531 -> [ 72564][D][common.h:82] DecodeWeather(): Peri: ⸮⸮?
23:19:43.531 -> [ 72569][D][common.h:64] DecodeWeather(): Period-23--------------
23:19:43.531 -> [ 72575][D][common.h:65] DecodeWeather(): DTim: 1703192400
23:19:43.531 -> [ 72580][D][common.h:66] DecodeWeather(): Temp: 8.640000
23:19:43.531 -> [ 72585][D][common.h:67] DecodeWeather(): TLow: 8.640000
23:19:43.531 -> [ 72590][D][common.h:68] DecodeWeather(): THig: 8.640000
23:19:43.531 -> [ 72595][D][common.h:69] DecodeWeather(): Pres: 998.000000
23:19:43.531 -> [ 72600][D][common.h:70] DecodeWeather(): Humi: 75.000000
23:19:43.531 -> [ 72605][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.578 -> [ 72610][D][common.h:72] DecodeWeather(): For1: 
23:19:43.578 -> [ 72615][D][common.h:73] DecodeWeather(): For2: 
23:19:43.578 -> [ 72619][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.578 -> [ 72623][D][common.h:75] DecodeWeather(): Desc: ⸮⸮?
23:19:43.578 -> [ 72628][D][common.h:76] DecodeWeather(): CCov: 99
23:19:43.578 -> [ 72633][D][common.h:77] DecodeWeather(): WSpd: 10.170000
23:19:43.578 -> [ 72638][D][common.h:78] DecodeWeather(): WDir: 290.000000
23:19:43.578 -> [ 72643][D][common.h:79] DecodeWeather(): Rain: 2.150000
23:19:43.578 -> [ 72648][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.578 -> [ 72653][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.625 -> [ 72658][D][common.h:82] DecodeWeather(): Peri: ⸮⸮?
23:19:43.625 -> [ 72665][D][HTTPClient.cpp:408] disconnect(): tcp is closed
23:19:43.625 -> 
23:19:43.625 -> [ 72683][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.670 -> [ 72741][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.670 -> [ 72747][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.670 -> [ 72753][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.717 -> [ 72759][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:43.717 -> [ 72765][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:43.717 -> [ 72773][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:43.717 -> [ 72782][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:43.717 -> [ 72789][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:43.717 -> [ 72798][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:19:43.763 -> [ 72806][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:19:43.763 -> [ 72814][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:19:43.763 -> [ 72824][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:19:43.763 -> _PowerOn : 7
23:19:43.951 -> [ 73027][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.997 -> [ 73074][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.997 -> [ 73081][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:44.043 -> [ 73087][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:44.043 -> [ 73094][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:44.043 -> [ 73098][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:44.043 -> [ 73106][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:44.043 -> [ 73114][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:44.043 -> [ 73122][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:44.089 -> [ 73131][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:19:44.089 -> [ 73141][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:19:44.089 -> [ 73147][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:19:44.089 -> [ 73157][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:20:04.258 -> Busy Timeout!
23:20:04.258 -> _Update_Full : 20001092
23:20:10.314 -> _PowerOff : 6021000
23:20:10.314 -> [ 99367][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=21 scl=22 freq=100000
23:20:10.826 -> [ 99867][E][Waveshare_7_5_T7_Sensors.ino:1396] GetLocalData(): Error trying to execute stopPeriodicMeasurement(): Received NACK on transmit of address
23:20:15.817 -> [104869][E][Waveshare_7_5_T7_Sensors.ino:1403] GetLocalData(): Error trying to execute measureSingleShot(): Received NACK on transmit of address
23:20:15.817 -> [104871][D][Waveshare_7_5_T7_Sensors.ino:1406] GetLocalData(): First measurement takes ~5 sec...
23:20:16.001 -> I NimBLEDevice: BLE Host Task Started
23:20:16.001 -> I NimBLEDevice: NimBle host synced.
23:20:16.001 -> D NimBLEScan: >> start: duration=31
23:20:16.001 -> D NimBLEScan: << start()
23:20:16.139 -> I NimBLEScan: New advertiser: 7c:64:56:89:fe:39
23:20:16.139 -> I NimBLEScan: Updated advertiser: 7c:64:56:89:fe:39
23:20:16.186 -> D NimBLEScan: erase device: 7c:64:56:89:fe:39
23:20:16.325 -> I NimBLEScan: New advertiser: 04:b9:e3:14:ee:77
23:20:16.418 -> D NimBLEScan: erase device: 04:b9:e3:14:ee:77
23:20:16.418 -> I NimBLEScan: New advertiser: 0f:df:02:10:e4:ed
23:20:16.463 -> D NimBLEScan: erase device: 0f:df:02:10:e4:ed
23:20:17.155 -> I NimBLEScan: New advertiser: 7c:64:56:89:fe:39
23:20:17.203 -> I NimBLEScan: New advertiser: 77:56:06:ac:cb:5f
23:20:17.203 -> I NimBLEScan: Updated advertiser: 77:56:06:ac:cb:5f
23:20:17.249 -> D NimBLEScan: erase device: 77:56:06:ac:cb:5f
23:20:17.295 -> I NimBLEScan: New advertiser: 98:d6:bb:2a:e5:f0
23:20:17.483 -> I NimBLEScan: Updated advertiser: 98:d6:bb:2a:e5:f0
23:20:17.530 -> D NimBLEScan: erase device: 98:d6:bb:2a:e5:f0
23:20:18.836 -> I NimBLEScan: New advertiser: 23:d8:ad:9f:38:44
23:20:18.883 -> D NimBLEScan: erase device: 23:d8:ad:9f:38:44
23:20:47.025 -> D NimBLEScan: discovery complete; reason=0
23:20:47.071 -> [136131][D][Waveshare_7_5_T7_Sensors.ino:1455] GetLocalData(): Outdoor Air Temp.:    --.- °C
23:20:47.071 -> [136131][D][Waveshare_7_5_T7_Sensors.ino:1456] GetLocalData(): Outdoor Humidity:     --   %
23:20:47.071 -> [136136][D][Waveshare_7_5_T7_Sensors.ino:1457] GetLocalData(): Outdoor Sensor Batt:  --   %
23:20:48.097 -> [137146][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
23:20:48.097 -> [137146][D][Waveshare_7_5_T7_Sensors.ino:1483] GetLocalData(): Indoor Temperature: --.- °C
23:20:48.097 -> [137149][D][Waveshare_7_5_T7_Sensors.ino:1484] GetLocalData(): Indoor Pressure:    --   hPa
23:20:48.097 -> [137157][D][Waveshare_7_5_T7_Sensors.ino:1485] GetLocalData(): Indoor Humidity:    --  %rH
23:20:48.097 -> [137165][E][Waveshare_7_5_T7_Sensors.ino:1504] GetLocalData(): Error trying to execute getDataReadyFlag(): Received NACK on transmit of address
23:20:48.143 -> [137178][D][Waveshare_7_5_T7_Sensors.ino:889] MqttConnect(): Checking wifi...
23:20:48.143 -> [137184][I][Waveshare_7_5_T7_Sensors.ino:894] MqttConnect(): MQTT connecting...
23:20:48.143 -> [137214][I][Waveshare_7_5_T7_Sensors.ino:908] MqttConnect(): Connected!
23:20:48.190 -> [137233][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137290][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137296][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137302][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137308][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.237 -> [137314][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.283 -> [137323][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.283 -> [137330][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.283 -> [137340][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.283 -> [137347][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:20:48.283 -> [137355][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:20:48.283 -> [137363][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:20:48.330 -> [137373][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:20:48.330 -> _PowerOn : 7
23:20:48.515 -> [137578][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137623][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137630][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137637][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137643][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.609 -> [137650][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.609 -> [137655][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.609 -> [137663][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.609 -> [137671][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.609 -> [137681][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:20:48.657 -> [137689][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:20:48.657 -> [137697][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:20:48.657 -> [137706][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:21:08.824 -> Busy Timeout!
23:21:08.824 -> _Update_Full : 20001093
23:21:14.846 -> _PowerOff : 6019000
23:21:14.846 -> [163917][I][Waveshare_7_5_T7_Sensors.ino:1078] GetMqttData(): Waiting for MQTT message...
23:21:14.846 -> [163917][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163922][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163929][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163945][I][Waveshare_7_5_T7_Sensors.ino:1117] GetMqttData(): done!
23:21:14.891 -> [163952][D][Waveshare_7_5_T7_Sensors.ino:1119] GetMqttData():    1.5
23:21:14.891 -> [163953][D][Waveshare_7_5_T7_Sensors.ino:1121] GetMqttData(): Creating JSON object...
23:21:14.891 -> [163955][D][Waveshare_7_5_T7_Sensors.ino:1135] GetMqttData(): Done!
23:21:14.891 -> Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
23:21:14.937 -> 
23:21:14.937 -> Core  0 register dump:
23:21:14.937 -> PC      : 0x40094261  PS      : 0x00060b30  A0      : 0x800dca95  A1      : 0x3ffdcd00  
23:21:14.937 -> A2      : 0x500011c1  A3      : 0x00000000  A4      : 0x0000001e  A5      : 0x0000ff00  
23:21:14.937 -> A6      : 0x00ff0000  A7      : 0xff000000  A8      : 0x00000000  A9      : 0x0000000c  
23:21:14.937 -> A10     : 0x500011c1  A11     : 0x000000ff  A12     : 0x0000003f  A13     : 0x00000046  
23:21:14.937 -> A14     : 0x3f401038  A15     : 0xff000000  SAR     : 0x00000013  EXCCAUSE: 0x0000001c  
23:21:14.937 -> EXCVADDR: 0x00000000  LBEG    : 0x40094261  LEND    : 0x40094272  LCOUNT  : 0xffffffff  
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> Backtrace: 0x4009425e:0x3ffdcd00 0x400dca92:0x3ffdcd10 0x400dead1:0x3ffdce00 0x40103a26:0x3ffdcf40
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> ELF file SHA256: bca5e83ac2c1286d
23:21:14.984 -> 
23:21:15.170 -> Rebooting...
23:21:15.170 -> ets Jun  8 2016 00:22:57
23:21:15.170 -> 
23:21:15.170 -> rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
23:21:15.170 -> configsip: 0, SPIWP:0xee
23:21:15.170 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
23:21:15.170 -> mode:DIO, clock div:1
23:21:15.170 -> load:0x3fff0030,len:1344
23:21:15.170 -> load:0x40078000,len:13964
23:21:15.170 -> load:0x40080400,len:3600
23:21:15.170 -> entry 0x400805f0
23:21:15.637 -> [    28][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
23:21:15.684 -> [    49][I]_PowerOn : 125996
23:21:36.517 -> Busy Timeout!
23:21:36.517 -> _Update_Full : 20001077
23:21:42.575 -> _PowerOff : 6021000
23:21:52.556 -> _PowerOn : 2
matthias-bs commented 8 months ago

Now we are getting close!

This is the interesting part:

23:21:14.846 -> [163917][I][Waveshare_7_5_T7_Sensors.ino:1078] GetMqttData(): Waiting for MQTT message...
23:21:14.846 -> [163917][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163922][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163929][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163945][I][Waveshare_7_5_T7_Sensors.ino:1117] GetMqttData(): done!
23:21:14.891 -> [163952][D][Waveshare_7_5_T7_Sensors.ino:1119] GetMqttData():    1.5
23:21:14.891 -> [163953][D][Waveshare_7_5_T7_Sensors.ino:1121] GetMqttData(): Creating JSON object...
23:21:14.891 -> [163955][D][Waveshare_7_5_T7_Sensors.ino:1135] GetMqttData(): Done!
23:21:14.891 -> Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.

The line numbers are a little bit off as compared to the version on GitHub, but that's o.k. You receive an MQTT payload with a size of 6 bytes. The contents are shown as " 1.5", that's probably the temperature with leading spaces for sign and alignment.

Now we are trying to de-serialize the JSON string with

DeserializationError error = deserializeJson(doc, MqttBuf, MQTT_PAYLOAD_SIZE);

which seems to be successful, because we get to "Done!".

But your payload is not in JSON format in general and not in the specific format expected by the software! Thus, decoding the data in

const char *received_at = doc["received_at"];
strncpy(MqttSensors.received_at, received_at, 30);
JsonObject uplink_message = doc["uplink_message"];
...

will fail and lead to the exception!

I have implemented the decoding according to the JSON format sent by The Things Network (with my payload decoder configuration) - see SIMULATE_MQTT at the top of the sketch.

You have two options: 1) You modify your MQTT node to sent a valid JSON string (e.g. {"air_temp_c":"1.5"}) and modify the decoding accordingly (the ArduinoJson documentation makes this really easy). 2) You replace the JSON decoding by a simple conversion of MqttBuf from string to float.

matthias-bs commented 8 months ago

My takeaway is that the decoding could be a little bit more robust regarding unexpected input... ;-) And to insist on log files... ;-)

homuser2003 commented 8 months ago

Here comes my console printout - there is an exeption and also a reboot... Thanks for any further hint

23:19:42.786 -> [ 71833][D][common.h:67] DecodeWeather(): TLow: 5.060000
23:19:42.786 -> [ 71838][D][common.h:68] DecodeWeather(): THig: 5.060000
23:19:42.786 -> [ 71843][D][common.h:69] DecodeWeather(): Pres: 1013.000000
23:19:42.786 -> [ 71849][D][common.h:70] DecodeWeather(): Humi: 88.000000
23:19:42.786 -> [ 71854][D][common.h:71] DecodeWeather(): For0: Rain
23:19:42.786 -> [ 71858][D][common.h:72] DecodeWeather(): For1: 
23:19:42.831 -> [ 71863][D][common.h:73] DecodeWeather(): For2: 
23:19:42.831 -> [ 71867][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:42.831 -> [ 71872][D][common.h:75] DecodeWeather(): Desc: H⸮⸮?�
23:19:42.831 -> [ 71876][D][common.h:76] DecodeWeather(): CCov: 100
23:19:42.831 -> [ 71881][D][common.h:77] DecodeWeather(): WSpd: 5.760000
23:19:42.831 -> [ 71886][D][common.h:78] DecodeWeather(): WDir: 233.000000
23:19:42.831 -> [ 71891][D][common.h:79] DecodeWeather(): Rain: 0.420000
23:19:42.831 -> [ 71896][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:42.831 -> [ 71901][D][common.h:81] DecodeWeather(): Pop:  0.520000
23:19:42.831 -> [ 71906][D][common.h:82] DecodeWeather(): Peri: x⸮⸮?�
23:19:42.878 -> [ 71911][D][common.h:64] DecodeWeather(): Period-16--------------
23:19:42.878 -> [ 71917][D][common.h:65] DecodeWeather(): DTim: 1703116800
23:19:42.878 -> [ 71922][D][common.h:66] DecodeWeather(): Temp: 5.730000
23:19:42.878 -> [ 71927][D][common.h:67] DecodeWeather(): TLow: 5.730000
23:19:42.878 -> [ 71932][D][common.h:68] DecodeWeather(): THig: 5.730000
23:19:42.878 -> [ 71937][D][common.h:69] DecodeWeather(): Pres: 1010.000000
23:19:42.878 -> [ 71943][D][common.h:70] DecodeWeather(): Humi: 92.000000
23:19:42.878 -> [ 71948][D][common.h:71] DecodeWeather(): For0: Rain
23:19:42.878 -> [ 71952][D][common.h:72] DecodeWeather(): For1: 
23:19:42.925 -> [ 71957][D][common.h:73] DecodeWeather(): For2: 
23:19:42.925 -> [ 71961][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:42.925 -> [ 71966][D][common.h:75] DecodeWeather(): Desc: x⸮⸮?�
23:19:42.925 -> [ 71970][D][common.h:76] DecodeWeather(): CCov: 100
23:19:42.925 -> [ 71975][D][common.h:77] DecodeWeather(): WSpd: 6.520000
23:19:42.925 -> [ 71980][D][common.h:78] DecodeWeather(): WDir: 240.000000
23:19:42.925 -> [ 71985][D][common.h:79] DecodeWeather(): Rain: 1.930000
23:19:42.925 -> [ 71990][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:42.925 -> [ 71995][D][common.h:81] DecodeWeather(): Pop:  0.900000
23:19:42.925 -> [ 72000][D][common.h:82] DecodeWeather(): Peri: ⸮⸮⸮?�
23:19:42.973 -> [ 72005][D][common.h:64] DecodeWeather(): Period-17--------------
23:19:42.973 -> [ 72011][D][common.h:65] DecodeWeather(): DTim: 1703127600
23:19:42.973 -> [ 72016][D][common.h:66] DecodeWeather(): Temp: 6.730000
23:19:42.973 -> [ 72021][D][common.h:67] DecodeWeather(): TLow: 6.730000
23:19:42.973 -> [ 72026][D][common.h:68] DecodeWeather(): THig: 6.730000
23:19:42.973 -> [ 72031][D][common.h:69] DecodeWeather(): Pres: 1008.000000
23:19:42.973 -> [ 72037][D][common.h:70] DecodeWeather(): Humi: 97.000000
23:19:42.973 -> [ 72042][D][common.h:71] DecodeWeather(): For0: Rain
23:19:42.973 -> [ 72046][D][common.h:72] DecodeWeather(): For1: 
23:19:42.973 -> [ 72051][D][common.h:73] DecodeWeather(): For2: 
23:19:43.019 -> [ 72055][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.019 -> [ 72060][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?�
23:19:43.019 -> [ 72064][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.019 -> [ 72069][D][common.h:77] DecodeWeather(): WSpd: 5.990000
23:19:43.019 -> [ 72074][D][common.h:78] DecodeWeather(): WDir: 251.000000
23:19:43.019 -> [ 72079][D][common.h:79] DecodeWeather(): Rain: 1.590000
23:19:43.019 -> [ 72084][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.019 -> [ 72089][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.019 -> [ 72094][D][common.h:82] DecodeWeather(): Peri: ؚ⸮?�
23:19:43.064 -> [ 72099][D][common.h:64] DecodeWeather(): Period-18--------------
23:19:43.064 -> [ 72105][D][common.h:65] DecodeWeather(): DTim: 1703138400
23:19:43.064 -> [ 72110][D][common.h:66] DecodeWeather(): Temp: 7.120000
23:19:43.064 -> [ 72115][D][common.h:67] DecodeWeather(): TLow: 7.120000
23:19:43.064 -> [ 72120][D][common.h:68] DecodeWeather(): THig: 7.120000
23:19:43.064 -> [ 72125][D][common.h:69] DecodeWeather(): Pres: 1007.000000
23:19:43.064 -> [ 72131][D][common.h:70] DecodeWeather(): Humi: 97.000000
23:19:43.064 -> [ 72136][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.111 -> [ 72140][D][common.h:72] DecodeWeather(): For1: 
23:19:43.111 -> [ 72145][D][common.h:73] DecodeWeather(): For2: 
23:19:43.111 -> [ 72149][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.111 -> [ 72154][D][common.h:75] DecodeWeather(): Desc: ؚ⸮?�
23:19:43.111 -> [ 72158][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.111 -> [ 72163][D][common.h:77] DecodeWeather(): WSpd: 5.220000
23:19:43.111 -> [ 72168][D][common.h:78] DecodeWeather(): WDir: 250.000000
23:19:43.111 -> [ 72173][D][common.h:79] DecodeWeather(): Rain: 0.870000
23:19:43.111 -> [ 72178][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.111 -> [ 72183][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.111 -> [ 72188][D][common.h:82] DecodeWeather(): Peri: �⸮⸮?�
23:19:43.159 -> [ 72193][D][common.h:64] DecodeWeather(): Period-19--------------
23:19:43.159 -> [ 72199][D][common.h:65] DecodeWeather(): DTim: 1703149200
23:19:43.159 -> [ 72204][D][common.h:66] DecodeWeather(): Temp: 7.410000
23:19:43.159 -> [ 72209][D][common.h:67] DecodeWeather(): TLow: 7.410000
23:19:43.159 -> [ 72214][D][common.h:68] DecodeWeather(): THig: 7.410000
23:19:43.159 -> [ 72219][D][common.h:69] DecodeWeather(): Pres: 1005.000000
23:19:43.159 -> [ 72225][D][common.h:70] DecodeWeather(): Humi: 95.000000
23:19:43.159 -> [ 72230][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.204 -> [ 72234][D][common.h:72] DecodeWeather(): For1: 
23:19:43.204 -> [ 72239][D][common.h:73] DecodeWeather(): For2: 
23:19:43.204 -> [ 72243][D][common.h:74] DecodeWeather(): Icon: 10d
23:19:43.204 -> [ 72248][D][common.h:75] DecodeWeather(): Desc: �⸮⸮?�
23:19:43.204 -> [ 72252][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.204 -> [ 72257][D][common.h:77] DecodeWeather(): WSpd: 6.770000
23:19:43.204 -> [ 72262][D][common.h:78] DecodeWeather(): WDir: 236.000000
23:19:43.204 -> [ 72267][D][common.h:79] DecodeWeather(): Rain: 0.410000
23:19:43.204 -> [ 72272][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.204 -> [ 72277][D][common.h:81] DecodeWeather(): Pop:  0.410000
23:19:43.251 -> [ 72282][D][common.h:82] DecodeWeather(): Peri: 8⸮⸮?�
23:19:43.251 -> [ 72287][D][common.h:64] DecodeWeather(): Period-20--------------
23:19:43.251 -> [ 72293][D][common.h:65] DecodeWeather(): DTim: 1703160000
23:19:43.251 -> [ 72298][D][common.h:66] DecodeWeather(): Temp: 7.860000
23:19:43.251 -> [ 72303][D][common.h:67] DecodeWeather(): TLow: 7.860000
23:19:43.251 -> [ 72308][D][common.h:68] DecodeWeather(): THig: 7.860000
23:19:43.251 -> [ 72313][D][common.h:69] DecodeWeather(): Pres: 1001.000000
23:19:43.251 -> [ 72319][D][common.h:70] DecodeWeather(): Humi: 88.000000
23:19:43.251 -> [ 72324][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.251 -> [ 72328][D][common.h:72] DecodeWeather(): For1: 
23:19:43.297 -> [ 72333][D][common.h:73] DecodeWeather(): For2: 
23:19:43.297 -> [ 72337][D][common.h:74] DecodeWeather(): Icon: 10d
23:19:43.297 -> [ 72342][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?�
23:19:43.297 -> [ 72346][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.297 -> [ 72351][D][common.h:77] DecodeWeather(): WSpd: 8.070000
23:19:43.297 -> [ 72356][D][common.h:78] DecodeWeather(): WDir: 242.000000
23:19:43.297 -> [ 72361][D][common.h:79] DecodeWeather(): Rain: 0.680000
23:19:43.297 -> [ 72366][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.297 -> [ 72371][D][common.h:81] DecodeWeather(): Pop:  0.760000
23:19:43.344 -> [ 72376][D][common.h:82] DecodeWeather(): Peri: ⸮⸮⸮?�
23:19:43.344 -> [ 72381][D][common.h:64] DecodeWeather(): Period-21--------------
23:19:43.344 -> [ 72387][D][common.h:65] DecodeWeather(): DTim: 1703170800
23:19:43.344 -> [ 72392][D][common.h:66] DecodeWeather(): Temp: 8.510000
23:19:43.344 -> [ 72397][D][common.h:67] DecodeWeather(): TLow: 8.510000
23:19:43.344 -> [ 72402][D][common.h:68] DecodeWeather(): THig: 8.510000
23:19:43.344 -> [ 72407][D][common.h:69] DecodeWeather(): Pres: 999.000000
23:19:43.344 -> [ 72413][D][common.h:70] DecodeWeather(): Humi: 93.000000
23:19:43.344 -> [ 72418][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.344 -> [ 72422][D][common.h:72] DecodeWeather(): For1: 
23:19:43.391 -> [ 72427][D][common.h:73] DecodeWeather(): For2: 
23:19:43.391 -> [ 72431][D][common.h:74] DecodeWeather(): Icon: 10d
23:19:43.391 -> [ 72436][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?�
23:19:43.391 -> [ 72440][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.391 -> [ 72445][D][common.h:77] DecodeWeather(): WSpd: 8.230000
23:19:43.391 -> [ 72450][D][common.h:78] DecodeWeather(): WDir: 264.000000
23:19:43.391 -> [ 72455][D][common.h:79] DecodeWeather(): Rain: 3.900000
23:19:43.391 -> [ 72460][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.391 -> [ 72465][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.438 -> [ 72470][D][common.h:82] DecodeWeather(): Peri: ⸮⸮⸮?�
23:19:43.438 -> [ 72475][D][common.h:64] DecodeWeather(): Period-22--------------
23:19:43.438 -> [ 72481][D][common.h:65] DecodeWeather(): DTim: 1703181600
23:19:43.438 -> [ 72486][D][common.h:66] DecodeWeather(): Temp: 9.150000
23:19:43.438 -> [ 72491][D][common.h:67] DecodeWeather(): TLow: 9.150000
23:19:43.438 -> [ 72496][D][common.h:68] DecodeWeather(): THig: 9.150000
23:19:43.438 -> [ 72501][D][common.h:69] DecodeWeather(): Pres: 998.000000
23:19:43.438 -> [ 72506][D][common.h:70] DecodeWeather(): Humi: 82.000000
23:19:43.438 -> [ 72512][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.438 -> [ 72516][D][common.h:72] DecodeWeather(): For1: 
23:19:43.484 -> [ 72521][D][common.h:73] DecodeWeather(): For2: 
23:19:43.484 -> [ 72525][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.484 -> [ 72530][D][common.h:75] DecodeWeather(): Desc: ⸮⸮⸮?�
23:19:43.484 -> [ 72534][D][common.h:76] DecodeWeather(): CCov: 100
23:19:43.484 -> [ 72539][D][common.h:77] DecodeWeather(): WSpd: 8.820000
23:19:43.484 -> [ 72544][D][common.h:78] DecodeWeather(): WDir: 265.000000
23:19:43.484 -> [ 72549][D][common.h:79] DecodeWeather(): Rain: 0.750000
23:19:43.484 -> [ 72554][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.484 -> [ 72559][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.531 -> [ 72564][D][common.h:82] DecodeWeather(): Peri: ⸮⸮?�
23:19:43.531 -> [ 72569][D][common.h:64] DecodeWeather(): Period-23--------------
23:19:43.531 -> [ 72575][D][common.h:65] DecodeWeather(): DTim: 1703192400
23:19:43.531 -> [ 72580][D][common.h:66] DecodeWeather(): Temp: 8.640000
23:19:43.531 -> [ 72585][D][common.h:67] DecodeWeather(): TLow: 8.640000
23:19:43.531 -> [ 72590][D][common.h:68] DecodeWeather(): THig: 8.640000
23:19:43.531 -> [ 72595][D][common.h:69] DecodeWeather(): Pres: 998.000000
23:19:43.531 -> [ 72600][D][common.h:70] DecodeWeather(): Humi: 75.000000
23:19:43.531 -> [ 72605][D][common.h:71] DecodeWeather(): For0: Rain
23:19:43.578 -> [ 72610][D][common.h:72] DecodeWeather(): For1: 
23:19:43.578 -> [ 72615][D][common.h:73] DecodeWeather(): For2: 
23:19:43.578 -> [ 72619][D][common.h:74] DecodeWeather(): Icon: 10n
23:19:43.578 -> [ 72623][D][common.h:75] DecodeWeather(): Desc: ⸮⸮?�
23:19:43.578 -> [ 72628][D][common.h:76] DecodeWeather(): CCov: 99
23:19:43.578 -> [ 72633][D][common.h:77] DecodeWeather(): WSpd: 10.170000
23:19:43.578 -> [ 72638][D][common.h:78] DecodeWeather(): WDir: 290.000000
23:19:43.578 -> [ 72643][D][common.h:79] DecodeWeather(): Rain: 2.150000
23:19:43.578 -> [ 72648][D][common.h:80] DecodeWeather(): Snow: 0.000000
23:19:43.578 -> [ 72653][D][common.h:81] DecodeWeather(): Pop:  1.000000
23:19:43.625 -> [ 72658][D][common.h:82] DecodeWeather(): Peri: �⸮⸮?�
23:19:43.625 -> [ 72665][D][HTTPClient.cpp:408] disconnect(): tcp is closed
23:19:43.625 -> 
23:19:43.625 -> [ 72683][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.670 -> [ 72741][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.670 -> [ 72747][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.670 -> [ 72753][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.717 -> [ 72759][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:43.717 -> [ 72765][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:43.717 -> [ 72773][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:43.717 -> [ 72782][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:43.717 -> [ 72789][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:43.717 -> [ 72798][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:19:43.763 -> [ 72806][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:19:43.763 -> [ 72814][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:19:43.763 -> [ 72824][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:19:43.763 -> _PowerOn : 7
23:19:43.951 -> [ 73027][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.997 -> [ 73074][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:43.997 -> [ 73081][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:44.043 -> [ 73087][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:19:44.043 -> [ 73094][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:44.043 -> [ 73098][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:44.043 -> [ 73106][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:19:44.043 -> [ 73114][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:44.043 -> [ 73122][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:19:44.089 -> [ 73131][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:19:44.089 -> [ 73141][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:19:44.089 -> [ 73147][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:19:44.089 -> [ 73157][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:20:04.258 -> Busy Timeout!
23:20:04.258 -> _Update_Full : 20001092
23:20:10.314 -> _PowerOff : 6021000
23:20:10.314 -> [ 99367][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=21 scl=22 freq=100000
23:20:10.826 -> [ 99867][E][Waveshare_7_5_T7_Sensors.ino:1396] GetLocalData(): Error trying to execute stopPeriodicMeasurement(): Received NACK on transmit of address
23:20:15.817 -> [104869][E][Waveshare_7_5_T7_Sensors.ino:1403] GetLocalData(): Error trying to execute measureSingleShot(): Received NACK on transmit of address
23:20:15.817 -> [104871][D][Waveshare_7_5_T7_Sensors.ino:1406] GetLocalData(): First measurement takes ~5 sec...
23:20:16.001 -> I NimBLEDevice: BLE Host Task Started
23:20:16.001 -> I NimBLEDevice: NimBle host synced.
23:20:16.001 -> D NimBLEScan: >> start: duration=31
23:20:16.001 -> D NimBLEScan: << start()
23:20:16.139 -> I NimBLEScan: New advertiser: 7c:64:56:89:fe:39
23:20:16.139 -> I NimBLEScan: Updated advertiser: 7c:64:56:89:fe:39
23:20:16.186 -> D NimBLEScan: erase device: 7c:64:56:89:fe:39
23:20:16.325 -> I NimBLEScan: New advertiser: 04:b9:e3:14:ee:77
23:20:16.418 -> D NimBLEScan: erase device: 04:b9:e3:14:ee:77
23:20:16.418 -> I NimBLEScan: New advertiser: 0f:df:02:10:e4:ed
23:20:16.463 -> D NimBLEScan: erase device: 0f:df:02:10:e4:ed
23:20:17.155 -> I NimBLEScan: New advertiser: 7c:64:56:89:fe:39
23:20:17.203 -> I NimBLEScan: New advertiser: 77:56:06:ac:cb:5f
23:20:17.203 -> I NimBLEScan: Updated advertiser: 77:56:06:ac:cb:5f
23:20:17.249 -> D NimBLEScan: erase device: 77:56:06:ac:cb:5f
23:20:17.295 -> I NimBLEScan: New advertiser: 98:d6:bb:2a:e5:f0
23:20:17.483 -> I NimBLEScan: Updated advertiser: 98:d6:bb:2a:e5:f0
23:20:17.530 -> D NimBLEScan: erase device: 98:d6:bb:2a:e5:f0
23:20:18.836 -> I NimBLEScan: New advertiser: 23:d8:ad:9f:38:44
23:20:18.883 -> D NimBLEScan: erase device: 23:d8:ad:9f:38:44
23:20:47.025 -> D NimBLEScan: discovery complete; reason=0
23:20:47.071 -> [136131][D][Waveshare_7_5_T7_Sensors.ino:1455] GetLocalData(): Outdoor Air Temp.:    --.- °C
23:20:47.071 -> [136131][D][Waveshare_7_5_T7_Sensors.ino:1456] GetLocalData(): Outdoor Humidity:     --   %
23:20:47.071 -> [136136][D][Waveshare_7_5_T7_Sensors.ino:1457] GetLocalData(): Outdoor Sensor Batt:  --   %
23:20:48.097 -> [137146][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
23:20:48.097 -> [137146][D][Waveshare_7_5_T7_Sensors.ino:1483] GetLocalData(): Indoor Temperature: --.- °C
23:20:48.097 -> [137149][D][Waveshare_7_5_T7_Sensors.ino:1484] GetLocalData(): Indoor Pressure:    --   hPa
23:20:48.097 -> [137157][D][Waveshare_7_5_T7_Sensors.ino:1485] GetLocalData(): Indoor Humidity:    --  %rH
23:20:48.097 -> [137165][E][Waveshare_7_5_T7_Sensors.ino:1504] GetLocalData(): Error trying to execute getDataReadyFlag(): Received NACK on transmit of address
23:20:48.143 -> [137178][D][Waveshare_7_5_T7_Sensors.ino:889] MqttConnect(): Checking wifi...
23:20:48.143 -> [137184][I][Waveshare_7_5_T7_Sensors.ino:894] MqttConnect(): MQTT connecting...
23:20:48.143 -> [137214][I][Waveshare_7_5_T7_Sensors.ino:908] MqttConnect(): Connected!
23:20:48.190 -> [137233][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137290][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137296][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137302][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.237 -> [137308][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.237 -> [137314][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.283 -> [137323][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.283 -> [137330][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.283 -> [137340][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.283 -> [137347][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:20:48.283 -> [137355][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:20:48.283 -> [137363][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:20:48.330 -> [137373][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:20:48.330 -> _PowerOn : 7
23:20:48.515 -> [137578][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137623][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137630][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137637][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 04n
23:20:48.562 -> [137643][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.609 -> [137650][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.609 -> [137655][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10d
23:20:48.609 -> [137663][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.609 -> [137671][D][Waveshare_7_5_T7_Sensors.ino:2454] DisplayConditionsSection(): Icon name: 10n
23:20:48.609 -> [137681][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=998.000000 YMax=1027.000000
23:20:48.657 -> [137689][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=4.000000 YMax=10.000000
23:20:48.657 -> [137697][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=100.000000
23:20:48.657 -> [137706][D][Waveshare_7_5_T7_Sensors.ino:2200] DrawGraph(): auto_scale: YMin=0.000000 YMax=6.000000
23:21:08.824 -> Busy Timeout!
23:21:08.824 -> _Update_Full : 20001093
23:21:14.846 -> _PowerOff : 6019000
23:21:14.846 -> [163917][I][Waveshare_7_5_T7_Sensors.ino:1078] GetMqttData(): Waiting for MQTT message...
23:21:14.846 -> [163917][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163922][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163929][D][Waveshare_7_5_T7_Sensors.ino:840] mqttMessageCb(): Payload size: 6
23:21:14.891 -> [163945][I][Waveshare_7_5_T7_Sensors.ino:1117] GetMqttData(): done!
23:21:14.891 -> [163952][D][Waveshare_7_5_T7_Sensors.ino:1119] GetMqttData():    1.5
23:21:14.891 -> [163953][D][Waveshare_7_5_T7_Sensors.ino:1121] GetMqttData(): Creating JSON object...
23:21:14.891 -> [163955][D][Waveshare_7_5_T7_Sensors.ino:1135] GetMqttData(): Done!
23:21:14.891 -> Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
23:21:14.937 -> 
23:21:14.937 -> Core  0 register dump:
23:21:14.937 -> PC      : 0x40094261  PS      : 0x00060b30  A0      : 0x800dca95  A1      : 0x3ffdcd00  
23:21:14.937 -> A2      : 0x500011c1  A3      : 0x00000000  A4      : 0x0000001e  A5      : 0x0000ff00  
23:21:14.937 -> A6      : 0x00ff0000  A7      : 0xff000000  A8      : 0x00000000  A9      : 0x0000000c  
23:21:14.937 -> A10     : 0x500011c1  A11     : 0x000000ff  A12     : 0x0000003f  A13     : 0x00000046  
23:21:14.937 -> A14     : 0x3f401038  A15     : 0xff000000  SAR     : 0x00000013  EXCCAUSE: 0x0000001c  
23:21:14.937 -> EXCVADDR: 0x00000000  LBEG    : 0x40094261  LEND    : 0x40094272  LCOUNT  : 0xffffffff  
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> Backtrace: 0x4009425e:0x3ffdcd00 0x400dca92:0x3ffdcd10 0x400dead1:0x3ffdce00 0x40103a26:0x3ffdcf40
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> 
23:21:14.984 -> ELF file SHA256: bca5e83ac2c1286d
23:21:14.984 -> 
23:21:15.170 -> Rebooting...
23:21:15.170 -> ets Jun  8 2016 00:22:57
23:21:15.170 -> 
23:21:15.170 -> rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
23:21:15.170 -> configsip: 0, SPIWP:0xee
23:21:15.170 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
23:21:15.170 -> mode:DIO, clock div:1
23:21:15.170 -> load:0x3fff0030,len:1344
23:21:15.170 -> load:0x40078000,len:13964
23:21:15.170 -> load:0x40080400,len:3600
23:21:15.170 -> entry 0x400805f0
23:21:15.637 -> [    28][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
23:21:15.684 -> [    49][I]_PowerOn : 125996
23:21:36.517 -> Busy Timeout!
23:21:36.517 -> _Update_Full : 20001077
23:21:42.575 -> _PowerOff : 6021000
23:21:52.556 -> _PowerOn : 2

You seem to have reformatted this which I failed on. How did you do that? It now (obviously) looks far better.

Also do I understand correctly that with the improvement you kindly made recently I can keep my MQTT payload as is? That would be preferrable since I´m using the MQTT data as is already on other receiving devices...

And you are also totally right on logfiles - it was just me to have to find out first how to get them. I don´t find Arduino IDE overly userfriendly. But - as always - that´s a matter of practise...

matthias-bs commented 8 months ago

You can format a block of text by enclosing it with three backticks at the start of a line.

No, I'm afraid I did not make any changes for you special case, but you find a hint how to do it in my previous comment (option 2).

matthias-bs commented 8 months ago

So this could be implemented as follows:

  ...
  log_i("done!");
  MqttClient.disconnect();
  log_d("%s", MqttBuf);

  // Everything between /* */ can be deleted...
  /*
  log_d("Creating JSON object...");

  // allocate the JsonDocument
  //StaticJsonDocument<MQTT_PAYLOAD_SIZE> doc;
  DynamicJsonDocument doc(MQTT_PAYLOAD_SIZE);

  // Deserialize the JSON document
  DeserializationError error = deserializeJson(doc, MqttBuf, MQTT_PAYLOAD_SIZE);

  // Test if parsing succeeds.
  if (error) {
    log_i("deserializeJson() failed: %s", error.c_str());
    return;
  } else {
    log_d("Done!");
  }
  MqttSensors.valid = true;

  const char *received_at = doc["received_at"];
  strncpy(MqttSensors.received_at, received_at, 30);
  //MqttSensors.received_at   = received_at;
  //MqttSensors.received_at   = doc["received_at"].as<String>();
  JsonObject uplink_message = doc["uplink_message"];

  // uplink_message_decoded_payload_bytes -> payload
  JsonObject payload = uplink_message["decoded_payload"]["bytes"];
  */

  // Convert temperature value from string (with leading spaces) to float
  sscanf(MqttBuf, " %f", &MqttSensors.air_temp_c);

  /*
  MqttSensors.air_temp_c = payload["air_temp_c"];
  MqttSensors.humidity = payload["humidity"];
  MqttSensors.indoor_temp_c = payload["indoor_temp_c"];
  MqttSensors.indoor_humidity = payload["indoor_humidity"];
  MqttSensors.battery_v = payload["battery_v"];
  MqttSensors.rain_day = payload["rain_day"];
  MqttSensors.rain_hr = payload["rain_hr"];
  MqttSensors.rain_mm = payload["rain_mm"];
  MqttSensors.rain_month = payload["rain_mon"];
  MqttSensors.rain_week = payload["rain_week"];
  MqttSensors.soil_moisture = payload["soil_moisture"];
  MqttSensors.soil_temp_c = payload["soil_temp_c"];
  MqttSensors.water_temp_c = payload["water_temp_c"];
  MqttSensors.wind_avg_meter_sec = payload["wind_avg_meter_sec"];
  MqttSensors.wind_direction_deg = payload["wind_direction_deg"];
  MqttSensors.wind_gust_meter_sec = payload["wind_gust_meter_sec"];

  JsonObject status = payload["status"];
  MqttSensors.status.ble_ok = status["ble_ok"];
  MqttSensors.status.s1_batt_ok = status["s1_batt_ok"];
  MqttSensors.status.s1_dec_ok = status["s1_dec_ok"];
  MqttSensors.status.ws_batt_ok = status["ws_batt_ok"];
  MqttSensors.status.ws_dec_ok = status["ws_dec_ok"];
  */
  MqttSensors.status.ble_ok = false;
  MqttSensors.status.s1_batt_ok = false;
  MqttSensors.status.s1_dec_ok = false;
  MqttSensors.status.ws_batt_ok = false;
  MqttSensors.status.ws_dec_ok = true;

  /*
  // Sanity checks
  if (MqttSensors.humidity == 0) {
    MqttSensors.status.ws_dec_ok = false;
  }
  MqttSensors.rain_hr_valid = (MqttSensors.rain_hr >= 0) && (MqttSensors.rain_hr < 300);
  MqttSensors.rain_day_valid = (MqttSensors.rain_day >= 0) && (MqttSensors.rain_day < 1800);

  // If not valid, set value to zero to avoid any problems with auto-scale etc.
  if (!MqttSensors.rain_hr_valid) {
    MqttSensors.rain_hr = 0;
  }
  if (!MqttSensors.rain_day_valid) {
    MqttSensors.rain_day = 0;
  }
  */
  ...
homuser2003 commented 7 months ago

Thanks again!

I achieved two things meanwhile (not where I wanted to be but still progess):

However - again, due to my very limited capabilites in this respect - could you please indicate where to paste the above code you kindly suggested in? My "guess" was in Waveshare_7_5_T7_Sensors.ino line 1117 till 1185 but that did not really solve the problem.

matthias-bs commented 7 months ago

Your guess was correct. Maybe there was a bug in my suggested changes - I did not test anything.

Please make a fork of my code on GitHub and insert your modifications. Please also provide your logfile and compiler output again.

I will have a look and try to help.

homuser2003 commented 7 months ago

Okay I must have made a mistake - don´t know which.

It basically works now. However, moving the MQTT Temp from "Remote" to "Forecast" screen appears more difficult than I thought. I defined the place where I´d like to have it in line 2062 of the example file.

Furthermore how do I not only import "Temperature" which is already correctly displayed on "Remote screen" but also "Humidity" which is in the same MQTT-base-topic? It´s published in my case as /esp8266/sensor2_humidity_1.

Here is my fork https://github.com/homuser2003/ESP32-e-Paper-Weather-Display-for-review Only the Example and the owm_credentials file are edited compared to your version and in the real wom_credentials version I obviously have real Wifi credentials and a real City.

Happy to also add log and compilation data but since I currently do not have a real issue, I skip that for the moment.

Finally I´d also be grateful for a hint how to disable all the sensors I don´t use assuming that it speeds up the update process and reduces the flickering... Tried already and broke it ;-/

Oh and of course thanks again for all your effort and help!!

matthias-bs commented 7 months ago

See https://github.com/homuser2003/ESP32-e-Paper-Weather-Display-for-review/pull/1/files

Furthermore how do I not only import "Temperature" which is already correctly displayed on "Remote screen" but also "Humidity" which is in the same MQTT-base-topic? It´s published in my case as /esp8266/sensor2_humidity_1.

Added this as a quick hack - maybe wrong or incomplete, but I think it demonstrates the basic concept.

Finally I´d also be grateful for a hint how to disable all the sensors I don´t use assuming that it speeds up the update process and reduces the flickering... Tried already and broke it ;-/

What does "broke it" mean exactly?

homuser2003 commented 7 months ago

Well what I did to comment out sensors lead to compilation errors. That´s what I meant wth "broke it".

The concept is demonstrated and I made a satisfying version without humidity.

The block you added in line 839ff however leads to a compilation error (I believe):

error: unterminated argument list invoking macro "log_d" */

exit status 1

Compilation error: unterminated argument list invoking macro "log_d"

matthias-bs commented 7 months ago

Well what I did to comment out sensors lead to compilation errors. That´s what I meant wth "broke it".

I think I fixed the BLE stuff (which should save some time when disabled), BME280 needs more work... These options are obviously not fully tested. :-(

log_d("MQTT: Humidity received)";

should read

log_d("MQTT: Humidity received");
matthias-bs commented 7 months ago

Added a few more fixes. It should be possible to display temperature and humidity now.

homuser2003 commented 7 months ago

Looks good - almost perfect. Unfortunately I don´t really know how to use the cool features that github provides, but I entered it manually.

THANKS!

One potentially final question: Should this not give me MQTT temp und hum in two lines?

u8g2Fonts.setFont(u8g2_font_helvB14_tf); // Concatenate a constant string and a String converted from float (with one decimal) drawString(x + 8, y + 24, String("Garagendach: "), LEFT); drawString(x + 8, y + 50, String(MqttSensors.air_temp_c, 1) + String(" °C ") + String(MqttSensors.humidity, 1) + String (" %"), LEFT);

Temp is shown, hum not although correctly received...

matthias-bs commented 7 months ago

You might try

drawString(x + 8, y + 50, String(MqttSensors.air_temp_c, 1) + String(" °C ") + String(MqttSensors.humidity) + String (" %"), LEFT);

The humidity data type is an integer, not a float. Therefore we do not need to set the number of decimals. Besides, temperature and humidity will be printed in one line with the code above.

homuser2003 commented 7 months ago

It works - I´ll now put the thing physically together and potentially never touch it again ;-)

This really is far beyond me and if adding ",1" does not lead to an Error but just does not work, that shows me that I´m still far from the level of understanding necessary for this.

Anyhow you helped me a lot and I learned quite a bit!

THANK YOU!

matthias-bs commented 7 months ago

Which kind of case are you using?

Well, indeed this isn't an entry level project - in terms of code size, structure and technical concepts.

I'm happy that you did not give up and are happy with the achieved result. Have fun with it! Maybe you'll get an itch to add more features later...

Thank you for the positive feedback!

homuser2003 commented 7 months ago

I´m using the "original" Waveshare case and have put it on a wood Easel from Amazon: https://www.waveshare.com/product/displays/accessories/cases/7.5inch-e-paper-case.htm

Picture enclosed.

Looks good but the case is poorly designed in my eyes: It has a micro-USB opening bit it´s just too thin to accompany the display together with the ESP32 driver board. I had to solder all PINS of the driver board off, put the pulldown resistors as thickness saving on as I could, cut one of the magnetic holders off the case and then it fits acceptably.
E-paper

Interestingly my measured temp is always about 1 °C below the OWM calculation...

matthias-bs commented 7 months ago

I have two of these cases laying around, too. Yes, this design has quite a few limitations - I think you have made the best of it!

A difference of 1°C is not much - this can easily be explained by a slightly different location and tolerances.