76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

DS_Starter

Hallo Peter,

in reductionState ist eine Device:Reading:<Bedingung> Kombination anzugeben.
Die Bedingung kann ein einfacher Regex sein oder in {..} eingefasster Perl-Code. Das Ergebnis muß "wahr" (1) oder "false" 0 sein. Also Boolesche Werte die Perl als Wahr oder Falsch bewertet.

Im einfachsten Fall für deinen Zweck legst du im SF-Device ein userReading "userRdg_Regulated" mit dem Wert "0" an.
Das gibst du dann so an:

reductionState=<Sf-Devicename>:userRdg_Regulated:1


Hier wird auf "1" geprüft und wenn es zutrifft dann ist die Anlage abgeregelt. Da du fix "0" in das Reading legst, ist bei dir der Abregelungsstatus dann immer grün weil nicht abgregelt.

Die Hilfe dazu ist zugegeben etwas spärlich. Ich werde sie verbessern.

LG
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,

danke für die Erläuterung.
Mir war nicht bewusst, dass der Wert immer von einer Device:Reading-Kombination kommen muss.
Ich hab das jetzt wie beschrieben angelegt und das funktioniert.

Viele Grüße,
Peter

tomcat.x

Danke für den Tipp. Da hatte ich aus gleichem Grund auch schon mal mit rumgespielt. Allerdings auch mit reinem Perl-Code, nicht in Verbindung mit einem Reading.
@Peter: Was ich dabei auf jeden Fall gelernt hatte: "false" ist bei Perl gar nicht false, nur 0, '0', "", "()", und "undef".
FHEM: 6.4 auf Raspi 4B, Raspbian (noch Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 8.25), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

DS_Starter

Ich habe die Hilfe für reductionState überarbeitet und hoffe dass es jetzt für den Lesenden klarer und eindeutig ist -> contrib.


reductionState    
SolarForecast nutzt diesen Parameter, um den aktuellen Abregelungsstatus der PV-Anlage auszulesen (optional).
Die Syntax ist eine <Device>:<Reading>:<Funktion>-Kombination. Möglich als <Funktion> sind:
<Regex> - Der Regex wird auf den Wert von <Device>:<Reading> angewendet. 'true'->abgeregelt, 'false'->nicht abgeregelt
<{Perl-Code}> - Das Ergebnis des Perl-Codes wird ausgewertet. 'true'->abgeregelt, 'false'->nicht abgeregelt
                          Der Perl-Code darf keine Leerzeichen enthalten. Der Wert von <Device>:<Reading> wird dem Code
                          mit der Variable $VALUE übergeben.
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

plantControl->consForecastBase kann jetzt auch für Stundengruppen definiert werden:


Die Verbrauchsprognose wird mindestens auf den angegebenen Basiswert erhöht. Höhere Verbrauchsprognosen bleiben unberührt.
   Der Basiswert ist für jede Stunde des Tages (1..24) separat oder als Stundengruppe (z.B. 5-9) definierbar.
   Die Syntax ist '<hod>-><Wert>,<hod>-><Wert>,...'. Der <Wert> kann angegeben werden mit:
   <Ganzzahl> - ein fester Base-Wert, z.B. '2->500' oder '3-9->650'
   <Device>:<Reading>:<Default> - z.B. '11->Dev:Rdg:200' oder '6-11->Dev:Rdg:200', liefert die Base als Ganzzahl. '200' ist der Ersatzwert.
   Hinweis: Die Base ist nur im Rahmen des Verbrauchsprognoseanteils ohne KI wirksam.

Hier ein Prinzipbeispiel:

consForecastBase="1->111,
                  2->222,
                  3->333,
                  4->444,
                  5-8->555"

Update im contrib.
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

denis.robel

Zitat von: DS_Starter am 09 März 2026, 19:57:50Hallo Denis,

dein Konstrukt ist wahrscheinlich Neuland im SF-Umfeld.
Ich habe mir die Darstellungen des Zendure Balkonfraftwerk mit SolarHub2000 im Inet angeschaut und es könnte folgendermaßen funktionieren.

setupInverterDev01 und setupInverterDev02 ergänzt du mit einem setupBatteryDev01.

Dabei ist setupInverterDev01 der SolarHub2000 (Typ Solar-Ladegerät in SF). Dazu gehört noch setupBatteryDev01, wobei hier vermutlich ebenfalls Werte aus dem SolarHub2000 zugeordnet werden. Die Inhalte von pvOut, pin, pout siehst du im Beitrag zuvor.

Dann legst du noch setupInverterDev02 als Typ Batterie-Wechselrichter an, der die Verbindung vom SolarHub2000 zum Hausnetz realisiert. Ein Batterie-Wechselrichter wird durch strings=none aktiviert und hat nur die Anschlüsse ac2dc bzw. dc2ac. Bei dir dürfte nur dc2ac relevant sein und sollte die Summe aus pout + (pvOut - pin) enthalten.

Wenn du damit erfolgreich deine Anlage einrichten konntest, wäre es sicherlich einen Beitrag im Wiki wert.

