Grafana ist ein nettes Tool zur Visualisierung von Daten. Es können Dashboards angelegt werden und diverse grafische Elemente wie zum Beispiel Zeitdiagramme, Balkendiagramme, Tortendiagramme, Histogramme oder auch Heatmaps angezeigt werden.
Hier kann eine Demo angeguckt werden: https://play.grafana.org/
Ich möchte in diesem Beitrag kurz zeigen, wie MySQL-Daten, die von OpenHab archiviert wurden, mit Grafana visualisiert werden können.
Die Installation von Grafana ist bei der Verwendung von Docker ganz einfach und hier beschrieben: https://registry.hub.docker.com/r/grafana/grafana/
Grafana kann dank eines Plugin-Systems um Funktionen wie zum Beispiel Datenquellen erweitert werden. So lässt sich zum Beispiel MySQL als Datenquelle hinzufügen, wenn die Daten in einer MySQL-Datenbank oder ähnliche Datenbanken wie MariaDB vorhanden sind.
Je nach Einstellung speichert OpenHab über den Persistence-Service die Daten in der SQL-Datenbank in einer Tabelle nach dem Muster:
time | value |
Der Name der Tabelle lautet item„Fortlaufende Nummer“. Welches Item hinter dieser Nummer steht, kann über die Tabelle „Items“ ausgelesen werden.
Grafana erwartet für einen Graphen [„Time Series“ oder „Graphen (old)“] für die Zeitachse (X-Achse) ein Feld „time“ und für die Werteachse (Y-Achse) ein Feld „value“. Über das Feld „metric“ kann der Name der Kurve festgelegt werden.
Über den Querybuilder kann die Abfrage zusammengebaut werden:

Alternativ kann über „Edit SQL“ auch direkt die SQL-Abfrage eingegeben werden:
SELECT
time AS "time",
"Name des Wertes" AS metric,
value
FROM item0168
WHERE
$__timeFilter(time)
ORDER BY time
Es können natürlich diverse SQL-Befehle in der Abfrage eingebunden werden. Bei „$__timeFilter()“ handelt es sich um ein Makro, welches die Zeitauswahl aus Grafana in die SQL-Abfrage einsetzt.