openHAB

Nel mondo in cui viviamo il progresso tecnico permette, giorno dopo giorno, di migliorare le nostre vite, in qualunque contesto ci troviamo. I mezzi di comunicazione sono migliorati, la ricerca scientifica ha fatto passi da gigante, il tenore di vita è cambiato… ma quello che non tutti hanno ancora percepito è che per stare veramente bene, bisogna rendere migliore anche il luogo che noi definiamo “casa” attraverso la gestione domotica dei dispositivi.
La domotica è un argomento che ritengo essere fra quelli più affascinanti in assoluto, specialmente quando viene vista realmente per quello che è, cioè un sistema completamente espandibile, dalle infinite possibilità di utilizzo, limitato soltanto dalla fantasia e dai desideri degli utenti. Poter controllare ogni singola parte della propria casa con dei semplici tocchi allo schermo del proprio tablet o, quasi per magia, con il comando vocale, è qualcosa di fantastico, specialmente se il sistema in questione è stato creato con le proprie mani, ed è proprio per questo che nasce questo articolo, spiegando passo dopo passo come configurare un sistema domotico tramite il potente e versatile Raspberry Pi 3 ed il software openHAB.

Il Raspberry Pi 3

Il Raspberry PI è un mini PC sviluppato nel Regno Unito dalla Raspberry Pi Foundation, creato per generare interesse tra le giovani generazioni e costituire un valido supporto agli studi relativi all’informatica e alla programmazione. Si tratta di un computer embedded che può essere utilizzato non soltanto dai tecnici appassionati, ma anche da coloro che sono alla ricerca di un computer economico e compatto dalle discrete prestazioni. Dal 29 febbraio 2012, il giorno del lancio della prima versione del Raspberry, le versioni prodotte e commercializzate sono state sette, e si può dire che le caratteristiche hardware del Lampone siano cresciute progressivamente con le uscite dei nuovi modelli, arrivando agli alti livelli prestazionali dell’ultimo Raspberry Pi 3, che potete vedere nello specifico in uno dei miei articoli precedenti.

Figura 1: Versioni precedenti del Raspberry Pi

Le Caratteristiche del Raspberry Pi 3

  • SoC – Processore Broadcom BCM2837 64bit ARMv8 quad core Cortex A53@ 1,2GHz con dual core VideoCore IV GPU, supporta OpenGL ES 2.0, OpenVG con accelerazione hardware, decodifica ad alto profilo 1080p30 H.264.
  • Memoria di Sistema – 1GB LPDDR2 – slot micro SD
  • Uscita Audio & Video – HDMI 1.4 e porta audio stereo e video composito a 4-poli
  • Connettività – 10/100M Ethernet, WiFi 802.11 b/g/n fino a 150Mbps e Bluetooth 4.0 LE (modulo BCM43143)
  • USB – 4x porte host USB 2.0, 1x porta micro USB per alimentazione / Espansioni: connettore a 40-pin GPIO
  • MIPI DSI per display touch Raspberry Pi / MIPI CSI per telecamera Raspberry Pi
  • Alimentazione – 5V fino a 2,4A via micro USB / Dimensioni – 85 x 56 x 17 mm

openHAB

openHAB è un software Open Source sviluppato in Java che permette di automatizzare la propria abitazione o ufficio esattamente come si desidera, visto che è possibile personalizzare ogni sua singola funzione. OpenHAB è molto versatile ed è installabile sulla maggior parte delle piattaforme, come ad esempio Windows, MacOS e Linux. Altro aspetto che lo rende interessante è quello di poter interfacciare qualsiasi dispositivo, come l’impianto di illuminazione, la TV, lo stereo, l’impianto di allarme, l’apertura delle serrande e tutto quello che potreste desiderare.
Dopo la fase di installazione, vedremo nello specifico i suoi componenti.

Figura 2: Logo openHAB

Installazione Software

L’installazione di openHAB richiederà del tempo, ma vi assicuro che alla fine della procedura non potrete che essere soddisfatti, perciò vediamo subito di cominciare.
La versione che installeremo è la 1.8.3.
Tutti i passaggi che vedremo in seguito sono da eseguire sul terminale, quindi dopo avere installato il S.O. Raspbian, consiglio prima di tutto di aggiornare il sistema, digitando semplicemente quanto segue:

sudo apt-get update
sudo apt-get upgrade

Questa operazione richiederà diversi minuti…mettetevi comodi!
Come accennato, il funzionamento di openHAB è basato su Java ed Eclipse, quindi il primo passo da fare è quello di installarli nel caso in cui non lo avessimo già fatto, digitando, sempre sul terminale, i seguenti comandi:

sudo apt-get install oracle-java8-jdk -y
sudo apt-get install eclipse -y

Adesso procediamo all’installazione di Mosquitto, digitando quanto segue:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
rm mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients

Creiamo adesso le cartelle che ci serviranno per l’installazione di openHAB, digitando:

