76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

peterboeckmann

#5070
Hallo Heiko,

ich habe jetzt (10:30 Uhr) wieder eine sehr unrealistische PVdeviation:
Du darfst diesen Dateianhang nicht ansehen.

Heute früh, 8:30 Uhr, sah noch alles gut aus:
Du darfst diesen Dateianhang nicht ansehen.

Wirst Du daraus schlau?

Ich hab hier nochmal ein list gemacht, damit Du alle Readings zum aktuellen Zeitpunkt hast:
Internals:
   FUUID      651cfe6b-f33f-e199-c4fb-916e33f2d14b5241
   FVERSION   76_SolarForecast.pm:v2.0.0-s30783/2026-01-25
   LCACHEFILE last write time: 10:33:32 whole Operating Memory
   MODE       Automatic / Event-controlled - next planned Cycletime: 10:36:58
   MODEL      DWD
   NAME       SolarForecast
   NOTIFYDEV  MQTT2_SmartMeterReader,KlimaanlagePwr,Klimaanlage_Sw,MQTT2_Luftentfeuchter,MQTT2_Spelunkenentfeuchter,MQTT2_ShellyGeschirrspueler,Trockner_Pwr,Trockner,Waschmaschine_Pwr,Waschmaschine,Stromverbrauch_Buero,Stromverbrauch_WoZi,MQTT2_KlimaODU,MQTT2_ShellyPlugKuechenKuehlschrank,shelly3em63g3_e4b063e1c96c,MQTT2_ShellyPlugKellerKuehlschrank,ShellyplugSchuppen,MQTT2_PlugKaffeemaschine,WallboxLeistungssumme,HM_56E0D2_Sw_02,Enphase
   NR         752
   NTFY_ORDER 50-SolarForecast
   STATE      updated
   TYPE       SolarForecast
   WEATHERMODEL DWD
   eventCount 104198
   HELPER:
     11M15DONE  1
     15M15DONE  1
     16M15DONE  1
     FW         internalWEB
     PACKAGE    FHEM::SolarForecast
     S10DONE    1
     SPGDETAIL 
     SPGDEV     SolarForecast
     SPGROOM   
     VERSION    2.0.0
     VERSION_API unused
     VERSION_CTZ 1.0.0
     VERSION_ErrCodes 1.3.9
     VERSION_SMUtils 1.28.3
     GMFRUNNING:
       abortFn    FHEM::SolarForecast::_abortGetMessageFile
       bc_pid     57353
       finishFn   FHEM::SolarForecast::_processMessageFile
       fn         FHEM::SolarForecast::_retrieveMessageFile
       loglevel   3
       pid        DEAD:177153
       telnet     telnetForBlockingFn_1769434944.22941_127.0.0.1_33468
       terminated 1
       timeout    30
       abortArg:
       arg:
         block      1
         name       SolarForecast
         tsnext     1769682684.53789
   Helper:
     DBLOG:
       AllPVforecastsToEvent:
         logdb:
           TIME       1769641506.22759
           VALUE      0
       Current_AutarkyRate:
         logdb:
           TIME       1769679278.2693
           VALUE      24.226607770772
       LastHourPVforecast:
         logdb:
           TIME       1769679326.08935
           VALUE      124
       LastHourPVreal:
         logdb:
           TIME       1769679326.08935
           VALUE      56
   OLDREADINGS:
   READINGS:
     2026-01-29 10:36:53   Battery_ChargeOptTargetPower_01 2500 W
     2026-01-29 10:36:53   Battery_ChargeUnrestricted_01 1
     2026-01-29 10:36:53   Battery_TargetAchievable_01 0
     2026-01-29 10:36:53   Current_AutarkyRate 25 %
     2026-01-29 10:36:53   Current_BatCharge_01 3 %
     2026-01-29 10:36:53   Current_Consumption 667 W
     2026-01-29 10:36:53   Current_GridConsumption 501 W
     2026-01-29 10:36:53   Current_GridFeedIn 0 W
     2026-01-29 10:36:53   Current_PV      166 W
     2026-01-29 10:36:53   Current_PowerBatIn_01 0 W
     2026-01-29 10:36:53   Current_PowerBatOut_01 0 W
     2026-01-29 10:36:53   Current_SelfConsumption 166 W
     2026-01-29 10:36:53   Current_SelfConsumptionRate 100 %
     2026-01-29 10:36:53   Current_Surplus 0 W
     2026-01-29 10:36:57   Current_Surplus_Num 0
     2026-01-29 10:00:00   LastHourGridconsumptionReal 762 Wh
     2026-01-29 10:00:00   LastHourPVforecast 124 Wh
     2026-01-29 10:00:00   LastHourPVreal  56 Wh
     2026-01-29 10:36:53   NextHours_Sum01_PVforecast 234 Wh
     2026-01-29 10:36:53   NextHours_Sum02_PVforecast 502 Wh
     2026-01-29 10:36:53   NextHours_Sum03_PVforecast 952 Wh
     2026-01-29 10:36:53   NextHours_Sum04_ConsumptionForecast 3559 Wh
     2026-01-29 10:36:53   NextHours_Sum04_PVforecast 1555 Wh
     2026-01-29 10:36:53   RestOfDayConsumptionForecast 10632 Wh
     2026-01-29 10:36:53   RestOfDayPVforecast 2241 Wh
     2026-01-29 10:36:53   Today_CONdeviation -40.19 %
     2026-01-29 10:36:53   Today_CONforecast 20937 Wh
     2026-01-29 10:36:53   Today_CONreal   6164 Wh
     2026-01-29 00:59:56   Today_Hour01_BatIn_01 0 Wh
     2026-01-29 00:59:56   Today_Hour01_BatOut_01 0 Wh
     2026-01-29 00:59:56   Today_Hour01_GridConsumption 430 Wh
     2026-01-29 00:59:56   Today_Hour01_GridFeedIn 0 Wh
     2026-01-29 00:59:56   Today_Hour01_PVreal 0 Wh (WARNING invalid real PV occured - see Logfile)
     2026-01-29 01:59:59   Today_Hour02_BatIn_01 0 Wh
     2026-01-29 01:59:59   Today_Hour02_BatOut_01 0 Wh
     2026-01-29 01:59:59   Today_Hour02_GridConsumption 499 Wh
     2026-01-29 01:59:59   Today_Hour02_GridFeedIn 0 Wh
     2026-01-29 01:59:59   Today_Hour02_PVreal 0 Wh
     2026-01-29 02:59:59   Today_Hour03_BatIn_01 0 Wh
     2026-01-29 02:59:59   Today_Hour03_BatOut_01 0 Wh
     2026-01-29 02:59:59   Today_Hour03_GridConsumption 498 Wh
     2026-01-29 02:59:59   Today_Hour03_GridFeedIn 0 Wh
     2026-01-29 02:59:59   Today_Hour03_PVreal 0 Wh
     2026-01-29 03:59:58   Today_Hour04_BatIn_01 0 Wh
     2026-01-29 03:59:58   Today_Hour04_BatOut_01 0 Wh
     2026-01-29 03:59:58   Today_Hour04_GridConsumption 507 Wh
     2026-01-29 03:59:58   Today_Hour04_GridFeedIn 0 Wh
     2026-01-29 03:59:58   Today_Hour04_PVreal 0 Wh
     2026-01-29 04:59:58   Today_Hour05_BatIn_01 0 Wh
     2026-01-29 04:59:58   Today_Hour05_BatOut_01 0 Wh
     2026-01-29 04:59:58   Today_Hour05_GridConsumption 498 Wh
     2026-01-29 04:59:58   Today_Hour05_GridFeedIn 0 Wh
     2026-01-29 04:59:58   Today_Hour05_PVreal 0 Wh
     2026-01-29 05:59:53   Today_Hour06_BatIn_01 0 Wh
     2026-01-29 05:59:53   Today_Hour06_BatOut_01 0 Wh
     2026-01-29 05:59:53   Today_Hour06_GridConsumption 509 Wh
     2026-01-29 05:59:53   Today_Hour06_GridFeedIn 0 Wh
     2026-01-29 05:59:53   Today_Hour06_PVreal 0 Wh
     2026-01-29 06:59:57   Today_Hour07_BatIn_01 0 Wh
     2026-01-29 06:59:57   Today_Hour07_BatOut_01 0 Wh
     2026-01-29 06:59:57   Today_Hour07_GridConsumption 563 Wh
     2026-01-29 06:59:57   Today_Hour07_GridFeedIn 0 Wh
     2026-01-29 06:59:57   Today_Hour07_PVreal 0 Wh
     2026-01-29 07:59:58   Today_Hour08_BatIn_01 0 Wh
     2026-01-29 07:59:58   Today_Hour08_BatOut_01 0 Wh
     2026-01-29 07:59:58   Today_Hour08_GridConsumption 640 Wh
     2026-01-29 07:59:58   Today_Hour08_GridFeedIn 0 Wh
     2026-01-29 07:59:58   Today_Hour08_PVreal 0 Wh
     2026-01-29 08:59:59   Today_Hour09_BatIn_01 0 Wh
     2026-01-29 08:59:59   Today_Hour09_BatOut_01 0 Wh
     2026-01-29 08:59:59   Today_Hour09_GridConsumption 736 Wh
     2026-01-29 08:59:59   Today_Hour09_GridFeedIn 0 Wh
     2026-01-29 08:59:59   Today_Hour09_PVforecast 13 Wh
     2026-01-29 08:59:59   Today_Hour09_PVreal 0 Wh
     2026-01-29 09:59:58   Today_Hour10_BatIn_01 0 Wh
     2026-01-29 09:59:58   Today_Hour10_BatOut_01 0 Wh
     2026-01-29 09:59:58   Today_Hour10_GridConsumption 762 Wh
     2026-01-29 09:59:58   Today_Hour10_GridFeedIn 0 Wh
     2026-01-29 09:59:58   Today_Hour10_PVforecast 124 Wh
     2026-01-29 09:59:58   Today_Hour10_PVreal 56 Wh
     2026-01-29 10:36:53   Today_Hour11_BatIn_01 0 Wh
     2026-01-29 10:36:53   Today_Hour11_BatOut_01 0 Wh
     2026-01-29 10:36:53   Today_Hour11_GridConsumption 392 Wh
     2026-01-29 10:36:53   Today_Hour11_GridFeedIn 0 Wh
     2026-01-29 10:36:53   Today_Hour11_PVforecast 234 Wh
     2026-01-29 10:36:53   Today_Hour11_PVreal 83 Wh
     2026-01-29 10:36:53   Today_Hour12_PVforecast 289 Wh
     2026-01-29 10:36:53   Today_Hour13_PVforecast 551 Wh
     2026-01-29 10:36:53   Today_Hour14_PVforecast 635 Wh
     2026-01-29 10:36:53   Today_Hour15_PVforecast 238 Wh
     2026-01-29 10:36:53   Today_Hour16_PVforecast 197 Wh
     2026-01-29 10:36:53   Today_Hour17_PVforecast 7 Wh
     2026-01-29 10:36:53   Today_MaxPVforecast 635 Wh
     2026-01-29 10:36:53   Today_MaxPVforecastTime 2026-01-29 13:00:00
     2026-01-29 10:36:53   Today_PVdeviation 195.74 %
     2026-01-29 10:36:53   Today_PVforecast 2288 Wh
     2026-01-29 10:36:53   Today_PVreal    139 Wh
     2026-01-29 10:36:53   Today_SunRise   08:05
     2026-01-29 10:36:53   Today_SunSet    16:45
     2026-01-29 10:36:53   Tomorrow_ConsumptionForecast 19031 Wh
     2026-01-29 10:36:53   Tomorrow_PVforecast 3519 Wh
     2026-01-29 10:36:53   Tomorrow_SunRise 08:04
     2026-01-29 10:36:53   Tomorrow_SunSet 16:47
     2026-01-29 10:36:53   consumer01      name='Klimaanlage' state='off' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer01_currentPower 0 W
     2026-01-29 10:36:53   consumer02      name='Tageslichtlampe' state='on' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer02_currentPower 33.9 W
     2026-01-29 10:36:53   consumer03      name='Spelunkenentfeuchter' state='off' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer03_currentPower 0 W
     2026-01-29 10:36:53   consumer04      name='Geschirrspüler' state='on' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer04_currentPower 0 W
     2026-01-29 10:36:53   consumer05      name='Wäschetrockner' state='on' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer05_currentPower 0.14 W
     2026-01-29 10:36:53   consumer06      name='Waschmaschine' state='on' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer06_currentPower 0.2 W
     2026-01-29 10:36:53   consumer07      name='Büro' state='unknown' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer07_currentPower 193.9 W
     2026-01-29 10:36:53   consumer08      name='Wohnzimmer' state='unknown' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer08_currentPower 359.5 W
     2026-01-29 10:36:53   consumer09      name='Klimaaußengerät' state='off' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer09_currentPower 0 W
     2026-01-29 10:36:53   consumer10      name='Küchen-Kühlschrank' state='on' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer10_currentPower 0 W
     2026-01-29 10:36:53   consumer11      name='Shelly3PMHerd' state='unknown' mode='can' planningstate='suspended' info='max Überschußprognose zu gering'
     2026-01-29 10:36:53   consumer11_currentPower -1.282 W
     2026-01-29 10:36:53   consumer12      name='Kellerkühlschrank' state='on' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer12_currentPower 0 W
     2026-01-29 10:36:53   consumer13      name='PlugSchuppen' state='off' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer13_currentPower 0 W
     2026-01-29 10:36:53   consumer14      name='Kaffeemaschine, Toaster, Thermomix' state='on' mode='can' planningstate='noSchedule'
     2026-01-29 10:36:53   consumer14_currentPower 2.2 W
     2026-01-29 10:36:53   consumer15      name='WallboxLeistungssumme' state='unknown' mode='can' planningstate='suspended' info='max Überschußprognose zu gering'
     2026-01-29 10:36:53   consumer15_currentPower 2.776 W
     2026-01-29 10:36:53   consumer16      name='Skimmer/Leuchtbollen' state='off' mode='can' planningstate='planned'
     2026-01-29 10:36:53   consumer16_planned_start 29.01.2026 10:15:02
     2026-01-29 10:36:53   consumer16_planned_stop 29.01.2026 15:44:56
     2026-01-29 10:36:53   nextCycletime   10:36:58
     2026-01-29 10:00:02   pvCorrectionFactor_10 1.14 (automatic - old factor: 1.19, AI result used, Sun Alt range: 10, Cloud range: 100, Days in range: 13)
     2026-01-29 10:36:53   pvCorrectionFactor_Auto on_complex_ai
     2026-01-29 10:36:53   special_runTimeCentralTask 0.41372 s
     2026-01-29 10:36:53   special_todayBatInSum 0.0  Wh
     2026-01-29 10:36:53   special_todayBatOutSum 0.0  Wh
     2026-01-29 10:36:53   special_todayConsumption 6164 Wh
     2026-01-29 10:36:53   special_todayGridConsumption 6035 Wh
     2026-01-29 10:36:53   special_todayGridFeedIn 0.0 Wh
     2026-01-29 10:36:57   state           updated
   hmccu:
