Added analize MQTT publish result (for MQTT failover mode)

master
maxxir 7 years ago
parent c55411ee6f
commit 042b14c7db

@ -335,6 +335,7 @@ int main()
int32_t mqtt_rc = 0; int32_t mqtt_rc = 0;
Network mqtt_network; Network mqtt_network;
Client mqtt_client; Client mqtt_client;
uint8_t mqtt_err_cnt = 0;
mqtt_network.my_socket = SOCK_MQTT; mqtt_network.my_socket = SOCK_MQTT;
// Можно определить IP узла по DNS-имени, IP узла будет в массиве targetIP // Можно определить 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()); int len = SPRINTF(_msg, "Uptime: %lu sec; Free RAM: %d bytes\r\n", millis()/1000, freeRam());
if(len > 0) if(len > 0)
{ {
PRINTF(">>MQTT pub msg №%lu\r\n", ++mqtt_pub_count); PRINTF(">>MQTT pub msg №%lu ", ++mqtt_pub_count);
MQTTMessage pubMessage; MQTTMessage pubMessage;
pubMessage.qos = QOS0; pubMessage.qos = QOS0;
pubMessage.id = mes_id++; pubMessage.id = mes_id++;
pubMessage.payloadlen = (size_t)len; pubMessage.payloadlen = (size_t)len;
pubMessage.payload = _msg; 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);
}
}
} }
} }