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:
Code
[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
Alles anzeigen
und der Config-Teil dazu:
Code
{
"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"
}
]
}
Alles anzeigen
Gibt es einen sauberen und einfachen Weg das hinzubekommen? Von der Theorie her könnte ich die Leerzeichen durch Unterstriche ersetzten und im Skript wieder umwandeln, das ist aber schlecht für die Handhabung finde ich...
Any ideas?
Stefan