[vz-users] Anleitung: VZLogger als MQTT-Subscriber

Maik Weidemann m+vz at weidemann.online
So Dez 17 00:17:01 CET 2023


Ja klar... :-)

Du bekommst über die exec-Abfrage keinen Identifier mitgeliefert. Daher 
musst du den Identifier auf dem Channel löschen: "identifier": "",

Viele Grüße
Maik



Am 17.12.23 um 00:12 schrieb Bernd Kisters:
> komplette vzlogger.conf:
>
> {
>     // General settings
>     "verbosity": 15,         // log verbosity (0=log_alert, 
> 1=log_error, 3=log_warning, 5=log_info, 10=log_debug, 15=log_finest)
>     "log": "/var/log/vzlogger/vzlogger.log", // log file, optional
>     "retry": 30,            // http retry delay in seconds
>
>     // Build-in HTTP server
>     "local": {
>         "enabled": false,   // enable local HTTPd for serving live 
> readings
>         "port": 8080,       // TCP port for local HTTPd
>         "index": true,      // provide index listing of available 
> channels if no UUID was requested
>         "timeout": 30,      // timeout for long polling comet requests 
> in seconds (0 disables comet)
>         "buffer": -1        // HTTPd buffer configuration for serving 
> readings, default -1
>                             //   >0: number of seconds of readings to 
> serve
>                             //   <0: number of tuples to server per 
> channel (e.g. -3 will serve 3 tuples)
>     },
>
>         "meters" : [{                            /* Strom 
> Ferraris-Meter */
>              "enabled" : true,
>              "protocol" : "s0",
>              "device" : "/dev/ttyUSB0",
>              "aggtime" : -1,
>              "aggfixedinterval" : false,
>              "channel" : {
>                            "uuid": 
> "5a50f240-6861-11e6-93a2-ebf973f48426",
>                            "middleware" : 
> "http://localhost/middleware.php",
>                            "identifier": "Impulse",
>                            "aggmode" : "none"
>                          }
>            },{                            /* Gas Meter */
>              "enabled" : true,
>              "protocol" : "s0",
>              "device" : "/dev/ttyUSB1",
>              "aggtime" : -1,
>              "aggfixedinterval" : false,
>              "channel" : {
>                            "uuid": 
> "9e966320-888b-11e6-b2b7-fb7e92405315",
>                            "middleware" : 
> "http://localhost/middleware.php",
>                            "identifier": "Impulse",
>                            "aggmode" : "none"
>                          }
>            },
>         {
>              "enabled": true,
>              "allowskip": true,
>              "interval": 30,
>              "aggtime": -1,
>              "aggfixedinterval": false,
>              "channel": [
>                {
>                  "api": "volkszaehler",
>                  "uuid": "799c25f0-9b2f-11ee-9e4b-15d68bad4b80",
>                  "middleware" : "http://localhost/middleware.php",
>                  "identifier": "Power",
>                  "aggmode": "none",
> //                 "duplicates": 0
>                }
>               ],
>               "protocol": "exec",
>               "command": "mosquitto_sub -h 192.168.5.69 -p 32777 -C 1 
> -t evcc/warp2/meter/values  | jq -r '.power'",
>               //"command": "/home/pi/mosquitto_sub.sh",
>               "format": ""
>          }
>       ]
> }
>
>
> On 17.12.2023 00:09, Maik Weidemann wrote:
>> Hallo Bernd,
>>
>> schreibe doch nochmal deine aktuelle Konfiguration.
>> Normalerweise sollte noch ein [chXX] nach dem [mtr2] Eintrag kommen. 
>> Loglevel 15 hast du sicher schon aktive.
>>
>> Grüße
>> Maik
>>
>>
>> Am 16.12.23 um 23:49 schrieb Bernd Kisters:
>>> Einträge im Log sehen inzwischen gut aus. Werte werden aber nicht 
>>> der middleware übergeben. Wie kann ich feststellen warum das nicht 
>>> passiert?
>>>
>>> [Dec 16 23:37:56][exec] MeterExec::read: Calling 'mosquitto_sub -h 
>>> 192.168.5.69 -p 32777 -C 1 -t evcc/warp2/meter/values  | jq -r 
>>> '.power''
>>> [Dec 16 23:37:56][exec] MeterExec::read: Closing process 
>>> 'mosquitto_sub -h 192.168.5.69 -p 32777 -C 1 -t 
>>> evcc/warp2/meter/values  | jq -r '.power''
>>> [Dec 16 23:37:56][mtr2] Got 1 new readings from meter:
>>> [Dec 16 23:37:56][mtr2] Reading: id=/StringIdentifier: value=2.34 
>>> ts=1702766276817
>>> [Dec 16 23:37:56][mtr2] waiting 30 seconds before next reading
>>>
>>>
>>> On 16.12.2023 22:29, Tobias Baumann wrote:
>>>> Hallo Bernd
>>>>
>>>>
>>>> es fehlt der identifier , dein sh produziert string: null
>>>>
>>>> gleichzeitig timestamp -1 geht auch nicht , hinweis diesen kann man 
>>>> auch weglassen dann nimt vzlogger die von sich selber
>>>>
>>>>
>>>> Am 16.12.2023 um 20:14 schrieb Maik Weidemann:
>>>>> Hallo Bernd,
>>>>>
>>>>>> [Dec 16 19:14:47][mtr2] Got 1 new readings from meter: 
>>>>> Hier hat er doch einen Wert gelesen, dass ist schon ein 
>>>>> Fortschritt gegenüber deinen Ursprungspost. Der hatte er Null new 
>>>>> readings.
>>>>>
>>>>> Hast du noch ein Format in deiner Konfig jetzt drin? mach dort 
>>>>> doch jetzt nur einen leeren String "". Du lieferst ja nur eine Zahl.
>>>>>
>>>>> Viele Grüße
>>>>> Maik
>>>>>
>>>>> Am 16.12.23 um 19:17 schrieb Bernd Kisters:
>>>>>> Über script erhalte ich ähnliche Ergebnisse im Log.
>>>>>>
>>>>>> [Dec 16 19:14:47][exec] MeterExec::read: Calling 
>>>>>> '/home/pi/mosquitto_sub.sh'
>>>>>> [Dec 16 19:14:47][exec] MeterExec::read: Reading line: '2.46'
>>>>>> [Dec 16 19:14:47][exec] MeterExec::read: string: <null>, value: 
>>>>>> 2.460000, timestamp: -1.000000
>>>>>> [Dec 16 19:14:47][exec] MeterExec::read: Closing process 
>>>>>> '/home/pi/mosquitto_sub.sh'
>>>>>> [Dec 16 19:14:47][mtr2] Got 1 new readings from meter:
>>>>>> [Dec 16 19:14:47][mtr2] Reading: id=<null>/StringIdentifier: 
>>>>>> value=2.46 ts=1702750487103
>>>>>> [Dec 16 19:14:47][mtr2] waiting 30 seconds before next reading
>>>>>>
>>>>>> Wer ist jetzt über Script auf 2 Stellen gerundet. Hat aber keinen 
>>>>>> Effekt.
>>>>>> Ich habe keine Ahnung was es noch bedarf, dass die Werte auch in 
>>>>>> die DB geschrieben werden.
>>>>>>
>>>>>> On 16.12.2023 18:28, Stefan Bauer wrote:
>>>>>>> Evtl liegt es auch an dem Hochkomma in dem Kommando…
>>>>>>> Ich würde das mqtt Kommando in ein Script speichern und dann im 
>>>>>>> vzlogger nur das Script aufrufen. Wenn es mehrfach benötigt 
>>>>>>> wird, dann IP-Adresse und Abrufwert als Parameter übergeben…
>>>>>>>
>>>>>>> Von meinem iPad gesendet
>>>>>>>
>>>>>>>> Am 16.12.2023 um 14:24 schrieb Rupert Schöttler 
>>>>>>>> <rupert.schoettler at gmx.de>:
>>>>>>>>
>>>>>>>> Hi Bernd,
>>>>>>>>
>>>>>>>>> Am 16.12.23 um 13:24 schrieb Bernd Kisters:
>>>>>>>>> die Antwort nach dem Aufruf
>>>>>>>>>      mosquitto_sub -h 192.168.5.69 -p 32777 -C 1 -t
>>>>>>>>> evcc/warp2/meter/values  | jq -r '.power'
>>>>>>>>> erfolgt unmittelbar. Die Ausgabe ist dann der z.B. Wert 2.4136343
>>>>>>>>>
>>>>>>>>> Wie kann ich mit dem "Format = $v" die Nachkommestellen auf 2
>>>>>>>>> reduzieren?`
>>>>>>>>
>>>>>>>> Ich glaube zwar nicht, dass die Nachkommastellen das Problem 
>>>>>>>> sind, aber
>>>>>>>> mir fallen spontan diese beiden Möglichkeiten ein:
>>>>>>>>
>>>>>>>> 1. Die Quelle liefert sie gleich "richtig" an den MQTT-Kanal.
>>>>>>>>
>>>>>>>> 2. Du machst einen weiteren Pipe-Befehl | nach bc oder einem 
>>>>>>>> ähnlichen
>>>>>>>> Programm, das runden kann. Suchmaschinen oder ChatGPT helfen 
>>>>>>>> Dir für die
>>>>>>>> genaue Syntax.
>>>>>>>>
>>>>>>>>
>>>>>>>> Vielleicht magst Du aber erst mal testen, ob ein exec-Befehl wie
>>>>>>>>
>>>>>>>> echo 2.41
>>>>>>>>
>>>>>>>> erfolgreich eingelesen wird. Vielleicht liegt's ja auch am 
>>>>>>>> Dezimal-Punkt
>>>>>>>> statt Komma oder was ganz anderem.
>>>>>>>>
>>>>>>>>
>>>>>>>> Viel Erfolg wünscht
>>>>>>>>
>>>>>>>> Rupert
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



Mehr Informationen über die Mailingliste volkszaehler-users