Disclaimer

Prestare sempre attenzione a seguire le indicazioni fornite in questo blog, soprattutto se si tratta di apparecchiature elettriche collegate alla tensione di 220V. Non mi ritengo responsabile di danni causati dall'aver seguito i consigli qui pubblicati.
Grazie

mercoledì 20 settembre 2017

Home Automation System - OpenHAB 2 all'opera



Dopo aver giocato con i dispositivi fisici, è arrivato il momento di spostarci in area "software". Chi ha già letto i post precedenti saprà che ho scelto di usare OpenHAB v.2, già installato su un nuovo Raspberry PI3, come descritto in un post precedente:


Per me questo mondo è abbastanza nuovo, quindi seguirò fedelmente le informazioni presenti sulla documentazione ufficiale (http://docs.openhab.org/introduction.html), facendo molto riferimento anche alla community (https://community.openhab.org/) in cui si trovano numerose risorse utili.

In parole molto semplici ed in base a quanto ho capito, concettualmente OpenHAB v.2 effettua una mappatura tra dispositivi fisici (reali o virtuali...), chiamati "things", ed entità logiche, chiamate "items". Questi ultimi saranno gli oggetti presenti nelle nostre interfacce di gestione e che avremo a disposizione per gestire il nostro "Home Automation System".


Da www.openhab.org

Per integrare i diversi dispositivi reali e virtuali (things) in OpenHAB v.2 si utilizzano i Bindings, che non sono altro che degli oggetti che permettono ad OpenHAB v.2 di comunicare con i dispositivi esterni (siano essi veri dispositivi fisici o solo WebService che forniscono dati...) e quindi renderli disponibili sul sistema di Home Automation.

L'integrazione degli "items" all'interno delle interfacce "utente" di OpenHAB v.2 viene fatta attraverso la definizione di "Sitemaps", mentre l'automatizzazione e la gestione degli eventi è inserita all'interno delle cosiddette "Rules".

Tutti i dati che transitano sul "Bus di comunicazione" di OpenHAB v.2 possono (ed in alcuni casi devono...) essere resi persistenti e storicizzati attraverso l'utilizzo di motori di persistenza chiamati "Persistence".

Tutti questi concetti verranno approfonditi man mano che andremo avanti con la nostra configurazione.

Il mio sistema è quindi pronto per essere configurato ed utilizzato. Riassumo la configurazione SW attuale sul mio Raspberry PI3

OpenHAB v 2.1
Broker MQTT mosquitto, con autenticazione abilitata
Grafana
InfluxDB, come motore di persistenza di OpenHAB
Reverse proxy SSL con autenticazione, tramite NGINX , per esporre in sicurezza su internet OpenHAB Grafana.

La configurazione standard (selezionando lo "standard package" al termine del setup) dei moduli di OpenHAB v.2 è la seguente:

- BASIC UI: interfaccia grafica responsive per l'utilizzatore del sistema; si basa sulla definizione delle Sitemaps

- PAPER UI: modulo grafico di configurazione, purtroppo non ancora completo (molte cose si continuano a fare tramite modifica diretta di file di configurazione)

- HABPANEL: interfaccia grafica "utilizzatore", nata principalmente per tablet


Esistono comunque altri moduli installabili successivamente tramite la sezione ADDONS di PAPER UI.

Per concludere la panoramica, cito ancora le applicazioni mobile per utilizzare OpenHAB v.2 da smartphone e/o tablet, comode per avere sempre tutto a portata di mano, ovunque noi siamo...




Windows OpenHAB App installabile anche direttamente su PC Windows 10, anche se devo ammettere non mi sembra funzioni molto bene.


E' arrivato il momento di cominciare a far funzionare OpenHAB v.2

Per prendere confidenza iniziamo con qualcosa di facile, prima di addentrarci nella configurazione di MQTT per integrare i SONOFF.

Dopo aver seguito il tutorial "beginners" per prendere confidenza con l'ambiente, non avendo a disposizione al momento dispositivi fisici integrabili direttamente in OpenHAB v.2 (come ad esempio le lampadine LIFX e/o i dispositivi KNX), provo l'integrazione dei dati di speedtest e dei dati atmosferici forniti da servizi esterni.

Per l'integrazione dello speedtest ho seguito quest'ottimo tutorial, direttamente sul sito ufficiale https://community.openhab.org/t/speedtest-cli-internet-up-downlink-measurement-integration/7611, attraverso il quale ho imparato come avviene la configurazione tramite modifica dei file di testo. Infatti vengono coinvolte le seguenti aree di OpenHAB:

 - addons / bindings: per permettere ad OpenHAB v.2 di eseguire dei comandi di shell
 - items: la creazione di oggetti che permettono la memorizzazione dei dati di speedtest; 
 - sitemaps: visualizzazione nell'interfaccia utente dei dati raccolti, collegando ad oggetti grafici gli items di cui sopra
 - rules: creazione di regole per automatizzare la raccolta dati

In sostanza viene detto ad OpenHAB v.2 di eseguire ad intervalli di tempo da definire (io ho previsto di eseguire uno speedtest ogni 2 ore) lo script unix speedtest-cli (interfaccia testuale verso il servizio SpeedTest), memorizzarne i valori di upload, download e ping (...e tanti altri) in oggetti di tipo "items" (come se fossero delle variabili) e collegare questi oggetti a rappresentazioni grafiche in un'interfaccia utente.

In poche parole questo è il risultato sulla mia prima sitemap, vista tramite l'interfaccia web nativa Basic UI


Per quanto riguarda l'integrazione del servizio metereologico, OpenHAB v.2 ha a disposizione diverse tipologie di provider; io ho scelto (perchè lo conoscevo già...) OpenWeatherMap.

Anche in questo caso ho seguito la documentazione ufficiale (http://docs.openhab.org/addons/bindings/weather1/readme.html) e non è stato tanto difficile raggiungere l'obiettivo. Anche in questo caso ho dovuto attivare degli addons / bindings, configurarli, creare degli items ed agganciarli ad una sitemap.

il risultato finale è questo (la mia sitemap inizia piano piano a crescere...):



In entrambi i casi le diverse configurazioni (tranne l'attivazione degli addons / bindings, fatta in Paper UI) sono state fatte direttamente sui file di configurazione testuali. Per farlo ho utilizzato Eclipse SmartHome Designer (http://docs.openhab.org/configuration/editors.html#esh-designer), un editor grafico che offre un minimo aiuto durante le modifiche.

Bene, con queste due "prove" ho verificato che il sistema è funzionante. Tra poco il mio OpenHAB v.2 riuscirà ad accendere il lampione in giardino...grazie all'aiuto di MQTT che ci permetterà di integrare diversi prodotti e servizi.