FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andi11 am 11 Februar 2023, 08:16:54

Titel: [erledigt] Userreading: Wert nur erhöhen, wenn der neue Wert höher ist
Beitrag von: andi11 am 11 Februar 2023, 08:16:54
Ich möchte bei meinem Batteriewechselrichter eine kleine Unzulänglichkeit ausgleichen.
Im Reading InverterGenerationTotalIn erhalte ich die erzeugte Gesamtenergie, aber nur mit ganzen kWh.
Im Reading InverterGenerationToday gibt es die Tagesproduktion, mit 0,1kWh.

Daher kopiere ich mir mit DOIF um kurz nach Mitternacht den Wert InverterGenerationTotalIn in die Hilfsvariable InverterGenerationTotalHelp.
Auf diesen Hilfswert addiere ich dann per Userreading die Tagesleistung. Das ergibt dann InverterGenerationToday

Prinzipiell funktioniert das auch. Ich habe auf InverterGenerationToday das statistics Modul laufen. Da habe ich aber nach dem umkopieren des Wertes manchmal einen Sprung drin. Daher bererechnet statistics die Produktionsleistung falsch.

Zeit  InverterGenerationTotal InverterGenerationToday
09.02.2023 00:08 3669         0,00
08.02.2023 23:58 3651         0,00
08.02.2023 23:57 3669,2 18,20
08.02.2023 23:57 3669,2 18,20


Daher wollte ich das Reading umstellen von reiner Addition auf "kopiere den neuen Wert nur, wenn er größer oder gleich der alte Wert ist"
Allerdings werden jetzt keine neuen Werte ausgegeben, obwohl InverterGenerationToday zyklisch neue Werte bekommt. Wenn ich manuell $name durch den Namen meines Gerätes ersetze, und alles zwischen {} in die Befehltszeile kopiere erhalte ich den korrekten Wert.

InverterGenerationTotal:InverterGenerationToday.*  , {my $var=ReadingsNum($name,"InverterGenerationTotalHelp",0)+ReadingsNum($name,"InverterGenerationToday",0);; $var>=ReadingsNum($name,"InverterGenerationTotal",0)?$var:ReadingsNum($name,"InverterGenerationTotal",0)},

Eine Fehlermeldung gibt es nicht im Reading, aber auch keine neuen Events

Wo liegt mein Fehler?

