作者:wony366 | 更新時(shí)間:2016-05-20 | 瀏覽量:4334
家用路由難免會(huì)有斷開網(wǎng)絡(luò)情況,為方便大家,提高模塊連接貝殼網(wǎng)的穩(wěn)定性,補(bǔ)充原來(lái)的例程,提供2個(gè)函數(shù)
一個(gè)是路由器的 WIFI 連接函數(shù)
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());
}下面的函數(shù)是保持在線狀態(tài),并檢測(cè)掉線及應(yīng)對(duì)措施:
void keeponline()
{ int i,j=0;
client.flush(); // 清空客戶端緩存,便于檢測(cè)返回
client.write("{\"M\":\"say\",\"ID\":\"D***\",\"C\":\"123456\",\"SIGN\":\"ok\"}\r\n"); //保持心跳,這是我的ID 和key,自己修改 ,以防掉線,如果掉線重新登錄,
delay(100);
// Serial.println(client.available());
while (client.available()==0) // 無(wú)返回時(shí),嘗試重新登錄
{ client.write("{\"M\":\"checkin\",\"ID\":\"***\",\"K\":\"****\"}\r\n");//重新登陸設(shè)備,修改成自己的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) // 如果超時(shí)2分鐘服務(wù)器端任然無(wú)應(yīng)答,重啟模塊嘗試重新連接服務(wù)器
{
ESP.restart();
}
}
}如有不盡如人意的地方還望指正,歡迎交流。。