Ich bin totaler Fan von irgendwelchen Graphen (sinnvoll oder nicht), die mir z.B. den Verlauf der Helligkeit in meinem Garten anzeigen (welcher mit der Homematic Wetterstation ermittelt und in CCU-Historian gespeichert wird). Daher musste ich mir Grafana zulegen, welches mir für einige meiner Sensoren ansehnliche Diagramme erstellt.
So behalte ich z.B. immer den Überblick, ob ich meinem Nachwuchs mal wieder erklären muss, wie man richtig lüftet – wenn die Netatmo Raumsensoren mal wieder eine CO2 Konzentration über 2000ppm gemessen haben sollte man mal lüften.

Da ich nicht alles manuell installieren will, greife ich gerne auf Docker Container zurück, welche sich meist einfacher einrichten lassen. Als Umgebung nutze ich dazu ein Synology NAS.
Für diesen Anwendungsfall nutze ich zwei Container:
Einrichtung CCU-Historian
In DSM des Synology NAS öffnet man Docker und sucht unter Registrierung nach CCU-Historian, ich habe mich hier für das Docker Image von xjokay entschieden. Image in der Liste auswählen und mit Download herunterladen

Wurde das Image heruntergeladen, findet man dies unter Abbild. Den xjokay/ccu-historian:latest Eintrag in der Liste auswählen und auf Starten klicken. Man kann dem Container einen eigenen Namen geben, kann aber auch einfach den Namen stehen lassen. Ich habe weder den Container mit hoher Priorität ausgeführt, noch irgendwelche Ressourcenbeschränkungen eingestellt.
Die wichtigen Einstellungen erfolgen unter Erweiterte Einstellungen. Hier muss bei Volume, Port-Einstellungen und Umgebung etwas eingetragen werden.
Unter Volume verknüpft man lokale Verzeichnisse auf dem NAS mit dem Container. Dazu habe ich auf meinem NAS ein Docker Verzeichnis für alle möglichen Container angelegt, und dann je Container ein Unterverzeichnis, aber dies ist jedem selbst überlassen.
Meine Beispiel Pfade | Container Pfad |
docker/ccu_hist/data/database | /database |
docker/ccu_hist/data/config | /opt/ccu-historian/config |

Im nächsten Schritt die Port Einstellungen. Sollte man hier eigene Anpassungen vornehmen, bitte in der nachfolgenden Beschreibung berücksichtigen (z.B. den Port für die PostgreSQL).
Lokaler Port | Container Port | Protocol | Description |
---|---|---|---|
8020 | 80 | TCP | Web-GUI Port |
2098 | 2098 | TCP | Xml RPC Port |
2099 | 2099 | TCP | Bin RPC Port |
8082 | 8082 | TCP | Database Web-GUI Port |
9092 | 9092 | TCP | Database TCP Port |
5435 | 5435 | TCP | Database PostgreSQL Port |
Als letzte Einstellung erfolgt das Setzen von drei notwendigen Umgebungsvariablen im Tab Umgebung. Ich habe eine CCU3 im Einsatz, mit der IP 192.168.1.43. Zusätzlich läuft mein NAS unter der IP 192.168.1.10, daher ergeben sich für mich folgende Einträge
ENV field | Values | Description |
---|---|---|
CONFIG_CCU_TYPE | CCU3 | Type of the CCU hardware |
CONFIG_CCU_IP | 192.168.1.43 | IP of the CCU |
CONFIG_HOST_IP | 192.168.1.10 | IP of the Docker host |
Daraufhin kann man den Container speichern und starten. Nach kurzer Zeit sollte unter der Adresse http://192.168.1.10:8020 (IP für eigenes NAS anpassen) das CCU Historien WEB-UI aufrufbar sein.

Im CCU-Historian Web-UI kann man sich schon ein paar Kurven anzeigen lassen, aber mit Grafana sieht es irgendwie schicker aus.
Für Grafana brauchen wir den Zugriff auf die Datenbank, hinter CCU-Historian. Um das Datenbank UI aufzurufen und in den Daten stöbern zu können, müssen wir die URL http://192.168.2.10:8082 verwenden (IP anpassen) und sollten folgendes sehen

Einfach anmelden und dann kann man sich die nackten Daten anschauen. Das Passwort lautet „ccu-historian„.
Damit ist aber der Zugriff via Grafana noch nicht ganz möglich. Erst muss die Konfiguration noch entsprechend angepasst werden. Nach dem Start des Container, sollte im Config (im Beispiel docker/ccu_hist/data/config) Verzeichnis eine Datei ccu-historian.config zu finden sein. Diese muss an zwei Stellen angepasst werden database.pgEnable=true
und database.pgAllowOthers=true
, danach sollte der Inhalt in etwa so aussehen:
database.dir='/database'
database.webAllowOthers=true
database.pgEnable=true
database.pgAllowOthers=true
devices.device1.address='192.168.1.43'
devices.device1.type=CCU3
devices.historianAddress='192.168.1.10'
webServer.historianAddress='192.168.1.10'
Den Container nach der Änderung der Konfiguration einmal über die Docker Oberfläche durchstarten.
Einrichtung von Grafana
Als erstes muss der Grafana Container von Dockerhub geladen werden, dies erfolgt wie bei CCU-Historian in der Docker Oberfläche von DSM im Unterbereich Registrierung. Diesmal sucht man nach Grafana und wählt den Docker Container von Grafana selbst aus (sollte der erste Eintrag sein).

