锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

esp8266之Arduino的mqtt客户端远程继电器控制,断电重连、断网重连,断mqtt服务器重连

时间:2023-04-07 10:07:00 sta继电器

胡说八道,上菜

#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下载载百度的具体原理

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章