Fix Ethernet MQTT reconnect handling (#10896)

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
Alexander Balya
2026-07-06 10:21:24 -05:00
committed by GitHub
co-authored by GitHub Ben Meadors
parent 93250d8704
commit 1e66ecff60
3 changed files with 20 additions and 1 deletions
+6
View File
@@ -33,6 +33,8 @@ class UdpMulticastHandler final
#if defined(ARCH_NRF52) || defined(ARCH_PORTDUINO)
LOG_DEBUG("UDP Listening on IP: %u.%u.%u.%u:%u", udpIpAddress[0], udpIpAddress[1], udpIpAddress[2], udpIpAddress[3],
UDP_MULTICAST_DEFAUL_PORT);
#elif defined(USE_WS5500) || defined(USE_CH390D)
LOG_DEBUG("UDP Listening on IP: %s", ETH.localIP().toString().c_str());
#else
LOG_DEBUG("UDP Listening on IP: %s", WiFi.localIP().toString().c_str());
#endif
@@ -98,6 +100,10 @@ class UdpMulticastHandler final
if (!isEthernetAvailable()) {
return false;
}
#elif defined(USE_WS5500) || defined(USE_CH390D)
if (!ETH.connected()) {
return false;
}
#elif !defined(ARCH_PORTDUINO)
if (WiFi.status() != WL_CONNECTED) {
return false;
+5
View File
@@ -563,6 +563,11 @@ static void WiFiEvent(WiFiEvent_t event)
break;
case ARDUINO_EVENT_ETH_DISCONNECTED:
syslog.disable();
#if HAS_UDP_MULTICAST
if (udpHandler) {
udpHandler->stop();
}
#endif
LOG_INFO("Ethernet disconnected");
break;
case ARDUINO_EVENT_ETH_GOT_IP:
+9 -1
View File
@@ -470,8 +470,16 @@ void MQTT::reconnect()
reconnectCount++;
LOG_ERROR("Failed to contact MQTT server directly (%d/%d)", reconnectCount, reconnectMax);
if (reconnectCount >= reconnectMax) {
#if defined(USE_WS5500) || defined(USE_CH390D)
LOG_WARN("MQTT connect failed repeatedly; waiting for Ethernet reconnect");
#else
needReconnect = true;
wifiReconnect->setIntervalFromNow(0);
if (wifiReconnect) {
wifiReconnect->setIntervalFromNow(0);
} else {
LOG_WARN("MQTT connect failed repeatedly, but WiFi reconnect is unavailable");
}
#endif
reconnectCount = 0;
}
#endif