SolarEdge SE8k: Wie Batterie und Zählermodul auslesen?

Begonnen von reibuehl, 18 Juni 2023, 13:01:43

Vorheriges Thema - Nächstes Thema

reibuehl

Ich verwende das ModbusAttr Modul wie in https://wiki.fhem.de/wiki/SolarEdge_SE10k beschrieben um meine SolarEdge SE8k Anlage auszulesen. Ich habe die Readings wie in dem dort unter "SunSpec (SolarEdge)" beschrieben angelegt. Für den Inverter erhalte ich jetzt Daten, allerdings bekomme ich keine Daten von der Batterie und dem SolarEdge Energiezähler. Dafür fehlen in dem Beispiel vermutlich die OBJ Definitionen. Gibt es irgendwo ein umfassenderes Beispiel oder könnte mir jemand ein List einer kompletten SE8k mit Batterie und Energiezähler schicken?

Gruß,
Reiner
Reiner.

PotatoFritz

Hi,

mit Batterie kann ich nicht dienen.
Reicht Dir eine Config für einen SE8k ohne Batterie?

cbl

Zitat von: PotatoFritz am 18 Juni 2023, 14:10:21Hi,

mit Batterie kann ich nicht dienen.
Reicht Dir eine Config für einen SE8k ohne Batterie?


Mein WR geht Freitag ans Netz. Die Condig für den SE8k ohne Batterie wäre für mich sehr hilfreich.

Gruß
Christian

PotatoFritz

Achtung, bei einzelnen Readings weiche ich von der Beispielconfig ab.
Exemplarisch bei z.B. bei obj-h40093.
Da lese ich eine Länge von 3. Damit wird in einem Rutsch der Wert und der Scaling-Faktor aus dem WR gelesen.



defmod SolarEdge ModbusAttr 1 120 192.168.178.40 TCP
attr SolarEdge userattr enableControlSet event-on-change-reading event-on-update-reading maxTimeoutsToReconnect obj-h40020-len obj-h40020-reading obj-h40020-unpack obj-h40069-reading obj-h40070-reading obj-h40076-expr obj-h40076-reading obj-h40077-expr obj-h40077-reading obj-h40078-expr obj-h40078-reading obj-h40190-unpack obj-h40191-unpack obj-h40192-unpack obj-h40227-reading silentReconnect sortUpdate stateFormat userReadings webCmdLabel
attr SolarEdge alias SolarEdge
attr SolarEdge dev-h-defPoll 1
attr SolarEdge dev-h-defShowGet 1
attr SolarEdge enableControlSet 1
attr SolarEdge event-on-change-reading .*
attr SolarEdge event-on-update-reading AC-Energy,AC-Power,Status
attr SolarEdge group Strom
attr SolarEdge maxTimeoutsToReconnect 3
attr SolarEdge obj-h40071-expr $val * (10 ** ReadingsNum ('SolarEdge','I_AC_Current_SF',0))
attr SolarEdge obj-h40071-reading I_AC_Current
attr SolarEdge obj-h40072-expr $val * (10 ** ReadingsNum ('SolarEdge','I_AC_Current_SF',0))
attr SolarEdge obj-h40072-reading I_AC_Current_A
attr SolarEdge obj-h40073-expr $val * (10 ** ReadingsNum ('SolarEdge','I_AC_Current_SF',0))
attr SolarEdge obj-h40073-reading I_AC_Current_B
attr SolarEdge obj-h40074-expr $val * (10 ** ReadingsNum ('SolarEdge','I_AC_Current_SF',0))
attr SolarEdge obj-h40074-reading I_AC_Current_C
attr SolarEdge obj-h40075-reading I_AC_Current_SF
attr SolarEdge obj-h40075-unpack s>
attr SolarEdge obj-h40079-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'I_AC_Voltage_SF',0))
attr SolarEdge obj-h40079-reading I_AC_Voltage_AN
attr SolarEdge obj-h40080-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'I_AC_Voltage_SF',0))
attr SolarEdge obj-h40080-reading I_AC_Voltage_BN
attr SolarEdge obj-h40081-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'I_AC_Voltage_SF',0))
attr SolarEdge obj-h40081-reading I_AC_Voltage_CN
attr SolarEdge obj-h40082-reading I_AC_Voltage_SF
attr SolarEdge obj-h40082-unpack s>
attr SolarEdge obj-h40083-expr $val
 * (10 ** $val[1])
