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

Zukünftig wird das DWD ICON Modell durch KI unterstützt:
https://www.dwd.de/DE/presse/pressemitteilungen/DE/2026/20260302_pm_bmv_startet_aicon_news.html

Es bleibt abzuwarten welche spürbaren Verbesserungen sich dadurch für uns ergeben. Vorteilhaft wäre z.B. bereits eine präzisere Bewökungs- und Niederschlagsvorhersage.
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

tomcat.x

Hallo Heiko,

was passiert denn, wenn man bei den Invertern keine Strings einträgt? Ich habe 3 Inverter und jeweils 1 String. Wie mir aber gestern aufgefallen ist, muss ich bei irgendeiner Änderung die Strings entfernt haben. Laut Beschreibung werden dann alle Strings zugeordnet. Heißt das, dass in meinem Fall jedem Inverter alle 3 Strings zugeordnet wurden? Die Vorhersage hat sich zumindest seit der Korrektur deutlich verändert und passt heute, bei ungefähr gleichem Wetter, viel besser. Sollte ich die AI Daten löschen?

Und noch was: Bei der Prüfung der weiteren Parameter ist mir aufgefallen, dass ich nur pvOut angegeben habe. Bringt es etwas, zusätzlich pvIn zu übergeben?

Viele Grüße
Thomas
FHEM: 6.3 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.10), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

DS_Starter

Hallo Thomas,

Zitatwas passiert denn, wenn man bei den Invertern keine Strings einträgt? Ich habe 3 Inverter und jeweils 1 String. Wie mir aber gestern aufgefallen ist, muss ich bei irgendeiner Änderung die Strings entfernt haben. Laut Beschreibung werden dann alle Strings zugeordnet. Heißt das, dass in meinem Fall jedem Inverter alle 3 Strings zugeordnet wurden?
Ja, es werden bei der Prognose alle drei Strings nacheinander jedem der drei Inverter zugeordnet und deren Antaile dann summiert. Die Prognose dürfte deutlich zu hoch ausfallen.
Die tatsächlich erzeugten Werte werden nicht verfälscht, denn sie werden direkt aus den Inverterreadings gelesen und gespeichert.

Mit crtlDebug=radiationProcess lässt sich dieser Prozess verfolgen.

ZitatSollte ich die AI Daten löschen?
Das wird nicht nötig sein. Es werden nur die real erreichten Daten für das Training verwendet.
Die fehlerhaften Prognosedaten können Einfluß auf die Korrekturfaktoren ohne KI haben. Aber durch die interne Median-Logik werden diese Fehlerdaten automatisch nach gewisser Zeit entfernt.


ZitatUnd noch was: Bei der Prüfung der weiteren Parameter ist mir aufgefallen, dass ich nur pvOut angegeben habe. Bringt es etwas, zusätzlich pvIn zu übergeben?
pvIn ist nur für die Anzeige der Generatorpower relevant. Dadurch sieht man auch evntuelle Inverterverluste und kann den Wirkungsgrad berechnen. Aber für das reale Erzeungsergebnis ist pvOut relevant.

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

tomcat.x

Vielen Dank für die Infos.

Zitat von: DS_Starter am 03 März 2026, 15:32:25Die Prognose dürfte deutlich zu hoch ausfallen.

Klar, ist schon von um die 60% auf einen 1-stelligen Wert gesunken. Seit ich einen Speicher habe und nicht mehr unbedingt direkt verbrauchen muss, habe ich das nicht mehr ständig verfolgt. Und mit einem BKW sowieso nicht im Winter. Aber bei dem Wetter gerade ist es aufgefallen ...
FHEM: 6.3 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.10), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

DS_Starter

Die V2.2.2 im contrib ist upgedated.
Es gibt jetzt die globale Einstellmöglichkeit:

consumerControl->globalMode:

Setzt den Planungsmodus global für alle Verbraucher. Diese Einstellung ist dominant gegenüber spezifischen mode Einstellungen.
   Die Bedeutung der Optionen ist identisch mit der Einstellung des spezifischen consumerXX->mode:
   unset - keine globale mode Einstellung, es gilt der verbraucherspezifische mode. Entspricht einem nicht gesetzten Attributschlüssel.
   can - die Einplanung erfolgt zum Zeitpunkt mit wahrscheinlich genügend verfügbaren PV Überschuß
   must - der Verbraucher wird optimiert eingeplant auch wenn wahrscheinlich nicht genügend PV Überschuß vorhanden sein wird
   mustNot - Der Verbraucher darf nicht geplant bzw. gestartet werden. Gestartete Verbraucher werden gestoppt
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

Die V2.2.2 habe ich eingecheckt und ist morgen früh im Regelupdate.

Für die spätere KI PV-Prognose mit FANN wird windspeed nun ebenfalls in den Raw-Daten gespeichert:

Zitat2026030420 => hod: 20, dayname: Mi, sunaz: 279, sunalt: -15, rad1h: -, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 10.1, socwhsum: 26711
              windspeed: 1.12, pvrl: -, pvrlvd: 1, minutes_wp: -, conaifc: 893, con: 619, gcons: 22, presence: 1, holiday: 0
              csme01: 23, csme03: 0, csme04: 131, csme05: 0, csme06: 0, csme07: 0, csme08: 0, csme09: 3
2026030421 => hod: 21, dayname: Mi, sunaz: 292, sunalt: -24, rad1h: -, wcc: 8, weatherid: 1, rr1c: 0.00, temp: 8.8, socwhsum: 25859
              windspeed: 0.81, pvrl: -, pvrlvd: 1, minutes_wp: -, conaifc: 650, con: 673, gcons: 23, presence: 1, holiday: 0
              csme01: 27, csme03: 0, csme04: 142, csme05: 0, csme06: 0, csme07: 0, csme08: 0, csme09: 35
2026030422 => hod: 22, dayname: Mi, sunaz: 306, sunalt: -32, rad1h: -, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 7.8, socwhsum: 25290
              windspeed: 0.54, pvrl: -, pvrlvd: 1, minutes_wp: -, conaifc: 669, con: 735, gcons: 22, presence: 1, holiday: 0
              csme01: 28, csme03: 0, csme04: 138, csme05: 0, csme06: 10, csme07: 0, csme08: 0, csme09: 0

VG
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 04 März 2026, 22:30:58Für die spätere KI PV-Prognose mit FANN wird windspeed nun ebenfalls in den Raw-Daten gespeichert:

Wäre es dann sinnvoll, auch die gemessene Windgeschwindigkeit mit an SF zu übergeben und aufzuzeichnen?

Viele Grüße,
Peter

DS_Starter

#5227
Ja, wenn man einen Windmesser hat, wäre das natürlich nicht verkehrt.
Die optionale Möglichkeit würde ich in setupEnvironment vorsehen.
Kommt im nächsten Update mit. 

Edit:  Windgeschwindigkeit wird in m/s übergeben. Reicht das oder braucht man auch km/h?
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 04 März 2026, 22:46:34Edit:  Windgeschwindigkeit wird in m/s übergeben. Reicht das oder braucht man auch km/h?

Das genügt. Lässt sich ja per UserReading leicht umrechnen.

DS_Starter

#5229
Liefern die Windmesser (Devices) eigentlich nur die aktuelle Windgeschwindigkeit oder auch Aggregationen wie die durchschnittliche Geschwindigkeit der aktuellen Stunde? Das wäre der richtige Wert weil Böen geglättet werden.
 
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


Wolle02

Zitat von: DS_Starter am 04 März 2026, 22:46:34Windgeschwindigkeit wird in m/s übergeben. Reicht das oder braucht man auch km/h?

Als Seefahrer spuckt mein Windmesser natürlich die Geschwindigkeit in Knoten aus  ;D

ZitatLiefern die Windmesser (Devices) eigentlich nur die aktuelle Windgeschwindigkeit oder auch Aggregationen wie die durchschnittliche Geschwindigkeit der aktuellen Stunde? Das wäre der richtige Wert weil Böen geglättet werden.

Normal kommen nur aktuelle Windgeschwindigkeiten; ich habe das bei mir mit dem average Device kombiniert, aber das liefert dann nur durchschnittliche Geschwindigkeiten über den ganzen Tag.

TheTrumpeter

Bei mir kommen auch nur die aktuellen Windgeschwindigkeiten (in m/s, keine Mittelwerte o.ä.).
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

DS_Starter

Moin,

ok, dann erstelle ich modulintern die benötigten Mittelwerte.
Nach meiner bisherigen Recherche eignet sich für FANN der exponentielle gleitende Durchschnitt (EMA) über eine Stunde am Besten.

ZitatAls Seefahrer spuckt mein Windmesser natürlich die Geschwindigkeit in Knoten aus  ;D
Daran hätte ich nun überhaupt nicht gedacht.  ;)

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

Shadow3561

Moin,
Ich habe ständig falsche Werte. Irgendwie verschlucken sich wohl die Verbrauchsdaten wohl ab und zu.
2026.03.05 08:56:45.165 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 03/21 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 03 21'.
2026.03.05 08:56:45.165 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 04/07 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 04 07'.
2026.03.05 08:56:45.166 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 04/99 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 04 99'.
2026.03.05 08:56:45.166 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 07/20 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 07 20'.
2026.03.05 08:56:45.166 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 07/99 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 07 99'.
2026.03.05 08:56:45.166 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 08/06 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 08 06'.
2026.03.05 08:56:45.167 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 13/20 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 13 20'.
2026.03.05 08:56:45.167 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 13/99 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 13 99'.
2026.03.05 08:56:45.167 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 14/06 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 14 06'.
2026.03.05 08:56:45.167 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 16/06 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 16 06'.
2026.03.05 08:56:45.168 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 21/20 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 21 20'.
2026.03.05 08:56:45.168 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 21/99 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 21 99'.
2026.03.05 08:56:45.168 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 22/06 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 22 06'.
2026.03.05 08:56:45.169 1: PV_forecast - WARNING - The stored Energy consumption of day/hour 26/07 is negative. This appears to be an error. The incorrect value can be deleted with 'set PV_forecast reset consumptionHistory 26 07'.

