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

sabato 30 settembre 2017

Home Automation System - MQTT, SONOFF e OpenHAB v. 2




E' arrivato finalmente il momento di integrare MQTT in OpenHAB v.2.

Come descritto in un post precedente (http://domoticaduino.blogspot.com/2017/08/home-automation-system-sonoff-e-mqtt_19.html), attualmente ho un SONOFF Basic già installato e che comanda un lampione in giardino. Come abbiamo visto è già configurato per lavorare con MQTT e quindi lo integriamo in OpenHAB.

Seguo step by step il wiki di Tasmota, dove si parla di integrazione con OpenHAB (https://github.com/arendst/Sonoff-Tasmota/wiki/openHAB) e come prima cosa installo diversi ADDONS in OpenHAB:









A questo punto bisogna configurare la connessione di OpenHAB verso il broker MQTT, che ricordo essere installato sul Raspberry PI 3 dove c'è anche lo stesso OpenHAB. Per fare questo bisogna modificare il file di configurazione /etc/openhab2/config/mqtt.cfg o direttamente dalla shell linux (con nano o vi) oppure utilizzando Eclipse SmartHome Designer, un editor di testo evoluto che semplifica la modifica dei file di configurazione di OpenHAB v.2. Io lo utilizzo per comodità. La sua installazione è molto semplice e quello di cui necessita è semplicemente il path in cui trovare i file di configurazione di OpenHAB. Nel mio caso ho mappato una unità disco di rete chiamata Z che punta alla share samba definita automaticamente durante l'installazione di openHABianPI.

In particolare i parametri di configurazione che ho configurato sono i seguenti:

openhabianpi-mqtt.url=tcp://localhost:1883
server e porta del broker MQTT

openhabianpi-mqtt.clientId=openhabianpi
Client Id con cui openHAB si presenta al broker MQTT

openhabianpi-mqtt.user=openhabian
Username per l'accesso al broker MQTT

openhabianpi-mqtt.pwd=XXXXXXX
Password per l'accesso al broker MQTT

openhabianpi-mqtt.retain=true
Indica se al broker se mantenere i messaggi inviati

openhabianpi-mqtt è il nome logico che ho dato alla connessione ed è ripetuto in ogni parametro, questo perchè potremmo avere diverse connessione mqtt ognuna con il proprio nome. Questo nome verrà poi utilizzato nella configurazione degli items.

Se tutto è andato a buon fine, all'avvio di OpenHAB si dovrebbero trovare due righe di log simili a queste:


Bene, adesso si devono configurare gli items e la sitemap di OpenHAB.

Creo quindi un file nella cartella /etc/openhab2/items chiamato sonoffbasic01.items ed in cui vado ad inserire le definizioni degli items legati al comando del lampione da gestire.

Vado quindi a definire un oggetto di tipo "Switch" (di categoria light) che verrà agganciato al full topic mqtt del SONOFF Basic 01, che ricordo essere tasmota/garden/light/%topic%/%prefix%/. Ecco la sintassi:

Switch Garden_Light_1Lamp "Garden 1-Lamp"      <light>
            (gLightSwitchGarden)
            {mqtt="
                     <[openhabianpi-mqtt:tasmota/garden/light/sonoffbasic01/stat/POWER:state:default],
                     <[openhabianpi- mqtt:tasmota/garden/light/sonoffbasic01/tele/STATE:state:JSONPATH($.POWER)],
                     >[openhabianpi-mqtt:tasmota/garden/light/sonoffbasic01/cmnd/power:command:*:default]"
             }

Per informazioni sulla sintassi dei file .items, consultare la documentazione ufficiale http://docs.openhab.org/configuration/items.html

In questo modo ho definito un item chiamato Garden_Light_1Lamp agganciato ai messaggi MQTT appartenenti a determinati topics definiti dal blocco racchiuso tra {...}

Adesso vado ad inserire l'item in una sitemap per poterlo utilizzare. Modifico quindi il file di definizione della sitemap, andando ad aggiungere le seguenti righe:

Frame label="Lights" {

Switch     item=Garden_Light_1Lamp        label="Garden Light 1 Lamp"       icon="switch"


}

Non appena salvato, OpenHAB aggiorna la sitemap e se quindi andiamo a vederla, troviamo il nuovo blocco "Lights"



Ecco un video che riassume l'esito dell'integrazione:






lunedì 25 settembre 2017

Home Automation System - SONOFF Dev, un nuovo arrivo




Arrivato un pacco...un nuovo e fiammante SONOFF Dev...tutto da testare e scoprire...comprato direttamente sul sito della iTead a poco più di 7 euro, spedizione compresa.



In poche parole è una piccola scheda di sviluppo basata sul famoso chip ESP8266.

Include connettività WiFi, 5 GPIO, 1 ADC, una porta seriale e uscite a 3.3V o 5V. Ha già incluso un connettore micro USB per la connessione al PC o ad un alimentatore 5V esterno ed è programmabile attraverso l'IDE di Arduino.

Non arriva con firmware preinstallato e quindi necessità di qualche conoscenza di programmazione per riuscire ad utilizzarlo.

Nei prossimi giorni farò qualche test per poi integrarlo nel sistema di Home Automation System, collegandogli qualche sensore.

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.




lunedì 4 settembre 2017

Home Automation System - Nuovi arrivi...




Mentre proseguono i miei test per l'interfacciamento e la configurazione dei dispositivi, ecco arrivati altri nuovi bimbi...

5 SONOFF Basic + una New Entry: 1 SONOFF Dual

Il DUAL non è nient'altro che un SONOFF basic con due relays comandabili indipendentemente.

Eccoli, subito "marchiati" con il loro futuro nome:


Come sempre la prima cosa che faccio prima di aprirli ed aggiornarli con il firmware TASMOTA è quella di testarli con il software standard EWeLink

Lo schema di collegamento è simile al SONOFF Pow, in quanto i terminali sono tutti da un lato. 

Non esiste il collegamento per la terra, ma solo 3 coppie di Fase / Neutro, 1 per l'INPUT e 2 per i carichi da controllare.




Ecco la procedura di attivazione per il nuovo arrivato SONOFF DUAL con EWeLink