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

Mehrere Leerzeichen enthaltende Indexe zu löschen geht.

delIndex=<Index>,<Index>,... - löscht einen oder mehrere Datensätze mit dem Index. Der Index kann als Regex angegeben sein.
Sind im Argument Leerzeichen vorhanden, ist das gesamte Argument in Hochkomma einzuschließen.
Beispiele: 1.) delIndex=2025013023 2.) delIndex='2025013023, 2025013024'

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

DS_Starter

@Peter,

ZitatDie dritte Grafik sieht leider doch noch zu hoch aus, wenn der erste Balken der höchste ist.
Eigentlich sollten alle drei gleich hoch sein
Was auch noch wichtig ist, die angegebene Wert in beamHeightlevel ist kein Absolutwert, sondern ein Normierungsfaktor. Die Hilfe sagt dazu:

beamHeightlevel    
Für jede Ebene der Balkengrafik kann die Balkenhöhe der jeweiligen Ebene festgelegt werden.
Die Angabe für eine Ebene besteht aus der Ebenen-Nummer (1..X), einem ':' gefolgt von einer positiven Ganzzahl > 0.
Der Zahlenwert wird als Normierungsfaktor bei der Höhenberechnung verwendet.
Die Angabe für weitere Ebenen erfolgt durch Komma getrennt (siehe Beispiel).
<Ebene>:<Ganzzahl> - Normierungsfaktor (default: 200)

Ich versuche es noch expliziter auszudrücken.

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,

Eine kurze einfache Beschreibung wäre toll, wie sich der Normierungsfaktor auswirkt. Ich hätte angenommen, dass bei drei Ebenen mit gleichem Normierungsfaktor auch die resultierende Höhe gleich wird.

Vielen Dank und viele Grüße,
Peter

DS_Starter

ZitatEine kurze einfache Beschreibung wäre toll, wie sich der Normierungsfaktor auswirkt.
Dazu habe ich ein bisschen was hier beschrieben.
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

dieter114

#5329
Hallo Heiko,

im integrierten SolarForecast Grafikbereich Abschnitt 1 oben rechts
steht "Abweichung Heute ---- Abweichung Gestern" in %.
Den Wert für heute kann ich einfach berechnen, nur wo bekommst Du den Wert für gestern her?
Oder stehen beide Werte in irgenwelchen Readings, die ich übersehen habe?

LG WDS
RPi II+III+V,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLESDuino(adv), div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI,Poolsteuerung mit fhem, Fronius, BYD Solaranlage

DS_Starter

#5330
Hallo Dieter,

Der Wert von Gestern ergibt sich einfach aus einem Übertrag um Mitternacht, d.h. dann wird der Wert von Heute der Wert von Gestern.

Ein Reading gibt es dafür nicht, aber du kannst die Werte per Perl abfragen:

  $gestern_PV_Abweichung = [FHEM::SolarForecast::]CircularVal (<SF-Devicename>, 99, 'ydayDvtn',    undef);
  $gestern_CO_Abweichung = [FHEM::SolarForecast::]CircularVal (<SF-Devicename>, 99, 'ydayConDvtn', undef);

Siehe Doku.

Achso ... die Werte von Heute stehen in Reading Today_CONdeviation bzw. Today_PVdeviation. Allerdings ist der Zeitpunkt der Erstellung abhängig von Attr plantControl->genPVdeviation.

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

marboj

Hallo zusammen,

sorry für die verspätete Rückmeldung. Hier nochmal alle 3 Geräte:

setupBatteryDev01 b2500_1cdbd4424d48 pin=/power:W pout=b2500/1/power/power:W cap=remaining_capacity:Wh charge=remaining_percent show=1

setupInverterDev01 OpenDTU_2370752 pvOut=summe_PVdirekt:W capacity=800 etotal=yieldtotal:kWh strings=Ost,West

setupInverterDev02 b2500_1cdbd4424d48 pvOut=power:W capacity=800 etotal=yieldtotal:kWh strings=SüdGarage,SüdGarten feed=bat

Gruß
Marco
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

denis.robel

Hallo,

ich habe ein Zendure Balkonfraftwerk mit einem SolarHub2000 und eine MQTT Bridge mit einem ESP32Home am Start.
Den Wechselrichter habe ich mit OpenDTU ebenfalls via MQTT eingebunden und einen Shelly Pro3EM ebenfalls.

Nun möchte ich SoarForecast einrichten und habe keinen Plan, welche Devicekombo ich erstellen soll.

