Leistungsprognose für Wechselrichter

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

Vorheriges Thema - Nächstes Thema

der-Lolo

Hallo Heiko,
wenn ich nun in die Prognose schaue sehe ich:

SolCast: 06.08.2023 15:11:04  API Abfrage erfolgreich
automatischer Zyklus: ab 60 Minuten vor dem kommenden Sonnenaufgang  (12/0)

Der Log dazu sieht so aus:

2023.08.06 04:32:47 1: Prognose DEBUG> SolCast API Call - max possible daily API requests: 10
2023.08.06 04:32:47 1: Prognose DEBUG> SolCast API Call - Requestmultiplier: 1
2023.08.06 04:32:47 1: Prognose DEBUG> SolCast API Call - possible daily API Calls: 10
2023.08.06 04:32:47 1: Prognose DEBUG> Request SolCast API for string "Südost": https://api.solcast.com.au/
2023.08.06 04:32:49 1: Prognose DEBUG> SolCast API Call - done API Calls: 1
2023.08.06 04:32:49 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 58811, new interval: 5881
2023.08.06 04:32:49 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 10
2023.08.06 04:32:49 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 06:10:50
2023.08.06 04:32:49 1: Prognose DEBUG> Request SolCast API for string "Nordwest": https://api.solcast.com.au
2023.08.06 04:32:51 1: Prognose DEBUG> SolCast API Call - done API Calls: 2
2023.08.06 04:32:51 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 58809, new interval: 6534
2023.08.06 04:32:51 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 9
2023.08.06 04:32:51 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 06:21:45
2023.08.06 04:32:51 1: Prognose DEBUG> Request SolCast API for string "West": https://api.solcast.com.au
2023.08.06 04:32:52 1: Prognose DEBUG> SolCast API Call - done API Calls: 3
2023.08.06 04:32:52 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 58808, new interval: 7351
2023.08.06 04:32:52 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 8
2023.08.06 04:32:52 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 06:35:23
2023.08.06 06:36:28 1: Prognose DEBUG> SolCast API Call - max possible daily API requests: 10
2023.08.06 06:36:28 1: Prognose DEBUG> SolCast API Call - Requestmultiplier: 1
2023.08.06 06:36:28 1: Prognose DEBUG> SolCast API Call - possible daily API Calls: 10
2023.08.06 06:36:28 1: Prognose DEBUG> Request SolCast API for string "Südost": https://api.solcast.com.au
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - done API Calls: 4
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 51391, new interval: 7341
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 7
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 08:38:50
2023.08.06 06:36:30 1: Prognose DEBUG> Request SolCast API for string "Nordwest": https://api.solcast.com.au
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - done API Calls: 5
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 51389, new interval: 8564
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 6
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 08:59:15
2023.08.06 06:36:31 1: Prognose DEBUG> Request SolCast API for string "West": https://api.solcast.com.au
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - done API Calls: 6
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 51387, new interval: 10277
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 5
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 09:27:50

2023.08.06 09:27:58 1: Prognose DEBUG> SolCast API Call - max possible daily API requests: 10
2023.08.06 09:27:58 1: Prognose DEBUG> SolCast API Call - Requestmultiplier: 1
2023.08.06 09:27:58 1: Prognose DEBUG> SolCast API Call - possible daily API Calls: 10
2023.08.06 09:27:58 1: Prognose DEBUG> Request SolCast API for string "Südost": https://api.solcast.com.au
2023.08.06 09:28:00 1: Prognose DEBUG> SolCast API Call - done API Calls: 7
2023.08.06 09:28:00 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 41100, new interval: 10275
2023.08.06 09:28:00 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 4
2023.08.06 09:28:00 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 12:19:15
2023.08.06 09:28:00 1: Prognose DEBUG> Request SolCast API for string "Nordwest": https://api.solcast.com.au
2023.08.06 09:28:02 1: Prognose DEBUG> SolCast API Call - done API Calls: 8
2023.08.06 09:28:02 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 41098, new interval: 13699
2023.08.06 09:28:02 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 3
2023.08.06 09:28:02 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 13:16:21
2023.08.06 09:28:02 1: Prognose DEBUG> Request SolCast API for string "West": https://api.solcast.com.au
2023.08.06 09:28:03 1: Prognose DEBUG> SolCast API Call - done API Calls: 9
2023.08.06 09:28:03 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 41097, new interval: 20548
2023.08.06 09:28:03 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 2
2023.08.06 09:28:03 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 15:10:31
2023.08.06 15:10:59 1: Prognose DEBUG> SolCast API Call - max possible daily API requests: 10
2023.08.06 15:10:59 1: Prognose DEBUG> SolCast API Call - Requestmultiplier: 1
2023.08.06 15:10:59 1: Prognose DEBUG> SolCast API Call - possible daily API Calls: 10
2023.08.06 15:10:59 1: Prognose DEBUG> Request SolCast API for string "Südost": https://api.solcast.com.au
2023.08.06 15:11:01 1: Prognose DEBUG> SolCast API Call - done API Calls: 10
2023.08.06 15:11:01 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 20520, new interval: 20520
2023.08.06 15:11:01 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 1
2023.08.06 15:11:01 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 20:53:00
2023.08.06 15:11:01 1: Prognose DEBUG> Request SolCast API for string "Nordwest": https://api.solcast.com.au
2023.08.06 15:11:02 1: Prognose DEBUG> SolCast API Call - done API Calls: 11
2023.08.06 15:11:02 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 20518, new interval: 20518
2023.08.06 15:11:02 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 1
2023.08.06 15:11:02 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 20:53:00
2023.08.06 15:11:02 1: Prognose DEBUG> Request SolCast API for string "West": https://api.solcast.com.au
2023.08.06 15:11:04 1: Prognose DEBUG> SolCast API Call - done API Calls: 12
2023.08.06 15:11:04 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 20516, new interval: 20516
2023.08.06 15:11:04 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 1
2023.08.06 15:11:04 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 20:53:00

inverterStrings = Südost,Nordwest,West
moduleRoofTops = Südost=p1 Nordwest=p2 West=p3

Vielleicht kommt ja nun um 20:53 noch eine abfrage - die Anzeige auf der Prognose Grafik 12/0 sagt aber was anderes - noch dazu, warum 12/0?

DS_Starter

Ich glaube ich sehe einen Fehler in meiner Routine.
Du hast drei Strings und verwendest für jeden String einen separaten SolCast Account, richtig?

Allerdings zähle ich in deinem Fall jeden Call mit 3 Requests:

2023.08.06 06:36:28 1: Prognose DEBUG> SolCast API Call - max possible daily API requests: 10
2023.08.06 06:36:28 1: Prognose DEBUG> SolCast API Call - Requestmultiplier: 1
2023.08.06 06:36:28 1: Prognose DEBUG> SolCast API Call - possible daily API Calls: 10
2023.08.06 06:36:28 1: Prognose DEBUG> Request SolCast API for string "Südost": https://api.solcast.com.au
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - done API Calls: 4
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 51391, new interval: 7341
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 7
2023.08.06 06:36:30 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 08:38:50
2023.08.06 06:36:30 1: Prognose DEBUG> Request SolCast API for string "Nordwest": https://api.solcast.com.au
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - done API Calls: 5
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 51389, new interval: 8564
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 6
2023.08.06 06:36:31 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 08:59:15
2023.08.06 06:36:31 1: Prognose DEBUG> Request SolCast API for string "West": https://api.solcast.com.au
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - done API Calls: 6
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 51387, new interval: 10277
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 5
2023.08.06 06:36:33 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 09:27:50

Es dürfte aber nur 1 Call sein, weil du jeden String separat mit einem Account steuerst (wenn ich recht habe). Ich muß noch prüfen ob es nicht nur ein Anzeigefehler im Log ist.
Ansonsten fällt der nächste/letzte Call exakt auf den Sonnenuntergang:

2023.08.06 15:11:04 1: Prognose DEBUG> SolCast API Call - Sunset: 2023-08-06 20:53:00, remain Sec to Sunset: 20516, new interval: 20516
2023.08.06 15:11:04 1: Prognose DEBUG> SolCast API Call - remaining API Calls: 1
2023.08.06 15:11:04 1: Prognose DEBUG> SolCast API Call - next API Call: 06.08.2023 20:53:00

Da werde ich in der Programmlogik einen kleinen Puffer einbauen. Der Call würde nicht ausgeführt wenn das Interval nur 1 Sekunde nach Sonnenuntergang gestartet wird, was aber ziemlich sicher 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

DS_Starter

@CaptainHook ..

ZitatMein Traum ist jetzt dem Speicher beizubringen, dass er wartet bis z.B. 1000W Überschuss ....

Am einfachsten reagierst du auf das Reading Current_Surplus. Sobald der Wert größer ist als X, dann sagst du deinem Speicher "laden". Natürlich kann die Schwelle später wieder temporär unterschritten werden. Dann kannst du das Laden unterbrechen oder nicht, d.h. wenn einmal das Laden gestartet ist, bleibt es dabei.
Du kannst dein Batterie-Steuerdevice als Consumer definieren. Ich kann dabei unterstützen wenn gewünscht.
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

der-Lolo

Ja - drei Accounts, für jede ausrichtung einer...

DS_Starter

@der-Lolo, ich denke ich konnte das Problem lösen.
Bitte zieh dir die V0.80.18 aus meinem contrib und teste den Lauf.
Morgen sehen wir dann hoffentlich schon den Erfolg.

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

der-Lolo

Ok - habe gerade eingespielt:

Internals:
   FVERSION   76_SolarForecast.pm:v0.80.18-s21735/2023-08-07 TESTING

DS_Starter

Funktioniert die Zyklenaufteilung / Optimierung mit der neuen V jetzt bei dir?
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

CaptainHook

Zitat von: DS_Starter am 06 August 2023, 16:29:06@CaptainHook ..

ZitatMein Traum ist jetzt dem Speicher beizubringen, dass er wartet bis z.B. 1000W Überschuss ....

Am einfachsten reagierst du auf das Reading Current_Surplus. Sobald der Wert größer ist als X, dann sagst du deinem Speicher "laden". Natürlich kann die Schwelle später wieder temporär unterschritten werden. Dann kannst du das Laden unterbrechen oder nicht, d.h. wenn einmal das Laden gestartet ist, bleibt es dabei.
Du kannst dein Batterie-Steuerdevice als Consumer definieren. Ich kann dabei unterstützen wenn gewünscht.

Moin,

Danke für den Tipp mit dem Consumer. Ich hab nun einen entsprechenden Consumer für meine Batterie angelegt. Als power Attribut hab ich 1000 genommen, da dieser Wert ja für die Planung genutzt wird.

Was ich jetzt noch nicht ganz verstehe ist, wie geht das Modul damit um, wenn die 1000w überschritten werden?

Sprich der Speicher regelt so, dass er das maximale an  Leistung aufnimmt bevor eingespeist wird, ich kann das natürlich auch manuell steuern, bzw einen maximal Wert festlegen.

Oder ist dem Modul das egal?

Grüße,
Stephan
Lenovo M53 ThinkCentre 10DC | Docker | SolarEdge SE10K + SE5000H + Energy Bank 10KWh | EspEasy | Tasmota | Hue | Alexa | uvm.

CaptainHook

Moin
Irgendwas hab ich gestern kaputt gemacht

Illegal division by zero at ./FHEM/76_SolarForecast.pm line 5541.

Grüße
Stephan
Lenovo M53 ThinkCentre 10DC | Docker | SolarEdge SE10K + SE5000H + Energy Bank 10KWh | EspEasy | Tasmota | Hue | Alexa | uvm.

DS_Starter

Hallo Stephan,

ZitatIrgendwas hab ich gestern kaputt gemacht
Nein, hast du nicht. Ggf. Fehler bei mir.
Welche Version hast du? (Internal FVERSION)
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

CaptainHook

Moin,

ich nutzte die letzte Version 0.80.18.

$data{$type}{$name}{consumers}{$c}{avgenergy} = sprintf "%.2f", ($consumerco/$runhours);            # Durchschnittsverbrauch pro Stunde in Wh

Das sollte die "schuldige" Zeile sein, wie auch immer runhours 0 wird, allerdings "lädt mein Akku seit 10:04Uhr und seit 10:04h stürzt FHEM ab.
Ich sehe da eine parallele  ;)


Grüße,
Stephan
Lenovo M53 ThinkCentre 10DC | Docker | SolarEdge SE10K + SE5000H + Energy Bank 10KWh | EspEasy | Tasmota | Hue | Alexa | uvm.

DS_Starter

Jepp, das muß ich richten.
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

So, kannst die neue V aus dem contrib ziehen und neu starten. Sollte funktionieren.
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

CaptainHook

Neue Version ist installiert und läuft! Danke :)
Lenovo M53 ThinkCentre 10DC | Docker | SolarEdge SE10K + SE5000H + Energy Bank 10KWh | EspEasy | Tasmota | Hue | Alexa | uvm.

DS_Starter

ZitatWas ich jetzt noch nicht ganz verstehe ist, wie geht das Modul damit um, wenn die 1000w überschritten werden?

Sprich der Speicher regelt so, dass er das maximale an  Leistung aufnimmt bevor eingespeist wird, ich kann das natürlich auch manuell steuern, bzw einen maximal Wert festlegen.
Die Angabe power=1000w ist einerseits für die Planung relevant. Aber auch das tatsächliche Einschalten des Consumers geschieht erst wenn 1000W Überschuß erreicht werden. Da wird der Befehl im Schlüssel "on" ausgeführt.
Wird im Verlauf der On-Phase der Überschuß wieder unterschritten, wird der Verbraucher per default nicht unterbrochen. Das Verhalten kann man mit dem Schlüssel "interruptable" abändern.
Ausgeschaltet wird der Verbraucher regulär am Ende des Einplanungszeitraumes oder entsprechend der Definition im Schlüssel swoffcond (zum Beispiel wenn SOC 100% der Batterie erreicht 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