Im letzten Teil unserer Blogreihe habe ich gezeigt, wie unsere MUC Datenlogger nun auch direkt Datenbanken beschreiben können. Dank Scripting ist dies ganz einfach.
Wie aber werden nun die Daten automatisch generiert und wie übertragen?
Zunächst habe ich ein XSLT-Script erstellt. Diesem Script werden die vom MUC.easyplus generierten XML-Daten übergeben. Das Script transformiert nun die Daten in ein festgelegtes Format. Dazu zählt auch, dass Berechnungen durchgeführt werden können. In meinem Beispiel müssen die Values, also die ganzzahligen Zählerwerte, noch mit der Scale, dem Skalierungsfaktor, multipliziert werden, um den richtigen Wert mit Nachkommastellen zu erhalten.
Im weiteren Schritt habe ich ein Shell-Script erstellt, welches die Datenbank des MUC.easyplus ausliest, die ausgelesenen Daten vom XSLT-Prozessor verarbeiten lässt und anschließend in eine Datei schreibt. Diese Datei wurde nun zeilenweise an den RaspberryPi übertragen und dort in die Datenbank der InfluxDB gespeichert.
#!/bin/bash
exec 1> >(logger -t report) 2>&1
shopt -s nullglob
rm -rf /tmp/reportfiles || true
mkdir /tmp/reportfiles
timestamp=$(date +%s)
mcsvtoxml -m -c | xsltproc –stringparam serial “$SOLAPP_SERIAL” –stringparam timestamp “$timestamp” /mnt/app/report/report.xsl – > /tmp/report.txt
while read line
do
curl -i -XPOST “http://192.168.178.62:8086/write?db=mydb” –data-binary “$line”
done < /tmp/report.txt
Der MUC.easyplus unterstützt neben den Standard-Übertragungsformaten und -arten auch Anwenderspezifische Erweiterungen über Scripting. Die Dateien werden dazu in das Verzeichnis app/reports abgelegt und können so über die Webseite zur Nutzung konfiguriert werden. Die Report-Instanz im Tab Server muss dafür in den Mode „User“ gesetzt werden. Somit wird das zur Instanz passende/gehörende Shell-Script aufgerufen. Instanz 1 ruft daher die Datei report_1.sh auf. Da diese report_1.sh auf die XSLT-Datei report.xsl zugreift, muss diese auch im selben Ordner abgelegt werden.
So parametriert, wird der Report und damit das Senden an die Datenbank alle 15 Minuten durchgeführt. Mit diesen 15-Minuten-Werten lässt sich dann gut analysieren.
Nach dem Schreiben der Werte in die Datenbank kann ich diese nun sehr einfach im Grafana visualisieren.
Da ich gerne einen Wochenvergleich meines Strom- und Wasserverbrauchs anschauen möchte, habe ich noch eine Erweiterung im Grafana – CompareQueries – installiert, mit der solche Vergleiche einfach möglich sind.
Dies zeige ich dann im nächsten Teil unserer Blogreihe.