Tageshöchstwert als Userreading o.ä. ....

Begonnen von rasti, 14 Januar 2023, 13:42:00

Vorheriges Thema - Nächstes Thema

rasti


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



KernSani

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
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

rasti

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

KernSani

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.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...