diff --git a/22_m1284p_WIZNET_MQTT/main.c b/22_m1284p_WIZNET_MQTT/main.c index 3b13a99..8d87ac4 100644 --- a/22_m1284p_WIZNET_MQTT/main.c +++ b/22_m1284p_WIZNET_MQTT/main.c @@ -335,6 +335,7 @@ int main() int32_t mqtt_rc = 0; Network mqtt_network; Client mqtt_client; + uint8_t mqtt_err_cnt = 0; mqtt_network.my_socket = SOCK_MQTT; // Можно определить IP узла по DNS-имени, IP узла будет в массиве targetIP @@ -400,13 +401,29 @@ int main() int len = SPRINTF(_msg, "Uptime: %lu sec; Free RAM: %d bytes\r\n", millis()/1000, freeRam()); if(len > 0) { - PRINTF(">>MQTT pub msg №%lu\r\n", ++mqtt_pub_count); + PRINTF(">>MQTT pub msg №%lu ", ++mqtt_pub_count); MQTTMessage pubMessage; pubMessage.qos = QOS0; pubMessage.id = mes_id++; pubMessage.payloadlen = (size_t)len; pubMessage.payload = _msg; - MQTTPublish(&mqtt_client, "/w5500_avr_dbg", &pubMessage); + mqtt_rc = MQTTPublish(&mqtt_client, "/w5500_avr_dbg", &pubMessage); + //Analize MQTT publish result (for MQTT failover mode) + if (mqtt_rc == SUCCESSS) + { + mqtt_err_cnt = 0; + PRINTF(" - OK\r\n"); + } + else + { + PRINTF(" - ERROR\r\n"); + //Reboot device after 5 continuous errors (~ 1min here) + if(mqtt_err_cnt++ > 5) + { + PRINTF("Connection with MQTT Broker was lost!!\r\nReboot the board..\r\n"); + while(1); + } + } } }