Weichwasseranlage Grünbeck Softliq SC18, InfluxDB und Grafana

Unsere Weichwasseranalge (Grünbeck softliQ SC 18 * Affiliatelink) wurde bisher mittels eines php-Scripts in eine MySQL-DB eingelesen und mittels selbstgeschriebenen Auswertungen angezeigt. Das geht mit Grafana doch schöner.

Ich wollte folgende Werte anzeigen (gibt noch viele mehr, die aber bei permanenter Abfrage der Daten keinen Sinn ergeben).

CodeBeschreibungEinheit
D_Y_1Wasserverbrauch gesternl
D_Y_5Aktueller Regenerationsschritt0= keine Regeneration
1= Soletank füllen
2= Besalzen
3= Verdrängen
4= Rückspülen
5= Erstfiltrat
D_Y_10_1Aktuelle Restkapazität Austauscher%
D_A_1_1Aktueller Durchfluss
D_A_1_2Restkapazitätm³*°dH
D_A_1_3Kapazitätszahlm³*°dH
D_A_2_1Restzeit/-menge Reg.Schrittl oder min
D_A_3_1Letzte Regenerationh
D_A_3_2Prozentsatz der letzten Regeneration%
Verwendete Codes

Python-Code

Der Einfachheit halber bin ich auf Python umgestiegen. Vorher muss die influxdb-python-pip installiert werden:

sudo pip install influxdb

Dann das folgende Script erstellen:

#!/usr/bin/python

import requests

url = 'http://192.168.2.91/mux_http' #URL der Wasserenthaertungsanlage
headers = {'Content-Type': 'application/xml'} #HTTP Post Header

#POST Daten
xml_akt = "getXML(\"id=625&show=D_Y_1|D_Y_5|D_Y_10_1|D_A_1_1|D_A_1_2|D_A_1_3|D_A_2_1|D_A_3_1|D_A_3_2~\",1);"

#POST
data_akt = requests.post(url, data=xml_akt, headers=headers)

#Strings
xml_header = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
xml_footer = ""

import xml.etree.ElementTree as ET

xml_text = xml_header + data_akt.text + xml_footer
xml_text = xml_text.replace("<code>ok</code>","")

root = ET.fromstring(xml_text)

from datetime import datetime
current_time = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")

json_body = [
{
        "measurement": "softliqSC18",
        "time": current_time,
        "fields": {child.tag: float(child.text) for child in root}
}
]

from influxdb import InfluxDBClient
client = InfluxDBClient(database='weichwasser')
client.write_points(json_body)

Das Script fragt die entsprechenden Codes an der Anlage ab, gibt diese als xml zurück welches wir dann analysieren und in die InfluxDB speichern.

Die Tabelle muss vorher im Influx angelegt werden:

influx
> CREATE DATABASE weichwasser

Das Script wird bei mir einfach per Crontab ausgeführt (möglich wäre z.B. auch collectd):

# Fetchen Weichwasserdaten für InfluxDB
* * * * * /usr/bin/python /home/pi/shell/gruenbeck.py

Ich habe mich für das ausführen jede Minute entschieden. Öfter macht glaube ich keinen Sinn und überlastet auch die Schnittstelle. Man bekommt dann nicht immer eine Antwort zurück.

Dashboard

https://grafana.com/grafana/dashboards/12417

Update [08.06.2020]

Ich habe das Python-Script aktualisiert. Der xml-tag „code“ wird entfernt und die Werte vom String in Float gecastet. Die Graphen wurden zwar angezeigt, aber die Werte im Tooltip sowie die Alarme funktionierten nicht.

Sollte das Script schon gelaufen sein einfach die Influx-Tabelle löschen:

influx
> DROP DATABASE weichwasser
> CREATE DATABASE weichwasser

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.