Leistungsprognose für Wechselrichter

Begonnen von ch.eick, 18 Januar 2021, 08:35:46

Vorheriges Thema - Nächstes Thema

DS_Starter

ZitatWie komme ich da z.B auf 64kW consumption?

Consumption pro Stunde wird aus den Stundenwertreadings gebildet und in der History gespeichert:

  my $pvrl    = ReadingsNum ($name, "Today_Hour".sprintf("%02d",$chour+1)."_PVreal",          0);
  my $gfeedin = ReadingsNum ($name, "Today_Hour".sprintf("%02d",$chour+1)."_GridFeedIn",      0);
  my $gcon    = ReadingsNum ($name, "Today_Hour".sprintf("%02d",$chour+1)."_GridConsumption", 0);
  my $batin   = ReadingsNum ($name, "Today_Hour".sprintf("%02d",$chour+1)."_BatIn",           0);
  my $batout  = ReadingsNum ($name, "Today_Hour".sprintf("%02d",$chour+1)."_BatOut",          0);

  my $con = $pvrl - $gfeedin + $gcon - $batin + $batout;

Kannst du in die sub schauen: saveEnergyConsumption

ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
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

Ich glaube ich habe das Problem gefunden. Der Totalwert für gridfeedin wird falsch übergeben. Den sehe ich aber nicht in der Anzeige.
Ich berichte ob es das war.

kask

Das war es!
      17 => etotal: 3913168, pvfc: 4723, pvrl: 5201
            confc: 4361, con: 5187, gcon: 0, gfeedin: 0
            batintotal: 471571, batin: 14, batouttotal: 473039, batout: 0
            wid: 1, wcc: 31, wrp: 1.00, temp: 19.6, pvcorrf: 0.90/1
      18 => etotal: 3918369, pvfc: 4093, pvrl: 4331
            confc: 3614, con: 2577, gcon: 0, gfeedin: 1740
            batintotal: 471585, batin: 14, batouttotal: 473039, batout: 0
            wid: 1, wcc: 31, wrp: 1.00, temp: 19.5, pvcorrf: 0.92/1
      19 => etotal: 3922700, pvfc: 3088, pvrl: 1370
            confc: 2693, con: 386, gcon: 1, gfeedin: 1085
            batintotal: 471599, batin: 16, batouttotal: 473039, batout: 116
            wid: 1, wcc: 29, wrp: 1.00, temp: 18.3, pvcorrf: -

DS_Starter

ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
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

ZitatDie Verbrauchsvorhersage ist abhängig von den Daten Vergangenheit. Sie kann nur versuchen aus diesen Daten einen wahrscheinlichen Verbrauch für den nächsten Tag abzuleiten.
Diese Daten können umfangreich oder weniger umfangreich, richtig oder verfälscht sein, je nach Laufzeit.
Darüber hinaus gibt es noch Einflußmöglichkeiten via Attr affectConsForecastIdentWeekdays auf die Kalkulation weil man eben keine Gleichverteilung über die Tage hat.

Kann ich nur diese History löschen bzw. reseten (consumption forecast)? Oder wie lange guckt das Modul zurück. Mit get xxx pvHistory, war ich überrascht, wie viele Tage das noch zurückging.

DS_Starter

Die pvHistory hat 31 Tage, d.h. 31 Einträge.
Ist sie gefüllt, überschreiben sich die Tageswerte, also heute ist 01 dran.

Diese Datenstruktur wird genommen. Ausnahme ist wenn das Attr affectConsForecastIdentWeekdays gesetzt ist, dann werden nur gleiche Wochentage genommen. Heute also alle Donnerstage, max. 4 Tage demnach.

Löschen kannst du einen kompletten Tag mit

   set <name> reset pvHistory <Tag> (z.B. set <name> reset pvHistory 08)

oder eine bestimmte Stunde des Tages mit

   set <name> reset pvHistory <Tag> <Stunde> (z.B. set <name> reset pvHistory 08 10)

Einen einzelnen Wert einer Stunde kann man nicht löschen, gibt u.U. ein großes Durcheinander.
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
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

MarkusN

Ich habe dieses Modul heute konfiguriert, und es funktioniert wunderbar mit meinem Victron ESS System.
Da ich es in der Doku und beim überfliegen der letzten paar Seiten hier im Thread nicht finden konnte frage ich mal hier:
Wie nutzt man dieses Modul am besten mit einer Nulleinspeiseanlage/Inselanlage, bei der man nicht wirklich weiß was gerade der maximale PV Ertrag ist?
Konkret regelt der Laderegler die Leistung herunter wenn die Batterie voll ist und das Haus in dem moment keine großen Verbraucher aktiv hat, da der Überschuss nicht eingespeist wird. Praktisch besteht in so einem Moment zwischen prognostizierter und tatsächlicher PV Leistung ein erheblicher Unterschied. Mein Verständnis ist dass ein konfigurierter Verbraucher (in meinem Fall ein Heizstab) bei unzureichender PV Leistung gar nicht erst eingeschaltet wird (auch wenn diese Leistung zur Verfügung stehen würde wenn der Heizstab zugeschaltet würde).

DS_Starter

#2617
Hallo MarkusN,

das ist interessant ... ich habe ebenfalls ein Victron ESS System  :D , allerdings "normal" netzgekoppelt mit Überschußeinspeisung.

Für die Verbrauchersteuerung bzw. Planung kannst du den mode=must nutzen und power=0 setzen in den Consumer Schlüsseln.

Aus der Hilfe:

ZitatDer Schlüssel power gibt die nominale Leistungsaufnahme des Verbrauchers gemäß seines Datenblattes an. Dieser Wert wird verwendet um das Schalten des Verbrauchers in Abhängigkeit des aktuellen PV-Überschusses zu steuern. Ist power=0 gesetzt, wird der Verbraucher unabhängig von einem ausreichenden PV-Überschuß geschaltet.


Bei deiner Nutzung solltest du pvCorrectionFactor_Auto=off setzen!
Sonst werden sicherlich völlig falsche Korrekturwerte errechnet wenn die Anlage runtersteuert.

Trotzdem wird es dann natürlich nicht so treffende Statistiken geben bzgl. Prognose und Realität, aber damit muss man dann wahrscheinlich leben.
Probiere die Hinweise mal aus ... diesen Einsatzfall hatten wir nich nicht.
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
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

MarkusN

Hey DS_Starter,

danke für die Tipps. Das mit dem pvCorrectionFactor_Auto=off habe ich mir schon gedacht, wird bei mir wenig Sinn machen.

Da es sich bei dem Verbraucher um einen Zusatzheitzstab meiner Brauchwasserwärmepumpe handelt, möchte ich ihn nur zuschalten wenn ich tatsächlich genug Überschuss habe bzw. wenn dieser Überschuss prognostiziert ist.
Wie genau muss ich mir must vorstellen? In der Doku steht:

ZitatMUST - der Verbaucher wird optimiert eingeplant auch wenn wahrscheinlich nicht genügend PV Überschuß vorhanden sein wird

Bedeutet das dass der Verbraucher auch dann geschaltet wird, wenn der prognostizierte Überschuss nicht für die benötigte Leistung ausreicht?

Grüße,
Markus

stefanru

Ah hätte auch noch eine Frage.
Forcast.Solar funktioniert ganz gut.
Habe mir nochmal die API angeschaut und es gibt ja den azimut
:az - plane azimuth, -180 ... 180 (-180 = north, -90 = east, 0 = south, 90 = west, 180 = north); integer

Habe mal die API auf debug gestellt und sehe aber den parameter nicht.
Was gibst du hier mit?
Im Modul habe ich S (Süden).
S trifft es bei mir ganz gut, bin -10 von S.

Würde mich nur interessieren wie das mitgegeben wird.

Erstmal aber schönen Urlaub.

Gruß,
Stefan

DS_Starter

@Stefan,

wenn du ctrlDebug=apiCall aktivierst sieht du im Log den Aufruf der API:

2023.06.02 15:40:52.429 1: SolCast5 DEBUG> ForecastSolar API Call - Request for string "Schleppdach":
https://api.forecast.solar/estimate/watthours/period/XXXXX/XXXXXXX/30/S/0.825

Die Angaben holt das Modul aus den Readings:

     moduleDirection  Süddach=S Schleppdach=S
     modulePeakString Süddach=5.13 Schleppdach=0.825
     moduleTiltAngle  Süddach=45 Schleppdach=30

ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
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

@Markus,

Zitat von: MarkusN am 02 Juni 2023, 08:55:27Bedeutet das dass der Verbraucher auch dann geschaltet wird, wenn der prognostizierte Überschuss nicht für die benötigte Leistung ausreicht?

Ich hole mal ein bisschen aus ...
Wir unterscheiden die Consumer Planung und dessen Schaltung.

Mit dem mode=can/must wird festgelegt ob und wenn ja wie der Consumer eingeplant wird. Bei "can" wird geschaut ob die Prognose den gewichteten Verbrauch des Verbrauchers irgendwann übersteigt. Nur dann erfolgt eine optimierte Einplanung, sonst nicht. Bei "must" wird auf jeden Fall eingeplant, auch wenn der Bedarf die Prognose übersteigt. Aber auch hier wird das Maximum gesucht. Also der Consumer braucht 1000 Wh, es werden aber max. 500 Wh um 12 Uhr erzeugt, dann erfolgt die Einplanung in der Nähe dieses Maximums.

Die tatsächliche Schaltung des Consumers erfolgt ab dem Beginn der Einplanungszeit abhängig davon ob tatsächlich mehr erzeugt wird als benötigt, aber nur dann wenn der Schlüssel power auf den nominalen Verbrauch gesetzt ist.  Bei der Angabe "0" wird immer die Einschaltung zu Beginn der Einplanungszeit ausgeführt auch wenn kein Überschuß vorhanden ist.

Wenn du also power=<Nominalleistung> angibst, wird eine Einplanung auf jeden Fall (mode=must) vorgenommen, aber es wird nur dann eingschaltet wenn tatsächlich Überschuß >= Nominalleistung vorliegt. tatsächlich heißt, dass Erzeugung minus Hausverbrauch größer 0 ist.


ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
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

stefanru

Ok misst, da hatte ich Tomaten auf den Augen.
Es steht im Log ich war nur zu blind:
https://api.forecast.solar/estimate/watthours/period/xx.xxxxx/x.xxxxx/20/S/9.6

Also mit S, das passt bei mir gut.

Danke und Gruß,
Stefan

stefanru

Habe es mir nochmals angeschaut ich weiche -10° vom Süden ab.
Forcast.Solar unterstützt auch zusätzlich zu den Himmelsrichtungen eine Angabe in ° Südazimuth.
https://doc.forecast.solar/find_your_azimuth

Bei mir also -10°.
Ich denke damit würde gerade morgens und abends die Werte von der API korrekter geliefert.
Zur Zeit hat er morgens zu viel und Abends zu wenig.
Klar das wird über korrektur auch besser, aber es wäre doch toll wenn die Ausrichtung gleich genau stimmt.

Wäre es machbar im Modul auch zusätzlich / anstelle der Himmelsrichtung mit Buchstaben den Azimut des Dachs angeben zu können?
Ob nun als Süd- oder Nordazimuth wäre egal. D
ie API braucht es als Südazimuth somit wäre das wohl das richtige.

Gruß und Danke,
Stefan

DS_Starter

ZitatWäre es machbar im Modul auch zusätzlich / anstelle der Himmelsrichtung mit Buchstaben den Azimut des Dachs angeben zu können?

Auf die Frage habe ich ehrlich gesagt schon gewartet.  :D
Ich habe da schon eine Idee im Hinterkopf. Das braucht etwas Entwicklungsarbeit damit es ordentlich auseinandergesteuert werden kann bzgl. der anderen API's incl. DWD.
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
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