attr SolarEdge obj-h40083-len 2
attr SolarEdge obj-h40083-reading AC-Power
attr SolarEdge obj-h40083-unpack s>s>
attr SolarEdge obj-h40085-expr $val * (10 ** $val[1])
attr SolarEdge obj-h40085-len 2
attr SolarEdge obj-h40085-reading I_AC_Frequency
attr SolarEdge obj-h40085-unpack s>s>
attr SolarEdge obj-h40087-expr $val * (10 ** $val[1])
attr SolarEdge obj-h40087-len 2
attr SolarEdge obj-h40087-reading I_AC_VA
attr SolarEdge obj-h40087-unpack s>s>
attr SolarEdge obj-h40089-expr $val * (10 ** $val[1])
attr SolarEdge obj-h40089-len 2
attr SolarEdge obj-h40089-reading I_AC_VAR
attr SolarEdge obj-h40089-unpack s>s>
attr SolarEdge obj-h40091-expr abs($val) * (10 ** $val[1])
attr SolarEdge obj-h40091-len 2
attr SolarEdge obj-h40091-reading I_AC_PF
attr SolarEdge obj-h40091-unpack s>s>
attr SolarEdge obj-h40093-expr $val * (10 ** $val[1])/1000
attr SolarEdge obj-h40093-len 3
attr SolarEdge obj-h40093-reading AC-Energy
attr SolarEdge obj-h40093-unpack l>s>
attr SolarEdge obj-h40096-expr $val * (10 ** $val[1])
attr SolarEdge obj-h40096-len 2
attr SolarEdge obj-h40096-reading DC-Current
attr SolarEdge obj-h40096-unpack s>s>
attr SolarEdge obj-h40098-expr $val * (10 ** $val[1])
attr SolarEdge obj-h40098-len 2
attr SolarEdge obj-h40098-reading DC-Voltage
attr SolarEdge obj-h40098-unpack s>s>
attr SolarEdge obj-h40100-expr $val * (10 ** $val[1])
attr SolarEdge obj-h40100-len 2
attr SolarEdge obj-h40100-reading DC-Power
attr SolarEdge obj-h40100-unpack s>s>
attr SolarEdge obj-h40103-reading HeatSinkTemp
attr SolarEdge obj-h40103-unpack s>
attr SolarEdge obj-h40107-reading Status
attr SolarEdge obj-h40108-reading I_Status_Vendor
attr SolarEdge obj-h40190-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Current_SF',0))
attr SolarEdge obj-h40190-reading M_AC_Current
attr SolarEdge obj-h40191-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Current_SF',0))
attr SolarEdge obj-h40191-reading M_AC_Current_A
attr SolarEdge obj-h40192-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Current_SF',0))
attr SolarEdge obj-h40192-reading M_AC_Current_B
attr SolarEdge obj-h40193-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Current_SF',0))
attr SolarEdge obj-h40193-reading M_AC_Current_C
attr SolarEdge obj-h40193-unpack s>
attr SolarEdge obj-h40194-reading M_AC_Current_SF
attr SolarEdge obj-h40194-unpack s>
attr SolarEdge obj-h40195-expr $val/100
attr SolarEdge obj-h40195-reading M_AC_Voltage
attr SolarEdge obj-h40195-unpack s>
attr SolarEdge obj-h40196-expr $val/100
attr SolarEdge obj-h40196-reading M_AC_Voltage_A
attr SolarEdge obj-h40196-unpack s>
attr SolarEdge obj-h40197-expr $val/100
attr SolarEdge obj-h40197-reading M_AC_Voltage_B
attr SolarEdge obj-h40197-unpack s>
attr SolarEdge obj-h40198-expr $val/100
attr SolarEdge obj-h40198-reading M_AC_Voltage_C
attr SolarEdge obj-h40198-unpack s>
attr SolarEdge obj-h40206-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Power_SF',0))
attr SolarEdge obj-h40206-reading M_AC_POWER
attr SolarEdge obj-h40206-unpack s>
attr SolarEdge obj-h40207-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Power_SF',0))
attr SolarEdge obj-h40207-reading M_AC_POWER_A
attr SolarEdge obj-h40207-unpack s>
attr SolarEdge obj-h40208-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Power_SF',0))
attr SolarEdge obj-h40208-reading M_AC_POWER_B
attr SolarEdge obj-h40208-unpack s>
attr SolarEdge obj-h40209-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Power_SF',0))
attr SolarEdge obj-h40209-reading M_AC_POWER_C
attr SolarEdge obj-h40209-unpack s>
attr SolarEdge obj-h40210-reading M_AC_POWER_SF
attr SolarEdge obj-h40211-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VA_SF',0))
attr SolarEdge obj-h40211-reading M_AC_VA
attr SolarEdge obj-h40211-unpack s>
attr SolarEdge obj-h40212-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VA_SF',0))
attr SolarEdge obj-h40212-reading M_AC_VA_A
attr SolarEdge obj-h40212-unpack s>
attr SolarEdge obj-h40213-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VA_SF',0))
attr SolarEdge obj-h40213-reading M_AC_VA_B
attr SolarEdge obj-h40213-unpack s>
attr SolarEdge obj-h40214-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VA_SF',0))
attr SolarEdge obj-h40214-reading M_AC_VA_C
attr SolarEdge obj-h40214-unpack s>
attr SolarEdge obj-h40215-reading M_AC_VA_SF
attr SolarEdge obj-h40216-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VAR_SF',0))
attr SolarEdge obj-h40216-reading M_AC_VAR
attr SolarEdge obj-h40216-unpack s>
attr SolarEdge obj-h40217-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VAR_SF',0))
attr SolarEdge obj-h40217-reading M_AC_VAR_A
attr SolarEdge obj-h40217-unpack s>
attr SolarEdge obj-h40218-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VAR_SF',0))
attr SolarEdge obj-h40218-reading M_AC_VAR_B
attr SolarEdge obj-h40218-unpack s>
attr SolarEdge obj-h40219-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_VAR_SF',0))
attr SolarEdge obj-h40219-reading M_AC_VAR_C
attr SolarEdge obj-h40219-unpack s>
attr SolarEdge obj-h40220-reading M_AC_VAR_SF
attr SolarEdge obj-h40221-expr abs($val) * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_PF_SF',0))
attr SolarEdge obj-h40221-reading M_AC_PF
attr SolarEdge obj-h40221-unpack s>
attr SolarEdge obj-h40222-expr abs($val) * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_PF_SF',0))
attr SolarEdge obj-h40222-reading M_AC_PF_A
attr SolarEdge obj-h40222-unpack s>
attr SolarEdge obj-h40223-expr abs($val) * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_PF_SF',0))
attr SolarEdge obj-h40223-reading M_AC_PF_B
attr SolarEdge obj-h40223-unpack s>
attr SolarEdge obj-h40224-expr abs($val) * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_PF_SF',0))
attr SolarEdge obj-h40224-reading M_AC_PF_C
attr SolarEdge obj-h40224-unpack s>
attr SolarEdge obj-h40225-reading M_AC_PF_SF
attr SolarEdge obj-h40225-unpack s>
attr SolarEdge room PHOTOVOLTAIK
attr SolarEdge silentReconnect 1
attr SolarEdge sortUpdate 1
attr SolarEdge stateFormat {sprintf("%.0f W-%.0f V-%.0f W",ReadingsVal("SolarEdge","AC-Power",0),ReadingsVal("SolarEdge","DC-Voltage",0),ReadingsVal("SolarEdge","DC-Power",0))}
attr SolarEdge userReadings Zustand:(Status.*) {    my $Zus = ReadingsVal("SolarEdge","Status",0);;    my $rueck = ReadingsVal("SolarEdge","Zustand",0);;    if (($Zus == 2) and (InternalVal("SolarEdge","INTERVAL",100) != 600))      {      fhem("set SolarEdge interval 600");;      $rueck = "Nachtmodus";;    }    elsif  (InternalVal("SolarEdge","INTERVAL",1) != 60)      {      fhem("set SolarEdge interval 60");;      $rueck = "Tagmodus";;      }     return ($rueck);;;;  }
attr SolarEdge verbose 2
attr SolarEdge webCmdLabel {sprintf("AC-Energy %.3f",ReadingsVal("Solaredge","AC-Energy",0));;;;}