LG,
Heiko


So, ich habe jetzt ein Konstrukt am Laufen, was vileversprechend aussieht:


setupBatteryDev01:

zendure_bridge_b0b21c980b18
  pin=output_pack_power:W
  pout=pack_input_power:W
  cap=3840
  charge=electricity_level show=1
  icon=@dyn:@dyn:@dyn:@dyn

setupInverterDev01:

zendure_bridge_b0b21c980b18
  feed=bat
  pvIn=solar_input_power:W
  pvOut=output_pack_power:W
  strings=Dach1
  etotal=solar_input_energy:Wh
  capacity=1400

setupInverterDev02:

zendure_bridge_b0b21c980b18
  strings=none
  dc2ac=output_home_power:W
  ac2dc=0:W
  capacity=1200
  asynchron=0

setupMeterDev
   
MQTT2_shellypro3em_34987a465e38
  gcon=gcon:W
  contotal=total_act:Wh
  gfeedin=gfeedin:W
  feedtotal=total_act_ret:Wh
  conprice=0.30:€
  feedprice=0.00:€

für den Shelly pro EM2 habe ich dann folgende Userreadings für gcon und gfeedin damit ich das im setupMeterDev verwenden kann:

attr MQTT2_shellypro3em_34987a465e38 userReadings gcon { ReadingsVal($name,"total_act_power",0) > 0 ? ReadingsVal($name,"total_act_power",0) : 0 },\
gfeedin { ReadingsVal($name,"total_act_power",0) < 0 ? abs(ReadingsVal($name,"total_act_power",0)) : 0 }

dann ein Notify zum Berechnen von etotal:

defmod SolarEnergyCalc notify zendure_bridge_b0b21c980b18:solar_input_power.* {\
  my $energy = ReadingsNum("SolarEnergy","energy",0);;\
  my $energy_kw = ReadingsNum("SolarEnergy","energy_kw",0);;\
  my $power  = ReadingsNum("zendure_bridge_b0b21c980b18","solar_input_power",0);;\
  my $age    = ReadingsAge("SolarEnergy","energy",0);;\
  $age = 0 if($age < 0);;\
  $energy += $power * $age / 3600;;  # W*s -> Wh\
  $energy_kw += $power * $age / 3600000;;  # W*s -> kWh\
  fhem("setreading SolarEnergy energy $energy");;\
  fhem("setreading SolarEnergy energy_kw $energy_kw");;\
  fhem("setreading zendure_bridge_b0b21c980b18 solar_input_energy $energy");;\
  fhem("setreading zendure_bridge_b0b21c980b18 solar_input_energy_kwh $energy_kw");;\
}
attr SolarEnergyCalc room Solar

setstate SolarEnergyCalc 2026-03-22 21:10:23
setstate SolarEnergyCalc 2026-03-22 21:10:05 state active
setstate SolarEnergyCalc 2026-03-22 21:10:23 triggeredByDev zendure_bridge_b0b21c980b18
setstate SolarEnergyCalc 2026-03-22 21:10:23 triggeredByEvent solar_input_power: 0
[code]

und noch eine Statistik für dayly monthly und yearly:

[code]
defmod stat_solar statistics zendure_bridge_b0b21c980b18
attr stat_solar deltaReadings solar_input_energy,solar_input_energy_kwh
attr stat_solar ignoreDefaultAssignments 1
attr stat_solar room Solar,Statistiken
attr stat_solar singularReadings zendure_bridge_b0b21c980b18:solar_input_energy:Delta:Hour\
|zendure_bridge_b0b21c980b18:solar_input_energy:Delta:Day\
|zendure_bridge_b0b21c980b18:solar_input_energy:Delta:Month\
|zendure_bridge_b0b21c980b18:solar_input_energy:Delta:Year\
|zendure_bridge_b0b21c980b18:solar_input_energy_kwh:Delta:Hour\
|zendure_bridge_b0b21c980b18:solar_input_energy_kwh:Delta:Day\
|zendure_bridge_b0b21c980b18:solar_input_energy_kwh:Delta:Month\
|zendure_bridge_b0b21c980b18:solar_input_energy_kwh:Delta:Year

setstate stat_solar Updated stats for: zendure_bridge_b0b21c980b18
setstate stat_solar 2026-03-22 21:34:55 .zendure_bridge_b0b21c980b18:solar_input_energy LastValue: 44270.1765672136 ShowDate: 4 DecPlaces: 14
setstate stat_solar 2026-03-22 21:34:55 .zendure_bridge_b0b21c980b18:solar_input_energy_kwh LastValue: 44.2701765672137 ShowDate: 4 DecPlaces: 17
setstate stat_solar 2026-03-22 21:10:19 monitoredDevicesMQTT2_DEVICE zendure_bridge_b0b21c980b18
setstate stat_solar 2026-03-22 21:10:19 nextPeriodChangeCalc 2026-03-22 21:59:55
setstate stat_solar 2026-03-22 21:34:55 state Updated stats for: zendure_bridge_b0b21c980b18

Noch eine Frage zu setupInverterDev02:

