domotica
Recensione del progetto Opendomotica, con materiale dal loro sito:
Contributo inviato in privato da Donato Taddei, 01\10\2014, h. 14.53.

http://www.opendomotica.it
Mi sembra che questi ragazzi lavorino bene e vadano nella giusta direzione.
      Donato Taddei
...la domotica Open con Arduino!!!
home
il progetto
la tecnologia
docs
faq
contatti
cos'
OpenDomotica  un ecosistema di automazione domestica che consente di gestire in modo ottimale le 
risorse della propria abitazione: dall'illuminazione degli ambienti all'impianto di riscaldamento e 
raffrescamento, dall'irrigazione di piante e giardini al sistema di allarme.
L'idea di OpenDomotica  quella di cercare di colmare alcune delle principali lacune delle 
tecnologie attualmente in commercio, tra cui la scarsa apertura a sistemi esterni e la 
centralizzazione della logica di gestione.
I principali vantaggi di OpenDomotica:
? decentralizzazione della logica di gestione per ridurre al minimo i disagi in caso di 
malfunzionamento di una parte del sistema
? bassi costi di installazione grazie alla possibilit di essere adattato all'impianto esistente ed 
alla possibilit di utilizzare componenti comuni (pulsanti, prese, etc.)
? modularit del sistema che pu essere ampliato in ogni momento secondo le necessit
? molteplicit dei bus di comunicazione per meglio adattarsi ad ogni esigenza (ethernet, wifi, 
wireless 433MHz, RS485)
? API di interfaccia e protocolli di basso livello aperti per permettere ad ognuno di creare la sua 
domotica
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.

