完善资料让更多小伙伴认识你,还能领取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; } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
944 浏览 0 评论
1671 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1330 浏览 1 评论
1233 浏览 1 评论
5015 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1252浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
927浏览 3评论
2336浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2526浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1051浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:33 , Processed in 0.559506 second(s), Total 69, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
466
