Hier möchte ich ein kleines Mini-Tutorial zur Verfügung stellen, wie man recht einfach Daten aus Symcon in Grafana visualisiert oder analysiert. Ich werde in Grafana selbst nicht ins Detail gehen, sonder hier in erster Linie aufzeigen was man braucht und wie die Datenübergabe funktioniert. Habe mich mit Grafana auch erst ein paar Tage auseinandergesetzt und lerne noch täglich dazu. Für mich war das ganze aber einfacher als HighCharts, mit welchem ich nie so zurecht kam. Linux und oder Docker Kenntnisse sind hier Voraussetzungen. Ich selbst habe keiner Ahnung von Programmierung und bin daher immer von anderer Leute Kenntnis angewiesen. So mal als kleiner Disclaimer
Als kleine Veranschaulichung ein Bildchen meiner Batterievisualisierung.
Was wird benötigt:
[ul]
[li]Symcon[/li][li]influxdb <-- Datenbank[/li][li]Grafana <-- Visu[/li][/ul]
auf welchen Systemen ihr diese 3 laufen lasst bleibt euch überlassen. Mein Favorit ist natürlich Docker, da ich sie alle auf meiner Synology Diskstation laufen lassen kann und mir um Backups oder defekte SD Karten keine Sorgen machen muss.
Raspi
Hier eine kleine Anleitung für die Installation von influxdb und Grafana.
Den „Telegraf“ Anteil könnt ihr in der Anleitung weglassen…
Ein Kollege hat diese Anleitung erfolgreich genutzt. Mehr kann ich zum Raspi jetzt aber nicht sagen, da ich alles im Docker laufen lasse, weshalb ich dort mehr ins Detail gehe.
Docker
docker run -d --name influxdb -p 8086:8086 -v /volume1/docker/influxdb:/var/lib/influxdb influxdb
Auf der Synology dem User SYSTEM RW Rechte für grafana Ordner geben ! Sonst läuft der Container nicht.
docker run -d --name grafana -p 3000:3000 -v /volume1/docker/grafana:/var/lib/grafana grafana/grafana
Das Datenbanksystem „influxdb“ hat selber keine Weboberfläche, welche aber auch nicht benötigt wird, da wir nur ein Commando zum anlegen einer Datenbank brauchen.
Datenbank „spannungen“ erstellen:
curl -i -XPOST http://IPADRESSE_influxdb:8086/query --data-urlencode "q=CREATE DATABASE spannungen"
Nun kommen wir zu dem symcon Anteil. Hier einmal vielen Dank an Stephan. Das Scypt habe ich aus seinem Blog.
Um in meinem Beispiel die Batteriespannung in die zuvor angelegte Datenbank „spannungen“ in influxdb zu schreiben legen wir ein Scypt an welches wir nachher bei Variablenaktualisierung triggern.
Zeile 2: IP Adresse und Datenbankname von influxdb
Zeile 4: Variable eintragen (Bei mir „Batteriespannung“ siehe Screenshot)
Zeile 9: Hier denkt ihr euch eine Struktur aus. Am besten legt ihr euch eine Exel Datei an um zu gucken wie für euch die Struktur nachher am besten passt. z.B. Tabllenblatt „sma“ (sma ist mein Hersteller der PV WR usw); Spalte „batterie“; Zeile „gesamt“; (value ← kann man auch bezeichnen wie man mag… )
<?
$out ="http://192.168.2.2:8086/write?db=spannungen";
$spannung = GetValueFloat(57296 /*[PHP_Module\SMA\Sunny Island 8.0H\Batteriespannung]*/) ;
$ch = curl_init($out);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, "sma,SunnyIsland=batteriegesamt value=" . $spannung );
$result=curl_exec ($ch);
$error=curl_error($ch) ;
echo $result ;
echo $error ;
?>
Script ausführen… es sollte kein Fehler erscheinen. Falls es ein Formatierungsfehler beim übergeben der Variable mit „Komma“ kommt, bitte Zeile 9 wie folgt abändern. (Bei mir gehts wie oben beschrieben… bei einem Kollegen nur mit Anpassung)
curl_setopt($ch, CURLOPT_POSTFIELDS, "sma,SunnyIsland=batteriegesamt value=" . number_format($spannung/1,1,'.','') );
Wenn ihr wollt, könnt ihr im Terminal vom Docker Container über einen Befehl nachschauen ob euer Wert erfolgreich geschrieben wurde.
curl -G 'http://192.168.2.2:8086/query?pretty=true' --data-urlencode "db=spannungen" --data-urlencode "q=SELECT "value" FROM "sma" WHERE "SunnyIsland"='batteriegesam'"
Als Ergebnis erhaltet ihr dann den oder die geschriebenen Werte.
Grafana
Kommen wir nun zur Anzeige der Werte als Beispiel ein „SingleStat“ im Gauge Format.
Grafana erreicht ihr über http://IPADRESSE_GRAFANA:3000
Legt euch zu allererst ein neues Dashboard an… dann oben rechts „AddPanel“ -> „SingleStat“
Sollte dann so aussehen.
Nun klickt ihr oben auf die Bezeichnung…dann auf „Edit“
Datenbank auswählen und in der Queryabfrage die entsprechenden Felder per dropdown auswählen.
(Im folgenden Screenshot hab ich leicht andere Bezeichnungen als oben im Script… nicht wundern)
Im Reiter „Options“ hakt ihr „Gauges“
Es gibt noch viel mehr Möglichkeiten, aber dafür bitte in die Doku schauen oder sich auf der Grafana Seite Beispiele anschauen.