Leistungsprognose für Wechselrichter

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

Vorheriges Thema - Nächstes Thema

DS_Starter

Es liegt wieder ein Update in meinem contrib.

Ich habe erweitert:

* mit dem das Attr ctrlStatisticReadings kann man sich weitere Readings generieren lassen: 
 
  todayConForecastTillSunset:  Verbrauchsprognose von aktueller Stunde bis Stunde vor Sonnenuntergang 
  currentRunMtsConsumer_XX  :  die Laufzeit (Minuten) des Verbrauchers "XX" seit dem letzten Einschalten. (0 - Verbraucher ist aus)

@Dieter, das Reading currentRunMtsConsumer_XX sollte dir bei deinem use Case helfen.
ESXi@NUC+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

Dracolein

Zitat von: DS_Starter am 19 Juli 2023, 08:23:20Hier könntet ihr z.B. eure Lösungen und Vorgehensweise bezüglich Einsatzbeispielen zur Steuerung von Poolpumpe, Wallbox etc. in entsprechenden Unterpunkte beschreiben und bebildern.

Ich habe mir einen Wiki-Useraccount besorgt und zwei kleine Praxisbeispiele unter Versuch der layouttechnischen Vorgaben ergänzt. Hoffe das geht so?
https://wiki.fhem.de/wiki/SolarForecast_-_Solare_Prognose_(PV_Erzeugung)_und_Verbrauchersteuerung#Praxisbeispiele_und_L%C3%B6sungsans%C3%A4tze_f%C3%BCr_Steuerungen

Dabei fiel mir tatsächlich ein Fehler in meiner Konfig auf:
spignorecond=sensor:humidity:68 müsste eigentlich sowas sein wie
spignorecond=sensor:humidity:>67aber das wird als Syntax nicht funktionieren, oder?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

DS_Starter

#2777
ZitatIch habe mir einen Wiki-Useraccount besorgt und zwei kleine Praxisbeispiele unter Versuch der layouttechnischen Vorgaben ergänzt. Hoffe das geht so?
Ja sicher. Vielen Dank.  :)

Ich habe einen kleinen Fehler korrigiert. Die Consumer Attr haben eine führende Null wenn einstellig, also
consumer01 statt consumer1. Das Attribut consumer1 dürfte es bei dir nicht geben?

Zitatmüsste eigentlich sowas sein wie
Code Auswählen
spignorecond=sensor:humidity:>67
aber das wird als Syntax nicht funktionieren, oder?
Nein ">67" geht nicht. Ein Regex ist an der Stelle gefragt.
Wenn auf >67 = "wahr" getestet werden soll, wäre das möglich:

spignorecond=sensor:humidity:100|6[7-9]|[7-9][0-9]

Das würde den Bereich 67-100 (%) abdecken.

Edit: Ich benutze um Regex auszuarbeiten/zu testen dieses Tool: https://regex101.com/
ESXi@NUC+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

MarkusN

Moin! Ich habe ein Problem welches vermutlich zwischen meinen Ohren liegt. Ich hab meine Poolheizung als consumer wie folgt definiert:

KNX_bwwp_2 type=heater mode=can power=1200 mintime=sunpath on="on" off="off" icon=sani_buffer_electric_heater_side swstate=status:on:off interruptable=1 auto=auto swoncond=MQTT2_venus:Batteries_value_1_soc:([9]\d|\d{3,})
Mit swoncond will ich erreichen, dass die Heizung nur eingeschaltet wird, wenn der SOC meiner Batterie bei mindestens 90 liegt. Aktuell hat das Reading den Wert "98.0", das Device wird trotzdem nicht geschaltet. Laut forecast ist aber genug Überschuss da, und der consumer ist auch eingeplant:

Du darfst diesen Dateianhang nicht ansehen.

Ich habe mit auf regex101 auch bestätigen können dass die regex den wert  matched (https://regex101.com/r/SEu6cj/1).

Hat jemand eine Idee warum es trotzdem nicht klappt?

Grüße
Markus

Dracolein

#2779
Zitat von: MarkusN am 21 Juli 2023, 12:15:31Moin! Ich habe ein Problem welches vermutlich zwischen meinen Ohren liegt. Ich hab meine Poolheizung als consumer wie folgt definiert:

KNX_bwwp_2 type=heater mode=can power=1200 mintime=sunpath on="on" off="off" icon=sani_buffer_electric_heater_side swstate=status:on:off interruptable=1 auto=auto swoncond=MQTT2_venus:Batteries_value_1_soc:([9]\d|\d{3,})
Mit swoncond will ich erreichen, dass die Heizung nur eingeschaltet wird, wenn der SOC meiner Batterie bei mindestens 90 liegt. Aktuell hat das Reading den Wert "98.0", das Device wird trotzdem nicht geschaltet. Laut forecast ist aber genug Überschuss da, und der consumer ist auch eingeplant:

Du darfst diesen Dateianhang nicht ansehen.

Ich habe mit auf regex101 auch bestätigen können dass die regex den wert  matched (https://regex101.com/r/SEu6cj/1).

Hat jemand eine Idee warum es trotzdem nicht klappt?

Grüße
Markus

Ohne im Detail zu analysieren, hast Du mal bisschen trial&error gemacht, z.B. "swoncond" rausgenommen und geschaut, ob sie dann einschaltet? Ist eventuell ".0", also die Nachkommastelle ein Problem?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

MarkusN

Ja, habe ich vergessen zu erwähnen. Ohne swoncond wird der consumer geschaltet.

DS_Starter

#2781
Möglicherweise hat der Wert aus Batteries_value_1_soc ein (Leer)zeichen davor oder dahinter?
Dann könnte

  .*([9]\d|\d{3,}).*    (edited)

helfen.
Ansonsten schalte dir ctrlDebug=consumerSwitching ein.
Das kann man dann im Log analysieren warum was passiert/nicht passiert.
ESXi@NUC+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

Wolfshund

Hallo,

ich habe das modul nach dem WIKI zum laufen bekommen, jedoch nutze ich einen anderen Batterie Speicher.
Mein Speicher ist ein Senec, den ich in FHEM schon auslesen kann, möchte aber das Modul für den Forecast benutzen.
Natürlich sind die Readings im SENEC anders, aber nach dem was ich schon ausprobiert HAbe, sollte das auch
gehen.

Meine Readings lauten:
HausVerbrauch: 0.60 Kw                  # Gesamtverbrauch des Hauses
EinSpeisung: 0.00 Kw                    # Abgabe an den Energieversorger
NetzBezug: 0.08 Kw                      # Was beziehe ich vom Energieversorger
TagesVerbrauch: 4.25 Kw                 # vermutlich für die Berechnung im Forcast nicht nötig
TagesNetzBezug: 2.81 Kw                 # vermutlich für die Berechnung im Forcast nicht nötig
TagesErzeugung: 1.56 Kw                 # vermutlich für die Berechnung im Forcast nicht nötig
ModulLeistung: 0.69 Kw                  # Leistung der Solarmodule
AKKU-Beladung: 0.00 Kw                  # Ladezustand der Batterie
AkkuEntladen: 0.00 Kw                   # Wieviel wird aus der Batterie gezogen
AkkuLaden: 0.17 Kw                      # wieviel wird in die Batterie geladen
 
Nun stellt sich die Frage wie werden diese Werte in
N.PV.TotalConsumption.Dum.Energy
zugeordnet ??
Wie ich das sehe, sollten meine Readings an der richtigen Stelle in
N.PV.TotalConsumption.Dum.Energy eingetragen werden und es sollte eine annähernd
richtige Berechnung erfolgen.
Liege ich da richtig, oder muss noch an anderer Stelle etwas verändert werden?
ALs Anhang mal zwei Screenshots Was ich schon habe

LG

Andreas


Raspberry PI, Mysensors Serial Gateway, Firmata Relais,Mysensors Dallas/Relais, Mysensors Dallas mit Nokia Display

DS_Starter

Hallo Andreas,

herzlich wilkommen.  :)

Das Konfigurationsbeispiel im Wiki zeigt eine mögliche Variante wenn man mehrere Wechselrichter und/oder Batteriewechselrichter hat und diese vor einer Integration in SolarForecast in Dummies zusammnfassen muss.

Wenn ich es richtig sehe, brauchst du das nicht. Du kannst direkt in die Eingabe starten.
Ich kann die Readings nicht 100%ig deuten, aber ich denke du könntest so konfigurieren:

currentBatteryDev -> SENEC pin=AkkuLaden:kW pout=AkkuEntladen:kW [intotal=?:?] [outtotal=?:?] [charge=AKKU-Beladung]

currentInverterDev -> SENEC pv=ModulLeistung:kW etotal=TagesErzeugung:kW [capacity=?]

currentMeterDev -> SENEC gcon=NetzBezug:kW contotal=TagesNetzBezug:kW gfeedin=EinSpeisung:kW feedtotal=?:?

Schlüsselwerte für die ich bei dir nichts gefunden habe sind mit "?" gekennzeichnet.
Die "AKKU-Beladung" kommt mir eigenartig vor, denn sie wäre in Prozent und ist sicherlich auch nicht 0.00.

Der Schlüssel feedtotal ist nicht optional. Du musst ihn noch zur Verfügung stellen. Wahrscheinlich brauchst du ein userReading aus "TagesErzeugung - TagesVerbrauch - Batterie intotal".
Die Einheiten von TagesErzeugung und TagesVerbrauch passen auch nicht, denn das sind kWh oder Wh.

Also so richtig rund ist es noch nicht, aber ein erster Anfang. Vermutlich hast du auch noch mehr Readings zur Verfügung.

LG,
Heiko


ESXi@NUC+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

@all,

in meinem contrib liegt die Version 0.80.15

Neuigkeiten und Änderungen:

- in der flowGrafik wird die "Aktivfärbung" nun davon abgeleitet, ob der Verbraucher logisch an oder aus ist.
  Bisher wurde der physische Zustand ausgewertet. Dadurch sieht man ob z.B. ein Fernseher im Standby läuft
  (logisch aus) oder an ist.

- die Consumer Attribute haben einen neuen Schlüssel switchdev. Jetzt kann man geteilte Devives für
  Energiemessung und Schaltung direkt angeben, z.B. Homematic.
  Den bisherigen Workaround die Energiereadings des Messdevices in das Schalter-Device zu übertragen und
  das Schalter-Device als Consumer anzugeben erübrigen sich dadurch. Man gibt das Energiemessdevice als
  Consumer an und im Schlüssel switchdev das dazugehörige Schalter-Device.

LG,
Heiko
 
ESXi@NUC+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

Christian83

Hallo,

sehe gerade, dass mein Consumer nicht eingeschalten wird, ob wohl genug Überschuss da ist.
Im Log steht:
consumer "01" - general switching parameters => auto mode: 1, current Consumption: 377 W, nompower: 2000, surplus: 2161 W, planstate: no planning: the max expected surplus is less 2000.00, starttime: undef

Heißt das, weil die Forecast.Solar Api schlechte bzw. ungenaue Werte liefert, wird der consumer nicht geschalten?
Kann man das irgendwie abmildern bzw. umgehen?

DS_Starter

ZitatHeißt das, weil die Forecast.Solar Api schlechte bzw. ungenaue Werte liefert, wird der consumer nicht geschalten?
Kann man das irgendwie abmildern bzw. umgehen?
Die API's liefern immer nur Prognosen die mehr oder weniger gut sind und in gewissen Grenzen vom Modul austariert werden.

Bei dir liegt gerade so ein Grenzwert vor, das kann natürlich passieren.

Du kannst den Schlüssel mode=must verwenden, dann wird immer optimiert geplant wenn der Verbraucher wichtig ist.

Oder alternativ kannst du den Schlüssel power bewußt etwas kleiner angeben. Dann hast du immer einen gewissen Puffer.
Wäre der Wert in dem Beispiel mit 1500 angegeben, wäre die Einplanung erfolgt und auch die Schaltung.
Man muss dann u.U. in Kauf nehmen, dass auch mal Netzbezug in ungünstigen Fällen stattfindet, was man allerding mit interruptable wieder neutralisieren kann.

Eine weitere Möglichkeit wäre ein "set ... consumerImmediatePlanning <Verbrauchernummer>" auszuführen wenn der planstate "no planning" ist und ein aktueller Überschuß (Reading Current_Surplus) vorliegt.
Eine solche Logik kann man sich im Attr ctrlUserExitFn hinterlegen.
Wenn dazu Hilfe benötigt wird, kann ich ein Beispiel im Wiki einfügen.

Viele Wege sind möglich ....
ESXi@NUC+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

Christian83

Zitat von: DS_Starter am 26 Juli 2023, 11:10:27Du kannst den Schlüssel mode=must verwenden, dann wird immer optimiert geplant wenn der Verbraucher wichtig ist.

Das heißt dann er läuft immer auch, wenn kein PV-Überschuss ist (so stehts zumindest in der Erklärung).
Das heißt er läuft immer?

DS_Starter

ZitatDas heißt dann er läuft immer auch, wenn kein PV-Überschuss ist (so stehts zumindest in der Erklärung).
Das heißt er läuft immer?
Das ist soweit richtig. Es gibt wie geschrieben den Schlüssel interruptable um den Verbraucher zu unterbrechen falls nicht genügend Überschuß vorliegt.
Dann würde der Verbraucher mit "must" geplant und zunächst auch eingeschaltet wobei er im nächsten Moduldurchlauf (Attr interval) wieder unterbrochen werden würde wenn die PV dann nicht reicht.
ESXi@NUC+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

Christian83

Zitat von: DS_Starter am 26 Juli 2023, 12:15:58Das ist soweit richtig. Es gibt wie geschrieben den Schlüssel interruptable um den Verbraucher zu unterbrechen falls nicht genügend Überschuß vorliegt.
Dann würde der Verbraucher mit "must" geplant und zunächst auch eingeschaltet wobei er im nächsten Moduldurchlauf (Attr interval) wieder unterbrochen werden würde wenn die PV dann nicht reicht.

Okay. Dann muss ich das bei Gelegenheit testen.

Noch ne andere Frage. Kann es sein, dass die Reihenfolge beim Moduldurchlauf "ungünstig" ist.
Also er prüft scheinbar erst ob er consumer schalten muss und dann werden die Werte (akt. Verbrauch, Überschuss, Batterie, etc.) aktualisiert. Wirkt zumindest im Log so, da dort die Reihenfolge so ist.

2023.07.26 12:45:01 1: Forecast2 DEBUG> ############### consumer "01" ###############
2023.07.26 12:45:01 1: Forecast2 DEBUG> consumer "01" - general switching parameters => auto mode: 1, current Consumption: 380 W, nompower: 2000, surplus: 1558 W, planstate: continuing:, starttime: 26.07.2023 10:39:30
2023.07.26 12:45:01 1: Forecast2 DEBUG> consumer "01" - isInLocktime: 0
2023.07.26 12:45:01 1: Forecast2 DEBUG> consumer "01" - current Context is switching "on" => swoncond: 1, on-command: heater on
2023.07.26 12:45:01 1: Forecast2 DEBUG> consumer "01" - current Context is switching "off" => swoffcond: 0, off-command: heater off
2023.07.26 12:45:01 1: Forecast2 DEBUG> consumer "01" - current planning state: continuing
2023-07-26 12:45:01 SolarForecast Forecast2 Current_PV: 1641 W
2023-07-26 12:45:01 SolarForecast Forecast2 Current_GridConsumption: 473 W
2023-07-26 12:45:01 SolarForecast Forecast2 Current_GridFeedIn: 0 W
2023-07-26 12:45:01 SolarForecast Forecast2 Current_Consumption: 2114 W
2023-07-26 12:45:01 SolarForecast Forecast2 Current_SelfConsumption: 1641 W
2023-07-26 12:45:01 SolarForecast Forecast2 Current_SelfConsumptionRate: 100 %
2023-07-26 12:45:01 SolarForecast Forecast2 Current_Surplus: 0 W
2023-07-26 12:45:01 SolarForecast Forecast2 Current_AutarkyRate: 78 %
2023-07-26 12:45:01 SolarForecast Forecast2 NextHours_Sum01_PVforecast: 1065 Wh
2023-07-26 12:45:01 SolarForecast Forecast2 NextHours_Sum02_PVforecast: 2287 Wh
2023-07-26 12:45:01 SolarForecast Forecast2 NextHours_Sum03_PVforecast: 3383 Wh
2023-07-26 12:45:01 SolarForecast Forecast2 NextHours_Sum04_PVforecast: 4233 Wh
2023-07-26 12:45:01 SolarForecast Forecast2 RestOfDayPVforecast: 5895 Wh
2023-07-26 12:45:01 SolarForecast Forecast2 NextHours_Sum04_ConsumptionForecast: 11539 Wh
2023-07-26 12:45:01 SolarForecast Forecast2 RestOfDayConsumptionForecast: 15336 Wh
2023-07-26 12:45:02 SolarForecast Forecast2 updated
2023.07.26 12:45:18 1: Forecast2 DEBUG> ############### consumer "01" ###############
2023.07.26 12:45:18 1: Forecast2 DEBUG> consumer "01" - general switching parameters => auto mode: 1, current Consumption: 2114 W, nompower: 2000, surplus: 0 W, planstate: continuing:, starttime: 26.07.2023 10:39:30
2023.07.26 12:45:18 1: Forecast2 DEBUG> consumer "01" - isInLocktime: 0
2023.07.26 12:45:18 1: Forecast2 DEBUG> consumer "01" - current Context is switching "on" => swoncond: 1, on-command: heater on
2023.07.26 12:45:18 1: Forecast2 DEBUG> consumer "01" - current Context is switching "off" => swoffcond: 0, off-command: heater off
2023.07.26 12:45:18 1: Forecast2 DEBUG> consumer "01" - current planning state: continuing
2023-07-26 12:45:18 SolarForecast Forecast2 Current_PV: 1570 W
2023-07-26 12:45:18 SolarForecast Forecast2 Today_Hour13_PVreal: 2800 Wh
2023-07-26 12:45:18 SolarForecast Forecast2 Current_GridConsumption: 392 W
2023-07-26 12:45:18 SolarForecast Forecast2 Current_Consumption: 1962 W
2023-07-26 12:45:18 SolarForecast Forecast2 Current_SelfConsumption: 1570 W
2023-07-26 12:45:18 SolarForecast Forecast2 Current_AutarkyRate: 80 %
2023-07-26 12:45:19 SolarForecast Forecast2 updated
2023.07.26 12:45:34 1: Forecast2 DEBUG> ############### consumer "01" ###############
2023.07.26 12:45:34 1: Forecast2 DEBUG> consumer "01" - general switching parameters => auto mode: 1, current Consumption: 1962 W, nompower: 2000, surplus: 0 W, planstate: continuing:, starttime: 26.07.2023 10:39:30
2023.07.26 12:45:34 1: Forecast2 DEBUG> consumer "01" - isInLocktime: 0
2023.07.26 12:45:34 1: Forecast2 DEBUG> consumer "01" - current Context is switching "on" => swoncond: 1, on-command: heater on
2023.07.26 12:45:34 1: Forecast2 DEBUG> consumer "01" - current Context is switching "off" => swoffcond: 0, off-command: heater off
2023.07.26 12:45:34 1: Forecast2 DEBUG> consumer "01" - current planning state: continuing
2023-07-26 12:45:34 SolarForecast Forecast2 Current_PV: 1541 W
2023-07-26 12:45:34 SolarForecast Forecast2 Current_GridConsumption: 448 W
2023-07-26 12:45:34 SolarForecast Forecast2 Current_Consumption: 1989 W
2023-07-26 12:45:34 SolarForecast Forecast2 Current_SelfConsumption: 1541 W
2023-07-26 12:45:34 SolarForecast Forecast2 Current_AutarkyRate: 77 %
2023-07-26 12:45:34 SolarForecast Forecast2 Today_PVreal: 12200 Wh
2023-07-26 12:45:36 SolarForecast Forecast2 updated