Quando il router si pianta mentre sei in vacanza…

TL;DR avete mai provato l’ebbrezza del vostro router che si pianta durante le vacanze, tagliandovi fuori dalla domotica di casa?

Forse non vi è mai capitato (e siete stati fortunati!) ma una delle cose che trovo più frustranti è quando si pianta il router della Vostra rete casalinga mentre siete fuori casa, magari in vacanza.

Il blocco del router renderà impossibile magari vedere le telecamere di sorveglianza, consultare lo stato della domotica casalinga e molto altro, tutti aspetti sempre più presenti nelle nostre case.

Ho un router con OpenWrt dove, tra le altre cose, ho abilitato anche il watchdog. Ma sappiamo bene che un watchdog software può poco contro blocchi importanti come un kernel panic, dove l’unica soluzione è proprio spegnere e riaccendere il router.

Così, giocando con Arduino e gli ESP8266, mi son chiesto se non potessi realizzare qualcosa che verifica periodicamente lo stato della Rete e, in caso di problemi, riavviare automaticamente il dispositivo.

Prima di procedere con la scelta dell’hardware adatto, c’è da considerare un aspetto cruciale: il router funziona a 12V mentre gran parte delle schede con ESP8266 lavorano a 5V. Certo, potrei usare un alimentatore separato ma così aggiungo un ulteriore elemento di possibile fault: meglio lavorare con il medesimo alimentatore a 12V, usando un DC-DC converter per ottenere i 5V necessari.

Dopo una serie di tentativi frustranti con alcune schede (tra cui una relay board con ESP-01…) che avevo a disposizione, trovo in fondo ad una scatola una board HW 622 che fa al caso mio: ha già a bordo un ESP8266, un relay sul GPIO4, un eventuale ingresso optoisolato (che non useremo, al momento) ma soprattutto un DC-DC converter incorporato che accetta alimentazione ai 7V fino a 30V!

HW 622 board relay

Fonte: https://ayatec.eu/introducing-relay-module-hw-622/

Tra gli aspetti negativi, come potete vedere dalla foto, è la mancanza di una porta USB per la programmazione. Questo obbliga ad usare un adattatore USB-to-TTL, un oggetto da pochi euro che però si rivela essenziale in diverse occasioni, come questa.

Il collegamento dei fili è fondamentale per programmare la scheda HW 622: GND è la massa comune, mentre RX in uscita dall’adattatore va al TX della scheda, così come il TX va all’RX. Attenzione perché per abilitare la programmazione dell’ESP8266 va ponticellato il “flash jumper” subito sotto. Altra cosa, la scheda va alimentata via VIN con almeno 7V (meglio 12V) altrimenti non riuscirete a farla funzionare correttamente.

Il firmware che ho scritto allo scopo lo trovate a questo repo su Github: https://github.com/michelep/ESP8266_Watchdog

Avendo una istanza di Home Assistant, ho voluto interfacciarlo via MQTT per poterlo controllare anche da remoto (ad esempio, per forzare un riavvio).

Prima di compilarlo e caricarlo sul modulo ESP8266, dovere modificare le variabili di configurazione per adattarlo al Vostro contesto:

const char* ssid = "";
const char* password = "";

const char* mqtt_server = "";
const int mqtt_port = 1883;
const char* mqtt_user = "";
const char* mqtt_password = "";

In sostanza, il firmware si connette alla rete WiFI casalinga ed effettua tentativi di connessione periodici ai 3 server DNS elencato (Google, Cloudflare e OpenDNS): se tutti e tre falliscono per 10 volte, si presume che la connettività sia ferma e quindi procede ad un riavvio del router eccitando il relay.

Potete cambiare i server DNS modificando gli IP in questa matrice:

const char* dns_servers[] = {
"8.8.8.8", // Google
"1.1.1.1", // Cloudflare
"208.67.222.222" // OpenDNS
};

Il codice è comunque piuttosto semplice. Una volta caricato con successo questo firmware, eventuali aggiornamenti potete farli via OTA, senza dover nuovamente impazzire con gli adattatori seriali.

Hai trovato utile questo articolo?

Questo articolo è stato visto 15 volte (Oggi 15 visite)
Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.