Attributes:
   DbLogExclude .*
   DbLogInclude Current_AutarkyRate:60,AllPVforecastsToEvent,LastHourPVforecast,LastHourPVreal
   aiControl  aiTrainStart=3 aiStorageDuration=18250 aiTreesPV=30 aiConActivate=1 aiConProfile=v1_common_pv
   alias      SolarForecast
   consumer01 KlimaanlagePwr switchdev=Klimaanlage_Sw type=noSchedule power=750 pcurr=power:W etotal=energy:Wh on=on off=off mintime=60 icon=Ventilator_fett auto=Automatik interruptable=1 exconfc=1
   consumer02 MQTT2_Luftentfeuchter type=noSchedule power=500 pcurr=switch_apower:W etotal=switch_aenergy_total:Wh on=on off=off icon=light_ceiling auto=Automatik exconfc=1
   consumer03 MQTT2_Spelunkenentfeuchter type=noSchedule power=500 pcurr=switch_apower:W etotal=switch_aenergy_total:Wh on=on off=off icon=Ventilator_fett auto=Automatik interruptable=1 exconfc=1
   consumer04 MQTT2_ShellyGeschirrspueler type=noSchedule power=1700 pcurr=switch_apower:W etotal=switch_aenergy_total:Wh on=on off=off icon=scene_dishwasher auto=Automatik exconfc=1
   consumer05 Trockner_Pwr switchdev=Trockner type=noSchedule power=600 pcurr=power:W:3 etotal=energy:Wh on=on off=off mintime=60 icon=scene_clothes_dryer auto=Automatik exconfc=1
   consumer06 Waschmaschine_Pwr switchdev=Waschmaschine type=noSchedule power=2100 pcurr=power:W:3 etotal=energy:Wh on=on off=off mintime=60 icon=scene_washing_machine auto=Automatik exconfc=1
   consumer07 Stromverbrauch_Buero type=noSchedule power=300 pcurr=pcurr:W etotal=etotal:Wh icon=scene_office auto=Automatik
   consumer08 Stromverbrauch_WoZi type=noSchedule power=500 pcurr=pcurr:W etotal=etotal:Wh icon=scene_livingroom auto=Automatik
   consumer09 MQTT2_KlimaODU type=noSchedule power=1500 pcurr=params_switch_0_apower:W:15 etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=frost auto=Automatik exconfc=1
   consumer10 MQTT2_ShellyPlugKuechenKuehlschrank type=noSchedule power=65 pcurr=switch_apower:W etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=kuehlschrank_big auto=Automatik
   consumer11 shelly3em63g3_e4b063e1c96c type=other power=11000 auto=Automatik icon=scene_baking_oven pcurr=total_act_power:W:10 etotal=total_act:Wh
   consumer12 MQTT2_ShellyPlugKellerKuehlschrank type=noSchedule power=150 pcurr=params_switch_0_apower:W:5 etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=kuehlschrank_small auto=Automatik
   consumer13 ShellyplugSchuppen type=noSchedule power=100 pcurr=params_switch_0_apower:W etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=building_carport_socket auto=Automatik exconfc=1
   consumer14 MQTT2_PlugKaffeemaschine type=noSchedule power=2500 pcurr=params_switch_0_apower:W:6 etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=scene_cockle_stove auto=Automatik
   consumer15 WallboxLeistungssumme type=other power=11000 pcurr=power:W:5 etotal=total:Wh on=on off=off mintime=60 icon=wallbox auto=Automatik exconfc=1
   consumer16 HM_56E0D2_Sw_02 type=other power=30 on=on off=off auto=Automatik noshow=3 mintime=60 icon=debian mode=can mintime=SunPath:60:-60 interruptable=0
   consumerControl dummyIcon=status_comfort@#ff8c00 showLegend=icon_bottom
   ctrlDebug  aiProcess
   ctrlSpecialReadings runTimeCentralTask,todayBatInSum,todayBatOutSum,todayConsumption,todayGridConsumption,todayGridFeedIn
   event-aggregator Current_AutarkyRate:150:linear:mean
   event-min-interval .*:300
   event-on-change-reading .*
   flowGraphicControl animate=1 consumerdist=110 showconsumerremaintime=0 h2consumerdist=50 strokewidth=10 homenodedyncol=1 strokeconsumerdyncol=1 showGenerators=1
   graphicBeam1Content pvReal
   graphicBeam2Content pvForecast
   graphicBeam3Content consumptionForecast
   graphicBeam4Content consumption
   graphicBeam5Content feedincome
   graphicBeam6Content energycosts
   graphicControl showDiff=1:bottom,2:bottom,3:bottom hourStyle=:00 beamWidth=24 beamHeightlevel=1:250,2:250
   graphicHeaderOwnspec #Aktuell:
