Blog migrato su nuova piattaforma

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
Visualizzazione post con etichetta influxdb. Mostra tutti i post
Visualizzazione post con etichetta influxdb. Mostra tutti i post

giovedì 16 novembre 2017

Home Automation System - Dashboard con Grafana




La scelta di InfluxDB come motore di persistenza dei dati di OpenHAB è stata dettata anche dal fatto che è facilmente integrabile in Grafana, una piattaforma opensource per la creazione di dashboard web interattive.

Grafana lo installo sempre sul Raspberry PI3, dove girano OpenHAB e InfluxDB, utilizzando lo strumento di configurazione di OpenHAB (openhabian-config), selezionando l'opzione "optional components"


Dopo l'installazione e l'avvio del servizio, la piattaforma risulta raggiungibile sulla porta 3000 via http.

Qui c'è un'ottima guida per la configurazione di Grafana e InfluxDB

https://community.openhab.org/t/influxdb-grafana-persistence-and-graphing/13761#grafana-setup

La creazione delle dashboard e veramente molto facile...una volta definito il data source che punta alla nostra istanza di InfluxDB


Ogni dashboard è un insieme di righe e oggetti; per recuperare i dati si seleziona la grandezza che interessa e via...magicamente appaiono i dati nel grafico, in base all'intervallo temporale selezionato.

Ecco la mia dashboard di esempio dove ho inserito:

- in alto a sinistra i tempi di ping di due dispositivi in rete
- in alto a destra i dati dello speedtest (upload e download su due assi indipendenti)
- in basso i dati di temperature e umiditià del mio paese, ottenuti dal servizio OpenWeatherMap (su due assi indipendenti)


lunedì 6 novembre 2017

Home Automation System - Persistenza dei dati con InfluxDB





Negli ultimi giorni ho introdotto il concetto di "persistenza" dei dati in OpenHAB v.2 in modo da storicizzare i dati acquisti e preparare delle dashboard di consultazione.

Come sempre la documentazione ufficiale è abbastanza esaustiva:


Come motore di persistenza ho scelto InfluxDB, un motore database ottimizzato per memorizzare serie di dati basate su data/ora. La mia scelta è stata dettata anche dal fatto che InfluxDB si integra benissimo con Grafana, una piattaforma web per la creazione di dashboard interattive.

Per prima cosa installo InfluxDB su RPI3 (lo stesso su cui gira OpenHAB) seguendo la documentazione ufficiale https://docs.influxdata.com/influxdb/v1.3/introduction/installation/

Successivamente bisogna abilitare il motore di persistenza su OpenHAB v.2, utilizzando PaperUI, sezione Add-ons, tab Persistence


A questo punto bisogna configurare OpenHAB con le informazioni di connessione al database InfluxDB appena creato, modificando il file services/influxdb.cfg nella solita cartella di configurazione di OpenHAB. Nel mio caso, avendo lasciato le opzioni suggerite, ho dovuto solo inserire la password dell'utente, il resto è tutto lasciato ai valori di default.

Questo è il mio file di configurazione:

# The database URL, e.g. http://127.0.0.1:8086 or https://127.0.0.1:8084 .
# Defaults to: http://127.0.0.1:8086
# url=http(s)://<host>:<port>

# The name of the database user, e.g. openhab.
# Defaults to: openhab
# user=<user>

# The password of the database user.
password=XXXXXXX

# The name of the database, e.g. openhab.
# Defaults to: openhab
# db=<database>

Sulla guida ufficiale si trovano tutte le opzioni: http://docs.openhab.org/addons/persistence/influxdb/readme.html

Adesso occorre configurare le strategie di persistenza che OpenHAB utilizzerà per memorizzare i dati su InfluxDB; in sostanza devo decidere, item per item, quando memorizzare il dato sul database. Si può decidere di persistere il dato ogni volta che esso cambia, ogni volta che viene aggiornato (anche se non cambia...) oppure ad intervalli regolari di tempo, utilizzando la modalità di schedulazione di Quartz. Per fare questo si deve creare un file di configurazione della persistenza, nella cartella /etc/openhab2/persistence, chiamato influxdb.persist. In questo file andiamo a definire le modalità di persistenza che vogliamo usare (sezione Strategies...) per assegnarle ai vari items / gruppi (sezione Items...).

Documentazione ufficiale

La mia sezione Strategies è la seguente:

Strategies {
everyMinute: "0 * * * * ?"
everyHour: "0 0 * * * ?"
everyDay: "0 0 0 * * ?"
default = everyUpdate, restoreOnStartup
}

Per l'assegnazione di "classi di persistenza" degli items ho trovato molto utile utilizzare i gruppi; ho quindi definito dei nuovi gruppi nel solito file /etc/items/groups.items

Group gPersistence (gAll)
Group gPersistence1m (gAll)
Group gPersistence1h (gAll)
Group gPersistence1d (gAll)
Group gPersistenceChange (gAll)

a cui andrò ad assegnare le classi di persistenza sopra definite, nella sezione Items del file influxdb.persist

Items {
gPersistence* :
gPersistence1d* : strategy = everyDay, restoreOnStartup
gPersistence1h* : strategy = everyHour, restoreOnStartup
gPersistence1m* : strategy = everyMinute, restoreOnStartup
gPersistenceChange* : strategy = everyChange, restoreOnStartup
.........
}

A questo punto per decidere quale item persistere e come, mi basterà assegnare i gruppi corretti.

