Fix Ethernet MQTT reconnect handling (#10896)
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
co-authored by
GitHub
Ben Meadors
parent
93250d8704
commit
1e66ecff60
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user