Inverterdevice1: ist der Solarhub, da hängen die Akkus dran und der Wechselrichter

Inverterdevice2: ist der Wechselrichter, hier hängt das Haus dran

Ich möchte gerne eine Visualisierung des ForeCastes, der real eingesammelten Energie und der verbrauchten Energie erreichen.
Ebenfalls wäre es schön, dass der Energiefluß in der Grafik richtig angezeigt wird.

Aber irgendwie stehe ich auf dem Schlauch das ganze gescheit einzurichten. Über Anregungen zur Einrichtung würde ich mich sehr freuen.

Momentan habe ich es so eingerichtet:

Internals:
   FUUID      69a2bd28-f33f-3e5d-44a1-c9cb5fc8d320a077
   FVERSION   76_SolarForecast.pm:v2.2.0-s30871/2026-02-18
   LCACHEFILE last write time: 15:18:40 whole Operating Memory
   MODE       Automatic / Event-controlled - next planned Cycletime: 15:20:53
   MODEL      OpenMeteoDWDAPI
   NAME       SolarForecast_dach
   NOTIFYDEV  MQTT2_shellypro3em_34987a465e38,zendure_bridge_b0b21c980b18,OpenDTU_4741344
   NR         1144
   NTFY_ORDER 50-SolarForecast_dach
   STATE      wrote cachefile solcastapi successfully
   TYPE       SolarForecast
   WEATHERMODEL OpenMeteoDWDAPI
   eventCount 8793
   HELPER:
     FW         WEB
     PACKAGE    FHEM::SolarForecast
     S10DONE    1
     SPGDETAIL  SolarForecast_dach
     SPGDEV     SolarForecast_dach
     SPGROOM    Solar
     VERSION    2.2.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     123703
       finishFn   FHEM::SolarForecast::_processMessageFile
       fn         FHEM::SolarForecast::_retrieveMessageFile
       loglevel   3
       pid        DEAD:648422
       telnet     telnetForBlockingFn_1772371238.17535_127.0.0.1_37330
       terminated 1
       timeout    30
       abortArg:
       arg:
         block      1
         name       SolarForecast_dach
         tsnext     1773066202.79259
   OLDREADINGS:
   READINGS:
     2026-03-09 15:15:53   Battery_ChargeOptTargetPower_01 9223372036854775808 W
     2026-03-09 15:15:53   Battery_ChargeUnrestricted_01 1
     2026-03-09 15:15:53   Battery_TargetAchievable_01 0
     2026-03-09 15:15:53   Current_AutarkyRate 0 %
     2026-03-09 15:15:53   Current_BatCharge_01 62 %
     2026-03-09 15:15:53   Current_Consumption 24 W
     2026-03-09 15:15:53   Current_GridConsumption 0 W
     2026-03-09 15:15:53   Current_GridFeedIn 0 W
     2026-03-09 15:15:53   Current_PV      214 W
     2026-03-09 15:15:53   Current_PowerBatIn_01 214 W
     2026-03-09 15:15:53   Current_PowerBatOut_01 0 W
     2026-03-09 15:15:53   Current_SelfConsumption 0 W
     2026-03-09 15:15:53   Current_SelfConsumptionRate 0 %
     2026-03-09 15:15:53   Current_Surplus 190 W
     2026-03-09 15:00:00   LastHourGridconsumptionReal 0 Wh
     2026-03-09 15:00:00   LastHourPVforecast 318 Wh
     2026-03-09 15:00:00   LastHourPVreal  0 Wh
     2026-03-09 15:15:53   NextHours_Sum01_PVforecast 242 Wh
     2026-03-09 15:15:53   NextHours_Sum02_PVforecast 368 Wh
     2026-03-09 15:15:53   NextHours_Sum03_PVforecast 399 Wh
     2026-03-09 15:15:53   NextHours_Sum04_ConsumptionForecast 0 Wh
     2026-03-09 15:15:53   NextHours_Sum04_PVforecast 399 Wh
     2026-03-09 15:15:53   RestOfDayConsumptionForecast 0 Wh
     2026-03-09 15:15:53   RestOfDayPVforecast 399 Wh
     2026-03-09 15:15:53   Today_CONforecast 0 Wh
     2026-03-09 15:15:53   Today_CONreal   0 Wh
     2026-03-09 00:59:49   Today_Hour01_BatIn_01 0 Wh
     2026-03-09 00:59:49   Today_Hour01_BatOut_01 0 Wh
     2026-03-09 00:59:49   Today_Hour01_PVreal 0 Wh
     2026-03-09 01:59:49   Today_Hour02_BatIn_01 0 Wh
     2026-03-09 01:59:49   Today_Hour02_BatOut_01 0 Wh
     2026-03-09 01:59:49   Today_Hour02_PVreal 0 Wh
     2026-03-09 02:59:49   Today_Hour03_BatIn_01 0 Wh
     2026-03-09 02:59:49   Today_Hour03_BatOut_01 0 Wh
     2026-03-09 02:59:49   Today_Hour03_PVreal 0 Wh
     2026-03-09 03:59:49   Today_Hour04_BatIn_01 0 Wh
     2026-03-09 03:59:49   Today_Hour04_BatOut_01 0 Wh
     2026-03-09 03:59:49   Today_Hour04_PVreal 0 Wh
     2026-03-09 04:59:49   Today_Hour05_BatIn_01 0 Wh
     2026-03-09 04:59:49   Today_Hour05_BatOut_01 0 Wh
     2026-03-09 04:59:49   Today_Hour05_PVreal 0 Wh
     2026-03-09 05:59:49   Today_Hour06_BatIn_01 0 Wh
     2026-03-09 05:59:49   Today_Hour06_BatOut_01 0 Wh
     2026-03-09 05:59:49   Today_Hour06_PVreal 0 Wh
     2026-03-09 06:59:49   Today_Hour07_BatIn_01 0 Wh
     2026-03-09 06:59:49   Today_Hour07_BatOut_01 0 Wh
     2026-03-09 06:59:49   Today_Hour07_PVforecast 3 Wh
     2026-03-09 06:59:49   Today_Hour07_PVreal 0 Wh
     2026-03-09 07:59:49   Today_Hour08_BatIn_01 0 Wh
     2026-03-09 07:59:49   Today_Hour08_BatOut_01 0 Wh
     2026-03-09 07:59:49   Today_Hour08_PVforecast 78 Wh
     2026-03-09 07:59:49   Today_Hour08_PVreal 0 Wh
     2026-03-09 08:59:49   Today_Hour09_BatIn_01 0 Wh
     2026-03-09 08:59:49   Today_Hour09_BatOut_01 0 Wh
     2026-03-09 08:59:49   Today_Hour09_PVforecast 181 Wh
     2026-03-09 08:59:49   Today_Hour09_PVreal 0 Wh
     2026-03-09 09:59:49   Today_Hour10_BatIn_01 0 Wh
     2026-03-09 09:59:49   Today_Hour10_BatOut_01 0 Wh
     2026-03-09 09:59:49   Today_Hour10_PVforecast 269 Wh
     2026-03-09 09:59:49   Today_Hour10_PVreal 0 Wh
     2026-03-09 10:59:49   Today_Hour11_BatIn_01 0 Wh
     2026-03-09 10:59:49   Today_Hour11_BatOut_01 0 Wh
     2026-03-09 10:59:49   Today_Hour11_PVforecast 355 Wh
     2026-03-09 10:59:49   Today_Hour11_PVreal 0 Wh
     2026-03-09 11:59:49   Today_Hour12_BatIn_01 0 Wh
     2026-03-09 11:59:49   Today_Hour12_BatOut_01 0 Wh
     2026-03-09 11:59:49   Today_Hour12_PVforecast 389 Wh
     2026-03-09 11:59:49   Today_Hour12_PVreal 0 Wh
     2026-03-09 12:59:49   Today_Hour13_BatIn_01 0 Wh
     2026-03-09 12:59:49   Today_Hour13_BatOut_01 0 Wh
     2026-03-09 12:59:49   Today_Hour13_PVforecast 404 Wh
     2026-03-09 12:59:49   Today_Hour13_PVreal 0 Wh
     2026-03-09 13:59:49   Today_Hour14_BatIn_01 0 Wh
     2026-03-09 13:59:49   Today_Hour14_BatOut_01 0 Wh
     2026-03-09 13:59:49   Today_Hour14_PVforecast 341 Wh
     2026-03-09 13:59:49   Today_Hour14_PVreal 0 Wh
     2026-03-09 14:59:49   Today_Hour15_BatIn_01 0 Wh
     2026-03-09 14:59:49   Today_Hour15_BatOut_01 0 Wh
     2026-03-09 14:59:49   Today_Hour15_PVforecast 318 Wh
     2026-03-09 14:59:49   Today_Hour15_PVreal 0 Wh
     2026-03-09 15:15:53   Today_Hour16_BatIn_01 0 Wh
     2026-03-09 15:15:53   Today_Hour16_BatOut_01 0 Wh
     2026-03-09 15:15:53   Today_Hour16_PVforecast 271 Wh
     2026-03-09 15:15:53   Today_Hour16_PVreal 0 Wh
     2026-03-09 15:15:53   Today_Hour17_PVforecast 155 Wh
     2026-03-09 15:15:53   Today_Hour18_PVforecast 41 Wh
     2026-03-09 15:15:53   Today_MaxPVforecast 404 Wh
     2026-03-09 15:15:53   Today_MaxPVforecastTime 2026-03-09 12:00:00
     2026-03-09 15:15:53   Today_PVforecast 2805 Wh
     2026-03-09 15:15:53   Today_PVreal    0 Wh
     2026-03-09 15:15:53   Today_SunRise   06:38
     2026-03-09 15:15:53   Today_SunSet    18:03
     2026-03-09 15:15:53   Tomorrow_ConsumptionForecast 0 Wh
     2026-03-09 15:15:53   Tomorrow_PVforecast 2949 Wh
     2026-03-09 15:15:53   Tomorrow_SunRise 06:36
     2026-03-09 15:15:53   Tomorrow_SunSet 18:05
     2026-03-09 15:15:53   nextCycletime   15:20:53
     2026-03-09 15:10:55   nextRadiationAPICall after 2026-03-09 15:25:55
     2026-03-09 15:18:40   state           wrote cachefile solcastapi successfully
