La domotica fai da me

Progetto aggiornato il 05/05/2022

Progetto abbandonato: il progetto si basa su Python 2, ormai abbandonato e su una libreria che si interfaccia con le API Telegram che è stata abbandonata anche lei. Non è più produttivo a casa mia, è stato sostituito da Home Assistant, resta solo la parte di antifurto. Lascio tutto qui per scopi didattici.

Cos’è?

La domotica fai-da-me è un sistema basato su Raspberry Pi e che funziona su qualunque PC che abbia Linux, che controlla casa e funge da antifurto, se qualcosa si muove davanti alla telecamera, quando il sistema è attivo, arrivano le foto del movimento su Telegram. Con una serie di espansioni registra anche temperature, consumi elettrici e altri eventi della casa.

E’ tutto basato su rete WiFi, quindi non ci sono cavi e fili da aggiungere in casa.

Perché me lo sono sviluppato io

Sul mercato ci sono decine di prodotti che assolvono allo stesso compito. Compri una videocamera, installi un’app e tutto funziona alla perfezione, senza fatica né problemi. Ma non era la strada che volevo percorrere. Ecco qualche motivazione.

Ho imparato un sacco di cose

Quando ho pensato di costruirmi il sistema avevo un sacco di voglia di studiare e avevo pronto nel cassetto, guarda caso, una scheda Raspberry Pi e una videocamera senza filtro IR che mi aveva regalato mia moglie.

Realizzando questo progetto ho imparato molte cose interessanti:

  • Programmare in Python (da zero)
  • Usare librerie per interagire con Twitter e Telegram
  • Usare un po’ meglio Linux
  • Usare SQLite
  • Le schede SD sono davvero davvero dei supporti pessimi
  • Gestire un flusso video e file immagini
  • Come configurare e usare una VPN a casa
  • Fare backup via script su Google Drive
  • Usare il protocollo MQTT specifico per le reti di Oggetti
  • … e ancora altre cose

Non sono dipendente da servizi che potrebbero fallire o chiudere

Nel 2015 Google ha comprato un sistema di gestione della casa domotica, Revolv, ha smesso di venderlo e dopo un anno e un giorno ha spento i server. Tutti i clienti hanno visto “morire” qualunque tipo di automazione in casa propria.

Il mio sistema non dipende da nessuno di questi servizi cloud, nessuno può decidere che a un certo punto la mia casa debba smettere di funzionare. Dovesse chiudere Telegram, passare ad un altro sistema non richiede che poche ore di lavoro (ho fatto il passaggio da Twitter a Telegram in mezza giornata).

Sono al sicuro

Il sistema, per poter funzionare, interagisce con i server di Telegram. Tutta la comunicazione avviene dalla rete di casa mia verso l’esterno, quindi non ho dovuto configurare dei portforwarding dall’esterno verso la rete. Questo mi permette di tenere il sistema al sicuro (fino a quando Telegram sarà sicuro) da attacchi esterni.

Per poter disattivare il sistema senza che io me ne accorga, un malintenzionato deve violare il mio account Telegram o il mio telefono, insomma, non proprio attività semplici e silenziose.

I dati sono miei

Siamo d’accordo, Google, Amazon, Apple o il “dio del cloud” (li chiamano GAFAM) non mi potranno ricattare a causa delle temperature di casa mia, ma a me dà fastidio che un servizio qualsiasi possa fare dei soldi sui miei dati, senza dare nulla a me. Parlo di soldi, non servizi. Quindi tutti i dati stanno sul Raspberry e non se ne vanno in giro (a parte i backup ovviamente)

E’ facile da usare

Date l’accesso alla chat della vostra casa alla nonna, che usa Telegram/Whatsapp per farsi mandare le foto di quando siete al mare; con 2 tap (davvero, solo due!) può accendere o spegnere l’antifurto, è facilissimo da usare.

Ok, ma quindi, come funziona?

La domotica-fai-da-me è un sistema facilmente espandibile basato su una centralina di controllo sviluppata in Python e attiva in un Raspberry Pi.