reibuehl

Was sind den die M_* Werte? Ist das der Zähler? In der im Wiki verlinkten FHEM-Solaredge_SunSpec_ModbusAttr.pdf sehe ich nur die I_* Werte bis 40109 für den Inverter. Gibt es da noch ein vergleichbares Dokument für die anderen Komponenten?
Reiner.

PotatoFritz


reibuehl

Danke! Dann brauche ich jetzt nur noch was vergleichbares für die Batterien.
Reiner.

reibuehl

#7
Nach etwas weiterem Suchen in diversen Foren bin ich auf https://www.photovoltaikforum.com/core/attachment/88445-power-control-open-protocol-for-solaredge-inverters-pdf/ gestoßen. Dort sind ab Seite 19 die Modbus Register für die Batterie beschrieben.
Damit konnte ich meine SolarEdge "Home Batterie 48V" erfolgreich einbinden. Hier die momentan von mir verwendeten Attribute:
attr <DEVICENAME> obj-h62720-len 16
attr <DEVICENAME> obj-h62720-reading B_Manufacturer
attr <DEVICENAME> obj-h62720-unpack (a16)
attr <DEVICENAME> obj-h62736-len 16
attr <DEVICENAME> obj-h62736-reading B_Model
attr <DEVICENAME> obj-h62736-unpack (a16)
attr <DEVICENAME> obj-h62752-len 8
attr <DEVICENAME> obj-h62752-reading B_Version
attr <DEVICENAME> obj-h62752-unpack (a8)
attr <DEVICENAME> obj-h62768-len 16
attr <DEVICENAME> obj-h62768-reading B_SerialNumber
attr <DEVICENAME> obj-h62768-unpack (a16)
attr <DEVICENAME> obj-h62784-reading B_DeviceAddress

attr <DEVICENAME> obj-h62786-len 2
attr <DEVICENAME> obj-h62786-reading B_Rated_Energy
attr <DEVICENAME> obj-h62786-unpack f>
attr <DEVICENAME> obj-h62786-revRegs 1
attr <DEVICENAME> obj-h62786-format %.2f
attr <DEVICENAME> obj-h62786-expr $val / 1000

attr <DEVICENAME> obj-h62788-len 2
attr <DEVICENAME> obj-h62788-reading B_Max_Charge_Continues_Power
attr <DEVICENAME> obj-h62788-unpack f>
attr <DEVICENAME> obj-h62788-revRegs 1
attr <DEVICENAME> obj-h62788-format %.2f
attr <DEVICENAME> obj-h62788-expr $val / 1000

attr <DEVICENAME> obj-h62790-len 2
attr <DEVICENAME> obj-h62790-reading B_Max_Discharge_Continues_Power
attr <DEVICENAME> obj-h62790-unpack f>
attr <DEVICENAME> obj-h62790-revRegs 1
attr <DEVICENAME> obj-h62790-format %.2f
attr <DEVICENAME> obj-h62790-expr $val / 1000

attr <DEVICENAME> obj-h62792-len 2
attr <DEVICENAME> obj-h62792-reading B_Max_Charge_Peak_Power
attr <DEVICENAME> obj-h62792-unpack f>
attr <DEVICENAME> obj-h62792-revRegs 1
attr <DEVICENAME> obj-h62792-format %.2f
attr <DEVICENAME> obj-h62792-expr $val / 1000

attr <DEVICENAME> obj-h62794-len 2
attr <DEVICENAME> obj-h62794-reading B_Max_Discharge_Peak_Power
attr <DEVICENAME> obj-h62794-unpack f>
attr <DEVICENAME> obj-h62794-revRegs 1
attr <DEVICENAME> obj-h62794-format %.2f
attr <DEVICENAME> obj-h62794-expr $val / 1000

attr <DEVICENAME> obj-h62828-len 2
attr <DEVICENAME> obj-h62828-reading B_Average_Temperature
attr <DEVICENAME> obj-h62828-unpack f>
attr <DEVICENAME> obj-h62828-revRegs 1
attr <DEVICENAME> obj-h62828-format %.1f

attr <DEVICENAME> obj-h62830-len 2
attr <DEVICENAME> obj-h62830-reading B_Max_Temperature
attr <DEVICENAME> obj-h62830-unpack f>
attr <DEVICENAME> obj-h62830-revRegs 1
attr <DEVICENAME> obj-h62830-format %.1f

attr <DEVICENAME> obj-h62832-len 2
attr <DEVICENAME> obj-h62832-reading B_Instantaneous_Voltage
attr <DEVICENAME> obj-h62832-unpack f>
attr <DEVICENAME> obj-h62832-revRegs 1
attr <DEVICENAME> obj-h62832-format %.1f

attr <DEVICENAME> obj-h62834-len 2
attr <DEVICENAME> obj-h62834-reading B_Instantaneous_Current
attr <DEVICENAME> obj-h62834-unpack f>
attr <DEVICENAME> obj-h62834-revRegs 1
attr <DEVICENAME> obj-h62834-format %.1f

attr <DEVICENAME> obj-h62836-len 2
attr <DEVICENAME> obj-h62836-reading B_Instantaneous_Power
attr <DEVICENAME> obj-h62836-unpack f>
attr <DEVICENAME> obj-h62836-revRegs 1
attr <DEVICENAME> obj-h62836-format %.2f
attr <DEVICENAME> obj-h62836-expr $val / 1000

attr <DEVICENAME> obj-h62838-len 4
attr <DEVICENAME> obj-h62838-reading B_Lifetime_Export_Energy_Counter
attr <DEVICENAME> obj-h62838-unpack Q>
attr <DEVICENAME> obj-h62838-revRegs 1
attr <DEVICENAME> obj-h62838-expr $val / 1000

attr <DEVICENAME> obj-h62842-len 4
attr <DEVICENAME> obj-h62842-reading B_Lifetime_Import_Energy_Counter
attr <DEVICENAME> obj-h62842-unpack Q>
attr <DEVICENAME> obj-h62842-revRegs 1
attr <DEVICENAME> obj-h62842-expr $val / 1000

attr <DEVICENAME> obj-h62846-len 2
attr <DEVICENAME> obj-h62846-reading B_Max_Energy
attr <DEVICENAME> obj-h62846-unpack f>
attr <DEVICENAME> obj-h62846-revRegs 1
attr <DEVICENAME> obj-h62846-format %.2f
attr <DEVICENAME> obj-h62846-expr $val / 1000

attr <DEVICENAME> obj-h62848-len 2
attr <DEVICENAME> obj-h62848-reading B_Available_Energy
attr <DEVICENAME> obj-h62848-unpack f>
attr <DEVICENAME> obj-h62848-revRegs 1
attr <DEVICENAME> obj-h62848-format %.2f
attr <DEVICENAME> obj-h62848-expr $val / 1000

attr <DEVICENAME> obj-h62850-len 2
attr <DEVICENAME> obj-h62850-reading B_State_of_Health
attr <DEVICENAME> obj-h62850-unpack f>
attr <DEVICENAME> obj-h62850-revRegs 1
attr <DEVICENAME> obj-h62850-format %.1f

attr <DEVICENAME> obj-h62852-len 2
attr <DEVICENAME> obj-h62852-reading B_State_of_Energy
attr <DEVICENAME> obj-h62852-unpack f>
attr <DEVICENAME> obj-h62852-revRegs 1
attr <DEVICENAME> obj-h62852-format %.1f

attr <DEVICENAME> obj-h62854-len 2
attr <DEVICENAME> obj-h62854-reading B_Status
attr <DEVICENAME> obj-h62854-unpack s>
attr <DEVICENAME> obj-h62854-map 0:Off 1:Standby 2:Init 3:Charge 4:Discharge 5:Fault 6:TrickleCharge 7:Idle

attr <DEVICENAME> obj-h62856-len 2
attr <DEVICENAME> obj-h62856-reading B_Status_Internal
attr <DEVICENAME> obj-h62856-unpack s>


Alle W und Wh Werte werden in kW bzw kWh umgerechnet und mit zwei Nachkommastellen angezeigt. Was mir noch fehlt ist die textuelle Ausgabe der Status Codes und die Event Log Register 62858 und 62866. Außerdem scheint zumindest bei mir der B_Max_Temperature der Wert immer 0 zu sein.

UPDATE: map für B_Status hinzugefügt. 
Reiner.

reibuehl

Bei den uint64 Werten für B_Lifetime_Export_Energy_Counter und B_Lifetime_Import_Energy_Counter scheint auch noch irgendwas nicht zu stimmen. Ich denke da sind die Bits irgendwie in der falschen Reihenfolge...

Reiner.