[vz-users] Leistungsdaten vom Shelly an VZ-DB senden

spam at stefan-bauer.net spam at stefan-bauer.net
Fr Feb 25 13:07:39 CET 2022


Hallo Micha. 

So sieht bei mir die Config im vzlogger aus, allerdings auch mit
übernahme des timestamps aus dem Device: 

_    {_
_    "enabled": true,_
_    "allowskip": true,_
_    "protocol": "exec",_
_    "command": "/usr/local/bin/tasmota.sh 192.168.178.229 Total
Voltage",_
_    "format": "$t: $i = $v",_
_    "interval": 10,_
_    "channels":  [_
_        {_
_            "uuid": "07a68c90-4fb6-11ec-8f4d-57cd63a6d62b",_
_            "identifier": "Total",_
_            "duplicates": 300,_
_            "middleware": "http://localhost/middleware.php"_
_        },_
_        {_
_            "uuid": "42a55370-4fb6-11ec-be3f-c7e1228d05e9",_
_            "identifier": "Voltage",_
_            "duplicates": 300,_
_            "middleware": "http://localhost/middleware.php"_
_        }]_
_    },_ 

Und hier das aufgerufene Skript: 

_#!/bin/bash_
_set -u_
_set -e_

_HOSTNAME="$1"_
_shift_
_READINGS_ARR=( "$@" )_

_timestamp=$(date +%s)_

_#Define the string value_
_text=`curl --silent --connect-timeout 15 -m 60 -s
http://$HOSTNAME/cm?cmnd=status%208`_

_for KEY in "${READINGS_ARR[@]}"; do_
_   value=0_
_   value=$(echo "$text" | jq .StatusSNS.ENERGY.$KEY)_
_   if [ !  -z  $value  ];_
_   then_
_      printf "%d: %s = %s\\n" "$timestamp" "$KEY" "$value"_
_   else_
_      print "No Reading"_
_      exit 1_
_   fi_
_done_

_exit 0_ 

Evtl. hilft es Dir weiter. Perfekt ist es bestimmt nicht, aber
funktioniert bei mir gut ;-) 

Gruß 

Stefan 

Am 25.02.2022 07:14, schrieb Michael Hartmann:

> Hallo Stefan, 
> 
> danke für den Hinweis das vzlogger auch nur als MQTT Client agieren kann. Deine Vorgehensweise via exec aus vzlogger ist ja analog zu der von Matthias. Ich bin nicht sicher ob ich das hinbekomme. Was ich dazu gestern abend im Wiki gelesen habe erschien mir sehr kompliziert. Magst du mal ein Beispiel aus deiner vzlogger.conf senden? 
> 
> Den timestamp aus vzlogger und die Pufferfunktion bekommt man nur mittels Abfrage mittels exec. Dann speichert vzlogger das Datum mit timestamp der Abfrage zwischen - korekt? 
> 
> Da middleware und vzlogger bei mir auf dem selben Raspi laufen werden beide aber nur zeitgleich nicht erreichbar sein. 
> 
> Grüße 
> 
> Micha 
> 
> GESENDET: Donnerstag, 24. Februar 2022 um 21:53 Uhr
> VON: "Stefan Bauer" <spam at stefan-bauer.net>
> AN: "volkszaehler.org - users" <volkszaehler-users at demo.volkszaehler.org>
> BETREFF: Re: [vz-users] Leistungsdaten vom Shelly an VZ-DB senden 
> 
> Nein, der vzlogger ist kein MQTT Client, sondern kann auch nur die Daten via MQTT versenden. 
> Ich habe etliche Tasmota-Sensoren, von denen ich auch die „Zählerstände" auslese. Ich mache das jedoch mittels exec-Kommando aus dem vzlogger raus. Ich persönlich halte es hierbei für besser, wenn der Timestamp vom vzlogger genutzt wird. Ist damit für alle Geräte gleich und sollte die middleware mal nicht erreichbar sein, werden die Daten mit korrektem Timestamp gepuffert… 
> 
> Stefan
> 
> Von meinem iPad gesendet 
> 
>> Am 24.02.2022 um 20:01 schrieb Michael Hartmann <hartmann-micha at web.de>:
> 
> Hallo,
> 
> das sieht interessant aus, aber auch kompliziert (der http-Request). Ich schau mir dein Beispiel an. Evtl. verstehe ich es und kann es auf meine Anwendung übertragen.
> 
> NodeRed (MQTT ?) wäre auch ein Weg. Ich habe verstanden, das vzlogger als MQTT client Daten von einem entsprechenden Server abrufen kann. Bzgl. Haus-Automation bin ich aber noch ganz am Anfang. Daher macht das ggf. später Sinn.
> 
> Grüße
> 
> Micha
> 
> Am 24. Februar 2022 18:56:24 MEZ schrieb "Matthias Schütze" <matthias.schuetze at web.de>: 
> 
> Hallo,
> 
> bei mir werden solcherart JSON Ausgaben über ein "exec-Meter" mit dem vzlogger
> ausgelesen. Als Beispiel hier die Ausgabe meines Fronius-Wechselrichters. Auszug
> aus der meters-Konfiguration in /etc/vzlogger.conf:
> 
> {
> "enabled": true,
> "allowskip": true,
> "protocol": "exec",
> "command": "curl -s 'http://fronius/solar_api/v1/GetPowerFlowRealtimeData.fcgi' | jq . | sed -n 's/[^A-Z0-9.:;_-]//gi;s/:/ = /;/SOC/p;/P_Akku/p;/P_PV/p;/P_Grid/p;/P_Load/p'",
> "format": "$i = $v",
> "interval": 30,
> "aggtime": -1,
> "channels":  [
> {
> "api": "volkszaehler",
> "uuid": "29a2c6a0-08bb-11eb-90ee-XXXXXXXXXXXX",
> "identifier": "SOC",
> "middleware": "http://localhost/volkszaehler.org/htdocs/middleware.php",
> }, {
> "api": "volkszaehler",
> "uuid": "6e2b7280-08e2-11eb-a17d-XXXXXXXXXXXX",
> "identifier": "P_Akku",
> "middleware": "http://localhost/volkszaehler.org/htdocs/middleware.php",
> }, {
> "api": "volkszaehler",
> "uuid": "cafffec0-08e2-11eb-98e9-XXXXXXXXXXXXX",
> "identifier": "P_Grid",
> "middleware": "http://localhost/volkszaehler.org/htdocs/middleware.php",
> }, {
> "api": "volkszaehler",
> "uuid": "fb2d5140-0d1d-11eb-9783-XXXXXXXXXXX",
> "identifier": "P_Load",
> "middleware": "http://localhost/volkszaehler.org/htdocs/middleware.php",
> }, {
> "api": "volkszaehler",
> "uuid": "dc944600-08e3-11eb-a00b-XXXXXXXXXXX",
> "identifier": "P_PV",
> "middleware": "http://localhost/volkszaehler.org/htdocs/middleware.php",
> }
> 
> ]
> }
> 
> Die curl-Ausgabe liefert die JSON-Daten,
> jq formatiert diese
> und mit sed wird jongliert, um das Format "Identifier = Value" (also "$i = $v") für
> die gewünschten Werte zu erhalten.
> Es ist nicht zu erkennen, dass dies den Raspi irgendwie überfordern würde.
> 
> Gruß
> Matthias
> 
> Am Donnerstag, 24. Februar 2022, 17:27:35 CET schrieb Michael Hartmann:
> 
> Hallo,
> 
> ich nutze einen Shelly 1PM um die von einem Lüftungsgerät (KWL) aufgenommene
> Leistung zu messen. Dazu habe ich ein Phyton-Skript das mir via http-Request
> die Leistungsdaten vom Shelly abholt, indem es die JSON payload auswertet.
> 
> Das Skript führe ich jede Minute via Cronjob aus. Das ist bzgl. Auflösung
> für die weitgehend konstante Leistungsaufnahme der KWL ausreichend. Wäre per
> Cronjob ja auch nicht schneller machbar.
> 
> Ist das minütliche Ausführen des Cronjobs bzgl. Performance für einen Raspi
> 3B+ ok?
> 
> Neben den Leistungsdatum kann ich vom Shelly noch den UNIX-Timestamp dazu
> bekommen. Macht es Sinn das Leistungsdatum inkl. Timestamp an die Middleware
> zu senden. Aktuell lasse ich die Middleware den Timestamp dazu anlegen.
> 
> Grüße
> 
> Micha

--
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20220225/f76911f6/attachment.html>


Mehr Informationen über die Mailingliste volkszaehler-users