muss ich ac2dc=0:W so definieren, oder kann ich das auch weglassen?

hier noch die vollständige raw definition:
defmod SolarForecast_dach SolarForecast
attr SolarForecast_dach aiControl aiConActivate=1 aiConProfile=v1_common_active
attr SolarForecast_dach ctrlLanguage DE
attr SolarForecast_dach event-on-change-reading .*
attr SolarForecast_dach graphicBeam1Content pvReal
attr SolarForecast_dach graphicBeam2Content pvForecast
attr SolarForecast_dach graphicBeam3Color FFC875
attr SolarForecast_dach graphicBeam3Content batsocRealSum
attr SolarForecast_dach graphicBeam4Content batsocForecastSum
attr SolarForecast_dach graphicShowNight 01
attr SolarForecast_dach plantControl cycleInterval=300
attr SolarForecast_dach room Solar
attr SolarForecast_dach setupBatteryDev01 zendure_bridge_b0b21c980b18 \
  pin=output_pack_power:W \
  pout=pack_input_power:W \
  cap=3840 \
  charge=electricity_level show=1\
  icon=@dyn:@dyn:@dyn:@dyn
attr SolarForecast_dach setupInverterDev01 zendure_bridge_b0b21c980b18\
  feed=bat \
  pvIn=solar_input_power:W \
  pvOut=output_pack_power:W\
  strings=Dach1\
  etotal=solar_input_energy:Wh\
  capacity=1400\

attr SolarForecast_dach setupInverterDev02 zendure_bridge_b0b21c980b18\
  strings=none\
  dc2ac=output_home_power:W\
  ac2dc=0:W\
  capacity=1200\
  asynchron=0
attr SolarForecast_dach setupInverterStrings Dach1
attr SolarForecast_dach setupMeterDev MQTT2_shellypro3em_34987a465e38 \
  gcon=gcon:W \
  contotal=total_act:Wh \
  gfeedin=gfeedin:W \
  feedtotal=total_act_ret:Wh \
  conprice=0.30:€ \
  feedprice=0.00:€
attr SolarForecast_dach setupRadiationAPI OpenMeteoDWD-API
attr SolarForecast_dach setupStringAzimuth Dach1=15
attr SolarForecast_dach setupStringDeclination Dach1=35
attr SolarForecast_dach setupStringPeak Dach1=1.780
attr SolarForecast_dach setupWeatherDev1 OpenMeteoDWD-API

