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
Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten
Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten
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.
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.
-
- Beiträge: 3442
- Registriert: Sa Feb 20, 2021 9:55 am
- Has thanked: 4 times
- Been thanked: 62 times
Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten
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
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
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten
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:
b) MQTT per mosquitto client pullen, json format auf stdout ausgeben:
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/
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
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.
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.
-
- Beiträge: 3781
- Registriert: Di Feb 25, 2020 9:23 am
- Has thanked: 4 times
- Been thanked: 25 times
Re: Anbindung Daten & Logs an weitere Systeme, z.B. um Ladevorgänge inkl. RFID automatisiert weiterzuverarbeiten
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
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):
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.
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;
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