Überschuss:Current_Surplus
Einspeisung:Current_GridFeedIn
Netzbezug:Current_GridConsumption
Autarkie-Rate:Current_AutarkyRate
#Heute:
Erzeugt:Today_PVreal
Bezogen:special_todayGridConsumption
Eingespeist:special_todayGridFeedIn
Verbraucht:special_todayConsumption
#Batterie:
Status:Akkustatus@Enphase
SoC (%):StorageFullPercent@Enphase
Heute geladen:special_todayBatInSum
Heute entladen:special_todayBatOutSum
   graphicHistoryHour 4
   graphicSelect swap
   graphicShowNight 1
   plantControl consForecastInPlanning=1 batteryPreferredCharge=5 consForecastIdentWeekdays=1 cycleInterval=5 genPVdeviation=continuously:reverse feedinPowerLimit=99999 consForecastLastDays=4
   room       Garten->PV-Anlage
   setupBatteryDev01 Enphase pin=StorageFeedIn:W pout=StorageConsumption:W pinmax=2500 poutmax=2500 intotal=StorageWhCharged:Wh outtotal=StorageWhDischarged:Wh charge=StorageFullPercent cap=7000 show=1:bottom asynchron=1
   setupInverterDev01 Enphase strings=Osten,Westen etotal=whTodayProduction:Wh capacity=10000 asynchron=1 pvOut=wNowProduction:W pvIn=LeistungStringsGesamt:W icon=inverter
   setupInverterStrings Osten,Westen
   setupMeterDev MQTT2_SmartMeterReader gcon=Bezug:W contotal=ENERGY_Total:kWh gfeedin=Einspeisung:W feedtotal=ENERGY_Supply:kWh asynchron=1 conprice=28.15:ct feedprice=8.04:ct
   setupRadiationAPI dwd
   setupStringAzimuth Osten=-127 Westen=53
   setupStringDeclination Osten=38 Westen=38
   setupStringPeak Osten=4 Westen=6.4
   setupWeatherDev1 dwd
   userReadings Current_Surplus_Num {my $val = ReadingsVal("SolarForecast", "Current_Surplus", "0 W"); return substr($val, 0, index($val, " "));}