l'obiettivo
OpenDomotica ambisce ad abbassare la soglia di ingresso per i sistemi di automazione domestica, 
sostanzialmente, quindi, l'idea  di sviluppare un prodotto low-cost, maturo ed affidabile da poter 
essere installato in ogni ambiente abitativo.
L'idea  quella di mettere insieme una community di collaboratori che contribuiscano attivamente 
alla realizzazione di quanto ad oggi  ancora mancante.
Una community apporterebbe forza ed idee nuove ad un progetto fin ora sostenuto da soli due 
sviluppatori. Non crediamo di aver inventato l?acqua calda, ma siamo convinti, e molti esempi oggi 
ce ne danno conferma (ad esempio lo stesso Arduino), che la collaborazione possa essere l?unica 
vera strada praticabile.
Se pensi di avere le competenze necessarie, sei appassionato dell'argomento ed hai voglia di 
partecipare a questo progetto, clicca qui.
la filosofia open
Il concetto alla base di OpenDomotica  quello di implementare una rete integrata di componenti 
hardware e software che consentano la gestione di un impianto domotico tutta basata su prodotti 
Open Source. Infatti la piattaforma adottata per lo sviluppo dei nodi (hardware)  Arduino, mentre 
la parte software  affidata all'infrastruttura Apache / PHP / MySQL che, tra l'altro,  
completamente portabile su qualsiasi sistema operativo.
Sono inoltre previste alcune API che consentono, all'eventuale utente esperto che vuole effettuare 
delle personalizzazioni, di aggiungere funzionalit, modificare quelle esistenti, implementare 
nuovi processi, integrare nuovi dispositivi autocostruiti o non previsti da OpenDomotica. Un 
esempio di ci che  attualmente in via di realizzazione,  l'interfacciamento con il sistema di 
Media Center XBMC.
chi siamo
OpenDomotica nasce nel giugno del 2009 dal desiderio di Dario Principia, perito informatico, di 
voler predisporre l'impianto elettrico della propria abitazione con qualche feature in pi rispetto 
ad un impianto tradizionale: un impianto domotico.
Armato di Google, inizia ad informarsi sui prodotti esistenti e a farsi fare alcuni preventivi, 
tutti decisamente fuori budget e ognuno carente di qualcosa. Da esperto di elettronica ed 
appassionato di tecnologia in tutti i suoi aspetti, Dario si chiede: perch non realizzare un 
impianto personalizzato?
E' approfondendo quest'idea che spunta fuori il nome di Arduino. Dopo aver preso le prime 
informazioni dal sito e dalla community, Dario contatta subito Daniele Rongione, anche lui esperto 
ed appassionato di elettronica ed informatica, che accetta immediatamente la sfida e decide di 
partecipare alla realizzazione del progetto.
Infatti, da l a poco, l'idea si trasforma in un progetto ben delineato e si passa direttamente 
alla fase di realizzazione del prototipo, di pari passo con l'installazione dell'impianto dentro la 
casa.
Dal marzo del 2010 l'impianto  operativo, in costante sviluppo e crescita dopo i primi inizi con 
funzioni minimali.
lo stato di avanzamento
Di seguito gli step d'avanzamento del progetto:
? Giugno 2009 - nasce l'esigenza e l'idea di OpenDomotica!!!
? Agosto 2009 - ultimato lo studio di fattibilit, identificate le componenti del sistema e le 
modalit di integrazione, iniziano i lavori.
? Dicembre 2009 - lavori di realizzazione ed installazione ultimati. Inizia lo sviluppo del 
software.
? Marzo 2010 - rilascio in produzione della primissima release del software: i nodi del sistema 
iniziano a funzionare, l'operativit  molto basilare (non esiste ancora nemmeno l'interfaccia 
utente), ma  possibile utilizzare l'impianto attraverso i pulsanti a muro. Questo consente una 
prima fase di test del sistema sul campo.
? Ottobre 2010 - da marzo ad ottobre 2010 vengono affinati tutti i dettagli emersi durante i test 
sull'abitazione, tra l'altro effettuati giorno per giorno con l'utilizzo reale. Vengono aggiunte le 
funzionalit al sistema, tra cui la prima interfaccia utente, anche se estremamente scarna e 
statica, nonch la gestione manuale del riscaldamento visto l'inverno alle porte.
? Febbraio 2011 - vengono integrati alcuni sensori quali: consumo elettrico istantaneo, temperatura 
degli ambienti.
? Aprile 2011 - in occasione dell'Arduino Day, viene ultimata e messa in produzione una nuova 
interfaccia utente appositamente studiata per iPad.
? Giugno 2011 - il progetto subisce una fase di "stallo" dovuta allo sviluppo del firmware dei 
nodi: la RAM sulla CPU di Arduino scarseggia e le nuove implementazioni non sono fattibili. Da quel 
momento inizia una prima fase di analisi del problema che evidenzia la necessit della 
realizzazione di un nuovo firmware pi parco in quanto ad uso di memoria RAM e pi modulare per 
consentire la gestione di funzionalit come: interfacciamento con dispositivi complessi (es. motori 
finestre) e sensori, possibilit di utilizzare bus di comunicazioni diversi da quello Ethernet.
? Settembre 2011 - mentre i lavori per il rifacimento del firmware sono in corso, inizia lo 
sviluppo di una nuova interfaccia utente con grafica pi attuale, pi informazioni e tecnologia 
d'avanguardia (quali jQuery, reverse AJAX) e con l'integrazione di piantine disegnate in computer 
grafica per rappresentare gli ambienti. Interfaccia sempre web e compatibile con dispositivi mobili 
di ogni genere: tablet iOS & Android, smartphone iOS & Android, personal computer.
? Gennaio 2012 - la nuova interfaccia utente  conclusa ed entra in produzione, mentre il nuovo 
firmware, da poco ultimato, entra in fase di test.
? Aprile 2012 - OpenDomotica partecipa nuovamente all'Arduino Day, presentando anche, in anteprima, 
un nuovo prototipo di cronotermostato domotico.
? Settembre 2012 - concluso e messo in produzione il nuovo firmware che prevede un sostanziale 
risparmio di occupazione della RAM ed una maggiore facilit di integrazione di nuove componenti 
software.
? Novembre 2012 - iniziato lo sviluppo di una nuova App nativa per Smartphone Android.
? Dicembre 2012 - migrazione della parte server da tradizionale PC al nuovo Raspberry PI, 
componente che stiamo valutando di integrare sempre di pi nel nostro sistema.
? Febbraio 2013 - messa in produzione dell'interfaccia utente "Dashboard" che  sostanzialmente un 
pannello di controllo super-utente.
? Aprile 2013 - OpenDomotica partecipa nuovamente all'Arduino Day presentando la prima versione