setstate SolarForecast_dach updated
setstate SolarForecast_dach 2026-03-22 21:17:39 .associatedWith MQTT2_shellypro3em_34987a465e38 zendure_bridge_b0b21c980b18
setstate SolarForecast_dach 2026-03-22 21:45:18 .lastupdateForecastValues 1774212318
setstate SolarForecast_dach 2026-03-22 21:05:31 .pvCorrectionFactor_Auto_Soll on_complex_ai
setstate SolarForecast_dach 2026-03-22 01:00:04 .signaldone_01 done
setstate SolarForecast_dach 2026-03-22 02:00:04 .signaldone_02 done
setstate SolarForecast_dach 2026-03-22 03:00:04 .signaldone_03 done
setstate SolarForecast_dach 2026-03-22 04:00:04 .signaldone_04 done
setstate SolarForecast_dach 2026-03-22 05:00:04 .signaldone_05 done
setstate SolarForecast_dach 2026-03-22 06:00:04 .signaldone_06 done
setstate SolarForecast_dach 2026-03-22 07:00:04 .signaldone_07 done
setstate SolarForecast_dach 2026-03-22 08:00:04 .signaldone_08 done
setstate SolarForecast_dach 2026-03-22 11:16:11 .signaldone_09 done
setstate SolarForecast_dach 2026-03-22 11:16:11 .signaldone_10 done
setstate SolarForecast_dach 2026-03-22 11:16:11 .signaldone_11 done
setstate SolarForecast_dach 2026-03-22 12:00:04 .signaldone_12 done
setstate SolarForecast_dach 2026-03-22 13:00:04 .signaldone_13 done
setstate SolarForecast_dach 2026-03-22 14:00:04 .signaldone_14 done
setstate SolarForecast_dach 2026-03-22 15:00:04 .signaldone_15 done
setstate SolarForecast_dach 2026-03-22 16:00:04 .signaldone_16 done
setstate SolarForecast_dach 2026-03-22 17:00:04 .signaldone_17 done
setstate SolarForecast_dach 2026-03-22 18:00:04 .signaldone_18 done
setstate SolarForecast_dach 2026-03-22 19:00:04 .signaldone_19 done
setstate SolarForecast_dach 2026-03-22 20:00:04 .signaldone_20 done
setstate SolarForecast_dach 2026-03-22 21:00:05 .signaldone_21 done
setstate SolarForecast_dach 2026-03-22 00:00:04 .signaldone_24 done
setstate SolarForecast_dach 2026-03-22 21:45:18 Battery_ChargeOptTargetPower_01 9223372036854775808 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Battery_ChargeUnrestricted_01 1
setstate SolarForecast_dach 2026-03-22 21:45:18 Battery_TargetAchievable_01 0
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_AutarkyRate 46 %
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_BatCharge_01 38 %
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_Consumption 1937 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_GridConsumption 1075 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_GridFeedIn 0 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_PV 0 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_PowerBatIn_01 0 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_PowerBatOut_01 904 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_SelfConsumption 0 W
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_SelfConsumptionRate 0 %
setstate SolarForecast_dach 2026-03-22 21:45:18 Current_Surplus 0 W
setstate SolarForecast_dach 2026-03-22 21:00:00 LastHourGridconsumptionReal 149 Wh
setstate SolarForecast_dach 2026-03-22 21:00:00 LastHourPVforecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:00:00 LastHourPVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 NextHours_Sum01_PVforecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 NextHours_Sum02_PVforecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 NextHours_Sum03_PVforecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 NextHours_Sum04_ConsumptionForecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 NextHours_Sum04_PVforecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 RestOfDayConsumptionForecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 RestOfDayPVforecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_CONforecast 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_CONreal 10499 Wh
setstate SolarForecast_dach 2026-03-22 00:59:49 Today_Hour01_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 00:59:49 Today_Hour01_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 00:59:49 Today_Hour01_GridConsumption 198 Wh
setstate SolarForecast_dach 2026-03-22 00:59:49 Today_Hour01_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 00:59:49 Today_Hour01_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 01:59:49 Today_Hour02_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 01:59:49 Today_Hour02_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 01:59:49 Today_Hour02_GridConsumption 95 Wh
setstate SolarForecast_dach 2026-03-22 01:59:49 Today_Hour02_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 01:59:49 Today_Hour02_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 02:59:49 Today_Hour03_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 02:59:49 Today_Hour03_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 02:59:49 Today_Hour03_GridConsumption 109 Wh
setstate SolarForecast_dach 2026-03-22 02:59:49 Today_Hour03_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 02:59:49 Today_Hour03_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 03:59:49 Today_Hour04_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 03:59:49 Today_Hour04_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 03:59:49 Today_Hour04_GridConsumption 114 Wh
setstate SolarForecast_dach 2026-03-22 03:59:49 Today_Hour04_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 03:59:49 Today_Hour04_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 04:59:49 Today_Hour05_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 04:59:49 Today_Hour05_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 04:59:49 Today_Hour05_GridConsumption 124 Wh
setstate SolarForecast_dach 2026-03-22 04:59:49 Today_Hour05_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 04:59:49 Today_Hour05_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 05:59:49 Today_Hour06_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 05:59:49 Today_Hour06_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 05:59:49 Today_Hour06_GridConsumption 120 Wh
setstate SolarForecast_dach 2026-03-22 05:59:49 Today_Hour06_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 05:59:49 Today_Hour06_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 06:59:49 Today_Hour07_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 06:59:49 Today_Hour07_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 06:59:49 Today_Hour07_GridConsumption 124 Wh
setstate SolarForecast_dach 2026-03-22 06:59:49 Today_Hour07_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 06:59:49 Today_Hour07_PVforecast 24 Wh
setstate SolarForecast_dach 2026-03-22 06:59:49 Today_Hour07_PVreal 47 Wh
setstate SolarForecast_dach 2026-03-22 07:59:49 Today_Hour08_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 07:59:49 Today_Hour08_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 07:59:49 Today_Hour08_GridConsumption 719 Wh
setstate SolarForecast_dach 2026-03-22 07:59:49 Today_Hour08_GridFeedIn 0 Wh
setstate SolarForecast_dach 2026-03-22 07:59:49 Today_Hour08_PVforecast 173 Wh
setstate SolarForecast_dach 2026-03-22 07:59:49 Today_Hour08_PVreal 158 Wh
setstate SolarForecast_dach 2026-03-22 08:59:49 Today_Hour09_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 08:59:49 Today_Hour09_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 08:59:49 Today_Hour09_GridConsumption 140 Wh
setstate SolarForecast_dach 2026-03-22 08:59:49 Today_Hour09_GridFeedIn 88 Wh
setstate SolarForecast_dach 2026-03-22 08:59:49 Today_Hour09_PVforecast 498 Wh
setstate SolarForecast_dach 2026-03-22 08:59:49 Today_Hour09_PVreal 533 Wh
setstate SolarForecast_dach 2026-03-22 09:59:49 Today_Hour10_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 09:59:49 Today_Hour10_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 09:59:49 Today_Hour10_GridConsumption 483 Wh
setstate SolarForecast_dach 2026-03-22 09:59:49 Today_Hour10_GridFeedIn 51 Wh
setstate SolarForecast_dach 2026-03-22 09:59:49 Today_Hour10_PVforecast 835 Wh
setstate SolarForecast_dach 2026-03-22 09:59:49 Today_Hour10_PVreal 927 Wh
setstate SolarForecast_dach 2026-03-22 10:59:49 Today_Hour11_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 10:59:49 Today_Hour11_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 10:59:49 Today_Hour11_GridConsumption 84 Wh
setstate SolarForecast_dach 2026-03-22 10:59:49 Today_Hour11_GridFeedIn 94 Wh
setstate SolarForecast_dach 2026-03-22 10:59:49 Today_Hour11_PVforecast 1134 Wh
setstate SolarForecast_dach 2026-03-22 10:59:49 Today_Hour11_PVreal 1212 Wh
setstate SolarForecast_dach 2026-03-22 11:59:49 Today_Hour12_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 11:59:49 Today_Hour12_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 11:59:49 Today_Hour12_GridConsumption 117 Wh
setstate SolarForecast_dach 2026-03-22 11:59:49 Today_Hour12_GridFeedIn 126 Wh
setstate SolarForecast_dach 2026-03-22 11:59:49 Today_Hour12_PVforecast 1354 Wh
setstate SolarForecast_dach 2026-03-22 11:59:49 Today_Hour12_PVreal 1382 Wh
setstate SolarForecast_dach 2026-03-22 12:59:49 Today_Hour13_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 12:59:49 Today_Hour13_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 12:59:49 Today_Hour13_GridConsumption 305 Wh
setstate SolarForecast_dach 2026-03-22 12:59:49 Today_Hour13_GridFeedIn 215 Wh
setstate SolarForecast_dach 2026-03-22 12:59:49 Today_Hour13_PVforecast 1400 Wh
setstate SolarForecast_dach 2026-03-22 12:59:49 Today_Hour13_PVreal 1467 Wh
setstate SolarForecast_dach 2026-03-22 13:59:49 Today_Hour14_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 13:59:49 Today_Hour14_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 13:59:49 Today_Hour14_GridConsumption 136 Wh
setstate SolarForecast_dach 2026-03-22 13:59:49 Today_Hour14_GridFeedIn 341 Wh
setstate SolarForecast_dach 2026-03-22 13:59:49 Today_Hour14_PVforecast 1276 Wh
setstate SolarForecast_dach 2026-03-22 13:59:49 Today_Hour14_PVreal 1462 Wh
setstate SolarForecast_dach 2026-03-22 14:59:49 Today_Hour15_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 14:59:49 Today_Hour15_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 14:59:49 Today_Hour15_GridConsumption 120 Wh
setstate SolarForecast_dach 2026-03-22 14:59:49 Today_Hour15_GridFeedIn 280 Wh
setstate SolarForecast_dach 2026-03-22 14:59:49 Today_Hour15_PVforecast 1099 Wh
setstate SolarForecast_dach 2026-03-22 14:59:49 Today_Hour15_PVreal 1069 Wh
setstate SolarForecast_dach 2026-03-22 15:59:49 Today_Hour16_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 15:59:49 Today_Hour16_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 15:59:49 Today_Hour16_GridConsumption 134 Wh
setstate SolarForecast_dach 2026-03-22 15:59:49 Today_Hour16_GridFeedIn 148 Wh
setstate SolarForecast_dach 2026-03-22 15:59:49 Today_Hour16_PVforecast 1355 Wh
setstate SolarForecast_dach 2026-03-22 15:59:49 Today_Hour16_PVreal 470 Wh
setstate SolarForecast_dach 2026-03-22 16:59:49 Today_Hour17_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 16:59:49 Today_Hour17_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 16:59:49 Today_Hour17_GridConsumption 119 Wh
setstate SolarForecast_dach 2026-03-22 16:59:49 Today_Hour17_GridFeedIn 132 Wh
setstate SolarForecast_dach 2026-03-22 16:59:49 Today_Hour17_PVforecast 416 Wh
setstate SolarForecast_dach 2026-03-22 16:59:49 Today_Hour17_PVreal 427 Wh
setstate SolarForecast_dach 2026-03-22 17:59:49 Today_Hour18_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 17:59:49 Today_Hour18_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 17:59:49 Today_Hour18_GridConsumption 154 Wh
setstate SolarForecast_dach 2026-03-22 17:59:49 Today_Hour18_GridFeedIn 166 Wh
setstate SolarForecast_dach 2026-03-22 17:59:49 Today_Hour18_PVforecast 181 Wh
setstate SolarForecast_dach 2026-03-22 17:59:49 Today_Hour18_PVreal 208 Wh
setstate SolarForecast_dach 2026-03-22 18:59:49 Today_Hour19_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 18:59:49 Today_Hour19_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 18:59:49 Today_Hour19_GridConsumption 128 Wh
setstate SolarForecast_dach 2026-03-22 18:59:49 Today_Hour19_GridFeedIn 139 Wh
setstate SolarForecast_dach 2026-03-22 18:59:49 Today_Hour19_PVforecast 8 Wh
setstate SolarForecast_dach 2026-03-22 18:59:49 Today_Hour19_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 19:59:49 Today_Hour20_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 19:59:49 Today_Hour20_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 19:59:49 Today_Hour20_GridConsumption 160 Wh
setstate SolarForecast_dach 2026-03-22 19:59:49 Today_Hour20_GridFeedIn 152 Wh
setstate SolarForecast_dach 2026-03-22 19:59:49 Today_Hour20_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 20:59:49 Today_Hour21_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 20:59:49 Today_Hour21_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 20:59:49 Today_Hour21_GridConsumption 149 Wh
setstate SolarForecast_dach 2026-03-22 20:59:49 Today_Hour21_GridFeedIn 161 Wh
setstate SolarForecast_dach 2026-03-22 20:59:49 Today_Hour21_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_Hour22_BatIn_01 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_Hour22_BatOut_01 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_Hour22_GridConsumption 125 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_Hour22_GridFeedIn 115 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_Hour22_PVreal 0 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_MaxPVforecast 1400 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_MaxPVforecastTime 2026-03-22 12:00:00
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_PVdeviation 3.53 %
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_PVforecast 9753 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_PVreal 9409 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_SunRise 06:09
setstate SolarForecast_dach 2026-03-22 21:45:18 Today_SunSet 18:25
setstate SolarForecast_dach 2026-03-22 21:45:18 Tomorrow_ConsumptionForecast 191 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Tomorrow_PVforecast 9747 Wh
setstate SolarForecast_dach 2026-03-22 21:45:18 Tomorrow_SunRise 06:07
setstate SolarForecast_dach 2026-03-22 21:45:18 Tomorrow_SunSet 18:27
setstate SolarForecast_dach 2026-03-22 21:45:18 nextCycletime 21:50:18
setstate SolarForecast_dach 2026-03-22 21:45:20 nextRadiationAPICall nach 22.03.2026 22:00:20
setstate SolarForecast_dach 2026-03-22 07:00:04 pvCorrectionFactor_07 1.75 (automatic - old factor: 1.00, Sun Alt range: 5, Cloud range: 00, Days in range: 1)
setstate SolarForecast_dach 2026-03-22 08:00:04 pvCorrectionFactor_08 0.88 (automatic - old factor: 0.92, Sun Alt range: 10, Cloud range: 00, Days in range: 2)
setstate SolarForecast_dach 2026-03-22 12:00:04 pvCorrectionFactor_12 1.02 (automatic - old factor: 1.00, Sun Alt range: 40, Cloud range: 00, Days in range: 1)
setstate SolarForecast_dach 2026-03-22 13:00:04 pvCorrectionFactor_13 1.05 (automatic - old factor: 1.05, Sun Alt range: 40, Cloud range: 00, Days in range: 2)
setstate SolarForecast_dach 2026-03-22 14:00:04 pvCorrectionFactor_14 0.97 (automatic - old factor: 0.90, Sun Alt range: 35, Cloud range: 00, Days in range: 2)
setstate SolarForecast_dach 2026-03-22 15:00:04 pvCorrectionFactor_15 0.97 (automatic - old factor: 1.00, Sun Alt range: 30, Cloud range: 90, Days in range: 1)
setstate SolarForecast_dach 2026-03-22 16:00:04 pvCorrectionFactor_16 1.49 (automatic - old factor: 1.44, Sun Alt range: 25, Cloud range: 100, Days in range: 3)
setstate SolarForecast_dach 2026-03-22 17:00:04 pvCorrectionFactor_17 0.68 (automatic - old factor: 0.66, Sun Alt range: 15, Cloud range: 00, Days in range: 4)
setstate SolarForecast_dach 2026-03-22 18:00:04 pvCorrectionFactor_18 0.81 (automatic - old factor: 0.75, Sun Alt range: 10, Cloud range: 00, Days in range: 2)
setstate SolarForecast_dach 2026-03-22 21:45:18 pvCorrectionFactor_Auto standby (remains in standby for 1.54 hours)
setstate SolarForecast_dach 2026-03-22 21:45:19 state updated

