Seite 1 von 1

Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten

Verfasst: So Apr 03, 2022 10:00 pm
von Chargee
Hallo liebes Forum,

ich würde gerne von meiner OpenWB verschiedene Daten auf ein anderes System loggen und dort auslesen. Dies geschieht ja am besten per pullen des integrierten MQTT Brokers auf der OpenWB, soweit ich gelesen habe. Hierüber den EVU auszulesen sieht auch einfach machbar aus. Wenn es jetzt darum geht, die einzelnen Ladevorgänge zu loggen und auch das dafür zum Freischalten benutzte Token / RFID Tag zu loggen, wie würde man das am besten anstellen?

Vielen Dank für die Unterstützung und viele Grüsse,
Oliver

Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten

Verfasst: Mo Apr 04, 2022 3:11 pm
von Chargee
Hallo,

um das kurz etwas weiter beschreiben, um was es geht und wie es gehen könnte.

Ganz allgemein: Es gibt schon einen Server im Haushalt, auf dem die tagtäglich anfallenden Daten auflaufen und auch ein wenig ausgewertet werden. Dort sollten idealerweise nun auch die OpenWB Daten dazu und dann die eine oder andere Auswertung, Aufbereitung, Folgeverarbeitung angestossen werden.

Konkret geht es um folgende zwei Fälle:
1) Den Hausverbrauch mitschreiben (mittels EVU-Daten)
2) Die Lagevorgänge mitschreiben, inkl. geladenem Strom und RFID Tag oder Fahreug-ID

Was ich soweit gelesen bzw. gefunden habe:
Ganz allgemein:
- Der SSH Zugang ist per default nicht möglich. Optional geht es, man installiert dafür die nightly und frägt den root-Zugriff an.
- Alle Zustands-Werte werden in Echtzeit per MQTT bereitgestellt. Dafür läuft auf der OpenWB ein MQTT Broker auf Port 1883.
- Mehr Infos zu MQTT-Abfragen in diesem Forumthread: viewtopic.php?f=6&t=577
- Zum interaktiven Testen gibt es den MQTT-Explorer: http://mqtt-explorer.com/
- Schon fix und fertig vorbereitete CSVs finden sich auf jeder OpenWB hier zum downloaden: http://hostname/openWB/web/logging/data/
- Header (Feldstruktur) für die Monthly CSV: http://hostname/openWB/web/logging/data/v001/
- Mehr Infos dazu in diesem Forumthread: viewtopic.php?f=4&t=3018
- Ein low level Zugriff auf verschiedene Felder ist auch hier möglich: http://hostname/openWB/ramdisk/

Bei einigen Sachen ist mir aber noch nicht ganz klar, wie ich das am geschicktesten anstelle. Wenn mir da jemand helfen könnte, wäre das toll - danke!
a) SSH Zugang: Wie ist denn das normale Vorgehen, um einen SSH Zugang zu bekommen? Nightly installieren und dann fragen? Wo oder wen frage ich denn dafür?
b) Um an den Hausverbrauch zu kommen, macht es wahrscheinlich am meisten Sinn per MQTT das Topic openWB/global/WHouseConsumption abzufragen?
c) Für die Ladevorgänge sind die ladelog-csvs unter http://192.168.250.101/openWB/web/logging/data/ladelog/ ja eine sehr sinnvolle Variante. Nur ist es anbindungstechnisch etwas umständlich, regelmäßig den OpenWB Webservice zu pollen und dann neue Dateien herunterzuladen. Am schönsten wäre es, wenn man sich die Ladevorgänge als Events (z.B. als JSON Blobs) zuschicken könnte. Liese sich auf einer OpenWB dafür Linux native Tools wie z.B. collectd ( https://collectd.org/ ) nutzen? Das wäre ein generischer Ansatz um verschiedenste Daten aus OpenWB an andere Systeme pushen zu können. Collectd hat z.B. auch ein MQTT modul.

Vielen Dank schonmal für die Hilfe.

Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten

Verfasst: Mo Apr 04, 2022 4:02 pm
von Gero
Wenn du eine gekaufte openWB hast, gibt es den ssh-Zugang vom support gegen Verzicht auf Garantie etc. Nightly oder nicht, tut da glaube ich nichts zur Sache.

Mit MQTT abonniert man doch die Topics, die einen interessieren. So sollte doch jede Datenänderung übertragen werden. War da nicht auf heise+ nicht die Tage mal ein Artikel, der sowas tutorialt hat? (MQTT, Postgres und Grafana)

Ah, gefunden: https://www.heise.de/ratgeber/Guenstige ... ?seite=all

Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten

Verfasst: Mo Apr 04, 2022 10:04 pm
von Chargee
Ja, es ist eine fertig von der Stange gekaufte OpenWB.

Danke für den Link auf Heise und den Hinweis auf die Garantie bzgl SSH Zugang.

Die Schwierigkeit ist ja im Endeffekt nicht MQTT zu nutzen, sondern sich selber eine die benötigten Services hinzustellen, um die angebotenen Anbindungen auszulesen. In diesem Fall Webfolders zu syncen (für das Ladelog) und die MQTT Topics abzufragen. Einen MQTT-Broker a la HiveMQ hat man ja nicht unbedingt schon daheim, oder einen MQTT-Übersetzer auf Syslog/etc.. Als nächstes gilt es dann die Formate der Logfiles zu verstehen (ein "03.04.22-11:55" ist kein ISO timestamp, ein "1 H 36 Min" ist keine platte Sekunden-Integer).
Da drückt man dann schon eine oder zwei Tränen ab, wenn man sonst verbreitete Tools wie syslog, collectd oder die lokalen Agenten von Grafana, Splunk, etc. verwendet, um Daten in Standard-Formaten auszulesen.

Um bei den angebotenen Schnittstellen zu bleiben, habe ich jetzt folgendes gemacht:
a) Ladelog per Webfolder-Sync pollen, limitiert auf die letzten beiden Files (damit man den monats-rollover hinbekommt und per logrotate aufräumen kann). Läuft als cronjob:

Code: Alles auswählen

wget -r --no-parent --timestamping --no-cookie -A $(date --date="this month" +"%Y%m" ).csv -A $(date --date="last month" +"%Y%m" ).csv --wait=2 --no-directories --no-host-directories --no-check-certificate -e robots=off --no-proxy --directory-prefix $OUTDIR http://myOpenWb.intern/openWB/web/logging/data/ladelog/
b) MQTT per mosquitto client pullen, json format auf stdout ausgeben:

Code: Alles auswählen

mosquitto_sub -F %j -h myOpenWb.intern -p 1883 -t openWB/system/Version -t openWB/system/priceForKWh -t openWB/global/WHouseConsumption -t openWB/global/kWhCounterAllChargePoints

Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten

Verfasst: Fr Jul 01, 2022 2:11 pm
von Chargee
Wie oft wird denn das Ladelog unter http://myOpenWb.intern/openWB/web/logging/data/ladelog/* geschrieben?

Ich hatte gerade den Fall, das ein Ladevorgang dort nicht eingetragen war. In der WebGUI Seite "Ladelog" stand er schon drinnen. Als ich die OpenWB neu gestartet hatte, wurde er dann da reingeschrieben (war ca. ein Tag nach Ladevorgang). Auch noch, obwohl es inzwischen schon ein Ladevorgang aus der Vormonat Juni war, also das aktuelle Ladelog-File inzwischen ein anderes war. Ich hatte kurz versucht das im Github zu verstehen, bin aber nicht sonderlich weit gekommen.

Eigentlich wollte ich die Ladelogs unter http://myOpenWb.intern/openWB/web/logging/data/ladelog/* nutzen, um dort regelmäßig und zeitnah die Ladevorgänge auslesen. Jetzt bin ich mir gerade nicht sicher, ob das wirklich ein guter Ansatz dafür ist.

Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten

Verfasst: Fr Jul 01, 2022 3:22 pm
von LutzB
Das dürfte ein Problem mit dem Browser-Cache sein. Die Dateien sind immer aktuell und die Webseiten nutzen das auch als Datenquelle.

Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten

Verfasst: Sa Jul 02, 2022 8:03 pm
von Chargee
Hi, ja, danke, auch für die bestätigung dass die dateien aktuell sind. Trotz mehrmaligen F5-Reload ist mir das wirklich passiert. Auch mit wget. Merkwürdig. Ich hab wget jetzt mit --no-cache versorgt und ein paarmal getestet, schien jetzt zu funktionieren.

Etwas hemdsärmelig, aber es macht seinen Job. Falls es jemand gebrauchen kann (wb_garage ist eingetragen, aber nicht in verwendung, weil sie als slave von wb_draussen mitläuft):

Code: Alles auswählen

#!/bin/bash

curfile=$(date --date="this month" +"%Y%m").csv
oldfile=$(date --date="last month" +"%Y%m").csv
files=($curfile $oldfile)

wb_getdir="openWB/web/logging/data/ladelog"
userdir="/home/ingressuser"
outdir="$userdir/logDrehscheibe/openWb/downloadTmp"
finaldir="$userdir/logDrehscheibe/openWb/finaldir"

wb_draussen="http://myopenwb1.domain.intern"
dir_draussen="openWbDraussen"
outfileprefix_draussen="draussen_"

wb_garage="http://myopenwb2.domain.intern"
dir_garage="openWbGarage"
outfileprefix_garage="garage_"

#file=           202207.csv
dldir="$wb_draussen/$wb_getdir"
#dluri=          http://myopenwb1.domain/openWB/web/logging/data/ladelog       /202207.csv
outdirmod="$dir_draussen"
dloutdirtmp="$outdir/$outdirmod"
#dloutdirtmp=    ~/logDrehscheibe/openWb/downloadTmp/openWbDraussen
#dloutdirfile=   ~/logDrehscheibe/openWb/downloadTmp/openWbDraussen            /202207.csv
outtacfiledir="$outdir/$outdirmod/$outfileprefix_draussen"
#tacfile=        ~/logDrehscheibe/openWb/downloadTmp/openWbDraussen/draussen_   202207.csv
outfinalfiledir="$finaldir/$dir_draussen/$outfileprefix_draussen"
#finalfile=      ~/logDrehscheibe/openWb/finaldir/openWbDraussen/draussen_      202207.csv

for file in "${files[@]}"
do
	echo "--- processing file: $file"
	dluri=$dldir/$file
	dloutdirfile=$dloutdirtmp/$file
	tacfile=$outtacfiledir$file
	finalfile=$outfinalfiledir$file
	echo "wget --- $dluri ---  into --- dloutdirfile: $dloutdirfile"
	wget --wait=2 --no-cache --no-parent --no-cookie --no-directories --no-host-directories --no-check-certificate -e robots=off --no-proxy -O $dloutdirfile $dluri
	echo "reverse lines --- $dloutdirfile --- into: --- $tacfile"
	tac $dloutdirfile | grep -v '^$' > $tacfile
	echo "copy --- $tacfile --- into: --- $finalfile"
	cp $tacfile $finalfile
	echo "--- done with: $file"
	echo
done

echo "--- finish. clearing old files from: $outdir"
find $outdir -regextype posix-egrep -regex ".*/(garage|draussen)_[0-9]+\.csv" -type f -mtime +731 -delete;
echo "--- finish. clearing old files from: $finaldir"
find $finaldir -regextype posix-egrep -regex ".*/(garage|draussen)_[0-9]+\.csv" -type f -mtime +731 -delete;
Den Abruf des Stromverbrauchs am EVU per MQTT habe ich noch angepasst. Der o.g. Befehl hatte zwar den Hausverbrauch, aber nicht den Ladeverbrauch / Gesamtverbrauch abgerufen.

Code: Alles auswählen

mosquitto_sub -F %j -h myOpenWb1.domain.intern -p 1883 -i 1 -t openWB/evu/W -t openWB/global/WHouseConsumption -t openWB/global/WAllChargePoints -t openWB/global/kWhCounterAllChargePoints -t openWB/lp/1/W -t openWB/lp/2/W -t openWB/lp/3/W