l'architettura del sistema

Il sistema OpenDomotica prevede le seguenti componenti:

  • nodo PLC: è una centralina basata su microprocessore ATMel programmato con firmware OpenDomotica, che si occupa di gestire utenze (luci, prese, motori, caldaia, irrigazione, cancelli, etc.) e di campionare il valore di sensori o lo stato di pulsanti/interruttori. Ogni nodo è owner di una parte dell'impianto elettrico e prevede una propria logica indipendente di gestione dei dispositivi cui è connesso.
  • supervisore: è un server che si occupa della gestione delle logiche più complesse di funzionamento dell'impianto, oltre che a fornire l'interfaccia utente per dispositivi mobili quali tablet, smartphone, personal computer, etc.
  • interfaccia utente: è un dispositivo che consente all'utente di interagire con il proprio impianto domotico. Può essere un tablet (iOS o Android), uno smartphone (iOS o Android) o un personal computer (con qualsiasi sistema operativo).

Tutte le componenti del sistema dialogano tra loro utilizzando un bus di comunicazione basato sulla classica interfaccia Ethernet e/o WiFi. Questo consente un alto livello di integrazione con qualsiasi dispositivo anche esterno all'impianto (es. sistemi MediaCenter, TV di ultima generazione, etc.)

il nodo domotico

Un nodo OpenDomotica non è altro che una centralina che incorpora un microprocessore ATMel (come Arduino) programmato con il firmware OpenDomotica. Tale firmware si occupa di gestire l'interfaccia di comunicazione con la rete (altri nodi / supervisore), ma anche di gestire una propria logica locale che viene configurata sulla EEPROM del processore stesso.

Per quanto riguada l'aspetto hardware, ogni nodo prevede anche i seguenti dispositivi:

  • interfaccia di comunicazione: attualmente la comunicazione avviene su bus Ethernet cablato (attraverso Arduino Ethernet Shield), ma potenzialmente l'interfaccia di comunicazione può essere modificata secondo le esigenze di cablaggio (wifi, wireless 433 Mhz, RS485)
  • multiplexer uscite: consente di collegare ad un singolo nodo molte utenze, superando il limite di porte di input/output del microprocessore. A valle del multiplexer (basato su chip 74HC595) è connesso un driver di potenza che consente di connettere le uscite agli attuatori che si interfacciano direttamente con i dispositivi da gestire.
  • attuatori: gli attuatori per interfacciare il sistema con i dispositivi esterni possono essere relè meccanici o allo stato solido (basati su triac). E' inoltre possibile comandare direttamente dispositivi che lavorano a bassa tensione (es. barre di LED, lampade alogene, segnalatori di allarme, elettrovalvole, etc.). Per i dispositivi ad alta potenza è inoltre prevista l'integrazione, a valle del relè, di un contattore.
  • multiplexer ingressi: così come per le uscite si verifica spesso l'esigenza di collegare molti pulsanti allo stesso nodo. Il multiplexer di input, consente quindi di espandere le porte previste dal microprocessore.

il sistema d'allarme

L'aspetto legato alla sicurezza è affidato ad una centralina sempre basata su microprocessore ATMel (ATMega2560), ma con un firmware ad-hoc. Questa centralina è direttamente connessa con tutti i sensori antintrusione distribuiti nell'appartamento (PIR, contatti, etc.), ma anche con i dispositivi di segnalazione (sirene, combinatore telefonico, etc.).

Il microprocessore analizza continuamente lo stato di tutti i sensori e, qualora il sistema è attivo (armato) e rileva un'intrusione, attiva la segnalazione sonora e la chiamata tramite il combinatore. Inoltre qualsiasi evento si verifichi su un sensore (anche a sistema non attivo), questo viene comunicato al supervisore domotico per consentirgli di attuare logiche anche legate allo stato dei sensori di antintrusione (es. accensione di una luce al passaggio davanti ad un PIR, o segnalazione di una finestra dimenticata aperta).

L'attivazione/disattivazione dell'impianto è effettuabile tramite radiocomando, token RFID o da remoto tramite l'interfaccia utente domotica che, tra l'altro, consente anche di verificare in ogni momento lo stato di funzionamento di tutti i sensori e della centrale.

il network

Per consentire la comunicazione tra i vari nodi si è scelto di utilizzare il bus Ethernet cablato. Tale scelta è stata fatta principalmente per la semplicità di utilizzo di tale infrastruttura (hardware Ethernet Shield e librerie software già pronte per Arduino), ma anche perché, di fatto, è diventato lo standard di comunicazione tra dispositivi (es. televisioni, sistemi home theater, lettori blu-ray, telefonia VoIP, etc.). E' un bus collaudato, maturo e tutto sommato anche economico (basti pensare che uno switch costa oramai 10 Euro). E' un bus molto veloce e che consente tempi di risposta assolutamente impercettibili per un uso come la domotica che di fatto veicola pochissimi dati.

E' previsto però, l'utilizzo anche di un bus RS485 necessario al funzionamento della centrale d'allarme ed il suo interfacciamento con dispositivi esterni (es. l'inseritore). La scelta di un bus separato è stata determinata dalla volontà di creare un canale di comunicazione prioritario per il funzionamento di un dispositivo che di fatto gestisce tematiche importanti come la sicurezza. La comunicazione tra i due bus è consentita tramite un nodo gateway che consente ai dispositivi di dialogare tra loro indipendentemente dal bus sul quale sono connessi.

Inoltre è in fase di studio l'integrazione nel network di un sistema di comunicazione wireless per garantire ai nodi difficili da raggiungere tramite cablaggio di essere comunque integrati nel network.

il server

Il software OpenDomotica lato server è sviluppato in PHP e funziona attraverso Web Server Apache e DBMS MySQL.

I servizi forniti dal server si possono suddividere principalmente in tre parti:

  • infrastruttura per i nodi: fornisce tutti i servizi di interfacciamento con i nodi del network domotico. Consente quindi ai nodi di inviare i propri aggiornamenti di stato e/o valori dei sensori, e si occupa inoltre di interagire con i nodi stessi inviando ad essi dei comandi.
  • infrastruttura per i client: fornisce l'interfaccia Web consultabile tramite dispositivi tablet, smartphone e personal computer.
  • processi di sistema: gestisce tutti i processi di sistema che svolgono logiche avanzate (es. gestione dei consumi, prevenzione distacco utenza per consumo elevato, etc.)

La peculiarità del server OpenDomotica è che, pur essendo fulcro del sistema, non è indispensabile al suo funzionamento!!! Infatti, qualora il server sia offline per qualsiasi motivo, le funzionalità base del sistema sono comunque garantite in quanto i nodi hanno la propria logica indipendente.

l'interfaccia utente

L'interfaccia utente di OpenDomotica è pensata per essere estremamente user-friendly, ma che consenta all'utente più smaliziato di utilizzare funzioni avanzate.

E' pensata per essere utilizzata facilmente con le dita e quindi su dispositivi mobili quali smartphone e tablet, ma è perfettamente compatibile con qualsiasi personal computer dotato di browser Web in quanto, di fatto, si tratta di una Web Application.

E' realizzata con le più moderne tecnologie di programmazione quali: HTML5 & CSS3, jQuery per l'interfaccia utente, Web Socket & JSON per ricevere il costante aggiornamento dello stato del sistema dal server.