Attributes:
   graphicBeam1Content batsocCombi_01
   plantControl cycleInterval=300
   room       Solar
   setupBatteryDev01 zendure_bridge_b0b21c980b18 pin=output_pack_power:W pout=pack_input_power:W cap=3840 charge=electricity_level show=1
   setupInverterDev01 zendure_bridge_b0b21c980b18
  feed=bat
  pvIn=solar_input_power:W
  pvOut=output_pack_power:W
  strings=Dach1
  etotal=stat_solar:etotal:Wh
  capacity=1400

   setupInverterDev02 OpenDTU_4741344
  strings=none
  dc2ac=powerdc:W
  ac2dc=power:W
  capacity=1200
  icon=inverter@darkorange:inverter@grey
  asynchron=0
   setupInverterStrings Dach1
   setupMeterDev MQTT2_shellypro3em_34987a465e38 gcon=powerAll:W contotal=total_consumed:Wh gfeedin=powerAll:W feedtotal=total_returned:Wh
   setupRadiationAPI OpenMeteoDWD-API
   setupStringAzimuth Dach1=175
   setupStringDeclination Dach1=30
   setupStringPeak Dach1=1.780
   setupWeatherDev1 OpenMeteoDWD-API






 
VG

Denis

DS_Starter

Hallo Marco,