Nel prossimo post parlerò di Grafana, ottimo strumento per la creazione di dashboard.

sabato 5 agosto 2017

Home Automation System - OpenHAB 2 su Raspberry PI 3




E' arrivato il momento di preparare l'ambiente software per creare il vero e proprio sistema di Home Automation. La scelta è ricaduta sul software OpenHAB v.2 e ne ho parlato in un post precedente (vedi http://domoticaduino.blogspot.it/2017/07/home-automation-system-la-scoperta-dei.html)


Il mio scopo è di installare OpenHAB v.2 e tutti i servizi di contorno sul nuovo Raspberry PI 3; leggendo la documentazione vengo indirizzato su un sistema operativo configurato ad hoc...il suo nome è OpenHABian e seguendo la documentazione a questo link http://docs.openhab.org/installation/openhabian.html. scarico un'immagine preconfezionata, da installare sulla SD del Raspberry PI 3 per aver pronto, in pochi click e qualche minuto di attesa, un sistema operativo basato su Raspbian Lite contenente, già configurato, il software OpenHab v.2 più tutta una serie di servizi aggiuntivi e configurazioni a supporto.

Scarico allora l'ultima versione di OpenHABian da questo link https://github.com/openhab/openhabian/releases e, tramite il software Etcher, la scrivo sulla SD Card del Raspberry PI 3. Dopo aver inserito l'SD nell'apposito slot, avvio il Raspberry PI 3, non prima di averlo collegato alla LAN (per chi non avesse a disposizione la LAN, esiste anche una procedura per fare in modo che al primo boot venga agganciata la rete WiFi di casa...http://docs.openhab.org/installation/openhabian.html#wifi-setup). La procedura di installazione di OpenHABian è automatica e la si può seguire tramite SSH...Dopo una decina di minuti l'installazione si conclude ed il sistema è pronto.

La prima cosa da fare è eseguire il tool openhabian-config, che permette, tramite un'interfaccia interattiva testuale, di aggiornare e configurare l'ambiente e installare ulteriori servizi.

sudo openhabian-config


Oltre le voci 01 - Update e 02 - Upgrade System, da eseguire con frequenza per tenere aggiornato il sistema, il mio consiglio è quello di seguire i menù:

- 10 - Apply Improvements ==> tutte le voci

- 20 - Optional Components ==> 21 - Log Viewer, 22 - Mosquitto (il broker MQTT) e 23 - Grafana (non necessario ma è un ottimo strumento per creare dashboard)

- 30 - System config ==> a scelta, ma "obbligatorio" il cambio delle password di default (34 - Change Passwords); un'opzione molto utile è la voce 37 - Move root to USB; potrebbe aiutare in caso di problemi con le SD Card, facilmente "corruttibili"...in questo modo si può utilizzare un hard disk USB esterno al posto della SD Card, dove rimane solo la partizione di Boot. Entrambi i miei raspberry sono configurati in questo modo, ma ho preferito seguire una procedura manuale (vedi https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=44177&hilit=usb+stick+operating+system)

- 40 - openHAB related ==> 43 - Reverse Proxy opzione molto utile per esporre openhab su internet in tutta sicurezza in modo da poterlo utilizzare anche da fuori casa, utilizzando il servizio NGINX attenzione a configurare bene le sicurezze; altrimenti chiunque su internet potrebbe prendere il controllo dei nostri dispositivi.

A questo punto OpenHAB configurato e pronto all'uso. Per conoscere come funziona, configurarlo ed sfruttarlo al massimo delle sue potenzialità vi lascio ai tutorial e alla guida ufficiale che trovate direttamente sul sito http://docs.openhab.org/ e soprattutto al ricco forum https://community.openhab.org

Anche su youtube esistono tantissime guide e tutorial. Il canale ufficiale di OpenHAB è https://www.youtube.com/channel/UC7OK88DW0La_BJlcXZg8ydQ/feed

Un'ultima informazione che potrebbe tornare utile: come scoprirete leggendo la documentazione, OpenHAB può usare dei servizi di persistenza su DB per memorizzare le informazioni ricevute (ad esempio dati di temperatura, umidità, etc etc...); uno di questi è la persistenza su InfluxDB, un motore database di tipo NOSQL per la memorizzazioni di serie temporali. Questo permette di memorizzare e storicizzare tutti o alcuni dati gestiti da OpenHAB in modo tale da poter creare grafici e tabelle. Grafana, lo strumento opensource per la creazione di dashboard interattive, si integra perfettamente con questo tipo di database. Per chi volesse invece gestire, come servizio di persistenza, un database relazionale standard, esiste l'integrazione con il famosissimo MYSQL. Io ho deciso di utilizzare InfluxDB, ed ho quindi provveduto alla sua installazione e configurazione sul Raspberry, seguendo la documentazione ufficiale https://docs.influxdata.com/influxdb/v1.3/introduction/installation/

Per riassumere, il mio sistema è configurato nel seguente modo:

- 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 e Grafana.

Riguardo l'ultimo punto, per chi non fosse troppo avvezzo alle problematiche di tipo "sistemistico" derivanti dall'utilizzo di un reverse proxy nella propria rete e la configurazione del NAT / Port Forwarding sul proprio router, OpenHAB offre un servizio di pubblicazione su internet di un'installazione OpenHAB locale, attraverso il suo portale My OpenHAB, previa registrazione.

Ok, siamo pronti ad utilizzare il nostro Home Automation System