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)
|
#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],
|
LOG_DEBUG("UDP Listening on IP: %u.%u.%u.%u:%u", udpIpAddress[0], udpIpAddress[1], udpIpAddress[2], udpIpAddress[3],
|
||||||
UDP_MULTICAST_DEFAUL_PORT);
|
UDP_MULTICAST_DEFAUL_PORT);
|
||||||
|
#elif defined(USE_WS5500) || defined(USE_CH390D)
|
||||||
|
LOG_DEBUG("UDP Listening on IP: %s", ETH.localIP().toString().c_str());
|
||||||
#else
|
#else
|
||||||
LOG_DEBUG("UDP Listening on IP: %s", WiFi.localIP().toString().c_str());
|
LOG_DEBUG("UDP Listening on IP: %s", WiFi.localIP().toString().c_str());
|
||||||
#endif
|
#endif
|
||||||
@@ -98,6 +100,10 @@ class UdpMulticastHandler final
|
|||||||
if (!isEthernetAvailable()) {
|
if (!isEthernetAvailable()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#elif defined(USE_WS5500) || defined(USE_CH390D)
|
||||||
|
if (!ETH.connected()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#elif !defined(ARCH_PORTDUINO)
|
#elif !defined(ARCH_PORTDUINO)
|
||||||
if (WiFi.status() != WL_CONNECTED) {
|
if (WiFi.status() != WL_CONNECTED) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -563,6 +563,11 @@ static void WiFiEvent(WiFiEvent_t event)
|
|||||||
break;
|
break;
|
||||||
case ARDUINO_EVENT_ETH_DISCONNECTED:
|
case ARDUINO_EVENT_ETH_DISCONNECTED:
|
||||||
syslog.disable();
|
syslog.disable();
|
||||||
|
#if HAS_UDP_MULTICAST
|
||||||
|
if (udpHandler) {
|
||||||
|
udpHandler->stop();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
LOG_INFO("Ethernet disconnected");
|
LOG_INFO("Ethernet disconnected");
|
||||||
break;
|
break;
|
||||||
case ARDUINO_EVENT_ETH_GOT_IP:
|
case ARDUINO_EVENT_ETH_GOT_IP:
|
||||||
|
|||||||
+9
-1
@@ -470,8 +470,16 @@ void MQTT::reconnect()
|
|||||||
reconnectCount++;
|
reconnectCount++;
|
||||||
LOG_ERROR("Failed to contact MQTT server directly (%d/%d)", reconnectCount, reconnectMax);
|
LOG_ERROR("Failed to contact MQTT server directly (%d/%d)", reconnectCount, reconnectMax);
|
||||||
if (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;
|
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;
|
reconnectCount = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user