Apricancello WiFi con Wemos D1

Apricancello WiFi con Wemos D1: aprire il garage e il cancello di casa dal telefono cellulare.

Apricancello con il WiFi

Questo progettino nasce da una esigenza specifica. Dispongo di un numero limitato di telecomandi per aprire il garage e cancello di casa. Insufficiente per tutti i componenti della famiglia. Per risolvere avevo due strade; o compravo altri telecomandi oppure creavo un sistema software per aprire il cancello. Così ho scelto quest’ultima via per realizzare un apricancello WiFi con Wemos D1 come scheda hardware.

Nonostante che il costo di un telecomando fosse irrisorio, ho scelto di creare il software anche se questo implicava di spendere giorni tra sviluppo e test. Una scelta giustificata dal fatto che così non avrei dovuto ricordarmi di prendere il telecomando ogni volta che uscivo di casa. Sarebbe stato sufficiente il solo cellulare che ormai abbiamo sempre con noi a qualsiasi ora del giorno.

 Un apricancello WiFi con Wemos D1 è sicuro?

Questa è la domanda. E’ sicuro aprire le porte della propria casa tramite il WiFi? E’ meglio un sistema commerciale o un software creato ad hoc?
Quasi tutti i sistemi commerciali dispongono della sicurezza WPA2 del WiFi. Anche le schede Wemos D1 la usa. La crittografia WPA2 è bucabile solo con un attacco bruteforce. O almeno è così in questo momento. Quindi scegliendo una chiave WiFi abbastanza complessa, la sicurezza abbastanza elevata. Tuttavia è possibile aggiungere alcune accortezze per incrementarla ulteriormente. Dato che per avere successo l’attacco bruteforce ha bisogno di molte ore, se non giorni, la sua contromisura consiste nel limitare il tempo nel quale il WiFi è acceso, tramite i seguenti meccanismi:

  1. WiFi sempre spento;
  2. accensione del Wifi on demand ovvero premendo un pulsante nascosto in una zone sotto la una telecamera di sorveglianza;
  3. spegnimento immediato del wifi dopo diversi secondi di inattività;
  4. spegnimento del wifi dopo pochi minuti dall’accensione;
  5. spegnimento immediato del WiFi ad ogni Userid e Password errata;
  6. seme random per stringhe di comunicazione sempre diverse;
  7. cookies sempre diversi ad ogni utilizzo;
  8. implementato, ma per miei motivi di sicurezza è non presente in questa pagina, attivazione sirene se, dopo un certo tempo dall’apertura del varco, non si immette una password su un tastierino all’interno alla casa.

Come accennato per contrastare attacchi bruteforce alla crittografia WPA2 si riduce il tempo a disposizione dell’attaccante spegnendo il wifi.
Tuttavia ogni volta occorre riattivarlo premendo un pulsante nascosto. E’ uno svantaggio poichè per aprire il garage potrebbe succedere che dovete scendere dalla macchina mentre piove a dirotto. Comunque per lasciare sempre attivo il WiFi è sufficiente commentare le righe da 549 a 556, oppure aggiungere una attivazione del WiFi tramite un piccolo sensore PIR.

Come si attiva questo sistema di Apricancello WiFi con Wemos D1?

Schermate visualizzate su un telefono Android. In primo piano i pulsanti, Dietro la schermata di autenticazione.

Quando volete entrare in casa, accendete il WiFi premendo il pulsante nascosto sotto l’inquadratura delle telecamere e da qualsiasi dispositivo che abbia un browser internet (tablet, cellulare, notebook, autoradio ecc…) accedete alla rete. Digitate nel browser l’indirizzo http:\\1.2.3.4 (modificabile tramite la stringa IPAddress apIP(1, 2, 3, 4); nello sketch allegato)  per accedere alla pagina di logon.
Ora se immette l’utente e password corrette si accede alla pagina con i pulsanti (vedi figura schermata a destra) per aprire i vari varchi (garage, cancello, cancelletto). In caso di password sbagliate e/o url artefatte, si spegne il WiFi. Tra i pulsanti visualizzati ne è presente anche uno dedicato a spegnere il WiFi appena non ci serve più.

Materiale necessario per questo apricancello WiFi con Wemos D1:

Schema di collegamento delle schede Wemos D1 con i moduli relè per realizzare l'apricancello WiFi

Apricancello WiFi con Wemos D1: Collegamento schede

  • Scheda Wemos D1 (funziona come una scheda Arduino, ha un numero limitato di pin utilizzabili ma ha il WiFi a bordo).
  • Uno spezzone di filo, da utilizzare come antenna, da collegare al pin analogico A0. In questo modo il valore rilevabile è pressoche casuale e viene usato come seme per la funzione random.
  • Due schede Rele per Arduino da 2 rele (come in figura a destra) o una da 4 rele. Acquistabile su internet.

 Particolarità

  • Collegamento pulsante dell'apricancello con Wemos D1Per spegnersi il sistema utilizza uno dei relè. Quando si preme il pulsante nascosto si fornisce energia alla scheda Wemos. Questa immediatamente attiva il relè  i cui contatti, in parallelo al pulsante nascosto mantengono l’alimentazione anche quando il pulsante viene rilasciato. Con questa modalità lo scketch ha il controllo anche della sua alimentazione ed è in grado di toglierla sia per i motivi di sicurezza già citati (password errate, timeot vari) e sia per non sprecare energia.
  • La scheda Wemos attiva le serrature tramite una scheda relè. Esistono in commercio tipi di scheda relè che si attivano a 0V ed altre a 5V. Pertanto è stata intodotta la variabile TipoAttivazioneRelay che permette di avere avere sul pin di uscita del Wemos la giusta tensione di eccitazione per ogni tipo di scheda rele. Impostando TipoAttivazioneRelay a 1 ila scheda Wemos invierà ai propri pin il valore 1 per attivarli  e 0 per rilasciarli. Se, invece, impostata a 0 invierà 0 per atttivare i rele e 1 per diseccitarli. Nel caso dei moduli rele visibili nella figura sopra, è necessario impostare TipoAttivazioneRelay = 0. Se anzichè di un modulo relè utilizzate un transistor per pilotare i relè,  allora solitamente il valore di TipoAttivazioneRelay dovrà essere 1 se lo pilotate con un transistor NPN, 0 se è PNP.
  • Ogni url intermedio che il programma utilizza, ad esempio quelli per comprendere il pulsante premuto, ha inglobata una stringa casuale, diversa ogni volta e valida solo per quella sessione.

Video: “Apricancello WiFi con WeMos D1” in azione

Personalizzare lo sketch:

Seguendo lo schema, e caricando lo sketch, il sistema si comporta come visibile nel video. Se volete metterlo all’opera personalizzandolo, dovrete agire sulla variabili const char* ssid = “WemosD1”;  e const char* password = “WemosD1Key”; la prima per cambiare il nome della rete WiFi e la seconda per la password della rete. Potete anche cambiare l’url di accesso alla pagina principale http:\\1.2.3.4 tramite la stringa IPAddress apIP(1, 2, 3, 4); nella quale  potete cambiare solo i 4 numeretti dentro le parentesi. Valori validi da 0 a 255.

Licenza

Questo sketch è distribuito in licenza Postcardware (o cardware), ovvero liberamente utilizzabile a condizione morale che mi spediate una cartolina postale (o una email) dal punto dell’universo in cui siete e che citate il link di questa pagine e autore nei commenti del programma.

Download sketch per Apricancello WiFi