sudo mkdir /opt
sudo mkdir /opt/openHAB
sudo chmod -R ugo+rw /opt/openHAB

Siamo pronti per l’installazione di openHAB, quindi digitiamo i seguenti comandi sul terminale:

cd /opt/openHAB
sudo wget https://bintray.com/artifact/download/openHAB/bin/distribution-1.8.3-runtime.zip
sudo unzip distribution-1.8.3-runtime.zip
sudo rm distribution-1.8.3-runtime.zip
cd ../addons
sudo wget https://bintray.com/artifact/download/openHAB/bin/distribution-1.8.3-addons.zip
sudo unzip distribution-1.8.3-addons.zip
sudo rm distribution-1.8.3-addons.zip
cd ../
sudo wget https://bintray.com/artifact/download/openHAB/bin/distribution-1.8.3-demo.zip
sudo unzip distribution-1.8.3-demo.zip
sudo rm distribution-1.8.3-demo.zip
sudo chmod +x start.sh

Perfetto! Adesso possiamo testare che l’installazione sia andata a buon fine, avviando openHAB.
Quindi digitiamo:

sudo ./start.sh

openHAB impiegherà circa 5 minuti per avviarsi, trascorsi i quali possiamo aprire il browser per controllare che il sistema sia online e funzionante, quindi è importante che sappiate quale sia l’indirizzo IP assegnato al vostro Rpi3 dalla rete, in quanto lo dovrete inserire al posto di rasp-ip-address; vi consiglio di impostare un indirizzo IP statico, se possibile.
Nel browser apriamo l’indirizzo
http://rasp-ip-address:8080/openHAB.app?sitemap=demo
e se davanti a noi ci sarà una schermata simile a quella di Figura 3, allora… complimenti, saremo stati bravi! 😉

Figura 3: Sitemap demo di openHAB

Ancora la configurazione del software non è completa, quindi continuiamo, riavviando per prima cosa il nostro lampone, digitando:

sudo reboot

Dopo il riavvio, procediamo con l’aggiungere il nome utente e la password nel file users.cfg, quindi sempre sul terminale digitiamo:

sudo nano /opt/openHAB/configurations/users.cfg

E aggiungiamo queste due righe al file

user=password,user,role
--- NOTA username_scelto--- = ---password scelta---

Dopo avere salvato il file, aggiungiamo la funzione MQTT binding, digitando quanto segue:

cd /opt/openHAB/configurations
sudo cp openHAB_default.cfg openHAB.cfg
sudo nano openHAB.cfg

Tramite la funzione ricerca (CTRL-w) cerchiamo la parola chiave “mqtt”, e cancelliamo il cancelletto del commento alle seguenti righe, modificandole per come vedete qui sotto:

mqtt:broker.url=tcp://localhost:1883
mqtt:broker.clientId=openHAB

Usciamo e salviamo il file.

Un’operazione importate da non tralasciare, è quella di impostare openHAB come daemon, in modo che si avvii in automatico ad ogni accensione.

Quindi se non esiste, creiamo la cartella systemd, e il file di avvio per openHAB, digitando quanto segue:

sudo mkdir /usr/lib/systemd/system
sudo nano /usr/lib/systemd/system/openHAB.service

Inseriamo nel file openHAB.service che abbiamo appena creato le seguenti righe:

[Unit]
Description=openHAB Home Automation Bus
Documentation=http://www.openHAB.org
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
GuessMainPID=yes
User=pi
ExecStart=/opt/openHAB/start.sh
ExecStop=kill -SIGINT $MAINPID
Restart=on-failure
WorkingDirectory=/opt/openHAB
[Install]
WantedBy=multi-user.target

Salviamo il file, e settiamo il proprietario di openHAB, digitando:

sudo chown -R pi:pi /opt/openHAB

Finiamo di configurare il daemon:

sudo systemctl --system daemon-reload
cd /usr/lib/systemd/system
sudo systemctl enable openHAB.service
sudo systemctl start openHAB.service
sudo reboot

Visualizziamo e correggiamo eventuali problemi nei registri, digitando il comando:

sudo journalctl -f -u openHAB.service

Fermiamo la lettura, digitando CTRL-c, e riavviamo il sistema:

sudo reboot

Prima di riaprire l’indirizzo del nostro openHAB nel browser, considerate che impiegherà qualche minuto per avviarsi.
Installazione avvenuta con successo.

Utilizziamo openHAB