Il progetto OpenDomotica nasce dopo una prima analisi delle soluzioni domotiche gi esistenti e 
consolidate sul mercato; i maggiori problemi emersi sono stati l?elevato prezzo dei materiali e la 
scarsa espandibilit verso altri componenti non direttamente supportati, da qui si  scelto di 
cercare innanzitutto una soluzione a questi due aspetti.
La scelta dell?hardware domotico  ricaduta sulla piattaforma Arduino, sia per il suo basso costo, 
sia per la semplicit nella programmazione e sia per la fiorente comunit che vi ruota intorno 
(senza trascurare il fatto che si tratta di un progetto tutto Italiano), mentre per prese, punti 
luce e pulsanti a muro si pu mantenere quanto gi presente in loco, con piccoli adattamenti nel 
cablaggio, in quanto possono essere utilizzati modelli provenienti da qualsiasi serie commerciale 
per impianti domestici, senza la necessit di un nuovo acquisto di materiale ad hoc.
Un?installazione OpenDomotica prevede l?impiego di uno o pi nodi domotici, a seconda delle 
dimensioni e della disposizione dell?impianto elettrico eventualmente esistente, e di un pc-server, 
collegati tra loro tramite una comune rete Ethernet. Ai nodi domotici vengono collegati i pulsanti 
dell?impianto, che saranno l?interfaccia principale utilizzata in casa, e una serie di rel che 
comandano le utenze (prese o luci).
Uno dei punti chiave del progetto  la decentralizzazione della logica di gestione, per evitare che 
il malfunzionamento di una parte del sistema infici il funzionamento del resto. Per ottenere questo 
risultato,  necessario che, in ogni nodo domotico, venga programmata una logica di base locale che 
gli consente di gestire autonomamente ci che ad esso  direttamente collegato, anche qualora il 
nodo venga isolato dagli altri o il server non sia raggiungibile, eliminando, di fatto, il single 
point of failure tipico dei sistemi domotici con logica centralizzata all?interno del pannello di 
controllo.
Gli sviluppi futuri prevedono l?integrazione di sensori ambientali (temperatura, pressione, 
umidit, pioggia...) che aiuteranno a formulare delle logiche decisionali per il comfort interno 
delle persone e per il risparmio energetico.

Schema a blocchi di un nodo domotico
Il cuore del nodo  proprio l?Arduino (Uno/Duemilanove) che incorpora il microprocessore ATmel 
ATMega328. Tale microprocessore viene programmato con l?apposito firmware OpenDomotica che mette a 
disposizione, secondo la configurazione effettuata sulla EEPROM (integrata nella CPU), le 
operazioni basilari da svolgere al verificarsi di un evento locale (es. pressione di un pulsante).
Alla scheda Arduino  connessa la scheda Ethernet Shield che consente al nodo di essere connesso ad 
una rete Ethernet e, quindi, di essere controllato da un altro nodo o dal server, ma anche di 
controllare un altro nodo remoto qualora la configurazione lo preveda.
Sempre alla scheda Arduino  connessa una scheda di multiplexing che consente di collegare 
molteplici utenze/attuatori utilizzando tre soli pin di input/output del microprocessore ATmel, al 
fine di aumentare il numero di uscite previste. Il multiplexing viene effettuato utilizzando la 
tecnica ShiftRegister che opera una conversione seriale/parallelo dei dati trasmessi, consentendo 
di espandere la catena di output secondo le esigenze, potenzialmente senza limiti.
Il controllo delle varie utenze (luci, prese, motori, caldaia, irrigazione, etc.) viene effettuato 
attraverso rel meccanici ad alta potenza. Tali rel vengono pilotati direttamente dalla scheda di 
multiplexing.
Con la stessa tecnica di ShiftRegister, questa volta in modalit parallelo/seriale, vengono 
aumentati i pin di ingresso del microprocessore ATmel per poter acquisire i comandi da un maggior 
numero di pulsanti.