List vom Device
define BatterieWR ModbusAttr 1 passive
attr BatterieWR DbLogExclude .*
attr BatterieWR DbLogInclude (DCPower|stat.*|ErzeugungLastMonth|InverterGenerationTotalHelp|InverterGenerationTotal|InverterGenerationTotalIn|InverterGenerationToday|InverterTemperature|BatteryCapacity)
attr BatterieWR comment 33149 BatteryPower kann nicht gelesen werden, also wird es aus Spannung, Strom und Richtung berechnet.\
Es wird öfter umständlich das Vorzeichen berechnet, da es nicht bei allen Parametern mitgeliefert wird
attr BatterieWR dev-i-defPoll 0
attr BatterieWR dev-i-defShowGet 1
attr BatterieWR dev-timing-commDelay 0.4
attr BatterieWR enableControlSet 1
attr BatterieWR group Wechselrichter
attr BatterieWR obj-i33029-len 2
attr BatterieWR obj-i33029-poll 1
attr BatterieWR obj-i33029-reading InverterGenerationTotalIn
attr BatterieWR obj-i33029-unpack N
attr BatterieWR obj-i33035-expr $val*0.1
attr BatterieWR obj-i33035-len 1
attr BatterieWR obj-i33035-poll 1
attr BatterieWR obj-i33035-reading InverterGenerationToday
attr BatterieWR obj-i33057-expr $val/1000
attr BatterieWR obj-i33057-len 2
attr BatterieWR obj-i33057-poll 1
attr BatterieWR obj-i33057-reading DCPower
attr BatterieWR obj-i33057-unpack N
attr BatterieWR obj-i33093-expr $val*0.1
attr BatterieWR obj-i33093-len 1
attr BatterieWR obj-i33093-reading InverterTemperature
attr BatterieWR obj-i33095-len 1
attr BatterieWR obj-i33095-map 0:Waiting,1:OpenRun,2:Softrun,3:Generating,4100:OffGrid
attr BatterieWR obj-i33095-poll 1
attr BatterieWR obj-i33095-reading Status
attr BatterieWR obj-i33133-expr $val*0.1
attr BatterieWR obj-i33133-len 1
attr BatterieWR obj-i33133-reading BatteryVoltage
attr BatterieWR obj-i33134-expr $val*0.1
attr BatterieWR obj-i33134-len 1
attr BatterieWR obj-i33134-reading BatteryCurrent
attr BatterieWR obj-i33135-len 1
attr BatterieWR obj-i33135-poll 1
attr BatterieWR obj-i33135-reading BatteryCurrentDirection
attr BatterieWR obj-i33135-showGet 1
attr BatterieWR obj-i33139-len 1
attr BatterieWR obj-i33139-poll 1
attr BatterieWR obj-i33139-reading BatteryCapacity
attr BatterieWR obj-i33141-expr $val*0.01
attr BatterieWR obj-i33141-len 1
attr BatterieWR obj-i33141-poll 1
attr BatterieWR obj-i33141-reading BatteryVoltageBMS
attr BatterieWR obj-i33141-unpack n
attr BatterieWR obj-i33142-expr $val*0.1
attr BatterieWR obj-i33142-len 1
attr BatterieWR obj-i33142-poll 1
attr BatterieWR obj-i33142-reading BatteryCurrentBMS
attr BatterieWR obj-i33142-unpack s>
attr BatterieWR obj-i33161-len 2
attr BatterieWR obj-i33161-poll 1
attr BatterieWR obj-i33161-reading BatteryChargeTotalIn
attr BatterieWR obj-i33161-unpack N
attr BatterieWR obj-i33163-expr $val*0.1
attr BatterieWR obj-i33163-len 1
attr BatterieWR obj-i33163-poll 1
attr BatterieWR obj-i33163-reading BatteryChargeToday
attr BatterieWR obj-i33165-len 2
attr BatterieWR obj-i33165-poll 1
attr BatterieWR obj-i33165-reading BatteryDischargeTotalIn
attr BatterieWR obj-i33165-unpack N
attr BatterieWR obj-i33167-expr $val*0.1
attr BatterieWR obj-i33167-len 1
attr BatterieWR obj-i33167-poll 1
attr BatterieWR obj-i33167-reading BatteryDischargeToday
attr BatterieWR obj-i33251-expr $val*0.1
attr BatterieWR obj-i33251-len 1
attr BatterieWR obj-i33251-reading MeterVoltageA
attr BatterieWR obj-i33252-expr $val*0.01
attr BatterieWR obj-i33252-len 1
attr BatterieWR obj-i33252-reading MeterCurrentAin
attr BatterieWR obj-i33253-expr $val*0.1
attr BatterieWR obj-i33253-len 1
attr BatterieWR obj-i33253-reading MeterVoltageB
attr BatterieWR obj-i33254-expr $val*0.01
attr BatterieWR obj-i33254-len 1
attr BatterieWR obj-i33254-reading MeterCurrentBin
attr BatterieWR obj-i33255-expr $val*0.1
attr BatterieWR obj-i33255-len 1
attr BatterieWR obj-i33255-reading MeterVoltageC
attr BatterieWR obj-i33256-expr $val*0.01
attr BatterieWR obj-i33256-len 1
attr BatterieWR obj-i33256-reading MeterCurrentCin
attr BatterieWR obj-i33257-expr $val*0.001
attr BatterieWR obj-i33257-len 2
attr BatterieWR obj-i33257-reading MeterActivePowerA
attr BatterieWR obj-i33257-unpack l>
attr BatterieWR obj-i33259-expr $val*0.001
attr BatterieWR obj-i33259-len 2
attr BatterieWR obj-i33259-reading MeterActivePowerB
attr BatterieWR obj-i33259-unpack l>
attr BatterieWR obj-i33261-expr $val*0.001
attr BatterieWR obj-i33261-len 2
attr BatterieWR obj-i33261-reading MeterActivePowerC
attr BatterieWR obj-i33261-unpack l>
attr BatterieWR room Technik_PV
attr BatterieWR stateFormat DCPower kW Erzeugung InverterGenerationToday kWh heute BatteryCapacity% Batterie BatteryPower BatteryPowerBMS kW Batterieleistung Status
attr BatterieWR userReadings ForecastAktMonth:statInverterGenerationTotal.* {calcmonthusageSplit($name,"statInverterGenerationTotal",5)},\
BatteryPower:BatteryCurrentDirection.* {sprintf("%.3f",ReadingsNum($name,"BatteryVoltage",0)*ReadingsNum($name,"BatteryCurrent",0)*(ReadingsNum($name,"BatteryCurrentDirection",0)<=0?1:-1)/1000)},\
BatteryPowerBMS:BatteryCurrentBMS.* {sprintf("%.3f",ReadingsNum($name,"BatteryVoltageBMS",0)*ReadingsNum($name,"BatteryCurrentBMS",0)*(ReadingsNum($name,"BatteryCurrentDirection",0)<=0?1:-1)/1000)},\
InverterGenerationTotal:InverterGenerationToday.*  , {my $var=ReadingsNum($name,"InverterGenerationTotalHelp",0)+ReadingsNum($name,"InverterGenerationToday",0);;;;return ( $var>=ReadingsNum($name,"InverterGenerationTotal",0)?$var:ReadingsNum($name,"InverterGenerationTotal",0))},\
BatteryChargeTotal:BatteryChargeToday.*  {my $var=ReadingsNum($name,"BatteryChargeTotalHelp",0)+ReadingsNum($name,"BatteryChargeTotalToday",0);;;;  $var>=ReadingsNum($name,"BatteryChargeTotal",0)?$var:ReadingsNum($name,"BatteryChargeTotal",0)},\
BatteryDischargeTotal:BatteryDischargeToday.*  {my $var=ReadingsNum($name,"BatteryDischargeTotalHelp",0)+ReadingsNum($name,"BatteryDischargeTotalToday",0);;;;$var=1;;;;  $var>=ReadingsNum($name,"BatteryDischargeTotal",0)?$var:ReadingsNum($name,"BatteryDischargeTotal",0)},\
MeterCurrentA:MeterActivePowerA.* {ReadingsNum($name,"MeterCurrentAin",0)*(ReadingsNum($name,"MeterActivePowerA",0)>0?1:-1)},\
MeterCurrentB:MeterActivePowerB.* {ReadingsNum($name,"MeterCurrentBin",0)*(ReadingsNum($name,"MeterActivePowerB",0)>0?1:-1)},\
MeterCurrentC:MeterActivePowerC.* {ReadingsNum($name,"MeterCurrentCin",0)*(ReadingsNum($name,"MeterActivePowerC",0)>0?1:-1)}\

