<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt'>
<p>Hallo Micha.</p>
<p><br /></p>
<p>So sieht bei mir die Config im vzlogger aus, allerdings auch mit übernahme des timestamps aus dem Device:</p>
<p><em>    {</em><br /><em>    "enabled": true,</em><br /><em>    "allowskip": true,</em><br /><em>    "protocol": "exec",</em><br /><em>    "command": "/usr/local/bin/tasmota.sh 192.168.178.229 Total Voltage",</em><br /><em>    "format": "$t: $i = $v",</em><br /><em>    "interval": 10,</em><br /><em>    "channels":  [</em><br /><em>        {</em><br /><em>            "uuid": "07a68c90-4fb6-11ec-8f4d-57cd63a6d62b",</em><br /><em>            "identifier": "Total",</em><br /><em>            "duplicates": 300,</em><br /><em>            "middleware": "http://localhost/middleware.php"</em><br /><em>        },</em><br /><em>        {</em><br /><em>            "uuid": "42a55370-4fb6-11ec-be3f-c7e1228d05e9",</em><br /><em>            "identifier": "Voltage",</em><br /><em>            "duplicates": 300,</em><br /><em>            "middleware": "http://localhost/middleware.php"</em><br /><em>        }]</em><br /><em>    },</em></p>
<p><br /></p>
<p>Und hier das aufgerufene Skript:</p>
<p><em>#!/bin/bash</em><br /><em>set -u</em><br /><em>set -e</em><br /><br /><em>HOSTNAME="$1"</em><br /><em>shift</em><br /><em>READINGS_ARR=( "$@" )</em><br /><br /><em>timestamp=$(date +%s)</em><br /><br /><em>#Define the string value</em><br /><em>text=`curl --silent --connect-timeout 15 -m 60 -s http://$HOSTNAME/cm?cmnd=status%208`</em><br /><br /><em>for KEY in "${READINGS_ARR[@]}"; do</em><br /><em>   value=0</em><br /><em>   value=$(echo "$text" | jq .StatusSNS.ENERGY.$KEY)</em><br /><em>   if [ !  -z  $value  ];</em><br /><em>   then</em><br /><em>      printf "%d: %s = %s\\n" "$timestamp" "$KEY" "$value"</em><br /><em>   else</em><br /><em>      print "No Reading"</em><br /><em>      exit 1</em><br /><em>   fi</em><br /><em>done</em><br /><br /><em>exit 0</em></p>
<p><br /></p>
<p>Evtl. hilft es Dir weiter. Perfekt ist es bestimmt nicht, aber funktioniert bei mir gut ;-)</p>
<p><br /></p>
<p>Gruß</p>
<p>Stefan</p>
<p><br /></p>
<p>Am 25.02.2022 07:14, schrieb Michael Hartmann:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0"><!-- html ignored --><!-- head ignored --><!-- meta ignored -->
<div style="font-family: Verdana; font-size: 12.0px;">
<div> </div>
<div>
<div>Hallo Stefan,</div>
<div> </div>
<div>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?</div>
<div> </div>
<div>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?</div>
<div> </div>
<div>Da middleware und vzlogger bei mir auf dem selben Raspi laufen werden beide aber nur zeitgleich nicht erreichbar sein.</div>
<div> </div>
<div>Grüße</div>
<div> </div>
<div>Micha</div>
<div> 
<div style="margin: 10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left: 2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin: 0 0 10px 0;"><strong>Gesendet:</strong> Donnerstag, 24. Februar 2022 um 21:53 Uhr<br /> <strong>Von:</strong> "Stefan Bauer" <spam@stefan-bauer.net><br /> <strong>An:</strong> "volkszaehler.org - users" <volkszaehler-users@demo.volkszaehler.org><br /> <strong>Betreff:</strong> Re: [vz-users] Leistungsdaten vom Shelly an VZ-DB senden</div>
<div>
<div>Nein, der vzlogger ist kein MQTT Client, sondern kann auch nur die Daten via MQTT versenden.
<div>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…</div>
<div> </div>
<div>Stefan<br />  
<div>Von meinem iPad gesendet</div>
<div> 
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">Am 24.02.2022 um 20:01 schrieb Michael Hartmann <hartmann-micha@web.de>:<br />  </blockquote>
</div>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div>Hallo,<br /> <br /> 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.<br /> <br /> 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.<br /> <br /> Grüße<br /> <br /> Micha<br />  
<div class="gmail_quote">Am 24. Februar 2022 18:56:24 MEZ schrieb "Matthias Schütze" <matthias.schuetze@web.de>:
<blockquote class="gmail_quote" style="margin: 0.0pt 0.0pt 0.0pt 0.8ex; border-left: 1.0px solid #cccccc; padding-left: 1.0ex;">
<pre class="k9mail">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:
</pre>
<blockquote class="gmail_quote" style="margin: 0.0pt 0.0pt 1.0ex 0.8ex; border-left: 1.0px solid #729fcf; padding-left: 1.0ex;">Hallo,<br /> <br /> <br /> <br /> ich nutze einen Shelly 1PM um die von einem Lüftungsgerät (KWL) aufgenommene<br /> Leistung zu messen. Dazu habe ich ein Phyton-Skript das mir via http-Request<br /> die Leistungsdaten vom Shelly abholt, indem es die JSON payload auswertet.<br /> <br /> <br /> <br /> Das Skript führe ich jede Minute via Cronjob aus. Das ist bzgl. Auflösung<br /> für die weitgehend konstante Leistungsaufnahme der KWL ausreichend. Wäre per<br /> Cronjob ja auch nicht schneller machbar.<br /> <br /> <br /> <br /> Ist das minütliche Ausführen des Cronjobs bzgl. Performance für einen Raspi<br /> 3B+ ok?<br /> <br /> Neben den Leistungsdatum kann ich vom Shelly noch den UNIX-Timestamp dazu<br /> bekommen. Macht es Sinn das Leistungsdatum inkl. Timestamp an die Middleware<br /> zu senden. Aktuell lasse ich die Middleware den Timestamp dazu anlegen.<br /> <br /> <br /> <br /> Grüße<br /> <br /> <br /> <br /> Micha<br /> <br /> <br /> <br /> <br /> <br />  </blockquote>
<br /> <br /> <br /> <br />  </blockquote>
</div>
<div>
<div class="k9mail-signature">--<br /> Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<p><br /></p>

</body></html>