Esempio di scenario di installazione di un network OpenDomotica

In questo scenario sono installati:
- una serie di Nodi (Nodo 1 ? 5) per il controllo di tutte le utenze previste e l?acquisizione di 
tutti i pulsanti atti a comandarle
- un PC/Server (Nodo 0) che svolge la funzionalit di supervisore dell?impianto
- un nodo rilevatore di dati ambientali (Nodo 10). I dati raccolti da tale nodo vengono riportati 
al supervisore che ne far uso per le logiche di funzionamento avanzate che non sono gestibili dai 
singoli nodi
- un bus dati separato (RS485) per lo scambio di dati prioritari tra moduli che necessitano di 
elevata affidabilit nella comunicazione
Il bus RS485 mette in comunicazione i vari elementi di gestione dell?impianto d?allarme per 
garantirne il funzionamento anche nel caso di un black-out elettrico in cui il network Ethernet non 
sarebbe disponibile, in quanto gli apparati di rete sarebbero spenti. Al contrario, il bus RS485, 
essendo gestito direttamente dalle schede Arduino connesse ad un alimentatore con batteria tampone, 
pu continuare a funzionare. Tale bus pu anche essere utilizzato per veicolare i dati da altre 
apparecchiature (es. stazioni meteo, sensori ambientali, etc.).
L?interconnessione del bus prioritario RS485 al bus Ethernet viene effettuata mediante un nodo 
Gateway (Nodo 6) che si occupa di trasportare i messaggi da un bus all?altro.
Architettura di sistema
L?architettura complessiva del sistema prevede:
- Una serie di nodi OpenDomotica
- Un PC/Server con servizi di Web Server, DBMS e OpenDomotica
- Uno o pi client (PC, SmartPhone, Tablet, etc.)

Il controllo remoto dell?impianto domotico viene effettuato dai client mediante un?interfaccia Web 
che mette a disposizione le funzioni di gestione delle singole utenze, ma anche funzionalit pi 
complesse come: scenari d?uso degli ambienti, monitoraggio dei consumi e dei dati ambientali, 
gestione dei profili di climatizzazione, programmi di irrigazione, interazione con l?impianto di 
allarme, etc.
Il Web Server utilizza il DBMS per recuperare i dati di configurazione e di stato attuale del 
sistema per costruire l?interfaccia da visualizzare sul client.
L?utente, attraverso i controlli dell?interfaccia, impartisce i comandi da eseguire al Web Server 
che si occupa di tradurli, attraverso i dati di configurazione presenti sul DBMS, ed inviarli al 
nodo di competenza.
Il nodo, ricevuto un comando dal network, a sua volta lo interpreta e lo esegue variando lo stato 
di una o pi utenze. Ad ogni cambiamento di stato di un?utenza, sia attraverso comando remoto che 
locale (pressione di un pulsante), il nodo invia un messaggio al server (servizio Listener) che si 
occupa di registrare la variazione sul DBMS. In questo modo il dato registrato  sempre allineato 
con la stato reale dell?impianto consentendo quindi, anche a tutti i client connessi in quel 
momento, di visualizzare la situazione sempre aggiornata. 
