diff --git a/esp8285/lib/AliyunIoTSDK/src/AliyunIoTSDK.cpp b/esp8285/lib/AliyunIoTSDK/src/AliyunIoTSDK.cpp index ecbc040..35e8f0a 100644 --- a/esp8285/lib/AliyunIoTSDK/src/AliyunIoTSDK.cpp +++ b/esp8285/lib/AliyunIoTSDK/src/AliyunIoTSDK.cpp @@ -211,9 +211,10 @@ int AliyunIoTSDK::begin(PubSubClient &mqtt_client, int AliyunIoTSDK::loop() { int mqttStatus = 0; client->loop(); - if (millis() - lastMs >= CHECK_INTERVAL) { - lastMs = millis(); + unsigned long thisMs = millis(); + if (thisMs - lastMs >= CHECK_INTERVAL) { mqttStatus = mqttCheckConnect(); + lastMs = thisMs; } if (0 == mqttStatus) { diff --git a/esp8285/src/aliot_client.cpp b/esp8285/src/aliot_client.cpp index a3ab378..821bc7f 100644 --- a/esp8285/src/aliot_client.cpp +++ b/esp8285/src/aliot_client.cpp @@ -58,7 +58,7 @@ int connectToAliot(PubSubClient& mqtt_client) { String aliot_client_id = g_product_key + "." + g_device_name; int res = iot.begin(mqtt_client, g_product_key.c_str(), g_device_name.c_str(), g_device_token.c_str(), g_aliot_region.c_str()); - if (0 == res) { + if (0 == res && mqtt_client.connected()) { INFOF("Aliyun IoT connected\n"); } else { ERRORF("Failed to connect to Aliyun IoT\n"); diff --git a/esp8285/src/iot_hub.cpp b/esp8285/src/iot_hub.cpp index 9e56100..f782507 100644 --- a/esp8285/src/iot_hub.cpp +++ b/esp8285/src/iot_hub.cpp @@ -142,6 +142,7 @@ void keepAliveIot() { g_mqtt_client.unsubscribe(g_downstream_topic.c_str()); g_subscribed = false; connectIot(); + last_check_time = current_time; } } }