76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

300P

#2730
Zitat von: Bitschubser am 05 Mai 2025, 17:23:54Kann man irgendwo angeben dass der Akku bitte bis z.b. 14:00 Uhr gefüllt sein soll?
Bisher ist es bei mir so, dass der Akku erst zum Abend gefüllt ist.
Wenn ich aber Nachmittags mit dem Auto nach Hause komme, dann wäre es schön, wenn der Hausakku bereits voll wäre, sodass der dann noch vorhandene Überschuss dann ins Auto wandern kann.

Gruß Jens

Hallo Jens,

versuche es evtl. mal diesen ctrlUserExitFn und bau dir diesen aus
.
->> Bereich "-Batterieladungaktiv- on/off" muss du natürlich eigenständig erledigen.
    Diese Details für deine Batterie kennst nur du und musst es selber ergänzen.
->> Ob die Ladebedingungen richtig passen ?? - selbst Hand anlegen und prüfen / anpassen.

{

  my $dt    = timestringsFromOffset (time, 0);
  my $hour  = $dt->{hour};   # aktuelle Stunde in 24h format (00-23)
  my $timestart = 9;       # ab welcher Uhrzeit soll es sein
  my $timeend = 14;        # bis wieviel Uhr soll es sein

 if (int $hour >= $timestart && int $hour < $timeend ) {
          # Nur zwischen xy:00 bis max. xy:59 (!!!! $timeend -1 Stunde !!!!)  Uhr

    my $minsocbat = 100;    # laden nur bis mindesten XYZ SoC aller Batterien
    my $soctotal = CurrentVal ($name, 'batsoctotal', 0);         # SoC über alle Bat als Durchschnitt
    my $pvtot = ReadingsNum ($name, 'RestOfDayPVforecast', 0);  # Restliche PV Prognose total heute in Wh
    my $caps  = CurrentVal ($name, 'batcapsum', 0);          # Summe installierte Bat Wh
    my $need  = $caps - ($soctotal/100 * $caps);             # benötigte Ladeenergie Bat bis 100% Ladung


    Log3 ($name, 5, qq{$name - userFn -> StartZeit von = $timestart bis EndeZeit = $timeend und mindestens ein SoC von $minsocbat % sollte bis dahin in den vorhandenen Batterien geladen worden sein, soweit es technisch möglich ist.});
    Log3 ($name, 5, qq{$name - userFn -> Der PV-Tages-Restertrag betraegt $pvtot Wh ???mehr??? als die offene und noch zu ladende Batteriekapazitaet von $need Wh});

     if ($soctotal < ($minsocbat) && $pvtot > $need) { 
          # Zwischen xy:00 bis max. xy:59 (!!!! $timeend -1 Stunde !!!!)  Uhr und % SoC-Vorgabe erfüllt und der PV-Tages-Rest-Ertrag > 100% Batteriekapazitaet
          # send "on"-Kommando an Batterie-Device if(ne "on");
         if (-Batterieladungaktiv- ne "on") {
              fhem ("set -Batterieladung- on");
              Log3 ($name, 2, qq{$name - userFn -> $name BatteryLoad in $name set to --on--});
             }
         }
  else {
         if (($soctotal >= $minsocbat) || ($pvtot <= $need)) { 
                # Wenn die (SoC-Vorgabe unterschritten !!!!! oder !!!! derTages-Rest-Ertrag < 100% Batteriekapazitaet)
                # danach sollte die Batterieladung enden....
                # send "off"-Kommando an Batterie-Device if(ne "off");
             if (-Batterieladung- ne "off") {
                fhem ("set -Batterieladung- off");
                Log3 ($name, 2, qq{$name - userFn -> $name BatteryLoad in $name set to --off--});
                }
            }
        }
    }
}


Gruß
300P
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

@300P,

die Idee von gestern bzgl. asynchron war eine Sinnestäuschung von mir, die Reaktionen auf on/off Kommandos aus dem Consumer Schaltmodul erfolgen sofort:

2025.05.05 10:59:33 1: Forecast DEBUG> consumer "06" - send switch command now: "set FBDECT_fbahahttp_E8_DF_70_07_42_0B off"
2025.05.05 10:59:33 1: Forecast DEBUG> consumer "06" - current planning state: interrupting
2025.05.05 10:59:33 2: Forecast - Consumer '_WP_Heizstab_WW' switched off (interrupted)
...
2025.05.05 11:06:18 1: Forecast DEBUG> consumer "06" - send switch command now: "set FBDECT_fbahahttp_E8_DF_70_07_42_0B on"
2025.05.05 11:06:18 1: Forecast DEBUG> consumer "06" - Check Context 'switch off' => swoffcond: 0, off-command: off
2025.05.05 11:06:18 1: Forecast DEBUG> consumer "06" - current planning state: continuing
2025.05.05 11:06:18 2: Forecast - Consumer '_WP_Heizstab_WW' switched on (continued)
...
2025.05.05 11:30:30 1: Forecast DEBUG> consumer "06" - send switch command now: "set FBDECT_fbahahttp_E8_DF_70_07_42_0B off"
2025.05.05 11:30:30 1: Forecast DEBUG> consumer "06" - current planning state: interrupting
2025.05.05 11:30:30 2: Forecast - Consumer '_WP_Heizstab_WW' switched off (interrupted)

Bezüglich der externen Kommandos habe ich herausgefunden, dass sie lediglich in der Zeit von 10:00 bis 10:59 auftauchen, das Log startet 08:09 und endet 11:36.

2025.05.05 10:21:17 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched off

2025.05.05 10:21:32 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched on

2025.05.05 10:44:07 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched on

2025.05.05 10:44:22 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched off

2025.05.05 10:49:10 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched off

2025.05.05 10:49:25 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched on

2025.05.05 10:59:48 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched on

2025.05.05 10:59:51 2: Forecast - Consumer '_WP_Heizstab_WW' was external switched off

Das kann Zufall sein, wäre aber ein Anhaltspunkt. Auf jeden Fall sendet Consumer Schaltmodul keine Kommandos die es verursachen könnten.

Ich tippe auf ein Problem mit der Switch State Erkennung wenn es tatsächlich keine echten externen Schaltungen gibt. Zur Zeit verwendest du den Standard.
Setze dir mal swstate explizit:

swstate=state:.*on.*:.*off.*
Dann schauen wir nochmal.
Das notifyHandling Debug kannst du ausschalten, war ein Holzweg.

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

300P

Hallo Heiko,

Danke für die Analyse und die Fehlersuche.
Ich bin mir zu 100% sicher das da keiner ,,externe" manuelle Schaltungen vorgenommen hat.

Ich habe die Anpassung
swstate=state:.*on.*:.*off.* vorgenommen.
Morgen geht's dann weiter.

Gruß + schönen Restabend
300P
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

300P

Guten Morgen Allerseits!


@Heiko:

Hier noch eine SVG passend zu der Zeit des gestrigen "Geister"-Umschalten.
(z.Z. kommt alles was an Werten irgendwie zur WP gehört in die SQL-Datenbank) O:-)
Gruß
300P


Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

DS_Starter

#2734
Also das sieht mir so aus, dass der Heater tatsächlich schaltet wenn die Statusänderung in der DB landet. Ist das ein intelligentes Teil welches selbstständig schalten kann aufgrund irgendwelcher Eingangswerte?
Kann mir aktuell keinen Reim darauf machen.
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

seayak

@ 300P

Bitte poste mal den genauen Typ Deines Heizstabes, damit man sich mit den technischen Daten befassen kann.

Danke und Gruß!

Peter

300P

Hallo Heiko,

=> Nein - das ist ein Fritz 546E. Der schaltet nur wenn man:

A: manuell am Taster drückt  (==>>ist nicht passiert)
B: wenn man eine automatische Schaltung z.B. von HH:MM bis HH:MM einstellt  (==>>ist nicht eingestellt)
C: oder für stand eine Leistungschwelle von xyxyx W eingibt  (==>>ist nicht eingestellt)
D: per Fritzbox schaltet  (==>>ist nicht passiert)
E: per Handyapp schaltet  (==>>ist nicht passiert)
F: per FHEM mittels einem "fbahahttp"-Device schaltet  ? ? ?

Eine Idee habe ich nach langem Kopfzerbrechen aber noch gehabt:

Der Heater wird mit einem relativ langsam Zyklus abgefragt. Der "INTERVAL = 300 s" ist so vom "fbahahttp"-Fritzbox-Device im Standart vorgegeben. Leider kann man dies nicht im "Heater"-Device einzeln anpassen.
Könnte sein das diese Abfragelänge da einwirken könnte wenn das als Änderung vom Heater"-Device einen Event auslöst.
Ich habe diesen Interval heute morgen mal auf 60 s (Minimalinterval bei Fritzbox-Device) verkürzt und wollte am Nachmittag mal sehen ob sich heute dann was verändert hat. Zusätzlich logge ich neben aktueller "power" und dem Zählerstand "energy" ab heute auch den Status "state" (On/Off) jetzt auch mal dort mit.

Gruß
300P


Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

300P

#2737
Zitat von: seayak am 06 Mai 2025, 13:11:17@ 300P

Bitte poste mal den genauen Typ Deines Heizstabes, damit man sich mit den technischen Daten befassen kann.

Danke und Gruß!

Peter

TÜRK+HILLINGER
EHK 230V 2000W =>>> TH 1105340     Temperaturgeführt bis zu 80 Grad

EDIT : 2000 Watt


Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

300P

Zwischeninfo zu meinem "Problem":

Heute Nachmittag gab es nach der Umstellung auf 60s (2 Beiträge vorher) keine "Geisterschaltung" des Heaters  mehr. O:-)
Nur Schaltungen von Solarforecast wegen Wolken / Sonne / Wolken.....

Schau'n wir mal was morgen so passiert - weil es bislang meist morgens passierte  :o

Schönen Restabend
300P
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

Max_Meyer

Zitat von: 300P am 06 Mai 2025, 13:21:05Hallo Heiko,

=> Nein - das ist ein Fritz 546E. Der schaltet nur wenn man:

A: manuell am Taster drückt  (==>>ist nicht passiert)
B: wenn man eine automatische Schaltung z.B. von HH:MM bis HH:MM einstellt  (==>>ist nicht eingestellt)
C: oder für stand eine Leistungschwelle von xyxyx W eingibt  (==>>ist nicht eingestellt)
D: per Fritzbox schaltet  (==>>ist nicht passiert)
E: per Handyapp schaltet  (==>>ist nicht passiert)
F: per FHEM mittels einem "fbahahttp"-Device schaltet  ? ? ?

Eine Idee habe ich nach langem Kopfzerbrechen aber noch gehabt:

Der Heater wird mit einem relativ langsam Zyklus abgefragt. Der "INTERVAL = 300 s" ist so vom "fbahahttp"-Fritzbox-Device im Standart vorgegeben. Leider kann man dies nicht im "Heater"-Device einzeln anpassen.
Könnte sein das diese Abfragelänge da einwirken könnte wenn das als Änderung vom Heater"-Device einen Event auslöst.
Ich habe diesen Interval heute morgen mal auf 60 s (Minimalinterval bei Fritzbox-Device) verkürzt und wollte am Nachmittag mal sehen ob sich heute dann was verändert hat. Zusätzlich logge ich neben aktueller "power" und dem Zählerstand "energy" ab heute auch den Status "state" (On/Off) jetzt auch mal dort mit.


Hallo 330P,
vielleicht als Idee:
richte doch mal einen Dummy als neuen Consumer mit identischen Werten ein und schau ob das Schaltverhalten gleich ist - damit ließe sich ein 'Fremdenfluss' ausschließen' und einfach rausfinden ob der Fehler in der Logik liegt.
und
ggfls. wäre es besser die 2KW nicht direkt über den Zwischenstecker zu schalten - wenn ich bei mir den Heizstab Heizstab (3x1,5kW) anschaue wird der ziemlich häufig geschaltet. Ob der Fritz so robust ist?
Gruß Gerd

300P

Zitat von: Max_Meyer am 06 Mai 2025, 20:54:18....
richte doch mal einen Dummy als neuen Consumer mit identischen Werten ein und schau ob das Schaltverhalten gleich ist - damit ließe sich ein 'Fremdenfluss' ausschließen' und einfach rausfinden ob der Fehler in der Logik liegt.
....

Hallo Gerd,
ja - habe ich schon auf einen parallel betriebenen TEST-KOPIE-RPI gemacht und solange die anderen Maschine ausgestellt - gleiche Ergebnisse zwischen 10:00 Uhr und 12:00 Uhr (heute Morgen gemacht) erhalten.

Zitat von: Max_Meyer am 06 Mai 2025, 20:54:18ggfls. wäre es besser die 2KW nicht direkt über den Zwischenstecker zu schalten - wenn ich bei mir den Heizstab Heizstab (3x1,5kW) anschaue wird der ziemlich häufig geschaltet. Ob der Fritz so robust ist?
Gruß Gerd

Da hatte ich vor der Auswahl des 546E mal hingeschaut.
Zum einen hab ich u.a. für die Waschmaschine schon einen seit fast 8 Jahren Jahren im Einsatz (mehr als 2 kWh) der mehr als 4 mal am Tag von FHEM geschaltet wird.
Zum anderen wird er in den technischen Daten mit Anschlusswerten von max. 2.300 Watt und max. 10A beschrieben.
==>> Beides wird beim Anschluss von diesem WW_Heater mit Steckeranschluss nicht überschritten.

Um das "zu häufige" kurzfristige Schalten zu vermeiden nutze ich eine "Reaktionsverzögerung ->> im Consumer "lockTime"
Dies werde ich aber sicherlich auch noch länger (900:900) (15 Minuten) stellen.
Aktuell bin ich erst bei der Einstellung "lockTime=300:300" von 5 Minuten (Sperrzeit jeweils nach EIN/AUS-Schaltung)

Gruß
300P


Edit:
Grad eben ist mir aber bei 100.sten Kontrolle vom "customer06" und dem "ctrlUserExitFn" noch was aufgefallen - mal morgen bis 12:00 Uhr sehen ob es das war.  ???  ::)  :-X
Wenns das war  :'(  :'(  :'( 
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

Max_Meyer

Zitat von: 300P am 06 Mai 2025, 22:31:33Um das "zu häufige" kurzfristige Schalten zu vermeiden nutze ich eine "Reaktionsverzögerung ->> im Consumer "lockTime"
Dies werde ich aber sicherlich auch noch länger (900:900) (15 Minuten) stellen.
Aktuell bin ich erst bei der Einstellung "lockTime=300:300" von 5 Minuten (Sperrzeit jeweils nach EIN/AUS-Schaltung)

Hallo 300P,
Ja, das Nachlaufen wollte ich vermeiden beim Heizstab - der sollte bei mir - aufgrund seiner Leistung - ausschließlich mit PV laufen - bei einer Laufzeit über die PV-Deckung hinaus holt er sich die Energie ja entweder aus der Batterie oder dem Netz und das muss nicht sein dachte ich.
Gruß Gerd

DS_Starter

#2742
Hallo zusammen,

in meinem contrib liegt eine Vorabversion des Major Release 1.52.0 zum Test wer mag.

Was ist alles enthalten:

- das Setup der Wechselrichter (setupInverterDevXX) kann nun verschiedene Architekturen spezifizieren um eine bessere Unterstützung für
  Balkonkraftwerke oder andere Anlagen mit reinen Batterie-Wechselrichtern zu ermöglichen
 
- Es kann der Typ Batterie-Wechselrichter zur reinen DC->AC / AC->DC definiert werden, die Flußgrafik gibt diese IN / OUT Flüsse auch wieder

- die Attribute setupInverterDevXX enthalten dafür neue Schlüssel dc2ac, ac2dc

- die obsolet gewordenen Attribute sind entfernt: graphicLayoutType, graphicHourStyle, graphicHeaderDetail, graphicSpaceSize, graphicBeamWidth,
                                                  graphicHourCount, graphicEnergyUnit, graphicHeaderShow
                                                 
- Im Wiki habe ich begleitend dazu einen Abschnitt zum Setup der Wechselrichter erstellt


Nach einem Download FHEM restarten!!


Mit diesen Möglichkeiten sollten sich noch mehr Anlagen besser integrieren lassen. Das betrifft auch meine eigene
Victron Anlage. Die MultiPlus II sind AC-DC/DC-AC Wechselrichter zwischen Batterie und Hausnetz ohne eigene Solarzellen.
Die sind an einem SMA-WR (DC-AC) bzw. Victron SmartLoader (DC-DC) angeschlossen.

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

Burny4600

#2743
Ich habe eine Frage zur Batteriekapazitätsanzeige:

Die Readings
Current_BatCharge_01    60 %
Current_BatCharge_02    50 %

sind vorhanden, aber in der Graphik wird keine Batteriekapazität angezeigt.


Korrektur von cap war notwenig. Die Einheit musste ich entfernen, weil es kein Reading zur Batteriekap gibt.
cap=48:kWh ändern nach cap=48 dann wird auch der Prozentwert der Batterien angezeigt.

attr AB_WS_SS setupBatteryDev01 Deye_12k pin=Akku_Leistung_BMS1__kW:kW pout=-pin intotal=Akku_Energie_Ladung_Gesamt__kWh:kWh outtotal=Akku_Energie_Entladung_Gesamt__kWh:kWh cap=24:kWh charge=Akku_SOC__KAP show=2:bottom icon=measure_battery_50@#262626:@yellow:measure_battery_100@red

attr AB_WS_SS setupBatteryDev02 Deye_15k pin=Akku_Leistung_BMS1__kW:kW pout=-pin intotal=Akku_Energie_Ladung_Gesamt__kWh:kWh outtotal=Akku_Energie_Entladung_Gesamt__kWh:kWh cap=48:kWh charge=Akku_SOC__KAP show=2:bottom icon=measure_battery_50@#262626:@yellow:measure_battery_100@red

Wie kann ich die Kapazität der beiden Batterieinheiten zur Anzeige bringen?

Ein weiterer Punkt sind die großen Werte der Leistungsanzeigen. Bei der Übernahme der Werte aus den Invertern werden 3 Stellen ergänzt. Wie bekomme ich die zur vielen Stellen wieder weg?

Wenn mehrere Batterieinheiten vorhanden sind, wird hier nur der Mittelwert der Batterien-Kapazität angezeigt.
Bei den Invertern wird jeder Inverter separat angezeigt. Bei den beiden Batterien wird nur eine einzige Batterie angezeigt. Da wäre es nicht schlecht auch jede Batterie separat anzuzeigen.
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

DS_Starter

@all,

ich habe die Vorabversion 1.52.0 in meinem contrib upgedated.

@Chris,

ZitatWenn mehrere Batterieinheiten vorhanden sind, wird hier nur der Mittelwert der Batterien-Kapazität angezeigt.
Bei den Invertern wird jeder Inverter separat angezeigt. Bei den beiden Batterien wird nur eine einzige Batterie angezeigt. Da wäre es nicht schlecht auch jede Batterie separat anzuzeigen.
Das ist bereits geplant, aber andere Dinge haben aktuell eine höhre Prio bei mir.
Kommt Zeit ...  ;)

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