Internet Monitor


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);}