2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#include <SPI.h> #include <WiFi.h> #include <HTTPClient.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Adafruit_ADS1X15.h> #include <EEPROM.h> #include "anniebitmap.h"
int activeConnection = 1;
// hansen const String ssid1 = "chewme2g"; const String password1 = "1355311355";
// silo const String ssid2 = "asus2G"; const String password2 = "iqpqw41396";
const String heartbeatUrl = "https://homelab.impressto.ca/silopower/heartbeat.php"; const String pressureUrl = "https://homelab.impressto.ca/silopower/set_water_pressure.php?data=";
#define EEPROM_SIZE 4 int eepromPingsAddress = 0; float totalServerPings = 0; int eepromFailedPingsAddress = 1; float totalServerPingFails = 0; int eepromActiveConnection = 1;
#define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define LOGO_HEIGHT 128 #define LOGO_WIDTH 64
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET - 1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
Adafruit_ADS1115 ads(0x48);ads;
#definelong NUMFLAKESsecondsOfHour 10= // Number of snowflakes in the animation example
#define LOGO_HEIGHT 128
#define LOGO_WIDTH 64
0;
const unsignedint char epd_bitmap_marilyn [] PROGMEMsecondsPerHour = {3600; // set to 60 for debugging const int 0x00,pulseRate 0x00,= 0x00,1000; 0x00,// 0x00,loop 0x00,runs 0x01,once 0x00,per 0x00,second
0x00,const 0x00,int 0x00,serverSendInterval 0x00,= 0x00,10; 0x00,// 0x00,10 minutes between sending a voltage update to the server const int 0x00,samplesPerReading 0x00,= 0x00,60 0x00,* 0x00,serverSendInterval; 0x00,// 0x01,every 0x00,x 0x00,minutes 0x00,send 0x00,a 0x00,sample 0x00,to 0x00,the 0x00,server
0x00,int loopCount = 0;
String payload = ""; int httpCode 0x00,= 0x00,0; bool 0x00,wifiConnected 0x00,= 0x00,false; bool 0x00,wifiPaused 0x00,= 0x10,false; int 0x00,wifiPausedTick 0x00,= 0x00,0; bool 0x00,wifiSleeping 0x00,= 0x00,false; bool 0x00,debug 0x00,= false; // when true server does not update bool serverFailed 0x00,= 0x00,false; int 0x00,wifiConnectionAttempts 0x00,= 0x00,0;
0x00,float 0x04,basePressureVoltage 0xf8,= 0x00,0.46; float 0x00,totalledAveragePressure 0x00,= 0x00,0; float 0x00,averagePressure 0x00,= 0x00,0;
0x00,HTTPClient
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x06, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x60, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf0, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xf0, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xe0, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xa0, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xe3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xe3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x71, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x39, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x74, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xff, 0x02, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x50, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x83, 0xf0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x70, 0x00, 0x09, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xe0, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xe0, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x01, 0xfe, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x10, 0xff, 0x70, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x7f, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x7f, 0x1c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0xff, 0x86, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00
};http;
void setup() { Serial.begin(115200);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally if(if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(for (;;); // Don't proceed, loop forever }
if (!ads.begin()) { Serial.println("Failed to initialize ADS."); while (1); }
// ads.setGain(GAIN_FOUR)display.clearDisplay(); display.drawBitmap(0, 0, epd_bitmap_annie, //128, Show64, initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.1); display.display(); delay(3000);
//Init EEPROM EEPROM.begin(EEPROM_SIZE);
activeConnection = EEPROM.read(eepromActiveConnection);
Serial.print("eepromActiveConnection :"); Serial.println(activeConnection);
if (isnan(activeConnection)) { activeConnection = 1; }
if (activeConnection == 0) { activeConnection = 1; }
Serial.print("activeConnection: "); Serial.println(activeConnection);
float pingData = EEPROM.readFloat(eepromPingsAddress); if (isnan(pingData)) { pingData = 0; } totalServerPings = pingData; EEPROM.end(); EEPROM.begin(EEPROM_SIZE); float pingFailData = EEPROM.readFloat(eepromFailedPingsAddress); if (isnan(pingFailData)) { pingFailData = 0; } totalServerPingFails = pingFailData; EEPROM.end();
if (!connectToWiFi()) { delay(2000); WiFi.disconnect(); delay(1000); if (activeConnection == 1) { activeConnection = 2; } else { activeConnection = 1; } connectToWiFi(); }
delay(2000); // Pause for 2 seconds
// Clear the buffer
display.clearDisplay();
// Draw a single pixel in white
display.drawPixel(10, 10, WHITE);
// Show the display buffer on the screen. You MUST call display() after
// drawing commands to make them visible on screen!
display.display();
delay(2000);
// display.display() is NOT necessary after every single drawing command,
// unless that's what you want...rather, you can batch up a bunch of
// drawing operations and then update the screen all at once by calling
// display.display(). These examples demonstrate both approaches...
// Draw a small bitmap image
// Invert and restore display, pausing in-between
//display.invertDisplay(true);
//delay(1000);
//display.invertDisplay(false);
// delay(1000);
//testanimate(logo_bmp, LOGO_WIDTH, LOGO_HEIGHT); // Animate bitmaps }
void loop() {
testdrawbitmap()secondsOfHour++;
testscrolltext("What the hell!!", "", 1);
testscrolltext(" nobody", "loves you", 2);
testscrolltext("Poo", "Head", 3);
int16_t adc0;
//ads.readADC_Differential_0_1( after 24 hours reset this integer if (secondsOfHour > 86400) { secondsOfHour = 1; // Serial.println("restarting :"); ESP.restart(); }
int16_t adc0;
adc0 = ads.readADC_SingleEnded(0); Voltagefloat voltage = (adc0 * 0.1875) / 1000; //- basePressureVoltage);
float normalizedVolatage = voltage - basePressureVoltage;
if (normalizedVolatage < 0) { normalizedVolatage = 0; }
float pressure = normalizedVolatage * (30 - (normalizedVolatage * 3));
if (pressure < 0) {
pressure = 0; }
totalledAveragePressure += pressure;
averagePressure = totalledAveragePressure / loopCount;
Serial.print(println("AIN0: ");
Serial.print(adc0);
Serial.print("\tVoltage:averagePressure: "); Serial.println(Voltage, 7)averagePressure); Serial.println();
}
void testdrawchar(void) { display.clearDisplay();
display.setTextSize(1)3); // Normal 1:1 pixel scale
display.setTextColor(WHITE); // Draw white text
display.setCursor(0, 0); // Start at top-left corner
display.cp437(true); // Use full 256 char 'Code Page 437' font
// Not all the characters will fit on the display. This is normal.
// Library will draw what it can and the rest will be clipped.
for(int16_t i=0; i<256; i++) {
if(i == '\n') display.write(' ');
else display.write(i);
}
display.display();
delay(2000);
}
void testdrawstyles(void) {
display.clearDisplay();
display.setTextSize(1); // Normal 1:1 pixel scale
display.setTextColor(WHITE); // Draw white text
display.setCursor(0,0); // Start at top-left corner
display.println(F("Hello, world!"));
display.setTextColor(BLACK, WHITE); // Draw 'inverse' text
display.println(3.141592);
display.setTextSize(2); // Draw 2X-scale text
display.setTextColor(WHITE);
display.print(F("0x")); display.println(0xDEADBEEF, HEX);
display.display();
delay(1000);
}
void testscrolltext(String message1, String message2, int textSize) {
display.clearDisplay();
display.setTextSize(textSize); // Draw 2X-scale text display.setTextColor(WHITE); display.setCursor(10,0, 0); display.print("PSI: "); display.println(pressure, 0); display.println(message1)""); display.setTextSize(1); display.print("sensor volts: "); display.println(message2)normalizedVolatage, 2); display.display();
///////////////////// // ShowSERVER initialRELAY text if (!debug && (loopCount >= samplesPerReading) || serverFailed) {
loopCount = 0;
setWifiSleepMode(false);
delay(100)2000);
// Scrolldo ina variousheartbeat directions,check pausingto in-between:see if we are online... display.startscrollright(0x00, 0x0F)http.begin(heartbeatUrl); delay(1000); httpCode = display.stopscroll(http.GET(); if (!httpCode > 0) { // wifi may not be alive yet so wait 3 seconds delay(1000)3000); display.startscrollleft(0x00,}
0x0F) String recordedPressure = String(averagePressure, 1);
recordedPressure.trim();
loopCount = 0;
http.begin(pressureUrl + recordedPressure); delay(1000)httpCode = http.GET(); display.stopscroll(if (httpCode > 0) { payload = http.getString(); Serial.println("HTTP Response: " + payload); recordPingSucces(); } else { recordPingFailure(); } http.end();
setWifiSleepMode(true); }
loopCount++;
delay(1000);
}
void testdrawbitmap(void) { display.clearDisplay();
//display.drawBitmap(
// (display.width() - LOGO_WIDTH ) / 2,
// (display.height() - LOGO_HEIGHT) / 2,
// logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, 1);
//display.display();
// Draw bitmap on the screen display.drawBitmap(0, 0, epd_bitmap_marilyn,epd_bitmap_annie, 128, 64, 1); display.display();
delay(3000); }
#define bool XPOSconnectToWiFi() 0 // Indexes into the 'icons' array in function below
#define YPOS 1
#define DELTAY 2{
void testanimate(const uint8_tString *bitmap,activeSsid uint8_t= w, uint8_t h) {""; int8_tString f,activePassword icons[NUMFLAKES][3]= "";
//if Initialize(activeConnection 'snowflake'== positions
for(f=0; f< NUMFLAKES; f++)1) { icons[f][XPOS]activeSsid = random(1 - LOGO_WIDTH, display.width());ssid1; icons[f][YPOS]activePassword = -LOGO_HEIGHT;password1; icons[f][DELTAY]} else if (activeConnection == 2) { activeSsid = random(1,ssid2; 6); activePassword = password2; }
Serial.print(F("x:Connecting to WiFi: "));
Serial.print(icons[f][XPOS], DEC);
Serial.print(F(" y: "));
Serial.print(icons[f][YPOS], DEC);
Serial.print(F(" dy: ")); Serial.println(icons[f][DELTAY],activeSsid);
DEC) WiFi.begin(activeSsid, activePassword);
while (WiFi.status() != WL_CONNECTED && wifiConnectionAttempts < 20) { delay(500); Serial.print("."); wifiConnectionAttempts++; }
for(;;)wifiConnectionAttempts {= // Loop forever...
display.clearDisplay(); // Clear the display buffer0;
//if Draw(WiFi.status() each== snowflake:
for(f=0; f< NUMFLAKES; f++)WL_CONNECTED) { display.drawBitmap(icons[f][XPOS],Serial.println("\nConnected icons[f][YPOS],to bitmap,WiFi"); w, h,Serial.print("IP WHITE)Address: "); Serial.println(WiFi.localIP()); wifiConnected = true;
EEPROM.begin(EEPROM_SIZE); EEPROM.write(eepromActiveConnection, activeConnection); EEPROM.commit(); EEPROM.end();
Serial.print("set activeConnection to : "); Serial.println(activeConnection);
return true;
} else { Serial.print("Connection to "); Serial.print(activeSsid); Serial.println(" failed. Trying alternative"); return false; } }
/** * set wifi sleep mode between data relays to conserve energy * @param sleepMode - if true set wifi card to sleep to conserve energy */ void setWifiSleepMode(bool sleepMode) {
wifiSleeping = sleepMode;
if (sleepMode) { WiFi.disconnect(); WiFi.setSleep(true); delay(1000); Serial.print("sleep wifi status: "); Serial.println(wl_status_to_string(WiFi.status())); } display.display(); // Show the display buffer on the screen
delay(200); // Pause for 1/10 second
// Then update coordinates of each flake...
for(f=0; f< NUMFLAKES; f++)else { icons[f][YPOS]WiFi.setSleep(false); += icons[f][DELTAY]WiFi.reconnect(); delay(1000); Serial.print("awaken wifi status: "); Serial.println(wl_status_to_string(WiFi.status())); // IfCheck snowflakeif the connection is offstill theactive. bottomif ofnot thetrigger screen...wait for it to come back online if (icons[f][YPOS]WiFi.status() >!= display.height())WL_CONNECTED && !wifiPaused) { //Serial.println("Connection Reinitializelost. Attempting to areconnect randomin position, just off the top
icons[f][XPOS] = random(1 -minute LOGO_WIDTH, display.width()..."); icons[f][YPOS] = -LOGO_HEIGHT;
icons[f][DELTAY] = random(1, 6)WiFi.disconnect(); }wifiPaused = true; wifiConnected = false; connectToWiFi(); } } }
record server ping success in long term memory */ void recordPingSucces() { totalServerPings++; EEPROM.begin(EEPROM_SIZE); EEPROM.writeFloat(eepromPingsAddress, totalServerPings); EEPROM.commit(); EEPROM.end(); wifiConnected = true; serverFailed = false; }
/** * record server ping fails in long term memory */ void recordPingFailure() { totalServerPingFails++; EEPROM.begin(EEPROM_SIZE); EEPROM.writeFloat(eepromFailedPingsAddress, totalServerPingFails); EEPROM.commit(); EEPROM.end(); wifiConnected = false; serverFailed = true; }
/** * ESP32 wifi card statuses * @param status * @return string */ String wl_status_to_string(wl_status_t status) {
String response = "";
switch (status) { case WL_NO_SHIELD: response = "WL_NO_SHIELD"; break; case WL_IDLE_STATUS: response = "WL_IDLE_STATUS"; break; case WL_NO_SSID_AVAIL: response = "WL_NO_SSID_AVAIL"; break; case WL_SCAN_COMPLETED: response = "WL_SCAN_COMPLETED"; break; case WL_CONNECTED: response = "WL_CONNECTED"; break; case WL_CONNECT_FAILED: response = "WL_CONNECT_FAILED"; break; case WL_CONNECTION_LOST: response = "WL_CONNECTION_LOST"; break; case WL_DISCONNECTED: response = "WL_DISCONNECTED"; break; }
return response; }
|