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

Bernd Kisters bernd.kisters at schmithof.de
So Dez 17 00:12:01 CET 2023


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