作者:wony366 | 更新時間:2016-05-20 | 瀏覽量:3418
家用路由難免會有斷開網絡情況,為方便大家,提高模塊連接貝殼網的穩定性,補充原來的例程,提供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(); } } }
如有不盡如人意的地方還望指正,歡迎交流。。