Hallo,
ich versuche hochgradig erfolglos den Modbus auszulesen.
Mein Ziel ist den Tagesertrag von PV-Paneelen zu erfassen.
Device List ergibt
Internals:
DEF 1 60 192.168.2.40 TCP
DeviceName 192.168.2.40:502
EXPECT idle
FD 56
FUUID 688b6b18-f33f-84ec-4946-89700e97d3ce21f8
IODev SolarEdge
Interval 60
LASTOPEN 1755637046.78877
MODBUSID 1
MODE master
MODULEVERSION Modbus 4.5.6 - 7.11.2023
NAME SolarEdge
NOTIFYDEV global
NR 437
NTFY_ORDER 50-SolarEdge
PARTIAL
PROTOCOL TCP
STATE PV: 0.20 KW, Eigenverbrauch: 0.38 kW, Netz: -0.18 kW, Batterie: 0.00 kW, Ladestand: 100.00 %
TCPConn 1
TYPE ModbusAttr
devioLoglevel 4
devioNoSTATE 1
eventCount 33424
nextOpenDelay 60
DICACHE:
3:
UNPACK
EXPRS:
EXTRAS:
FNAMES:
Helper:
DBLOG:
B_Lifetime_Export_Energy_Counter:
mozart4_DbLog:
TIME 1755689354.96512
VALUE 2.825
B_Lifetime_Import_Energy_Counter:
mozart4_DbLog:
TIME 1755689355.12613
VALUE 3.962
I_AC_Energy_WH:
mozart4_DbLog:
TIME 1755689591.81904
VALUE 84.52
M_Leistung_Panele:
mozart4_DbLog:
TIME 1755689593.32242
VALUE 0.09
Die Parameter:
stateFormat {sprintf("PV: %.2f KW, Eigenverbrauch: %.2f kW, Netz: %.2f kW, Batterie: %.2f kW, Ladestand: %.2f %%", ReadingsVal("SolarEdge","I_DC_Power",0),ReadingsVal("SolarEdge","Eigenverbrauch",0), ReadingsVal("SolarEdge","M_AC_POWER",0)/1000, ReadingsVal("SolarEdge","B_Instantaneous_Power",0),ReadingsVal("SolarEdge","B_State_of_Energy",0))}
userReadings Eigenverbrauch { sprintf("%.2f", ReadingsNum ('SolarEdge' ,'I_DC_Power',0) - ( ReadingsNum ('SolarEdge' ,'M_AC_POWER',0)/1000 + ReadingsNum ('SolarEdge' ,'B_Instantaneous_Power',0) ) )}, M_Leistung_Panele {sprintf("%.2f", ReadingsNum ('SolarEdge' ,'I_AC_Power',0) + ReadingsNum('SolarEdge' ,'B_Instantaneous_Power',0) + (ReadingsNum ('SolarEdge' ,'M_AC_POWER',0)/1000))
Die Readings:
obj-h40083-expr ($val * (10 ** $val[1]))/1000
obj-h40083-len 2
obj-h40083-reading I_AC_Power
obj-h40083-unpack s>s>
—————-
obj-h40100-expr $val * (10 ** $val[1])/1000
obj-h40100-len 2
obj-h40100-reading I_DC_Power
obj-h40100-unpack s>s>
———-
obj-h40206-expr $val * (10 ** ReadingsNum ('SolarEdge' ,'M_AC_Power_SF',0))/100
obj-h40206-reading M_AC_POWER
obj-h40206-unpack s>
———
obj-h40093-expr $val * (10 ** $val[1])/1000
obj-h40093-len 3
obj-h40093-reading I_AC_Energy_WH
I_AC_Energy_WH Liefert schon einen Wert das ich in der SolarEdge-App ablesen kann.
M_Import und M_Export liefern falsche Werte, was aber damit zusammenhängend ist dass ich z.Zt. im NULL-Einspeisung Modus bin (noch kein Zweirichtungs-Zähler vorhanden)
Das Problem bei meinem setup ist:
1. I_DC_Power liefert ständig einen Wert (auch in der Nacht - Energie kommt aus dem Speicher)
2. I_AC_Power - dito
3. Berechnen im userReading liefert negative Ergebnisse, was natürlich nicht stimmen kann.
Für jeden sachdienlichen Rat wäre ich dankbar.
Mit besten Grüßen
Martin