esp8266之Arduino的mqtt客户端远程继电器控制,断电重连、断网重连,断mqtt服务器重连
时间:2023-04-07 10:07:00
胡说八道,上菜
#include #include MQTTClient mqtt; //使用继电器GPIO0来控制,蓝灯低电平激活 #define JDQ 0 void setup() { //设置波特率 Serial.begin(115200); //设置继电器GPIO输出 pinMode(JDQ, OUTPUT); //判断是否连接,这是断电重连的关键 if (!autoConfig()) { Serial.println("Start module"); ///智能配网 smartConfig(); } //mqtt相关内容请参期。mqtt这里需要加载教程zip文件,看我的其他博客关于mqtt的教程 //topic, data, data is continuing //接收mqtt消息 mqtt.onData([](String topic, String data, bool cont) { Serial.printf("Data received, topic: %s, data: %s\r\n", topic.c_str(), data.c_str()); //简单的逻辑处理,1开0关 if (data == "0") { digitalWrite(JDQ, HIGH); } else if (data == "1") { digitalWrite(JDQ, LOW); } }); //订阅后发送命令,可有可无 mqtt.onSubscribe([](int sub_id) { Serial.printf("Subscribe topic id: %d ok\r\n", sub_id); mqtt.publish("esp826601", "GONEPOO", 0, 0); }); //mqtt连接 mqtt.onConnect([]() { Serial.printf("\r\nMQTT: Connected\r\n"); Serial.printf("Subscribe id: %d\r\n", mqtt.subscribe("esp826601", 0)); }); //连接mqtt服务器,连不上,自己改一下 mqtt.begin("mqtt://175.24.138.36:1773"); } ///自动断电重连关键部分 bool autoConfig() { WiFi.begin(); for (int i = 0; i < 20; i ) { int wstatus = WiFi.status(); if (wstatus == WL_CONNECTED) { Serial.println("AutoConfig Success"); Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); WiFi.printDiag(Serial); return true; } else { Serial.print("AutoConfig Waiting..."); Serial.println(wstatus); delay(1000); } } Serial.println("AutoConfig Faild!" ); return false; } /** 一键配网关键代码 */ void smartConfig() { WiFi.mode(WIFI_STA); Serial.println("\r\nWait for Smartconfig"); // 等待配网 WiFi.beginSmartConfig(); while (1) { Serial.print("."); delay(500); if (WiFi.smartConfigDone()) { Serial.println("SmartConfig Success"); Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); WiFi.setAutoConnect(true); // 设置自动连接 break; } } Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address: " ); delay(300); Serial.println(WiFi.localIP()); } void loop() { mqtt.handle(); }
smartConfig可以用苹果手机下载乐信esptouch,安卓也有相关性apk下载载百度的具体原理