Ich werde das Ganze jetzt ein paar Tage beobachten und schauen, wie es läuft. Wenn es funktioniert, dann kann ich etwas zum Wiki beitragen.
VG

Denis

DS_Starter

#5541
Hallo Denis,

erstmal Gratulation zur erfolgreichen Umsetzung.  :)

Zitatmuss ich ac2dc=0:W so definieren, oder kann ich das auch weglassen?
Weglassen geht nicht weil Pflichtangabe.
Bei dir ist diese Richtung immer 0 weil du nichts vom Hausnetz in die Batterie speist. ac2dc=0:W wird vermutlich funktionieren, ist aber unschön weil der Wert daraus undef ist.
Ich würde dir vorschlagen in zendure_bridge_b0b21c980b18 ein Reading 'SF_ac2dc' mit dem festen Wert '0' anzulegen und dieses Reading in der Definition anzugeben. Dann liest das Modul immer definiert 0 W.
Anzugeben dann so:

attr SolarForecast_dach setupInverterDev02 zendure_bridge_b0b21c980b18\
  strings=none\
  dc2ac=output_home_power:W\
  ac2dc=SF_ac2dc:W\
  capacity=1200\
  asynchron=0

Edit: Ein kleiner Hinweis zum userReadings. Du hast keinen definierten Trigger angegeben. D.h. das userReading berechnet bei jedem Event des Device MQTT2_shellypro3em_34987a465e38 neu. Wenn du das öfter in deinem System machst, geht das ganz schön auf die Rechnerleistung/Performance. Besser ist es ein bestimmtes Reading des Device als Trigger zu benutzen. Und dann im Attr angeben z.B. so:

attr MQTT2_shellypro3em_34987a465e38 userReadings gcon:TriggerReading.* { ReadingsVal($name,"total_act_power",0) > 0 ? ReadingsVal($name,"total_act_power",0) : 0 },\
gfeedin:TriggerReading.* { ReadingsVal($name,"total_act_power",0) < 0 ? abs(ReadingsVal($name,"total_act_power",0)) : 0 }

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

denis.robel

ZitatWeglassen geht nicht weil Pflichtangabe.
Bei dir ist diese Richtung immer 0 weil die nichts vom Hausnetz in die Batterie speist. ac2dc=0:W wird vermutlich funktionieren, ist aber unschön weil der Wert daraus undef ist.
Ich würde dir vorschlagen in zendure_bridge_b0b21c980b18 ein Reading 'SF_ac2dc' mit dem festen Wert '0' anzulegen und dieses Reading in der Definition anzugeben. Dann liest das Modul immer definiert 0 W.
Anzugeben dann so:

attr SolarForecast_dach setupInverterDev02 zendure_bridge_b0b21c980b18\
  strings=none\
  dc2ac=output_home_power:W\
  ac2dc=SF_ac2dc:W\
  capacity=1200\
  asynchron=0

Edit: Ein kleiner Hinweis zum userReadings. Du hast keinen definierten Trigger angegeben. D.h. das userReading berechnet bei jedem Event des Device MQTT2_shellypro3em_34987a465e38 neu. Wenn du das öfter in deinem System machst, geht das ganz schön auf die Rechnerleistung/Performance. Besser ist es ein bestimmtes Reading des Device als Trigger zu benutzen. Und dann im Attr angeben z.B. so:

