// Learn about the ESP32 WiFi simulation in
// https://docs.wokwi.com/guides/esp32-wifi
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <smart_duty_cycling.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
#define led_WiFi_KO 16 // Pin per il LED rosso del WiFi
#define led_WiFi_OK 4 // Pin per il LED verde del WiFi
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 0
#define UTC_OFFSET_DST 0
//------------------------------------------------------------------------------
// PARAMETRI GENERALI
//------------------------------------------------------------------------------
const char* ssid = "Wokwi-GUEST"; // SSID del WiFi
const char* password = ""; // Password WiFi
const int tryWiFi = 8; // Nr di tentativi di accesso al WiFi
const int delayConnWiFi = 1000; // millisecondi di pausa per tentativi connessione WiFi
// Dichiarazione delle costanti
const int Rete1 = 36; // Presenza Rete 1 - 220v
const int Rete2 = 39; // Presenza Rete 2 - 220v
void spinner() {
static int8_t counter = 0;
const char* glyphs = "\xa1\xa5\xdb";
LCD.setCursor(15, 1);
LCD.print(glyphs[counter++]);
if (counter == strlen(glyphs)) {
counter = 0;
}
}
void printLocalTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
LCD.setCursor(0, 1);
LCD.println("NTP non connesso. Errore");
return;
}
LCD.setCursor(0, 1);
LCD.print(&timeinfo, "%d/%m/%Y");
//LCD.println(&timeinfo, "%d/%m/%Y %Z");
LCD.setCursor(12, 1);
LCD.print(&timeinfo, "%H:%M:%S");
}
int a=0;
void setup() {
pinMode(led_WiFi_KO, OUTPUT);
pinMode(led_WiFi_OK, OUTPUT);
digitalWrite(led_WiFi_KO, HIGH); // led rosso Wi-Fi accesso all'avvio
digitalWrite(led_WiFi_OK, LOW); // led verde Wi-Fi spento all'avvio
pinMode(Rete1, INPUT_PULLUP);
pinMode(Rete2, INPUT_PULLUP);
Serial.begin(115200);
LCD.init();
LCD.clear();
LCD.backlight();
// Avvia la connessione WiFi
LCD.setCursor(0, 0);
LCD.print("Connessione WiFi...");
WiFi.begin(ssid, password);
for(a=0; a<=tryWiFi; a++){
LCD.setCursor(18, 0);
LCD.print(a);
if (WiFi.status() == WL_CONNECTED){
LCD.setCursor(0, 0);
LCD.print("WiFi OK: ");
LCD.setCursor(8, 0);
LCD.print(WiFi.localIP());
digitalWrite(led_WiFi_KO, LOW);
digitalWrite(led_WiFi_OK, HIGH);
break;
}
delay(delayConnWiFi);
}
if (WiFi.status() != WL_CONNECTED) {
LCD.setCursor(0, 0);
LCD.print("WiFi NON Connesso");
digitalWrite(led_WiFi_KO, HIGH);
digitalWrite(led_WiFi_OK, LOW);
}
else {
}
//LCD.setCursor(0, 1);
//LCD.print("Attesa orario rete");
configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
LCD.setCursor(0, 2);
LCD.print("Pompa 1:");
LCD.setCursor(0, 3);
LCD.print("Pompa 2:");
}
void loop() {
LCD.setCursor(0, 1);
printLocalTime();
//delay(250);
int statoRete1 = digitalRead(Rete1);
LCD.setCursor(8, 2);
if (statoRete1 == HIGH) {
LCD.print("220 PRESENTE");
} else {
LCD.print("ALIM.ASSENTE");
}
int statoRete2 = digitalRead(Rete2);
LCD.setCursor(8, 3);
if (statoRete2 == HIGH) {
LCD.print("220 PRESENTE");
} else {
LCD.print("ALIM.ASSENTE");
}
}