This sketch monitors the web via wifi and resets the modem if the network is unavailable for an extended period of time
// //ESP8266 NodeMCU CP2102 ESP-12E Development Board with 1306 OLED display (128x32) // #include "setup.h" void setup() {pinMode(16/*D0 (LED1) */,OUTPUT); pinMode(2/*D4 (LED2) */,OUTPUT); pinMode(15/*D8 (speaker) */,OUTPUT); pinMode(0/*D3 (relay)*/,OUTPUT); display.begin(SSD1306_SWITCHCAPVCC,0x3C); display.dim(true); display.setTextSize(2); display.setTextColor(WHITE); show; dw(0,LOW); delay(onemin*2); } void loop() {noTone(15); fails=0; dw(0,LOW); if (WiFi.status() != WL_CONNECTED) { clr; display.setCursor(11,10); display.print("WiFiScan!"); show; WiFi.begin(ssid,pswd); while(WiFi.status()!=WL_CONNECTED) {beep();}} if (j++ > sites) {j=0;} dw(16,HIGH); dw(2,HIGH); if (client.connect("www."+String(site[j])+".com",80)) { fails=0; display.invertDisplay(false); for ( int m=1; m<50; m++ ) { clr; display.setCursor(6,15); display.print(String(site[j])); for ( int i=1; i<100; i++ ) { display.fillCircle(i,4,4,SSD1306_WHITE); show; delay(6); display.fillCircle(i,4,4,SSD1306_INVERSE); show; }}} else {clr; display.setCursor(11,10); display.print("INTERNET!"); show; for ( int i=1; i<10; i++ ) {beep();} clr; display.invertDisplay(false); show; fails++; if (fails > 10) {fails=10;} delay(onemin*fails); display.setCursor(11,10); display.print("ModemIPL!"); show; dw(0,HIGH); delay(onemin/5); dw(0,LOW); delay(onemin);}} ...... this is setup.h ....... //#include <Wire.h> #include <ESP8266WiFi.h> #include <Adafruit_SSD1306.h> #define onemin 60000 #define sites 12 #define show display.display() #define clr display.clearDisplay() #define dw digitalWrite WiFiClient client; Adafruit_SSD1306 display(128,32,&Wire); const char* ssid="net"; const char* pswd="wireless"; int j=0; int x=0; int z=0; long ipldelay=0; int fails; const char* site[]={"FACEBOOK","MICROSOFT","GOOGLE","YAHOO","AMAZON","EBAY","APPLE","TWITTER","DELL","AOL","HP","IBM","ORACLE","CISCO"}; void beep() {tone(15,2000); display.invertDisplay(x=!x); for ( int i=1; i<10; i++ ) { dw(16,z); dw(2,z=!z); delay(50); } noTone(15);}