attr MQTT2_shellypro3em_34987a465e38 userReadings gcon:TriggerReading.* { ReadingsVal($name,"total_act_power",0) > 0 ? ReadingsVal($name,"total_act_power",0) : 0 },\
gfeedin:TriggerReading.* { ReadingsVal($name,"total_act_power",0) < 0 ? abs(ReadingsVal($name,"total_act_power",0)) : 0 }

LG,
Heiko

ok hab ich alles angepasst, auch das triggerreading beim Shelly.

Danke für die hilfreichen Hinweise.
VG

Denis

Parallix

Zitat von: DS_Starter am 22 März 2026, 21:32:41plantControl->consForecastBase kann jetzt auch für Stundengruppen definiert werden
...

Danke! Spart viel Tipparbeit!
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

TheTrumpeter

Ich habe heute Früh das Update gemacht.

Seitdem gibt es negative Prognosen für die Nacht, siehe Screenshot anbei.

Der Anlagencheck ist unauffällig, aiNeuralNetConState empfiehlt aiConBitFailLimit=0.4, was ich nun gesetzt habe und das Training neu gestartet.

Dabei ist mir auch aufgefallen, dass der Syntaxcheck "0.4" anmeckert, "0.40" wird dann aber akzeptiert. Die Empfehlung war aber "0.4" und nicht "0.40". Kann bei Gelegenheit vielleicht der Syntaxcheck angepasst werden?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

ahlermi

Meine Anlage ist aktuell in der Abriegelung, im Wintermodus ist der Akku immer bei mindestens 80%.

Die Statistik zeigt jetzt nicht so direkt das aufgrund der Abrieglung nicht mehr Leistung produziert werden kann, (Inselanlage) wäre es möglich das darzustellen?
Ich meine hier die Genauigkeit in Prozent und die Balken?

Werden die KI Statistiken sauber fortgeschrieben, also am besten die Stunden ignoriert?

LG Michael
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

300P

Lass dir doch (etwas mehr) per Eintrag im Grafikkopf anzeigen:

