基于arduino IED 的 ESP8266 连接贝壳网的断网检测

作者:wony366 | 更新时间:2016-05-20 | 浏览量:3632

家用路由难免会有断开网络情况,为方便大家,提高模块连接贝壳网的稳定性,补充原来的例程,提供2个函数


一个是路由器的 WIFI 连接函数


void wificonnect()
{
  WiFi.begin(ssid, password);  // ssid 你的路由名,password你的WIFI密码;
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  }


下面的函数是保持在线状态,并检测掉线及应对措施:

 void  keeponline()
    { int i,j=0;
     client.flush();   // 清空客户端缓存,便于检测返回
     client.write("{\"M\":\"say\",\"ID\":\"D***\",\"C\":\"123456\",\"SIGN\":\"ok\"}\r\n"); //保持心跳,这是我的ID 和key,自己修改 ,以防掉线,如果掉线重新登录,
     delay(100);
   // Serial.println(client.available());
     while (client.available()==0)  // 无返回时,尝试重新登录                    
      {  client.write("{\"M\":\"checkin\",\"ID\":\"***\",\"K\":\"****\"}\r\n");//重新登陆设备,修改成自己的ID和key  
        delay(3000); // 3秒登录一次,say一次 , 
       client.write("{\"M\":\"say\",\"ID\":\"D***\",\"C\":\"123456\",\"SIGN\":\"ok\"}\r\n");
      
       i++; 
      //  Serial.print(i);       
       if(i>=10) // 30秒后先断开路由器连接2S,再重连路由器
       {  WiFi.disconnect();
           delay(2000);
           wificonnect();
           i=0;
           j++;
         }
            if(j>=4)   // 如果超时2分钟服务器端任然无应答,重启模块尝试重新连接服务器
            {
              ESP.restart();
            }
     }
  
  }

  如有不尽如人意的地方还望指正,欢迎交流。。


评论:共3条

贝壳物联 评论于:2016-05-24 18:41:31
通讯信息末尾用“\n”就可以,不用“\r\n”
chenyuechi 评论于:2016-05-25 17:49:20
厉害!!!
评论于:2017-05-01 21:14:52
ESP.restart()函数需要引用什么库文件?
返回顶部