Hallo,
ich lese bei mir per Modbus meine Victron-PV-Laderegler aus und zwar die Momentanleistung und den Tagesertrag.
Da wird für jeden PV-String der Tagesertrag ausgelesen. Leider macht das Victron so, dass wenn es irgendwann dunkel ist, der
Tagesertragszähler auf Null zurückgesetzt wird. Ich sehe also abends als Tagesertrag immer Null.
Der Tagesertragszähler soll aber nicht auf Null gesetzt werden, wenn es dunkel wird sondern eben immer um Mitternacht.
Unten stehen die Devicelistings, es geht um die beiden Readings PV_Yield_Tracker1 und PV_Yield_Tracker2
Kann man das irgendwie elegant und einfach lösen ?
Viele Grüße
Ralf
Internals:
BUSY 0
CHANGED
DEF 1 5 192.168.178.19:502 TCP
DEST 192.168.178.19:502
DeviceName 192.168.178.19:502
FD 65
INTERVAL 5
IODev Victron_PV_Power_Charger_2
MODBUSID 1
NAME Victron_PV_Power_Charger_2
NR 1559
PARTIAL
PROTOCOL TCP
RAWBUFFER
REQUESTHEX 00f60000000601030e7c0001
STATE MPPT 1 : 256 W / MPPT 2 : 247 W / Day 1: 1.1 kWh / Day 2: 1.1 kWh
TYPE ModbusAttr
getList
setList
QUEUE:
Readings:
2023-01-14 13:32:46 PV_Power_Tracker1 256
2023-01-14 13:32:46 PV_Power_Tracker2 247
2023-01-14 13:32:46 PV_Yield_Tracker1 11
2023-01-14 13:32:46 PV_Yield_Tracker2 11
2023-01-08 10:43:32 state opened
Defptr:
1:
Gotreadings:
PV_Power_Tracker1 256
PV_Power_Tracker2 247
PV_Yield_Tracker1 11
PV_Yield_Tracker2 11
Helper:
buffer
lrecv 1673699566.79269
lsend 1673699566.77017
Lastread:
h03708 1673699566.79767
h03709 1673699566.64399
h03724 1673699566.3539
h03725 1673699566.47953
Attributes:
alias String 1: Garage Süd / String 2: Ost-West
dev-h-defPoll 1
event-on-change-reading .*
obj-h03708-reading PV_Yield_Tracker1
obj-h03709-reading PV_Yield_Tracker2
obj-h03724-reading PV_Power_Tracker1
obj-h03725-reading PV_Power_Tracker2
room 6_Photovoltaik
stateFormat {sprintf("MPPT 1 : %.0f W", (ReadingsNum($name,"PV_Power_Tracker1",0)/1 )).sprintf(" / MPPT 2 : "). sprintf("%.0f W", ReadingsNum($name,"PV_Power_Tracker2",0)/1). " / Day 1: ".sprintf("%.1f kWh", ReadingsNum($name,"PV_Yield_Tracker1",0)/10)." / Day 2: ".sprintf("%.1f kWh", ReadingsNum($name,"PV_Yield_Tracker2",0)/10)}
userattr dev-h-defPoll event-on-change-reading obj-h03708-reading obj-h03709-reading obj-h03724-reading obj-h03725-reading stateFormat userReadings
Internals:
DEF ./log/Victron_PV_Power_Charger_2-%Y.log Victron_PV_Power_Charger_2:(PV_Power_Tracker1|PV_Power_Tracker2|PV_Yield_Tracker1|PV_Yield_Tracker2).*
NAME FileLog_Victron_PV_Power_Charger_2
NR 1561
NTFY_ORDER 50-FileLog_Victron_PV_Power_Charger_2
REGEXP Victron_PV_Power_Charger_2:(PV_Power_Tracker1|PV_Power_Tracker2|PV_Yield_Tracker1|PV_Yield_Tracker2).*
STATE active
TYPE FileLog
currentlogfile ./log/Victron_PV_Power_Charger_2-2023.log
logfile ./log/Victron_PV_Power_Charger_2-%Y.log
Pos:
Attributes:
room PV Logs
define Victron_PV_Power_Charger_2 ModbusAttr 1 5 192.168.178.19:502 TCP
attr Victron_PV_Power_Charger_2 userattr dev-h-defPoll event-on-change-reading obj-h03708-reading obj-h03709-reading obj-h03724-reading obj-h03725-reading stateFormat userReadings
attr Victron_PV_Power_Charger_2 alias String 1: Garage Süd / String 2: Ost-West
attr Victron_PV_Power_Charger_2 dev-h-defPoll 1
attr Victron_PV_Power_Charger_2 event-on-change-reading .*
attr Victron_PV_Power_Charger_2 obj-h03708-reading PV_Yield_Tracker1
attr Victron_PV_Power_Charger_2 obj-h03709-reading PV_Yield_Tracker2
attr Victron_PV_Power_Charger_2 obj-h03724-reading PV_Power_Tracker1
attr Victron_PV_Power_Charger_2 obj-h03725-reading PV_Power_Tracker2
attr Victron_PV_Power_Charger_2 room 6_Photovoltaik
attr Victron_PV_Power_Charger_2 stateFormat {sprintf("MPPT 1 : %.0f W", (ReadingsNum($name,"PV_Power_Tracker1",0)/1 )).sprintf(" / MPPT 2 : "). sprintf("%.0f W", ReadingsNum($name,"PV_Power_Tracker2",0)/1). " / Day 1: ".sprintf("%.1f kWh", ReadingsNum($name,"PV_Yield_Tracker1",0)/10)." / Day 2: ".sprintf("%.1f kWh", ReadingsNum($name,"PV_Yield_Tracker2",0)/10)}
define FileLog_Victron_PV_Power_Charger_2 FileLog ./log/Victron_PV_Power_Charger_2-%Y.log Victron_PV_Power_Charger_2:(PV_Power_Tracker1|PV_Power_Tracker2|PV_Yield_Tracker1|PV_Yield_Tracker2).*
attr FileLog_Victron_PV_Power_Charger_2 room PV Logs
define SVG_FileLog_FileLog_Victron_PV_Power_Charger_2 SVG FileLog_Victron_PV_Power_Charger_2:SVG_FileLog_Victron_PV_Power_Charger_2:CURRENT
attr SVG_FileLog_FileLog_Victron_PV_Power_Charger_2 room 6_Photovoltaik
Hi,
ich denke am einfachsten ist, wenn du dir "monotonic" userreadings (siehe Commandref) erstellst und diese per "at" o.ä. täglich um 00:00 zurück setzt.
Grüße,
Oli
Vielen Dank,
das habe ich nun auch gemacht.
userReadings StringTagesErtrag_1 monotonic {ReadingsNum($name,"PV_Yield_Tracker1",0)}, StringTagesErtrag_2 monotonic {ReadingsNum($name,"PV_Yield_Tracker2",0)},
StringMonatsErtrag_1 monotonic {ReadingsNum($name,"PV_Yield_Tracker1",0)}, StringMonatsErtrag_2 monotonic {ReadingsNum($name,"PV_Yield_Tracker2",0)},
StringJahresErtrag_1 monotonic {ReadingsNum($name,"PV_Yield_Tracker1",0)}, StringJahresErtrag_2 monotonic {ReadingsNum($name,"PV_Yield_Tracker2",0)}
Im Prinzip funktioniert das auch. Leider habe ich manchmal anscheinend Übertragungsfehler (oder es stehen wirklich kurzfristig mal unsinnige Werte in den Modbusregistern... keine Ahnung). Jedenfalls stehen manchmal unsinnig hohe Zahlen in dern Readings für PV_Yield_Tracker1 und PV_Yield_Tracker2 die dann dummerweise in den Tages/Monats/Jahresreadindgs mitgerechnet werden.
2023-01-14_21:30:03 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 0
2023-01-14_21:30:03 Victron_PV_Power_Charger_2 PV_Yield_Tracker1: 0
2023-01-15_10:01:05 Victron_PV_Power_Charger_2 PV_Yield_Tracker1: 1
2023-01-15_10:03:50 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 1
2023-01-15_11:12:09 Victron_PV_Power_Charger_2 PV_Yield_Tracker1: 2
2023-01-15_11:16:04 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 2
2023-01-15_12:00:52 Victron_PV_Power_Charger_2 PV_Yield_Tracker1: 3
2023-01-15_12:04:59 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 3
2023-01-15_12:57:16 Victron_PV_Power_Charger_2 PV_Yield_Tracker1: 4
2023-01-15_13:01:56 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 4
2023-01-15_13:44:38 Victron_PV_Power_Charger_2 PV_Yield_Tracker1: 5
2023-01-15_13:49:15 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 5
2023-01-15_14:18:23 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 102
2023-01-15_14:18:32 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 5
2023-01-15_14:26:03 Victron_PV_Power_Charger_2 PV_Yield_Tracker1: 6
2023-01-15_14:32:08 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 6
2023-01-15_14:43:18 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 356
2023-01-15_14:43:31 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 6
2023-01-15_14:48:35 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 214
2023-01-15_14:48:38 Victron_PV_Power_Charger_2 PV_Yield_Tracker2: 6
Wie kriege ich die Werte da rausgefiltert ?
Viele Grüße
Ralf
Vielleicht wäre es eine Option noch mit oldreadings zu arbeiten und das "monotonic" Reading nur zu aktualisieren, wenn die Differenz in einem bestimmten Wertebereich liegt.