Photovoltaik Eigenverbrauch,Bilanz,Prognose (Kostal Plenticore; KSEM; BYD HV)

Begonnen von ch.eick, 07 Oktober 2020, 16:09:12

Vorheriges Thema - Nächstes Thema

ch.eick

Zitat von: knuddli am 19 Dezember 2020, 13:07:00
danke für die schnelle Antwort. Die Datenbank ist angelegt und scheint zu funktionieren. Zumindest sind nun keine Fehlermeldungen mehr da.
Ist das Normal das die PV_Anlage_1_API nur "? ? ?" anzeigt? Die API meines Plenticore ist aber auch nur 0.2.0! Firmware 1.42/1.43.
Schau dazu mal die einzelnen Tests im Wiki an.
Ein FW update des Plenticore würde auch sinn machen, da die Speichersteuerung verbessert wurde.

Zitat
Wie schon erwähnt, ich hab schon alles abgeschrieben. Mittlerweile hab ich auch Astro und DWD richtig eingestellt.
Okay, wenn das DWP Device läuft, solltest Du ja auch Werte bekommen. Die schreibe ich nicht in die DB. Lies einfach man in rufe den Teil dazu im Wiki.
Auch das Solat_forecast() kann man manuell aufrufen, um zu testen.
Die DWD Station muss natürlich Rad1h Werte liefern.

Zitat
Deine Shellys sind fast baugleich mit meien sonoffs (ESP8266). Allerdings hab ich da Tasmota (MQTT) drauf, da bei mir nix nachhause telefonieren darf. Das passe ich mir noch an...
Das ist bei meiner Konfiguration relativ egal. Das Kommando steht im entsprechenden Dummy zum Gerät, dort kannst Du eins für an und eins für aus hinterlegen.

SetCmdOff set shelly02 off 0
SetCmdOn set shelly02 on 0
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mumpitz

Hallo zusammen

Ich habe die Batterie Steuerung wie im Wiki beschrieben umgesetzt. So bin ich zumindest der Meinung. Nun habe ich aber das Problem, dass die Umstellung auf nur Laden oder nicht mehr laden alle 3 Sekunden ausgeführt wird. Weiss jemand woran das das liegt?

Hier die Meldungen im Fhemlog ( geht so seitenweise weiter)

2020.12.22 18:57:10 2: PV Überschuss wird in Batterie geladen. Keine Entladung
2020.12.22 18:57:06 2: PV Überschuss wird in Batterie geladen. Keine Entladung
2020.12.22 18:57:03 2: PV Überschuss wird in Batterie geladen. Keine Entladung


Am Morgen, als die Batterie freigegeben wurde:
2020.12.22 12:57:03 2: Batterie über 90%, Entlademodus freigegeben
2020.12.22 11:57:03 2: Batterie über 90%, Entlademodus freigegeben
2020.12.22 10:57:03 2: Batterie über 90%, Entlademodus freigegeben


Mein PV_Schedule Device
################################################################################################################
## 1 Plenticore Status aktualisieren Dies geschieht über das WR_Plenticore_API Device
##
([:57] and [05:00-23:59])
   (get WR_Plenticore_API 21_Battery_Information)(get WR_Plenticore_API 20_Statistic_EnergyFlow)(get WR_Plenticore_API 22_Battery_InternControl)(get WR_Plenticore_API 25_Battery_EM_State)

################################################################################################################
## 2 PV Prognose vom aktuellen Tag aktualisieren
##     zwischen 7 und 19 Uhr zur vollen Stunde
DOELSEIF
([07:00-20:00] and [:00])   ({Solar_forecast("DBLogging","LogDBRep_delete_PV_Forecast","WR_Plenticore","Solar_Calculation_fc","DWD_Forecast",0)})

################################################################################################################
## 3 PV Prognose für den nächsten Tag aktualisieren
##
DOELSEIF
([06:55] or [19:11]) ({Solar_forecast("DBLogging","LogDBRep_delete_PV_Forecast","WR_Plenticore","Solar_Calculation_fc","DWD_Forecast",1)})

################################################################################################################
## 4 regelmäßig die Bilanz aktualisieren
##
DOELSEIF
([+:10] and ![:00]) ## alle 10 Minuten außer um :00
  (get WR_Plenticore_API 04_auth_me)

################################################################################################################
## 5 Wenn die Ladung im Herbst Winter unter MinSoc geht allen PV Überschuss in die Batterie laden
##
DOELSEIF
(([Astro:ObsSeason] eq "Herbst" or [Astro:ObsSeason] eq "Winter") and
[WR_Plenticore_API:Battery_Info_SoC] <= [WR_Plenticore_API:Battery_InternControl_MinSoc])
(set WR_Plenticore_API 22_3_Battery_MinHomeConsumption [WR_Plenticore_API:Battery_Info_WorkCapacity])(get WR_Plenticore_API 22_Battery_InternControl, {Log 2, "PV Überschuss wird in Batterie geladen. Keine Entladung"})

################################################################################################################
## 6 Beim erreichen von 90% Soc die Entladung wieder frei geben
##
DOELSEIF
(([Astro:ObsSeason] eq "Herbst" or [Astro:ObsSeason] eq "Winter") and
[WR_Plenticore_API:Battery_Info_SoC] >= 90 and ([07:00-16:00|8] or [00:00-23:59|7]))
(set WR_Plenticore_API 22_3_Battery_MinHomeConsumption 50)(get WR_Plenticore_API 22_Battery_InternControl, {Log 2, "Batterie über 90%, Entlademodus freigegeben"})


wait  0,3,3,3:0:0:0:0,3:0,3

ch.eick

Moin Mumpitz,
ich hatte hier eben einige Möglichkeiten eingetragen, die ich jedoch schon alle getestet und ausgeschlossen habe.

Hast Du einen verschieden teuren Strom Tarif, oder warum machst Du noch zusätzlich eine Freigabezeit?
Ich glaube Du hattest da mal etwas in einer Mail geschrieben. Ich würde das dann auch gerne ins Wiki als Hinweis mit aufnehmen.

Schau Dir bitte mal den Event Monitor an, welches Event da immer wieder kommt und das dann auslöst.

attr PV_Anlage_1_API event-on-update-reading auth_.*,Battery_.*,Statistic_Autarky.*,Statistic_Energy_.*arge.*,Statistic_EnergyFeedIn.*,Statistic_EnergyHome.*, Statistic_EnergyPv[1|2].*,Statistic_.*Consumption.*,Statistic_Yield.*

attr Astro event-on-change-reading SunAlt,SunAz,ObsSeason,ObsSeasonN,.*Twilight.*
attr Astro interval 600

Wenn es so nicht zu finden ist, dann frag mal bitte im DOIF Thread nach.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,
ich habe gestern noch das letzte Update für den KSEM geladen und es lief ohne Probleme.
Für die nächste Zeit versuche ich noch ein Grafana Dashboard zu adaptieren, damit Ihr schöne Diagramme und etwas Überblick bekommt :-)
Viele Grüße und ein schönes Fest
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mumpitz

Zitat von: ch.eick am 23 Dezember 2020, 08:44:01

Hast Du einen verschieden teuren Strom Tarif, oder warum machst Du noch zusätzlich eine Freigabezeit?
Ich glaube Du hattest da mal etwas in einer Mail geschrieben. Ich würde das dann auch gerne ins Wiki als Hinweis mit a


Ja genau, wir haben hier von Montag bis Freitag, 0700 - 1900 Uhr, einen Hochtarif und die restliche Zeit einen Niedertarif. Darum habe ich das PV_Schedule so abgeändert, dass er sicher nur im Hochtarif die Batterie entlädt. Muss das allerdings genau beobachten, ob es dadurch dann Eintritt, dass die Batterie voll wird und wir ins Netz einspeisen... Bis jetzt ist das aber noch nie passiert. Dank deiner grossartigen Grafiken würde ich das jedoch sofort merken.

Das DOIF Problem mit dem mehrmaligen Triggern habe ich inzwischen mit einem Hilfs-DOIF gelöst:
defmod di_hilfsDOIF_Batterieladung DOIF ([WR_Plenticore_API:Battery_Info_SoC] <= [WR_Plenticore_API:Battery_InternControl_MinSoc])() DOELSEIF \
([WR_Plenticore_API:Battery_Info_SoC] >= 90)()
attr di_hilfsDOIF_Batterieladung DbLogExclude .*
attr di_hilfsDOIF_Batterieladung alias Batterielademodus
attr di_hilfsDOIF_Batterieladung cmdState laden|entladen
attr di_hilfsDOIF_Batterieladung devStateIcon laden:measure_battery_25 entladen:measure_battery_100
attr di_hilfsDOIF_Batterieladung icon measure_battery_0
attr di_hilfsDOIF_Batterieladung room PV


Nun frage ich im PV_Schedule nur noch den Status dieses Hilfs-DOIF ab. Dadurch kann es keine mehrfach Triggerung mehr geben:
################################################################################################################\
## 5 Wenn die Ladung im Herbst Winter unter MinSoc geht allen PV Überschuss in die Batterie laden\
##\
DOELSEIF\
(([Astro:ObsSeason] eq "Herbst" or [Astro:ObsSeason] eq "Winter") and [di_hilfsDOIF_Batterieladung] eq "laden") \
(set WR_Plenticore_API 22_3_Battery_MinHomeConsumption [WR_Plenticore_API:Battery_Info_WorkCapacity])(get WR_Plenticore_API 22_Battery_InternControl, {Log 2, "PV Überschuss wird in Batterie geladen. Keine Entladung"})\
\
################################################################################################################\
## 6 Beim erreichen von 90% Soc die Entladung wieder frei geben\
##\
DOELSEIF\
(([Astro:ObsSeason] eq "Herbst" or [Astro:ObsSeason] eq "Winter") and \
[di_hilfsDOIF_Batterieladung] eq "entladen" and ([07:00-16:00|8] or [00:00-23:59|7]))\
(set WR_Plenticore_API 22_3_Battery_MinHomeConsumption 50)(get WR_Plenticore_API 22_Battery_InternControl, {Log 2, "Batterie über 90%, Entlademodus freigegeben"})


Sobald das Wetter wieder besser wird sehe ich ob es funktioniert....

ch.eick

Zitat von: Mumpitz am 25 Dezember 2020, 19:27:08
Das DOIF Problem mit dem mehrmaligen Triggern habe ich inzwischen mit einem Hilfs-DOIF gelöst:
Nun frage ich im PV_Schedule nur noch den Status dieses Hilfs-DOIF ab. Dadurch kann es keine mehrfach Triggerung mehr geben:
Das sollte aber nicht die Lösung sein, Hast Du Dir die Trigger mal angesehen und dazu das Log verglichen?
Ich hatte bereits Dein DOIF mal nachgebaut und bei mir ist das nicht aufgetreten.

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

@Mumpitz: Vielen Dank für Deine anerkennende Spende, das hat mich sehr gefreut.
                    Auf eine gute weitere Zusammenarbeit :-)
Viele Grüße und ein frohes Fest
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mumpitz

Zitat von: ch.eick am 25 Dezember 2020, 22:55:20
Das sollte aber nicht die Lösung sein, Hast Du Dir die Trigger mal angesehen und dazu das Log verglichen?
Ich hatte bereits Dein DOIF mal nachgebaut und bei mir ist das nicht aufgetreten.

Gruß
    Christian

Nein, weil der Akku im Moment bei 52% steht und daher vorläufig nicht mehr geladen wird. Ich müsste dann genau in dem Moment am Event Monitor sitzen wo es triggert!

Darum habe ich mir damit beholfen!

ch.eick

Zitat von: Mumpitz am 25 Dezember 2020, 23:13:26
Darum habe ich mir damit beholfen!
Das ist manchmal schwierig.
Wenn Du MinSoc auf 80% setzt, wird er zwangsweise geladen, eventuell kannst Du da ja den Event erwischen.

EDIT: Mir ist da noch eine Idee gekommen.

Lass doch eventuell meine DOELSEIF bestehen und füge noch weitere für die Preissteuerung hinzu, wie zB

DOELSEIF
(  [PV_Anlage_1_API:Battery_Info_SoC] >= 50 and ([07:00-16:00|8] or [00:00-23:59|7]) )

  (set PV_Anlage_1_API 22_3_Battery_MinHomeConsumption 50)
  (get PV_Anlage_1_API 22_Battery_InternControl, {Log 2, "Batterie über 90%, Entlademodus freigegeben"})

Dann könntest Du die reine Wintersteuerung zur Vermeidung der Notladung von der Tarifsteuerung trennen. Das wäre dann etwas für's Wiki.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Snakebyte91

Welche Firmwareversion hat euer Wechselrichter?

Meiner wurde letzte Woche wegen eines Fehlers mit dem BYD Speicher auf die Firmware 1.46/1.45 aktualisiert. Als API Version wird mir 0.2.0 angezeigt.

ch.eick

Hallo erstmal, und willkommen im Team :-)

Zitat von: Snakebyte91 am 30 Dezember 2020, 20:30:37
Welche Firmwareversion hat euer Wechselrichter?

Meiner wurde letzte Woche wegen eines Fehlers mit dem BYD Speicher auf die Firmware 1.46/1.45 aktualisiert. Als API Version wird mir 0.2.0 angezeigt.


Software-Version_IO-Controller_(IOC) 01.45
Software-Version_Maincontroller_(MC) 01.46

info_api_version 0.2.0
info_hostname scb
info_name PUCK RESTful API
info_sw_version 01.16.05025


Falls Du auch meine Implementierung verwendest wäre somit die v1.16 Variante die Richtige.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Dank der letzten Anfrage habe ich festgestellt, das im PV_Anlage_1_API die Ausgabe für info_* etwas vertauscht ist.
Hier noch die Korrektur zum Überschreiben.

attr PV_Anlage_1_API get05-1Name info_api_version
attr PV_Anlage_1_API get05-2Name info_hostname
attr PV_Anlage_1_API get05-3Name info_name
attr PV_Anlage_1_API get05-4Name info_sw_version


Hat jetzt noch jemand eine kleinere Version als die 1.16 für den Plenticore im Einsatz?
Ich werde ansonsten im Wiki die andere Version entfernen und auch alles was mit dem Umstieg zu tun hat, also bitte alsbald kurz melden.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,
für die, die gerne auch Grafana verwenden möchten, stelle ich hier mal meine momentanen Diagramme hier ein.
Ich verwende Grafana 7.3.1 als Docker Image auf einem RPI4 32Bit, was sich problemlos integrieren ließ. Also einfach das .json importieren und es sollte dann so aussehen wie im Bild.

VG und einen guten Rutsch
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

EDIT 15:43: Ich habe den Eintrag nochmals überarbeitet. Bei Bedarf bitte nochmals lesen.

Hallo Mumpitz,

ich hatte nun auch den Loop im PV_Schedule

2021.01.01 10:59:16.089 2: PV Überschuss wird in Batterie geladen. Keine Entladung
2021.01.01 10:59:22.835 2: PV Überschuss wird in Batterie geladen. Keine Entladung
...

Das hat folgende Bewandtnis:

Das entsprechende DOELSEIF reagiert auf den Trigger [PV_Anlage_1_API:Battery_InternControl_MinSoc]
dann erfolgt ein "get PV_Anlage_1_API 22_Battery_InternControl" , was wiederum den Status abfragt und wieder einen event-on-update erzeugt.


Um das nun abzustellen wäre eine Änderung der Events im PV_Anlage_1_API ,notwendig, was ich bereits getestet habe.

attr PV_Anlage_1_API event-on-change-reading Battery_.*
attr PV_Anlage_1_API event-on-update-reading auth_.*,Statistic_Autarky.*,Statistic_Energy_.*arge.*,Statistic_EnergyFeedIn.*,Statistic_EnergyHome.*, Statistic_EnergyPv[1|2].*,Statistic_.*Consumption.*,Statistic_Yield.*


Weiterhin habe ich auch die Logmeldung im PV_Schedule etwas verändert, damit man sieht aus welchem Device die Meldung kommt.

snip...
################################################################################################################
## 6 Wenn die Ladung im Herbst/Winter unter MinSoc geht allen PV Überschuss in die Batterie laden
##
DOELSEIF
(([Astro:ObsSeason] eq "Herbst" or [Astro:ObsSeason] eq "Winter") and
  [PV_Anlage_1_API:Battery_Info_SoC] <= [PV_Anlage_1_API:Battery_InternControl_MinSoc])
  (get BYD_Status BatteryInformation)
  (set PV_Anlage_1_API 22_3_Battery_MinHomeConsumption [PV_Anlage_1_API:Battery_Info_WorkCapacity])
  (get PV_Anlage_1_API 22_Battery_InternControl, {Log 2, "PV_Schedule cmd_6 : PV Überschuss wird in Batterie geladen. Keine Entladung"})

################################################################################################################
## 7 Beim erreichen von 90% Soc die Entladung wieder frei geben
##
DOELSEIF
(([Astro:ObsSeason] eq "Herbst" or [Astro:ObsSeason] eq "Winter") and
  [PV_Anlage_1_API:Battery_Info_SoC] >= 90)

  (set PV_Anlage_1_API 22_3_Battery_MinHomeConsumption 50)
  (get PV_Anlage_1_API 22_Battery_InternControl, {Log 2, "PV_Schedule cmd_7 : Batterie über 90%, Entlademodus freigegeben"})


VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mumpitz

Zitat von: ch.eick am 01 Januar 2021, 14:32:12
EDIT 15:43: Ich habe den Eintrag nochmals überarbeitet. Bei Bedarf bitte nochmals lesen.

Hallo Mumpitz,

ich hatte nun auch den Loop im PV_Schedule

2021.01.01 10:59:16.089 2: PV Überschuss wird in Batterie geladen. Keine Entladung
2021.01.01 10:59:22.835 2: PV Überschuss wird in Batterie geladen. Keine Entladung
...

Das hat folgende Bewandtnis:

Das entsprechende DOELSEIF reagiert auf den Trigger [PV_Anlage_1_API:Battery_InternControl_MinSoc]
dann erfolgt ein "get PV_Anlage_1_API 22_Battery_InternControl" , was wiederum den Status abfragt und wieder einen event-on-update erzeugt.


Um das nun abzustellen wäre eine Änderung der Events im PV_Anlage_1_API ,notwendig, was ich bereits getestet habe.

attr PV_Anlage_1_API event-on-change-reading Battery_.*
attr PV_Anlage_1_API event-on-update-reading auth_.*,Statistic_Autarky.*,Statistic_Energy_.*arge.*,Statistic_EnergyFeedIn.*,Statistic_EnergyHome.*, Statistic_EnergyPv[1|2].*,Statistic_.*Consumption.*,Statistic_Yield.*


Weiterhin habe ich auch die Logmeldung im PV_Schedule etwas verändert, damit man sieht aus welchem Device die Meldung kommt.

VG
   Christian

Hallo Christian

Zuerst ein Frohes neues Jahr und alles gute!

Habe es bei mir eingebaut und das Hilfs DOIF vorerst disabled. Sobald die Batterie zum erstenmal voll ist werde ich berichten ob es geklappt hat!

Einmal mehr: DANKE!