Cosa è la domotica

Si parla sempre di più di domotica (oppure di IoT - Internet of Things), in quanto è un settore in forte crescita. La domotica in poche parole si può definire come la possibilità di:
  • controllare a distanza (da remoto, ovvero fuori casa, da qualsiasi parte del mondo) quello che accade in casa (ci sono persone? Ho lasciato qualche luce accesa?)
  • comandare apparecchi ed elettrodomestici (accendere e spegnere luci ad esempio) attraverso un dispositivo elettronico (cellulare, tablet, pc)
  • effettuare operazioni automatiche in base ad alcuni criteri (accendere le luci del giardino quando fa buio, illuminare una stanza se si rilevano dei movimenti in certi orari, ecc)
  • rendere disponibili dei dati statistici (eventualmente con grafici) sulle informazioni che vengono raccolte nell'ambiente monitorato (grafico delle temperatura durante il giorno, grafico dei consumi elettrici, ecc)

Il mio sistema di domotica

Premetto che il sistema di domotica che ho realizzato è funzionante, quindi le cose che scrivo non sono semplice teoria, ma cose pratiche e testate. Se alcune funzioni non sono ancora implementate ma esistono solo a livello di progetto, lo dirò in modo esplicito. Considero il mio sistema una versione beta, in quanto ci sono ancora molte funzioni che vorrei aggiungere.

Il sistema di domotica è composto dai seguenti componenti:
  • Un nodo centrale dove gira l'interfaccia con l'utente, che colloquia con gli altri nodi per lo scambio di informazioni
  • Dei nodi periferici che si interfacciano con l'harwdare del sistema domotico (sensori, relè, ecc)
  • Un'infrasruttura di rete che collega tutti gli elementi sopra descritti

Specfiche hardware

Nodo centrale

Il nodo centrale è costituito da un mini pc (nel caso specifico un Raspberry Pi 3) collegato via cavo alla rete della domotica. Chiaramente ha un indirizzo IP statico. Questo nodo costituisce il cuore della domotica. Sono installati i seguenti servizi:
  • Web server (Apache): l'interazione con la domotica avviene attraverso una interfaccia web (scritta in PHP)
  • Database (MySQL): qui vengono salvati dati e impostazioni del sistema
  • Script CRON: per la gestione delle operazioni automatizzate e programmate
  • Broker MQTT: permette lo scambio dati tra i nodi attraverso delle code con la tecnica della pubblicazione e ascolto delle code stesse (questa caratteristica è attualmente in fase di sviluppo)

Nodi domotici

I nodi domotici costituiscono la parte operativa della domotica, ovvero chi esegue i comandi e chi legge i dati provenienti dal mondo circostante. Sono costituiti dai moduli wireless ESP8266, che si programmano come gli Arduino (tramite lo stesso IDE). L'ESP8266 fornisce l'hardware di base per poter interagire con sensori e altri componenti, attraverso i suoi pin di I/O. L'hardware ha delle limitazioni che si possono superare senza molti problemi con l'utilizzo di componenti elettronici. In particolare utilizzo:
  • Integrato PCF8574 per aumentare il numero degli input (I/O) digitali gestibili dalla scheda
  • Board ADS1115 per eseguire delle precise letture di valori analogici (sensori che trasformano un valore letto - temperatura ad esempio - in tensione)
  • Board PCA9685 per poter gestire delle uscite in PWM (per variare la luminosità di led oppure per comandare dei motori)
I nodi domotici sono equipaggiati con un firmware scritto ad hoc che nella maggior parte dei casi permette di gestire il nodo e i componenti ad esso connessi senza apportare modifiche al codice. Alcuni nodi specializzati hanno un firmware personalizzato per la gestione delle funzioni specifiche, ma che ingloba tutte le funzionalità del nodo base.