Muss ich etwas einstellen damit die Daten erst gelesen werden wenn der Wert plausibel ist?

defmod PV_forecast SolarForecast
attr PV_forecast DbLogExclude .*
attr PV_forecast aiControl aiConActivate=1 aiConAlpha=0.5  aiTrainStart=7 aiStorageDuration=3000 aiTreesPV=3 aiConHiddenLayers=50-25 aiConTrainStart=5:2 aiConProfile=v1_common_active_pv
attr PV_forecast ctrlLanguage DE
attr PV_forecast ctrlNextDayForecastReadings 06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22
attr PV_forecast ctrlNextHoursSoCForecastReadings 00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23
attr PV_forecast ctrlSpecialReadings BatPowerIn_Sum,BatPowerOut_Sum,runTimeTrainAI,todayBatInSum,todayBatOutSum,todayConsumption,todayConsumptionForecast,todayGridConsumption,todayGridFeedIn
attr PV_forecast event-on-change-reading .*
attr PV_forecast flowGraphicControl homenodedyncol=1 showGenerators=1
attr PV_forecast graphicBeam3Content batsocForecast_01
attr PV_forecast graphicBeam4Content batsocReal_01
attr PV_forecast graphicBeam5Content gridconsumption
attr PV_forecast graphicBeam6Content consumptionForecast
attr PV_forecast graphicControl hourCount=24 energyUnit=Wh headerDetail=all layoutType=double scaleMode=1:log,2:staple,3:staple  beamHeightlevel=1:200,2:100,3:200
attr PV_forecast graphicHeaderOwnspec Ladeleistung:Current_PowerBatIn_01\
Entladeleistung:Current_PowerBatOut_01\
Akku_In:special_todayBatInSum\
Akku_Out:special_todayBatOutSum
attr PV_forecast graphicHistoryHour 10
attr PV_forecast graphicSelect both
attr PV_forecast graphicShowNight 01
attr PV_forecast plantControl consForecastIdentWeekdays=1 consForecastLastDays=31 cycleInterval=200 genPVdeviation=continuously feedinPowerLimit=4400
attr PV_forecast room PV-Solar
attr PV_forecast setupBatteryDev01 Hyper2000 pin=outputPackPower:W pout=packInputPower:W  intotal=energy_total_batteryOutput:Wh outtotal=energy_total_batteryInput:Wh pinmax=1200 poutmax=1200 cap=1920 charge=electricLevel show=2:bottom asynchron=1 label=below
attr PV_forecast setupInverterDev01 SE3500H capacity=3500 strings=Vordach,Fahrradschuppen,Garten,Wintergarten  pvOut=AC_current_W:W pvIn=AC_current_W:W  etotal=AC_Lifetime_Energy_production_kWh:kWh asynchron=1 icon=inverter@orange:grey
attr PV_forecast setupInverterDev02 Hyper2000 pvOut=solarInputPower:W pvIn=solarInputPower:W asynchron=1 etotal=energy_total_solar:Wh strings=Dach capacity=900 icon=inverter@orange:grey
attr PV_forecast setupInverterStrings Vordach,Fahrradschuppen,Dach,Garten,Wintergarten
attr PV_forecast setupMeterDev SE3500H gcon=Momentanleistung_Bezug:W contotal=total_Energy_Imported_kWh:kWh gfeedin=Momentanleistung_Einspeisung feedtotal=total_Energy_Exported_kWh:kWh asynchron=1
attr PV_forecast setupRadiationAPI OpenMeteoWorld-API
attr PV_forecast setupStringAzimuth Vordach=-90 Fahrradschuppen=0 Dach=0 Garten=0 Wintergarten=90
attr PV_forecast setupStringDeclination Vordach=50 Fahrradschuppen=20 Dach=45 Garten=45 Wintergarten=15
attr PV_forecast setupStringPeak Vordach=0.6 Fahrradschuppen=0.66 Dach=0.88 Garten=1.2 Wintergarten=1.93
attr PV_forecast setupWeatherDev1 PV_forecast_weather
attr PV_forecast userReadings Hausverbrauch { ReadingsNum("$NAME","Current_Consumption",0);;;; }

Grüsse,
Daniel