Raspberry Pi (o un PC linux, io uso un Intel NUC dal 2018): fa da accentratore di tutto il sistema, ha un Bot Telegram che viene usato per controllare i dispositivi e mandare allarmi. Ha un DB dove vengono salvati i dati dei sensori. A lui è collegata la videocamera che fa da videosorveglianza (è comodo, ma non è obbligatorio, può farlo anche usando una telecamera di rete o USB all’interno della casa).
Tutti i comandi da inviare al sistema passano da Telegram.
Avvisa su Telegram in caso di movimento se attivo l’antifurto e in caso di superamento soglia di consumo istantaneo della corrente. Può avvisare praticamente per qualsiasi evento.
Genera, a piacere, report della situazione della casa.
Riceve tutti i dati dai sensori via WiFi, quindi niente fili che girano per casa.
Il Raspberry Pi non è obbligatorio, va bene una qualunque altra schedina o un PC con Linux.
Volendo si può usare la nuova versione del sistema di comunicazione, basato su protocollo MQTT, che va molto meglio della chiamata http GET. Come prima cosa si deve installare e configurare il broker con Mosquitto, poi si deve fare in modo che i dati vengano registrati sul DB

Sensore di consumo della corrente: legge il consumo istantaneo di corrente all’interno dell’appartamento. L’installazione non è invasiva e non necessita di scollegare i cavi della 220V (che è pericoloso). Visualizza il consumo istantaneo su un display e invia le letture alla centralina, in modo che possa archiviarle ed elaborarle. E’ utile per avvisare di assorbire meno energia se si supera la soglia oltre la quale il contatore viene staccato. Permette di risparmiare, sapendo quanto si consuma ogni giorno, si può capire come intervenire e spendere meno. Il sistema è stato migliorato e reso più economico usando le schede WeMos.

Sensore di temperatura: possono essere più sensori messi in giro per casa, anche all’esterno. Funzionano a batteria (3 pile AA durano 4 mesi circa) e invia la lettura della temperatura ad intervalli regolari (ogni 30 minuti, tipicamente) alla centralina, che li archivia.
Sto sviluppando un sensore con una batteria LiPo, con l’intenzione di estendere la durata a circa un anno.

Sensore di temperatura acqua: lo uso per l’acquario dei pesci, funziona al pari dei sensori di temperatura ambiente, ma ha un display e quindi va alimentato dalla corrente e non a batteria. Ovviamente il sensore di temperatura è impermeabile. Questo progetto è in arrivo

Display e informazioni colorate: è possibile aggiungere un display (io ne ho uno e-ink) per visualizzare le informazioni della casa come temperature e quantità di corrente consumata nel giorno. Ho aggiunto anche dei punti luce colorati che possono cambiare colore a seconda di temperature lette o altri eventi.

Comandi remoti: usando dei semplici relè è possibile comandare tramite il bot Telegram qualunque tipo di carico usato in casa. Una lampada, una pentola elettrica o qualunque altro dispositivo. Questo progetto è in arrivo

Controllo per blackout: una scheda collegata ad Internet tramite una SIM dati avvisa quando c’è un blackout sulla rete elettrica, in modo che sia indipendente dalla connettività di casa. Usa i SMS così non è dipendente da servizi che possono essere fermi nel momento sbagliato.

Bello, ma è davvero sicuro?

Ho studiato e ho sperimentato un po’ per capire il livello di sicurezza. Secondo me lo è parecchio.

  • Telegram è un sistema sicuro di per sé, è veramente difficile farsi rubare l’account da un malintenzionato (se qualcuno fa accesso con il numero di telefono di un altro, questo viene immediatamente allertato e soprattutto l’attivazione prevede che ci sia un codice inviato all’account telegram principale)
  • Se un malintenzionato stacca la corrente a casa il sistema avvisa del blackout e resta attivo per parecchio tempo in quanto è collegato ad una batteria che tiene acceso lui e la connessione ad Internet.
  • Se manca Internet per un guasto al provider è ovviamente necessario avere una connessione di backup per essere avvisati

Per i più interessati, questo è lo schema a blocchi di tutto il sistema

Dai, voglio anche io questo sistema! Lo vendi?

Questo progetto è Open Source, puoi scaricare le informazioni e realizzarlo per conto tuo, adattandolo alle tue esigenze.

Per ogni singolo componente trovi (o troverai a breve) un post su questo sito che ne descrive il funzionamento e la configurazione, se sei abbastanza “smanettone” puoi partire da lì.

La consultazione dei post con le indicazioni è completamente gratuita

Il progetto è rilasciato con licenza GPL V.3 (Open Source), quindi puoi prenderlo, fartelo a casa, modificarlo e pubblicarlo a nome tuo. Se lo condividi modificato devi citare questo sito (www.iltucci.com) come fonte principale.