[vz-users] Fehlermeldungen in vzlogger.log
Tilman Glötzner
tilman_1 at gloetzner.net
So Feb 20 12:57:48 CET 2022
Hallo Maik
Klar kann ich die posten. Der Aufruf des Python-scripts mittels exec ist
ganz unten und auskommentiert. Ich probiere jetzt gleich den Hinweis von
Daniel bezüglich der Rechte von /var/log/vzlogger.log aus -- vielleicht
hat das auch einen Einfluss auf den Aufruf des Python-Scripts.
Gruß
Tilman
pi:~ $ cat /etc/vzlogger.conf
{
"retry" : 3,
"daemon": true,
"verbosity" : 3,
"log" : "/var/log/vzlogger.log",
"local" : {
"enabled" : false,
"port" : 8080,
"index" : true,
"timeout" : 30,
"buffer" : 600
},
"meters" : [
{
"enabled" : true,
"device" : "/dev/ttyUSB0",
"protocol" : "sml",
"parity" : "8N1",
"baudrate" : 9600,
"aggtime" : 60,
"aggfixedinterval" : true,
"channels": [{
"uuid" : "aa7aa260-9d5f-11eb-9ee7-8354e1848012",
"middleware" : "http://localhost/middleware.php",
"identifier" : "1-0:2.8.0", /* energy provided to grid */
"aggmode" : "MAX"
}, {
"uuid" : "e6981cd0-9d5d-11eb-ae08-3bff1417be58",
"middleware" : "http://localhost/middleware.php",
"identifier" : "1-0:1.8.0", /* energy taken from grid */
"aggmode" : "MAX"
}, {
"uuid" : "8611bb00-ab89-11eb-a169-25b5fbc43e2c",
"middleware" : "http://localhost/middleware.php",
"identifier" : "1-0:16.7.0", /* Leistung */
"aggmode" : "none"
}]
},
{
"enabled": true,
"allowskip": false,
"interval": -1,
"aggtime": 60,
"aggfixedinterval": false,
"channels": [{
"uuid": "4d1483b0-d75a-11eb-af5d-4d208cf02964",
"identifier": "Impulse",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "sum",
"duplicates": 0
}],
"protocol": "s0",
"gpio": 4,
"configureGPIO": true,
"debounce_delay": 0,
"resolution": 1000
},
{
"enabled": true,
"allowskip": false,
"interval": -1,
"aggtime": 60,
"aggfixedinterval": false,
"channels": [{
"uuid": "418ddf40-d802-11eb-b35f-5da471488f6e",
"identifier": "Impulse",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "sum",
"duplicates": 0
}],
"protocol": "s0",
"gpio": 14,
"configureGPIO": true,
"debounce_delay": 0,
"resolution": 1000
},
{
"enabled": true,
"allowskip": false,
"interval": -1,
"aggtime": 60,
"aggfixedinterval": false,
"channels": [{
"uuid": "1f87bb00-d7d7-11eb-9970-fb2bc024173c",
"identifier": "Impulse",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "sum",
"duplicates": 0
}],
"protocol": "s0",
"gpio": 15,
"configureGPIO": true,
"debounce_delay": 0,
"resolution": 2000
},
{
"enabled": true,
"allowskip": false,
"interval": -1,
"aggtime": 60,
"aggfixedinterval": false,
"channels": [{
"uuid": "a5989d90-d828-11eb-b73f-9fcefccaa74b",
"identifier": "Impulse",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "sum",
"duplicates": 0
}],
"protocol": "s0",
"gpio": 17,
"configureGPIO": true,
"debounce_delay": 0,
"resolution": 1000
},
{
"enabled": true,
"allowskip": false,
"interval": -1,
"aggtime": 60,
"aggfixedinterval": false,
"channels": [{
"uuid": "0a2ab800-dd2a-11eb-8cab-375d0acdab21",
"identifier": "Impulse",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "sum",
"duplicates": 0
}],
"protocol": "s0",
"gpio": 18,
"configureGPIO": true,
"debounce_delay": 30,
"resolution": 200,
"nonblocking_delay": 100000
}
/*,
{
// pv inverter via modbus on tcp an python script
"enabled": true,
"allowskip": true,
"protocol": "exec",
"command": "solaredge.py",
"format": "$t: $i = $v",
"channels": [{
"uuid": "0a2ab800-dd2a-11eb-8cab-375d0acdab22",
"identifier": "Battery1_SOE",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "none",
"duplicates": 14400
},
{
"uuid": "d55f9f40-91e2-11ec-adc5-c55c95f1d814",
"identifier": "Battery1_Temperature",
"api": "volkszaehler",
"middleware": "http://localhost/middleware.php",
"aggmode": "none",
"duplicates": 14400
}]
}
*/
]
}
On 20.02.22 12:10, Maik Weidemann wrote:
> Hi Tilmann,
>
>
>> 'UniqueConstraintViolationException': 'An exception occurred while
>> executing 'INSERT INTO data (channel_id, timestamp, value) VALUES
>> (5,?,?)' with params [1645320720000, 2171064]:
> Die Fehlermeldung sagt, dass du einen Wert oder Werte-Paar doppelt in
> die DB eintragen möchtest du das ist nicht erlaubt, da dieser Wert /
> Werte-Paar nur einmal in der Datenbank vorkommen darf.
>
> Kannst du mal deine ganze Konfig posten? Das Problem hängt ggf. damit
> zusammen, dass etwas im "neuen" und "alten" Bereich deiner
> Konfiguration nicht passt.
>
> Gruß
> Maik
>
>
>
> Am 20.02.22 um 03:18 schrieb Tilman Glötzner:
>> Hallo nochmal,
>>
>> ich habe herausgefunden, dass das erste Problem mit dem zweiten
>> zusammenhängt. Wenn ich den Aufruf des Pythonscripts entferne, kömmen
>> keine Fehlermeldungen "Middleware says duplicate value" mehr. Hier
>> deswegen der Teil der Konfig, den ich auskommentiert habe und das
>> Script:
>>
>> ========== /etc/vzlogger.conf ==========
>>
>> /*,
>> {
>> // pv inverter via modbus on tcp an python script
>> "enabled": true,
>> "allowskip": true,
>> "protocol": "exec",
>> "command": "solaredge.py",
>> "format": "$t: $i = $v",
>> "channels": [{
>> "uuid": "0a2ab800-dd2a-11eb-8cab-375d0acdab22",
>> "identifier": "Battery1_SOE",
>> "api": "volkszaehler",
>> "middleware": "http://localhost/middleware.php",
>> "aggmode": "none",
>> "duplicates": 14400
>> },
>> {
>> "uuid": "d55f9f40-91e2-11ec-adc5-c55c95f1d814",
>> "identifier": "Battery1_Temperature",
>> "api": "volkszaehler",
>> "middleware": "http://localhost/middleware.php",
>> "aggmode": "none",
>> "duplicates": 14400
>> }]
>> }
>> */
>> ========END /etc/vzlogger.conf ==========
>>
>> ======== /usr/local/bin/solaredge.py ========
>>
>> !/usr/bin/python3
>> import solaredge_modbus
>> import datetime
>>
>> inverter = solaredge_modbus.Inverter(host="se7rws.fritz.box", port=1502)
>> battery1 = inverter.batteries()["Battery1"]
>> meter1 = solaredge_modbus.Meter(parent=inverter, offset=0)
>>
>> inverter.connect()
>> if inverter.connected():
>> data0 = inverter.read_all()
>> data1 = battery1.read_all()
>>
>> inverter.disconnect()
>> now = str(int( datetime.datetime.now().timestamp() * 1000 ))
>> soe = str(data1["soe"])
>> temperature = str(data1["average_temperature"])
>> print(now + ': Battery1_Temperature = ' + temperature)
>> print(now + ': Battery1_SOE = ' + str(data1["soe"]))
>>
>> inverter.disconnect()
>>
>> ========END /usr/local/bin/solaredge.py ========
>>
>> Danke und viele Grüße
>>
>> Tilman
>>
>> On 20.02.22 02:45, Tilman Glötzner wrote:
>>> Hallo
>>>
>>> 1) in /var/log/vzlogger.log finde ich nach einen restart des
>>> vzlogger viele Message mit unterschiedlichen ChannelIDs wie folgt.
>>> Was will mir das Log sagen?
>>>
>>> SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '
>>> [Feb 20 02:33:30][chn1] Middleware says duplicated value. Removing
>>> first entry!
>>> [Feb 20 02:33:30][chn1] CURL Error from middleware:
>>> 'UniqueConstraintViolationException': 'An exception occurred while
>>> executing 'INSERT INTO data (channel_id, timestamp, value) VALUES
>>> (5,?,?)' with params [1645320720000, 2171064]:
>>>
>>>
>>> 2) Ausserdem habe ich ein Mini-Pythonscript geschrieben, dass mir
>>> die Temperature und den Ladezustand der Battery von unserer
>>> Solaranlage ausgibt und durch vzlogger (exec) gestartet wird. Die
>>> folgende Fehlermeldung scheint sich darauf zu beziehen. Ich habe
>>> vzlogger über service logger start vom Benutzeraccount pi gestartet.
>>> Das Serviceprogram scheint aber automatisch einen sudo zu starten
>>> und fragt nach dem Benutzerpassword.
>>>
>>> Mir ist daher nicht klar, wie ich vzlogger nicht als root starten
>>> kann -- zumindest wenn "service" verwendet werden soll.
>>>
>>>
>>> Feb 20 02:25:59][main] vzlogger v0.8.0 based on
>>> heads/master-0-gfe937770e4 from Sat, 3 Apr 2021 19:40:20 +0200 started.
>>> [Feb 20 02:25:59][main] log level is 3
>>> [Feb 20 02:25:59][exec] MeterExec::open: MeterExec protocol cannot
>>> be run with root privileges!
>>> [Feb 20 02:25:59][exec] If you really want this,
>>> compile vzlogger with:
>>> [Feb 20 02:25:59][exec] 'cmake -D
>>> METEREXEC_ROOTACCESS=true .'
>>> [Feb 20 02:25:59][mtr6] Cannot open meter
>>> [Feb 20 02:25:59] Skipping meter mtr6
>>> [Feb 20 02:26:22][chn5] Middleware says duplicated value. Removing
>>> first entry!
>>> [Feb 20 02:26:22][chn5] CURL Error from middleware:
>>> 'UniqueConstraintViolationException': 'An exception occurred while
>>> execu
>>> ting 'INSERT INTO data (channel_id, timestamp, value) VALUES
>>> (13,?,?)' with params [1645320382057, 1]:
>>>
>>> Danke und Gruß
>>>
>>> Tilman
Mehr Informationen über die Mailingliste volkszaehler-users