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.schoett...@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








Antwort per Email an