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

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.