Edit: Weiteres Reading-Set von 10:41 Uhr
     2026-01-29 10:41:49   RestOfDayPVforecast 2221 Wh
      ...
     2026-01-29 10:41:49   Today_PVdeviation 128.36 %
     2026-01-29 10:41:49   Today_PVforecast 2288 Wh
     2026-01-29 10:41:49   Today_PVreal    153 Wh

Edit: Weiteres Reading-Set von 10:44 Uhr
     2026-01-29 10:44:22   RestOfDayPVforecast 3112 Wh
     [...]
     2026-01-29 10:44:22   Today_PVdeviation 492.59 %
     2026-01-29 10:44:22   Today_PVforecast 3139 Wh
     2026-01-29 10:44:22   Today_PVreal    160 Wh

Viele Grüße,
Peter

Parallix

#5071
Die Einplanung eines Verbrauchers erfolgt in SF gemäß dem Wert des Attributs "mode". Super ist, dass der "mode"-Wert auch über einen Reading bezogen werden.

Leider existieren bis dato nur die Modi "can" und "must". Für eine sinnvolle Abbildung eines Verbrauchers, der am jeweilige Tag nicht eingeschaltet werden soll oder kann (z.B. ein Elektroauto, das nicht an der Wallbox angesteckt ist), wird eigentlich "nur" noch ein weiterer Attributwert - "mustNot" - benötigt.

