76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

Burny4600

#3090
Gibt es unterschiedliche contrib Ablagen?
Unter https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter?desc=1&order=date&rev=29968 ist nur mehr die

     1.5 MB �     29968       2 Wochen     DS_Starter     76_SolarForecast: contrib Version 1.52.3ersichtlich.

Hab den richtigen Link gefunden.
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter?desc=1&order=date
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

cbl

Zitat von: DS_Starter am 01 Juni 2025, 22:37:35Nabend Christian,

ZitatBislang kann SolarForecast den Consumern nur sagen, DASS sie aktiv werden können, aber nicht WIEVIEL Leistung ihnen zusteht, oder übersehe ich etwas?
Per default ist es so wie du schreibst. Allerdings kann man die Logik über das Attribut ctrlUserExitFn für etwas speziellere Anwendungen erweitern. Dabei kommt es natürlich stark darauf an welche Logik man umsetzen möchte. Aber es gibt viele Möglichkeiten.

Ich schaue mir mal die Beispiele im Wiki zu ctrlUserExitFn an. Die hatte ich noch nicht gesehen. Das geht in eine passende Richtung. Ein erster Schritt könnte sein, das AT-Device durch eine Funktion hier zu ersetzen, die dann in jedem Zyklus neue Werte an die Box liefert. In einem zweiten Schritt könnte ich das verbessern und die übermittelten Werte anders ermitteln. Die Frage, die sich dann vermutlich stellen wird (aber erstmal abwarten, bis ich da bin), ist die Berücksichtigung in den Empfehlungen für weitere Consumer durch SF.


Gruß
Christian

RPort

Ich habe das Modul neu eingerichtet.
Den Funktionsumfang finde ich super - allerdings stimmen bei mir Forecast und Erzeugung noch nicht gut.
Bei der Ursachensuche bin ich auf folgende Frage gestoßen:

Innerhalb des Moduls Solarforecast werden unterschiedliche Definitionen von Azimut benutzt:
-Beim Setup von Solarforecast ist die Orientierung der Strings anzugeben mit folgenden Werten:
setupStringAzimuth    Azimuth values are integers in the range -180 to 180.
=> Beispielsweise "Süden" hat den Wert 0

- Bei "Mouse Over" dem Wettersymbol in der Anzeige von Solarforecast oder auch im Modul Astro wird im Süden ein Azimut von 180 angezeigt.

=> stimmt die Vorgabe, dass bei setupStringAzimuth die Orientierung mit [-180:180] anzugeben ist?

DS_Starter

Zitatstimmt die Vorgabe, dass bei setupStringAzimuth die Orientierung mit [-180:180] anzugeben ist?
Ja, im Solarbereich gibt es andere Konventionen als in Astronomie und Navigation. Die verwendeten API's wie z.B. OpenMeteo erwarten die Angaben in der Solar-Konvention. Andere Erwartungen muss ich intern umrechnen.

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

@all,

ich habe den Request von Parallix aus #3067 umgesetzt, im contrib liegt die V 1.52.9.

Dazu gibt es einen neuen Key in ctrlBatSocManagementXX -> [loadAbort=<SoC>:<PowerIn>]

loadAbort    Bedingung für einen generellen Ladeabbruch. Die Bedingung ist erfüllt, wenn der angegebene
   SoC (%) erreicht bzw. überschritten ist UND die angegebene Ladeleistung (W)
   unterschritten wurde -> Reading Battery_ChargeAbort_XX = 1.
   Fällt der aktuelle SoC wieder unter den angegebenen SoC, wird Battery_ChargeAbort_XX = 0

Zur Signalisierung der Abbruch-Condition habe ich das Reading Battery_ChargeAbort_XX eingeführt, welches man in den Steuerungsroutinen für die Batterie auswerten kann.
@Parallix, vllt. kannst du es mal testen ob die Logik deinen Request abbildet.

Grüße,
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

@all,

ich habe die Bitte von tupol aus #3062 umgesetzt und eine Optimierung für fsteps (Attr plantControl) eingebaut:

genPVforecastsToEvent    Das Modul erzeugt täglich 'AllPVforecastsToEvent'-Events zur Visualisierung der PV Prognose.
   Nähere Erläuterungen dazu sind im Wiki beschrieben.
   Hinweis: Bei Nutzung des Attributes ist ebenfalls das Attribut event-on-update-reading=AllPVforecastsToEvent zu setzen.
   Die Eventerzeugung kann für bestimmte Nutzungen optimiert werden:
   adapt4Steps - die Events werden für den SVG Plot-Type 'steps' optimiert
   adapt4fSteps - die Events werden für den SVG Plot-Type 'fsteps' optimiert


Die V 1.52.10 liegt in meinem contrib zum Test.

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

Max_Meyer

Hallo Heiko,
ich hätte wieder mal eine Frage - habe einige SF - Werte (stichpunktartig) auf Plausibilität geprüft. Das betrifft  folgende Readings:
Netzbezug_total --> NB-Übergabepunkt ins Grid (1.8.1)
Netzlieferung_Total  --> NB-Übergabepunkt ins Grid (2.8.1)
PV_today --> SF
Consumtion_Today --> SF
BatIn_today --> Energy-Sum aller Batterien pro Tag (BAT-Readings)
BatIn_today --> Energy-Sum aller Batterien pro Tag (BAT-Readings)
Die Annahme war (ist):

