76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

Bison

Hallo DS_Starter,

ich habe immer noch große Sprünge in dem Forcast nach dem Umschalten auf KI. Das läuft nun schon seit 8 Tagen. Muß ich mich noch gedulden oder an die Fehlersuche gehen.

Ich habe folgendes eingestellt:
- Modul Version: 1.52.12, Model: OpenMeteoDWDAPI
- Autokorrektur on_complex_ai

Der Check zeigt keine Fehler.

Gruß Bison
Raspberry, Homematic, CUL, 50 Device, 260 Entities

DS_Starter

8 Tage Lerndaten ist einfach deutlich zu wenig. Du kannst dir einen Überblick über die gespeichteren Rohdaten für den Lernvorgang anschauen mit:

get ... valDecTree aiRawData
Bei mir sind bereits

Number of datasets: 8994

gespeichert. Aus diesem Wertevorrat leitet die KI über den Lernvorgang Vorhersagen für zukünftige Wetter/Strahlungsdaten bei entsprechenden Sonnenständen, Niederschlagen etc, ab.

Man hat eine ungefähre Vorstellung vom Lernzustand mit:

get ... valDecTree aiRuleStrings
Die erreichte Anzahl an Rules, Nodes und der Tiefe Depth geben ganz grob einen Hinweis auf welchen Vorrat an Verknüpfungen/Entscheidungen die KI zurückgeifen kann. 

Trained AI Object contains an Ensemble of 10 trees (only the first Tree is printed out)

Tree: 1 -> Number of Rules: 5892 / Number of Nodes: 7940 / Depth: 5
Tree: 2 -> Number of Rules: 5903 / Number of Nodes: 7952 / Depth: 6
Tree: 3 -> Number of Rules: 5909 / Number of Nodes: 7959 / Depth: 6
Tree: 4 -> Number of Rules: 5889 / Number of Nodes: 7904 / Depth: 6
Tree: 5 -> Number of Rules: 5888 / Number of Nodes: 7929 / Depth: 5
Tree: 6 -> Number of Rules: 5892 / Number of Nodes: 7901 / Depth: 6
Tree: 7 -> Number of Rules: 5894 / Number of Nodes: 7919 / Depth: 6
Tree: 8 -> Number of Rules: 5886 / Number of Nodes: 7893 / Depth: 6
Tree: 9 -> Number of Rules: 5889 / Number of Nodes: 7900 / Depth: 6
Tree: 10 -> Number of Rules: 5898 / Number of Nodes: 7915 / Depth: 6

 
Rules: Liste von Zeichenfolgen, die den Baum in Form von Regeln beschreiben
Nodes: Anzahl der Knoten im trainierten Entscheidungsbaum
Depth: Maximale Anzahl von Entscheidungen, die für eine Klassifizierung getroffen werden müssen

letztes KI-Training: 16.06.2025 02:15:27 / Laufzeit in Sekunden: 3.75761
letzte KI-Ergebnis Generierungsdauer: 0.06 ms

Wie sind deine Daten im Vergleich dazu?

PS: Als Ausblick bin ich inzwischen der Ansicht mit einem eigenen entworfenen neuronalen Netzwerk bessere Ergebnisse erreichen zu können. Aber den Beweis nuß ich erstmal noch antreten und die Zeit dazu finden.  ;)
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

Bison

Hallo DS_Starter,

hier mal meine Daten:

aiRawData

Number of datasets: 6765

2024040416 => hod: 16, nod: -, sunaz: 223, sunalt: 40, rad1h: 2160, wcc: 100, wid: -, rr1c: 0.30, pvrl: 95, con: -, gcons: -, temp: 15
2024040417 => hod: 17, nod: -, sunaz: 239, sunalt: 30, rad1h: 1850, wcc: 100, wid: -, rr1c: 0.40, pvrl: 76, con: -, gcons: -, temp: 15
2024040418 => hod: 18, nod: -, sunaz: 252, sunalt: 25, rad1h: 2350, wcc: 100, wid: -, rr1c: 0.00, pvrl: 109, con: -, gcons: -, temp: 15
2024040419 => hod: 19, nod: -, sunaz: 264, sunalt: 15, rad1h: 880, wcc: 70, wid: -, rr1c: 0.00, pvrl: 81, con: -, gcons: -, temp: 15


aiRuleStrings

Trained AI Object contains an Ensemble of 10 trees (only the first Tree is printed out)

Tree: 1 -> Number of Rules: 4280 / Number of Nodes: 5639 / Depth: 6
Tree: 2 -> Number of Rules: 4283 / Number of Nodes: 5640 / Depth: 5
Tree: 3 -> Number of Rules: 4289 / Number of Nodes: 5658 / Depth: 5
Tree: 4 -> Number of Rules: 4287 / Number of Nodes: 5640 / Depth: 6
Tree: 5 -> Number of Rules: 4289 / Number of Nodes: 5622 / Depth: 6
Tree: 6 -> Number of Rules: 4287 / Number of Nodes: 5644 / Depth: 6
Tree: 7 -> Number of Rules: 4281 / Number of Nodes: 5638 / Depth: 6
Tree: 8 -> Number of Rules: 4284 / Number of Nodes: 5630 / Depth: 6
Tree: 9 -> Number of Rules: 4296 / Number of Nodes: 5651 / Depth: 6
Tree: 10 -> Number of Rules: 4289 / Number of Nodes: 5640 / Depth: 6


Rules: Liste von Zeichenfolgen, die den Baum in Form von Regeln beschreiben
Nodes: Anzahl der Knoten im trainierten Entscheidungsbaum
Depth: Maximale Anzahl von Entscheidungen, die für eine Klassifizierung getroffen werden müssen

letztes KI-Training: 17.06.2025 02:16:00 / Laufzeit in Sekunden: 10.07013
letzte KI-Ergebnis Generierungsdauer: 0.22 ms

Ich habe gestern mal die Autokorrektur auf on_complex_api_ai umgestellt. Damit sind die die Löcher nicht mehr so groß. Ich werde mir mal heute das Abweichungsergeniss anschauen. Vielleicht komme ich dann der Lösung näher.

Gruß Bison
Raspberry, Homematic, CUL, 50 Device, 260 Entities

Parallix

Zitat von: Prof. Dr. Peter Henning am 16 Juni 2025, 20:07:54Wir sind ein freies Land, jeder kann machen was er will.

Aber: Die gewöhnliche "Farbenblindheit" ist eine Rot-Grün-Unterscheidungsschwäche. Gerade deswegen sollte man nicht mit Rot auf Grün "schreiben". Das hat also nichts mit subjektivem "Beißen" zu tun.
Meine Hauptkritik richtete sich aber nicht auf die Farbwahl, sondern auf die Doppelung der Informationen in den Icons und den seltsamen Balken.

LG

pah

Mein erster Eindruck zu den dyn-Icons war durchwegs positiv, nun erkenne ich aber, dass - aus meiner Sicht - wertvolle Infos nicht mehr dargestellt werden. Also stelle ich mir die Frage, was denn alles in einem Bild dargestellt werden sollte und komme zu folgendem Ergebnis:
  • Ladezustand, möglichst fein aufgelöst
  • Ladefreigabe

Wären o.g. Infos nicht perfekt mit einer klassischen, ggf. dyn. eingefärbten Balkengrafik mit einem auf [0:100] fixiertem Bereich  darstellbar, bei der der prozentuale Ladezustand als Zahl über dem jeweiligen Balken steht und ein "LF" im unteren Teil des Balkens die (prognostizierte) Ladefreigabe visualisiert?
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.59) und 7591 (8.02) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - BYD: 2 x HVS 5.1 (BMS V3.29-A, BMU V3.23-A) - EnOcean - Z-Wave - FS20/HMS

Prof. Dr. Peter Henning

#3154
Zitat von: Parallix am 17 Juni 2025, 08:19:10Wären o.g. Infos nicht perfekt mit einer klassischen, ggf. dyn. eingefärbten Balkengrafik mit einem auf [0:100] fixiertem Bereich  darstellbar, bei der der prozentuale Ladezustand als Zahl über dem jeweiligen Balken steht und ein "LF" im unteren Teil des Balkens die (prognostizierte) Ladefreigabe visualisiert?

Eines der Hauptprobleme in der unten angesprochenen Grafik war ja, dass bei _zwei_ Werten das Einschreiben der Zahlen in den oberen Balken diesen total zerstört hat (eben künstlich verlängert, damit die Zahl hineinpasst). Man müsste also bei zwei Werten die Zahl über den jeweils oberen Balken schreiben - das ist aber auch ungünstig, weil dann evtl. mal der eine und mal der andere durch die obere Zahl repräsentiert würde.

Nebeneinander gestapelte Balken sind auch nicht auf einen Blick ablesbar.

Nach einigem Überlegen würde ich sagen: Bei mehr als einem zu visualisierenden Wert für 2 Speicher:  _gestapelte_ Balken, die höchstens zusammen 100% ergeben.
Bei einem oder mehreren Speicherwerten und einer "Ladefreigabe" würde ich die Ladefreigabe durch eine Farbtonänderung der Balken im "freien" Bereich angeben - etwa, indem man halbtransparent weiß darüber legt. Etwa so, wie im angehängten Bild, auf die Schnelle.

Zu überlegen wäre auch, Zahlen nur einzublenden, wenn man mit dem Mauszeiger über die Grafik fährt - so wie das bei den SVG-Plots von FHEM der Fall ist.

LG

pah

Parallix

Zitat von: DS_Starter am 14 Juni 2025, 23:04:37...
Der User kann mit dem Schlüssel pinmax die maximal mögliche Ladeleistung in Watt festlegen. mit welcher die Batterie geladen werden kann. Dieser Wert wird durch die SoC-Prognose auch beachtet.
Der User kann diesen Schlüssel dynamisch setzen mit:

set ... attrKeyVal setupBatteryDevXX pinmax=<Wert>

Jede Änderung eines Attributs führt aber dazu, dass eine Konfigurationsänderung vorliegt. die auch entsprechend anzeigt wird und diesem Hinweis nur via "Save config" nachgegangen werden kann. Daher ist es unschön, dyn. Änderungen auf Basis von Attributen vorzunehmen und wünsch(t)e mir daher eine Überführung in ein Reading zur dyn. Konfiguration. 
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.59) und 7591 (8.02) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - BYD: 2 x HVS 5.1 (BMS V3.29-A, BMU V3.23-A) - EnOcean - Z-Wave - FS20/HMS

Parallix

#3156
Zitat von: Prof. Dr. Peter Henning am 17 Juni 2025, 08:34:47...
Nach einigem Überlegen würde ich sagen: Bei mehr als einem zu visualisierenden Wert für 2 Speicher:  _gestapelte_ Balken, die höchstens zusammen 100% ergeben.
Bei einem oder mehreren Speicherwerten und einer "Ladefreigabe" würde ich die Ladefreigabe durch eine Farbtonänderung der Balken im "freien" Bereich angeben.
...

Oder pro BAT eine (horizontale) Balkengrafik (analog zu den bisherigen BAT-Symbolen) mit einer über dem jeweiligen Balken stehenden Prozentzahl, gefolgt von einem Suffix. welches die Ladefreigabe visualisiert, also z.B. 50+ für  SOC=50% und Ladefreigabe erteilt oder 50- für SOC=50% und Ladefreigabe nicht erteilt.
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.59) und 7591 (8.02) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - BYD: 2 x HVS 5.1 (BMS V3.29-A, BMU V3.23-A) - EnOcean - Z-Wave - FS20/HMS

DS_Starter

#3157
Moin,

@Bison,
die Datenmenge sieht doch gut aus. Da waren die 8 Tage Laufzeit irgendwie ein Mißverständnis.


@Parallix,

Zitatnun erkenne ich aber, dass - aus meiner Sicht - wertvolle Infos nicht mehr dargestellt werden
Welche denn genau? Denn außer einer dynamischen Einfärbung ist kein inhaltlicher Unterschied vorhanden. Die Zeiten ohne Ladeempfehlung werden durch einen verminderten Deckungsgrad signalisiert. (Screenshot)

Edit: Man kann auch für die Zeiten ohne Ladeempfehlung die dynamik ausschalten und den Standard benutzen:

 icon=@dyn:::
(Screenshot2)   

Oder dafür eine dem User genehme alternative Farbe einsetzen.

ZitatWären o.g. Infos nicht perfekt mit einer klassischen, ggf. dyn. eingefärbten Balkengrafik mit einem auf [0:100] fixiertem Bereich  darstellbar, bei der der prozentuale Ladezustand als Zahl über dem jeweiligen Balken steht und ein "LF" im unteren Teil des Balkens die (prognostizierte) Ladefreigabe visualisiert?
Das kannst du dir bereits jetzt in einer Ebene einblenden (Screenshot). Fehlt nur das "LF" als Fußtext.

ZitatJede Änderung eines Attributs führt aber dazu, dass eine Konfigurationsänderung vorliegt. die auch entsprechend anzeigt wird und diesem Hinweis nur via "Save config" nachgegangen werden kann.

Normalerweise ja, aber nicht wenn du diesen Setter benutzt da im Hintergrund alles für dich erledigt wird. Dafür gibt es ihn.
In dem Zusammenhang darf dann global->autosave nicht auf "0" gesetzt sein was per default auch nicht der Fall ist.


@pah,
ZitatNach einigem Überlegen würde ich sagen: Bei mehr als einem zu visualisierenden Wert für 2 Speicher:  _gestapelte_ Balken, die höchstens zusammen 100% ergeben.
Kein schlechter Gedanke den ich gern mal mit verfolge. Alternativ/ergänzend möchte ich  die aktuelle lineare Normalisierung der Balkenhöhen durch den Nutzer auswählbar auf eine logarithmische Normalisierung zur Verfügung stellen. Diese Methode betont kleinere Werte stärker und komprimiert größere Werte, was nützlich sein kann, wenn die Daten eine große Spannweite haben was bei uns durchaus vorkommt.

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

Parallix

Zitat von: DS_Starter am 17 Juni 2025, 08:53:10...
@pah,
ZitatNach einigem Überlegen würde ich sagen: Bei mehr als einem zu visualisierenden Wert für 2 Speicher:  _gestapelte_ Balken, die höchstens zusammen 100% ergeben.
Kein schlechter Gedanke den ich gern mal mit verfolge. Alternativ/ergänzend möchte ich  die aktuelle lineare Normalisierung der Balkenhöhen durch den Nutzer auswählbar auf eine logarithmische Normalisierung zur Verfügung stellen. Diese Methode betont kleinere Werte stärker und komprimiert größere Werte, was nützlich sein kann, wenn die Daten eine große Spannweite haben was bei uns durchaus vorkommt.
...

Wenn eben möglich bitte auch für jedes BAT-System eine eigene Grafik vorsehen. Auf diese Weise lassen sich Lade-/Entlade-Asymmetrien schneller erkennen, was ja auch ein Zweck derartiger Grafiken ist.
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.59) und 7591 (8.02) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - BYD: 2 x HVS 5.1 (BMS V3.29-A, BMU V3.23-A) - EnOcean - Z-Wave - FS20/HMS

Prof. Dr. Peter Henning

Und bedenkt bitte: Der Mensch kann höchstens 10 gleichzeitig angezeigte Farben sicher voneinander unterscheiden.

LG

pah

DS_Starter

ZitatWenn eben möglich bitte auch für jedes BAT-System eine eigene Grafik vorsehen.
Dafür haben wir die Möglichkeit mehrere Ebenen aufzumachen und in jeder Ebene dann eben nur mit einem Balken die gewünschten Inforationen anzuzeigen. Die aktuell 3 Ebenen kann ich auch noch auf mehr erweitern je nach Bedarf der Anwender.
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

Wzut

Zitat von: DS_Starter am 17 Juni 2025, 08:53:10Alternativ/ergänzend möchte ich als die aktuelle lineare Normalisierung der Balkenhöhen durch den Nutzer auswählbar auf eine logarithmische Normalisierung zur Verfügung stellen.
Ich erinnere mich noch gut an meine ersten Versuche die beiden Werte mit simplen HTML "schön" darzustellen. Bei deutlichen Unterschieden oder wenn die Werte groß genug sind war das alles kein Problem. Kopfschmerzen machten die Sonderfälle : Werte ohne deutliche Differenz oder Gleichheit oder sehr kleine Werte, Das führt alles zum "aufpumpen" der Balken um genügend Platz (Höhe) für die Zahlen zu schaffen. IMHO hatten wir zu Anfang auch mal eine Variante wo die Werte ausserhalb der Balken standen, also eine je eine Zeile über und unter den Balken.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

DS_Starter

Hi Wzut,
ja ich kann mich auch noch recht gut daran erinnern. Ich glaube ... schon so um die 6 oder 7 Jahre her. Mensch wie die Zeit rennt.  :o
Alles hat seine Vor- und Nachteile. Außerhalb der Balken Werte anzeigen kollidiert leicht mit den zuschaltbaren Differenzanzeigen und war auch nicht so toll. Deswegen ist es so wie aktuell auch gut, natürlich mit Verbesserungspotential. Mal sehen was die Loga bringt und/oder der Vorschlag von pah.
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

#3163
Eine kleine Erinnerung für die User, die die Entwicklung noch icht so lange verfolgt haben...
Ich hatte mal einen Vorgänger von SF gebaut der das SMA-Portal als Datenquelle verwendete. Wzut hatte für dieses Modul (SMAPortal) die Balkengrafik gebaut und sehr viel Energie dort hineingesteckt.
Leider konnten wir SMAPortal wegen der Beschränkungen durch SMA nicht weiterführen und ich habe das Projekt sterben lassen.
Besonders der Verlust von Wzut's Arbeit hat mir sehr sehr weh getan und so reifte der Gedanke etwas eigenes auf die Beine zu stellen um die Grafik von Wzut nicht verloren zu geben. Und so ist SF eigentlich als Modul um die "Balkengrafik herum" entstanden.

Naja, so war der Anfang. Seitdem sind schon wieder 5 Jahre vergangen .... und jetzt stehen wir hier mit dieser integrativen Lösung zur Steuerung von Solaranlagen und Verbrauchern und, und ...

Danke mein lieber Wzut!! (Damit musst du jetzt leben) :D

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

Parallix

Wie aus der angefügten Grafik zu entnehmen, wird mir für heute und morgen ein schier unglaublicher Verbrauch (da es in meinem Haushalt bis dato keinerlei Großverbraucher gibt) prognostiziert. Das Problem tauchte aber auch heute erst auf, sodass ich davon ausgehe, dass es auf einem Bug basiert. Hat irgendwer ähnlich unplausible Werte nach den letzten Updates bekommen?

FHEM: Debian/Testing BananaPro - AVM: 7490 (7.59) und 7591 (8.02) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - BYD: 2 x HVS 5.1 (BMS V3.29-A, BMU V3.23-A) - EnOcean - Z-Wave - FS20/HMS