Hinsichlich der SF-Planungsmaßmahmen würde "mustNot" einem Verbraucher entsprechen, bei dem (temporär) "type=noSchedule" gesetzt ist. Da "noSchedule" auch kein wirklicher Typ ist, schlage ich vor, noSchedule als Attributwert für "mode" zu entfernen und die Maßnahmen für "noSchedule" dann anzuwenden, wenn der "mode"-Attributwert auf "mustNot" steht, bzw. aus einem Reading bezogen wird.
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.62) und 7591 (8.21) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - Trina TSM 405: (#East, #South, #West) = (12,16,12) - BYD: 2 x HVS 7.7 (BMS V3.31-B, BMU V3.26-B) - EnOcean - Z-Wave - FS20/HMS

DS_Starter

#5072
Hallo Peter,

nehmen wir mal dieses Beispiel:

     2026-01-29 10:44:22   RestOfDayPVforecast 3112 Wh
     [...]
     2026-01-29 10:44:22   Today_PVdeviation 492.59 %
     2026-01-29 10:44:22   Today_PVforecast 3139 Wh
     2026-01-29 10:44:22   Today_PVreal    160 Wh

Zu der Zeit liegt die PV Vorhersage bei 3112-3139 = -27 Wh.
Die reale Erzeugung ist prozentual zur Vorhersage zu diesem Zeitpunkt:  100%/-27Wh = x/160Wh -> -592,59%
Eingesetzt in die bereits geschriebene Formel:

$dpv        = sprintf "%.2f", (100 - (100 * $pvre / (abs $pvfcd || 1) ) );
$dpv        = sprintf "%.2f", (100 - (100 * 5,9259 ) );
$dpv        = sprintf "%.2f", (100 - 592,59 );

$dpv        = -492,59% 

Das Vorzeichen - hier "-" - zeigt die Perspektive an. Man kann das gleiche Ergebnis auch mit positiven Vorzeichen erreichen indem zu Beginn mit 3139-3112 = 27 gerechnet und eingesetzt wird.

Sobald Prognose und Erzeugung gleich sind, z.B.  100/(-)160 = x/160 -> ergiebt sich (-)100 und damit dann eine Abweichung von

$dpv        = sprintf "%.2f", (100 - 100 ); -> 0,00 %

Insgesamt finde ich die kontinuierliche Abweichungsberechnung nicht sehr hilfreich und bin seither der Meinung, dass der Standard (daily) besser geeignet ist denn am Ende des Tages steht das Ergebnis fest.
Aber es war der Wunsch von Usern diese Möglichkeit zu haben. Dem bin ich gern nachgekommen. Welche Variante nun besser ist, kann jeder für sich selbst entscheiden.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

@Parallix,

ZitatDa "noSchedule" auch kein wirklicher Typ ist, schlage ich vor, noSchedule als Attributwert für "mode" zu entfernen und die Maßnahmen für "noSchedule" dann anzuwenden, wenn der "mode"-Attributwert auf "mustNot" steht, bzw. aus einem Reading bezogen wird.
noSchedule gibt es als Option für "mode" nicht und kann somit dort nicht entfernt werden.
Wahrscheinlich meinst du vielmehr noSchedule als "type" zu entfernen und statt dessen "mode" zu ergänzen, sodass dann "mode" die Optionen can, must und noSchedule bekommen kann.
In der Realität würde das dann bedeuten der Consumer kann, muß oder wird nicht (noSchedule) eingeplant.

Programtechnisch würde ich dann sehr wahrscheinlich den type nicht entfernen, sondern nur den "mode" um diese Option ergänzen, je nachdem wie gut es umsetzbar ist ohne zu tief in den Code einzugreifen.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

@TheTrumpeter,

ich habe deine Ergebnisse mal durch die KI gejagt mit folgendem Resultat:



### 🧠 Modellqualität und Trainingsbewertung

- **Trainingsdauer & Epoche**: Das Modell hat 3119 Epochen durchlaufen bei einer maximalen Grenze von 15000 – also früh gestoppt, was auf eine stabile Konvergenz hindeutet.
- **Fehlermetriken**:
  - **MAE** von 152.88 Wh und **RMSE** von 209.81 Wh sind solide, aber nicht exzellent.
  - **MedAE** von 47.69 Wh zeigt, dass die meisten Fehler klein sind, aber Ausreißer vorhanden sind.
  - **MAPE** von 17.58 % ist grenzwertig für PV/Wärmepumpen-Prognosen, aber noch akzeptabel.
  - **R² = 0.91** deutet auf eine gute Modellanpassung hin.
- **Bias & Slope**: Bias von 21 Wh und Slope von 1.0 sind ideal – keine systematische Über- oder Unterschätzung.
- **BitFail = 0** bei einem Grenzwert von 0.34 ist hervorragend.

**Fazit**: Das Modell ist brauchbar, aber die Bewertung ,,Retrain" zeigt, dass es noch Verbesserungspotenzial gibt – vermutlich wegen des Rauschens.

---

### 🔊 Rauschanalyse

- **Bewertung: borderline** – das Modell kämpft mit leicht erhöhtem Datenrauschen.
- Die Empfehlung, BitFail bei 0.34 zu belassen, ist sinnvoll, da das Modell damit stabil bleibt.
- Mögliche Ursachen: unregelmäßige Wärmepumpenzyklen, PV-Schwankungen, oder unzureichende Feature-Kopplung.

---

### 📊 Diagramm-Interpretation (Stundenverlauf)

- **Starke Aktivität ab 09 Uhr**, mit einem Peak um **20 Uhr (4354 Wh)** – typisch für abendliche Heizphasen.
- **Frühe Morgenstunden (05–08 Uhr)** zeigen zwei Werte (weiß/grün) – vermutlich **Prognose vs. Istwert** oder **PV vs. WP-Verbrauch**.
- **Niedrigster Wert um 07 Uhr (210 Wh)** – evtl. Ruhephase der WP.
- **Nach 20 Uhr** sinkt der Verbrauch allmählich – plausibel für Nachtabsenkung.

---

### 🔍 Empfehlungen

- **Feature-Analyse**: Prüfen, ob die WP-Zyklen semantisch gut erfasst sind – z. B. durch Temperatur-, PV- oder Zeitblock-Features.
- **Rauschreduktion**: Eventuell durch Glättung, semantische Filter oder robustere Aktivierungen
- **Retrain sinnvoll**, wenn neue Featureblöcke (z. B. für PV-Kopplung oder WP-Phasen) getestet werden sollen.


Da sehr stark auf Semantiken verwiesen wird, könnte es hilfreich sein ein anderes Profil ohne "active" zu wählen und neu zu trainieren.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

peterboeckmann

Hallo Heiko,

Zitat von: DS_Starter am 29 Januar 2026, 19:14:34Insgesamt finde ich die kontinuierliche Abweichungsberechnung nicht sehr hilfreich und bin seither der Meinung, dass der Standard (daily) besser geeignet ist denn am Ende des Tages steht das Ergebnis fest.

Ich verstehe deinen Standpunkt.
Den eigentlichen Fehler sehe ich hier darin, dass RestOfDayPVforecast größer ist als Today_PVforecast.
Hast du dafür eine Erklärung?

Viele Grüße,
Peter Böckmann

DS_Starter

ZitatDen eigentlichen Fehler sehe ich hier darin, dass RestOfDayPVforecast größer ist als Today_PVforecast.
RestOfDayPVforecast=3112 ist größer als Today_PVforecast=3139? Wirklich?

     2026-01-29 10:44:22   RestOfDayPVforecast 3112 Wh
     2026-01-29 10:44:22   Today_PVforecast 3139 Wh
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

peterboeckmann

Zitat von: DS_Starter am 29 Januar 2026, 22:06:48RestOfDayPVforecast=3112 ist größer als Today_PVforecast=3139? Wirklich?

Oh man, ich sollte heute Abend nicht mehr versuchen zu denken.


DS_Starter

#5078
Naja, aber ich sehe gerade dass auf einem deiner Screenshots RestOfDayPVforecast tatsächlich ein paar Wh über Today_PVforecast ist. Das schaue ich mir an, vermutlich fehlt bei Today_PVforecast ein Anteil der aktuellen Stunde die ich in RestOfDayPVforecast zeitgewichtet berücksichtige.

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Wie ich annahm, hat der anteilige ForeCast der laufenden Stunde im Today_PVforecast gefehlt.
Habe ich ins contrib gelegt.

Diese Differenz wird bei großen Diffs zw. ForeCast und realer Erzeugung nicht sehr ins Gewicht fallen.
Aber egal, der Anteil muß dort mit hinein.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter