FHEM Forum

FHEM - Energiemanagement und Energieerzeugung => Solaranlagen => Thema gestartet von: ch.eick am 16 Juli 2019, 19:18:12

Umfrage
Frage: Wird meine Implementierung bereits auch von anderen Verwendet?
Antwort 1: Ja, das Thema interessiert mich Stimmen: 10
Antwort 2: Das ganze ist zu schwierig in der Umsetzung Stimmen: 0
Titel: Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juli 2019, 19:18:12
Update 2020.08.27 - Es wurde nun eine Wiki Seite begonnen Kostal Plenticore 10 Plus (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus#Projekte_der_FHEM-Community)
Update 2020.06.18 - Raw Definition von LWP_PV DOIF aktualisiert
Update 2020.06.15 - Raw Definition von PV_Anlage_1 aktualisiert
Update 2020.05.27 - Raw Definition von Pool und Waschmaschine aktualisiert. Der Pool wird auch bei 70% Einspeisung sofort aktiviert
Update 2020.02.11 - Raw Definitionen aktualisiert und Shelly1 ergaenzt; Pool und Waschmaschine im Thread ergaenzt; Viel Feintuning bei den Geraeten
Update 2020.01.11 - Es hat sich einiges in den Devices getan. Manuelles Ein/Aus; Status Erkennung der geschalteten Geräte anhand des Stromverbrauchs; Endabschaltung, wenn kein Strom mehr benoetigt wird; Formatierung der Devices fuer FhemWeb;
Update 2019.08.14 - Raw Definitionen aktualisiert und Shelly device ergänzt
Update 2019.07.17 - Raw Definitionen teilweise aktualisiert

Hallo zusammen.

Der Ein oder Andere hat es bereit rausgelesen, dass ich eine Photovoltaik Anlage plane betreibe.
Auf Grund der 70% Regelung möchte ich natürlich den Strom erstmal selber verbrauchen.

Die Anlage meiner Wahl ist ein Kostal Plenticore mit BYD Pufferspeicher und einem EM410/KSEM.
Nach Studium der Dokumentation aller Geräte und Erweiterung meiner Suche zu SMA Sunny Home Manager 2.0 habe ich es entweder nicht vollständig verstanden oder noch nicht herausgefunden, wie man die Eigensteuerung für den Verbrauch konfiguriert.

- Bei SMA soll es in Verbindung mit dem Portal für bis zu 5 Geräte gehen.
- In Verbindung mit SMA benötigt man dann wohl auch spezielle Aktoren, mit denen man dann die Steckdose schaltet.
- Beim Kostal Plenticore habe ich nur eine Möglichkeit gefunden, die mir ein Signal über ein potentialfreies Relais liefert. Dieses Relais hat bei mir keine Verwendung.

- Und was ist mit meinem SmartHome :-) ?

Okay, das war die Einleitung und nun bin ich mal los gelaufen und habe mir anhand der Entscheidungsparameter etwas eigenes gebaut.

1. Eine Novelan Wärmepumpe mit Luxtronik2 und einem Photovoltaik Input Port gilt es anzusteuern.

1.1 Der SWTin Port zeigt den Status des Ports an, wenn man den Photovoltaik Modus über die Steuerung aktiviert hat.
    Hier der Code, um den Port dann auch im FHEM zu sehen.

defmod Heizung LUXTRONIK2 <IP-Adresse> 600
attr Heizung alias Heizung
attr Heizung allowSetParameter 1
attr Heizung doStatistics 0
attr Heizung ignoreFirmwareCheck 1
attr Heizung room Heizung->System

attr Heizung userHeatpumpValues 36 SWTin

attr Heizung verbose 0


1.2 Dieser SWTin Port wird mit einem Shelly1 Aktor bedient
   220V auf dem SWTin Port aktiviert den Photovoltaik Modus.

2. Test Umgebung
   Um bereits beginnen zu können habe ich Dummy, FileLog, readingsGroup, SVG, HourCounter und DOIF bemüht.

2.1 Die Anforderung (Das ist noch von vor der Inbetriebnahme und dient nur noch zur Erinnerung an die Anfaenge)

- Eine Wärmepumpe sollte nicht ständig ein und aus geschaltet werden. Hier hoffe ich, dass der Hersteller sich da auch Gedanken gemacht hat. Nach langer Beobachtung des Stromzählers (SMA Energy Meter 20) weiß ich nun wie lang die Pumpe durchlaufen sollte und wie hoch der Stromverbrauch ist, um das Werk zu vollbringen.

- Einmal eingeschaltet sollte die LWP mindestens ein Zeitfenster von 1 Stunde bekommen
- Damit genügend PV Strom da ist sollte der Leistungsüberschuss mindestens 3500 Watt sein. Sollte etwas mehr benötigt werden, dann leg ich halt etwas drauf.
- Fällt der PV Strom unter 3000 Watt wird nach ablauf der Mindestlaufzeit (zum Geräteschutz) das SWTin Signal wieder weg genommen.

- Liefert der Wechselrichter (WR) mehr als die besagten 3500 Watt wird nochmals 15 Minuten gewartet, damit es auch stabiel ist und nicht nur ein kurzer Peak.
- Ansonsten stopt das DOIF den wait timer wieder und es geht von vorne los.
- In der Novelan LWP habe ich bisher Sterrzeiten eingerichtet, damit das Brauchwasser erst ab 14:00 Uhr zur höchsten Außentemperatur bereitet wird.
- Mit der PV Anlage möchte ich das Brauchwasser bereits vorher auf die Maximal mögliche Temperatur anheben. Die Sperrzeiten werden dann auf 16:00 Uhr verschoben, falls die PV Anlage es nicht geschafft hat.

- Ist die Mindestlaufzeit abgelaufen und die PV Leistung reicht nicht mehr, wird das SWTin Signal wieder abgeschaltet.

- Dann gibt es noch eine maximale Laufzeit pro Tag, die ich auf 4 Stunden festgelegt habe. Danach sollte der Wärmepuffer gefüllt sein.
   Generell steuert die LWP ihre Einschaltzyklen auch im PV Modus automatisch selber und startet nur wenn die Hysteresewerte unterschritten werden.
   Das SWTin Signal sagt nur, es steht Überschussleistung zur Verfühgung und das Signal hebt die Heizungskurve sowie die Brauchwassertemperatur an.

Und nun die fhem Umsetzung mit den Updates (s.o.):

1. Ein Zähler für die Laufzeiten der LWP (jedes Geraet hat einen eigenen, die jedoch nicht alle hier gelistet sind)

defmod LWP_Counter HourCounter LWP:on.* LWP:off
attr LWP_Counter alias LWP_Counter
attr LWP_Counter event-min-interval .*:600
attr LWP_Counter event-on-change-reading .*
attr LWP_Counter group PV Eigenverbrauch-Steuerung
attr LWP_Counter icon time_timer
attr LWP_Counter interval 5
attr LWP_Counter room Strom->Photovoltaik
attr LWP_Counter sortby 03
attr LWP_Counter verbose 0


2. Das Dummy, das die LWP darstellt und die Parameter bereit hält

defmod LWP dummy
attr LWP alias LWP_LuftWärmePumpe
attr LWP group PV Eigenverbrauch
attr LWP icon sani_earth_source_heat_pump
attr LWP readingList LWP_Button PowerLevelMinTime PowerLimitOn PowerLimitOff RunTimeMin RunTimePerDay SetCmdOff SetCmdOn TimeStart TimeEnd
attr LWP room Strom->Photovoltaik
attr LWP setList LWP_Button:uzsuToggle,on,off PowerLevelMinTime:slider,60,30,300 PowerLimitOn:slider,1000,250,4000 PowerLimitOff:slider,1000,250,4000 RunTimeMin:slider,300,300,7200 RunTimePerDay:slider,900,300,28800 SetCmdOff SetCmdOn TimeStart:time TimeEnd:time
attr LWP sortby 03
attr LWP stateFormat state
attr LWP verbose 0
attr LWP webCmd LWP_Button

# Hier noch einige Basiswerte, die bei der ersten Konfiguration gesetzt werden muessen
setreading LWP LWP_Button off
setreading LWP SetCmdOff set shelly01 off 0
setreading LWP SetCmdOn set shelly01 on 0
setreading LWP PowerLevelMinTime 600
setreading LWP PowerLimitOff 2250
setreading LWP PowerLimitOn 2750
setreading LWP RunTimeMin 3600
setreading LWP RunTimePerDay 28800
setreading LWP TimeEnd 16:00
setreading LWP TimeStart 08:00


3. Mein Kostal Plenticore 10 Plus mit BYD Batterie
Die Kommunikation ist ueber ModBus TCP implementiert. Der Wechselrichter liefert ebenfalls Daten zur Batterie und zur KSEM / EM410 (SmartMeter).


defmod PV_Anlage_1 ModbusAttr 71 60 192.168.178.18:1502 TCP

attr PV_Anlage_1 DbLogExclude .*
attr PV_Anlage_1 DbLogInclude Act_state_of_charge,Actual_battery_charge_-minus_or_discharge_-plus_Power,Actual_battery_charge_usable_Power,Battery_temperature,Home_own_consumption_from_PV,Home_own_consumption_from_battery,Home_own_consumption_from_grid,Inverter_state,Power_DC1,Power_DC2,Power_DC_Sum,Total_DC_Power,Total_DC_Power_Max,Total_PV_Power_reserve,Voltage_DC1,Voltage_DC2,.*_yield,Solar_.*,Statistic_.*
attr PV_Anlage_1 alias PV_Einspeisung
attr PV_Anlage_1 comment Kostal Plenticore 10 Plus mit BYD Speicher
attr PV_Anlage_1 dev-h-defFormat %.2f
attr PV_Anlage_1 dev-h-defLen 2
attr PV_Anlage_1 dev-h-defPoll 1
attr PV_Anlage_1 dev-h-defRevRegs 1
attr PV_Anlage_1 dev-h-defUnpack f>
attr PV_Anlage_1 dev-type-STR-format %s
attr PV_Anlage_1 dev-type-STR-len 8
attr PV_Anlage_1 dev-type-STR-revRegs 0
attr PV_Anlage_1 dev-type-STR-unpack a*
attr PV_Anlage_1 event-on-change-reading statistics_.*,Statistic_.*,Act_state_of_charge,Actual_battery_charge_.*,Battery_temperature,Home_own_consumption_from_.*,Inverter_state,Power_DC1,Power_DC2,Power_DC_Sum,Total_DC_Power,Total_DC_Power_Max,Total_PV_Power_reserve,Voltage_DC1,Voltage_DC2,.*_yield,Solar_.*
attr PV_Anlage_1 group PV Eigenverbrauch
attr PV_Anlage_1 icon sani_solar
attr PV_Anlage_1 obj-h100-reading Total_DC_Power
attr PV_Anlage_1 obj-h104-format %s
attr PV_Anlage_1 obj-h104-reading State_of_energy_manager
attr PV_Anlage_1 obj-h104-revRegs 0
attr PV_Anlage_1 obj-h104-unpack N
attr PV_Anlage_1 obj-h106-reading Home_own_consumption_from_battery
attr PV_Anlage_1 obj-h108-reading Home_own_consumption_from_grid
attr PV_Anlage_1 obj-h110-reading Total_home_consumption_Battery
attr PV_Anlage_1 obj-h112-reading Total_home_consumption_Grid
attr PV_Anlage_1 obj-h114-reading Total_home_consumption_PV
attr PV_Anlage_1 obj-h116-reading Home_own_consumption_from_PV
attr PV_Anlage_1 obj-h118-reading Total_home_consumption
attr PV_Anlage_1 obj-h120-reading Isolation_resistance
attr PV_Anlage_1 obj-h122-reading Power_limit_from_EVU
attr PV_Anlage_1 obj-h124-reading Total_home_consumption_rate
attr PV_Anlage_1 obj-h14-reading Inverter_serial_number
attr PV_Anlage_1 obj-h14-type STR
attr PV_Anlage_1 obj-h144-reading Worktime
attr PV_Anlage_1 obj-h150-reading Actual_cos_phi
attr PV_Anlage_1 obj-h152-reading Grid_frequency
attr PV_Anlage_1 obj-h154-reading Current_Phase_1
attr PV_Anlage_1 obj-h156-reading Active_power_Phase_1
attr PV_Anlage_1 obj-h158-reading Voltage_Phase_1
attr PV_Anlage_1 obj-h160-reading Current_Phase_2
attr PV_Anlage_1 obj-h162-reading Active_power_Phase_2
attr PV_Anlage_1 obj-h164-reading Voltage_Phase_2
attr PV_Anlage_1 obj-h166-reading Current_Phase_3
attr PV_Anlage_1 obj-h168-reading Active_power_Phase_3
attr PV_Anlage_1 obj-h170-reading Voltage_Phase_3
attr PV_Anlage_1 obj-h172-reading Total_AC_active_power
attr PV_Anlage_1 obj-h174-reading Total_AC_reactive_power
attr PV_Anlage_1 obj-h178-reading Total_AC_apparent_power
attr PV_Anlage_1 obj-h190-reading Battery_charge_current
attr PV_Anlage_1 obj-h194-format %.0f
attr PV_Anlage_1 obj-h194-reading Number_of_battery_cycles
attr PV_Anlage_1 obj-h200-reading Actual_battery_charge_-minus_or_discharge_-plus_current
attr PV_Anlage_1 obj-h202-reading PSSB_fuse_state
attr PV_Anlage_1 obj-h208-format %.0f
attr PV_Anlage_1 obj-h208-reading Battery_ready_flag
attr PV_Anlage_1 obj-h210-reading Act_state_of_charge
attr PV_Anlage_1 obj-h212-reading Battery_state
attr PV_Anlage_1 obj-h214-reading Battery_temperature
attr PV_Anlage_1 obj-h216-reading Battery_voltage
attr PV_Anlage_1 obj-h218-reading Cos_phi_(powermeter)
attr PV_Anlage_1 obj-h220-reading Frequency_(powermeter)
attr PV_Anlage_1 obj-h222-reading Current_phase_1_(powermeter)
attr PV_Anlage_1 obj-h224-reading Active_power_phase_1_(powermeter)
attr PV_Anlage_1 obj-h226-reading Reactive_power_phase_1_(powermeter)
attr PV_Anlage_1 obj-h228-reading Apparent_power_phase_1_(powermeter)
attr PV_Anlage_1 obj-h230-reading Voltage_phase_1_(powermeter)
attr PV_Anlage_1 obj-h232-reading Current_phase_2_(powermeter)
attr PV_Anlage_1 obj-h234-reading Active_power_phase_2_(powermeter)
attr PV_Anlage_1 obj-h236-reading Reactive_power_phase_2_(powermeter)
attr PV_Anlage_1 obj-h238-reading Apparent_power_phase_2_(powermeter)
attr PV_Anlage_1 obj-h240-reading Voltage_phase_2_(powermeter)
attr PV_Anlage_1 obj-h242-reading Current_phase_3_(powermeter)
attr PV_Anlage_1 obj-h244-reading Active_power_phase_3_(powermeter)
attr PV_Anlage_1 obj-h246-reading Reactive_power_phase_3_(powermeter)
attr PV_Anlage_1 obj-h248-reading Apparent_power_phase_3_(powermeter)
attr PV_Anlage_1 obj-h250-reading Voltage_phase_3_(powermeter)
attr PV_Anlage_1 obj-h252-reading Total_active_power_(powermeter)
attr PV_Anlage_1 obj-h254-reading Total_reactive_power_(powermeter)
attr PV_Anlage_1 obj-h256-reading Total_apparent_power_(powermeter)
attr PV_Anlage_1 obj-h258-reading Current_DC1
attr PV_Anlage_1 obj-h260-reading Power_DC1
attr PV_Anlage_1 obj-h266-reading Voltage_DC1
attr PV_Anlage_1 obj-h268-reading Current_DC2
attr PV_Anlage_1 obj-h270-reading Power_DC2
attr PV_Anlage_1 obj-h276-reading Voltage_DC2
attr PV_Anlage_1 obj-h278-reading Current_DC3
attr PV_Anlage_1 obj-h280-reading Power_DC3
attr PV_Anlage_1 obj-h286-reading Voltage_DC3
attr PV_Anlage_1 obj-h320-reading Total_yield
attr PV_Anlage_1 obj-h322-reading Daily_yield
attr PV_Anlage_1 obj-h324-reading Yearly_yield
attr PV_Anlage_1 obj-h326-reading Monthly_yield
attr PV_Anlage_1 obj-h38-reading Software-Version_Maincontroller_(MC)
attr PV_Anlage_1 obj-h38-type STR
attr PV_Anlage_1 obj-h384-len 16
attr PV_Anlage_1 obj-h384-reading Inverter_network_name
attr PV_Anlage_1 obj-h384-type STR
attr PV_Anlage_1 obj-h420-reading IP-address
attr PV_Anlage_1 obj-h420-type STR
attr PV_Anlage_1 obj-h428-reading IP-subnetmask
attr PV_Anlage_1 obj-h428-type STR
attr PV_Anlage_1 obj-h436-reading IP-gateway
attr PV_Anlage_1 obj-h436-type STR
attr PV_Anlage_1 obj-h446-reading IP-DNS1
attr PV_Anlage_1 obj-h446-type STR
attr PV_Anlage_1 obj-h454-reading IP-DNS2
attr PV_Anlage_1 obj-h454-type STR
attr PV_Anlage_1 obj-h46-reading Software-Version_IO-Controller_(IOC)
attr PV_Anlage_1 obj-h46-type STR
attr PV_Anlage_1 obj-h514-len 1
attr PV_Anlage_1 obj-h514-reading Battery_actual_SOC
attr PV_Anlage_1 obj-h517-reading Battery_Manufacturer
attr PV_Anlage_1 obj-h517-type STR
attr PV_Anlage_1 obj-h525-format %c
attr PV_Anlage_1 obj-h525-reading Battery_Model_ID
attr PV_Anlage_1 obj-h525-unpack N
attr PV_Anlage_1 obj-h527-format %c
attr PV_Anlage_1 obj-h527-reading Battery_Serial_Number
attr PV_Anlage_1 obj-h529-len 4
attr PV_Anlage_1 obj-h529-reading Work_Capacity
attr PV_Anlage_1 obj-h529-unpack N
attr PV_Anlage_1 obj-h531-format %.0f
attr PV_Anlage_1 obj-h531-reading Inverter_Max_Power
attr PV_Anlage_1 obj-h531-unpack N
attr PV_Anlage_1 obj-h535-revRegs 0
attr PV_Anlage_1 obj-h535-unpack n
attr PV_Anlage_1 obj-h551-revRegs 0
attr PV_Anlage_1 obj-h559-revRegs 0
attr PV_Anlage_1 obj-h56-format %.0f
attr PV_Anlage_1 obj-h56-reading Inverter_state
attr PV_Anlage_1 obj-h56-unpack N
attr PV_Anlage_1 obj-h575-len 1
attr PV_Anlage_1 obj-h575-reading Inverter_Generation_Power_(actual)
attr PV_Anlage_1 obj-h577-len 2
attr PV_Anlage_1 obj-h577-reading Generation_Energy
attr PV_Anlage_1 obj-h577-unpack N
attr PV_Anlage_1 obj-h578-reading Total_energy
attr PV_Anlage_1 obj-h582-reading Actual_battery_charge-discharge_power
attr PV_Anlage_1 obj-h586-format %s
attr PV_Anlage_1 obj-h586-reading Battery_Firmware
attr PV_Anlage_1 obj-h586-unpack N
attr PV_Anlage_1 obj-h588-format %s
attr PV_Anlage_1 obj-h588-len 1
attr PV_Anlage_1 obj-h588-reading Battery_Type
attr PV_Anlage_1 obj-h588-unpack N
attr PV_Anlage_1 obj-h6-reading Inverter_article_number
attr PV_Anlage_1 obj-h6-type STR
attr PV_Anlage_1 obj-h768-len 32
attr PV_Anlage_1 obj-h768-reading Productname
attr PV_Anlage_1 obj-h768-type STR
attr PV_Anlage_1 obj-h800-len 32
attr PV_Anlage_1 obj-h800-reading Power_class
attr PV_Anlage_1 obj-h800-type STR
attr PV_Anlage_1 room Strom->Photovoltaik
attr PV_Anlage_1 sortby 01
attr PV_Anlage_1 stateFormat {sprintf("\
<TABLE>\
\
<TR>\
  <TH ALIGN=\"MIDDLE\" WIDTH=\"20\">Batterie %s</TH>\
  <TH ALIGN=\"MIDDLE\" WIDTH=\"20\">aktuell</TH>\
  <TH ALIGN=\"RIGHT\" WIDTH=\"20\">Hausverbrauch</TH>\
  <TH ALIGN=\"MIDDLE\" WIDTH=\"20\">Erträge</TH>\
</TR>\
\
<TR>\
  <TD ALIGN=\"MIDDLE\" WIDTH=\"20\">\
    Leistung:  %04d W<br>\
    Temp.: %02.1f °C<br>\
    Ladung total: %2d %%<br>\
    Ladung Res.: %04d Wh\
  </TD>\
\
  <TD ALIGN=\"RIGHT\" WIDTH=\"20\">\
    DC total: %05d W<br>\
    <br>\
    <br>\
    PV reserve: %05d W\
  </TD>\
\
  <TD ALIGN=\"RIGHT\" WIDTH=\"20\">\
    von PV: %05d W <br>\
    von Batterie: %05d W<br>\
    vom Netz: %05d W<br>\
    ins Haus: %05d W<br>\
    Netz: %05d W\
  </TD>\
\
  <TD ALIGN=\"RIGHT\" WIDTH=\"20\">\
    Tag: %05d KWh <br>\
    Monat: %05d KWh<br>\
    Jahr: %05d KWh<br>\
    Total: %05d KWh\
  </TD>\
</TR>\
\
</TABLE>\
" , \
(ReadingsVal($name,"Actual_battery_charge_-minus_or_discharge_-plus_Power",0) lt 0) ? "<span style='color:#00FF00'>Laden</span>":"<span style='color:#FF0000'>Entladen</span>" ,\
\
ReadingsVal($name,"Actual_battery_charge_-minus_or_discharge_-plus_Power",0),\
ReadingsVal($name,"Battery_temperature",0) ,\
ReadingsVal($name,"Act_state_of_charge",0) ,\
ReadingsVal($name,"Actual_battery_charge_usable_Power",0) ,\
\
ReadingsVal($name,"Power_DC_Sum","0"),\
ReadingsVal($name,"Total_PV_Power_reserve","0"),\
\
ReadingsVal($name,"Home_own_consumption_from_PV",0) ,\
ReadingsVal($name,"Home_own_consumption_from_battery",0) ,\
ReadingsVal($name,"Home_own_consumption_from_grid",0),\
ReadingsVal($name,"Home_own_consumption_from_PV",0) +ReadingsVal($name,"Home_own_consumption_from_battery",0)+ReadingsVal($name,"Home_own_consumption_from_grid",0),\
ReadingsVal($name,"Total_active_power_(powermeter)",0),\
\
round(ReadingsVal($name,"Daily_yield",0)/1000 ,0),\
round(ReadingsVal($name,"Monthly_yield",0)/1000 ,0) ,\
round(ReadingsVal($name,"Yearly_yield",0)/1000 ,0) ,\
round(ReadingsVal($name,"Total_yield",0)/1000 ,0)\
)}
attr PV_Anlage_1 userReadings Power_DC_Sum:Total_DC_Power.* { ReadingsVal($NAME,"Power_DC1","0")+ReadingsVal($NAME,"Power_DC2","0") },\
\
Total_PV_Power_reserve:Total_DC_Power.* {my $reserve = ReadingsVal($NAME,"Power_DC_Sum","0") * 0.90 - ReadingsVal($NAME,"Home_own_consumption_from_PV","0");;;; ($reserve lt 0)?0:round($reserve,3)  },\
\
Total_DC_Power_Max:Total_DC_Power.* { my $Bat_out = (ReadingsVal($NAME,"Actual_battery_charge_-minus_or_discharge_-plus_current","0")*ReadingsVal($NAME,"Battery_voltage","0"));;;; ($Bat_out gt 0)?ReadingsVal($NAME,"Power_DC_Sum","0") + $Bat_out :ReadingsVal($NAME,"Power_DC_Sum","0") },\
\
Actual_battery_charge_-minus_or_discharge_-plus_Power:Actual_battery_charge_-minus_or_discharge_-plus_current.* {round((ReadingsVal($NAME,"Actual_battery_charge_-minus_or_discharge_-plus_current","0")*ReadingsVal($NAME,"Battery_voltage","0")),0)},\
\
Actual_battery_charge_usable_Power:Act_state_of_charge.* {my $x = (8960*(ReadingsVal($NAME,"Act_state_of_charge","0")-10)/100);;;; ($x lt 0)?0:round($x,0) },\
\
Solar_SolarRadiation:Total_DC_Power.* { ReadingsVal("wetter_wolfskehlen_II","solarRadiation",0) },\
Solar_Correction_Temp:Total_DC_Power.* { my $tempk = -0.39 ;;;; my $temp = ReadingsVal("Heizung","heatSourceIN",0)+10;;;; my $x =  round((1 + ( $temp - 25) * $tempk / 100),3) },\
Solar_East:Total_DC_Power.* { my $x = 13 * 0.310 * ReadingsVal("$NAME","Solar_SolarRadiation",0) * ReadingsVal("$NAME","Solar_Correction_Temp",0) * ReadingsVal("$NAME","Solar_Correction_Factor",0) * Solar_plain(40,-90);;;; ($x lt 0)?0:round($x,0) },\
Solar_South:Total_DC_Power.* { my $x = 6 * 0.310 * ReadingsVal("$NAME","Solar_SolarRadiation",0) * ReadingsVal("$NAME","Solar_Correction_Temp",0) * ReadingsVal("$NAME","Solar_Correction_Factor",0) * Solar_plain(40,0);;;; ($x lt 0)?0:round($x,0) },\
Solar_West:Total_DC_Power.* { my $x = 13 * 0.310 * ReadingsVal("$NAME","Solar_SolarRadiation",0) * ReadingsVal("$NAME","Solar_Correction_Temp",0) * ReadingsVal("$NAME","Solar_Correction_Factor",0) * Solar_plain(40,+90);;;; ($x lt 0)?0:round($x,0) },\
\
Solar_Calculation:Total_DC_Power.* { round( ( ReadingsVal($NAME,"Solar_East",0) + ReadingsVal($NAME,"Solar_South",0) + ReadingsVal($NAME,"Solar_West",0) ) ,0) },\
\
statistics_clean:statistics_output.* { my $x =  ReadingsVal($NAME,"statistics_output",0);;;; $x =~ s/\{"moduleid": "scb:statistic:EnergyFlow", "processdata": \[|id": "|, "unit": "", "value"|^\[|\]\}\]$//g;;;; $x =~ s/moduleid/statistics_00_moduleid/g;;;; $x =~ s/processdata/statistics/g;;;; $x =~ s/\}\, \{/\, /g;;;; return $x }
attr PV_Anlage_1 verbose 0

setstate PV_Anlage_1 \
<TABLE>\
\
<TR>\
  <TH ALIGN="MIDDLE" WIDTH="20">Batterie <span style='color:#FF0000'>Entladen</span></TH>\
  <TH ALIGN="MIDDLE" WIDTH="20">aktuell</TH>\
  <TH ALIGN="RIGHT" WIDTH="20">Hausverbrauch</TH>\
  <TH ALIGN="MIDDLE" WIDTH="20">Erträge</TH>\
</TR>\
\
<TR>\
  <TD ALIGN="MIDDLE" WIDTH="20">\
    Leistung:  0713 W<br>\
    Temp.: 27.3 °C<br>\
    Ladung total: 84 %<br>\
    Ladung Res.: 6630 Wh\
  </TD>\
\
  <TD ALIGN="RIGHT" WIDTH="20">\
    DC total: 00973 W<br>\
    <br>\
    <br>\
    PV reserve: 00000 W\
  </TD>\
\
  <TD ALIGN="RIGHT" WIDTH="20">\
    von PV: 00912 W <br>\
    von Batterie: 00672 W<br>\
    vom Netz: 00000 W<br>\
    ins Haus: 01585 W<br>\
    Netz: 00007 W\
  </TD>\
\
  <TD ALIGN="RIGHT" WIDTH="20">\
    Tag: 00015 KWh <br>\
    Monat: 00608 KWh<br>\
    Jahr: 04841 KWh<br>\
    Total: 05290 KWh\
  </TD>\
</TR>\
\
</TABLE>\


4. Nun endlich das DOIF, in dem die Logik steckt. Einige Parameter und Konfigurationswerte sind im LWP Dummy unter gebracht, damit man nicht direkt ans DOIF muss.
    Dies ist der Stand von 2020.06.18:
     - Es hat sich ergeben, dass der PV-Modus im Fruehling und Sommer nicht wirklich benoetigt wird. Dafuer gibt es jetzt cmd_nr "10 Hohe Priorität im Winter fuer die LWP"
     - Nach einem manuellen PV-Modus, z.B. am WE wenn Besuch da ist, wird der LWP_Button wieder auf off gesetzt
     - Auch neu ist cmd_nr "9 LWP Zwangseinschalten" . Sollte das Brauchwasser noch nicht aufgeheizt sein, wird um die Hysterese erhöht.
       Dies kann passieren, wenn am Tag vorher der PV-Modus lief und dann das Wasser noch knapp über dem Mindestwert ist.
    Das rauf/runter setzen der Brauchwassersolltemperatur ist notwendig, weil der PV-Modus nicht so laeuft, wie er sollte ;-)
    Novelan ist das bekannt, sie werden es aber nicht in der Luxtronik 2.0 korrigieren.

defmod LWP_PV DOIF ################################################################################################################\
## 1 Eigenverbrauch abschalten: wenn Mindestlaufzeit erreicht wurde und Maximallaufzeit pro Tag erreicht ist\
##\
    ([LWP_Counter:pulseTimePerDay] >= [LWP:RunTimePerDay] and\
     [LWP_Counter:pulseTimeIncrement] >= [LWP:RunTimeMin] and\
     [LWP:state] ne "off" and [LWP:LWP_Button] eq "off" )\
\
    ({Log 3, " LWP_PV cmd_1 PV : LWP off"}\
     {fhem("".ReadingsVal("LWP","SetCmdOff",0))}\
     {fhem("set LWP off")}\
     {fhem("set Heizung hotWaterTemperatureTarget 50.0")}\
    )\
################################################################################################################\
## 2 Eigenverbrauch abschalten: wenn Mindestlaufzeit erreicht wurde und die PV Produktion unter dem Mindestbedarf ist\
##\
DOELSEIF\
  ( ([PV_Anlage_1:Total_PV_Power_reserve]+[StromZaehler_Heizung:SMAEM1901401955_Bezug_Wirkleistung]) < [LWP:PowerLimitOff] and\
     [LWP_Counter:pulseTimeIncrement] >= [LWP:RunTimeMin] and\
     [LWP:state] ne "off" and\
     [LWP:LWP_Button] ne "on" )\
\
    ({Log 3, " LWP_PV cmd_2 PV : LWP off"}\
     {fhem("".ReadingsVal("LWP","SetCmdOff",0))}\
     {fhem("set LWP off")}\
     {fhem("set Heizung hotWaterTemperatureTarget 50.0")}\
    )\
################################################################################################################\
## 3 Stop, wenn es nur ein kurzer peak ist. Dieser Do Zweig setzt den wait timer vom Einschaltkommando cmd_4 wieder außerkraft,\
##   wenn wärend der Wartezeit die PV Anlage zuwenig liefert.\
##\
DOELSEIF\
    ([PV_Anlage_1:Total_PV_Power_reserve] < [LWP:PowerLimitOff] and\
     [LWP_PV:wait_timer] ne "no timer" and\
     [LWP_PV:wait_timer] ne "" and\
     [LWP:state] eq "off" )\
\
    ({Log 3, "LWP_PV cmd_3 PV : Stop wait timer LWP"})\
################################################################################################################\
## 4 Eigenverbrauch einschalten: wenn PV Produktion über dem Mindestbedarf ist und die Laufzeit pro Tag noch nicht erreicht ist\
##\
DOELSEIF\
    ([Astro:ObsSeason] ne "Sommer" and [Astro:ObsSeason] ne "Frühling" and\
     [PV_Anlage_1:Total_PV_Power_reserve] >= [LWP:PowerLimitOn] and\
     [[LWP:TimeStart]-[LWP:TimeEnd]] and\
     [LWP:state] eq "off" and\
     [LWP_Counter:pulseTimePerDay] < [LWP:RunTimePerDay] and\
     [Heizung:hotWaterTemperature] < 60 )\
\
    ({Log 3, "LWP_PV cmd_4 : LWP on"}\
     {fhem("".ReadingsVal("LWP","SetCmdOn",0))}\
     {fhem("set LWP on")}\
     {fhem("set Heizung hotWaterTemperatureTarget 60.0")}\
    )\
################################################################################################################\
## 5 Signal für den PV-Modus der LWP einschalten.\
##\
DOELSEIF\
    ([LWP:LWP_Button] eq "on" )\
\
    ({Log 3, "LWP_PV cmd_5 PV : LWP on for manuel PV-Modus"}\
     {fhem("".ReadingsVal("LWP","SetCmdOn",0))}\
     {fhem("set LWP on")}\
     {fhem("set Heizung hotWaterTemperatureTarget 60.0")}\
     )\
################################################################################################################\
## 6 Signal für den PV-Modus der LWP abschalten.\
##\
DOELSEIF\
    ([LWP:LWP_Button] eq "off" and\
     [$SELF:cmd_nr] eq "5"  )\
\
    ({Log 3, "LWP_PV cmd_6 PV : LWP off after manuel PV-Modus"}\
     {fhem("".ReadingsVal("LWP","SetCmdOff",0))}\
     {fhem("set LWP off")}\
     {fhem("set Heizung hotWaterTemperatureTarget 50.0")}\
    )\
################################################################################################################\
## 7 Stop wait Timer für das Abschalten, wenn die LWP beim Starten noch anläuft\
##\
DOELSEIF\
   ([StromZaehler_Heizung:SMAEM1901401955_Bezug_Wirkleistung] > 300 and\
    [Heizung:opStateHeatPump1] eq "Wärmepumpe kommt" and\
    [Heizung:opStateHeatPump3] eq "Pumpenvorlauf" )\
\
     ({Log 3, "LWP_PV cmd_7 : Stop wait timer LWP"})\
################################################################################################################\
## 8 LWP Ende\
##\
DOELSEIF\
   ([StromZaehler_Heizung:SMAEM1901401955_Bezug_Wirkleistung] < 300 and\
    [LWP_Counter:pulseTimeIncrement] >= [LWP:RunTimeMin] and\
    ([Heizung:opStateHeatPump1] ne "Wärmepumpe läuft" or [Heizung:opStateHeatPump3] eq "Luftabtauen" ) and\
    ([$SELF:cmd_nr] eq "4" or [$SELF:cmd_nr] eq "5" or [$SELF:cmd_nr] eq "10") )\
\
    ({Log 3, "LWP_PV cmd_8 : LWP run finished"}\
     {fhem("".ReadingsVal("LWP","SetCmdOff",0))}\
     {fhem("set LWP off")}\
     {fhem("set Heizung hotWaterTemperatureTarget 50.0")}\
     {fhem("setreading LWP LWP_Button off")}\
    )\
################################################################################################################\
## 9 LWP Zwangseinschalten: Sollte das Brauchwasser noch nicht aufgeheizt sein, wird um die Hysterese erhöht.\
##   Dies kann passieren, wenn am Tag vorher der PV-Modus lief und dann das Wasser noch knapp über dem Mindestwert ist.\
##\
DOELSEIF\
   ([Astro:ObsSeason] ne "Sommer" and [Astro:ObsSeason] ne "Frühling" and\
    [[LWP:TimeEnd]] and\
    [Heizung:hotWaterTemperature] < 47 and\
    ([LWP_Counter:pulseTimePerDay] < [Pool:RunTimePerDay] or\
     [LWP_Counter:countsPerDay] eq 0) )\
\
    ({Log 3, "LWP_PV cmd_9 : LWP on for water heating"}\
\
     {fhem("set Heizung hotWaterTemperatureTarget ". (ReadingsVal("Heizung","hotWaterTemperature",46)+4))}\
\
     {Log 3, "LWP_PV cmd_9 : LWP hotWaterTemperatureTarget ".ReadingsVal("Heizung","hotWaterTemperatureTarget",0)}\
    )\
################################################################################################################\
## 10 Hohe Priorität im Winter fuer die LWP\
##    Einschalten, wenn der Pool läuft, der Speicher geladen ist und noch Überschuss da ist.\
##\
DOELSEIF\
    ([Astro:ObsSeason] eq "Winter" and\
     [PV_Anlage_1:Total_PV_Power_reserve] >= 2000 and\
     [shelly02:power_0] > 800 and\
     [PV_Anlage_1:Act_state_of_charge] > 60 and\
     [Heizung:hotWaterTemperature] < 60 and \
     [$SELF:cmd_nr] ne "10" )\
\
    ({Log 3, "LWP_PV cmd_10 : LWP Priorität"}\
     {fhem("set LWP_PV cmd_4")}\
    )\

attr LWP_PV DbLogExclude .*
attr LWP_PV DbLogInclude state,cmd.*,Device,LWP_Status,wait_timer
attr LWP_PV alias LWP_PV
attr LWP_PV cmdState Maximalzeit pro Tag überschritten|Eigenverbrauch aus|Stop wait timer|Eigenverbrauch ein|LWP ein für manuellen PV-Modus|LWP aus nach manuellem PV-Modus|Stop wait timer fuer aus|LWP aus nach PV-Modus|LWP Brauchwasser nachheizen|LWP Priorität
attr LWP_PV do always
attr LWP_PV group PV Eigenverbrauch-Steuerung
attr LWP_PV icon sani_earth_source_heat_pump
attr LWP_PV room Strom->Photovoltaik
attr LWP_PV sortby 01
attr LWP_PV stateFormat state : LWP_Status : Brauchwasser e_Heizung_hotWaterTemperature °C
attr LWP_PV userReadings LWP_Status { ReadingsVal("Heizung","state","") }
attr LWP_PV verbose 5
attr LWP_PV wait 0:10:0:[LWP:PowerLevelMinTime]:0:0:900:0:0



5. Das Logfile mit Werten, die ich bisher benötigt habe.

defmod FileLog_Photovoltaik FileLog ../log/Photovoltaik-%Y-%m.log LWP:state.*|Pool:state.*|Waschmaschine:state.*|Spuelmaschine:state.*|PV_Anlage_1:(Power_DC|Voltage_DC|Total_AC_active_power
|Total_DC_Power|Total_PV_Power_reserve|Home_own_consumption_from|Actual_battery_charge_-minus_or_discharge_-plus_Power|Actual_battery_charge_usable_Power|Battery_temperature|Act_state_of_charge|Inverter_state).*|LWP_PV:state.*|LWP_PV:wait.*|Pool_PV:state.*|Pool_PV:wait.*|Waschmaschine_PV:state.*|Waschmaschine_PV:wait.*|Spuelmaschine_PV:state.*|Spuelmaschine_PV:wait.*|shelly01:(relay|power).*|shelly02:(relay|power)_.*|shelly03:(relay|power).*|shelly04:(relay|power)_.*
attr FileLog_Photovoltaik addStateEvent 1
attr FileLog_Photovoltaik alias Log Eigenverbrauch_Statistik
attr FileLog_Photovoltaik group Logfile
attr FileLog_Photovoltaik logtype text
attr FileLog_Photovoltaik room Strom->Info


6. Mit dieser readingsGroup hat man etwas Überblick und kann auch direkt Werte verändern, damit man nicht immer ins Device springen muss.

defmod rg_LWP_Status readingsGroup <Device>,<Information>,<Wert> LWP:<Status>,state LWP:<PowerLevelMinTime>,PowerLevelMinTime LWP:<PowerLimitOn>,PowerLimitOn LWP:<PowerLimitOff>,PowerLimitOff LWP:<TimeStart>,!TimeStart LWP:<TimeEnd>,!TimeEnd LWP:<RunTimeMin>,RunTimeMin LWP_Counter:<RunTimeMin>,pulseTimeIncrement LWP:<RunTimePerDay>,RunTimePerDay LWP_Counter:<RunTimePerDay>,pulseTimePerDay LWP_PV:<wait>,wait_timer LWP_PV:<TimeStart>,timer_01_c04 LWP_PV:<TimeEnd>,timer_02_c04
attr rg_LWP_Status alias Status LuftWärmePumpe Eigenverbrauch
attr rg_LWP_Status commands {state  => 'state:on,off',\
PowerLevelMinTime => 'PowerLevelMinTime:selectnumbers,60,60,600,0,lin',\
PowerLimitOn => 'PowerLimitOn:selectnumbers,500,500,4000,0,lin',\
PowerLimitOff => 'PowerLimitOff:selectnumbers,500,500,4000,0,lin',\
RunTimeMin => 'RunTimeMin:selectnumbers,300,300,14400,0,lin',\
RunTimePerDay => 'RunTimePerDay:selectnumbers,300,300,28200,0,lin',\
TimeStart => 'TimeStart:time',\
TimeEnd => 'TimeEnd:time'}
attr rg_LWP_Status group PV Status
attr rg_LWP_Status nameStyle style="color:grey"
attr rg_LWP_Status room Strom->Photovoltaik
attr rg_LWP_Status sortby 01
attr rg_LWP_Status style style="font-size:18px"


7. Aktivierung der Geräte mit Shelly 2.5
    Die Leistungsmessung der Shellys läst sich in diesem Zusammenhang auch sehr gut für das Feintuning verwenden.
    Dies ist auch ein Beispiel für sprintf mit HTML.

defmod shelly01 Shelly 192.168.178.54
attr shelly01 alias LWP_Signale
attr shelly01 group PV Eigenverbrauch-Steuerung
attr shelly01 icon taster_ch_1
attr shelly01 mode relay
attr shelly01 model shelly1pm
attr shelly01 room Shelly,Heizung->System,Strom->Photovoltaik
attr shelly01 sortby 02
attr shelly01 stateFormat {sprintf("\
<TABLE>\
\
<TR>\
  <TD VALIGN=\"TOP\" ALIGN=\"LEFT\" WIDTH=\"50\">\
    WebLink: %s\
  </TD>\
\
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"100\">\
    Gesamt 0: %08.2f KWh<br>\
  </TD>\
\
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"70\">\
    Relais 0: %s %06.1f Watt<br>\
  </TD>\
</TR>\
\
</TABLE>\
" ,\
ReadingsVal($name,"WebLink","none") ,\
ReadingsVal($name,"energy_0",0)/1000,\
(ReadingsVal($name,"relay","") eq "off") ? "<span style='color:#FF0000'>off</span>":"<span style='color:#00FF00'>on</span>",\
ReadingsVal($name,"power",0),\
)}
attr shelly01 userReadings WebLink { my $ip=ReadingsVal($NAME,"network","");; $ip =~ s/connected to //gs;; $ip =~ s/<[^>]*>//gs;; return("<html><a href='http://".$ip."/'>WEB</a></html>") }
attr shelly01 webCmd |


7.1 Mitlerweile habe ich die Shell2.5 gegen Shelly1 ausgetauscht. Der Grund war, dass die LWP nur einen Kanal benoetigt und fuer die Waschmaschine konnte der Shelly1 die hohe Leistung besser schalten.

defmod shelly01 Shelly 192.168.178.54
attr shelly01 alias LWP_Signale
attr shelly01 group PV Eigenverbrauch-Steuerung
attr shelly01 icon taster_ch_1
attr shelly01 mode relay
attr shelly01 model shelly1pm
attr shelly01 room Shelly,Heizung->System,Strom->Photovoltaik
attr shelly01 sortby 02
attr shelly01 stateFormat {sprintf("\
<TABLE>\
\
<TR>\
  <TD VALIGN=\"TOP\" ALIGN=\"LEFT\" WIDTH=\"50\">\
    WebLink: %s\
  </TD>\
\
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"100\">\
    Gesamt 0: %08.2f KWh<br>\
  </TD>\
\
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"70\">\
    Relais 0: %s %06.1f Watt<br>\
  </TD>\
</TR>\
\
</TABLE>\
" ,\
ReadingsVal($name,"WebLink","none") ,\
ReadingsVal($name,"energy_0",0)/1000,\
(ReadingsVal($name,"relay","") eq "off") ? "<span style='color:#FF0000'>off</span>":"<span style='color:#00FF00'>on</span>",\
ReadingsVal($name,"power",0),\
)}
attr shelly01 userReadings WebLink { my $ip=ReadingsVal($NAME,"network","");; $ip =~ s/connected to //gs;; $ip =~ s/<[^>]*>//gs;; return("<html><a href='http://".$ip."/'>WEB</a></html>") }
attr shelly01 webCmd |


Und hier noch die weiteren Geraete.

8. Der Wirlpool

defmod Pool_PV DOIF ################################################################################################################\
## 1 Eigenverbrauch abschalten: wenn Mindestlaufzeit erreicht wurde und Maximallaufzeit pro Tag erreicht ist\
##\
([Pool_Counter:pulseTimePerDay] >= [Pool:RunTimePerDay] and\
  [Pool_Counter:pulseTimeIncrement] >= [Pool:RunTimeMin] and\
  [Pool:state] eq "on" and [Pool:Pool_Button] eq "off" )\
\
    ({Log 3, "Pool_PV cmd_1 : Pool off"}\
     {fhem("".ReadingsVal("Pool","SetCmdOff",0))}\
     {fhem("set Pool off")})\
################################################################################################################\
## 2 Eigenverbrauch abschalten: wenn Mindestlaufzeit erreicht wurde und die PV-Produktion unter dem Mindestbedarf ist.\
##   Bei Pool Nutzung und Pflegeprogramm wird nicht abgeschaltet.\
##\
DOELSEIF\
([PV_Anlage_1:Total_PV_Power_reserve] < [Pool:PowerLimitOff] and\
  [Pool_Counter:pulseTimeIncrement] >= [Pool:RunTimeMin] and\
  [Pool:state] eq "on" and \
  [$SELF:cmd_nr] ne "5" and [$SELF:cmd_nr] ne "7" and [$SELF:cmd_nr] ne "10" )\
\
    ({Log 3, "Pool_PV cmd_2 : Pool off"}\
     {fhem("".ReadingsVal("Pool","SetCmdOff",0))}\
     {fhem("set Pool off")} )\
################################################################################################################\
## 3 Stop, wenn es nur ein kurzer Peak ist. Dieser Do Zweig setzt den wait timer vom Einschaltkommando cmd_4 wieder außer kraft,\
##   wenn während der Wartezeit die PV-Anlage zuwenig liefert.\
##\
DOELSEIF\
([PV_Anlage_1:Total_PV_Power_reserve] < [Pool:PowerLimitOff] and\
  [$SELF:wait_timer] ne "no timer" and\
  [$SELF:wait_timer] ne "" and\
  [Pool:state] eq "off" )\
\
    ({Log 3, "Pool_PV cmd_3 : Stop wait timer Pool"})\
################################################################################################################\
## 4 Eigenverbrauch einschalten: wenn PV-Produktion über dem Mindestbedarf ist und PV-Strom ins Netz eingespeist wird\
##    und die Laufzeit pro Tag noch nicht erreicht ist;; Bei über 7000 Watt Einspeisung sofort aktivieren\
##\
DOELSEIF\
(([PV_Anlage_1:Total_PV_Power_reserve] >= [Pool:PowerLimitOn] and\
   [[Pool:TimeStart]-[Pool:TimeEnd]] and\
   [Pool:state] eq "off" and\
   [Pool_Counter:pulseTimePerDay] < [Pool:RunTimePerDay]\
  ) or\
  [PV_Anlage_1:Total_active_power_(powermeter)] <= -7000\
)\
\
    ({Log 3, "Pool_PV cmd_4 : Pool on"}\
     {fhem("set Pool_Counter pulseTimeIncrement 0")}\
     {fhem("".ReadingsVal("Pool","SetCmdOn",0))}\
     {fhem("set Pool on")} )\
################################################################################################################\
## 5 Steckdose für die Benutzung des Pools einschalten.\
##\
DOELSEIF\
([Pool:Pool_Button] eq "on" )\
\
    ({Log 3, "Pool_PV cmd_5 : Pool on for usage"}\
     {fhem("".ReadingsVal("Pool","SetCmdOn",0))}\
     {fhem("set Pool on")} )\
################################################################################################################\
## 6 Steckdose des Pools abschalten.\
##\
DOELSEIF\
([Pool:Pool_Button] eq "off" and\
  [$SELF:cmd_nr] eq "5" or [$SELF:cmd_nr] eq "7")\
\
    ({Log 3, "Pool_PV cmd_6 : Pool off after usage"}\
     {fhem("".ReadingsVal("Pool","SetCmdOff",0))}\
     {fhem("set Pool off")} )\
################################################################################################################\
## 7 Stop wait Timer für das Abschalten, wenn die Pumpe beim Starten noch anläuft\
##\
DOELSEIF\
([shelly02:power_0] > 10 and\
  ([$SELF:cmd_nr] eq "5" or [$SELF:cmd_nr] eq "7" or [$SELF:cmd_nr] eq "9") and\
  [$SELF:wait_timer] ne "no timer" and\
  [$SELF:wait_timer] ne "" and\
  [Pool:state] eq "on" )\
\
    ({Log 3, "Pool_PV cmd_7 : Stop wait timer Pool"})\
################################################################################################################\
## 8 Pool Ende\
##\
DOELSEIF\
([shelly02:power_0] < 10 and\
  ([$SELF:cmd_nr] eq "5" or [$SELF:cmd_nr] eq "7" or [$SELF:cmd_nr] eq "9") )\
\
    ({Log 3, "Pool_PV cmd_8 : Pool run finished"}\
     {fhem("".ReadingsVal("Pool","SetCmdOff",0))}\
     {fhem("set Pool off")}\
     {fhem("setreading Pool Pool_Button off")} )\
################################################################################################################\
## 9 Pflege Zwangseinschaltung: Es muss mindestens einmal pro Tag eingeschaltet werden, auch wenn kein PV Strom vorhanden war.\
##\
DOELSEIF\
([[Pool:TimeEnd]] and\
  ([Pool_Counter:pulseTimePerDay] < [Pool:RunTimePerDay] or\
   [Pool_Counter:countsPerDay] eq 0)\
)\
\
    ({Log 3, "Pool_PV cmd_9 : Pool on for maintanance"}\
     {fhem("set Pool_Counter pulseTimeIncrement 0")}\
     {fhem("".ReadingsVal("Pool","SetCmdOn",0))}\
     {fhem("set Pool on")} )\
################################################################################################################\
## 10 Pflege Zwangseinschaltung bei günstigem Strom nachts im Winter\
##\
DOELSEIF\
([Astro:ObsSeason] eq "Winter" and\
  [Strom_Kosten:aWATTar_Trigger] eq "on" and\
  [22:00-05:00]\
)\
\
    ({Log 3, "Pool_PV cmd_10 : Pool on for maintanance by aWATTar"}\
     {fhem("set Pool_Counter pulseTimeIncrement 0")}\
     {fhem("".ReadingsVal("Pool","SetCmdOn",0))}\
     {fhem("set Pool on")} )\
################################################################################################################\
## 11 Abschaltung bei teurem Strom\
##\
DOELSEIF\
([Astro:ObsSeason] eq "Winter" and\
  [Strom_Kosten:aWATTar_Trigger] eq "off" and\
  [$SELF:cmd_nr] eq "10"\
)\
\
    ({Log 3, "Pool_PV cmd_11 : Pool off after maintanance by aWATTar"}\
     {fhem("".ReadingsVal("Pool","SetCmdOff",0))}\
     {fhem("set Pool off")} )
attr Pool_PV DbLogExclude .*
attr Pool_PV DbLogInclude cmd.*,state,cmd.*,Device,Pool_Pumpe_Status,wait_timer
attr Pool_PV alias Pool_PV
attr Pool_PV cmdState Maximalzeit pro Tag überschritten|Eigenverbrauch aus|Stop wait timer|Eigenverbrauch freigegeben|Pool ein für Benutzung|Pool aus nach Benutzung|Stop wait timer fuer aus|Pool aus|Pflegemodus ohne PV|Strombörse ein|Strombörse aus
attr Pool_PV disable 0
attr Pool_PV do always
attr Pool_PV event-on-change-reading .*
attr Pool_PV group PV Eigenverbrauch-Steuerung
attr Pool_PV icon scene_swimming
attr Pool_PV room Strom->Photovoltaik
attr Pool_PV sortby 11
attr Pool_PV stateFormat state : Pool_Pumpe_Status
attr Pool_PV userReadings Pool_Pumpe_Status { ReadingsVal("shelly02","power_0",0)>10 ? "Pool_Pumpe_laeuft" : "Pool_Pumpe_aus"}
attr Pool_PV verbose 0
attr Pool_PV wait 0:10:0:[Pool:PowerLevelMinTime]:0:0:0:300:0:300


9. Die Waschmaschine, es ist eine sehr alte mit Walzenschalter, sodass man vorhen alles einstellen kann und wenn dann die Steckdose einschaltet geht es einfach los ;-)

defmod Waschmaschine_PV DOIF ################################################################################################################\
## 1 Eigenverbrauch sperren: wenn Mindestlaufzeit erreicht wurde und Maximallaufzeit pro Tag erreicht ist\
##   jedoch nicht wenn manueller Betrieb aktiv ist.\
##\
([Waschmaschine_Counter:pulseTimePerDay] >= [Waschmaschine:RunTimePerDay] and\
  [Waschmaschine_Counter:pulseTimeIncrement] >= [Waschmaschine:RunTimeMin] and\
  [Waschmaschine:state] eq "on" and [Waschmaschine:Waschmaschine_Button] eq "off" )\
\
    ({Log 3, "Waschmaschine cmd_1 : Eigenverbrauch sperren"}\
     {fhem("".ReadingsVal("Waschmaschine","SetCmdOff",0))}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Steckdose ist ausgeschaltet")}\
     {fhem("set Waschmaschine off")}\
    )\
################################################################################################################\
## 2 Eigenverbrauch sperren: wenn Mindestlaufzeit erreicht wurde und die PV-Produktion unter dem Mindestbedarf ist\
##   ausser bei manuellem Einschalten und wenn das Waschprogramm bereits läuft\
##\
## ([PV_Anlage_1:Total_PV_Power_reserve] < [Waschmaschine:PowerLimitOff] and\
##  [Waschmaschine_Counter:pulseTimeIncrement] >= [Waschmaschine:RunTimeMin] and\
##\
DOELSEIF\
([PV_Anlage_1:Total_PV_Power_reserve] < [Waschmaschine:PowerLimitOn] and\
  [Waschmaschine:state] eq "on" and\
  [$SELF:cmd_nr] ne "5" and [$SELF:cmd_nr] ne "7" )\
\
    ({Log 3, "Waschmaschine cmd_2 : Eigenverbrauch sperren"}\
     {fhem("".ReadingsVal("Waschmaschine","SetCmdOff",0))}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Steckdose ist ausgeschaltet")}\
     {fhem("set Waschmaschine off")}\
    )\
################################################################################################################\
## 3 Stop, wenn es nur ein kurzer Peak ist. Dieser Do Zweig setzt den wait timer vom Einschaltkommando cmd_4\
##    wieder außer kraft, wenn während der Wartezeit die PV-Anlage zuwenig liefert.\
##\
DOELSEIF\
([PV_Anlage_1:Total_PV_Power_reserve] < [Waschmaschine:PowerLimitOff] and\
  [Waschmaschine_PV:wait_timer] ne "no timer" and\
  [Waschmaschine_PV:wait_timer] ne "" and\
  [Waschmaschine:state] eq "off" )\
\
    ({Log 3, "Waschmaschine cmd_3 : Waschmaschine stop wait timer"})\
################################################################################################################\
## 4 Eigenverbrauch freigeben: wenn PV-Produktion über dem Mindestbedarf ist und PV-Strom ins Netz eingespeist\
##   wird und die Laufzeit pro Tag noch nicht erreicht ist\
##\
DOELSEIF\
([PV_Anlage_1:Total_PV_Power_reserve] > [Waschmaschine:PowerLimitOn] and\
  [Waschmaschine:state] eq "off" and\
  [[Waschmaschine:TimeStart]-[Waschmaschine:TimeEnd]] and\
  [Waschmaschine_Counter:pulseTimePerDay] < [Waschmaschine:RunTimePerDay] )\
\
    ({Log 3, "Waschmaschine cmd_4 : Waschmaschine freigabe"}\
     {fhem("".ReadingsVal("Waschmaschine","SetCmdOn",0))}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Steckdose ist eingeschaltet")}\
     {fhem("set Waschmaschine on")}\
    )\
################################################################################################################\
## 5 Steckdose manuell für die Benutzung der Waschmaschine einschalten.\
##\
DOELSEIF\
([Waschmaschine:Waschmaschine_Button] eq "on" )\
\
    ({Log 3, "Waschmaschine cmd_5 : Waschmaschine manuell ein"}\
     {fhem("".ReadingsVal("Waschmaschine","SetCmdOn",0))}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Steckdose ist eingeschaltet")}\
     {fhem("set Waschmaschine on")}\
    )\
################################################################################################################\
## 6 Steckdose der Waschmaschine manuell abschalten.\
##\
DOELSEIF\
([Waschmaschine:Waschmaschine_Button] eq "off" and\
  ([$SELF:cmd_nr] eq "5" or [$SELF:cmd_nr] eq "7") )\
\
    ({Log 3, "Waschmaschine cmd_6 : Waschmaschine manuell aus"}\
     {fhem("".ReadingsVal("Waschmaschine","SetCmdOff",0))}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Steckdose ist ausgeschaltet")}\
     {fhem("set Waschmaschine off")}\
    )\
################################################################################################################\
## 7 Statuswechsel wenn das Waschprogramm gestartet ist\
##\
DOELSEIF\
([shelly03:power] > 0 and\
  [shelly03:power_Waschmaschine_avg] < 70 and\
  [$SELF:cmd_nr] ne "7")\
\
    ({Log 3, "Waschmaschine cmd_7 : Waschmaschine Programm gestarted"}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Waschprogramm gestartet")}\
    )\
################################################################################################################\
## 8 Abschalten der Steckdose beim Waschprogramm Ende\
##\
DOELSEIF\
([shelly03:power] == 0 and\
  [shelly03:power_Waschmaschine_avg] > 0 and\
  [$SELF:cmd_nr] eq "7" )\
\
    ({Log 3, "Waschmaschine cmd_8 : Waschmaschine aus"}\
     {fhem("".ReadingsVal("Waschmaschine","SetCmdOff",0))}\
     {fhem("set Waschmaschine off")}\
     {fhem("setreading Waschmaschine Waschmaschine_Button off")}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Waschprogramm beendet")}\
    )\
################################################################################################################\
## 9 Abschalten der Steckdose wenn die Waschmaschine nicht gebraucht wurde\
##\
DOELSEIF\
([PV_Anlage_1:Total_PV_Power_reserve] < [Waschmaschine:PowerLimitOn] and\
  [[Waschmaschine:TimeEnd]-[Waschmaschine:TimeStart]] and\
  [Waschmaschine:state] eq "on" and\
  [$SELF:cmd_nr] ne "5" and [$SELF:cmd_nr] ne "7" )\
\
    ({Log 3, "Waschmaschine cmd_9 : Eigenverbrauch sperren"}\
     {fhem("".ReadingsVal("Waschmaschine","SetCmdOff",0))}\
     {fhem("set Waschmaschine off")}\
     {fhem("setreading Waschmaschine Waschmaschine_Button off")}\
     {fhem("setreading Waschmaschine_PV Waschmaschine_Status Steckdose ist ausgeschaltet")}\
    )
attr Waschmaschine_PV DbLogExclude .*
attr Waschmaschine_PV DbLogInclude state,STATE,cmd.*,Device,Waschmaschine_Status,wait_timer
attr Waschmaschine_PV alias Waschmaschine_PV
attr Waschmaschine_PV cmdState Maximalzeit pro Tag überschritten|Eigenverbrauch gesperrt|Stop wait timer|Eigenverbrauch freigegeben|Waschmaschine manuell ein|Waschmaschine manuell aus|Waschmaschine laeuft|Waschmaschine aus|Eigenverbrauch gesperrt
attr Waschmaschine_PV do always
attr Waschmaschine_PV group PV Eigenverbrauch-Steuerung
attr Waschmaschine_PV icon scene_washing_machine
attr Waschmaschine_PV room Strom->Photovoltaik
attr Waschmaschine_PV sortby 21
attr Waschmaschine_PV stateFormat state : Waschmaschine_Status
attr Waschmaschine_PV verbose 0
attr Waschmaschine_PV wait 0:0:0:[Waschmaschine:PowerLevelMinTime]:0:30:0:60:30


Noch mehr Details kann ich gerne auf Rueckfrage geben, den es aendert sich ja immer etwas

Viele Grüße
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Fritz Muster am 06 August 2019, 12:36:41
Hallo ch.eick,

habe mal ein paar Anmerkungen/Tipps zu Deinem Vorhaben der Eigenverbrauch Steuerung:

1. Sofern Du einen Trinkwasserspeicher hast, den Sollwert um 5-10K erhöhen wenn die PV genug Strom produziert
2. Trinkwassererwärmung nicht direkt über Heizstab machen, Wirkungsgrad ist da 1:1, besser Trinkwasser über sie WP machen, Wirkungsgrad ist da 1:2,irgendwas
3. Raumtemperatur Sollwert der Wärmepumpe um 2-3 K erhöhen wenn die PV genung Strom liefert, damit speicherst Du Wärmeennergie in Wände, Böden, Möbel
4. leichte Nachtabsenkung von Raumtemp Sollwert der Heizung, dann wird bei Tagesanbruch (Sonnenlicht) der Verlust mit Hilfe von PV Strom via Wärmepumpe "aufgeholt"


Grüße Fritz
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 06 August 2019, 13:46:01
Zitat von: Fritz Muster am 06 August 2019, 12:36:41
1. Sofern Du einen Trinkwasserspeicher hast, den Sollwert um 5-10K erhöhen wenn die PV genug Strom produziert
2. Trinkwassererwärmung nicht direkt über Heizstab machen, Wirkungsgrad ist da 1:1, besser Trinkwasser über sie WP machen, Wirkungsgrad ist da 1:2,irgendwas
3. Raumtemperatur Sollwert der Wärmepumpe um 2-3 K erhöhen wenn die PV genung Strom liefert, damit speicherst Du Wärmeennergie in Wände, Böden, Möbel
4. leichte Nachtabsenkung von Raumtemp Sollwert der Heizung, dann wird bei Tagesanbruch (Sonnenlicht) der Verlust mit Hilfe von PV Strom via Wärmepumpe "aufgeholt"

Hallo Fritz,

vielen Dank für Deine Rückmeldung, genau das soll laut Novelan Beschreibung die Heizungsanlage eigenständig machen. In der Zwischenzeit habe ich jedoch bereits erste Tests gemacht und die Novelan LAD9 macht noch nicht was sie soll. Ich bin mit dem Hersteller in Verbindung, jedoch ist noch nicht mehr wie, "Der Volumenstrom ist nicht gegeben" zurück gekommen. Nun habe ich Testergebnisse und Diagramme ein gesendet, auf die noch keine Rückmeldung kam.

Der Plan-B wäre dann die Werte mit dem Luxtronik Modul selber entsprechend umzusetzen, was ich mir jedoch ersparen wollte, wenn die Anlage es doch selber können soll.

   opModeHotWater von Auto auf Party
   hotWaterTemperatureTarget von 50 auf 65 (Maximalwert der LWP)
Eventuell mal kurz die Zirkulation anwerfen, damit es zu einer besseren Durchmischung kommt.

opModeHeating wird im Luxtronik Modul leider nicht zum setzen angeboten

Hier fehlen mir Tipps für Werte, damit "zu 3)" optimal umgesetzt werden kann.
   heatingCurveEndPoint 29.0
   heatingCurveOffset    21.0
Die Nachtabsenkung müsste glaube ich dann direkt eingestellt werden.


zu 2) Mit einem kleinen Heizstab (500-1000 Watt) würde sich trotzdem Leistung im Puffer speichern lassen. Die LWP benötigt ja direkt 3-4,5 KW für den Kompressor.
        Das ist zwar 1:1 jedoch immer noch geeignet auch kleine Einspeisungen für 10ct/KWh zu puffern. Das ist alles so eine Ansichtssache auch in Hinblick auf
        Kompressorverschleiß.
        Momentan habe ich leider nur zwei Heizstäbe mit je 9 KW, die vollkommen überdimensioniert sind eingebaut. Jedoch bin ich gelernter Elektriker und
        könnte die eventuell mit allen 6 Heizwiederständen in Reihe klemmen. Da komme ich dann auf ca 500W, wobei 250W im Heizbereich und 250W im
        Brauchwasserbereich positioniert sind. Da muss ich aber besser erst mal die Schaltung kontrollieren.
zu 3) Kann ich auch erreichen, dass im Puffer etwas mehr für die Nacht gespeichert wird??? Da fehlt mir noch der passende Wert zum verändern. Obwohl, wenn ich die
        Heizkurve verändere wird ja auch im Speicher die Temperatur geändert. Wer kann Da noch genaueres zu beantworten?
zu 4) Unser Haus verträgt auch eine große Nachtabsenkung :-) Der Energiepass sagt A+ .

Neuerdings haben wir zusätzlich auch noch einen Kaminofen, abends extrem gut durch heizt :-) Dann schaltet mein einziges Thermostat aber die FBH ab. Nur das Appartment wird dann noch von der Heizung versorgt und die KWL verteilt die Wärme sehr gut in der gesamten Wohnung.

Gerade habe ich mir die Warmwasserkurven mal angesehen. Sollte es gelingen den Speicher bis maximum aufzuheizen, dann kann ich mir im Sommer fast einen
LWP Zyklus einsparen und das bei Einsatz von PV-Strom wäre ja schon fast ein doppelter Erfolg ;-)

Ich werde in einiger Zeit die Eigenverbrauch Steuerung noch aktualisieren, da ich bereits einige Schritte weiter bin.

Die Anzahl der Geräte hat sich erhöht und die DOIFs habe ich auch noch auf einzelne Phasen erweitert.

Viele Grüße
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Fritz Muster am 06 August 2019, 15:29:28
Zu Detailfragen zur LAD9 kann ich leider nicht weiterhelfen, da müssen andere ran ;-) Wenn Deine WP aber 9 KW hat und Deine Hütte A+ ist dann befürchte ich nichts Gutes!

Zitat von: ch.eick am 06 August 2019, 13:46:01
zu 2) Mit einem kleinen Heizstab (500-1000 Watt) würde sich trotzdem Leistung im Puffer speichern lassen. Die LWP benötigt ja direkt 3-4,5 KW für den Kompressor.
        Das ist zwar 1:1 jedoch immer noch geeignet auch kleine Einspeisungen für 10ct/KWh zu puffern. Das ist alles so eine Ansichtssache auch in Hinblick auf
        Kompressorverschleiß.
        Momentan habe ich leider nur zwei Heizstäbe mit je 9 KW, die vollkommen überdimensioniert sind eingebaut. Jedoch bin ich gelernter Elektriker und
        könnte die eventuell mit allen 6 Heizwiederständen in Reihe klemmen. Da komme ich dann auf ca 500W, wobei 250W im Heizbereich und 250W im
        Brauchwasserbereich positioniert sind. Da muss ich aber besser erst mal die Schaltung kontrollieren.

Bitte entschuldige, aber ich bin bin zu 100% anderer Meinung. Mein 275 Liter TW Speicher benötigt ca. 10KWh Wärmemenge um die Wassertemp. um ca. 10K anzuheben. 10KWh thermisch bedeuten dann bei einem WP-Wirkungsgrad von 2,5 ca. 4 KWh elektrisch. Mit Deinem Ansatz (250W Heizstab) bist Du dann aber seeehr lange im Gange um die sagen wir mal 10 K hinzukriegen. Was Du auch nicht mit einkalkulierst ist Deine 70% Regelung. Der entscheidende Benefit bei PV Anlagen mit 70% Regelung ensteht dann, wenn die Anlage über 70% erzeugt (je mehr je besser). Und das wird bei Deinem Konzept mit 250W Heizstab nicht viel bringen.

Ich denke hydraulisch ist bei Dir auch einiges noch im Argen bzw, schiefgelaufenn. Die Kombi aus Kamin und WP/FBH habe ich bis dato auch noch nie als Erfolgsmodell gesehen. Und ich habe es auch noch nie erlebt, das eine KWL die thermischen sagen wir mal 5 KW eines Ofens effizient im Haus verteilt hat.

Aber zu dem Thema würde ich Dir empfehlen mal im HTD Forum rein zu schauen. "Da werden Sie geholfen."

Zitat von: ch.eick am 06 August 2019, 13:46:01
Gerade habe ich mir die Warmwasserkurven mal angesehen. Sollte es gelingen den Speicher bis maximum aufzuheizen, dann kann ich mir im Sommer fast einen
LWP Zyklus einsparen und das bei Einsatz von PV-Strom wäre ja schon fast ein doppelter Erfolg ;-)

Wenn Du einen guten und vor allem richtig ausgelegten TW Speicher hast, dann reicht eine Speicherladung pro Tag vollkommen aus. Und diese Speicherladung findet dann im Zeitraum 12-14:00 Uhr statt. Aufgeladen auf ca. 50 °C hast Du auch am folgenden Morgen noch gute 40 °C im oberen Bereich was zum Duschen vollkommen reicht.

Viele Grüße
Fritz
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 06 August 2019, 16:10:39
Zitat
Zu Detailfragen zur LAD9 kann ich leider nicht weiterhelfen, da müssen andere ran ;-) Wenn Deine WP aber 9 KW hat und Deine Hütte A+ ist dann befürchte ich nichts Gutes!

Für die Novelan LAD9 stehe ich im Kontakt mit dem Hersteller und habe mich im Haustechnikdialog Forum aktiviert.
Was soll nicht gut sein? Ich habe noch ein Keller Appartment vermietet. Bei bisher tiefsten temperaturen hatte ich nur 5-6 Heizzyklen in 24h.
Ich verstehe die Befürchtung nicht ganz?
Die 9KW sind 2x 9KW Heizstäbe, die ich total überdimensioniert ansehe. Das passiert wenn man bei der Sanierung noch zu wenig Ahnung hat und die Planer angst haben. Bei der Heizstäben habe ich die sicherungen abgeschaltet. Das ist nur für minus 25°C Außentemparatur oder bei wochenlangem LWP Ausfall.

Zitat
Bitte entschuldige, aber ich bin bin zu 100% anderer Meinung. Mein 275 Liter TW Speicher benötigt ca. 10KWh Wärmemenge um die Wassertemp. um ca. 10K anzuheben. 10KWh thermisch bedeuten dann bei einem WP-Wirkungsgrad von 2,5 ca. 4 KWh elektrisch. Mit Deinem Ansatz (250W Heizstab) bist Du dann aber seeehr lange im Gange um die sagen wir mal 10 K hinzukriegen. Was Du auch nicht mit einkalkulierst ist Deine 70% Regelung. Der entscheidende Benefit bei PV Anlagen mit 70% Regelung ensteht dann, wenn die Anlage über 70% erzeugt (je mehr je besser). Und das wird bei Deinem Konzept mit 250W Heizstab nicht viel bringen.

Da bin ich ganz bei Dir. 250 W war nur ein Beispiel für die geringste Einheit, dass das dann ewig dauert ist schon verstanden. Ich dosiere in meinem Plan natürlich die Leistung entsprechend den Möglichkeiten der PV-Anlage. Natürlich mit dynamischer 70% Regelung, um alles raus zu holen. Deshalb habe ich auch diesen Thread eröffnet, um Mitstreiter zu finden.

Zitat
Ich denke hydraulisch ist bei Dir auch einiges noch im Argen bzw, schiefgelaufenn. Die Kombi aus Kamin und WP/FBH habe ich bis dato auch noch nie als Erfolgsmodell gesehen. Und ich habe es auch noch nie erlebt, das eine KWL die thermischen sagen wir mal 5 KW eines Ofens effizient im Haus verteilt hat.

Aber zu dem Thema würde ich Dir empfehlen mal im HTD Forum rein zu schauen. "Da werden Sie geholfen."

Hydrausch ist es echt top. Bei geringem LWP Einsatz sind alle Räume, auch das Bad optimal geheizt. Es werden keinerlei Raumthermostate benötigt, die ich deshalb schon gegen Schakter mit Kontrolleuchte ersetzt habe, um in der Übergangszeit meinen Mieter schon heizen lassen zu können und bei mir einfach abzuschalten.

Der Kamin ist bei uns nachträglich als Luxusobjekt dazu gekommen. Die Abschaltung der FBH ist reiner Selbstschutz :-) wegen der warmen Füße.
Bei uns sind ca. 70% der Wohnfläche ein offener Bereich und natürlich schafft eine KWL nicht alles gleichmäßig zu verteilen. Ein Temperatusanstieg ist jedoch nach kurzer Zeit auch in den anderen Räumen zu messen (analoges Thermometer vom Opa).

Zitat
Wenn Du einen guten und vor allem richtig ausgelegten TW Speicher hast, dann reicht eine Speicherladung pro Tag vollkommen aus. Und diese Speicherladung findet dann im Zeitraum 12-14:00 Uhr statt. Aufgeladen auf ca. 50 °C hast Du auch am folgenden Morgen noch gute 40 °C im oberen Bereich was zum Duschen vollkommen reicht.

Exakt so ist es bei uns. Ich lade jedoch um 14:00 Uhr für 30-40 Minuten, dann habe ich die beste Außentemperatur.
Meine Testwerte mit der Maximalaufheizung durch die LWP über PV-Strom haben ergeben, dass ich damit dann ca. 48h auskomme, also einen intensieveren Lauf der LWP mit günstigem Strom und dann erst wieder zwei Tage später. Ich finde das echt toll.



Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Fritz Muster am 07 August 2019, 07:39:10
Na denn is doch allet dufte wa, Daumen hoch!
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 14 August 2019, 14:19:08
Hallo zusammen,

ich habe dann mal die RAW definitionen im ersten post auf den aktuellen Stand gebracht und noch etwas für die Ansteuerung mit Shelly 2.5 Aktoren ergänzt.
Weitere Schritte folgen dann nach der Lieferung und dem Aufbau der Photovoltaik in ca 5 Wochen.
Anbei noch einige Bilder wie das ganze nun im FHEM aussieht.

Sollte jemand an den weiteren device definitionen interesse haben, so kann er dies gerne hier kund tun.

Viele Grüße
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 06 Dezember 2019, 14:04:30
Hallo zusammen,

hier kommt dann mal ein kleines Update zum Kostal EM410 in Verbindung mit dem Kostal Plenticore 10

Entgegen meinen ersten Informationen muss der EM410 über den rs485 Bus mit dem Plenticore 10 verbunden werden, da nur so die Regelung der Leistung im Haus und zum Speicher möglich ist. Insider munkeln, dass jedoch bereits an der Firmware des Plenticore entwichelt wird, um die Modbus TCP kommunikation stattdessen zu nutzen. Somit musste ich noch den rs485 Bus vom Keller zum Dachboden zwischen den beiden Geräten nachrüsten. Nun läuft alles soweit.

Nun zum Modbus TCP, über das Haus Lan.

Der Plenticore 10 spricht direkt über das Lan das Modbus TCP Protokoll, nachdem man es aktiviert hat. Somit kann man mit dem Modbus Modul im Fhem alle bereitgestellten Werte, inklusieve der des EM410 abrufen.
Die bisherige Definition sieht dann im Fhem für alle Modbus Register so aus:

defmod PV_Anlage_1 ModbusAttr 71 60 192.168.178.18:1502 TCP
attr PV_Anlage_1 alias PV_Einspeisung
attr PV_Anlage_1 comment Kostal Plenticore 10 Plus mit BYD Speicher
attr PV_Anlage_1 dev-h-defFormat %.2f
attr PV_Anlage_1 dev-h-defLen 2
attr PV_Anlage_1 dev-h-defPoll 1
attr PV_Anlage_1 dev-h-defRevRegs 1
attr PV_Anlage_1 dev-h-defUnpack f>
attr PV_Anlage_1 dev-type-STR-format %s
attr PV_Anlage_1 dev-type-STR-len 8
attr PV_Anlage_1 dev-type-STR-revRegs 0
attr PV_Anlage_1 dev-type-STR-unpack a*
attr PV_Anlage_1 group PV Eigenverbrauch
attr PV_Anlage_1 icon sani_solar
attr PV_Anlage_1 obj-h100-reading Total_DC_Power
attr PV_Anlage_1 obj-h104-format %s
attr PV_Anlage_1 obj-h104-reading State_of_energy_manager
attr PV_Anlage_1 obj-h104-revRegs 0
attr PV_Anlage_1 obj-h104-unpack N
attr PV_Anlage_1 obj-h106-reading Home_own_consumption_from_battery
attr PV_Anlage_1 obj-h108-reading Home_own_consumption_from_grid
attr PV_Anlage_1 obj-h110-reading Total_home_consumption_Battery
attr PV_Anlage_1 obj-h112-reading Total_home_consumption_Grid
attr PV_Anlage_1 obj-h114-reading Total_home_consumption_PV
attr PV_Anlage_1 obj-h116-reading Home_own_consumption_from_PV
attr PV_Anlage_1 obj-h118-reading Total_home_consumption
attr PV_Anlage_1 obj-h120-reading Isolation_resistance
attr PV_Anlage_1 obj-h122-reading Power_limit_from_EVU
attr PV_Anlage_1 obj-h124-reading Total_home_consumption_rate
attr PV_Anlage_1 obj-h14-reading Inverter_serial_number
attr PV_Anlage_1 obj-h14-type STR
attr PV_Anlage_1 obj-h144-reading Worktime
attr PV_Anlage_1 obj-h150-reading Actual_cos_phi
attr PV_Anlage_1 obj-h152-reading Grid_frequency
attr PV_Anlage_1 obj-h154-reading Current_Phase_1
attr PV_Anlage_1 obj-h156-reading Active_power_Phase_1
attr PV_Anlage_1 obj-h158-reading Voltage_Phase_1
attr PV_Anlage_1 obj-h160-reading Current_Phase_2
attr PV_Anlage_1 obj-h162-reading Active_power_Phase_2
attr PV_Anlage_1 obj-h164-reading Voltage_Phase_2
attr PV_Anlage_1 obj-h166-reading Current_Phase_3
attr PV_Anlage_1 obj-h168-reading Active_power_Phase_3
attr PV_Anlage_1 obj-h170-reading Voltage_Phase_3
attr PV_Anlage_1 obj-h172-reading Total_AC_active_power
attr PV_Anlage_1 obj-h174-reading Total_AC_reactive_power
attr PV_Anlage_1 obj-h178-reading Total_AC_apparent_power
attr PV_Anlage_1 obj-h190-reading Battery_charge_current
attr PV_Anlage_1 obj-h194-format %.0f
attr PV_Anlage_1 obj-h194-reading Number_of_battery_cycles
attr PV_Anlage_1 obj-h200-reading Actual_battery_charge_-minus_or_discharge_-plus_current
attr PV_Anlage_1 obj-h202-reading PSSB_fuse_state
attr PV_Anlage_1 obj-h208-format %.0f
attr PV_Anlage_1 obj-h208-reading Battery_ready_flag
attr PV_Anlage_1 obj-h210-reading Act_state_of_charge
attr PV_Anlage_1 obj-h212-reading Battery_state
attr PV_Anlage_1 obj-h214-reading Battery_temperature
attr PV_Anlage_1 obj-h216-reading Battery_voltage
attr PV_Anlage_1 obj-h218-reading Cos_phi_(powermeter)
attr PV_Anlage_1 obj-h220-reading Frequency_(powermeter)
attr PV_Anlage_1 obj-h222-reading Current_phase_1_(powermeter)
attr PV_Anlage_1 obj-h224-reading Active_power_phase_1_(powermeter)
attr PV_Anlage_1 obj-h226-reading Reactive_power_phase_1_(powermeter)
attr PV_Anlage_1 obj-h228-reading Apparent_power_phase_1_(powermeter)
attr PV_Anlage_1 obj-h230-reading Voltage_phase_1_(powermeter)
attr PV_Anlage_1 obj-h232-reading Current_phase_2_(powermeter)
attr PV_Anlage_1 obj-h234-reading Active_power_phase_2_(powermeter)
attr PV_Anlage_1 obj-h236-reading Reactive_power_phase_2_(powermeter)
attr PV_Anlage_1 obj-h238-reading Apparent_power_phase_2_(powermeter)
attr PV_Anlage_1 obj-h240-reading Voltage_phase_2_(powermeter)
attr PV_Anlage_1 obj-h242-reading Current_phase_3_(powermeter)
attr PV_Anlage_1 obj-h244-reading Active_power_phase_3_(powermeter)
attr PV_Anlage_1 obj-h246-reading Reactive_power_phase_3_(powermeter)
attr PV_Anlage_1 obj-h248-reading Apparent_power_phase_3_(powermeter)
attr PV_Anlage_1 obj-h250-reading Voltage_phase_3_(powermeter)
attr PV_Anlage_1 obj-h252-reading Total_active_power_(powermeter)
attr PV_Anlage_1 obj-h254-reading Total_reactive_power_(powermeter)
attr PV_Anlage_1 obj-h256-reading Total_apparent_power_(powermeter)
attr PV_Anlage_1 obj-h258-reading Current_DC1
attr PV_Anlage_1 obj-h260-reading Power_DC1
attr PV_Anlage_1 obj-h266-reading Voltage_DC1
attr PV_Anlage_1 obj-h268-reading Current_DC2
attr PV_Anlage_1 obj-h270-reading Power_DC2
attr PV_Anlage_1 obj-h276-reading Voltage_DC2
attr PV_Anlage_1 obj-h278-reading Current_DC3
attr PV_Anlage_1 obj-h280-reading Power_DC3
attr PV_Anlage_1 obj-h286-reading Voltage_DC3
attr PV_Anlage_1 obj-h320-reading Total_yield
attr PV_Anlage_1 obj-h322-reading Daily_yield
attr PV_Anlage_1 obj-h324-reading Yearly_yield
attr PV_Anlage_1 obj-h326-reading Monthly_yield
attr PV_Anlage_1 obj-h38-reading Software-Version_Maincontroller_(MC)
attr PV_Anlage_1 obj-h38-type STR
attr PV_Anlage_1 obj-h384-len 16
attr PV_Anlage_1 obj-h384-reading Inverter_network_name
attr PV_Anlage_1 obj-h384-type STR
attr PV_Anlage_1 obj-h420-reading IP-address
attr PV_Anlage_1 obj-h420-type STR
attr PV_Anlage_1 obj-h428-reading IP-subnetmask
attr PV_Anlage_1 obj-h428-type STR
attr PV_Anlage_1 obj-h436-reading IP-gateway
attr PV_Anlage_1 obj-h436-type STR
attr PV_Anlage_1 obj-h446-reading IP-DNS1
attr PV_Anlage_1 obj-h446-type STR
attr PV_Anlage_1 obj-h454-reading IP-DNS2
attr PV_Anlage_1 obj-h454-type STR
attr PV_Anlage_1 obj-h46-reading Software-Version_IO-Controller_(IOC)
attr PV_Anlage_1 obj-h46-type STR
attr PV_Anlage_1 obj-h514-len 1
attr PV_Anlage_1 obj-h514-reading Battery_actual_SOC
attr PV_Anlage_1 obj-h517-reading Battery_Manufacturer
attr PV_Anlage_1 obj-h517-type STR
attr PV_Anlage_1 obj-h525-format %c
attr PV_Anlage_1 obj-h525-reading Battery_Model_ID
attr PV_Anlage_1 obj-h525-unpack N
attr PV_Anlage_1 obj-h527-format %c
attr PV_Anlage_1 obj-h527-reading Battery_Serial_Number
attr PV_Anlage_1 obj-h529-len 4
attr PV_Anlage_1 obj-h529-reading Work_Capacity
attr PV_Anlage_1 obj-h529-unpack N
attr PV_Anlage_1 obj-h531-format %.0f
attr PV_Anlage_1 obj-h531-reading Inverter_Max_Power
attr PV_Anlage_1 obj-h531-unpack N
attr PV_Anlage_1 obj-h535-revRegs 0
attr PV_Anlage_1 obj-h535-unpack n
attr PV_Anlage_1 obj-h551-revRegs 0
attr PV_Anlage_1 obj-h559-revRegs 0
attr PV_Anlage_1 obj-h56-format %.0f
attr PV_Anlage_1 obj-h56-reading Inverter_state
attr PV_Anlage_1 obj-h56-unpack N
attr PV_Anlage_1 obj-h575-len 1
attr PV_Anlage_1 obj-h575-reading Inverter_Generation_Power_(actual)
attr PV_Anlage_1 obj-h577-len 2
attr PV_Anlage_1 obj-h577-reading Generation_Energy
attr PV_Anlage_1 obj-h577-unpack N
attr PV_Anlage_1 obj-h578-reading Total_energy
attr PV_Anlage_1 obj-h582-reading Actual_battery_charge-discharge_power
attr PV_Anlage_1 obj-h586-format %s
attr PV_Anlage_1 obj-h586-reading Battery_Firmware
attr PV_Anlage_1 obj-h586-unpack N
attr PV_Anlage_1 obj-h588-format %s
attr PV_Anlage_1 obj-h588-len 1
attr PV_Anlage_1 obj-h588-reading Battery_Type
attr PV_Anlage_1 obj-h588-unpack N
attr PV_Anlage_1 obj-h6-reading Inverter_article_number
attr PV_Anlage_1 obj-h6-type STR
attr PV_Anlage_1 obj-h768-len 32
attr PV_Anlage_1 obj-h768-reading Productname
attr PV_Anlage_1 obj-h768-type STR
attr PV_Anlage_1 obj-h800-len 32
attr PV_Anlage_1 obj-h800-reading Power_class
attr PV_Anlage_1 obj-h800-type STR
attr PV_Anlage_1 room Strom->Photovoltaik
attr PV_Anlage_1 sortby 01
attr PV_Anlage_1 stateFormat {sprintf("\
<TABLE>\
\
<TR>\
  <TH VALIGN=\"TOP\" ALIGN=\"MIDDLE\" WIDTH=\"60\">Batterie %s</TH>\
  <TH VALIGN=\"TOP\" ALIGN=\"MIDDLE\" WIDTH=\"60\">aktuell</TH>\
  <TH VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"60\">Hausverbrauch</TH>\
</TR>\
\
<TR>\
  <TD VALIGN=\"TOP\" ALIGN=\"MIDDLE\" WIDTH=\"60\">\
    Leistung:  %04d W<br>\
    Temp.: %02.1f °C<br>\
    Ladung total: %2d %%<br>\
    Ladung Res.: %04d Wh\
  </TD>\
\
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"60\">\
    DC total: %05d W<br>\
    <br>\
    <br>\
    PV reserve: %05d W\
  </TD>\
\
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"60\">\
    von PV: %05d W <br>\
    von Batterie: %05d W<br>\
    vom Netz: %05d W<br>\
    ins Haus: %05d W\
  </TD>\
</TR>\
\
</TABLE>\
" , \
(ReadingsVal($name,"Actual_battery_charge_-minus_or_discharge_-plus_Power",0) lt 0) ? "<span style='color:#00FF00'>Laden</span>":"<span style='color:#FF0000'>Entladen</span>" ,\
\
ReadingsVal($name,"Actual_battery_charge_-minus_or_discharge_-plus_Power",0),\
ReadingsVal($name,"Battery_temperature",0) ,\
ReadingsVal($name,"Act_state_of_charge",0) ,\
ReadingsVal($name,"Actual_battery_charge_usable_Power",0) ,\
\
ReadingsVal($name,"Power_DC1","0")+ReadingsVal($name,"Power_DC2","0"),\
ReadingsVal($name,"Power_DC1","0")+ReadingsVal($name,"Power_DC2","0")-ReadingsVal($name,"Total_AC_active_power","0"),\
\
ReadingsVal($name,"Home_own_consumption_from_PV",0) ,\
ReadingsVal($name,"Home_own_consumption_from_battery",0) ,\
ReadingsVal($name,"Home_own_consumption_from_grid",0),\
ReadingsVal($name,"Home_own_consumption_from_PV",0) +ReadingsVal($name,"Home_own_consumption_from_battery",0)+ReadingsVal($name,"Home_own_consumption_from_grid",0)\
)}
attr PV_Anlage_1 userReadings Total_PV_Power_reserve:Total_DC_Power.* {ReadingsVal($NAME,"Power_DC1","0")+ReadingsVal($NAME,"Power_DC2","0")-ReadingsVal($NAME,"Total_AC_active_power","0")},\
Actual_battery_charge_-minus_or_discharge_-plus_Power:Actual_battery_charge_-minus_or_discharge_-plus_current.* {round((ReadingsVal($NAME,"Actual_battery_charge_-minus_or_discharge_-plus_current","0")*ReadingsVal($NAME,"Battery_voltage","0")),0)},\
Actual_battery_charge_usable_Power:Act_state_of_charge.* {round((8760*(ReadingsVal($NAME,"Act_state_of_charge","0")-10)/100),0)}
attr PV_Anlage_1 verbose 0

Im Anhang sieht man das Ergebnis in der Zeile "PV_Einspeisung"

Weiterhin sind noch zwei userReadings hinzugefügt, die in der Eigenverbrauchssteuerung bzw für die verwendbare Leistung im Speicher sind:

Dieser Wert gibt eine Auskunft über die aktuelle Restleistung, die ohne Speichernutzung gerade noch verbraucht werden könnte. Schaltet man einen
Verbraucher ein, der in diesen Wert passt, dann wird ein etwaiges Laden des Speichers unterbrochen.

Total_PV_Power_reserve:Total_DC_Power.* {ReadingsVal($NAME,"Power_DC1","0")+ReadingsVal($NAME,"Power_DC2","0")-ReadingsVal($NAME,"Total_AC_active_power","0")}


Hier wir der Lade/Entladestrom in Leistung umgerechnet P=U*I  :-)

Actual_battery_charge_-minus_or_discharge_-plus_Power:Actual_battery_charge_-minus_or_discharge_-plus_current.* {round((ReadingsVal($NAME,"Actual_battery_charge_-minus_or_discharge_-plus_current","0")*ReadingsVal($NAME,"Battery_voltage","0")),0)}


Mit dieser Berechnung bekommt man ein Gefühl wieviel Leistung noch im Speicher vorgehalten wird. Bei meiner Konfiguration wird der Speicher bis
maximal 10% entladen, um einer Tiefentladung entgegen zu wirken. Werte größer 0 Wh könnten in die Entscheidung zum Einschalten eines Verbrauchers
einbezogen werden. Der Wert ist als Schätzung zu betrachten, da er von der Nennleistung, bei meinem Speicher 8,76 KW und dem 10% Wert aus geht.
Es werden Wh angegeben, die natürlich auch noch von weitern Faktoren abhängen. Hier wäre zB die Umgebungstemperatur des Speichers, Volllast oder
nur kleine Last zu erwähnen. Ein Erfahrungswert liegt noch nicht vor.

Actual_battery_charge_usable_Power:Act_state_of_charge.* {round((8760*(ReadingsVal($NAME,"Act_state_of_charge","0")-10)/100),0)}




Achtung, ich editiere noch weiter!!!!
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 11 Januar 2020, 10:45:00
Moin,

ich habe den ersten Post mal wieder aktualisiert. Da ist zwar nur das Beispiel fuer die Waermepumpe beschrieben, aber auf Wunsch kann ich auch noch folgende Geraete liefern.

1. Waermepumpe
2. Wirlpool (Softtube) ueber Steckdose An/Aus
3. Waschmaschine ueber Steckdose An/Aus

Steuerungsparameter sind jeweils:

Pool_Button
PowerLevelMinTime
PowerLimitOff
PowerLimitOn
RunTimeMin
RunTimePerDay
SetCmdOff
SetCmdOn
TimeEnd
TimeStart

Ein Logik Beispiel anhand des Pools waere:

1) Eigenverbrauch abschalten: wenn Mindestlaufzeit erreicht wurde und Maximallaufzeit pro Tag erreicht ist

2) Eigenverbrauch abschalten: wenn Mindestlaufzeit erreicht wurde und die PV-Produktion unter dem Mindestbedarf ist. Bei Pool Nutzung und Pflegeprogramm wird nicht abgeschaltet.

3) Stop, wenn es nur ein kurzer PV-Peak ist. Dies setzt den wait timer vom Einschaltkommando wieder außer kraft, wenn während der Wartezeit (PowerLevelMinTime) die PV-Anlage zuwenig liefert.

4) Eigenverbrauch einschalten: wenn PV-Produktion über dem Mindestbedarf ist und PV-Strom ins Netz eingespeist wird und die Laufzeit pro Tag noch nicht erreicht ist.

5) Steckdose für die Benutzung des Pools einschalten.

6) Steckdose des Pools abschalten.

7) Pool Ende wenn die Temperaturregelung stimmt und die Pumpe ausgegangen ist. Der Pool bleibt nach der Benutzung an, bis die Temperatur stimmt.

8) Pflege Zwangseinschaltung: Es muss mindestens einmal pro Tag eingeschaltet werden, auch wenn kein PV Strom vorhanden war.


Bei der Waschmaschine wird anhand des Stromverbrauchs der Waschprogramm Start und das Ende erkannt. Hier kann man die Meldung aufs Handy ankoppeln :-)

Viele Gruesse
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 14 Januar 2020, 14:08:16
EDIT 2020.01.10 : Herzlich willkommen nun sind wir schon drei :-)

Na das ist ja mager :-) Nur ein anderer, der den Thread gut findet...
Dann warte ich doch noch etwas weiter.

Viele Grüße
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 22 Januar 2020, 17:45:48
Soooooo,

hier kommt schon mal der erste Test für den EM410/KSEM mit der modbus tcp Abfrage. Es sind zwar noch nicht alle Werte korrekt, aber das kommt dann als Änderung.
Mit der Firmware 1.1.2 auf dem KSEM werden nun auch die modbus tcp Register gefüllt. Ich hatte da Kontakt mit Kostal, da bisher alle Werte auf Null standen.
Nach dem Aufspielen der Firmware musste auch noch ein Reset des Plenticore durchgeführt werden, da dieser anscheinend die Verbindung über rs485 verloren hatte.

Remote:
Der Reset ist jedoch nicht einfach über die Web Oberfläche möglich. Beim Zurücksetzen auf die Werkseinstellungen wird anschließend ein Reset gemacht, jedoch verliert man dabei die konfigurierten Einstellungen.
Ich habe den Reset dann durch das Neuladen der selben Firmware erzwungen, das ist zwar nicht die Feine Art, jedoch bleiben hierbei alle Einstellungen erhalten.
EDIT 2020.04.02 : Ueber die Plenticore API kann man auch mit einem Python Skript einen Reset durchfuehren. Da bin ich jedoch noch am Testen.

Vorort:
Der Kostal Weg ist der Reset vorort, der im Handbuch beschrieben ist.

Hier nun die ersten KSEM modbus tcp definitionen:

defmod PV_EM410 ModbusAttr 1 60 192.168.178.17:502 TCP
attr PV_EM410 alias PV_Energy_Manager
attr PV_EM410 comment Kostal EM410 Energy Manager
attr PV_EM410 dev-h-defPoll 1
attr PV_EM410 dev-type-INT16-expr $val/100
attr PV_EM410 dev-type-INT16-format %.2f
attr PV_EM410 dev-type-INT16-len 1
attr PV_EM410 dev-type-INT16-unpack n
attr PV_EM410 dev-type-STR32-format %s
attr PV_EM410 dev-type-STR32-len 16
attr PV_EM410 dev-type-STR32-unpack a*
attr PV_EM410 dev-type-UINT16-format %s
attr PV_EM410 dev-type-UINT16-len 1
attr PV_EM410 dev-type-UINT32-format %s
attr PV_EM410 dev-type-UINT32-len 2
attr PV_EM410 dev-type-UINT64-format %s
attr PV_EM410 dev-type-UINT64-len 4
attr PV_EM410 group PV Eigenverbrauch
attr PV_EM410 icon measure_power
attr PV_EM410 obj-h40071-expr $val/10000
attr PV_EM410 obj-h40071-reading M_AC_Current
attr PV_EM410 obj-h40071-type INT16
attr PV_EM410 obj-h40072-reading M_AC_Current_A
attr PV_EM410 obj-h40072-type INT16
attr PV_EM410 obj-h40073-reading M_AC_Current_B
attr PV_EM410 obj-h40073-type INT16
attr PV_EM410 obj-h40074-reading M_AC_Current_C
attr PV_EM410 obj-h40074-type INT16
attr PV_EM410 obj-h40076-reading M_AC_Voltage_LN
attr PV_EM410 obj-h40076-type INT16
attr PV_EM410 obj-h40077-reading M_AC_Voltage_AN
attr PV_EM410 obj-h40077-type INT16
attr PV_EM410 obj-h40078-reading M_AC_Voltage_BN
attr PV_EM410 obj-h40078-type INT16
attr PV_EM410 obj-h40079-reading M_AC_Voltage_CN
attr PV_EM410 obj-h40079-type INT16
attr PV_EM410 obj-h40080-reading M_AC_Voltage_LL
attr PV_EM410 obj-h40080-type INT16
attr PV_EM410 obj-h40081-reading M_AC_Voltage_AB
attr PV_EM410 obj-h40081-type INT16
attr PV_EM410 obj-h40082-reading M_AC_Voltage_BC
attr PV_EM410 obj-h40082-type INT16
attr PV_EM410 obj-h40083-reading M_AC_Voltage_CA
attr PV_EM410 obj-h40083-type INT16
attr PV_EM410 obj-h40085-reading M_AC_Freq
attr PV_EM410 obj-h40085-type INT16
attr PV_EM410 obj-h40086-type INT16
attr PV_EM410 obj-h40087-expr $val*10
attr PV_EM410 obj-h40087-reading M_AC_Power
attr PV_EM410 obj-h40087-type INT16
attr PV_EM410 obj-h40088-expr $val*10
attr PV_EM410 obj-h40088-reading M_AC_Power_A
attr PV_EM410 obj-h40088-type INT16
attr PV_EM410 obj-h40089-expr $val*10
attr PV_EM410 obj-h40089-reading M_AC_Power_B
attr PV_EM410 obj-h40089-type INT16
attr PV_EM410 obj-h40090-expr $val*10
attr PV_EM410 obj-h40090-reading M_AC_Power_C
attr PV_EM410 obj-h40090-type INT16
attr PV_EM410 obj-h40092-reading M_AC_VA
attr PV_EM410 obj-h40092-type INT16
attr PV_EM410 obj-h40093-reading M_AC_VA_A
attr PV_EM410 obj-h40093-type INT16
attr PV_EM410 obj-h40094-reading M_AC_VA_B
attr PV_EM410 obj-h40094-type INT16
attr PV_EM410 obj-h40095-reading M_AC_VA_C
attr PV_EM410 obj-h40095-type INT16
attr PV_EM410 obj-h40097-reading M_AC_VAR
attr PV_EM410 obj-h40097-type INT16
attr PV_EM410 obj-h40098-reading M_AC_VAR_A
attr PV_EM410 obj-h40098-type INT16
attr PV_EM410 obj-h40099-reading M_AC_VAR_B
attr PV_EM410 obj-h40099-type INT16
attr PV_EM410 obj-h40100-reading M_AC_VAR_C
attr PV_EM410 obj-h40100-type INT16
attr PV_EM410 obj-h40102-expr $val/1000
attr PV_EM410 obj-h40102-reading M_AC_PF
attr PV_EM410 obj-h40102-type INT16
attr PV_EM410 obj-h40103-expr $val/1000
attr PV_EM410 obj-h40103-reading M_AC_PF_A
attr PV_EM410 obj-h40103-type INT16
attr PV_EM410 obj-h40104-expr $val/1000
attr PV_EM410 obj-h40104-reading M_AC_PF_B
attr PV_EM410 obj-h40104-type INT16
attr PV_EM410 obj-h40105-expr $val/1000
attr PV_EM410 obj-h40105-reading M_AC_PF_C
attr PV_EM410 obj-h40105-type INT16
attr PV_EM410 obj-h8192-reading ManufacturerID
attr PV_EM410 obj-h8192-type UINT16
attr PV_EM410 obj-h8193-reading ProductID
attr PV_EM410 obj-h8193-type UINT16
attr PV_EM410 obj-h8194-reading ProductVersion
attr PV_EM410 obj-h8194-type UINT16
attr PV_EM410 obj-h8195-reading FirmwareVersion
attr PV_EM410 obj-h8195-type UINT16
attr PV_EM410 obj-h8196-reading VendorName
attr PV_EM410 obj-h8196-type STR32
attr PV_EM410 obj-h8212-reading Productname
attr PV_EM410 obj-h8212-type STR32
attr PV_EM410 obj-h8228-reading SerialNumber
attr PV_EM410 obj-h8228-type STR32
attr PV_EM410 obj-h8244-reading MeasuringInterval
attr PV_EM410 obj-h8244-type UINT16
attr PV_EM410 room Strom->Photovoltaik
attr PV_EM410 sortby 02
attr PV_EM410 verbose 0


Viele Grüße
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 11 Februar 2020, 09:35:16
Hallo zusammen,

aus Dokumentationsgruenden habe ich heute den ersten Thread mal wieder aktualisiert.

Viele Gruesse
   Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 26 März 2020, 12:21:36
Hallo zusammen,
ich habe im grossen weiten Netz mal wieder etwas zur Kommunikation mit dem Plenticore Plus gefunden. Hier schon mal vorab vielen Dank an die Urheber.
Im folgenden handelt es sich nicht um meine Codierung, sondern nur um die Anwendung aus folgender Quelle:
https://stackoverflow.com/questions/59053539/api-call-portation-from-java-to-python-kostal-plenticore-inverter (https://stackoverflow.com/questions/59053539/api-call-portation-from-java-to-python-kostal-plenticore-inverter)

Das bisherige Beispiel zum Auslesen ueber die API des Plenticore

fhem@raspberrypi:~/python/kostal$ cat plenticore_info.py
#####
##
## https://stackoverflow.com/questions/59053539/api-call-portation-from-java-to-python-kostal-plenticore-inverter?answertab=active#tab-top
##
## pip3 install pycryptodome
##

import sys
import random
import string
import base64
import json
import requests
import hashlib
import os
import hmac
from Crypto.Cipher import AES
import binascii

plenticore = sys.argv[1]

try:
    with open('/opt/fhem/python/pwd_plenticore.json', 'r') as f:
        credentials=json.load(f)
except Exception as e:
    print('Something went wrong: {}'.format(e))



USER_TYPE = credentials["username"]
PASSWD = credentials["password"]
BASE_URL = "http://" + plenticore + "/api/v1"
AUTH_START = "/auth/start"
AUTH_FINISH = "/auth/finish"
AUTH_CREATE_SESSION = "/auth/create_session"
ME = "/auth/me"

def randomString(stringLength):
    letters = string.ascii_letters
    return ''.join(random.choice(letters) for i in range(stringLength))

u = randomString(12)
u = base64.b64encode(u.encode('utf-8')).decode('utf-8')

step1 = {
  "username": USER_TYPE,
  "nonce": u
}
step1 = json.dumps(step1)

url = BASE_URL + AUTH_START
headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
response = requests.post(url, data=step1, headers=headers)
response = json.loads(response.text)
i = response['nonce']
e = response['transactionId']
o = response['rounds']
a = response['salt']
bitSalt = base64.b64decode(a)

def getPBKDF2Hash(password, bytedSalt, rounds):
    return hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), bytedSalt, rounds)

r = getPBKDF2Hash(PASSWD,bitSalt,o)
s = hmac.new(r, "Client Key".encode('utf-8'), hashlib.sha256).digest()
c = hmac.new(r, "Server Key".encode('utf-8'), hashlib.sha256).digest()
_ = hashlib.sha256(s).digest()
d = "n=user,r="+u+",r="+i+",s="+a+",i="+str(o)+",c=biws,r="+i
g = hmac.new(_, d.encode('utf-8'), hashlib.sha256).digest()
p = hmac.new(c, d.encode('utf-8'), hashlib.sha256).digest()
f = bytes(a ^ b for (a, b) in zip(s, g))
proof = base64.b64encode(f).decode('utf-8')

step2 = {
  "transactionId": e,
  "proof": proof
}
step2 = json.dumps(step2)

url = BASE_URL + AUTH_FINISH
headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
response = requests.post(url, data=step2, headers=headers)
response = json.loads(response.text)
token = response['token']
signature = response['signature']

y = hmac.new(_, "Session Key".encode('utf-8'), hashlib.sha256)
y.update(d.encode('utf-8'))
y.update(s)
P = y.digest()
protocol_key = P
t = os.urandom(16)

e2 = AES.new(protocol_key,AES.MODE_GCM,t)
e2, authtag = e2.encrypt_and_digest(token.encode('utf-8'))

step3 = {
  "transactionId": e,
  "iv": base64.b64encode(t).decode('utf-8'),
  "tag": base64.b64encode(authtag).decode("utf-8"),
  "payload": base64.b64encode(e2).decode('utf-8')
}
step3 = json.dumps(step3)

headers = { 'Content-type': 'application/json', 'Accept': 'application/json' }
url = BASE_URL + AUTH_CREATE_SESSION
response = requests.post(url, data=step3, headers=headers)
response = json.loads(response.text)
sessionId = response['sessionId']

#create a new header with the new Session-ID for all further requests
headers = { 'Content-type': 'application/json', 'Accept': 'application/json', 'authorization': "Session " + sessionId }
url = BASE_URL + ME
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
authOK = response['authenticated']
if not authOK:
    print("authorization NOT OK")
    sys.exit()

url = BASE_URL + "/info/version"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
swversion = response['sw_version']
apiversion = response['api_version']
hostname = response['hostname']
name = response['name']
print("Connected to the inverter " + name + "/" + hostname + " with SW-Version " + swversion + " and API-Version " + apiversion)

# Auth OK, now send your desired requests


url = BASE_URL + "/auth/me"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))


url = BASE_URL + "/settings"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))


url = BASE_URL + "/modules"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))


url = BASE_URL + "/processdata"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))


url = BASE_URL + "/firmwareupdate/status"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))


url = BASE_URL + "/update/status"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))


url = BASE_URL + "/events/latest"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))

Das Passwort File sieht dann so aus

{
    "username": "user",
    "password": "Das Passwort steht auf dem Typenschild"
}

Ein Aufruf mit nur einer Abfrage koennte dann so aussehen

fhem@raspberrypi:~/python/kostal$ python3 ./plenticore_info.py <Ip-Adresse>
Connected to the inverter PUCK RESTful API/scb with SW-Version 01.13.04122 and API-Version 0.2.0
{
    "active": true,
    "anonymous": false,
    "authenticated": true,
    "locked": false,
    "permissions": [],
    "role": "USER"
}


Auch eine Anbindung an FHEM mit den gelesenen Daten waere als Muster bereits fertig. Ich habe es hier nur noch nicht gelistet.

Fuer das Setzen von Werten steht noch ein Service Request bei Kostal aus, das sollte dann noch etwas dauern :-)
EDIT: Nun ist auch ein Setzen von z.B von [{"moduleid":"devices:local","settingids":["Battery:MinSoc"]}] moeglich.
Ich arbeite dann mal an der FHEM Anbindung...

Viele Gruesse
      Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: stolus am 12 April 2020, 13:46:23
@ch.eick Vielen Dank für den Thread und Deine Infos..
Ich habe gerade meinen EM410 und den Kostal Plenticore mit neuer Software upgedatet.
Und werde mich jetzt an die Integration in FHEM machen.

Ich habe seid kurzer Zeit eine Brauchwasserwärmepumpe die ich abhängig vom Solarstrom schalten möchte.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 12 April 2020, 14:02:35
Na dann passt es ja genau.

Einiges geht jedoch nur über Python:
- Statistiken
- MinSoc setzen
- Plenticore Reset

Gruß Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 01 Mai 2020, 20:44:10
Hast du für das ganze auch eine Visualisierung in Tablet UI gemacht?


Gesendet von iPad mit Tapatalk
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 01 Mai 2020, 21:25:33
Ich nutze nur das fhem Web und konzentriere mich auf die Funktionalität;-)

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 11 Mai 2020, 21:25:10
Hi, ich habe einen anderen Ansatz gewählt, der aber in Teilen zu Deinem zum ähnlichen Ergebnis führt.

Bei mir sorgt eine etwas erweiterte steckerfertige PV (wird bald durch 7 kWh auf dem Dach abgelöst) für die Eingangsseite. Deren Ergebnis wird mit Shellys gemessen. Auf der Netzseite habe ich eine moderne Meßeinrichtung, die zwar nicht rückwärts zählt, aber negative Zahlen bei Einspeisung ins Netz anzeigt. (Zähler: EMH ED300L, Lesekopf von Weidmann Elektronik (ca. 50 Euro)).

Ich steuere zur Zeit 3 Verbraucher dynamisch:

  • Die Tiefkühltruhe
  • Die Heizkreispumpe
  • Eine Steckdose in der Garage, über die einstweilen nur E-Bikes geladen werden
Auch hier kommen Shellys (Plug S / 2.5) zum Einsatz.

Grundsätzlich gilt das Gleiche wie bei Dir: Hysterese für den Solarüberschuss in Sachen Unter- / Überschreitung sowie gekoppelt mit einer Mindestzeit dieses Wertes. Anders als bei Dir muss ich noch zusehen, dass die 3 variablen Verbraucher sinnvoll sequentiell an's (Nicht-)Netz gehen, bzw. davon abfallen.

Dafür habe ich mir einen satten Sack Dummys geschaffen, die einem Momentanzustand entsprechen (plus 50 Watt, plus 100 Watt, plus 500 Watt u.s.w, sowie die negativen Pendants).
Auf diesen Dummys sitzen Watchdogs, die garantieren, dass die Bedingung für eine Mindestzeit erfüllt ist.
Und diese Watchdogs beschreiben dann im positiven Sinne Dummys, die einen Zustand der Stabilität ausdrücken. Also z.B. "plus100isstable130" für 130 Sekunden stabil über 100 Watt. Genauso gibt es ein "plus100isstable100" für 100 Sekunden stabil über 100 Watt. Der 100 Sekunden "Stabilitätsdummy" steuert den ersten Verbraucher, der 130-Sekunden-Stabilitätsdummy den zweiten. Annahme: Nimmt der 1. Verbraucher nicht ab, weil z.B. die Tiefsttemperatur der Tiefkühltruhe erreicht ist, oder beträgt der Überschuss so viel, dass es für beide Verbraucher reicht, triggert auch der 130-Sekunden-Dummy - sonst nicht, weil mit dem Einschalten des 100-Sekunden-Dummys der Überschuss unter 100 Watt abfiel.

Für das Abschalten sind die "Negativstabilitätsdummys" zuständig. So vermeide ich, dass allzu viel Hektik beim schnellen Cumulus-Durchzug ins System kommt.

Also zunächst die erste Ebene: Die Momentanzustände setzen, sowie die "Stabilitäts-Dummys" ggf. resetten:


define SolarUeberschuss notify MT175:power:.* {
my $a=ReadingsVal("MT175","power","");
my $sol=ReadingsVal("solargen", "state",0);
$a-=65 if ($hour>12 && $sol<300 && $sol>70);
fhem("set stromplus0 " . ($a<0 ? "on" : "off"));
fhem("set stromplus50 " . ($a<-50 ? "on" : "off"));
fhem("set stromplus100 " . ($a<-100 ? "on" : "off"));
fhem("set stromplus200 " . ($a<-200 ? "on" : "off"));
fhem("set stromsub50 " . ($a>50 ? "on" : "off"));
fhem("set stromsub100 " . ($a>100 ? "on" : "off"));
fhem("set stromsub200 " . ($a>200 ? "on" : "off"));
fhem("set stromsub1000 " . ($a>1000 ? "on" : "off"));
if ($a>=-100) {
fhem("set stromplus100isstable30 0");
fhem("set stromplus100isstable100 0");
fhem("set stromplus100isstable130 0");
};
if ($a<50) {
fhem("set stromsub50isstable30 0");
fhem("set stromsub50isstable60 0");
};
if ($a>0) {
fhem("set stromplus0isstable30 0");
}
}


2 Hinweise:

  • Ich lege einen "fetten" Notify in der Regel erst mit leerem Perl-Ausdruck (also {} ) an, um ihn dann im Editor der GUI zu befüllen.
  • Der Ausdruck "$a -= 65 ..." in der 4. Zeile verschiebt den Arbeitspunkt am Nachmittag bei schwindender Solarleistung. Nach dem Motto: Lieber jetzt das Gerät auch teilweise mit Netzstrom füttern, statt auf bessere Zeiten etwas später zu hoffen, müssen nicht mehr 100 Watt, sondern nur noch 35 Watt Überschuss für das "100-Watt-Kriterium" da sein

Jetzt exemplarisch die Watchdog-Ebene am Beispiel von stromplus100stable30:

define dummy stromplus100isstable30
define stromplus100stable30 watchdog stromplus100:on 00:00:30 stromplus100:off set stromplus100isstable30 1
attr stromplus100stable30 autoRestart 1
attr stromplus100stable30 regexp1WontReactivate 1


Damit habe ich meine "Stabilitätshysteresen".

Anhand dieser schalte ich nun per Notify und je nach Rahmenvoraussetzungen (würde jetzt zu weit führen, lege ich aber gerne auch noch mal dar) die Verbraucher.

Nur kurz skizziert:

  • Die Tiefkühltruhe ist auf "Brutal kühlen" eingestellt, hat aber einen LaCrosse-Sensor, den FHEM ausliest. In jedem Fall wird bei -17 Grad eingeschaltet. Vor 12 Uhr wird bei noch nicht ausreichendem Solarüberschuss (Prinzip Hoffnung) bei -18 Grad der Strom wieder weggezogen, ansonsten bei -19 Grad. Ist genug Solarüberschuss da, darf die Tiefkühltruhe kühlen, wie sie eingestellt ist
  • Für die HK-Pumpe wird in Abhängigkeit vom weitest geöffneten Ventil (MAX-Thermostate) ein stündliches Laufzeitquota der HK-Pumpe festgelegt: >= 55% heißt 60 Minuten, <15% 0 Minuten. Die HK-Pumpe wird eingeschaltet, wenn das Quota für die laufende Stunde entweder sonst nicht erreicht ist, oder aber Solarüberschuss besteht und noch Quota offen ist
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 12 Mai 2020, 06:23:12
Gratulation für die Umsetzung.

Kannst Du schon etwas zur Einsparung bei der Tiefkühltruhe sagen?

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 12 Mai 2020, 22:09:29
Ich würde es nicht durchhalten, dieses Setup über ein Jahr unverändert zu vermessen :-)

Lass mich schätzen: Die Sonne scheint die Hälfte der Zeit. Anfang und Ende sind aber zu schwach. Dagegen rechne ich, dass das Tiefkühlen mir 2 Stunden schenkt, die ich jetzt mal als ungefähr gleich ansehe. Und dann gibt es die Dunkelmonate sowie die ganz schlechten Solartage. Ob ich die mit einem Drittel oder der Hälfte ansetze? Also zwischen 1/3 und 1/4 würde ich schätzen. Meine Tiefkühltruhe liegt um die 200-250 kW/h, der Ersatz würde sich erst nach 10-12 Jahren rechnen. 200 kW/h sind 60 Euro, also zwischen 15-20 Euro im Jahr. Aber es geht mir um's Prinzip: Ich "gucke oft Stromproduktion", und ich denke, jeder, der seine Solarzellen verfolgt, kennt den Schmerz, wenn der Geschirrspüler ausgerechnet seine 2 kW-Phasen in den Durchzug des Cumulus-Wolkenfeldes legt. Ich ärgere mich auch über Klingeltrafos, die 1,1 Watt brauchen (nur 25 Euro in 10 Jahren) - für etwas, was man mit 0,1 Watt lösen könnte. Mein "Klingeltrafo" ist jetzt ein altes Fritzbox-Netzteil.

Anbei mal die Temperatur/Schalt-Grafik ggü. der Solarproduktion.
Anbei mal Heizung (300 Watt = Brenner, 70 Watt = HK-Pumpe), Verbrauchszahlen und die Tiefkühlschaltung.

Die roten Spikes des Stromverbrauchs sind die Kaffeemaschine, der fette rote Balken ab 9 Uhr die Waschmaschine, die erst mit 2 kW heizt, um dann bis etwa 11:30 Uhr das Schwankungsmuster des "Stopp, Rotieren" durchzieht (etwa 200 Watt Hysterese). Die "Stabilitätszeiten" müssen m.E. so bemessen sein, dass die Kaffeemaschine und eben das Stop/Rotieren der Waschmaschine keine Statusänderung hervorrufen.

P.S. Am besten gefällt mir die Zeit um 10 Uhr: Ein etwa halbstündiges Wolkenloch, die erhöhte Solarproduktion triggert die HK-Pumpe, was wiederum das Anspringen des 300 Watt-Brenners kurz danach auslöst, und die Tiefkühltruhe wird auch geweckt: Und schon laufen bis zu 450 Watt hoch, weil gerade der Strom da ist.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 Mai 2020, 06:49:29
Zitat von: gvzdus am 12 Mai 2020, 22:09:29
Ich würde es nicht durchhalten, dieses Setup über ein Jahr unverändert zu vermessen :-)
Stehen die Werte nicht im Logfile oder besser im DBLog? Mit einem geschickten SQL koenntest Du die Verbraeuche dann aufsummieren und anhand der PV Produktion erkennen, wo die Leistung her kommt.
Ansonsten kannst Du ja nicht erkennen, ob sich der Aufwand lohnt.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: KölnSolar am 13 Mai 2020, 07:09:38
Hallo Ihr Zwei,
Zitatjeder, der seine Solarzellen verfolgt, kennt den Schmerz,
(lach u. zustimm), der Geschirrspüler ist wohl das fürchterlichste elektr. Gerät im Haushalt für den PV-Freund.  ;D
ZitatIch ärgere mich auch über Klingeltrafos
oder über FBH-Stellventile, die im Sommer dauernd ein paar Wh verbrauchen, nur weil sie normal open anstatt normal closed sind.  ::)
ZitatAnsonsten kannst Du ja nicht erkennen, ob sich der Aufwand lohnt.
Daher fahre ich die etwas weniger effektive aber viel einfachere Variante. Ich schalte den Gefrierschrank per twilight. Nachts ist er aus und nach Sonnenaufgang(den Versatz muss jeder selber rausfinden) wird er wieder eingeschaltet. Bringt in der Theorie ein paar Wh.

Grüße Markus

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 Mai 2020, 08:27:47
Hallo Markus
Hast Du kontrolliert wieviel sich die Themperatur über Nacht verändert?

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 13 Mai 2020, 09:07:03
Ja, zumindest unser Tiefkühlschrank würde über Nacht zu warm werden - die -17 Grad bzw. -16 Grad sicherlich an anderen Stellen muss ich für den Ehefrieden schon halten.

Ich habe auch Alerts konfiguriert, um eine Unerreichbarkeit des Shellys zu alarmieren oder - das schon lange - einen Temperaturanstieg über -15 Grad.

ZitatStehen die Werte nicht im Logfile oder besser im DBLog?

Ja, der Shelly landet im Logfile. Aber eine Aussage kann ich ja nur treffen, wenn ich zum Zeitpunkt jedes Stromzählermesswertes (die ggf. sekündlich kommen) eine Entscheidung berechne: "Wie viel war Solar, wie viel Netz?" und das aggregiere. Das mache ich für den Hausverbrauch insgesamt, aber eben nicht für jeden Shelly - und unter einem Jahr stabiler Konfiguration würde ich mich nicht trauen, eine halbwegs allgemeingültige Aussage zu treffen.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 Mai 2020, 09:56:08
Zitat von: gvzdus am 13 Mai 2020, 09:07:03
Ja, zumindest unser Tiefkühlschrank würde über Nacht zu warm werden - die -17 Grad bzw. -16 Grad sicherlich an anderen Stellen muss ich für den Ehefrieden schon halten.
Man sollte bei der Gefriertruhe die niedrigste Temperatur einstellen, damit es ueber Nacht die gewuenschten -17 Grad nicht ueberschreitet. Somit laeuft die Truhe nur tagsueber, wodurch jedoch
der Temperaturanstieg der Nacht wieder herausgeholt werden muss. Hier waere ein Vergleich des Gesamtverbrauches ueber einige Tage schon eine Aussage.

Zitat
zum Zeitpunkt jedes Stromzählermesswertes (die ggf. sekündlich kommen) eine Entscheidung berechne: "Wie viel war Solar, wie viel Netz?" und das aggregiere. Das mache ich für den Hausverbrauch insgesamt, aber eben nicht für jeden Shelly - und unter einem Jahr stabiler Konfiguration würde ich mich nicht trauen, eine halbwegs allgemeingültige Aussage zu treffen.
Den Hausverbrauch liest man doch am Zaehler ab ;-)
Sekuendlich finde ich mit Kanonen auf Spatzen geschossen.
Eine Solaranlage liefert Dir die Werte, wieviel von wo nach wo gelaufen ist. Fuer Balkonmodule ist das natuerlich etwas schwieriger.

Ich habe meine Messungen auf minuetlich getriggert, was selbst bei einer Summierung meinem Anspruch genuegt. Bei einer Summierung ueber Monate lag das nur 2-3 KWh gegenueber dem Zaehlerstand daneben.
Die Ungenauigkeit goenne ich mir ;-) und im Netz bzw. bei den Events ist es dann etwas ruhiger.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 13 Mai 2020, 10:24:54
Ich verstehe Deine Aussage nicht. Einen Verbraucher wie die Tiefkühltruhe kann ich messen. Wenn ich wissen will, wie viel Solarstrom und wie viel Netzstrom er braucht, nützen mir Minuten oder Stundensummen nichts. Für mich als "Balkonbetreiber" mag die Waschmaschine beim Stop-Rotieren-Stop im Saldo bei "Solarproduktion = Hausverbrauch" liegen, der Zähler sieht das leider anders und stellt mir z.B. die Hälfte des Stromverbrauchs beim "Rotieren" als Netzverbrauch in Rechnung, während die andere Hälfte beim Stopp für Nix ins Netz geht. Für die "Dachbetreiber" sind dann taktende Kochgeräte die Spaßbremsen. Daher müsste ich für eine korrekte Aussage "Auf wie viel Solarstrom kriege ich meine Tiefkühltruhe gedrückt?" eben zeitlich genau auflösen.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 Mai 2020, 10:55:39
Stimmt, bei mir spielt der Speicher ja noch rein. Verbrauchswerte von PV pro Gerät ist schwierig.

Edit:
Ich habe mal ein Bild fuer den Leistungsbezug und die Hauptverbraucher, die ich separat Zaehlen kann angehaengt.
Da beide Diagramme immer uebereinander stehen kann man sehr schoen sehen woher die Leistung genommen wurde.
Um 4:30 uhr war der Speicher leer, weil der Tag zuvor eher bescheiden war, ansonsten reicht der Speicher momentan immer.
Bei den Haupverbrauchern ist die blaue Linie "Total_PV_reserve" ein berechneter Wert, den ich fuer das Einschalten weiterer Verbraucher verwende, da steckt noch ein Wirkungsgrad mit drin.
Die brutale Stufe bei Total_DC_Power war die Zwangsladung des Speichers, da hatte ich mal etwas rumgespielt.
Am Tag zuvor war der Automatismus zum Laden nicht so wie ich es mir vorgestellt hatte, den der Speicher war nicht voll und am naechsten Tag war schlechtes Wetter angekuendigt.

@KoelnSolar da muessen wir doch noch eine Wetterprognose basteln ;-)

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: KölnSolar am 13 Mai 2020, 13:15:53
Zitat@KoelnSolar da muessen wir doch noch eine Wetterprognose basteln ;-)
Die Prognose einzubasteln ist ja das kleinere Problem. Eine detaillierte(stundengenaue) Prognose mit hoher Eintrittswahrscheinlichkeit zu bekommen-> unmöglich. Ich nehm da nur das Bsp. mit den plötzlichen Cumuluswolken.

Die Kernfrage ist daher: Mit wieviel Ungenauigkeit will man bei einer Automatisierung leben. Deshalb meine Gefrierschranksteuerung per twilight. Egal, ob sonnig oder Regen. Bei den Großverbrauchern fahr ich auf "Sicht"-> Wettervorhersage beobachten und entscheiden, ob ich Großverbraucher einschalte oder doch lieber 1-2 Tage abwarte.

ZitatHast Du kontrolliert wieviel sich die Themperatur über Nacht verändert?
Natürlich. Ist minimal, so im Gradbereich. Selbst im Winter(also bei ca. 10h ohne Strom). Dabei fällt mir auf, dass ich nur die halbe Wahrheit wiedergegeben habe :-[: Mit zeitlichem Versatz zu twilight schalte ich die Dose ein. Ausgeschaltet wird IMMER um 23 Uhr. Könnte ich mal etwas "intelligenter" gestalten... ::)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 15 Mai 2020, 20:01:19
Zitat von: ch.eick am 13 Mai 2020, 10:55:39

Bei den Haupverbrauchern ist die blaue Linie "Total_PV_reserve" ein berechneter Wert, den ich fuer das Einschalten weiterer Verbraucher verwende, da steckt noch ein Wirkungsgrad mit drin.


Darf ich Fragen wie du diese Reserve berechnest und was du damit anstellst?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Mai 2020, 23:10:48
Zitat von: Mumpitz am 15 Mai 2020, 20:01:19
Darf ich Fragen wie du diese Reserve berechnest und was du damit anstellst?

Das ist noch aus meinen Anfaengen, um einen Wert zu haben, nach dem ich noch Verbraucher zuschalten kann. Bei mir spiel auf der DC Seite noch die Hochvolt Batterie mit rein, die ja auch geladen wird.
Dadurch kann ich nicht nur den Einspeisewert ins Netz verwenden, den das Laden der Batterie hat einen schlechteren Wirkungsgrad als wenn ich die Leistung sofort verwende.
Sollte die Batterie geladen werden, dann verringert sich die Ladeleistung automatisch beim zuschalten des Verbrauchers, ich rutsche jedoch nicht in den Leistungsbezug, den der kostet mehr.

Das ist die Summer der DC Leistung, um den Wirkungsgrad (ca. Wert) des WR verringert abzueglich dessen was ich eh schon verbrauche. Dann wird das ganze noch bei Null etwas angehuebscht :-)
Somit bleibe ich immer schoen etwas unter der PV Kurve.

Total_PV_Power_reserve:Total_DC_Power.* {my $reserve = ReadingsVal($NAME,"Power_DC_Sum","0") * 0.90 - ReadingsVal($NAME,"Home_own_consumption_from_PV","0");; ($reserve lt 0)?0:round($reserve,3)  }


Nun kann ich einfach beim zu steuernden Grossverbraucher diesen Wert verwenden:
- Es gibt jeweils pro Geraet ein PowerLimitOn/Off , um eine Hysterese zu haben, gegen die ich pruefe.
- Dann kann ich die Start und End Zeit definieren
- Natuerlich nur, wenn das Geraet aus ist
- Und wenn die maximale Laufzeit noch nicht erreicht wurde
ganz neu ist die Oder-Bedingung dazu gekommen, weil ich gestern beinahe in die 70 % Regelung gekommen waere :-)
- sobald ueber 70 % Eingespeist wuerde, schalte ich den Verbraucher auf jeden Fall ein, auch wenn er noch nicht innerhalb seiner Zeit ist.

Der Plenticore ist mit dynamischer 70 % Regelung eingestellt und hat dann bereits den gesamten Hausbedarf ueber die 70% Einspeisung verlagert.

DOELSEIF
(([PV_Anlage_1:Total_PV_Power_reserve] >= [Pool:PowerLimitOn] and
   [[Pool:TimeStart]-[Pool:TimeEnd]] and
   [Pool:state] eq "off" and
   [Pool_Counter:pulseTimePerDay] < [Pool:RunTimePerDay]
  ) or
  [PV_Anlage_1:Total_active_power_(powermeter)] <= -7000
)


Im ersten Post Punkte 4.; 8.; 9. ist das ganze DOIF, fuer mehrere Geraete, dokumentiert und ab und an auch mal aktualisiert.

Im anhaengenden Bild kann man erkennen, das z.B. der Pool laeuft und dann die Heizung mit der Warmwasser Bereitung um 14:00 Uhr sich eingeschaltet hat. Daraufhin schaltet sich
der Pool sofort ab, weil er seine Mindestlaufzeit schon Eingeschaltet war aber nicht genuegend PV_Reserve da ist. Durch die Bewoelkung heute schwankt die DC Leistung, sobald aber
wieder genuegend PV_Reserve, fuer eine Mindestzeit, da ist schaltet der Pool wieder dazu. Kleinere DC Einbrueche werden durch die Batterie gepuffert (oberes Diagramm). Nach der
Mindestlaufzeit von 30 Minuten, die ich fuer den Pool vorgewaehlt habe, schaltet er dann wegen dem wiederholten DC Einbruch wieder ab.

Gruss
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: KölnSolar am 16 Mai 2020, 18:35:05
ZitatKönnte ich mal etwas "intelligenter" gestalten... ::)
Hab ich dann auch mal gemacht und eine überraschende Erkenntnis gewonnen: Mein setup für den Gefrierschrank ist ziemlich daneben gewesen. Warum ? Weil die Steuerung per twilight nicht bedacht hat, dass im Sommerhalbjahr die Sonne morgens im "Norden" steht. Sprich, es ist zwar schon schön hell, aber auf den Modulen kommt noch gar  nix an(Ich glaub bei schlechtem Wetter ist der Effekt kleiner, weil dann die diffuse Strahlung größer ist)
Es ist daher besser, und noch einfacher, nur zeitgesteuert zu schalten. In meinem Fall(20° Westausrichtung) von 8-21 Uhr. 13h deshalb, weil ich bei 11h Stillstand die -18° bequem nicht unterschreite. Und - jetzt kommt das aufgezeichnete tatsächliche Verhalten des Gefrierschranks -  es interessant ist, dass morgens durch die Abschaltung ein deutlich höherer Verbrauch stattfindet. Klar muss ja sein, aber so deutlich hatte ich das nun auch wieder nicht erwartet wie sich die Zykluszeiten(sowohl Lauf, als auch Pause) verändern. Und dass es sich erst gegen abend so richtig in einen "Normalzustand" einpendelt.
Laufzeit 56'
25' Pause
Laufzeit 25'
32' Pause
Laufzeit 21'
38' Pause
Laufzeit 19'
40' Pause
Laufzeit 18'
44' Pause
Laufzeit 17'
49' Pause
Laufzeit 16'
50' Pause
Laufzeit 17'
51' Pause
Laufzeit 16'
54' Pause
Laufzeit 16'
.
.


Und damit nur die Solarenthusiasten das Thema aufgreifen: Mein Gefrierschrank verbraucht 0,4kWh/Tag. Nehmen wir an, dass 11/24 aus der Nacht in den "Erzeugungszeitraum" verschoben werden und das idealerweise jeden Tag, dann wird der Eigenverbrauch um 67kWh/Jahr erhöht.

Bei Speichern sollte der Gefrierschrank gar kein Thema sein(vielleicht fürs Winterhalbjahr) und bei "Balkonanlagen" wird man tatsächlich einen viel feineren Mechanismus benötigen wie von gvzdus vorgestellt.

Sonniges WE
Markus
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Mai 2020, 19:26:46
Super, danke für den Test.
Ich leite für mich dann ab, das es tatsächlich bei ner Speicher Anlage nichts bringt.
Ich komme momentan mit ca 4Kwh im Speicher aus der Nacht, da ist dann noch trotz Kühlschrank einiges an Luft drin.

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 16 Mai 2020, 21:28:53
Bei einem Kühlschrank mit 0,4 kWh/Tag wirst Du höchstens 0,1 kWh sparen, eher weniger. Denn mein "Trick" ist ja nur, tagsüber die fehlende Batterie zu kompensieren, indem (möglichst intensives) Kühlen Solardürrephasen überbrücken kann - aber die Cumuli sitzt Du vermutlich mit Deinem Akku aus. Und daneben idealerweise mit -24 bis -23 Grad in die Dunkelheit zu gehen, was aber bei meiner Kühltruhe nur 4,5 Stunden "Ruhe" bringt: In der Zeit geht es von -24 bis -17. Also eher 1/6 des Tagesbedarfs als 1/4.

Wie genau puffert Deine Batterie eigentlich die Cumuli weg? Springt der in Sekunden und weniger ein? Neben den hohen Preisen halten mich die erheblichen Unterschiede, die die PV-Speicher-Studie der HTW Berlin ausweist, noch von der Überzeugung ab.

Ich kann demnächst noch einmal den "Bierkühlschrank" vermessen. Der wurde letztes Jahr gegen Nachmittag mit Solarüberschuss eingeschaltet, und ab 21/22 Uhr wieder abgeschaltet. Der Anlaufverbrauch der initialen Phase ist in Höhe und Dauer gewaltig: Die Faustregel: "Kühlschrank abschalten lohnt sich erst ab 24 Stunden" passt pi mal Daumen komplett - in diesem Fall bei einem etwa 7 Jahre alten Gerät.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 17 Mai 2020, 10:54:37
Zitat von: gvzdus am 16 Mai 2020, 21:28:53
Wie genau puffert Deine Batterie eigentlich die Cumuli weg? Springt der in Sekunden und weniger ein? Neben den hohen Preisen halten mich die erheblichen Unterschiede, die die PV-Speicher-Studie der HTW Berlin ausweist, noch von der Überzeugung ab.
Bei meinem Plenticore 10 Plus mit der BYD Hochvolt Batterie ist diese an einem String des Plenticore angeschlossen. Somit obliegt die Steuerung der Batterie direkt dem WR. Ich kann keine Schwankungen im Hausnetz bei der Versorgung feststellen. Der WR regelt die Einspeisung, bzw. den Bezug im Bereich von +/- einigen Watt am Zaehler, wenn der WR nur den Hausbedarf decken kann.
Ich habe zufaellig gestern meine Diagramme nochmals ueberarbeitet, man lernt ja immer dazu :-) Im Anhang ist dann auch mal das von gestern, wo alle Verbraucher aktiv waren, ich habe extra fuer Euch auch mal gewaschen.

Neu ist im Diagramm Bat_usable, was ich aus der Nennleistung und dem Ladezustand - 10% (Verluste) berechnet habe.

Actual_battery_charge_usable_Power:Act_state_of_charge.* {my $x = (8960*(ReadingsVal($NAME,"Act_state_of_charge","0")-10)/100);; ($x lt 0)?0:round($x,0) }

Und Total_DC_Max, was die DC Leistung inkl. der Batterieladung darstellt. Hier hatten mich immer die komischen Stufen im Diagramm gewundert, bis ich darauf kam, dass hier die Batterie geladen wird.

Total_DC_Power_Max:Total_DC_Power.* { my $Bat_out = (ReadingsVal($NAME,"Actual_battery_charge_-minus_or_discharge_-plus_current","0")*ReadingsVal($NAME,"Battery_voltage","0"));; ($Bat_out gt 0)?ReadingsVal($NAME,"Power_DC_Sum","0") + $Bat_out :ReadingsVal($NAME,"Power_DC_Sum","0") }


Nun zum Diagramm:
03:30 Uhr ist die Heizung mal angesprungen und aus der Batterie bedient worden
10:00 Uhr hat die Batterieladung begonnen und man sieht den Zacken bei Total_DC_Power.
          Zu beachten waere hier, das Total_PV_reserve  nicht einknickt, sollte ein Verbraucher bereit sein, kann er auch noch von der Batterieladung bedient werden.
          Besser direkt verbrauchen, als einmal rein und wieder raus aus der Batterie. Die weisse Flaeche zwischen Total_DC_Power und Total_DC_Max geht in die Batterie.
          Um 15:00 Uhr ist noch mal ein Einbruch bei Total_DC_Power, dieser negative Peak ist der letzte Ladungsstoss, um die Batterie auf 100 % zu heben.
12:30 Uhr der Pool startet (gelb)
14:00 Uhr Die LWP fuer das WW startet. Im vergleich zu einer vorherigen Beschreibung in diesem Thread, reicht hier die Total_DC_Power fuer beide Geraete.
          Der Pool schaltet nicht ab.
17:15 Uhr die Waschmaschine startet mit dem Aufheizen (lila)
          Im Leistungsbezug Diagramm kann man nochmals weisse Stellen erkennen, die in die Batterie gehen.
          An der brauen Linie sieht man leichte Schwankungen wieder zurueck auf 100%
20:00 Uhr die Batterie uebernimmt den Hausverbrauch, was anhand von Bat_use und dem abnehmenden Bat_usable zu erkennen ist.

Im Kostal plenticore 10 Plus ist die Batterie mit "MinSoc 15 %" und automatischer Batteriesteuerung eingestellt. Der Forecast bei Kostal fuer die Batterie Ladung wird ohne Internet Zugang mit einem eigenen 14 Tage Algorithmus berechnet.

Mit einem Python Skript kann ich mitlerweile die automatische Batteriesteuerung und den MinSoc Wert umstellen, wodurch ich bei schlechter Wetterlage am naechsten Tag, auch ein Laden erzwingen kann. Das muss ich leider mangels Forecast im Moment noch manuell machen, jedoch reicht dann die Batterie auch an schlechten Tagen noch um PV-Mangel auszugleichen. Man moechte ja 100% autark sein ;-)

Gruss
    Christian


Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: KölnSolar am 22 Mai 2020, 09:14:29
Kurzes Update zum Thema Gefrierschranksteuerung:
Ich hatte ja oben spekuliert, dass bei bewölktem Wetter die diffuse Strahlung in der Sonnenaufgangszeit deutlich höher ist als an wolkenlosen Tagen. Ich kann das nun bestätigen und bin mal wieder über das Maß überrascht:
Heute(bedeckt) 7 Uhr ca. 50W/kWp im Gegensatz zu gestern ca. 25 W/kWp. Also ganz bedeutend für den Einschaltzeitpunkt, da in meinem Fall gestern gerade mal die Grundlast abgedeckt u. es somit noch zu früh für den Gefrierschrank war, während ich ihn heute hätte problemlos schon mit Solarstrom hätte betreiben können. Zwischen sonnigen und bewölkten Tagen ist der Einschaltzeitpunkt also dicker Daumen um 1h unterschiedlich.
Grüße Markus
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 22 Mai 2020, 09:19:50
Zitat von: KölnSolar am 22 Mai 2020, 09:14:29
Kurzes Update zum Thema Gefrierschranksteuerung:
Ich hatte ja oben spekuliert, dass bei bewölktem Wetter die diffuse Strahlung in der Sonnenaufgangszeit deutlich höher ist als an wolkenlosen Tagen. Ich kann das nun bestätigen und bin mal wieder über das Maß überrascht:
Heute(bedeckt) 7 Uhr ca. 50W/kWp im Gegensatz zu gestern ca. 25 W/kWp. Also ganz bedeutend für den Einschaltzeitpunkt, da in meinem Fall gestern gerade mal die Grundlast abgedeckt u. es somit noch zu früh für den Gefrierschrank war, während ich ihn heute hätte problemlos schon mit Solarstrom hätte betreiben können. Zwischen sonnigen und bewölkten Tagen ist der Einschaltzeitpunkt also dicker Daumen um 1h unterschiedlich.
Moin, und im Diagramm kann ich auch sehen, dass es nicht soooo stark schwankt. Berechnest Du Dir auch eine Einschaltschwelle, bei mir Total_PV_Power_reserve, dann waere er doch auch eingeschaltet worden?
Die kleinen blauen Peaks heute Morgen waren der Wasserkocher und die Kaffeemaschine, die kurz von der Batterie unterstuetzt wurden.
Zum Vergleich mal heute und gestern.
Gruss Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 22 Mai 2020, 10:06:43
Für mich gilt das nicht: Meine Solarzellen sind ostsüd-ausgerichtet. Da komme ich heute - bedeckter Himmel - nur auf etwa die Hälfte an Leistung:
Beispiele:
2020-05-20_06:30:05  5.20%
2020-05-21_06:30:08  5.96%
2020-05-22_06:30:10  2.85%

2020-05-20_07:00:23  9.61%
2020-05-21_07:00:28 10.86%
2020-05-22_07:00:22  4.32%

2020-05-20_07:30:26 18.76%
2020-05-21_07:30:02 21.20%
2020-05-22_07:30:09  4.44%


Aber warum schaltest Du überhaupt fix den Kühlschrank ein und nicht dynamisch, sobald Du 100 Watt Überschuss für Zeit X anliegen hast, spätestens aber um XY Uhr? Du musst den Zeitpunkt doch laufend korrigieren.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: KölnSolar am 22 Mai 2020, 11:03:02
ZitatBerechnest Du Dir auch eine Einschaltschwelle, bei mir Total_PV_Power_reserve, dann waere er doch auch eingeschaltet worden?
ZitatAber warum schaltest Du überhaupt fix den Kühlschrank ein und nicht dynamisch, sobald Du 100 Watt Überschuss für Zeit X anliegen hast, spätestens aber um XY Uhr? Du musst den Zeitpunkt doch laufend korrigieren.
Nö. Ganz simpel: 8 Uhr einschalten. Alles andere ist meines Erachtens viel zu kompliziert(=fehleranfällig), um den gewünschten Effekt zu erreichen.
1. Lieblingsargument: Es gibt keine Schwelle, die nicht vielleicht ein paar Sekunden später bereits wieder wg. einer Wolke unterschritten wird.
2. Und in der "schlechten Jahreszeit" erreicht man noch nicht einmal die Schwelle, weshalb dann ein zusätzlicher Automatismus eingreifen muss, der mit Bezugsstrom den Schrank runterkühlt.
3. Meine obige Statistik belegt, dass u.U. der Schrank mit dem letzten Sonnenstrahl nicht ausreichend für die Nachtabschaltung runtergekühlt wurde. Also muss er dann irgendwann wieder vor Sonnenaufgang mit ner Menge Bezugsstrom runtergekühlt werden.

Bei "mit Speicher" ist das völlig anders zu betrachten !.
Ansonsten ist wg. 2. u. 3. entweder eine wieder anfällige Temperaturmessung vorzunehmen oder ein Automatismus, der einer erfahrungsgemäßen max. Ausschaltdauer entgegenwirkt.

Daher mein Motto: keep ist simpel: 8 Uhr an, 21 Uhr aus  Im Sommer funktioniert das perfekt. Und im Winter, wo es nicht mit dem Sonnenaufgang funktioniert, würde es auch mit einem komplizierten Automatismus nicht funktionieren, da nunmal keine ausreichende PV-Leistung.

ZitatMeine Solarzellen sind ostsüd-ausgerichtet. Da komme ich heute - bedeckter Himmel - nur auf etwa die Hälfte an Leistung
Logisch. Mein Beispiel ist ja Südwest. Deshalb ist es bei Südost genau umgekehrt: Nach Uhrzeit gesteuert muss sich der früheste Einschaltzeitpunkt an bedecktem Himmel orientieren. Bei sonnigem Wetter ginge es auch 1h früher. Und insgesamt ist der Zeitpunkt eh viel früher, so dass abends auch viel früher abgeschaltet werden kann. Ich denke, dass bei Südost die bei mir ursprüngliche twilight-Abhängigkeit Sinn macht. Bei Südwest aber eben nicht, weil die Sonne im "Nordosten" aufgeht.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 22 Mai 2020, 11:56:14
Mit Speicher stellt sich das definitiv anders dar. Aber: Die Temperatur der TK-Truhe würde ich schon überwachen - habe ich lange vor der Steuerung gemacht - alleine um herauszufinden, wie das Alt-Gerät bei welcher Einstellung arbeitet.

Anbei mal meine Zeilen, Quelle ist ein LaCrosse-Sensor namens ug_tiefkuehl_m1, Stromsteuerung über "tiefkuehl_shelly".
Folgende Fehlerzustände werden überwacht:

  • TK-Truhe zu warm
  • Keine Temperatur erfasst (Batterie im LaCrosse-Sensor im Eimer?)
  • Keine Wifi-Verbindung zum Shelly (also ggf. Daueraus => Ärger)


define TiefkuehlDummy dummy
attr TiefkuehlDummy event-on-change-reading state

define TiefkuehlTemp notify ug_tiefkuehl_m1:temperature:.* { if(ReadingsVal("ug_tiefkuehl_m1","temperature","") > -15) { fhem("set TiefkuehlDummy zuwarm") } else { if(ReadingsVal("ug_tiefkuehl_m1","temperature","") < -17) {fhem("set TiefkuehlDummy ok") }}}

define TiefkuehlTempTimeWatch watchdog ug_tiefkuehl_m1:temperature.* 00:10:00 ug_tiefkuehl_m1:temperature.* set TiefkuehlDummy noTempSig
attr TiefkuehlTempTimeWatch autoRestart 1

define TiefkuehlWifiTimeWatch watchdog tiefkuehl_shelly:relay_0_power.* 00:08:05 tiefkuehl_shelly:relay_0_power.* set TiefkuehlDummy noWifiSig
attr TiefkuehlWifiTimeWatch autoRestart 1

define TiefkuehlAlertTemp notify TiefkuehlDummy:zuwarm { fhem("set Telegram message Achtung, die Kühltruhe im Keller ist zu warm: ".ReadingsVal("ug_tiefkuehl_m1","temperature","")."°C!") }
define TiefkuehlAlertNoTempSig notify TiefkuehlDummy:noTempSig { \
  fhem("set Telegram message Achtung, keine Temperatursignale von der Kühltruhe im Keller seit " . ReadingsTimestamp("ug_tiefkuehl_m1","temperature", 0) );;\
  fhem ("set tiefkuehl_shelly on");; \
}
define TiefkuehlAlertNoWifiSig notify TiefkuehlDummy:noWifiSig { fhem("set Telegram message Achtung, keine WLAN-Verbindung zur Kühltruhe im Keller") }

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 22 Mai 2020, 12:00:28
Hachjaaa, es geht doch nichts ueber genuegend Leistung, ausser noch mehr Leistung ;-)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: KölnSolar am 22 Mai 2020, 12:34:18
ZitatTK-Truhe würde ich schon überwachen
Klar. Ich auch. Nur eben nicht mit einem Thermometer, sondern einer Messsteckdose. Da genügt dann ein watchdog-Einzeiler.  ;) Erspart einem ein Loch in der Dämmung für einen Fühler zu finden oder gar zu bohren bzw. bei Funkthermometer im Schrank die Funkprobleme zu lösen(und die Lebensdauer der Batterien u./o. des Geräts stelle ich mir bei dauerhaft -18 auch etwas problematisch vor).

Einziger Nachteil: "Tür offen" wird nicht bemerkt.  >:( Da hilft aber Strafandrohung gegen... 8)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 26 Mai 2020, 20:30:21

Hallo Christian

Ich werde in wenigen Tagen meine PV Anlage installieren und habe mich für eine Plenticore Plus samt BYD 10.2 kWh Speicher entschieden. Ich glaube eine ziemlich ähnliche Konfiguration wie du sie im Einsatz hast. Mir gefällt dein Ansatz der Eigenverbrauchssteuerung sehr gut und habe vor, dies bei mir ähnlich, angepasst auf meine Begebenheiten, einzurichten. Leider blicke ich noch nicht bei ganz allem durch, sodass möglicherweise ein paar Fragen auf Dich zukommen werden.

Meine erste Frage bezieht sich nun auf die Spühlmaschine. Wie hast du das umgesetzt? Wird diese von Hand auf eine Zeit programmiert, bei welcher voraussichtlich genug PV Strom zur Verfügung steht. Oder hast du es mit einer Leistungsmessdose realisert?

Bin gespannt auf deine Ausführung.

mumpitz
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 26 Mai 2020, 22:27:48

Meine erste Frage bezieht sich nun auf die Spühlmaschine. Wie hast du das umgesetzt? Wird diese von Hand auf eine Zeit programmiert, bei welcher voraussichtlich genug PV Strom zur Verfügung steht. Oder hast du es mit einer Leistungsmessdose realisert?

Genau die ist noch nicht integriert:-)

Die Waschmaschine wird über die Steckdose aktiviert, da sie alt ist und einen Walzenschalter hat. Den Start und Stop erkenne ich am Stromzähler des Shelly.

Ist Dein Speicher nicht etwas sehr groß?
Bei 8,9 KW komme ich noch mit 4 KW aus der Nacht. Im Winter wird mein Speicher nicht immer voll, da bräuchte ich es für die LWP nachts.

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 26 Mai 2020, 22:49:33
Zitat von: ch.eick am 26 Mai 2020, 22:27:48

Meine erste Frage bezieht sich nun auf die Spühlmaschine. Wie hast du das umgesetzt? Wird diese von Hand auf eine Zeit programmiert, bei welcher voraussichtlich genug PV Strom zur Verfügung steht. Oder hast du es mit einer Leistungsmessdose realisert?


Ist Dein Speicher nicht etwas sehr groß?
Bei 8,9 KW komme ich noch mit 4 KW aus der Nacht. Im Winter wird mein Speicher nicht immer voll, da bräuchte ich es für die LWP nachts.

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk

Guten Abend
Ich habe aktuell, bei diesen Temperaturen, eine ungefähre Grundlast ohne irgendwelche zusätzlichen Geräte von ca 6-7kWh. Durch den Speicher sollte es möglich sein, dazu noch ca. 1 Gerät über den Speicher laufen zu lassen (z.B. Geschirrspülmaschine, Waschmaschine, Entfeuchter o.ä)
So müssten wir unser Verhalten nicht allzufest umstellen und sind flexibler in der Gestaltung unserer Geräte Laufzeiten. Da zudem noch eine Förderung ausbezahlt wird, haben wir uns für die 10.2 kWh Variante entschieden.


Gesendet von iPad mit Tapatalk
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 26 Mai 2020, 23:50:42
6,5 kWh / Tag entspricht 270 Watt. Du rechnest vermutlich anders: Bei Dir sind vermutlich Kühlschrank, Pumpen, Gefriertruhe etc. "Grundlast". Mein Grundverbrauch in diesem Sinne - im Urlaub - liegt bei 2,7 kWh, inkl. einer Solarpumpe, allerdings im Oktober bestimmt. Es könnte also ökonomisch vor allem sinnvoll sein, da mal die Ursache zu suchen. Bei mir ist Grundlast ziemlich simpel: 70 Watt "richtige Grundlast" (Kabel-Internet, Raspi und Co., Standby, 10 Watt die Ölheizung), 70 Watt Tiefkühlschrank, 70 Watt Kühlschrank, 80 Watt Solarpumpe, 70 Watt HK-Pumpe.

Von den genannten 3 Verbrauchern (Waschmaschine, Spülmaschine, Entfeuchter) würde mir nur der Entfeuchter einfallen, denn Waschmaschine & Spülmaschine sind erstens ein Bequemlichkeitseingriff, zweitens, wenn sie nicht "intelligent" (= elend teuer) oder alt sind, kaum mit einem Shelly o.ä. fernsteuerbar. Kriegst Du denn den Entfeuchter in einen Modus "Bei Strom an los!"? Ich habe einen Entfeuchter, der bei Strom-"Ausfall" in den Off-Modus geht.

Heute war bei mir ein Tag, wo alles ziemlich perfekt geklappt hat, sodass ich das aus lauter selbstverliebtem Gucken auf die Graphen noch mal posten möchte:
Mit meinen 900 Watt Peak bin ich bis jetzt bei 9,223 kWh Verbrauch auf 4,15 kWh Solaranteil gekommen (= 45,2%) bei 5,26 kWh Solarerzeugung.

Bild siehe unten:

  • 07:30 Uhr: Tiefkühlschrank nur bei einsetzendem Solarstrom auf -18 statt -19 kühlen zu lassen geht prima auf - beim nächsten Zyklus ist Solarstrom da
  • 08:00 Uhr: Das Laden des 1. E-Bikes in der Garage setzt wieder ein
  • 08:30 Uhr: Als der Überschuss auf etwa 100 Watt anstieg, habe ich die Geschirrspülmaschine eingeschaltet, die beim Heizen etwa 30 Minuten nach Start 2 kW zieht. Die Waschmaschine gegen 9 Uhr. Beide Verbraucher sind der erste fette rote Balken, mit dem E-Bike und TK-Schrank wieder off gehen
  • 10:40 Uhr: Das Laden des 1. E-Bikes ist abgeschlossen (ist der Bosch 2019-Typ - da sieht die blaue Kurve gegen Ende so aus). Telegram-Nachricht "Laden abgeschlossen", nächstes E-Bike ran
  • 11:00 Uhr: Geschirrspülmaschine nimmt den 2. Schluck aus der Pulle, die Verbraucher fallen ab. Und die Waschmaschine ist durch
  • 12:00 Uhr: 2. Waschmaschine mit 60 Grad
  • 13:30 Uhr: Kochen
  • 14:00 Uhr: Die Ölheizung bringt das Warmwasser auf Temperatur. Ist auf 14 Uhr gelegt, weil kurz danach 2 von 3 Solaranlagen in den Hausschatten fallen
  • 17:00 Uhr: Auch das 2. E-Bike habe ich noch geladen bekommen, und dem TK-Schrank noch einen letzten Kick nach unten verpasst, der ...
  • 21:30 Uhr: ... ihn bis 21:30 Uhr durchhalten lässt

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 27 Mai 2020, 00:01:49
Also meine Batterie wird momentan von ca 20:00 bid 6:00 Uhr benoetigt und ist von gestern 8,1 KW auf heute morgen 5,5 KW das sind dann 2,6 KWh /10h = 260 W , die ich als durchschnittliche Grundlast in der Nacht habe.

Ich denke Deine 6-7 KWh entsprechen Deinem Tagesverbrauch ohne eine Waermepumpe oder wie bei mir ein Pool.
Der Speicher sollte so dimensioniert sein, dass er Deinen Bedarf fuer die Nacht deckt, plus einen kleinen Zuschlag.
Du solltest immer daran denken, das der Speicher einen schlechteren Wirkungsgrad, als wenn Du die PV Leistung direkt verbrauchst, hat. Der BYD zeigt bei mir ca 72% Wirkungsgrad an, also als Verhaeltnis von Input zu Output.
Dazu kommt noch, dass es nicht soooo gut fuer den Speicher ist, wenn er nie bis zum eingestellten MinSOC Wert (bei mir 15%) entladen wird.

Die Eigenverbrauchssteuerung soll ja gerade bewirken, dass die Leistung sofort am Tag verbraucht wird, damit sie nicht erst im Speicher landet. Der Speicher liefert nur, wenn Tagsueber viel Bewoelkung ist oder halt in der Nacht, wenn die Sonne aus ist :-)

Wenn Du keine Grossanlage mit >10Kwp hast und Verbraucher, die in der Nacht richtig Leistung benoetigen, dann duerfte der Speicher viel zu gross sein.

Gerade im Winter bekomme ich den Speicher nicht immer voll, bevor die Sonne untergegangen ist, weshalb >10Kwp toll waeren. Und in der Nacht schaffe ich es dann bei milden Wintertemperaturen auch nur bis ca. 1:00 Uhr morgens, weil dann die LWP auch nachts mit bis zu 4x 2,5 KWh ordentlich Leistung braucht. Aber wie gesagt, der Speicher muss auch im Winter erstmal geladen werden koennen und da bedarf es einiger Module.

Gruss
   Christian

Edit: Ich habe noch die Bilanz angehaengt, aber nur weil gvzdus vorgelegt hat....
Die PV-Erzeugung "aktueller Wert" kommt gerade aus dem Speicher.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 27 Mai 2020, 07:19:21
2 Anmerkungen / Fragen:

ZitatDazu kommt noch, dass es nicht soooo gut fuer den Speicher ist, wenn er nie bis zum eingestellten MinSOC Wert (bei mir 15%) entladen wird.

Das widerspricht jetzt dem, was ich von der Technik weiß. Aus der E-Auto-Diskussion habe ich mitgenommen, dass die Zellen dann besonders lange halten, wenn sie vor allem im Mittel-SoC gehalten werden, und "ganz voll" und noch schlimmer "ganz leer" an der Lebensdauer zehren. Nun ist "Ganz leer" nicht 15%, aber 15% ist eben auch nicht Mittelbereich. Wie kommst Du zu Deiner Aussage?

Außerdem: Ich bin über Deinen Wirkungsgrad überrascht. Ich habe mehrmals die "Stromspeicher-Inspektion" der HTW Berlin gelesen (https://pvspeicher.htw-berlin.de/speicher-inspektion-2020/), und da ist ja nun gerade Deine Kombination mit das Beste "wo geht". Wie bestimmst Du den?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 27 Mai 2020, 09:13:36
Mein Wissen ist leider auch nur Hörensagen und Altwissen. Leider habe ich noch keine Langzeiterfahrung.
Der Wirkungsgrad wird in % im BYD angezeigt und ich muss meine Angabe korrigieren. Hurra es ist viel besser :-)

fhem@raspberrypi:~/python/kostal$ python3 ./readbyd_2.py
Start querying BYD....
Returnvalue -should be zero if successful :  0
----------------Start Values BYD ----------------
{'Total_Charge_Energy': 982.313,
'Total_Cycle_Counts': 92.0,
'Total_Discharge_Energy': 829.741,
'arrayvoltage': 373.607,
'current': 1.483,
'maxcelltemp': 23.1,
'maxcellvol': 3.344,
'maxtemppos': '4',
'maxvolpos': 3,
'mincelltemp': 19.3,
'mincellvol': 3.333,
'mintemppos': '6',
'minvolpos': '1',
'packvoltage': 373.094,
'power': '0',
'soc': '74.300%',
'sysTemp': '22.200'}
----------------End - Values from BYD ----------------
Specific values from array....
BYD Total Charge Energy                 : 982.313 Kwh
BYD Total Discharge Energy              : 829.741 Kwh
Calculations...
Charging (+) / Discharging (-) Energy   : 553.0 W
Efficiency is                           : 0.845
fhem@raspberrypi:~/python/kostal$

Der Plenticore steuert die Ladung des Speichers nach einem internen Algorithmus und da kann ich kein MittelSOC erkennen. Es scheint auf jeden Fall der Ladebeginn verschoben zu werden, um die dynamische 70% Regel zu optimieren. Am Abend ist der Speicher momentan immer zu 100% geladen, obwohl ich morgens auch immer noch ca 30% über MinSOC habe.

Gruß Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 27 Mai 2020, 09:58:12
Zitat von: ch.eick am 27 Mai 2020, 09:13:36
Mein Wissen ist leider auch nur Hörensagen und Altwissen. Leider habe ich noch keine Langzeiterfahrung.
Der Wirkungsgrad wird in % im BYD angezeigt und ich muss meine Angabe korrigieren. Hurra es ist viel besser :-)

fhem@raspberrypi:~/python/kostal$ python3 ./readbyd_2.py
Start querying BYD....
Returnvalue -should be zero if successful :  0
----------------Start Values BYD ----------------
{'Total_Charge_Energy': 982.313,
'Total_Cycle_Counts': 92.0,
'Total_Discharge_Energy': 829.741,
'arrayvoltage': 373.607,
'current': 1.483,
'maxcelltemp': 23.1,
'maxcellvol': 3.344,
'maxtemppos': '4',
'maxvolpos': 3,
'mincelltemp': 19.3,
'mincellvol': 3.333,
'mintemppos': '6',
'minvolpos': '1',
'packvoltage': 373.094,
'power': '0',
'soc': '74.300%',
'sysTemp': '22.200'}
----------------End - Values from BYD ----------------
Specific values from array....
BYD Total Charge Energy                 : 982.313 Kwh
BYD Total Discharge Energy              : 829.741 Kwh
Calculations...
Charging (+) / Discharging (-) Energy   : 553.0 W
Efficiency is                           : 0.845
fhem@raspberrypi:~/python/kostal$

Der Plenticore steuert die Ladung des Speichers nach einem internen Algorithmus und da kann ich kein MittelSOC erkennen. Es scheint auf jeden Fall der Ladebeginn verschoben zu werden, um die dynamische 70% Regel zu optimieren. Am Abend ist der Speicher momentan immer zu 100% geladen, obwohl ich morgens auch immer noch ca 30% über MinSOC habe.

Gruß Christian
Bringst du diese Daten auch in FHEM rein?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 27 Mai 2020, 10:06:26
Zitat von: Mumpitz am 27 Mai 2020, 09:58:12
Bringst du diese Daten auch in FHEM rein?
Ich koennte, jedoch habe ich noch keine Verwendung, ueber die Daten, die vom Plenticore eh kommen. Der Plenticore sammelt ja schon von der Batterie und vom KSEM Daten.

Mit den gefundenen Python Skripten kann ich den BYD auslesen und auch beim Plenticore einige Einstellungen fuer den Speicher aendern, z.B. Batterieladung auf Manuell und MinSOC .

EDIT: Um es vollstaendiger zu machen setze ich mich da mal ran, ich hab da eine aenliche Implementierung bereits fuer meine Lueftung gebaut. Der Aufwand waere somit nicht so gross.
Please stay tuned :-)

Gruss
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 27 Mai 2020, 13:05:26
@Mumpitz

Waerest Du bitte so nett und wuerdest Dein Zitat Antwort #42 am: Gestern um 20:30:21 (https://forum.fhem.de/index.php/topic,102297.msg1057961.html#msg1057961) einkuerzen, damit das hier etwas lesbarer bleibt.
Es ist ja nur ein Zitat meines ersten Posts. Du kannst ja auch einfach einen link verwenden, wenn Du es als wichtig erachtest.

Vielen Dank im voraus
       Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 27 Mai 2020, 13:10:33
Es gibt auch einen kleinen Update im ersten Post fuer die Waschmaschine und den Pool.

Auch zum BYD Speicher habe ich noch eine Idee in der Pipeline
BYD direkt Abfragen und in Fhem anbinden (https://forum.fhem.de/index.php/topic,102297.msg1058069.html#msg1058069)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 28 Mai 2020, 07:12:46
Zitat von: gvzdus am 11 Mai 2020, 21:25:10

Damit habe ich meine "Stabilitätshysteresen".

Anhand dieser schalte ich nun per Notify und je nach Rahmenvoraussetzungen (würde jetzt zu weit führen, lege ich aber gerne auch noch mal dar) die Verbraucher.


Hallo

Könntest du das bitte für mich noch ein bisschen ausführen?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 28 Mai 2020, 07:29:00
Moin.
Gvzdus verwendet ein Notify um auf die gewünschten Bedingungen zu reagieren. Das steckt bei der hier verwendeten Lösung im DOIF.
Die Stabilitätshysterese ist vergleichbar mit meinem reading Total_PV_reserve . Es soll verhindert werden, dass ein Verbraucher zu schnell eingeschaltet wird, denn an wolkigen Tagen schwankt die Leistung manchmal sehr stark.

Die Bedingung fuer das Einschalten sieht bei mir folgender massen aus.

################################################################################################################
## 4 Eigenverbrauch einschalten: wenn PV-Produktion über dem Mindestbedarf ist und PV-Strom ins Netz eingespeist wird
##    und die Laufzeit pro Tag noch nicht erreicht ist; Bei über 7000 Watt Einspeisung sofort aktivieren
##
DOELSEIF
(([PV_Anlage_1:Total_PV_Power_reserve] >= [Pool:PowerLimitOn] and
   [[Pool:TimeStart]-[Pool:TimeEnd]] and
   [Pool:state] eq "off" and
   [Pool_Counter:pulseTimePerDay] < [Pool:RunTimePerDay]
  ) or
  [PV_Anlage_1:Total_active_power_(powermeter)] <= -7000
)

Um nun auch eine stabile Leistung zu haben ist beim DOIF das wait attribut gesetzt. Die vierte, durch Doppelpunkt, gesetzte Position verwendet aus dem Dummy das reading PowerLevelMinTime, somit wird vor dem Einschalten nochmals nach dieser Zeit geprueft, ob die Bedingung immernoch erfuellt ist. Natuerlich kann das auch bei einer schwankenden Leistung des WR auftreten, jedoch schwankt es dann um diese Leistungshoehe.

wait  0:10:0:[Pool:PowerLevelMinTime]:0:0:0:300:0:300


Bei der oder Bedingung geht es nur darum die dynamische 70 % Regelung auszunutzen. Der Effekt ist, dass auch schon vor der geplanten Zeit den Verbraucher zu aktivieren, wenn sehr viel eingespeist wird. In diesem Fall regelt der Plenticore nicht zu, sondern liefert fuer den Eigenverbrauch noch ueber die 70% hinaus :-) , was ja direkt im Haus verbraucht wird. In dem angehaengten Diagramm kann man dass recht gut erkennen. Der blaue Block vom ca 1000 Watt, von 11:00 bis 15:20 Uhr, ist der Pool. Dieser wurde vor seiner Zeit aktiviert. Der Plenticore hat auch noch das Laden des Speichers in den Bereich ueber die 70% gelegt, um die Spitzenleistung nutzen zu koennen.
Sehr schön kann man auch um 14:00 Uhr beim Einschalten der LWP sehen, wie der Plenticore kurzfristig die Leistung aus dem Speicher zusteuert. Das ist der rote Peak. Das hellgrüne wird ins Netz eingespeist.

Bei meiner Loesung wurden die zu erfuellenden Bedingungen im DOIF jeweils indirekt in das Dummy ausgelagert. Dort koennen sie dann zentral und uebersichtlich geaendert werden.

Gruß Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 28 Mai 2020, 09:18:48
Respekt für Deinen Ritt auf dem DOIF! Die Mächtigkeit des "wait"-Attributs war mir nicht bewusst.

Trotzdem finde ich, dass wir hier etwas Basteln... Eigentlich müsste es doch längst ein Daten- und Parametermodell geben, wie man das, was wir wollen, spezifiziert. Also einen Verbraucher deklariert als:

  • Wieviel Strom wird er etwa brauchen?
  • Braucht er ein Tagesquota, oder gilt "soviel wie möglich"?
  • Welche Prio hat er?
  • Oder ist er nur die letzte Stromwegmach-Rotze wie ein Heizstab?

Im Prinzip: Ich schalte Waschmaschine / Geschirrspüler / E-Auto ein. Ich wähle "Muss um 15 Uhr fertig sein, bzw. um 16 Uhr zu 70% geladen sein". Das Viech bläst seine Bedarfsmeldung mitsamt erwarteter Strombedarfskurve an einen Controller. Der Controller hat seine Prognose, in die die erwartete Produktion mit allen 3 Preisen (Netz = 28 Ct, PV-Einspeisung vs. Eigenverbrauch = <Deine Verguetung>, Cap = 0 Ct) einfliesst. Und gibt das "Go" zum Zeitpunkt X.

Irgendwelche klugen Köpfe haben doch bestimmt so was schon einmal ausgeheckt?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 28 Mai 2020, 09:49:43
Hallo.

Deine Verbraucherdeklaration habe ich als Klone aus dem SMA Portal abgeleitet und in dem gerätespezifischen Dummy abgebildet. Deshalb sind auch im DOIF die Parameter indirekt angegeben. Schau Dir gerne nochmal die Erläuterung im ersten Post dazu an.
Die Priorisierung war mir etwas zu hart und zu komplex. Es reicht im Normalfall einen Verbraucher nach der Mindestlaufzeit dann einfach wieder weg zu schalten, insbesondere wenn wie hier ein Speicher mit im Spiel ist.

Das mit der Prognose hatte ich bereits auch schon mit KölnSolar diskutiert. Wir sind uns da einig, dass ein sofort reagieren und Verbrauchen besser ist als eine schlechte Prognose:-)
Ein Forecast wäre für mich für den nächsten Tag gut. Wenn der schlecht wird könnte ich der WW-Speicher mit der LWP überheizen und brächte dann an dem Tag die LWP  nicht mehr. Aber das wäre mit Kanonen auf Spatzen geschossen. Wie gesagt es ist ein Speicher im Spiel und der kommt im Sommer momentan mit 4KW Reserve aus der Nacht.

Im Prinzip könnte man jetzt bereits ein generiertes Modul erstellen, jedoch müsste ich das dann ja auch maintainen ;-)

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 28 Mai 2020, 11:18:21
So, danke für den Tipp mit SMA, der hat mich nämlich dann mit Googlen zu EEBUS gebracht.
Die Google-Hits für FHEM zusammen mit EEBUS sind übrigens echt übersichtlich.

EEBUS ist genau das, was ich meine: Eine intelligente Synchronisation von Strom-Verbrauchern mit einem System aus PV und ggf. Batterie, einem E-Auto und vor allem der zentralen Intelligenz.

Wer Lust hat, mal die Spec zu lesen (gerade erst runtergeladen und noch nicht selber gelesen):

https://www.eebus.org/media-downloads/#_SPECIFICATIONS

Man muss sich für den Download registrieren, aber der Link zum Registrieren funktioniert nicht. Der hier funktioniert:

https://www.eebus.org/en/registration-downloads/

Viele Grüße, Georg
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 28 Mai 2020, 12:04:43
Zitat von: gvzdus am 28 Mai 2020, 11:18:21
So, danke für den Tipp mit SMA, der hat mich nämlich dann mit Googlen zu EEBUS gebracht.
Die Google-Hits für FHEM zusammen mit EEBUS sind übrigens echt übersichtlich.

EEBUS ist genau das, was ich meine: Eine intelligente Synchronisation von Strom-Verbrauchern mit einem System aus PV und ggf. Batterie, einem E-Auto und vor allem der zentralen Intelligenz.

Wer Lust hat, mal die Spec zu lesen (gerade erst runtergeladen und noch nicht selber gelesen):

https://www.eebus.org/media-downloads/#_SPECIFICATIONS

Man muss sich für den Download registrieren, aber der Link zum Registrieren funktioniert nicht. Der hier funktioniert:

https://www.eebus.org/en/registration-downloads/
Haaa, jetzt wo Du es sagst :-)
Das steht ja auch beim Plenticore im MaBuSchie, doch ich denke die sind da noch nicht so weit. Beim Modbus/TCP ist die Firmware fuer den KSEM auch erst auf mein Drengen hin ausgeliefert worden. Ich hatte mich letztes Jahr als der KSEM bei Kostal raus kam direkt fuer diesen entschieden, denn die FW des EM300 wird wohl kaum noch nachgeruestet. Der KSEM soll spaeter auch z.B. mit einer Ladesaeule kommunizieren koennen. Man kann nur hoffen, dass dann auch wirklich alle Hersteller sich an die eebus Kommunikation halten werden. Fuer mich war Modbus/TCP schon eine schoene Oeffnung in die richtige Richtung.

Fuer dieses Forum ist FHEM halt der Dreh- und Angelpunkt fuer die Kommunikation zwischen der Verbrauchern. Bis es ein kostenguenstiges System auf dem Markt geben wird werden wir uns hier wohl noch behelfen muessen.
Auch die Steuerung nach voruebermittelten Leistungskurven wird wohl noch etwas dauern. Bei den Energieerzeugern gibt es auch etwas, um anhand der Verbrauchskurve die einzelnen Verbraucher zu identifizieren, ich komme nur gerade nicht auf den Namen. Das ist auch nicht so einfach, wenn mehrere Verbraucher sich ueberlagern, aber anhand z.B. meiner Grafiken kann ich auch schon sagen, welches Geraet wann gelaufen ist. Da muesste mal jemand mit Integralen ran, ein einzelnes Geraet anhand von Messwerten in einer Grafik koennte ich liefern, das waere dann die Vergleichsbasis, die mit der Gesamtverbrauchskurve per Integral verglichen werden muesste, inklusive Ueberlagerung ;-) Dafuer bin ich jedoch schon viel zu lange raus...

Gruss
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 28 Mai 2020, 12:35:04
Es sprengt allmählich den Thread hier, es könnte glatt eine eigene Thread-Rubrik geben. Aber ich sehe da massenhaft Anknüpfungspunkte für FHEM. Ja, im Moment "können wir" alles, weil wir alles "irgendwie rangebastelt" haben. Aber mal angenommen, EEBUS wird z.B. allein über die E-Mobilitität ein Erfolg, weil der VDA darauf setzt: Man muss sich ja nicht in alles hintenrum reinhacken, wie es nach meinem Eindruck z.Zt. in Sachen Steuerung des Ladens des BEVs läuft.

FHEM könnte einerseits Nicht-EEBUS-fähige Verbraucher EEBUS-fähig machen. Z.B. Deine olle Waschmaschine. Und mittels eines Shelly-Plug-S o.ä. kann FHEM ja auch das Lastprofil ermitteln. Unsere nächste Waschmaschine sollte dann natürlich das von Haus aus können, und idealerweise auch die Heizleistung auf den Solarüberschuss modellieren, statt stumpf 2 kW zu ziehen (und trotzdem nur 100 Euro mehr kosten).

Das andere - darin habe ich mich noch nicht eingelesen - ist, zumindest eine rudimentäre Implementierung des Home-Managers zu liefern. SMA o.ä. wird da m.E. die Nase vorn haben: Theoretisch sollte man in die Solarproduktion eines Tages optimal vorhersagen können, wenn man einerseits über gute Wetterdaten verfügt, und andererseits auch noch die Produktion anderer Solaranlagen aus der Richtung kennt, aus der der Wind die Wolken herbläst.

Das SHIP-Dokument habe ich jetzt überflogen - liest sich alles ganz gut. Da werden nicht uralte Standards aufgehübscht, sondern das hat für mich eher Startup-Atmosphäre: "Nehmen wir TCPIP, AutoDiscovery, Crypto-Stack etc. so, wie man das heute macht!"
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Prof. Dr. Peter Henning am 28 Mai 2020, 17:58:48
Ich betreibe meine PV-Anlage jetzt seit 13 Jahren (ohne Speicher, weil schön hohe Einspeisevergütung). Klare Aussage aus der Auswertung wirklich vieler Daten: Eine Vorhersage ist NICHT möglich. Unter anderem ist aus der Windsituation in 7m Höhe keineswegs ableitbar, wie die in 200m Höhe aussieht.


Edit: Ich habe mir den EEBUS-Kram heruntergeladen und genau angesehen. Auf Grund der hohen Asynchronität und der ziemlich engen Timing-Vorgaben sehe ich wenig Chancen, das direkt in FHEM zu integrieren.  Auch solche Dinge wie Key Management etc. würden FHEM eher ausbremsen. Eine größere Chance sehe ich, dass es einen Konnektor EEBUS <-> MQTT gibt, der als eigenständiges Programm ohne die (vergleichsweise langsame) Main Loop von FHEM existiert


LG

pah

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 28 Mai 2020, 20:23:34
Zitat von: Prof. Dr. Peter Henning am 28 Mai 2020, 17:58:48
Ich betreibe meine PV-Anlage jetzt seit 13 Jahren (ohne Speicher, weil schön hohe Einspeisevergütung). Klare Aussage aus der Auswertung wirklich vieler Daten: Eine Vorhersage ist NICHT möglich. Unter anderem ist aus der Windsituation in 7m Höhe keineswegs ableitbar, wie die in 200m Höhe aussieht.

Edit: Ich habe mir den EEBUS-Kram heruntergeladen und genau angesehen. Auf Grund der hohen Asynchronität und der ziemlich engen Timing-Vorgaben sehe ich wenig Chancen, das direkt in FHEM zu integrieren.  Auch solche Dinge wie Key Management etc. würden FHEM eher ausbremsen. Eine größere Chance sehe ich, dass es einen Konnektor EEBUS <-> MQTT gibt, der als eigenständiges Programm ohne die (vergleichsweise langsame) Main Loop von FHEM existiert
Vielen Dank fuer die kompetente Rueckmeldung. Die Aussage zur Vorhersage deckt sich absolut mit meinen Erfahrungen und Beobachtungen.
Beim EEBUS sind halt schon noch einige Layer mehr, da sollte man wirklich mal abwarten, was und wie die "Profis" das umsetzen. Die verschiedenen Implementierungen im Forum sind fuer meine Faelle vollkommen ausreichend.
Wie bereits geschrieben koennte man das in ein generisches Modul umsetzen, wenn man es wirklich brauchen sollte.

Viele Gruesse
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 28 Mai 2020, 20:47:01
Auch meinerseits Danke für die Einschätzung.

ZitatIch betreibe meine PV-Anlage jetzt seit 13 Jahren (ohne Speicher, weil schön hohe Einspeisevergütung). Klare Aussage aus der Auswertung wirklich vieler Daten: Eine Vorhersage ist NICHT möglich. Unter anderem ist aus der Windsituation in 7m Höhe keineswegs ableitbar, wie die in 200m Höhe aussieht.

Für mich die Solaranlage jetzt seit Monaten Lieblingsspielzeug, und ich starre auf das Radarbild von "WetterOnline", um zu rätseln, ob da noch Hoffnung auf klaren Himmel besteht oder ich die Waschmaschine jetzt schon anwerfe.
Vom Bodenwind lässt sich keine Prognose ableiten, der ist sowohl chaotisch und auch typischerweise um 30 Grad nach links verdreht. Aber auch bei den Wolken können es verschiedene Layer sein, die in unterschiedliche Richtungen ziehen.
Meine Überlegung ging eher dahin, Wind-Vektoren aus Bildern wie eben bei WetterOnline zu errechnen und danach zu prognostizieren, was Solaranlagen "30 Minuten gegen den Wind vor mir" produziert haben. Auch das geht hinter einem Bergrücken natürlich ggf. nicht auf.

Außerdem weiß ich aus der Luftfahrt, wie extrem schwer und fehleranfällig auch heute noch eine Nebelprognose ist.

Also ja: Kniffelig ist es, aber mit den Daten, die Solarportalbetreiber wie z.B. die Inverterhersteller haben, sehe ich es als nicht chancenlos an.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 28 Mai 2020, 21:12:33
Hi.
Okay für Forecast hatte ich noch eiinen anderen Thread ;-) , das sollten wir dann mal dahin auslagern.

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 14 Juni 2020, 16:14:40
Hallo Christian ch.eick,
ich habe nun auch meinen Plenticore mit EM410 (KSEM), die BYD Batterie läßt noch auf sich warten.

Danke an deine kompetenten Code-Teile die mir zu einem jump-start geholfen haben! Danke, dass du deine Arbeit teilst!

Leider ist der status meines EM410 in FHEM (über ModbusAttr) immer noch disconnected (liegt vermutlich am Paßwort). Wie kann ich dies denn einstellen?

Viele Grüße
Bernd
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 14 Juni 2020, 16:23:32
Hallo zusammen

Das Installationsdatum meiner PV Anlage, Plenticore mit BYD Speicher, rückt ebenfalls näher. Nun lese ich von ch.eick wie auch bei speedAmaster, dass je ein EM410 verbaut worden ist. Mein Installateur hat mir jedoch den Plenticore sowie den BYD verkauft und dabei angegeben, dass der Plenticore / BYD bereits einen Energiemesser integriert habe, um zu erkennen, wann der Speicher liefern und wann aufladen kann.

Aus welchem Grund ist so ein Energiemesser nötig. Sollte ich so einen ebenfalls noch einbauen?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Prof. Dr. Peter Henning am 14 Juni 2020, 16:50:32
Der EM410 ist kein Energie"messer", sondern ein Energiemanager. Damit sollen Verbraucher "intelligent" zu- oder abgeschaltet werden, mit dem Ziel eines 100%igen Eigenverbrauchs der erzeugten Leistung.

Allerdings sind die Algorithmen dabei nicht transparent, und der Preis eines Komplettsystems übersteigt das Einsparpotenzial m.E. bei Weitem. Auch das Ziel ziehe ich hiermit stark in Zweifel: Für mich ist nicht maximale Einsparung das Ziel, sondern maximaler Komfort für die Bewohner.

Die bessere Lösung, ein Energiemanagement a.)transparent und b.)zu überschaubaren Kosten zu realisieren, ist ein FHEM-basiertes Empfehlungssystem.

LG

pah
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 14 Juni 2020, 21:37:36
> Die bessere Lösung, ein Energiemanagement a.)transparent und b.)zu überschaubaren Kosten zu realisieren, ist ein FHEM-basiertes Empfehlungssystem.

Nichts ist doch schwerer erträglich, als einer Lösung zuzusehen, die Geld gekostet hat und es schlechter macht, als man es selbst könnte (oder zu können meint). Und den Schabernack, den ich mit dem Takten der HK-Pumpe oder des Tiefkühlschranks mache, würde ich keinem Hersteller erlauben: Ich weiß, wie alt die Tiefkühltruhe ist und dass die Heizung absehbar rausfliegt, deswegen frage ich mich nicht, ob das Takten auf die Lebenserwartung geht.

Gruß vom geöffneten Bier, dessen Kühlschrank nur läuft, wenn gerade Überschuss da ist - als Statement zu "Sparen versus Komfort" :-)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Juni 2020, 10:31:46
Hallo zusammen,
ich zitiere jetzt mal nicht jede Anmerkung und versuche mal aus meiner Erfahrung zusammen zu fassen.

Der Plenticore misst natuerlich alle Werte, die er direkt erfassen kann selber und steuert auch den Speicher selber.
Der KSEM wird benoetigt, um die 70% Regelung entsprechend den Vorgaben des EVU einzuhalten, da der Plenticore nicht direkt hinter dem Zaehler messen kann. Weiterhin wird der KSEM z.B. fuer die Ansteuerung einer Wall Box verwendet, wenn das in den naechsten Jahren planen wuerde.

Die Regelung des Plenticore ist schon recht gut. Bei der Speicher Steuerung gaebe es natuerlich noch Luft nach oben, wenn man schnelle Wetterwechsel mit einbeziehen koennte. In einer bestimmten Wetterkonstellation wuerde ich mir wuenschen, dass das Laden schon frueher beginnt, aber da denke ich schon laenger drueber nach. Momentan bin ich bereits seit ueber zwei Monaten vollstaendig Autark. Der Zweirichtungszaehler kam ca vor 7-8 Wochen, seit dem habe ich 1310 KWh zusaetzlich eingespeist und nur 5 KWh bezogen, was an einem kleinen Fehler meinerseits gelegen hat und mich 3 KWh gekostet hat.

Der KSEM muss momentan noch per RS485 angeschlossen werden, da Kostal noch an der Modbus/TCP Kommunikation arbeitet, um die Steuerung ueber das Netzwerk machen zu koennen.

Die Nutzung von Modbus/TCP muss muss zuerst auf dem KSEM aktiviert werden, da Kostal diese ja noch nicht ueber LAN nutzt. Bei Bedarf koennte ich das bei mir nochmal nachschauen.

Zitat
> Die bessere Lösung, ein Energiemanagement a.)transparent und b.)zu überschaubaren Kosten zu realisieren, ist ein FHEM-basiertes Empfehlungssystem.
Genau das habe ich implementiert und es laeuft bereits sehr gut. Ohne diesen Eingriff laeuft der Plenticore auch schon sehr gut und steuert den Speicher auch sehr gut.
Ueber FHEM greife ich nur bei den Hausgeraeten ein, bei denen ich grossen Energiebedarf gezielt in die Tagesstunden legen kann, ohne auf irgendwelchen Komfort zu verzichten.

1) Die Waschmaschine mit Walzenprogrammsteuerung
2) Der Wirlpool, der eh jeden Tag laeuft

3) Die LWP fuer Warmwasser und Heizung.
   Hier hat sich herausgestellt, dass der PV Modus im Sommer nicht unbedingt notwendig ist und im Durchschnitt auch nicht wirklich etwas einspart.
   Sehr gut ist der PV Modus der LWP in der Uebergangszeit und im Winter. Wenn PV Ueberschuss vorhanden ist, kann man so WW z.B  fuer zwei Tage puffern,
   was in unserem zwei Personen Haushalt gut klappt. Bei Rueckfrage kann ich hierzu auch gerne noch mehr Information/Erfahrung beisteuern.

4) Das Thema Kuehschrank oder Truhe ist ja eine gespaltene Diskussion

Generell hat der Plenticore, bzw. das Kostal Portal noch keine Moeglichkeit Geraete zu steuern, so wie es bei SMA bereits implementiert waere. Meine Beitraege sind bezueglich der Parametrisierung, eine Ableitung aus dem SMA Portal gewesen und dank FHEM somit frei von Cloud/Internet.

Aus meinem Gefuehl heraus wuerde ich sagen, dass man ohne FHEM, also nur der Plenticore mit dem Speicher bereits sehr gut ueber den Sommer kommt. Hierbei sollte man natuerlich nicht einen Pool nachts aufheizen, aber den hat ja auch nicht jeder im Haushalt.
Mein Traum waere im Jahresschnitt auf eine Autarkie von 80% zu kommen, man muss ja immer ein Ziel haben :-) Ich habe mal die Bilanz von heute angehaengt.

Gruss
    Christian

Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Juni 2020, 10:44:35
Zitat von: gvzdus am 14 Juni 2020, 21:37:36
> Die bessere Lösung, ein Energiemanagement a.)transparent und b.)zu überschaubaren Kosten zu realisieren, ist ein FHEM-basiertes Empfehlungssystem.
Nichts ist doch schwerer erträglich, als einer Lösung zuzusehen, die Geld gekostet hat und es schlechter macht, als man es selbst könnte (oder zu können meint). Und den Schabernack, den ich mit dem Takten der HK-Pumpe oder des Tiefkühlschranks mache, würde ich keinem Hersteller erlauben: Ich weiß, wie alt die Tiefkühltruhe ist und dass die Heizung absehbar rausfliegt, deswegen frage ich mich nicht, ob das Takten auf die Lebenserwartung geht.
In Bezug auf den Kuehlschrank springt der ja eher weniger an, dafuer aber einmal etwas laenger um die Temperatur wieder heraus zu holen. Ich sehe da jetzt kein Problem.

Dei unserer LWP wird die HK-Pumpe auch getaktet, was mit der Einstellung Pumpenoptimierung im Herstellermenue einzustellen ist. Ergo machen die Hersteller das auch so. Ich wuerde nur halt die Abstaende nicht zu kurz waehlen.

Bei meiner LWP versuche ich durch den PV Modus, der den Puffer Ueberheizt, einig LWP Heizungseinschaltungen aus der Nacht in den Tag zu verlagern. WW wird durch die Sperrzeiten auch auf 14:00 Uhr geschoben, da dort die hoechste Aussentemperatur zu erwarten ist. Der Plenticore mit dem Speicher liefert meistens dann auch die volle Leistung. Oft hat es im Winter dann auch noch gereicht den Speicher wieder nachzuladen, der dann oft bis 21:00 Uhr oder manchmal auch bis 01:00 Uhr nachts gereicht hat. Im Winter muss man halt auch bedenken, dass die LWP nachts nachheizt, da stehen jedoch noch weitere Versuche im naechsten Winter an.
Die Nachtabsenkung wird jetzt ja auch gerne Taganhebung genannt ;-)

Viele Gruesse
      Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Juni 2020, 10:48:35
Zitat von: Prof. Dr. Peter Henning am 14 Juni 2020, 16:50:32
Die bessere Lösung, ein Energiemanagement a.)transparent und b.)zu überschaubaren Kosten zu realisieren, ist ein FHEM-basiertes Empfehlungssystem.
Hierbei ist mein Ansatz, zuerst dem Hersteller die Optimierung zu ueberlassen und dann den letzten Rest mit FHEM noch herauszuholen. Wie bereits geschrieben 60% Autarkie ohne Eingriffe nur durch die Hersteller Loesung und das Ziel dann auf 80% mit FHEM Unterstuetzung.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 15 Juni 2020, 14:45:58
Hallo Christian,

ZitatDie Nutzung von Modbus/TCP muss muss zuerst auf dem KSEM aktiviert werden, da Kostal diese ja noch nicht ueber LAN nutzt. Bei Bedarf koennte ich das bei mir nochmal nachschauen.

Ich habe euf meinem KSEM den Modbus aktiviert. Allerdings keinen Slave.

Unklar ist mir nur, ob ich für ModbusAttr auch das KSEM Paßwort brauche. Aktuell bekomme ich noch "disconnected" über FHEM.

Woran könnte das denn liegen?

Gruß
Bernd
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 15 Juni 2020, 14:58:59
Hallo Christian,

ich habe eben Deinen anderen Kommentar im Foum gefunden (KOSTAL Smart Energy Meter auslesen: #3): https://forum.fhem.de/index.php/topic,109749.msg1037838.html#msg1037838

ZitatDort habe ich den Kostal Wechselrichter als Master mit Port 1502 eingetragen. Diese Verbindung dient momentan nur zur zusaetzlichen Datenuebermittlung und reicht noch nicht fuer die Steuerung des WR. Zusaetzlich wird die RS485 fuer den WR benoetigt.

Zum Auslesen des KSEM muss dann noch "Enable Slave" aktiviert werden.

Nun kann man mit dem Modbus TCP Modul von FHEM die Verbindung zum KSEM aufbauen und die Register auslesen, so wie ich es schon verlinkt habe.
Zu beachten ist, das die Slave Verbindung ueber Port 502 laeuft.

Damit habe ich jetzt die Verbindung geschafft! Muss mich jetzt noch durch die Werte quälen und zusehen, ob wirklich der Plenticore alle Werte vom KSEM hat.

VG
Bernd
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Juni 2020, 17:05:53
Hallo Bernd,
die Werte vom KSEM habe ich hier beim Plenticore mit Modbus/TCP ausgelesen und entsprechend der Kostal Dokumentation benannt. Blanks sind mit "_" ersetzte. In der Dokumentation sind die Werte vom KSEM mit "(powermeter)" im Namen angegeben.
Fuer die Statistik und Bilanz findest Du hier auch bereits fertige Beispiele. Die Statistiken vom Plenticore sind etwas anders auszulesen und nicht mit Modbus/TCP zu erreichen. Dazu habe ich jedoch in anderen Forumen gewildert und eine Python Loesung zusammen gestellt.

Somit braucht man nichts mehr selber im FHEM zu sammel oder aufzusummieren.
Die Bilanz (https://forum.fhem.de/index.php/topic,109875.msg1038824.html#msg1038824) habe ich von den SMA Kollegen, hier aus dem Forum, uebernommen und auf den Plenticore angepasst. Durch den KSEM muss man auch nicht einen separaten Lesekopf fuer den EVU Zaehler haben. Im Listing habe ich bewusst alle Werte, auch die vom KSEM, aus dem Plenticore ausgelesen, damit die Werte Zeitlich synchron sind. Ob KSEM oder EM300 ist auch egal.
Diese Bilanz beruecksichtigt, hoffendlich richtig, auch den Speicher am Plenticore, was mich einige schlaflose Naechte gekostet hat :-) Ueber den Wirkungsgrad des Speichers (Laden/Entladen) habe ich mir keine Gedanken gemacht.

Hier geht es zum auslesen des  KSEM (https://forum.fhem.de/index.php/topic,109749.msg1064651.html#msg1064651)

Bei mir gehen alle Loggingwerte ins DBLog, wo ich auch schon einige Datenbankauswertungen zugesteuert habe. Hier werde ich mich noch mit einer Jahres Bilanz beschaeftigen, um z.B. das Vorjahr noch in der Bilanz anzeigen zu koennen, was jetzt ja nicht sichtbar ist. Aber das kann man sich mit DBRep ja wieder aus der DB rausholen.

Viele Gruesse
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Juni 2020, 17:16:35
Zitat von: speedAmaster am 15 Juni 2020, 14:45:58
Unklar ist mir nur, ob ich für ModbusAttr auch das KSEM Paßwort brauche. Aktuell bekomme ich noch "disconnected" über FHEM.

Woran könnte das denn liegen?

Wenn Du eine Definition von mir kopiert hast, koennte eventuel noch "disable 1" gesetzt sein. Also einfach das attr loeschen, oder auf 0 setzen.

Es ist nach der KSEM Kofiguration kein Passwort notwendig!

Hier nochmal die aktuellste Version, aber Achtung, einige Werte werden noch nicht richtig decodiert, da gibt es noch einen Thread dazu.
Mit "attr PV_KSEM dev-type-INT16_Current-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Current_SF",0))" habe ich die Umrechnung nach der Kostal Dokumentation umgesetzt.
Es werden auch noch nicht alle Werte gelesen, da die Werte ja im Plenticore verfuegbar sind und ich noch keine Zeit hatte es zu kompetieren.

defmod PV_KSEM ModbusAttr 1 60 [IP-Adresse]:502 TCP

attr PV_KSEM DbLogExclude .*
attr PV_KSEM alias PV_Energy_Manager
attr PV_KSEM comment Kostal EM410 Energy Manager
attr PV_KSEM dev-h-defPoll 1
attr PV_KSEM dev-type-INT16-len 1
attr PV_KSEM dev-type-INT16-unpack s>
attr PV_KSEM dev-type-INT16_Current-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Current_SF",0))
attr PV_KSEM dev-type-INT16_Current-format %.2f
attr PV_KSEM dev-type-INT16_Current-len 1
attr PV_KSEM dev-type-INT16_Current-unpack s>
attr PV_KSEM dev-type-INT16_Freq-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Freq_SF",0))
attr PV_KSEM dev-type-INT16_Freq-format %.2f
attr PV_KSEM dev-type-INT16_Freq-len 1
attr PV_KSEM dev-type-INT16_Freq-unpack s>
attr PV_KSEM dev-type-INT16_PF-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_PF_SF",0))
attr PV_KSEM dev-type-INT16_PF-format %.2f
attr PV_KSEM dev-type-INT16_PF-len 1
attr PV_KSEM dev-type-INT16_PF-unpack s>
attr PV_KSEM dev-type-INT16_Power-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Power_SF",0))
attr PV_KSEM dev-type-INT16_Power-format %.2f
attr PV_KSEM dev-type-INT16_Power-len 1
attr PV_KSEM dev-type-INT16_Power-unpack s>
attr PV_KSEM dev-type-INT16_VA-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_VA_SF",0))
attr PV_KSEM dev-type-INT16_VA-format %.2f
attr PV_KSEM dev-type-INT16_VA-len 1
attr PV_KSEM dev-type-INT16_VA-unpack s>
attr PV_KSEM dev-type-INT16_VAR-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_VAR_SF",0))
attr PV_KSEM dev-type-INT16_VAR-format %.2f
attr PV_KSEM dev-type-INT16_VAR-len 1
attr PV_KSEM dev-type-INT16_VAR-unpack s>
attr PV_KSEM dev-type-INT16_Voltage-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Voltage_SF",0))
attr PV_KSEM dev-type-INT16_Voltage-format %.2f
attr PV_KSEM dev-type-INT16_Voltage-len 1
attr PV_KSEM dev-type-INT16_Voltage-unpack s>
attr PV_KSEM dev-type-STR32-expr $val =~ s/[\00]+//gr
attr PV_KSEM dev-type-STR32-format %s
attr PV_KSEM dev-type-STR32-len 16
attr PV_KSEM dev-type-STR32-unpack a*
attr PV_KSEM dev-type-UINT16-format %s
attr PV_KSEM dev-type-UINT16-len 1
attr PV_KSEM dev-type-UINT32-format %s
attr PV_KSEM dev-type-UINT32-len 2
attr PV_KSEM dev-type-UINT64-expr $val/10000
attr PV_KSEM dev-type-UINT64-format %s
attr PV_KSEM dev-type-UINT64-len 4
attr PV_KSEM dev-type-UINT64-unpack Q>
attr PV_KSEM disable 0
attr PV_KSEM group PV Eigenverbrauch
attr PV_KSEM icon measure_power
attr PV_KSEM obj-h40071-reading M_AC_Current
attr PV_KSEM obj-h40071-type INT16_Current
attr PV_KSEM obj-h40071-unpack f>
attr PV_KSEM obj-h40072-reading M_AC_Current_A
attr PV_KSEM obj-h40072-type INT16_Current
attr PV_KSEM obj-h40073-reading M_AC_Current_B
attr PV_KSEM obj-h40073-type INT16_Current
attr PV_KSEM obj-h40074-reading M_AC_Current_C
attr PV_KSEM obj-h40074-type INT16_Current
attr PV_KSEM obj-h40075-reading M_AC_Current_SF
attr PV_KSEM obj-h40075-type INT16
attr PV_KSEM obj-h40076-reading M_AC_Voltage_LN
attr PV_KSEM obj-h40076-type INT16_Voltage
attr PV_KSEM obj-h40077-reading M_AC_Voltage_AN
attr PV_KSEM obj-h40077-type INT16_Voltage
attr PV_KSEM obj-h40078-reading M_AC_Voltage_BN
attr PV_KSEM obj-h40078-type INT16_Voltage
attr PV_KSEM obj-h40079-reading M_AC_Voltage_CN
attr PV_KSEM obj-h40079-type INT16_Voltage
attr PV_KSEM obj-h40080-reading M_AC_Voltage_LL
attr PV_KSEM obj-h40080-type INT16_Voltage
attr PV_KSEM obj-h40081-reading M_AC_Voltage_AB
attr PV_KSEM obj-h40081-type INT16_Voltage
attr PV_KSEM obj-h40082-reading M_AC_Voltage_BC
attr PV_KSEM obj-h40082-type INT16_Voltage
attr PV_KSEM obj-h40083-reading M_AC_Voltage_CA
attr PV_KSEM obj-h40083-type INT16_Voltage
attr PV_KSEM obj-h40084-reading M_AC_Voltage_SF
attr PV_KSEM obj-h40084-type INT16
attr PV_KSEM obj-h40085-reading M_AC_Freq
attr PV_KSEM obj-h40085-type INT16_Freq
attr PV_KSEM obj-h40086-reading M_AC_Freq_SF
attr PV_KSEM obj-h40086-type INT16
attr PV_KSEM obj-h40087-reading M_AC_Power
attr PV_KSEM obj-h40087-type INT16_Power
attr PV_KSEM obj-h40088-reading M_AC_Power_A
attr PV_KSEM obj-h40088-type INT16_Power
attr PV_KSEM obj-h40089-reading M_AC_Power_B
attr PV_KSEM obj-h40089-type INT16_Power
attr PV_KSEM obj-h40090-reading M_AC_Power_C
attr PV_KSEM obj-h40090-type INT16_Power
attr PV_KSEM obj-h40091-reading M_AC_Power_SF
attr PV_KSEM obj-h40091-type INT16
attr PV_KSEM obj-h40092-reading M_AC_VA
attr PV_KSEM obj-h40092-type INT16_VA
attr PV_KSEM obj-h40093-reading M_AC_VA_A
attr PV_KSEM obj-h40093-type INT16_VA
attr PV_KSEM obj-h40094-reading M_AC_VA_B
attr PV_KSEM obj-h40094-type INT16_VA
attr PV_KSEM obj-h40095-reading M_AC_VA_C
attr PV_KSEM obj-h40095-type INT16_VA
attr PV_KSEM obj-h40096-reading M_AC_VA_SF
attr PV_KSEM obj-h40096-type INT16
attr PV_KSEM obj-h40097-reading M_AC_VAR
attr PV_KSEM obj-h40097-type INT16_VAR
attr PV_KSEM obj-h40098-reading M_AC_VAR_A
attr PV_KSEM obj-h40098-type INT16_VAR
attr PV_KSEM obj-h40099-reading M_AC_VAR_B
attr PV_KSEM obj-h40099-type INT16_VAR
attr PV_KSEM obj-h40100-reading M_AC_VAR_C
attr PV_KSEM obj-h40100-type INT16_VAR
attr PV_KSEM obj-h40101-reading M_AC_VAR_SF
attr PV_KSEM obj-h40101-type INT16
attr PV_KSEM obj-h40102-reading M_AC_PF
attr PV_KSEM obj-h40102-type INT16_PF
attr PV_KSEM obj-h40103-reading M_AC_PF_A
attr PV_KSEM obj-h40103-type INT16_PF
attr PV_KSEM obj-h40104-reading M_AC_PF_B
attr PV_KSEM obj-h40104-type INT16_PF
attr PV_KSEM obj-h40105-reading M_AC_PF_C
attr PV_KSEM obj-h40105-type INT16_PF
attr PV_KSEM obj-h40106-reading M_AC_PF_SF
attr PV_KSEM obj-h40106-type INT16
attr PV_KSEM obj-h512-reading Active_energy+
attr PV_KSEM obj-h512-type UINT64
attr PV_KSEM obj-h516-reading Active_energy-
attr PV_KSEM obj-h516-type UINT64
attr PV_KSEM obj-h8192-reading ManufacturerID
attr PV_KSEM obj-h8192-type UINT16
attr PV_KSEM obj-h8193-reading ProductID
attr PV_KSEM obj-h8193-type UINT16
attr PV_KSEM obj-h8194-reading ProductVersion
attr PV_KSEM obj-h8194-type UINT16
attr PV_KSEM obj-h8195-reading FirmwareVersion
attr PV_KSEM obj-h8195-type UINT16
attr PV_KSEM obj-h8196-reading VendorName
attr PV_KSEM obj-h8196-type STR32
attr PV_KSEM obj-h8212-reading Productname
attr PV_KSEM obj-h8212-type STR32
attr PV_KSEM obj-h8228-reading SerialNumber
attr PV_KSEM obj-h8228-type STR32
attr PV_KSEM obj-h8244-reading MeasuringInterval
attr PV_KSEM obj-h8244-type UINT16
attr PV_KSEM room Strom->Photovoltaik
attr PV_KSEM sortby 02
attr PV_KSEM verbose 0
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 15 Juni 2020, 17:23:57
Hallo Christian,
das ist ja interessant. Ich scheine überall Werte zu bekommen.
Habe zudem (nach der Kostal ModbusDoku) noch folgende Werte hinzugefügt:
attr PV_EM410 obj-h40108-reading M_Exported
attr PV_EM410 obj-h40108-type UINT32
attr PV_EM410 obj-h40110-reading M_Exported_A
attr PV_EM410 obj-h40110-type UINT32
attr PV_EM410 obj-h40112-reading M_Exported_B
attr PV_EM410 obj-h40112-type UINT32
attr PV_EM410 obj-h40114-reading M_Exported_C
attr PV_EM410 obj-h40114-type UINT32
attr PV_EM410 obj-h40116-reading M_Imported
attr PV_EM410 obj-h40116-type UINT32
attr PV_EM410 obj-h40118-reading M_Imported_A
attr PV_EM410 obj-h40118-type UINT32
attr PV_EM410 obj-h40120-reading M_Imported_B
attr PV_EM410 obj-h40120-type UINT32
attr PV_EM410 obj-h40122-reading M_Imported_C
attr PV_EM410 obj-h40122-type UINT32

attr PV_EM410 obj-h40125-reading M_Exported_VA
attr PV_EM410 obj-h40125-type UINT32
attr PV_EM410 obj-h40127-reading M_Exported_VA_A
attr PV_EM410 obj-h40127-type UINT32
attr PV_EM410 obj-h40129-reading M_Exported_VA_B
attr PV_EM410 obj-h40129-type UINT32
attr PV_EM410 obj-h40131-reading M_Exported_VA_C
attr PV_EM410 obj-h40131-type UINT32
attr PV_EM410 obj-h40133-reading M_Imported_VA
attr PV_EM410 obj-h40133-type UINT32
attr PV_EM410 obj-h40135-reading M_Imported_VA_A
attr PV_EM410 obj-h40135-type UINT32
attr PV_EM410 obj-h40137-reading M_Imported_VA_B
attr PV_EM410 obj-h40137-type UINT32
attr PV_EM410 obj-h40139-reading M_Imported_VA_C
attr PV_EM410 obj-h40139-type UINT32


Anbei meine Werte (jungfräulich und verregnet).

VG
Bernd

PS: wo finde ich denn deine neuesten "PV_Anlage_1" "PV_EM410" und "DB statistiken"?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Juni 2020, 17:30:23
Hallo Bernd,

Werte bekomme ich auch, jedoch stimmt z.B. die Dekodierung fuer den Wert "obj-h40071-reading M_AC_Current" noch nicht. Da sollte die Summe alle Stroeme kommen und der Wert ist bei mir statisch.
Das schaue ich mir aber auch nochmal an.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 15 Juni 2020, 17:32:55
EDIT:
Ich habe gerade noch die weiterfuehrenden Threads aktualisiert
Die Python Skript Anbindung fehlt glaube ich noch. Da hatte ich nur ueberall im Forum verteilt mal was zu geschrieben, aber es wird auch da mal zeit etwas zu dokumentieren. Stay tuned...


Zitat
PS: wo finde ich denn deine neuesten "PV_Anlage_1" "PV_EM410" und "DB statistiken"?

PV_Anlage_1 ist jetzt wieder aktualisiert https://forum.fhem.de/index.php/topic,102297.msg958564.html#msg958564 (https://forum.fhem.de/index.php/topic,102297.msg958564.html#msg958564)

PV_EM410 steht hier https://forum.fhem.de/index.php/topic,109749.msg1064651.html#msg1064651 (https://forum.fhem.de/index.php/topic,109749.msg1064651.html#msg1064651)

DB statistiken : dafuer musst Du noch ein Python Skript implementieren. Lies nochmal hier https://forum.fhem.de/index.php/topic,102297.msg1064645/topicseen.html#msg1064645 (https://forum.fhem.de/index.php/topic,102297.msg1064645/topicseen.html#msg1064645) und hier https://forum.fhem.de/index.php/topic,109875.msg1038824.html#msg1038824 (https://forum.fhem.de/index.php/topic,109875.msg1038824.html#msg1038824) steht etwas zur Bilanz.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 15 Juni 2020, 21:05:13
Zu Deinen mehreren Antworten:

Erstmal Glückwunsch zur Autarkie! Aber: Wir haben zwar z.Zt. nicht das beste Solarwetter, dafür aber die längsten Tage des Jahres. Die Algorithmen des Herstellers sind (m.W. nicht beschrieben / dokumentiert). Ich könnte an Deiner Stelle 100-mal die Hotline anrufen und fragen: Sagt mal: Wie optimiert Ihr den Einschaltpunkt der Wärmepumpe? Verfügbarer Solarstrom versus Außentemperatur, versus Mindest- und sinnvoller Höchstwärmebedarf? Schon bei dieser Teilaufgabe könnte es m.E. zig wissenschaftliche Publikationen über den Ansatz zum Optimum geben. Und da reicht mir weder ein "Unsere Kunden sind begeistert" noch ein "Wir haben da neuste selbstlernende KI-Mechanismen implementiert" - alles Varianten des "Hokus-Pokus-Guck-mir-in-die-Augen-und-vertrau-mir". Ehrlicherweise werde ich es ja auch nicht besser machen, und eine unabhängige Vergleichsstudie, wie sie z.B. für Speicher die HTW Berlin durchführt, könnte sagen: "Das LWP-Speichermanagement von Kostal ist 8% effizienter und billiger als das von Hersteller XY". So weit sind wir aber noch lange nicht. Das ist eine spannende Entwicklung in den nächsten 10 Jahren, wobei m.E. Hardware (Kostal+Speicher) versus Management = Software nicht mit einander verknüpft sein müssen und vor allem auch nicht sollten. Die Kostal-, SolarEdge- oder SMA-Lösung für Storage und WR sollte mit jedem Management zusammenarbeiten.

Noch viel spannender als meine Tiefkühltruhe oder Deine Waschmaschine ist das BEV - hier geht - wie bei Deiner LWP - um richtig Holz und Geld.

Die EEBUS-Spec hatte ich ja neulich mal im Forum vorgestellt. Inzwischen bin ich beim Lesen und Stöbern "Wie sage ich meinem BEV, dass und wie stark es Laden soll - und kann auch zwischendurch die Leistung ändern"? z.B. auf die Spezifikation ISO 15118 gestoßen: Siehe hier: https://www.electrive.net/2019/09/29/plug-charge-wann-wird-das-laden-endlich-einfach/ und vor allem die großartige Seite von https://v2g-clarity.com/

Es wird also weiter rund um das Thema spannend bleiben und vor allem werden, wenn die ersten Hersteller das implementieren: die Protokolle scheinen offen zu sein.

Abschließend die Bemerkung: Nee, Du hast die olle Walzenwaschmaschine, ich den ollen Tiefkühlschrank. Wir überlassen das nicht dem Hersteller. Hätte ich jetzt Miele@Home (für einige Scheinchen mehr), könnte ich das Gleiche wie jetzt machen: Nur eleganter und über die Vordertür. Entweder über das neue Miele@HomeModul, oder über die ggf. frustreiche Erfahrung, zu gucken, wie vollständig und offen Miele EEBUS implementiert hat.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: gvzdus am 15 Juni 2020, 21:15:38
Ach, eins habe ich in meinem Beitrag vergessen: Aus dem Fenster gucke ich auf den Karton mit 30 Jinko-Modulen. Morgen geht der Aufbau los - in 1-2 Wochen sollte ich dann auch 10 kW auf dem arg teilverschattetem Dach mit einem 7 kW-WR haben. WR mit Optimizern für jedes Modul von SolarEdge. Dann bin ich also aus der 900-Watt-Klasse raus :-)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 10:32:57
Hallo gvzdus,

Gratulation zum PV Upgrade.

Ich stimme Dir in Deiner Ausfuehrung zu und wuenschte mir auch, dass das alles schon weiter waere, aber leider muessen wir Endverbraucher sehen, was wir zum Zeitpunkt der Anschaffung mit unserem Geld bekommen koennen. Da wird sicherlich noch viel Entwicklung bekommen.

Wenn unsere Waschmaschine mal kaput ist, muss ich eh schauen, was es dann gibt und was das kostet.

Auch wenn es noch kein optimales Speicher Management gibt, macht es vom Standpunkt des Supports sinn, das zu nutzen, was der Hersteller unterstuetzt.
Fuer den Plenticore mit Speicher habe ich bereits auch einen Weg gefunden das Speichermanagement Ein/Aus zu schalten und den MinSOC Wert zu veraendern. Nun brauche ich noch die richtige Prognose um zu entscheiden, wann es Sinn macht sofort zu laden. Dazu muesste ich wissen, ob eventuell die 70% Einspeisung ueberschritten werden, oder ob es am Nachmittag zu dunkel wird und somit der Speicher eventuell nicht mehr voll wird. Da hilft erst mal nur beobachten und mit der Wettervorhersage abzugleichen.

Das mit dem Hersteller Ueberlassen bedeutet bei mir nur, dass ich zuerst die Anlage nach Herstellerangaben konfiguriere, dann optimiere und darauf noch der FHEM Komfort kommt.
Bei mir kann ich FHEM runter fahren und das Haus laeuft trotzdem noch, nur halt mit weniger Komfort und etwas hoeherem Energiebedarf.

Gruss
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 11:11:36
Zitat von: speedAmaster am 15 Juni 2020, 17:23:57
Habe zudem (nach der Kostal ModbusDoku) noch folgende Werte hinzugefügt:
Okay, die Definitionen habe ich jetzt auch bei mir eingefuegt, danke dafuer.

Folgende Werte stimmen nicht und man kann erkennen, dass sie alle identisch sind. Bei Dir waere z.B. ein Wert auf 3,28 gerundet

M_AC_Current -327.68

M_AC_Voltage_AB -327.68
M_AC_Voltage_BC -327.68
M_AC_Voltage_CA -327.68
M_AC_Voltage_LL -327.68
M_AC_Voltage_LN -327.68



M_AC_Current -327.68  << hier sollte die Summe der drei folgenden Werte stehen

M_AC_Current_A 1.68
M_AC_Current_B 2.15
M_AC_Current_C 1.13


Laut Doku von Kostal steht bei "40071 M_AC_Current (sum of active phases) OBIS mapping 0x8000" und beim httpmod debugging steht auch immer fix diese 0x8000 im Register.
Ich werde jetzt mal Kostal anschreiben und um Unterstuetzung bitten. Bisher haben die immer geantwortet :-)

Der Thread dazu steht hier [url][https://forum.fhem.de/index.php/topic,109984.0.html/url]

Gruss
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: pejonp am 16 Juni 2020, 11:26:55
@ch.eick

Der Wert stimmt doch 0x8000 in dec sind doch 32768.
Vielleicht wird kein Wert gemessen?

Pejonp
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 11:35:07
Zitat von: pejonp am 16 Juni 2020, 11:26:55
Der Wert stimmt doch 0x8000 in dec sind doch 32768.
Vielleicht wird kein Wert gemessen?

Das ist genau das Problem, es wird fix 0x8000 im Register geliefert, es sollte jedoch die Summe der Stroeme sein. Ich habe gerade den Kostal Service angeschrieben, ob das Register noch nicht unterstuetzt wird. Als mein KSEM geliefert wurde waren in der FW noch alle Register auf Null und die haben mir vorab die naechste FW zum Testen gesendet. Da wird wohl noch fleissig dran gearbeitet ;-)

Gruss
   Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 16 Juni 2020, 12:26:39
ich habe die Version 1.2.0 drauf. KOSTAL_Smart_Energy_Meter_Update_1_2_0.raucb
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 13:25:52
Zitat von: speedAmaster am 16 Juni 2020, 12:26:39
ich habe die Version 1.2.0 drauf. KOSTAL_Smart_Energy_Meter_Update_1_2_0.raucb
Okay, die lade ich gerade herunter.

EDIT: Die Version 1.2.0 liefert das selbe Ergebnis.
  Der Firmware Upgrade ging uebrigens problemlos ueber das KSEM Web Interface.
  Der Plenticore schreibt dann kurz
     "16.06.20 13:35 6006 Systemstörung inaktiv"
     "Energiemeter kann nicht ausgelesen werden. Bitte kontrollieren Sie die Verbindung zu dem Sensor."
  ins Ereignisslog. Leider konnte ich in der Plenticore Oberfaeche nicht erkennen, dass das Ereigniss wieder geloescht wurde.
  Zur Kontrolle habe ich mal auf's Display geschaut, da leuchtete auch dann die gruene Lampe wieder.

Wird bei Dir den ein wechselnder Wert gelesen, der der Summe der Stroeme entspricht? Oder bleibt "M_AC_Current" konstant?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 16 Juni 2020, 14:31:22
M_AC_Current ist und bleibt bei 3.28
M_AC_Voltage_AB, M_AC_Voltage_BC, M_AC_Voltage_CA, M_AC_Voltage_LL, M_AC_Voltage_LN beiben auf 327.68
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 14:43:36
Zitat von: speedAmaster am 16 Juni 2020, 14:31:22
M_AC_Current ist und bleibt bei 3.28
3.28 entspricht 327.68 /100 auf 2 Nachkommastellen gerundet ;-)
Das sind dann die besagten 0x8000 in Dezimal 32768 .

Das Ticket bei Kostal ist offen und wird sicher in einigen Tagen beantwortet, oder ich frag erneut nach. Die kennen mich schon :-)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 16 Juni 2020, 14:45:44
dann warten wir mal geduldig. Sag mir, wenn Kostal mich auch noch kennen lernen soll  :D
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 14:52:34
Zitat von: speedAmaster am 16 Juni 2020, 14:45:44
dann warten wir mal geduldig. Sag mir, wenn Kostal mich auch noch kennen lernen soll  :D
Die haben mich sogar schon zwei mal zurueck gerufen :-) Ich werde da als Installateur gefuehrt ;-)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 16 Juni 2020, 14:54:50
Ich habe meinen Installateur auch schon verwirrt und ihm den Anlagenzugang erschwert, ob meiner pro-aktiven Aktivitäten.....
Alles wird gut!
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 15:09:09
Zitat von: speedAmaster am 16 Juni 2020, 14:54:50
Ich habe meinen Installateur auch schon verwirrt und ihm den Anlagenzugang erschwert, ob meiner pro-aktiven Aktivitäten.....
Der Anlageninstallateur muss sich ja bei Kostal registrieren, das habe ich telefonisch fuer Ihn gemacht, natuerlich in Absprache mit Ihm  :-)
Ich denke, wenn er noch einen Kostal in dieser Region installieren muss, dann wird er bei mir Anrufen, so ist das hier auf dem Land halt.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 15:20:00
Nur als kleine Kostprobe...

Die Ausgabe ueber die API des Kostal Plenticore gibt JSON aus, was dann ueber die FHEM Schnittstelle ins FHEM Device geschickt werden kann.

fhem@raspberrypi:~/python/kostal$ python3 plenticore_status.py [IP-Adresse_SCB] [IP-Adresse_FHEM]  /events/latest
Connected to the inverter PUCK RESTful API/scb with SW-Version 01.13.04122 and API-Version 0.2.0
[
    {
        "category": "error",
        "code": 6006,
        "description": "Energy meter cannot be read.\nPlease check the connection to the sensor.",
        "end_time": "2020-06-16T13:36:46",
        "group": "System fault",
        "is_active": false,
        "long_description": "Energy meter cannot be read.\nPlease check the connection to the sensor.",
        "start_time": "2020-06-16T13:35:38"
    },
    {
        "category": "info",
        "code": 5066,
        "description": "Grid parameters are outside the permitted range. If the fault persists after a few minutes, please contact your installer or call our hotline.",
        "end_time": "2020-04-07T06:47:48",
        "group": "External grid fault",
        "is_active": false,
        "long_description": "Grid parameters are outside the permitted range. If the fault persists after a few minutes, please contact your installer or call our hotline.",
        "start_time": "2020-04-07T06:47:39"
    },
snip...


Eine Liste der Daten, die ueber die API abgefragt werden koennen.
Genauso gibt es auch eine Liste fuer die Settings, wobei die Meisten jedoch ueber die API nur readonly sind.

fhem@raspberrypi:~/python/kostal$ python3 plenticore_status.py [IP-Adresse_SCB] [IP-Adresse_FHEM] /processdata
Connected to the inverter PUCK RESTful API/scb with SW-Version 01.13.04122 and API-Version 0.2.0
[
    {
        "moduleid": "devices:local",
        "processdataids": [
            "Dc_P",
            "DigitalIn",
            "EM_State",
            "Grid_L1_I",
            "Grid_L1_P",
            "Grid_L2_I",
            "Grid_L2_P",
            "Grid_L3_I",
            "Grid_L3_P",
            "Grid_P",
            "Grid_Q",
            "Grid_S",
            "HomeBat_P",
            "HomeGrid_P",
            "HomeOwn_P",
            "HomePv_P",
            "Home_P",
            "Inverter:State",
            "Iso_R",
            "LimitEvuAbs",
            "LimitEvuRel",
            "WorkTime"
        ]
    },
    {
        "moduleid": "devices:local:ac",
        "processdataids": [
            "CosPhi",
            "Frequency",
            "InvIn_P",
            "InvOut_P",
            "L1_I",
            "L1_P",
            "L1_U",
            "L2_I",
            "L2_P",
            "L2_U",
            "L3_I",
            "L3_P",
            "L3_U",
            "P",
            "Q",
            "ResidualCDc_I",
            "S"
        ]
    },
    {
        "moduleid": "devices:local:battery",
        "processdataids": [
            "BatManufacturer",
            "BatModel",
            "BatSerialNo",
            "BatVersionFW",
            "Cycles",
            "FullChargeCap_E",
            "I",
            "P",
            "SoC",
            "U",
            "WorkCapacity"
        ]
    },
    {
        "moduleid": "devices:local:powermeter",
        "processdataids": [
            "CosPhi",
            "Frequency",
            "L1_I",
            "L1_P",
            "L1_Q",
            "L1_S",
            "L1_U",
            "L2_I",
            "L2_P",
            "L2_Q",
            "L2_S",
            "L2_U",
            "L3_I",
            "L3_P",
            "L3_Q",
            "L3_S",
            "L3_U",
            "P",
            "Q",
            "S"
        ]
    },
    {
        "moduleid": "devices:local:pv1",
        "processdataids": [
            "I",
            "P",
            "U"
        ]
    },
    {
        "moduleid": "devices:local:pv2",
        "processdataids": [
            "I",
            "P",
            "U"
        ]
    },
    {
        "moduleid": "scb:event",
        "processdataids": [
            "ErrMc",
            "ErrSFH",
            "Event:ActiveErrorCnt",
            "Event:ActiveWarningCnt"
        ]
    },
    {
        "moduleid": "scb:export",
        "processdataids": [
            "PortalConActive"
        ]
    },
    {
        "moduleid": "scb:statistic:EnergyFlow",
        "processdataids": [
            "Statistic:Autarky:Day",
            "Statistic:Autarky:Month",
            "Statistic:Autarky:Total",
            "Statistic:Autarky:Year",
            "Statistic:CO2Saving:Day",
            "Statistic:CO2Saving:Month",
            "Statistic:CO2Saving:Total",
            "Statistic:CO2Saving:Year",
            "Statistic:EnergyHome:Day",
            "Statistic:EnergyHome:Month",
            "Statistic:EnergyHome:Total",
            "Statistic:EnergyHome:Year",
            "Statistic:EnergyHomeBat:Day",
            "Statistic:EnergyHomeBat:Month",
            "Statistic:EnergyHomeBat:Total",
            "Statistic:EnergyHomeBat:Year",
            "Statistic:EnergyHomeGrid:Day",
            "Statistic:EnergyHomeGrid:Month",
            "Statistic:EnergyHomeGrid:Total",
            "Statistic:EnergyHomeGrid:Year",
            "Statistic:EnergyHomePv:Day",
            "Statistic:EnergyHomePv:Month",
            "Statistic:EnergyHomePv:Total",
            "Statistic:EnergyHomePv:Year",
            "Statistic:OwnConsumptionRate:Day",
            "Statistic:OwnConsumptionRate:Month",
            "Statistic:OwnConsumptionRate:Total",
            "Statistic:OwnConsumptionRate:Year",
            "Statistic:Yield:Day",
            "Statistic:Yield:Month",
            "Statistic:Yield:Total",
            "Statistic:Yield:Year"
        ]
    }
]


Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 Juni 2020, 15:42:04
Heute ist z.B. so eine Situation, bei der der Speicher bisher bis 13:00 Uhr nur 84% geladen wurde.
Das passte trotzdem recht gut, da um 14:00 Uhr die LWP das WW bereitet und der Pool um 12:30 dazugeschaltet wurde.
Irgendwie passt das mit dem Kostal Algorithmus bis dahin ganz gut. Die LWP und der Pool starten ja immer so um diese Zeit.
Jetzt sind jedoch beide Geraete durch und es werden ca 3000 Watt ins Netz eingespeist, aber es waere besser den Speicher vollzuladen, da es ja auch die naechsten Tage eher schlechtes Wetter geben wird. Kostal verwendet jedoch keine Wetterprognose und kann das nicht wissen.

Deshalb habe ich "Battery:SmartBatteryControl:Enable" auf "0" gesetzt und siehe da, es wird mit den ca 3000 Watt der Speicher geladen...alles wird gut. MinSOC ist auf 15% geblieben.
Sobald der Speicher voll ist werde ich dann wieder "Battery:SmartBatteryControl:Enable" auf "1" setzen und hoffen, dass der Plenticore nicht alles vergessen hat.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 18 Juni 2020, 12:58:51
Es hat mal wieder ein Update im ersten Post (https://forum.fhem.de/index.php/topic,102297.msg958564.html#msg958564) ergeben.

Update 2020.06.18 - Raw Definition von LWP_PV DOIF aktualisiert
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 17 Juli 2020, 16:45:12
Hallo zusammen,
es gibt mal was neues von Kostal fuer den KSEM
Wir hatte hierüber bereits geschrieben 0x800000000 im Register (https://forum.fhem.de/index.php/topic,102297.msg1064899.html#msg1064899) und nun ist die Antwort da.

Zitat
der KSEM ermittelt nicht alle Werte, welche in der SunSpec spezifiziert sind. Alle nicht unterstützen Werte sind mit 0x8000 gekennzeichnet.
Für die nicht unterstützten Zählerstände wird die 0x800000000 ausgegeben.

Der Summenstrom M_AC_Current (sum of active phases) kann aber durch den Endanwender selber berechnet werden aus der Summe
der Einzelwerte (Phase A AC current, Phase B AC current Phase C AC current)

Die einzeln Spannungen zwischen den Phasen können wir nicht messen und diese werden deshalb nicht ausgegeben.

Gruss
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 20 Juli 2020, 10:18:43
Hallo zusammen,
ich moechte noch einen link zu einem anderen Forum hinzufuegen, in dem grundlegend ueber Kostal  KSEM und Plenticore (https://www.photovoltaikforum.com/thread/138588-kommunikation-plenticore-und-smart-energy-meter/?pageNo=5#post2045692) diskutiert wird. Dort geht es nicht nur um die FHEM Einbindung, sondern auch um die dynamische 70% Regelung (https://www.photovoltaikforum.com/thread/129195-kostal-plenticore-intelligente-batteriesteuerung-noch-intelligenter-machen-70-we/?postID=2042884#post2042884)
Achtung, Ihr verlasst mit dem Klick auf die Links dieses Forum!!!
Fuer die Inhalte und die Pflege des externen Forums wird wie immer keine Haftung uebernommen.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: speedAmaster am 20 Juli 2020, 10:20:17
Hallo, kannst Du den Link nochmal prüfen? Geht bei mir nicht.....
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 20 Juli 2020, 10:22:58
Zitat von: speedAmaster am 20 Juli 2020, 10:20:17
Hallo, kannst Du den Link nochmal prüfen? Geht bei mir nicht.....
Du warst einfach zu schnell, ich habe gerade nich editiert.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 21 August 2020, 14:27:07
Zitat von: ch.eick am 16 Juni 2020, 15:20:00
Nur als kleine Kostprobe...

Die Ausgabe ueber die API des Kostal Plenticore gibt JSON aus, was dann ueber die FHEM Schnittstelle ins FHEM Device geschickt werden kann.


Hallo Christian

Kannst du an dieser Stelle mal posten wie der genaue Weg ist, diese Werte in fhem zu bekommen? Ich habe bis jetzt einfach die Modbus Frage aus deinem ersten Post hier eingebaut. Funktioniert!
Das API bringt aber noch weitere coole Readings welche ich gerne für die Visualisierung einsetzen würde.

Besten Dank
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 21 August 2020, 15:48:53
Zitat von: Mumpitz am 21 August 2020, 14:27:07
Kannst du an dieser Stelle mal posten wie der genaue Weg ist, diese Werte in fhem zu bekommen? Ich habe bis jetzt einfach die Modbus Frage aus deinem ersten Post hier eingebaut. Funktioniert!
Das API bringt aber noch weitere coole Readings welche ich gerne für die Visualisierung einsetzen würde.

Die coolen Readings gibt es hier, bei der Bilanz (https://forum.fhem.de/index.php/topic,109875.msg1038741.html#msg1038741) . Da habe ich auch gerade nochmal alles aktualisiert.

Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 27 August 2020, 14:07:45
2020.08.27 - Es wurde nun eine Wiki Seite begonnen Kostal Plenticore 10 Plus (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus#Projekte_der_FHEM-Community)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 29 August 2020, 12:03:57
Sooo, ab jetzt ist das Wiki die erste Quelle der Wahl!
https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: Mumpitz am 29 August 2020, 12:25:51
Zitat von: ch.eick am 29 August 2020, 12:03:57
Sooo, ab jetzt ist das Wiki die erste Quelle der Wahl!
https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus)

Sieht Hammer aus, Danke!!!!
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ph1959de am 29 August 2020, 12:52:31
Zitat von: ch.eick am 29 August 2020, 12:03:57
Sooo, ab jetzt ist das Wiki die erste Quelle der Wahl!
Ich habe mal zwei kleine Änderungen im Wiki-Beitrag gemacht:

  • Infobox Hardware "repariert"
  • Exemplarisch ein Stück Python code in <Syntaxhighlight> Tags gesetzt

Wenn Du möchtest - und soweit mit dem Inhalt fertig bist - kann ich gern mal komplett drüberschauen.

Peter
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: DS_Starter am 29 August 2020, 13:41:37
Hallo Christian,

ich habe zwar keinen Kostal plenticore, aber lese immer mal interressiert rein.  :)

Nur ein kleiner Hinweis, im Wiki hast du die verwendeten Module aufgeführt:


- Modbus
- HTTPMOD
- expandJSON
- LogDb
- LogDbRep
- dummy
- Shelly
- HourCounter
- readingsGroup


Die Module LogDb und LogDbRep gibt es nicht, die Module heißen DbLog und DbRep. Das müsstest du mal durchgehend ändern, sonst könnten Anfänger bisschen durcheinander kommen was Module und was Devices sind.

LG,
Heiko
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 29 August 2020, 15:22:20
Zitat von: DS_Starter am 29 August 2020, 13:41:37
ich habe zwar keinen Kostal plenticore, aber lese immer mal interressiert rein.  :)

Die Module LogDb und LogDbRep gibt es nicht, die Module heißen DbLog und DbRep. Das müsstest du mal durchgehend ändern, sonst könnten Anfänger bisschen durcheinander kommen was Module und was Devices sind.
Hallo Heiko,
Du hast natürlich recht, aber vor lauter Buchstaben sieh man das manchmal nicht ;-)
vielen Dank
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 29 August 2020, 15:26:53
Zitat von: ph1959de am 29 August 2020, 12:52:31
Ich habe mal zwei kleine Änderungen im Wiki-Beitrag gemacht:

  • Infobox Hardware "repariert"
  • Exemplarisch ein Stück Python code in <Syntaxhighlight> Tags gesetzt
Danke dafür, ich habe es jetzt auch durchgängig, auch für Perl und sogar die DOIFs sehen mit "Perl" besser lesbar aus.

Zitat
Wenn Du möchtest - und soweit mit dem Inhalt fertig bist - kann ich gern mal komplett drüberschauen.
Das Angebot nehme ich gerne an, die SVGs sind nun auch drin, Du kannst gerne schon mal durchgehen.
Das ist mein erstes Wiki und Du kannst auch gerne direkt rein schreiben.

Wie bekomme ich nun noch Beispielbilder rein?
Gibt es auch eine Formatierung, die den Code zum Scrollen Darstellt? Dann wäre die Seite eswas kürzer :-)

Gruß
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 29 August 2020, 15:28:28
Zitat von: Mumpitz am 29 August 2020, 12:25:51
Sieht Hammer aus, Danke!!!!
Hey Mumpitz,
Du bist jetzt aufgerufen Deine ersten Erfahrungen beizusteuern. Ich denke Du bist der Erste, der es so komplett übernommen hat.
Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 31 August 2020, 17:03:45
Hallo Ihr lieben Mitstreiter,

seit geraumer Zeit machen mir die vielen Variablen, die ich teilweise noch hart codiert in den Geräten verstreut habe etwas sorge.
Auch die Portabilität für den Forecast ist hiervon besonders betroffen.

Aus diesem Grund führe ich gerade ein Dummy ein, dass die zu konfigurierenden Variablen beherbergen soll.

Bitte schaut bei Zeiten ins Wiki, wo ich die Aktualisierungen einpflege.

Gruß
     Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 03 September 2020, 13:53:40
Hallo zusammen,

ich habe im PV Eigenverbrauch jetzt mal den ersten Forecast eingebaut.

Am aktuellen Tag wird geschaut, wie die Prognose für 12:00 Uhr ist und dann die Startzeit nach vorne verschoben.

################################################################################################################
## 13 Pool Startzeit durch Forecast verschieben. Der Forecast wird um 7:00 im Device PV_Schedule aktualisiert
##
DOELSEIF
([07:17])
    (
     {my $timestamp = POSIX::strftime("%Y-%m-%d 12:00:00",localtime(time));
      my $VALUE     = DbReadingsVal("LogDBRep_select_PV_Forecast","PV_Anlage_1:Solar_Calculation_fc0",$timestamp,0);
      if ( $VALUE < 4000 )
         {fhem("setreading Pool TimeStart ".ReadingsVal("Pool","TimeStartWinter",0) )}
      else
         {fhem("setreading Pool TimeStart ".ReadingsVal("Pool","TimeStartSummer",0) )}
     },
     {Log 3, "Pool_PV cmd_13 : Pool TimeStart switched"}
    )

Der Forecast wird um 7:00 Uhr erzeugt, damit er so aktuell wie möglich ist.

Solar_Calculation_fc0 mit localtime(time) ist der Tages Forecast, der am selben Tag erstellt wurde.
Solar_Calculation_fc1 mit localtime(time) ist der Forecast, der am Vortag für den aktuellen Tag erstellt wurde
Solar_Calculation_fc1 mit localtime(time + 24*60*60) dieser Forecast wurde heute, für morgen erzeugt

*_fc1 ist immer ungenauer als *_fc0 , da die Daten regelmäßig aktualisiert werden.

Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 06 September 2020, 15:07:50
Hallo zusammen,
mit etwas Stolz möchte ich verkünden, dass es nun geglückt ist mit dem Plenticore über die API Schnittstelle mit dem HTTPMOD Modul zu kommunizieren. Dies umfasst folgende Möglichkeiten:

get:
## start, finish, create_session werden für den Login benötigt und arbeiten über userreadings mit zwei Python Skripten zusammen
01_/auth/start
02_/auth/finish
03_/auth/create_session

## Auskunft über den Anmeldezustand, es muss aber kurz vorher abgefragt werden
04_/auth/me

## Informationen zum Plenticore
05_/info/version

20_/processdata/scb_statistic_EnergyFlow

## Liste aller Plenticore Module. Es werden keine readings erzeugt. Das Ergebnis steht im httpbody, der mit attr <Device> showBody 1 angezeigt werden kann.
21_/modules_list

## Hier gibt es viele technische Loggings. Sollte es Probleme beim Abholen der Daten geben kann es am timeout liegen
24_/logdata/download

## Speicher Type habe ich folgendes ermitteln können 0=keine , 4=BYD
## Die Werte können auch gesetzt werden, siehe set Befehle
31_Battery_Type
32_Battery_MinHomeComsumption
33_Battery_Strategy
34_Battery_MinSoc
35_Battery_SmartBatteryControl_Enable
36_Battery_DynamicSoc_Enable

## Das zeigt den FW Update Status beim FW Laden an. Die Rückmeldung ist im httpbody zu sehen, es werden keine readings erzeugt.
41_/update/status

set:
## Eine bestehende Session wird abgemeldet
06_/auth/logout

## Die letzten Events können in deutsch oder englisch abgeholt werden
23_/events/latest_5 [en-gb,de-de]

## Batterie Einstellungen können verändert werden. Es werden einige Werte vorgeschlagen. Bitte vorher immer den aktuellen Wert abfragen und besser aufschreiben!
## Hier sollte nur etwas gesetzt werden, wenn man sich sicher ist, was man tut.
31_Battery_Type [0,4]
32_Battery_MinHomeComsumption
33_Battery_Strategy
34_Battery_MinSoc
35_Battery_SmartBatteryControl_Enable
36_Battery_DynamicSoc_Enable

## Der reboot läuft noch nicht. Da ist die API ziemlich zickig. Ich habe ein Skript, womit es bereits geht :-)
51_/system/reboot


1 ) Bei einem fehlenden Login wird bereits ein neues Login durchgeführt. Das gilt auch, wenn man ein Logoff machen möchte, aber gar keine aktuelle Session hat :-) It's not a bug, it's a feature :-)

2 ) Möchte man bewusst ein Login machen, ohne bereits ein API Kommando zu senden, dann beginnt man mit "get 01_/auth/start" alle weiteren Schritte folgen dann automatisch,
    bis die auth_sessionId empfangen wurde.

3 ) "get /auth/me" kann immer abgefragt werden, um zu erfahren, ob die Session noch gültig ist. Wenn nicht erfolgt ein neuer Session Aufbau

4 ) 05_/info/version geht auch ohne Session

5 ) Die Statistiken werden mit "get 20_/processdata/scb_statistic_EnergyFlow" abgeholt und bereits in der Datenbank geloggt. Dies sollte dann zyklisch erfolgen und wird noch im Wiki fest eingebaut.

6 ) für die Batterie Einstellungen stehen "[g|s]et 3[1-6]_Battery_[Type|MinHomeComsumption|Strategy|MinSoc|SmartBatteryControl_Enable|DynamicSoc_Enable]" zur Verfügung.
    Bitte zuerst einen Wert abfragen und merken, bevor er neu gesetzt wird! Was z.B. bei einem falschen Battery_Type geschieht ist nicht bekannt, könnte aber dem Speicher schaden!

7 ) "set 23_/events/latest_5 ..." ist nicht als get Befehl implementiert, da hier die Sprache ausgewählt werden kann.

8 ) Am "set 51_/system/reboot" wird noch gearbeitet. Da kommt noch aktuell ein Fehler.

Die RAW Definition zum PV_Anlage_1_API steht im Wiki Kostal_Plenticore_10_Plus (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus), so wie auch die Python Skripte.

Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 September 2020, 17:20:47
Hallo zusammen,
es gibt wieder Neuerungen. Durch einen Tip von amenomade ist mein Mechanismus die Daten vom DWD abzuholen komplett überflüssig geworden. Die bisherige Implementierung habe ich aus einem anderen Forum übernommen und angepasst gehabt, jedoch gibt es bereits ein DWD_Forecast Modul, das mit einem Attribut ebenfalls die Rad1h Werte liefern kann. Lange rede kurzen Sinn, ich war Betriebsblind und habe es nun korrigiert.
Die aktuelle Version ist wie immer im Wiki.

Neu:
- DWD_Forecast
- PV_Schedule
- 99_myUtils - Solar_forecast()

Raus:
- dwd_get_forecast.py

Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 September 2020, 17:26:38
Und noch eine Änderung wegen der Statistiken des Plenticore, die schon etwas her ist und auch im Wiki steht.

Neu:
PP_Anlage_1 geändert
PV_Anlage_1_API
plenticore_auth_finish.py
plenticore_auth_session.py

Raus:
Im PV_Anlage_1 die readings der Statistiken
plenticore_statistic.py

Wer schon etwas länger dabei ist sollte den Umstieg laut Wiki durchführen. Neue Interessenten implementieren einfach nach dem Wiki.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 September 2020, 17:29:26
Momentan arbeite ich an der BYD Speicher Abfrage.

Das ganze läuft bereits mit HTTPMOD Login, jedoch müssen noch die readings erarbeitet werden.
Damit würde dann noch ein Python Skript wegfallen, wodurch die Implementierung sauberer im FHEM integriert sein wird.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 13 September 2020, 17:31:51
Wer könnte sich denn bei den Diagrammen in Grafana mit einbringen?
Da bräuchte ich echt noch Unterstützung :-)

- Die Daten sind in der SQL Datenbank
- Mein Docker mit Grafana ist auch schon gestartet.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 14 September 2020, 18:26:45
Hallo zusammen,

könntet Ihr mir bitte Muster aus dem PV_Anlage_1 Device für

Battery_Type 892941625

zusenden? Ich hoffe, dass man mit

8929 => 8,93  KW die Nennleistung ableiten kann.

Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: plin am 16 September 2020, 08:46:35
Zitat von: ch.eick am 13 September 2020, 17:31:51
Wer könnte sich denn bei den Diagrammen in Grafana mit einbringen?
Da bräuchte ich echt noch Unterstützung :-)

- Die Daten sind in der SQL Datenbank
- Mein Docker mit Grafana ist auch schon gestartet.
ok, das war das Startsignal.

Ich habe meine Panels von Heckert auf dem Dach, warte aber noch auf meinen Kostal Plenticore Plus 7 Wechselrichter und den neuen Zähler. Aktuell sammle ich alles was ich finde. Aus Deinem Wiki habe ich bereits einiges übernommen (und verworfen). Für wunderground nutze ich das WEATHER-Modul, da ich Probleme mit Celsius/Fahrenheit hatte. Ich habe mittlerweile die Solar-Daten vom DWD in meinem FHEM und einer MySQL-Datenbank, die Vorhersage von Proplanta sowie zwei Wetterstattionen aus der Nachbarschaft via wunderground.

Aktuell sieht meine erste Übersicht wie angehängt aus.

Was will ich tun?

  • Belastbare Forecast-Daten zusammentragen, um visuell getriggert oder via FHEM Verbraucher tagsüber einzuschalten.
  • Diverse Auswertungen (Wie gut bin ich schon mit der Eigennutzung?)
  • Basisdaten für die Steuer
  • Lastprofile meiner Stromverbraucher
  • etc.

Ich habe da also viel Bedarf. Mein Ansatz für die Datensammlung ist eine eigene MySQL-DB namens Solar mit separaten Tabellen für die Quellen.

VG plin

P.S. Meine FHEM-Landschaft https://wiki.fhem.de/wiki/Benutzer:Plin53177 (https://wiki.fhem.de/wiki/Benutzer:Plin53177)
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 September 2020, 09:39:40
Zitat von: plin am 16 September 2020, 08:46:35
ok, das war das Startsignal.

Ich habe meine Panels von Heckert auf dem Dach, warte aber noch auf meinen Kostal Plenticore Plus 7 Wechselrichter und den neuen Zähler. Aktuell sammle ich alles was ich finde. Aus Deinem Wiki habe ich bereits einiges übernommen (und verworfen). Für wunderground nutze ich das WEATHER-Modul, da ich Probleme mit Celsius/Fahrenheit hatte. Ich habe mittlerweile die Solar-Daten vom DWD in meinem FHEM und einer MySQL-Datenbank, die Vorhersage von Proplanta sowie zwei Wetterstattionen aus der Nachbarschaft via wunderground.

Aktuell sieht meine erste Übersicht wie angehängt aus.

Was will ich tun?

  • Belastbare Forecast-Daten zusammentragen, um visuell getriggert oder via FHEM Verbraucher tagsüber einzuschalten.
  • Diverse Auswertungen (Wie gut bin ich schon mit der Eigennutzung?)
  • Basisdaten für die Steuer
  • Lastprofile meiner Stromverbraucher
  • etc.

Ich habe da also viel Bedarf. Mein Ansatz für die Datensammlung ist eine eigene MySQL-DB namens Solar mit separaten Tabellen für die Quellen.

VG plin

P.S. Meine FHEM-Landschaft https://wiki.fhem.de/wiki/Benutzer:Plin53177 (https://wiki.fhem.de/wiki/Benutzer:Plin53177)

1) Eine eigene SQL Datenbank ist nicht notwendig und erhöht den Aufwand. => DbLog im Docker Container
2) Wetter Daten:
    - nicht zu viele in die Datenbank, weniger ist mehr, also nur, was Du auch darstellen möchtest
    - Proplanta ist jetzt bei mir auch raus
    - wunderground habe ich doch umgerechnet? Das liefert, bei passenden Stationen tolle momentan Radiation
    - DWD Implementierung mit Leistungsprognose findes Du auf der Wiki Seite, das ist ganz frisch am WE überarbeitet
      Ich logge vom DWD keine Daten, sondern nur die Leistungsprognose der PV Anlage von heute und morgen.
      nach maximal einem Monat interessiert die Prognose eh nicht mehr.
3) Leistung
    - Lastprofile bekomme ich über die shellys, bzw den Stromverbrauch, den ich mir dann im Diagramm mit darstelle.
      Hier ist der Weg zum Grafana, da man dort wohl auch Einzelverbräuche graphisch stapeln kann.
    - Bei den Forecast Daten zählt eigentlich nur die Leistungsprognose in einem möglichst engen Raster. Mit dem DWD gelingt das sehr gut auf Stundenbasis.
      Wolken und Regen habe ich auch gut im Griff, denn das macht den Unterschied. Das ist zwar recht tricky einzustellen, aber dann läuft es.

Im Diagramm sieht man sehr schön die gemessene SolarRadiation der Nachbarn mit dem Knick um 11:00 Uhr.
Der DWD ist morgens immer recht forsch bei dem Wert um 9:00 Uhr. In den letzten Tagen ist der Einfluss von Regen und Wolken sehr niedrig, mal sehen was der Herbst so bringt.
Ich habe die default Werte meiner Anlage im Wiki, im PV_Anlage_1_config abgelegt.

In den letzten 2 Wochen war sehr viel Bewegung auf der Wiki Seite. Aktualisiere da am besten nochmal.

Bekommst Du auch einen Speicher?
Was hast Du verworfen, oder hat Dir nicht gefallen?
Was könnte man noch verbessern?

Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: plin am 16 September 2020, 10:11:22
Hi Christian,

Zitat von: ch.eick am 16 September 2020, 09:39:40
1) Eine eigene SQL Datenbank ist nicht notwendig und erhöht den Aufwand. => DbLog im Docker Container
2) Wetter Daten:
    - nicht zu viele in die Datenbank, weniger ist mehr, also nur, was Du auch darstellen möchtest
    - Proplanta ist jetzt bei mir auch raus
    - wunderground habe ich doch umgerechnet? Das liefert, bei passenden Stationen tolle momentan Radiation
    - DWD Implementierung mit Leistungsprognose findes Du auf der Wiki Seite, das ist ganz frisch am WE überarbeitet
      Ich logge vom DWD keine Daten, sondern nur die Leistungsprognose der PV Anlage von heute und morgen.
      nach maximal einem Monat interessiert die Prognose eh nicht mehr.
3) Leistung
    - Lastprofile bekomme ich über die shellys, bzw den Stromverbrauch, den ich mir dann im Diagramm mit darstelle.
      Hier ist der Weg zum Grafana, da man dort wohl auch Einzelverbräuche graphisch stapeln kann.
    - Bei den Forecast Daten zählt eigentlich nur die Leistungsprognose in einem möglichst engen Raster. Mit dem DWD gelingt das sehr gut auf Stundenbasis.
      Wolken und Regen habe ich auch gut im Griff, denn das macht den Unterschied. Das ist zwar recht tricky einzustellen, aber dann läuft es.

In den letzten 2 Wochen war sehr viel Bewegung auf der Wiki Seite. Aktualisiere da am besten nochmal.

Was hast Du verworfen, oder hat Dir nicht gefallen?
Was könnte man noch verbessern?

Gruß
    Christian

1) MySQL- bzw. MariaDB läuft schon seit Jahren auf meinem Server, da kommt es auf eine DB mehr auch nicht an.

2) wunderground habe ich durch Dein Wiki neu entdeckt. Im Wiki fehlte der Hinweis auf define uconvInit notify global:INITIALIZED {use UConv}, deshalb sind mir vermutlich die HTTPMOD-basierten Daten um die Ohren geflogen. Das habe ich aber erst jetzt als möglich Ursache identifiziert, denn ich habe immer nur Fahrenheit statt Celsius gesehen und irgendwann genervt auf WEATHER umgestellt. Da ich im Augenblick noch in der Findungsphase bin, gönne ich mir die eine oder andere Quelle zusätzlich. Proplanta nutze ich z.B. schon seit Jahren für die Planung der Gartenbewässerung. Durch wunderground kriege ich jetzt sogar den realen Niederschlag aus der Nachbarschaft.
dwdforecast.py: In der pvlib fehlen meine Module und der Wechselrichter. Hast Du die nachgetragen und welche Spalte enthält welche Daten aus dem Datenblatt?

3) Leistung: Da brauche ich erst mal Hardware ...

Was habe ich verworfen? Meine iegne MariaDB statt DbLog, WEATHER statt HTTPMOD.
Was man verbessern könnte? Ich brauche erst mal das Gesamtbild und eigene Daten, dann kommen schon die Ideen.

VG Peter
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 September 2020, 11:53:23
Zitat von: plin am 16 September 2020, 10:11:22
Hi Christian,

1) MySQL- bzw. MariaDB läuft schon seit Jahren auf meinem Server, da kommt es auf eine DB mehr auch nicht an.

2) wunderground habe ich durch Dein Wiki neu entdeckt. Im Wiki fehlte der Hinweis auf define uconvInit notify global:INITIALIZED {use UConv}, deshalb sind mir vermutlich die HTTPMOD-basierten Daten um die Ohren geflogen. Das habe ich aber erst jetzt als möglich Ursache identifiziert, denn ich habe immer nur Fahrenheit statt Celsius gesehen und irgendwann genervt auf WEATHER umgestellt. Da ich im Augenblick noch in der Findungsphase bin, gönne ich mir die eine oder andere Quelle zusätzlich. Proplanta nutze ich z.B. schon seit Jahren für die Planung der Gartenbewässerung. Durch wunderground kriege ich jetzt sogar den realen Niederschlag aus der Nachbarschaft.
dwdforecast.py: In der pvlib fehlen meine Module und der Wechselrichter. Hast Du die nachgetragen und welche Spalte enthält welche Daten aus dem Datenblatt?

3) Leistung: Da brauche ich erst mal Hardware ...

Was habe ich verworfen? Meine iegne MariaDB statt DbLog, WEATHER statt HTTPMOD.
Was man verbessern könnte? Ich brauche erst mal das Gesamtbild und eigene Daten, dann kommen schon die Ideen.

VG Peter

Okay, das mit dem uconv schau ich mir an, das wird natürlich benötigt.

dwdforecast ist mittlerweile abgelöst und das Python Skript wird nicht mehr benötigt. Du solltest dringlichst die Wiki Seite checken.
Ich arbeite an Python raus, weil das nur ein Zwischenschritt war. Die pvlib hat Kilian mit rein gebracht, weil in dem Forum eine andere Platform verwendet wird.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: plin am 16 September 2020, 12:02:20
Zitat von: ch.eick am 16 September 2020, 11:53:23
Okay, das mit dem uconv schau ich mir an, das wird natürlich benötigt.
Ich war so frei und hab's im Wiki nachgetragen, ebenso die sudo apt-get install libxml-libxml-perl.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 September 2020, 12:12:31
Zitat von: plin am 16 September 2020, 12:02:20
Ich war so frei und hab's im Wiki nachgetragen, ebenso die sudo apt-get install libxml-libxml-perl.
Danke schön
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: plin am 16 September 2020, 12:15:20
Mir ist meine meine primäre wunderground Wetterstation (die inkl. solarRadiation) weggebrochen (offline). Es gibt noch einige in anderen Stadtteilen, die Daten liefern. Evtl. brauchen wir hier eine Art Prioritätenliste damit immer Daten verf+ügbar sind (wenn auch ggf. qualitativ schlechter).
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 September 2020, 12:23:17
Zitat von: plin am 16 September 2020, 12:15:20
Mir ist meine meine primäre wunderground Wetterstation (die inkl. solarRadiation) weggebrochen (offline). Es gibt noch einige in anderen Stadtteilen, die Daten liefern. Evtl. brauchen wir hier eine Art Prioritätenliste damit immer Daten verf+ügbar sind (wenn auch ggf. qualitativ schlechter).
Ich habe bei mir drei Stationen definiert, aber noch keinen Cluster drüber gebastelt :-) Das wollte ich immer mal machen.

MaxAge definieren und dann in der Abfrage der gelieferten Werte einen durchschnitt bilden. Das sollte dann reichen.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: plin am 16 September 2020, 12:27:10
Zitat von: ch.eick am 16 September 2020, 12:23:17
MaxAge definieren und dann in der Abfrage der gelieferten Werte einen durchschnitt bilden. Das sollte dann reichen.
Die schwanken bei mir relativ deutlich (siehe Anlage).

Ich habe noch einen WemosD1 mit einem Lichtsensor-Shield hier rumliegen. Die Frage ist nur: Wohin damit (der braucht eine Steckdose in der Nähe)? Ausrichtung?
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 16 September 2020, 13:00:49
Zitat von: plin am 16 September 2020, 12:27:10
Die schwanken bei mir relativ deutlich (siehe Anlage).
Man weiß ja nie wo die installiert sind. Nach meiner Kenntnis reagieren die auch auf die direkte Einstrahlung also mit wenig diffuser Strahlung. Da kommt dann die Schwankung durch die Bewölkung. Ich habe bei Wind auch schon schnelle Wechsel beobachtet. Aber da die ja auch einige Km entfernt sind würde ein Durchschnitt auch nichts mehr verschlechtern. Ich verwende auch einen Zyklus von 15 Minuten, das ist für meine Beschattung mit dem ASC Modul.

Zitat von: plin am 16 September 2020, 12:27:10
Ich habe noch einen WemosD1 mit einem Lichtsensor-Shield hier rumliegen. Die Frage ist nur: Wohin damit (der braucht eine Steckdose in der Nähe)? Ausrichtung?
Wie wäre es auf dem Dach mit Neigung der Module, in die Richtung der größten Modul Anzahl.
Ich versuche jedoch immer auf eigene Hardware zu verzichten.

EDIT: Bei der wunderground Seite hat sich die Regex für das Datum geändert. Jetzt ärgern se mich abber dolle. Dewpoint war auch daneben :-)

reading01Regex Summary<.*>([[:alpha:]]{1,9} [\d]{1,2}, [\d]{4})<\/strong
reading02Regex DEWPOINT.*>([\d\.]+)<\/span>.*PRECIP RATE
reading03Regex DEWPOINT.*>([\d\.]+)<\/span>.*PRECIP RATE
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 18 September 2020, 17:02:24
Hallo zusammen,
für alle wagemutigen unter Euch :-)

Ich habe im Wiki das Device BYD_Status aktualisiert. Ihr könntet es ja mal ausprobieren und feedback geben.
Ein Langzeit Ziel wäre den Speicher zu überwachen, um defekte Zellen und erhöhte Temperaturen in den Arrays festzustellen.

Gruß
    Christian
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: plin am 18 September 2020, 18:13:18
Zitat von: ch.eick am 16 September 2020, 13:00:49
WemosD1:
Wie wäre es auf dem Dach mit Neigung der Module, in die Richtung der größten Modul Anzahl.
Ich versuche jedoch immer auf eigene Hardware zu verzichten.
Ich habe den unters Dachfenster geklemmt und den heutigen Tag aufgezeichnet. Scheint so als ob die etwas weiter entfernte Station besser meine Sonneneinstrahlung abbildet als die nächstgelegene.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 18 September 2020, 21:48:47
Zitat von: plin am 18 September 2020, 18:13:18
Ich habe den unters Dachfenster geklemmt und den heutigen Tag aufgezeichnet. Scheint so als ob die etwas weiter entfernte Station besser meine Sonneneinstrahlung abbildet als die nächstgelegene.
Wahrscheinlich fehlt auch noch die diffuse Strahlung.
Titel: Antw:Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)
Beitrag von: ch.eick am 07 Oktober 2020, 15:43:34
Hallo zusammen,
durch einen Test von einem anderen Mitstreiter hat sich herausgestellt, dass BYD nun die neue Version des Speichers BYD_HVS ausliefert. Dieser neue Speicher hat anscheinend noch kein WebGui und wird nur über eine Handy App Konfiguriert. Leider kann man den somit nicht mit meiner Lösung abfragen.

Für den bisherigen BYD_HV habe ich jedoch nochmal eine Aktualisierung im Wiki eingefügt.
Man kann jetzt über ein get den Wert Series_Battery_Counts auslesen und in einem userreading wird dieser mit 1.28 zur Gesamtkapazität berechnet.


InstallationConfig_Array_Counts 1
InstallationConfig_Array_Power 8.96
InstallationConfig_Installation_Time 2020-1-5 13:36:8
InstallationConfig_Series_Battery_Counts 7


Gruß
     Christian