使用ESP8266偵測網路斷線後重開設備
** 紅色字體部分請依現場環境修改 **
/*
2016-06-05 by yulie~
使用第2腳控制繼電器時,於上傳程式當下必須將第2腳斷開,否則無法上傳程式
*/
byte Relay_0 = 14; // 使用第14腳控制繼電器
byte wait = 90; //次 測到斷線後每1秒重連,超過該次數後關電重啟
byte off_time = 6; //Sec 設備斷電秒數
byte interval = 1; //min 檢測連現狀態間隔時間
#include <ESP8266WiFi.h>
#define SSID "****" // 無線網路連線名稱
#define PASS "******" // 無線網路連線密碼
#define HOST "www.google.com"
#define PORT 80
byte count = 0;
void setup() {
Serial.begin( 115200 );
pinMode(Relay_0, OUTPUT);
digitalWrite(Relay_0, LOW); //Relay off
delay(20);
WiFi.mode(WIFI_STA); // Connecting to a WiFi network
Serial.print("Connect to Wi-Fi : "); Serial.println( SSID );
WiFi.begin( SSID, PASS ); //Connect to Wi-Fi
}
void loop() {
while ( WiFi.status() != WL_CONNECTED ) // 持續等待並連接到指定的 WiFi SSID
{ // 如果連線AP 失敗時執行這一段程式
delay(1000);
Serial.print( "." ); Serial.print(count);
if (count++ >= wait) {
digitalWrite(Relay_0, HIGH); //Relay off
delay(1000 * off_time);
digitalWrite(Relay_0, LOW);
count = 0;
}
}
// WiFi.printDiag(Serial); //診斷信息
// Serial.println( "," ); Serial.println( "WiFi connected" );
// Serial.println( "IP address: " );
// Serial.println( WiFi.localIP() );
// Serial.println( "" );
WiFiClient client; // 設定 ESP8266 作為 Client 端
if ( !client.connect( HOST, PORT ) ) // 檢查是否可連上前述指定的主機
{ // 如果連線前述指定的主機失敗時執行這一段程式
Serial.print( "Host connection failed :" ); Serial.println(count);
delay(1000);
if (count++ >= wait) {
Serial.println( "device power off...." );
digitalWrite(Relay_0, HIGH); //power off
delay(1000 * off_time);
digitalWrite(Relay_0, LOW); //power on
count = 0;
Serial.println( "device power on...." );
}
return;
}
else
{
Serial.println( "Check Host : online..." );
delay(60000 * interval); //檢查間隔(mS)
}
}
沒有留言:
張貼留言