#   DEF        1 passive
#   FUUID      6287ae83-f33f-ae17-6df4-762760f54d114cca
#   IODev      ModbusLine
#   MODBUSID   1
#   MODE       passive
#   MODULEVERSION Modbus 4.4.14 - 30.1.2023
#   NAME       BatterieWR
#   NOTIFYDEV  global
#   NR         407
#   NTFY_ORDER 50-BatterieWR
#   PROTOCOL   RTU
#   STATE      0.17 kW Erzeugung 0 kWh heute 15% Batterie -0.260 -0.029 kW Batterieleistung Generating
#   TYPE       ModbusAttr
#   eventCount 29614
#   Helper:
#     DBLOG:
#       BatteryCapacity:
#         logdb:
#           TIME       1676099940.73665
#           VALUE      15
#       DCPower:
#         logdb:
#           TIME       1676099938.86767
#           VALUE      0.17
#       InverterGenerationToday:
#         logdb:
#           TIME       1676099938.16228
#           VALUE      0
#       InverterGenerationTotal:
#         logdb:
#           TIME       1676039867.3377
#           VALUE      3695.9
#       InverterGenerationTotalHelp:
#         logdb:
#           TIME       1676070420.02223
#           VALUE      3696
#       InverterGenerationTotalIn:
#         logdb:
#           TIME       1676099938.16228
#           VALUE      3696
#       InverterTemperature:
#         logdb:
#           TIME       1676099939.48602
#           VALUE      25.9
#       statBatteryChargeTotal:
#         logdb:
#           TIME       1676099941.76681
#           VALUE      Hour: 0.0 Day: 0.0 Month: 44.5 Year: 100.4
#       statBatteryChargeTotalLast:
#         logdb:
#           TIME       1676098795.0214
#           VALUE      Hour: 0.0 Day: 14.5 Month: 55.9 Year: 972.1 (since: 2022-05-22 )
#       statBatteryDischargeTotal:
#         logdb:
#           TIME       1676099941.76681
#           VALUE      Hour: 0.0 Day: 0.0 Month: 45.7 Year: 140.1
#       statBatteryDischargeTotalLast:
#         logdb:
#           TIME       1676098795.0214
#           VALUE      Hour: 0.0 Day: 11.7 Month: 94.4 Year: 1296.6 (since: 2022-05-22 )
#       statInverterGenerationTotal:
#         logdb:
#           TIME       1676099941.76681
#           VALUE      Hour: 0.0 Day: 0.0 Month: 82.9 Year: 161.4
#       statInverterGenerationTotalLast:
#         logdb:
#           TIME       1676098795.0214
#           VALUE      Hour: 0.0 Day: 26.9 Month: 78.5 Year: 3475.4 (since: 2022-05-22 )
#   READINGS:
#     2023-02-11 08:19:00   BatteryCapacity 15
#     2023-02-11 08:19:01   BatteryChargeToday 0
#     2023-02-10 15:37:50   BatteryChargeTotal 1080.5
#     2023-02-11 00:07:00   BatteryChargeTotalHelp 1081
#     2023-02-11 08:19:01   BatteryChargeTotalIn 1081
#     2023-02-11 08:19:00   BatteryCurrent  5.3
#     2023-02-11 08:19:00   BatteryCurrentBMS 0.6
#     2023-02-11 08:19:00   BatteryCurrentDirection 1
#     2023-02-11 08:19:01   BatteryDischargeToday 1.9
#     2023-02-10 15:37:50   BatteryDischargeTotal 1453.7
#     2023-02-11 00:07:00   BatteryDischargeTotalHelp 1459
#     2023-02-11 08:19:01   BatteryDischargeTotalIn 1461
#     2023-02-11 08:19:00   BatteryPower    -0.260
#     2023-02-11 08:19:00   BatteryPowerBMS -0.029
#     2023-02-11 08:19:00   BatteryVoltage  49.1
#     2023-02-11 08:19:00   BatteryVoltageBMS 48.67
#     2023-02-11 08:18:58   DCPower         0.17
#     2023-02-11 08:19:01   ForecastAktMonth 205
#     2023-02-11 08:18:58   InverterGenerationToday 0
#     2023-02-10 15:37:47   InverterGenerationTotal 3695.9
#     2023-02-11 00:07:00   InverterGenerationTotalHelp 3696
#     2023-02-11 08:18:58   InverterGenerationTotalIn 3696
#     2023-02-11 08:18:59   InverterTemperature 25.9
#     2023-02-11 08:19:01   MeterActivePowerA 0
#     2023-02-11 08:19:01   MeterActivePowerB 0.124
#     2023-02-11 08:19:01   MeterActivePowerC -2.659
#     2023-02-10 15:37:50   MeterCurrentA   0.58
#     2023-02-11 08:19:01   MeterCurrentAin 0.59
#     2023-02-10 15:37:50   MeterCurrentB   -0.22
#     2023-02-11 08:19:01   MeterCurrentBin 0.69
#     2023-02-10 15:37:50   MeterCurrentC   -0.31
#     2023-02-11 08:19:01   MeterCurrentCin 11.15
#     2023-02-11 08:19:01   MeterVoltageA   238.2
#     2023-02-11 08:19:01   MeterVoltageB   237.6
#     2023-02-11 08:19:01   MeterVoltageC   238.3
#     2023-02-11 08:18:59   Status          Generating
#     2023-02-11 08:19:01   statBatteryChargeTotal Hour: 0.0 Day: 0.0 Month: 44.5 Year: 100.4
#     2023-02-11 07:59:55   statBatteryChargeTotalLast Hour: 0.0 Day: 14.5 Month: 55.9 Year: 972.1 (since: 2022-05-22 )
#     2023-02-11 08:19:01   statBatteryDischargeTotal Hour: 0.0 Day: 0.0 Month: 45.7 Year: 140.1
#     2023-02-11 07:59:55   statBatteryDischargeTotalLast Hour: 0.0 Day: 11.7 Month: 94.4 Year: 1296.6 (since: 2022-05-22 )
#     2023-02-11 08:19:01   statInverterGenerationTotal Hour: 0.0 Day: 0.0 Month: 82.9 Year: 161.4
#     2023-02-11 07:59:55   statInverterGenerationTotalLast Hour: 0.0 Day: 26.9 Month: 78.5 Year: 3475.4 (since: 2022-05-22 )
#     2023-02-08 08:48:53   state           opened
#   REMEMBER:
#     lrecv      1676099954.75585
#   gotReadings:
#   helper:
#     _98_statistics STATISTICS_STROMVERBRAUCH
#   lastRead:
#     i33029     1676099938.14678
#     i33035     1676099938.14757
#     i33057     1676099938.83637
#     i33093     1676099939.46737
#     i33095     1676099939.4681
#     i33133     1676099940.7099
#     i33134     1676099940.71074
#     i33135     1676099940.71134
#     i33139     1676099940.71193
#     i33141     1676099940.71278
#     i33142     1676099940.7136
#     i33161     1676099941.30006
#     i33163     1676099941.30105
#     i33165     1676099941.30165
#     i33167     1676099941.30245
#     i33251     1676099941.7393
#     i33252     1676099941.74001
#     i33253     1676099941.74075
#     i33254     1676099941.74144
#     i33255     1676099941.74212
#     i33256     1676099941.74284
#     i33257     1676099941.74351
#     i33259     1676099941.74419
#     i33261     1676099941.745
#
setstate BatterieWR 0.17 kW Erzeugung 0 kWh heute 15% Batterie -0.260 -0.029 kW Batterieleistung Generating
setstate BatterieWR 2023-02-11 08:19:00 BatteryCapacity 15
setstate BatterieWR 2023-02-11 08:19:01 BatteryChargeToday 0
setstate BatterieWR 2023-02-10 15:37:50 BatteryChargeTotal 1080.5
setstate BatterieWR 2023-02-11 00:07:00 BatteryChargeTotalHelp 1081
setstate BatterieWR 2023-02-11 08:19:01 BatteryChargeTotalIn 1081
setstate BatterieWR 2023-02-11 08:19:00 BatteryCurrent 5.3
setstate BatterieWR 2023-02-11 08:19:00 BatteryCurrentBMS 0.6
setstate BatterieWR 2023-02-11 08:19:00 BatteryCurrentDirection 1
setstate BatterieWR 2023-02-11 08:19:01 BatteryDischargeToday 1.9
setstate BatterieWR 2023-02-10 15:37:50 BatteryDischargeTotal 1453.7
setstate BatterieWR 2023-02-11 00:07:00 BatteryDischargeTotalHelp 1459
setstate BatterieWR 2023-02-11 08:19:01 BatteryDischargeTotalIn 1461
setstate BatterieWR 2023-02-11 08:19:00 BatteryPower -0.260
setstate BatterieWR 2023-02-11 08:19:00 BatteryPowerBMS -0.029
setstate BatterieWR 2023-02-11 08:19:00 BatteryVoltage 49.1
setstate BatterieWR 2023-02-11 08:19:00 BatteryVoltageBMS 48.67
setstate BatterieWR 2023-02-11 08:18:58 DCPower 0.17
setstate BatterieWR 2023-02-11 08:19:01 ForecastAktMonth 205
setstate BatterieWR 2023-02-11 08:18:58 InverterGenerationToday 0
setstate BatterieWR 2023-02-10 15:37:47 InverterGenerationTotal 3695.9
setstate BatterieWR 2023-02-11 00:07:00 InverterGenerationTotalHelp 3696
setstate BatterieWR 2023-02-11 08:18:58 InverterGenerationTotalIn 3696
setstate BatterieWR 2023-02-11 08:18:59 InverterTemperature 25.9
setstate BatterieWR 2023-02-11 08:19:01 MeterActivePowerA 0
setstate BatterieWR 2023-02-11 08:19:01 MeterActivePowerB 0.124
setstate BatterieWR 2023-02-11 08:19:01 MeterActivePowerC -2.659
setstate BatterieWR 2023-02-10 15:37:50 MeterCurrentA 0.58
setstate BatterieWR 2023-02-11 08:19:01 MeterCurrentAin 0.59
setstate BatterieWR 2023-02-10 15:37:50 MeterCurrentB -0.22
setstate BatterieWR 2023-02-11 08:19:01 MeterCurrentBin 0.69
setstate BatterieWR 2023-02-10 15:37:50 MeterCurrentC -0.31
setstate BatterieWR 2023-02-11 08:19:01 MeterCurrentCin 11.15
setstate BatterieWR 2023-02-11 08:19:01 MeterVoltageA 238.2
setstate BatterieWR 2023-02-11 08:19:01 MeterVoltageB 237.6
setstate BatterieWR 2023-02-11 08:19:01 MeterVoltageC 238.3
setstate BatterieWR 2023-02-11 08:18:59 Status Generating
setstate BatterieWR 2023-02-11 08:19:01 statBatteryChargeTotal Hour: 0.0 Day: 0.0 Month: 44.5 Year: 100.4
setstate BatterieWR 2023-02-11 07:59:55 statBatteryChargeTotalLast Hour: 0.0 Day: 14.5 Month: 55.9 Year: 972.1 (since: 2022-05-22 )
setstate BatterieWR 2023-02-11 08:19:01 statBatteryDischargeTotal Hour: 0.0 Day: 0.0 Month: 45.7 Year: 140.1
setstate BatterieWR 2023-02-11 07:59:55 statBatteryDischargeTotalLast Hour: 0.0 Day: 11.7 Month: 94.4 Year: 1296.6 (since: 2022-05-22 )
setstate BatterieWR 2023-02-11 08:19:01 statInverterGenerationTotal Hour: 0.0 Day: 0.0 Month: 82.9 Year: 161.4
setstate BatterieWR 2023-02-11 07:59:55 statInverterGenerationTotalLast Hour: 0.0 Day: 26.9 Month: 78.5 Year: 3475.4 (since: 2022-05-22 )
setstate BatterieWR 2023-02-08 08:48:53 state opened



Bei den aktuellen Werten müsste InverterGenerationTotal 3696 sein und nicht 3695,9
Titel: Antw:Userreading: Wert nur erhöhen, wenn der neue Wert höher ist als der alte ist
Beitrag von: OdfFhem am 11 Februar 2023, 09:03:25
*** userReadings

Das Komma vor der öffnenden, geschweiften Klammer macht (vermutlich) keinen Sinn.

Wenn es nur ein Ausschnitt ist, dann hat das Komma hinter der schließenden, geschweiften Klammer eine Berechtigung - ansonsten nicht.
Titel: Antw:Userreading: Wert nur erhöhen, wenn der neue Wert höher ist als der alte ist
Beitrag von: andi11 am 11 Februar 2023, 09:05:34
aaaaahhhh tausend Dank.
das gemeine ist dass alle Userreadings vor dem Kommafehler brav geschrieben wurden. Die dahinter nicht mehr.
Daher ist mir nicht aufgefallen dass ich da (warum auch immer) ein Komma vor der geschweiften Klammer habe. Das nach der Klammer macht Sinn, da es nur eine Ausschnittskopie war.