完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
您好,
我写了一个草图,其中我将我的 esp8266-07 连接到 CloudMQTT 代理。在我的代码中,我总是检查我的 esp 是否连接到代理。我使用 client.connected() 来处理这个问题。 第一个问题: 有时 ESP 会断开连接(client.state() == -4)。这个问题的原因是什么?为什么这种情况在一分钟内发生超过 4 次????我的互联网连接很稳定! 第二个问题: 有时当我使用 client.connect(ID, username, pass); ESP 冻结 10 或 15 秒,然后它不连接代理 (client.state() == -2) 。为什么会这样,更重要的是,我怎样才能度过这个延迟????? 我不知道我的代码是否能帮助您找到解决方案,但这是我的职责。由于变量 time_out,此函数在每个主循环中被调用并在每隔 60 个循环中发挥作用: 代码:全选void make_connection(void) { if (time_out == 1) { switch (connect_cycle_stat) { case 0: { Serial.printf(\"\\nmake_connection ==>\"); Serial.printf(\"\\ncase %d. \", connect_cycle_stat); if (WiFi.softAP(ap_ssid, ap_pass)) { server.begin(); connect_cycle_stat++; time_out = 0; } break; } case 1: { Serial.printf(\"\\nmake_connection ==>\"); Serial.printf(\"\\ncase %d. \", connect_cycle_stat); Serial.printf(\"\\nWiFi.status() = %d\", WiFi.status()); if (WiFi.status() == WL_CONNECTED) { time_out = 0; connect_cycle_stat++; uint8_t mac[6]; WiFi.macAddress(mac); device_ID += macToStr(mac); //update_esp(); } else { WiFi.begin(wifi_ssid, wifi_pass); } break; } case 2: { Serial.printf(\"\\nmake_connection ==>\"); Serial.printf(\"\\ncase %d. \", connect_cycle_stat); Serial.printf(\"\\nmqtt_client.connected() = %d\", mqtt_client.connected()); Serial.printf(\"\\nWiFi.status() = %d\", WiFi.status()); if (mqtt_client.connected() == true) { mqtt_client.publish(out_topic.c_str(), \"Hello from ESP8266\"); mqtt_client.subscribe(\"steamer/appClient\"); // will handle the incoming messages for the topics subscribed. mqtt_client.setCallback(callback); connect_cycle_stat++; } else { //mqtt_client.disconnect(); delay(100); mqtt_client.connect(device_ID.c_str(), mqtt_user, mqtt_pass); } break; } case 3: { Serial.printf(\"\\nmake_connection ==>\"); Serial.printf(\"\\ncase %d. \", connect_cycle_stat); Serial.printf(\"\\nmqtt_client.connected() = %d\", mqtt_client.connected()); Serial.printf(\"\\nWiFi.status() = %d\", WiFi.status()); if (mqtt_client.connected() == false) { //mqtt_client.disconnect(); delay(100); connect_cycle_stat--; } if (WiFi.status() != WL_CONNECTED) { WiFi.begin(wifi_ssid, wifi_pass); connect_cycle_stat = 1; } break; } } } time_out++; if (time_out > 60) time_out = 0; } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
968 浏览 1 评论
553浏览 6评论
462浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
447浏览 5评论
448浏览 4评论
418浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 04:12 , Processed in 2.955378 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号