[vz-users] Leerzeichen im identifier macht Probleme

Stefan Bauer spam at stefan-bauer.net
So Jan 31 17:56:47 CET 2021


Wie schon im PV-Forum „angedroht“ hier meine Posting zu meiner Herausforderung:

Ich stelle gerade mein Setup um, dass zählerunabhängige Quellen auch über den vzlogger ausgelesen/geschrieben werde.
Hierbei bin ich bei meinen SMA-WR auf ein kleines Problem gestoßen.
Ich möchte z.b. den „String 1 Pdc“-Wert auslesen. Das übergebe ich meinem Skript und bekomme dafür auch die richtigen Werte ausgelesen..
Allerdings macht die Zuordnung der Ergebnisse Probleme, da hier beim Leerzeichen abgebrochen wird und nur „String“ verwendet wird:


[Jan 30 14:59:26][exec] MeterExec::read: Calling '/usr/local/bin/sma.sh /usr/local/bin/sbfspot.3/SBFspot.cfg_3 3 'ETotal' 'String 1 Pdc' 'String 2 Pdc''
[Jan 30 14:59:28][exec] MeterExec::read: Reading line: '1612015166: ETotal = 49021.064'
[Jan 30 14:59:28][exec] MeterExec::read: string: ETotal, value: 49021.064000, timestamp: 1612015166.000000
[Jan 30 14:59:28][exec] MeterExec::read: Reading line: '1612015166: String 1 Pdc = 337'
[Jan 30 14:59:28][exec] MeterExec::read: string: String, value: 0.000000, timestamp: 1612015166.000000
[Jan 30 14:59:28][exec] MeterExec::read: Reading line: '1612015166: String 2 Pdc = 180'
[Jan 30 14:59:28][exec] MeterExec::read: string: String, value: 0.000000, timestamp: 1612015166.000000
[Jan 30 14:59:28][exec] MeterExec::read: Closing process '/usr/local/bin/sma.sh /usr/local/bin/sbfspot.3/SBFspot.cfg_4 4 'ETotal' 'String 1 Pdc' 'String 2 Pdc''
[Jan 30 14:59:28][mtr7] Got 3 new readings from meter:
[Jan 30 14:59:28][mtr7] Reading: id=ETotal/StringIdentifier: value=49021.06 ts=1612015166000
[Jan 30 14:59:28][mtr7] Reading: id=String/StringIdentifier: value=0.00 ts=1612015166000
[Jan 30 14:59:28][mtr7] Reading: id=String/StringIdentifier: value=0.00 ts=1612015166000
[Jan 30 14:59:28][chn17]Adding reading to queue (value=49021.06 ts=1612015166000)
[Jan 30 14:59:28][mtr7] Next reading in 300 seconds

und der Config-Teil dazu:

{
    "enabled": true,
    "allowskip": true,
    "protocol": "exec",
    "command": "/usr/local/bin/sma.sh /usr/local/bin/sbfspot.3/SBFspot.cfg_3 3 'ETotal' 'String 1 Pdc' 'String 2 Pdc'",
    "format": "$t: $i = $v",
    "interval": 300,
    "channels":  [
        {
            "uuid": "837b77f0-1179-11eb-8689-81509311890b",
            "identifier": "ETotal",
            "middleware": "http://localhost/middleware.php"
        },
                {
            "uuid": "e03cd6c0-1179-11eb-bbd7-9901a8ef87d9",
            "identifier": "String 1 Pdc",
            "middleware": "http://localhost/middleware.php"
        },
                {
            "uuid": "faad54a0-1179-11eb-8913-1d710f7eca9c",
            "identifier": "String 2 Pdc",
            "middleware": "http://localhost/middleware.php"
        }
                ]
    }

Gibt es einen sauberen und einfachen Weg das hinzubekommen? Ich habe es mal mit einem „?“ anstatt dem Leerzeichen als Platzhalter für ein Zeichen probiert, hat aber auch nicht zum Erfolg geführt. Mit „*“ wollte ich es nicht probieren, da mir das ein wenig zu weit gefasst war.

Ich habe es jetzt mit „_“ in der conf abgebildet und in meinem exec-Skript wird jedes „_“ in ein Leerzeichen umgewandelt, aber eine optimale Lösung scheint mir das nich zu sein...

Weitere Ideen?

Gruß
Stefan

Von meinem iPad gesendet
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20210131/ed97c5c1/attachment-0001.html>


Mehr Informationen über die Mailingliste volkszaehler-users