Grafana is een machtige omgeving om grafieken te maken. Persoonlijk ben ik een enorme fan van Grafana. Zeker als Grafana gekoppeld wordt aan openHAB. Dan is het bv mogelijk om grafieken te maken van de gemeten temperaturen ( in privipe van elk item in openHAB ). Hieronder zie je een voorbeeld:
Onderstaande tutorial maakt gebruik van openHAB om gegevens van Qbus uitgangen te bewaren in InfluxDB. Uiteraard kan dit ook met node-RED of ander IoT oplossingen.
Grafana en openHAB kunnen niet onderling communiceren met elkaar. Er bestaat geen binding voor Grafana in openHAB.
Grafana kan gegevens halen uit een database. openHAB kan gegevens schrijven naar een database. De database die we gebruiken is influxdb. Dit is typisch een database die gebruikt word in de IoT wereld.
De installatie verloopt volledig via de terminal. We maken dus een shh verbinding met het toestel waar onze openHAB op draait.
Influxdb is niet standaard aanwezig in de repositories van Linux dus moeten we deze eerst toevoegen:
sudo apt update
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt update
Dan kunnen we Influxdb installeren via apt:
sudo apt install -y influxdb
Vervolgens voeren we 3 commando's uit die de service zal starten en er voor zal zorgen dat deze gestart word na een reboot:
sudo systemctl unmask influxdb.service
sudo systemctl start influxdb
sudo systemctl enable influxdb.service
Nu is de software klaar om geconfigureerd te worden, op een manier dat we deze kunnen gebruiken voor Grafana en openHAB. We starten eerst de software om verbinding te maken met de database:
influx
Connected to http://localhost:8086 version 0.13
InfluxDB shell version: 0.13
>
Nu kunnen we de database configureren met onderstaande commando's. U bent vrij om de naam van de database, de gebruikers en de wachtwoorden aan te passen zoals u het beste lijkt. Het is zeker aan te raden om de wachtwoorden te wijzigen. Als u wijzigingen aanbrengt, hou dan later in deze tutorial er wel rekening mee dat u dan uw eigen wachtwoorden gebruikt.
CREATE DATABASE openhab_db
CREATE USER admin WITH PASSWORD 'InfluxDB1234' WITH ALL PRIVILEGES
CREATE USER openhab WITH PASSWORD 'InfluxDB1234'
CREATE USER grafana WITH PASSWORD 'InfluxDB1234'
GRANT ALL ON openhab_db TO openhab
GRANT READ ON openhab_db TO grafana
exit
Als laatste brengen we nog enkele wijzigingen aan in de configuratie:
sudo nano /etc/influxdb/influxdb.conf
Zoek in het bestand onderstaande gegevens en pas ze aan.
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# Determines whether the Flux query endpoint is enabled.
# flux-enabled = false
# Determines whether the Flux query logging is enabled.
# flux-log-enabled = false
# The bind address used by the HTTP service.
bind-address = ":8086"
# Determines whether user authentication is enabled over HTTP/HTTPS.
auth-enabled = true
Sluit nano dan met CTRL x
Om alle wijzigingen actief te maken herstarten we de service:
sudo systemctl restart influxdb.service
Als het nodig is om later een wijziging aan te brengen moet u inloggen in influxdb, aangezien we hierboven de database hebben beveiligd met een gebruikersnaam en een wachtwoord. Dit kan met volgend commando:
influx -username admin -password InfluxDB1234 -host localhost
Grafana is niet standaard aanwezig in de repositories van Linux dus moeten we deze eerst toevoegen:
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
Dan kunnen we Influxdb installeren via apt:
sudo apt-get install -y grafana
Vervolgens voeren we 2 commando's uit die de service zal starten en er voor zal zorgen dat deze gestart word na een reboot:
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
In tegenstelling tot influxdb kunnen we Grafan instellen via een web pagina. Open dus uw favoriete browser (Brave ) en open de pagina:
http://<ip-adres>:3000/
Om te beginnen moeten we inloggen in Grafana met de standaard grbuikersnaam/wachtwoord combinatie ( admin / admin ):
Vervolgens kunnen we het admin wachtwoord wijzigigen. Kies een eigen wachtwoord ( dit staat los van influxdb ):
Welkom in Grafana! We configureren eerst onze verbinding met de database. We klikken hiervoor links op het tandwieltje en kiezen data source:
En klikken op Add data source.
Aangezien we werken met Influxdb is het logisch dat we hier kiezen voor Influxdb:
Pas de gegevens aan zoals hieronder aangegeven ( opletten als je andere wachtwoorden hebt gebruikt. ):
Klik vervolgens op Save & Test
Als de gegevens correct zijn ingevoerd krijgt u het groene vinkje. Als u een foutmelding krijgt, pas dan uw gegevens aan.
We hebben nu alle voorbereidingen achter de rug en het is tijd geworden voor het echte werk, nl items van openHAB in een grafiek krijgen.
Om te beginnen activeren we eerst de binding voor influxdb. Ga hiervoor naar instellingen.
Dan kiest u Persistence.
In de M5 release van openHAB kan u dit vinden onder Instellingen - Other Addons
Klik rechtsonder op +
En voeg InfluxDBPersitence toe.
Als we nu Visual Code openen en in de map services kijken zien we hier een nieuw bestand, influxdb.cfg.
De parameters in dit bestand zijn niet ingevuld, u onderstaande kopieren en plakken in de file - pas indien nodig uw wachtwoord aan.
# 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://localhost:8086
# The name of the database user, e.g. openhab.
# Defaults to: openhab
user=openhab
# The password of the database user.
password=InfluxDB1234
# The name of the database, e.g. openhab.
# Defaults to: openhab
db=openhab_db
# The retention policy to be used, needs to configured in InfluxDB
# Till v0.13: 'default', since v1.0: 'autogen'
retentionPolicy=autogen
Bewaar het bestand en dit mag dan gesloten worden.
openHAB is nu gconfigureerd om te werken met Grafana via influxdb.
Om straks een grafiek te tonen in Grafana van een item, moeten we dit item eerst zijn statussen laten wegschrijven in influxdb.
Hiervoor maken we in Visual Code een nieuw bestand aan in de map 'persistence' met de naam 'influxdb.persist':
U kan best onderstaande kopieren en plakken in het nieuwe bestand:
Strategies {
everyMinute : "0 * * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
}
Items {
EetkamerCT : strategy = everyChange, everyMinute
}
De 'Strategies' zijn in principe niet nodig, de standaard strategie van openHAB 'everyChange' is al voldoende. Deze zal dan de waarde van het item naar de database schrijven bij iedere wijziging. Om een mooiere grafiek te hebben echter, maak ik iedere minuut een logging. OK, dit vergt wat capaciteit van ons SD kaartje, maar influxd is zodanig opgebouwd dat dit enorm goed meevalt. Dus de keuze is aan u of u er everyMinute aan toevoegt.
EetkametCT is een openHAB item dat de huidige temperatuur (CT - Current Temp) van een thermostaat zal volgen. Door de grafiek te maken van dit item kunnen we dus eenvoudig controleren hoe de temperatuur in een bepaalde ruimte verloopt.
Vervang EetkamerCT
dus door een van uw items en verwijder , everyMinute
indien gewenst.
Zodra u het bestand bewaard heeft is het aan te raden om de logs te controleren of er niets is misgelopen.
Als alles in orde is maakt openHAB nu bij elke wijziging of elke minuut een nieuwe regel aan in de database.
Als u de optie everyMinute heeft aanstaan dan zal onderstaande werken na een minuut. Indien niet, zal het item moeten gewijzigd zijn van toestand, anders zit er nog geen data in influxdb om te tonen in Grafana.
We gaan terug naar onze webpagina met Grafana en klikken links op de vierkantjes om een nieuw dashboard toe te voegen. Klik dan op 'Create your first dashboard'
Klik op 'Add an empty panel'
Onder de plaats waar de grafiek gaat komen ziet u de querie staan om gegevens uit de database te halen. Klik op 'select measurement' en selecteer uw item.
Meteen komt de grafiek te voorschijn van de gelogde data.
Om een mooiere grafiek te hebben kan u aan de rechterzijde best onderstaande parameters over nemen.
Uiteindelijk krijgt u dan onderstaande grafiek:
U zal rechtsboven nog op apply en save moeten klikken om uw panel en dashboard te bewaren.
Rechtsboven ( zie onderste afbeelding ) kan u instellen hoe de grafiek moet worden weergegeven. U kan de tijd-range instellen alsook de refresh rate.