@@ -23,7 +23,7 @@ BootNormal::BootNormal()
23
23
, _mqttTopicLevels(nullptr )
24
24
, _mqttTopicLevelsCount(0 ) {
25
25
// FIXME: getSketchMD5 not implemented / boot loop on ESP32
26
- // TODO: Remove Update.h from BootNormal.cpp, change status codes to https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/ota.html
26
+ // Remove Update.h from BootNormal.cpp, change status codes to https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/ota.html
27
27
strcpy (_fwChecksum, " 00000000000000000000000000000000" );
28
28
_fwChecksum[sizeof (_fwChecksum) - 1 ] = ' \0 ' ;
29
29
}
@@ -48,7 +48,7 @@ BootNormal::BootNormal()
48
48
, _mqttTopicLevels(nullptr )
49
49
, _mqttTopicLevelsCount(0 ) {
50
50
strlcpy (_fwChecksum, ESP.getSketchMD5 ().c_str (), sizeof (_fwChecksum));
51
- _fwChecksum[sizeof (_fwChecksum) - 1 ] = ' \0 ' ;
51
+ _fwChecksum[sizeof (_fwChecksum) - 1 ] = ' \0 ' ;
52
52
}
53
53
#endif // ESP32
54
54
@@ -182,9 +182,9 @@ void BootNormal::loop() {
182
182
183
183
if (_statsTimer.check ()) {
184
184
char statsIntervalStr[3 + 1 ];
185
- itoa (Interface::get ().getConfig ().get ().deviceStatsInterval , statsIntervalStr, 10 );
185
+ itoa (Interface::get ().getConfig ().get ().deviceStatsInterval + 5 , statsIntervalStr, 10 );
186
186
Interface::get ().getLogger () << F (" 〽 Sending statistics..." ) << endl;
187
- Interface::get ().getLogger () << F (" • Interval: " ) << statsIntervalStr << F (" s" ) << endl;
187
+ Interface::get ().getLogger () << F (" • Interval: " ) << statsIntervalStr << F (" s ( " ) << Interface::get (). getConfig (). get (). deviceStatsInterval << F ( " s including 5s grace time) " ) << endl;
188
188
uint16_t intervalPacketId = Interface::get ().getMqttClient ().publish (_prefixMqttTopic (PSTR (" /$stats/interval" )), 1 , true , statsIntervalStr);
189
189
190
190
uint8_t quality = Helpers::rssiToPercentage (WiFi.RSSI ());
@@ -328,8 +328,13 @@ void BootNormal::_wifiConnect() {
328
328
WiFi.begin (Interface::get ().getConfig ().get ().wifi .ssid , Interface::get ().getConfig ().get ().wifi .password );
329
329
}
330
330
331
+ #ifdef ESP32
332
+ WiFi.setAutoConnect (false );
333
+ WiFi.setAutoReconnect (false );
334
+ #elif defined(ESP8266)
331
335
WiFi.setAutoConnect (true );
332
336
WiFi.setAutoReconnect (true );
337
+ #endif // ESP32
333
338
}
334
339
}
335
340
@@ -349,17 +354,17 @@ void BootNormal::_onWifiGotIp(WiFiEvent_t event, WiFiEventInfo_t info) {
349
354
}
350
355
#elif defined(ESP8266)
351
356
void BootNormal::_onWifiGotIp (const WiFiEventStationModeGotIP& event) {
352
- if (Interface::get ().led .enabled ) Interface::get ().getBlinker ().stop ();
353
- Interface::get ().getLogger () << F (" ✔ Wi-Fi connected, IP: " ) << event.ip << endl;
354
- Interface::get ().getLogger () << F (" Triggering WIFI_CONNECTED event..." ) << endl;
355
- Interface::get ().event .type = HomieEventType::WIFI_CONNECTED;
356
- Interface::get ().event .ip = event.ip ;
357
- Interface::get ().event .mask = event.mask ;
358
- Interface::get ().event .gateway = event.gw ;
359
- Interface::get ().eventHandler (Interface::get ().event );
360
- MDNS.begin (Interface::get ().getConfig ().get ().deviceId );
361
-
362
- _mqttConnect ();
357
+ if (Interface::get ().led .enabled ) Interface::get ().getBlinker ().stop ();
358
+ Interface::get ().getLogger () << F (" ✔ Wi-Fi connected, IP: " ) << event.ip << endl;
359
+ Interface::get ().getLogger () << F (" Triggering WIFI_CONNECTED event..." ) << endl;
360
+ Interface::get ().event .type = HomieEventType::WIFI_CONNECTED;
361
+ Interface::get ().event .ip = event.ip ;
362
+ Interface::get ().event .mask = event.mask ;
363
+ Interface::get ().event .gateway = event.gw ;
364
+ Interface::get ().eventHandler (Interface::get ().event );
365
+ MDNS.begin (Interface::get ().getConfig ().get ().deviceId );
366
+
367
+ _mqttConnect ();
363
368
}
364
369
#endif // ESP32
365
370
@@ -368,26 +373,26 @@ void BootNormal::_onWifiDisconnected(WiFiEvent_t event, WiFiEventInfo_t info) {
368
373
Interface::get ().ready = false ;
369
374
if (Interface::get ().led .enabled ) Interface::get ().getBlinker ().start (LED_WIFI_DELAY);
370
375
_statsTimer.reset ();
371
- Interface::get ().getLogger () << F (" ✖ Wi-Fi disconnected" ) << endl;
376
+ Interface::get ().getLogger () << F (" ✖ Wi-Fi disconnected, reason: " ) << info. disconnected . reason << endl;
372
377
Interface::get ().getLogger () << F (" Triggering WIFI_DISCONNECTED event..." ) << endl;
373
378
Interface::get ().event .type = HomieEventType::WIFI_DISCONNECTED;
374
- // Interface::get().event.wifiReason = info.disconnected.reason;
379
+ Interface::get ().event .wifiReason = info.disconnected .reason ;
375
380
Interface::get ().eventHandler (Interface::get ().event );
376
381
377
382
_wifiConnect ();
378
383
}
379
384
#elif defined(ESP8266)
380
385
void BootNormal::_onWifiDisconnected (const WiFiEventStationModeDisconnected& event) {
381
- Interface::get ().ready = false ;
382
- if (Interface::get ().led .enabled ) Interface::get ().getBlinker ().start (LED_WIFI_DELAY);
383
- _statsTimer.reset ();
384
- Interface::get ().getLogger () << F (" ✖ Wi-Fi disconnected" ) << endl;
385
- Interface::get ().getLogger () << F (" Triggering WIFI_DISCONNECTED event..." ) << endl;
386
- Interface::get ().event .type = HomieEventType::WIFI_DISCONNECTED;
387
- Interface::get ().event .wifiReason = event.reason ;
388
- Interface::get ().eventHandler (Interface::get ().event );
389
-
390
- _wifiConnect ();
386
+ Interface::get ().ready = false ;
387
+ if (Interface::get ().led .enabled ) Interface::get ().getBlinker ().start (LED_WIFI_DELAY);
388
+ _statsTimer.reset ();
389
+ Interface::get ().getLogger () << F (" ✖ Wi-Fi disconnected, reason: " ) << event. reason << endl;
390
+ Interface::get ().getLogger () << F (" Triggering WIFI_DISCONNECTED event..." ) << endl;
391
+ Interface::get ().event .type = HomieEventType::WIFI_DISCONNECTED;
392
+ Interface::get ().event .wifiReason = event.reason ;
393
+ Interface::get ().eventHandler (Interface::get ().event );
394
+
395
+ _wifiConnect ();
391
396
}
392
397
#endif // ESP32
393
398
@@ -447,7 +452,7 @@ void BootNormal::_advertise() {
447
452
break ;
448
453
case AdvertisementProgress::GlobalStep::PUB_STATS_INTERVAL:
449
454
char statsIntervalStr[3 + 1 ];
450
- itoa (Interface::get ().getConfig ().get ().deviceStatsInterval , statsIntervalStr, 10 );
455
+ itoa (Interface::get ().getConfig ().get ().deviceStatsInterval + 5 , statsIntervalStr, 10 );
451
456
packetId = Interface::get ().getMqttClient ().publish (_prefixMqttTopic (PSTR (" /$stats/interval" )), 1 , true , statsIntervalStr);
452
457
if (packetId != 0 ) _advertisementProgress.globalStep = AdvertisementProgress::GlobalStep::PUB_FW_NAME;
453
458
break ;
@@ -756,7 +761,7 @@ void BootNormal::_onMqttDisconnected(AsyncMqttClientDisconnectReason reason) {
756
761
_advertisementProgress.currentPropertyIndex = 0 ;
757
762
if (!_mqttDisconnectNotified) {
758
763
_statsTimer.reset ();
759
- Interface::get ().getLogger () << F (" ✖ MQTT disconnected" ) << endl;
764
+ Interface::get ().getLogger () << F (" ✖ MQTT disconnected, reason: " ) << ( int8_t )reason << endl;
760
765
Interface::get ().getLogger () << F (" Triggering MQTT_DISCONNECTED event..." ) << endl;
761
766
Interface::get ().event .type = HomieEventType::MQTT_DISCONNECTED;
762
767
Interface::get ().event .mqttReason = reason;
0 commit comments