家用路由难免会有断开网络情况,为方便大家,提高模块连接贝壳网的稳定性,补充原来的例程,提供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();
}
}
}
如有不尽如人意的地方还望指正,欢迎交流。。
更多推荐
esp8266 防掉线方法_基于arduino IED 的 ESP8266 连接贝壳网的断网检测
发布评论