attr <name> graphicHeaderOwnspec
#aktuelle&nbsp;Werte
Netz&nbsp;aktuell:Current_GridConsumption
Einspeisung&nbsp;aktuell:Current_GridFeedIn
Netz&nbsp;Heute&nbsp;bis&nbsp;jetzt:special_todayGridConsumption
Einspeisung&nbsp;Heute&nbsp;bis&nbsp;jetzt:special_todayGridFeedIn
#Verbrauch
Heute&nbsp;bis&nbsp;jetzt:special_todayConsumption
Heute&nbsp;erwartet:special_todayConsumptionForecastDay
Heute&nbsp;bis&nbsp;Sonnenuntergang:special_todayConForecastTillSunset
Heute&nbsp;bis&nbsp;Sonnenaufgang&nbsp;:special_conForecastTillNextSunrise
#
:
:
:
Sonnenuntergang&nbsp;bis&nbsp;Sonnenaufgang&nbsp;:special_conForecastComingNight
#PV
Heute&nbsp;bis&nbsp;jetzt:Today_PVreal
Heute&nbsp;erwartet:Today_PVforecast
Morgen&nbsp;erwartet:Tomorrow_PVforecast
Übermorgen&nbsp;erwartet:special_dayAfterTomorrowPVforecast
#Batterie&nbsp;Gesamt
Ladung&nbsp;aktuell:special_BatPowerIn_Sum
Entladung&nbsp;aktuell:special_BatPowerOut_Sum
Ladung&nbsp;heute:special_todayBatInSum
Entladung&nbsp;heute:special_todayBatOutSum
#Batterie01&nbsp;|&nbsp;02
Bat01-Ladeanforderung:Battery_ChargeRequest_01
Bat01-Ladung&nbsp;empfohlen:Battery_ChargeUnrestricted_01
Bat02-Ladeanforderung:Battery_ChargeRequest_02
Bat02-Ladung&nbsp;empfohlen:Battery_ChargeUnrestricted_02
#
MaxPVForecastTime:Today_MaxPVforecastTime
Bat01-Ladeabbruch&nbsp;empfohlen:Battery_ChargeAbort_01
&nbsp;:
Bat02-Ladeabbruch&nbsp;empfohlen:Battery_ChargeAbort_02
#
Bat01-Ladung&nbsp;heute:special_todayBatIn_01
Bat01-Entladung&nbsp;heute:special_todayBatOut_01
Bat02-Ladung&nbsp;heute:special_todayBatIn_02
Bat02-Entladung&nbsp;heute:special_todayBatOut_02
#
Bat01-Ladeleistung&nbsp;aktuell:Current_PowerBatIn_01
Bat01-Entladeleistung&nbsp;aktuell:Current_PowerBatOut_01
Bat02-Ladeleistung&nbsp;aktuell:Current_PowerBatIn_02
Bat02-Entladeleistung&nbsp;aktuell:Current_PowerBatOut_02
#
Bat01-Ladestatus&nbsp;aktuell:Current_BatCharge_01
Bat01-Restapazität&nbsp;aktuell:Current_CapBat_01
Bat02-Ladestatus&nbsp;aktuell:Current_BatCharge_02
Bat02-Restapazität&nbsp;aktuell:Current_CapBat_02

Ergebnis  siehe Screenshot - passe es einfach nach deinen Wünschen etwas an  ;)



Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

DS_Starter

@TheTrumpeter,

ZitataiNeuralNetConState empfiehlt aiConBitFailLimit=0.4
Bist du sicher dass 0.4 und nicht 0.40 empfohlen wurden?
Wenn doch, dann war es ein Artefakt. In der aktuellen Version ist die Empfehlung immer zweistellig nach dem Komma (0.XX).
Ich werde es aber nochmal im Code sicherstellen.
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

ZitatMeine Anlage ist aktuell in der Abriegelung, im Wintermodus ist der Akku immer bei mindestens 80%.

Die Statistik zeigt jetzt nicht so direkt das aufgrund der Abrieglung nicht mehr Leistung produziert werden kann, (Inselanlage) wäre es möglich das darzustellen?
Du meinst vermutlich "Prognose" und nicht "Statistik"?
Die Problematik bei der Abregelung der Anlage ist die Frage der Abregelungsgrades. SF weiß nicht ob deine Anlage auf 0 oder einen anderen Grenzwert begrenzt wird.
Wenn es möglich wäre ´nicht nur 0 oder 1 als Indikatior von der Anlage zu bekommen, könnte ich diesen Wert als Prognosegrenzwert einetzen. Wäre das gegeben?

ZitatWerden die KI Statistiken sauber fortgeschrieben, also am besten die Stunden ignoriert?
Ja, werden sie.
Abhängig vom Ergebnis weird in aiRawData (und anderen Speichern) das Valid-Bit "pvrlvd" (nicht) gesetzt.
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

Wolle02

Moin Heiko, ich hätte mal eine Frage zur Darstellung der Verbrauchswerte; und zwar nicht zur Verbrauchsvorhersage, sondern zur Darstellung des realen Verbrauchs.
Im ersten Screenshot siehst du die reale Verbrauchsdarstellung für die Stunde 12 als blauer Balken. Die Prognose ist grau und passt eigentlich ganz gut, aber der reale Verbrauch wird irgendwie zu hoch angezeigt. In dem Screenshot siehst du, dass momentan ein realer Verbrauch von 433 Watt anliegt. Das war in der Stunde 12 auch die ganze Zeit so; es war niemand zu Hause und es gab keine signifikanten Verbrauchsschwankungen. Im Screenshot 2 siehst du das korrespondierende Statistics-Reading für den Verbrauch der letzten Stunde. Das passt mit 397 Wh eigentlich ganz gut.
Warum wird bei den blauen Balken für den realen Verbrauch bei Stunde 12 dann 918 Wh angezeigt? Die übrigen Balken sind ebenfalls zu hoch; das zieht sich aktuell über den ganzen Tag. Ich habe jetzt leider vergessen das Debug einzuschalten; welche Darstellung bräuchtest du für das Debugging? Das normale Consumption_debug oder die long-Version?