在使用ESP32的MQTT发送消息时,每隔一段时间会出现这样的问题:transport_base: Poll timeout or error, errno=Connection already in progress, fd=-1, timeout_ms=10000,然后MQTT就会自动断开连接。
我是每五秒发送一次设备状态信息,只执行这一个功能就会出上面的错误,我实在找不出是哪里的问题了,有没有大佬能帮忙看一下。
部分代码:
void publish(const char *data, int len)
{
if (s_is_mqtt_connected)
{
esp_mqtt_client_publish(s_mqtt_client,MQTT_PUBLIC_TOPIC,data,len,1,0); //将数据发送到MQTT服务器
}
}
static void dev_status_task(void *arg)
{
while (1)
{
vTaskDelay(pdMS_TO_TICKS(5000));
cJSON* back = NULL;
cJSON* back_data = NULL;
back = cJSON_CreateObject();
cJSON_AddNumberToObject(back,"Code",5678);
cJSON_AddStringToObject(back,"taskId","00000000");
uint8_t mac_address[6];
esp_read_mac(mac_address, ESP_MAC_WIFI_STA);
char macaddr[32];
sprintf(macaddr,"%02x:%02x:%02x:%02x:%02x:%02x",mac_address[0],mac_address[1],mac_address[2],mac_address[3],mac_address[4],mac_address[5]);
cJSON_AddStringToObject(back,"macaddr",macaddr);
cJSON_AddStringToObject(back,"type","device_status");
back_data = cJSON_CreateObject();
cJSON_AddStringToObject(back_data,"status","1");
cJSON_AddItemToObject(back,"data",back_data);
char *str = NULL;
str = cJSON_Print(back);
size_t back_len = strlen(str);
publish(str,back_len);
free(str);
cJSON_Delete(back);
}
}
transport_base: Poll timeout or error, errno=Connection already in progress, fd=-1, timeout_ms=10000
Moderator: ESP_ZT
Who is online
Users browsing this forum: No registered users and 11 guests