76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

300P

Ich hab heute auf einen anderen (neuen) RPI-4 (Bookworm) ein komplett neues FHEM - mit den neuesten Updates - von Grund auf neu erstellt.

Diess TEST-FHEM beinhaltet jetzt nur meine WR / Batterien / Energiemeter / bzw. die notwendigen PV-Devices die für SF notwendig sind.

Als Ergebnis ergibt sich ebenfalls wieder der "Anzeigefehler" den wir die Tage versucht haben zu ergründen.
Schätze wir müssen es als "Glitsch"  :o  hinnehmen.

Wenn ich Zeit finde, mach ich das gleiche noch in einer VMWare-Maschine auf meinem MAC.

Gruß
300P


FHEM 6.3|RaspberryPi|VControl300|VITOVALOR300P|SMAEM|SMAInverter|DbLog|DbRep|MariaDB|QNAP|HTTPMOD|Modbus ser+TCP|SolarForecast|ESP32Gasmeter|ESP32Watermeter|ESP32CAMOV2640

DS_Starter

Ja, vermutlich. Mir fällt auch nichts dazu ein. Kurios ist nur, dass ich machen kann was ich will und dieses Anzeigeproblem einfach nicht nachgestellt bekomme.
Wie schon geschrieben ist m.M. nach die Grafikgenerierung völlig io. solange die Anzeige im Modul und auch in einem weblink Device (verwendet auch diesen Get) in Ordnung ist.
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

bstaeheli

Hallo zusammen,

zunächst möchte ich mich herzlich für das großartige Modul bedanken! Ich bin mir nicht sicher, ob ich meine Frage hier stellen oder einen neuen Thread eröffnen soll, hoffe jedoch, dass ich hier richtig bin.

In unserem Wärmespeicher haben wir drei 3 kW Heizstäbe, die von einem AC-Thor angesteuert werden. Über einen Web-Request können wir einen Wert von 0 bis 9000 senden, um die Energie stufenlos in die Heizstäbe zu leiten. Ich habe ein DOIF-Skript erstellt, das den Wert bei vorhandenem Solar-Überschuss sekündlich anpasst.

Meine Frage ist nun: Ist es möglich, das SolarForecast-Modul ähnlich wie die dynamische Ladesteuerung im Wiki zu nutzen, beispielsweise durch Anpassungen in der Funktion ctrlUserExitFn? Müsste ich dafür den Parameter ctrlInterval auf 1 setzen? Hält das Modul dieser Frequenz stand?

Vielen Dank im Voraus für eure Unterstützung!

Beste Grüße,

Boris

300P

Hallo Boris,

ein solches komplexes Modul mit einem 1 Sekunden Takt zu strapazieren damit das Wasser warm wird..... :o
Da wir wohl eher die CPU der Hardware "warm" werden O:-) und das FHEM-System gestresst.

N.m.M =>> Nein - lass es bei einer simplen kleinen und feinen Lösung mit einem (möglichst) größerem Intervall

Gruß
300P
FHEM 6.3|RaspberryPi|VControl300|VITOVALOR300P|SMAEM|SMAInverter|DbLog|DbRep|MariaDB|QNAP|HTTPMOD|Modbus ser+TCP|SolarForecast|ESP32Gasmeter|ESP32Watermeter|ESP32CAMOV2640

DS_Starter

#1834
Hallo Boris und 300P,

ich möchte noch ein paar Erläuterungen zum Verständnis geben und versuche die Fragen etwas auseinanderzunehmen.

ZitatMeine Frage ist nun: Ist es möglich, das SolarForecast-Modul ähnlich wie die dynamische Ladesteuerung im Wiki zu nutzen, beispielsweise durch Anpassungen in der Funktion ctrlUserExitFn?
Im Prinzip hast du über die ctrlUserExitFn alle Möglichkeiten. Du kannst hier den aktuell ermittelten Überschuß aus dem Reading Current_Surplus auslesen und davon abhängig einen entsprechenden Befehl an deine Heizstabsteuerung senden.
Das Auslesen erfolgt bei jedem Zyklus ctrlInterval bzw. wenn der Zyklus durch einen Event eines Devices, zum Beispiel des Energymeters, angestoßen wurde. Dazu setzt man den Schlüssel asynchron.

ZitatMüsste ich dafür den Parameter ctrlInterval auf 1 setzen?
Jaein. Das Modul hat eine interne Sperrverwaltung. Nach Durchlauf eines Zyklus, der je nach Hardware dauert (bei mir typisch ca. 30ms), erfolgt die Freigabe für einen neuen Zyklus nach frühestens 2s. Dieser Wert ist zunächst willkürlich gewählt um eine zu häufige Unterbrechnung durch Events zu verhindern.

Man kann ctrlInterval=1 setzen. Wie stark das System dadurch belastet wird, hängt von deiner Hardware und der Komplexität des Setups (Consumer etc.) ab. Allerdings wird es nicht nötig sein, da du das Modul auch eventgesteuert fahren kannst.

ZitatHält das Modul dieser Frequenz stand?
Ja. Nur halte ich es nicht für sinnvoll.

Warum? In FHEM arbeiten, soweit ich es beurteilen kann, die Devices für Energymeter oder Inverter bzw. Messung von Verbrauchern auch nicht mit einer Aktualisierungsferequenz von einer Sekunde. D.h. die Änderungsfrequenz des ermittelten Überschusses wird auch nicht 1 Sek. sein.
Besser wäre es m.M. nach das Modul z.B. mit dem Standardintervall laufen zu lassen und zusätzlich die Attr setupMeterDev und setupInverterDevXX asynchron einzurichten.
Dann werden bei Werteänderung automatisch zusätzliche Zyklen getriggert und auch die ctrlUserExitFn durchlaufen.

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

kask

Eine Sekunde ist sportlich.
Zumal der Sekundentakt eh vermutlich nicht einzuhalten geht. Schliesslich müssen alle Teilnehmer des Regelkreises auch <1sek intervalle liefern können.

Du könntest zum laden die vorhandene Energiemenge des Speichers(Warmwasserspeicher) ermitteln und als Batteriedevice abbilden mit SOC. Temperaturen, je mehr je besser in verschiedenen höhen, und bestenfalls der Druck (um noch genauer zu sein) sollten dazu bekannt sein. Ist nicht ganz so trivial aber durchaus möglich.

So mal ganz grob :
Du benötigs 1.16Wh um 1 liter Wasser um 1 Kelvin zu erhöhen.
Wenn du weisst wie hoch deine Frischwassertemperatur ist und du deine Temperaturen in deinem Kessel kennst, kannst du deine Wärmeinhalt des Kessels bestimmen.
Indem du dein Delta T (Temperatur Differenz Eintritt-Austritt) heranziehst.
Der Speicher sofern der Inhalt nicht aktiv umgewälzt wird, wird nicht überall gleich sein. Eher unten kalt und oben warm.

Ich habe sowas um den Wärmeinhalt meines Solarspeichers zu haben um zu entscheiden ob ich mit Warmwasser oder mit Kaltwasser die Waschmaschine beaufschlage.
Ist nicht hochgenau aber auch nicht unbrauchbar.
DeltaSol_BX.Temp_Speicher_o.*:.*
{
my $t_in = 10.0; #Temperatur Zulauf

my $v_up = 60.0;       #wassermenge im oberen Bereich des Kessels
my $v_up_mid = 60.0;   #wassermenge im mitteoben Bereich des Kessels
my $v_mid = 60.0;      #wassermenge im mittleren Bereich des Kessels
my $v_mid_down = 60.0; #wassermenge im mitteunten Bereich des Kessels
my $v_down = 60.0;     #wassermenge im unteren Bereich des Kessels

my $t_up = ReadingsNum("DeltaSol_BX","Temp_Speicher_oben",$t_in);    # Obere Temperaturmessung
my $t_mid = ReadingsNum("DeltaSol_BX","Temp_Speicher_mitte",$t_in);  # Mittlere Temperaturmessung
my $t_down = ReadingsNum("DeltaSol_BX","Temp_Speicher_unten",$t_in); # Untere Temperaturmessung
my $t_up_mid = ($t_up + $t_mid + 2)/2 -1; # Mitteoben Temperatur kalkuliert
my $t_mid_down = ($t_mid + $t_down + 2)/2 -1; # Mitteunten Temperatur kalkuliert

my $Wh_up = (($t_up-$t_in) * $v_up * 1.16);                    #Warmeinhalte oben
my $Wh_mid = (($t_mid-$t_in) * $v_mid * 1.16);                 #Warmeinhalte mitte
my $Wh_down = (($t_down-$t_in) * $v_down * 1.16);              #Warmeinhalte unten
my $Wh_up_mid = (($t_up_mid-$t_in) * $v_up_mid * 1.16);        #Warmeinhalte mitteoben
my $Wh_mid_down = (($t_mid_down-$t_in) * $v_mid_down * 1.16);  #Warmeinhalte mitteunten

my $Wh_in = ($Wh_up + $Wh_mid + $Wh_down + $Wh_up_mid + $Wh_mid_down); #Wäremmenge gespeichert
my $Wh_old = ReadingsNum("WatertankDummy","Wh_old",0);
my $kWh_in = sprintf("%.3f", $Wh_in/1000);

##Hilfe zum Detektieren ob geladen oder entladen wurde. Ändere den Ausgabewert bei 20Wh Differenz.
if (abs($Wh_in - $Wh_old) > 20.0) {
 fhem("setreading WatertankDummy kWh_in ".$kWh_in );
 fhem("setreading WatertankDummy Wh_old ".$Wh_in );
}

##set readings for debug
 fhem("setreading WatertankDummy dT_up ".$t_up);
 fhem("setreading WatertankDummy dT_mid ".$t_mid);
 fhem("setreading WatertankDummy dT_down ".$t_down);
 fhem("setreading WatertankDummy dT_mid_up ".$t_up_mid);
 fhem("setreading WatertankDummy dT_down_mid ".$t_mid_down);
 fhem("setreading WatertankDummy Wh_up ".$Wh_up);
 fhem("setreading WatertankDummy Wh_mid ".$Wh_mid );
 fhem("setreading WatertankDummy Wh_down ".$Wh_down );
 fhem("setreading WatertankDummy Wh_mid_up ".$Wh_up_mid );
 fhem("setreading WatertankDummy Wh_down_mid ".$Wh_mid_down );
 fhem("setreading WatertankDummy Wh_in ".$Wh_in );

}
Damit könntest du bei vorhandensein mehrere Temperatursensoren in verschiedenen höhen verschiedene Temperaturzonen abbilden und daraus den Wärmeinhalt bestimmen.

Gisbert

Hallo Heiko,

ich bekomme heute (vorherige Tage hab ich nicht geprüft) folgende Log-Einträge, nur ein kleiner, aber repräsentativer Teil:
2025.01.29 01:02:35.996 1:  mySolarForecast - Serialization ERROR: Can't store GLOB items at /usr/lib/x86_64-linux-gnu/perl/5.36/Storable.pm line 370, at .//FHEM/76_SolarForecast.pm line 20943.

2025.01.29 01:02:35.997 1:  PERL WARNING: Use of uninitialized value in subroutine entry at .//FHEM/76_SolarForecast.pm line 16543.
2025.01.29 01:02:35.997 1:  stacktrace:
2025.01.29 01:02:35.997 1:      main::__ANON__                      called by .//FHEM/76_SolarForecast.pm (16543)
2025.01.29 01:02:35.997 1:      FHEM::SolarForecast::_retrieveMessageFile called by FHEM/Blocking.pm (194)
2025.01.29 01:02:35.998 1:      main::BlockingStart                called by FHEM/Blocking.pm (107)
2025.01.29 01:02:35.998 1:      main::BlockingCall                  called by .//FHEM/76_SolarForecast.pm (16491)
2025.01.29 01:02:35.998 1:      FHEM::SolarForecast::getMessageFileNonBlocking called by .//FHEM/98_apptime.pm (178)
2025.01.29 01:02:35.998 1:      main::apptime_getTiming            called by .//FHEM/98_apptime.pm (86)
2025.01.29 01:02:35.998 1:      main::HandleTimeout                called by fhem.pl (710)
2025.01.29 01:02:36.013 1:  PERL WARNING: Use of uninitialized value $name in hash element at .//FHEM/76_SolarForecast.pm line 16559.
2025.01.29 01:02:36.013 3:  eval: {FHEM::SolarForecast::_processMessageFile('')}
2025.01.29 01:02:36.013 1:  stacktrace:
2025.01.29 01:02:36.013 1:      main::__ANON__                      called by .//FHEM/76_SolarForecast.pm (16559)
2025.01.29 01:02:36.014 1:      FHEM::SolarForecast::_processMessageFile called by (eval 11336354) (1)
2025.01.29 01:02:36.014 1:      (eval)                              called by fhem.pl (1180)
2025.01.29 01:02:36.014 1:      main::AnalyzePerlCommand            called by fhem.pl (1209)
2025.01.29 01:02:36.014 1:      main::AnalyzeCommand                called by fhem.pl (1136)
2025.01.29 01:02:36.014 1:      main::AnalyzeCommandChain          called by .//FHEM/98_telnet.pm (263)
2025.01.29 01:02:36.014 1:      main::telnet_Read                  called by .//FHEM/98_apptime.pm (178)
2025.01.29 01:02:36.015 1:      main::apptime_getTiming            called by .//FHEM/98_apptime.pm (138)
2025.01.29 01:02:36.015 1:      main::CallFn                        called by fhem.pl (789)
2025.01.29 02:19:15.992 1:  mySolarForecast - Serialization ERROR: Can't store GLOB items at /usr/lib/x86_64-linux-gnu/perl/5.36/Storable.pm line 370, at .//FHEM/76_SolarForecast.pm line 20943.

Modulstand: FVERSION
76_SolarForecast.pm:v1.44.2-s29561/2025-01-23

Hast du eine Idee, was da passiert ist?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

DS_Starter

Hallo Gisbert,

nicht wirklich. Es scheinen Daten nicht übergeben worden zu sein (FHEM::SolarForecast::_processMessageFile(''))

Wie dem auch sei, mach bitte erstmal ein FHEM Update denn wir sind schon über die Version drüber.
Aktuell ist die 1.44.4.
Dann schauen wir nochmal. Bei mir gibt es diese Meldungen jedenfalls nicht.

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

Gisbert

Hallo Heiko,

danke für den Hinweis - das Update mache ich, dann beobachte ich weiter.

Anderes Thema:
Der Verbrauch bei mir hängt stark von der Außentemperatur ab, da ich eine Wärmepumpe habe.
Beispiel:
Sehr milde Temperaturen: 15 kWh am Tag
Sehr kalten Temperaturen: 40 kWh am Tag
Der vom Modul prognostizierte Verbrauch ist 30 kWh für heute, der tatsächliche Verbrauch liegt bei 18 kWh.

Ich habe keine Verbraucher in SolarForecast angelegt. Das war mir bisher zuviel Aufwand.

Gibt es eine Möglichkeit eine bessere Prognose für den Verbrauch zu bekommen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

DS_Starter

ZitatGibt es eine Möglichkeit eine bessere Prognose für den Verbrauch zu bekommen?
Momentan knoble ich daran die Anzahl der gespeicherten Verbrauchsdaten deutlich zu erhöhen (wie bei den PV Erzeugungungsdaten) um daraus einen besseren Medianwert berechnen zu können.
Dazu muß ich das Speicherungsverfahren umbauen damit mehr Werte länger gespeichert werden können, auch abhängig vom Wochentag.

Allerdings hat das dann noch keinen Bezug zur Außentemperatur.
Aber vllt. fällt mir auch dazu noch ein Verfahren ein. Jedenfalls ist der Verbrauch natürlich stark von der Temp. beeinflusst wenn eine WP betrieben wird. Das hatte ich so noch garnicht auf dem Schirm. Ähnliches gilt ja auch für eine Klimaanlage im Sommer. Auch nicht unerheblich.

 
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

Gisbert

Hallo Heiko,

nach dem Fhem-Update und Neustart bekomme ich folgende Log-Einträge:
2025.01.29 20:44:08.015 1:  mySolarForecast - Serialization ERROR: Can't store GLOB items at /usr/lib/x86_64-linux-gnu/perl/5.36/Storable.pm line 370, at .//FHEM/76_SolarForecast.pm line 21029.

2025.01.29 20:44:08.016 1:  PERL WARNING: Use of uninitialized value in subroutine entry at .//FHEM/76_SolarForecast.pm line 16570.
2025.01.29 20:44:08.028 1:  PERL WARNING: Use of uninitialized value $name in hash element at .//FHEM/76_SolarForecast.pm line 16586.
2025.01.29 20:44:08.029 3:  eval: {FHEM::SolarForecast::_processMessageFile('')}

Bei der Prognose der Verbrauchsdaten von Wärmepumpen und Klimaanlagen könnte man Anwender bezogene Stützstellen bereitstellen und als Temperatur eine mittlere Tagestemperatur aus einem Wettermodell, evtl. dem gleichen wie für die Solarvorhersage, benutzen.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

DS_Starter

Sehr merkwürdig. Setze mal bitte verbose 4 im Device und starte FHEM neu.
Nach dem Restart erscheint mit einer Verzögerung von ein paar Minuten so ein (fehlerfreier) Block im Log:

2025.01.29 21:40:21.169 4: SolCast6 - Notification System - Message file >controls_solarforecast_messages_prod.txt< is retrieved non blocking
2025.01.29 21:40:21.340 4: SolCast6 - Notification System - new Message File updated to ./FHEM/controls_solarforecast_messages_prod.txt
2025.01.29 21:40:21.414 4: SolCast6 - Notification System - read local Message File >controls_solarforecast_messages_prod.txt< with 14 entries.

Wie sieht es bei dir aus?
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

Gisbert

Hallo Heiko,

ich bekomme mit verbose 4 folgende Log-Einträge:
2025.01.29 21:58:40.993 4:  mySolarForecast - Notification System - Message file >controls_solarforecast_messages_prod.txt< is retrieved non blocking
2025.01.29 21:58:41.368 4:  mySolarForecast - Notification System - new Message File updated to .//FHEM/controls_solarforecast_messages_prod.txt
2025.01.29 21:58:41.371 1:  mySolarForecast - Serialization ERROR: Can't store GLOB items at /usr/lib/x86_64-linux-gnu/perl/5.36/Storable.pm line 370, at .//FHEM/76_SolarForecast.pm line 21029.

2025.01.29 21:58:41.371 1:  PERL WARNING: Use of uninitialized value in subroutine entry at .//FHEM/76_SolarForecast.pm line 16570.
2025.01.29 21:58:41.377 1:  PERL WARNING: Use of uninitialized value $name in hash element at .//FHEM/76_SolarForecast.pm line 16586.
2025.01.29 21:58:41.377 3:  eval: {FHEM::SolarForecast::_processMessageFile('')}

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

DS_Starter

Ich vermute ein Problem mit dem Perl Modul Storable.pm welches bei dir installiert ist.
Eventuell ist es die Version.
Vielleicht kann ich die Stelle anders gestalten.

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

#1844
Ich habe eine SolarForecast Version in mein contrib geladen. Hole dir sie bitte und starte FHEM neu.
Dann schauen wir wie es damit aussieht.
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