Ciao a tutti, ho realizzato un piccolo switch con un ESP-01 e una scheda relè.
Siccome mi serve a resettare il router quando si blocca, ho scritto un banale codice che si basa sulla funzione:
WiFi.HostByName(indirizzo, output)
Cioè se risolve un indirizzo target che si presume abbia un uptime del 100%, allora la connessione è attiva.
Ho impostato time.google.com come target, la routine loop:
if (wifi.hostbyname(“time.google.com”, OUT)
serial.print(OUT);
else
RESET
Il modulino si collega, lo vedo, lo pingo, tutto ok, ma la condizione è sempre verificata, anche se stacco la connessione internet lasciando il wifi attivo, quindi stampa all’infinito l’indirizzo che ha risolto anche se non ha connessione per risolverlo.
Ho provato anche a confrontare il risultato con l’indirizzo IP di Google Time, e funziona, ma se varia l’IP per qualche motivo, addio.
Potrei anche usare la funzione PING ma la 8266 non l’ha, ho montato una libreria che la aggiunge ma niente da fare, pinga sempre anche a connessione spenta.
Mi servirebbe una soluzione per verificare che un certo indirizzo sia raggiungibile.
Ho trovato molti esempi in rete, li ho adattati ma non riesco lo stesso.
Grazie e saluti.
AGGIORNAMENTO:
Ho utilizzato una libreria per la funzione PING, sembra funzionare anche se non riesco a trovare riferimenti su variabili passate e ricevute e a come si usa negli sketch. Trovo solo esempi ma non facili da decifrare.