da ich die Bedeutung deiner Readings nicht kenne, gebe ich kurze Hinweise, welche phys. Größen in diesen Readings vorhanden sein müssen. Du müsstest prüfen, ob dem tatsächlich so ist.

ZitatsetupBatteryDev01 b2500_1cdbd4424d48 pin=/power:W pout=b2500/1/power/power:W cap=remaining_capacity:Wh charge=remaining_percent show=1
setupInverterDev02 b2500_1cdbd4424d48 pvOut=power:W capacity=800 etotal=yieldtotal:kWh strings=SüdGarage,SüdGarten feed=bat

Das ist praktisch das Solar-Ladegerät mit der Batterie. Hier muß sein:

- pvOut: die aktuelle Leistung aus PV-Erzeugung. Hier darf NUR die Solarzellenleistung drinstecken und
         keine anderen Bestandteile wie Batterieleistungsabgabe
- pin:  die aktuelle Batterieladeleistung, d.h. der Anteil der Solarleistung der in die Batterie geladen wird
        (kann alles sein) und/oder der Ladeanteil vom Wechselstromhausnetz falls dies zutreffen kann.
        Ist der Readingname "/power" so richtig?
- pout: die aktuelle Batterieentladeleistung, d.h. was die Batterie an das Hausnetz abgibt. Hier darf
        wiederum kein Solarzellenanteil drinstecken.

Wenn du diese Bedingungen einhältst, sollte die Flußdarstellung i.O. sein.
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

Hallo 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
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