Quello che avete visto fino ad adesso nel browser, all’indirizzo
http://rasp-ip-address:8080/openHAB.app?sitemap=demo,
è solo la versione demo del sistema, che non potete utilizzare per controllare nulla, a meno che non la modifichiate. Per utilizzare al meglio openHAB, è bene sapere quali sono i suoi elementi principali, che vediamo qui di seguito.

  • Items – sono tutti gli “oggetti”, dispositivi, sensori o informazioni che si possono integrare e usare nel proprio sistema. Non si deve trattare per forza di un dispositivo fisico come un sensore, ma potrebbe essere anche un dato proveniente dal web come ad esempio le previsioni meteo. Gli Items sono memorizzati in un file all’interno della directory opt/openHAB/configurations/items
  • Sitemaps – sono utilizzati per disporre gli elementi nella dashboard di openHAB per come vogliamo che siano visualizzati, con la possibilità di raggrupparli e organizzarli in sottocategorie (Ad esempio; Soggiorno, Stanza da letto, etc).
  • Rules – sono le regole e i parametri predisposti, dai quali dipendono certe azioni programmate ad essere eseguite automaticamente in determinate condizioni. Ad esempio, se la temperatura della stanza da letto supera una determinata soglia programmata, allora in automatico si accenderà il condizionatore, oppure ad esempio, all’ora prestabilita, si spegneranno tutte le luci delle stanze dove non sono presenti persone.
  • Persistence – tramite questa funzione è possibile decidere quali valori devono essere memorizzati, in modo da poterli consultare nel tempo, come ad esempio la temperatura o il numero di utilizzo delle stanze. In questo modo è anche possibile fare delle statistiche dei dati memorizzati.
  • Transform – serve per etichettare determinati dati. Ad esempio, posso definire che la casa si trova in uno stato che chiamo ‘ottimale‘, se la temperatura ambiente è compresa tra 19° C e 23° C con un’umidità compresa tra il 70% e il 80%. In questo modo è anche possibile semplificare la visualizzazione di determinati dati e la formulazione delle

Per l’esempio che tratteremo, ci basta sapere cosa sono gli elementi Items e Sitemaps, ma ho ritenuto comunque importante non tralasciare gli altri, in modo da cominciare a farsi un’idea sul funzionamento complessivo di openHAB per i prossimi articoli.

Collegamenti GPIO di Raspberry Pi 3

Figura 4: Collegamenti del connettore GPIO

Anche il Raspberry Pi 3, come avveniva nelle versioni precedenti, ha un connettore GPIO, cioè una porta generica di input/output collegata direttamente al processore, che permette di collegare qualsiasi dispositivo abbia un input/output di tipo digitale.
Trattandosi di un’interfaccia esclusivamente digitale, nel caso in cui avessimo la necessità di dover utilizzare dei sensori o delle interfacce analogiche dovremmo utilizzare un convertitore analogico-digitale (ADC).
Nel nostro esempio di prova, gestiremo tramite openHAB l’accensione e lo spegnimento di un LED che collegheremo al pin GPIO4, come illustrato in Figura 5:

Figura 5: Collegamento LED
Figura 6: Raspberry Pi con LED

Ritorniamo al nostro test

Adesso vedremo come controllare l’accensione e lo spegnimento di un LED tramite la dashboard di openHAB, creando una nuova sitemap che chiameremo Myhome e inserendo il giusto item. Creiamo il file Myhome.sitemap nella cartella
/opt/openHAB/configurations/sitemaps,
digitando sul terminale:

cd opt/openHAB/configurations/sitemaps
nano Myhome.sitemaps

Inseriamo nel file quanto segue:

sitemap Myhome label="Myhome"
{
Frame label="Rasperry Pi LED"
{
Switch item=RaspiLED
}
}

Dopo aver salvato il file, procediamo con la creazione del file Myhome.item nella cartella
/opt/openHAB/configurations/items,
digitando sul terminale:

cd ../items
nano Myhome.item

Inseriamo nel file quanto segue:
 

Switch RaspiLED{ gpio="pin:4" }

Usciamo dall’editor salvando il file.
Aprendo il browser, all’indirizzo
http://rasp-ip-address:8080/openHAB.app?sitemap=Myhome
possiamo controllare lo stato del LED.
 

Figura 7: openHAB aperto dal browser dello smartphone

 

Figura 8: Applicazione openHAB per tablet (https://community.openHAB.org)

Conclusione

In questo articolo abbiamo visto un approccio diretto all’utilizzo di openHAB, con un semplice esempio operativo, per capire quanto possa risultare semplice e divertente realizzare il proprio sistema domotico personalizzato.
Una precisazione riguardo il collegamento dei nostri dispositivi ad openHAB: nell’esempio che abbiamo visto abbiamo utilizzato dei pin GPIO del Raspberrry Pi, ma come è stato già scritto in questo articolo, potete collegare qualsiasi periferica, anche se non è connessa fisicamente allo stesso Raspberry. È possibile utilizzare per esempio diversi moduli slave installati nelle stanze della casa, tutti collegati tramite la rete locale al Master Raspberry Pi, aggiungere l’automatizzazione della casa in base a determinati fattori (temperatura, orario, allarme, …), il controllo vocale, la gestione di un robot per le pulizie domestiche, e tutto quello che ci può venire in mente.
Ma questi sono altri aspetti, che vedremo nei prossimi articoli. Buona sperimentazione!

Ivan Scordato