(Netzbezug_total+PV_today+BatOut_today)-(Netzlieferung_Total+Netzlieferung_Total) = Consumtion_Today

Das ist in keiner meiner SF - Installationen aufgegangen --> siehe Screenshots --> der von mir ausgerechnete 'reale' Tagesverbrauch zu diesem Zeitpunkt betrug ungefähr 24 kWh
Dabei ist mir bewusst das unter Consumer_xx niemals alle Verbraucher im Haus gelistet sind und das sich eine geringe Unschärfe aus der Messgenauigkeit bzw. Abfrageinterfall ergeben kann.
Frage1: ist meine Annahme richtig?
Frage2: lässt sich ein Reading 'Unknown Consumtion Yesterday' erzeugen indem man vom Soll (Formel oben) das Ist (Consumer_xx) abzieht? - so ließe sich leicht ermitteln ob noch ein maßgeblicher Anteil an Leistungsverbrauch im Haus nicht erfasst ist.
Gruß Gerd


DS_Starter

#3097
Hallo Gerd,

ZitatFrage1: ist meine Annahme richtig?
Nicht ganz. In deiner Rechnung fehlt das BatIn_today.
Die Formel lautet:

PV-Erzeugung + sonstige Erzeugung - Netzeinspeisung + Netzbezug - Batterieladung + Batterieentladung - Verbrauch = 0
oder anders ausgedrückt:

Verbrauch (Wh) = PV-Erzeugung + sonstige Erzeugung - Netzeinspeisung + Netzbezug - Batterieladung + Batterieentladung
Der Verbrauch des Hauses ist die einzige Größe die nicht direkt gemessen wird. Deswegen ergiebt sich der Verbrauch aus der letzteren Formel. Siehe auch Wiki.

Dadurch erübrigt sich auch ein 'Unknown Consumtion Yesterday', weil es eine 'Unknown Consumtion' nicht geben kann.

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

Max_Meyer

Zitat von: DS_Starter am 03 Juni 2025, 18:37:17Dadurch erübrigt sich auch ein 'Unknown Consumtion Yesterday', weil es eine 'Unknown Consumtion' nicht geben kann.

Hallo Heiko,
Ja bei der Formel war ich wohl abgelenkt :) - in den Screens ist es richtig.

Aber mit dem unbekannten Verbrauch meine ich die Differenz mit dem errechneten Verbrauch und dem was die Consumer 1-16 über den Tag verbrauchen - da muss es eine Differenz geben.

Zitat von: DS_Starter am 03 Juni 2025, 18:37:17PV-Erzeugung + sonstige Erzeugung - Netzeinspeisung + Netzbezug - Batterieladung + Batterieentladung - Verbrauch = 0

dann ist es mir nach wie vor unplausibel warum ich bei den einzelnen SF-Installationen eben nicht auf '0' komme - ist in den Screens zu sehen

Gruß Gerd

DS_Starter

#3099
Zitatdann ist es mir nach wie vor unplausibel warum ich bei den einzelnen SF-Installationen eben nicht auf '0' komme - ist in den Screens zu sehen
So 100%ig wird das nicht funktionieren, weil wir auf Stundenbasis arbeiten, aber die Geräte in FHEM leider nicht alle zur vollen Stunde (oder ein paar Sekunden davor/danach) ihre aktuellen Werte liefern. Als User müssen wir versuchen eine solche Synchronität herzustellen so gut es geht.

Einfaches Beispiel ... du hast eine leistungsstarke Anlage. Bei 15kW Peak und vollem Sonnenschein würde die PV 15kWh in der Stunde erzeugen. Fehlt nur 1 Minute vor der vollen Stunde der aktuelle Meßwert, wäre das schon eine Differenz von 250Wh Erzeugung die bei der Verbrauchsberechnung für diese Stunde fehlt. Die anderen Geräte (z.B. Batterien) bringen ihre Differenzen auch ein. Ich denke du siehst worauf ich hinaus will.
 
Deswegen wäre eine absolute Synchronität der beteiligten Geräte essentiell für eine hohe Genauigkeit. Das werden wir aber nur in den seltensten Fällen 100%ig in FHEM hinbekommen.
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

Max_Meyer

Zitat von: DS_Starter am 03 Juni 2025, 19:02:35Einfaches Beispiel ... du hast eine leistungsstarke Anlage. Bei 15kW Peak und vollem Sonnenschein würde die PV 15kWh in der Stunde erzeugen. Fehlt nur 1 Minute vor der vollen Stunde der aktuelle Meßwert, wäre das schon eine Differenz von 250Wh Erzeugung die bei der Verbrauchsberechnung für diese Stunde fehlt. Die anderen Geräte (z.B. Batterien) bringen ihre Differenzen auch ein. Ich denke du siehst worauf ich hinaus will.
 
Hallo Heiko,
ich denke wir reden/schreiben aneinander vorbei - der obige Sachverhalt ist klar - der Hinweis mit den Stundenscheiben macht meine Werte auch plausibel.

Aber mit meinem Redingsvorschlag dachte ich an etwas anderes - der 'Hausverbrauch' ist nach obiger Formel bekannt. Zusätzlich haben die Consumer_01 - _16 zusammengerechnet einen 'Consumerenergieverbrauch'. Dieser bildet einen Teil des 'Hausenergieverbrauchs' ab.
Die Idee war, das in Verhältnis zu setzten - oder einfach nur die Differenz pro Tag auszuweisen als 'unbekannten Hausenergieverbrauch' - so ähnlich wie du es mit der Leistung im Hausknoten für die Momentanwerte machst.
Gruß Gerd

DS_Starter

#3101
Hallo Gerd,

ja, da habe ich dich tatsächlich mißverstanden. Jetzt weiß ich was du meinst.
Das ginge eigentlich nur immer für den vergangenen Tag. Denn solange der aktuelle Tag noch nicht um ist, kann ich diese Differenz nicht bestimmen.
Kannst du mir den Use Case dafür ein bisschen näher bringen damit ich eine Idee habe was man damit erreichen kann? Vllt. fällt mir dann noch etwas besseres ein wenn ich das Ansinnen besser einordnen kann.


EDIT: Nach einigem Nachdenken könnte ich ein ctrlSpecialReadings für den aktuellen Tag mitlaufen lassen, welches sich dynamisch ändert. Es gibt bereits ein Reading special_todayConsumption. Das passt in diesen Kontext. Damit hätte man einen ständigen Vergleich von Gesamtverbrauch zum Verbrauch der den Consumern nicht zugeordnet werden kann. Sollte machbar sein. Alternativ wäre auch ein Reading denkbar welches den Energiebetrag ausgiebt der allen registrierten Verbauchern zugeordnet werden kann. Das ist nun Ansichtssache was besser ist und vllt. von dem Use Case abhängig.

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

Max_Meyer

Zitat von: DS_Starter am 03 Juni 2025, 21:16:55Nach einigem Nachdenken könnte ich ein ctrlSpecialReadings für den aktuellen Tag mitlaufen lassen, welches sich dynamisch ändert. Es gibt bereits ein Reading special_todayConsumption. Das passt in diesen Kontext. Damit hätte man einen ständigen Vergleich von Gesamtverbrauch zum Verbrauch der den Consumern nicht zugeordnet werden kann. Sollte machbar sein. Alternativ wäre auch ein Reading denkbar welches den Energiebetrag ausgiebt der allen registrierten Verbauchern zugeordnet werden kann. Das ist nun Ansichtssache was besser ist und vllt. von dem Use Case abhängig.

Guten Morgen Heiko,

Danke! Das hatte ich so gemeint  :) - Um Prio einzuordnen hab ich noch mal versucht die usecases zu beschreiben

momentan sehe ich zwei usecases für dieses Reading
1.) mehr statistisch - ich habe die Info dazu genutzt um herauszufinden wieviel von meinem Verbrauch noch keinem konkreten Verbraucherzugeordnet werden kann d.h. je kleiner der Wert ist desto mehr diskrete Verbraucher befinden sich innerhalb der Statistik desto genauer ist zu sehen wann, wo, welche Energie verwendet wird.
2.) wenn du Richtung 2.te KI-Instanz für Consumer gehst wäre diese Differenz m.M.n. notwendig um für diesen Energie-Anteil eine Vorhersage u kreieren

Daher wäre ich dafür nur den Rest (nicht zugeordneten Verbrauch) auszugeben

Gruß Gerd



DS_Starter

Morgen Gerd,

ich habe soeben die V 1.52.11 in mein contrib geladen.

Das Attr ctrlSpecialReadings hat jetzt auch diese Option:

todayNotOwnerConsumption    der Energieverbrauch am aktuellen Tag, der den registrierten Verbrauchern nicht zugeordnet werden konnte

Kannst mal probieren.

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

#3104
Hallo Heiko,

Weiterentwicklung weckt Wünsche. ;-)

Zitat von: DS_Starter am 04 Juni 2025, 08:22:13Morgen Gerd,

ich habe soeben die V 1.52.11 in mein contrib geladen.

Das Attr ctrlSpecialReadings hat jetzt auch diese Option:

todayNotOwnerConsumption    der Energieverbrauch am aktuellen Tag, der den registrierten Verbrauchern nicht zugeordnet werden konnte

Kannst mal probieren.

LG,
Heiko

Wenn das umsetzbar ist, kannst Du doch bestimmt auch die Tagessummen der einzelnen Verbraucher ermitteln, oder?

Dabei würde mich nicht so sehr ein separates Readings interessieren, als viel mehr die Anzeige an den Verbrauchern in der Flußgrafik.
Und dann vielleicht an allen anderen Elementen nach und nach auch die jeweilige Tages-Arbeit zusätzlich zu den jeweiligen Momentanleistungen?

Meinst du, das wäre aufwendig?