Wieder erst den Container herunterladen und dann im Bereich Abbild den Container grafana/grafana:latest auswählen und auf Starten klicken. Im Unterschied zu CCU-Historian, kann man in diesem Fall die Einstellungen alle direkt übernehmen und direkt im erscheinenden Dialog auf Weiter klicken.

In der darauffolgenden Übersicht, sieht man nochmal alle Einstellungen, unter anderem, den Port unter dem man das Web-UI von Grafana findet (hier Automatisch, was bedeutet, dass der Port bei Start des Container vergeben wird und in der DSM Container Ansicht angezeigt wird). Sollte der Default-Port 3000 schon belegt sein, oder man möchte einen eigenen festlegen, kann man zurückgehen und den Port unter Erweiterte Einstellungen noch festlegen.

Wenn man den Haken bei „Diesen Container nach Abschluss des Assistenten ausführen“ gesetzt hat, kann man nach kurzer Zeit direkt das Grafana UI aufrufen http://192.168.1.10:3000

Die erste Anmeldung erfolgt mit User admin und Passwort admin. Nach Bestätigung wird man direkt aufgefordert, dass Passwort zu ändern, was man tun sollte. Ist dies erledigt, kommt man auf den Homescreen, welcher einem direkt die Dinge anzeigt, die man zu erledigen hat, eine Datenquelle einfügen und ein Dashboard anlegen (den Rest ignoriere wir jetzt erstmal).

Mit dem Klick auf Add data source kommt man zu einer Liste von möglichen Quellen. Wir interessieren und für eine SQL Quelle, um genau zu sein, für eine PostgreSQL. Diese in der Liste suchen und mit einem Klick auf Select die Konfiguration starten.
Wir geben der Verbindung einen Namen, z.B. CCU, tragen den CCU-Historian Host mit Port ein 192.168.1.10:5435 und geben den Pfad an, unter dem die Datenbank liegt. Unter einem Synology Docker Container sollte dieser Pfad immer ../../database/history sein. User und Passwort sind wie bei CCU-Historian Database Web-UI sa und ccu-historian. Da wir kein SSL installiert haben, muss dies hier deaktiviert werden (es befindet sich alles in einem privaten und geschütztem Netzwerk, daher sollte dies kein Problem sein)

Als letzten Schritt die Konfiguration mit einem klick auf Save & Test speichern und überprüfen. Ist die Konfiguration korrekt, wird dies durch die Meldung Database Connection OK bestätigt.
Jetzt brauchen wir noch ein Dashboard, um die Daten anzuzeigen. Dazu müssen wir auf dem Homescreen ein neues Dashboard anlegen. Zum Homescreen kommt man am schnellsten mit einem Klick auf das Grafana Logo links oben. Dort sieht man im Workflow als nächsten Eintrag New dashboard, worauf wir klicken.

Wir fügen nun eine neue Abfrage auf dem vorhanden Panel ein, dazu auf Add Query klicken und das Panel wird angezeigt. In der Ansicht wählen wir in der Auswahlliste Query den Eintrag CCU aus und wechseln im Query Bereich mittels dem Stift Symbol in die SQL Ansicht der Abfrage.

Als Beispiel wollen wir die Temperatur der Wetterstation visualisieren. Die Tabelle dazu finden wir mittels dem CCU-Historian Web UI, dort sucht man z.B. nach „temperature“, bekommt dann die Liste aller Homematic Komponenten, die einen Parameter mit dem Namensbestandteil „temperature“ haben, in meinem Fall nur die Wetterstation.

Man wählt den gewünschten Eintrag aus, in dem Fall ACTUAL_TEMPERATURE, und klickt auf Details. In dieser Ansicht findet man in der Tabelle den Eintrag Tabellenname mit dem gesuchten Wert, hier: D_HMIP_RF_00185BE73E40A0_1_ACTUAL_TEMPERATURE
Die daraus resultierende Abfrage lautet:
SELECT
TS_TO_UNIX(TS) AS time,
"VALUE" as Aussentemperatur
FROM
D_HMIP_RF_00185BE73E40A0_1_ACTUAL_TEMPERATURE
WHERE
$__timeFilter(ts)
ORDER BY ts
Diese Abfrage kann man theoretisch für alle Parameter 1:1 übernehmen, man muss nur die Tabelle anpassen und dem Value einen passenden Namen.

Wenn man möchte kann man im Bereich „General“ dem Panel noch einen sprechenderen Namen geben und dann das ganze speichern.
Jetzt kann man beliebig mit Grafana rumspielen und auf die CCU-Historian Daten zugreifen.
Schreibe einen Kommentar