KOSTAL Smart Energy Meter auslesen

Begonnen von uwek, 01 April 2020, 08:23:41

Vorheriges Thema - Nächstes Thema

ch.eick

#30
Hallo zusammen,

ich habe die Modbus Definitionen nochmal ueberarbeitet und mit "dev-type" aufgeraeumt. Auch der Scale Faktor ist jetzt mit drin.

Ein Fehler besteht noch beim Gesamtstrom, jedoch finde ich nicht die Abweichung in der Definition. Laut Kostal Dokumentation ist der Wert identisch zu den anderen Stromwerten definiert, jedoch ist die angezeigte Zahl nicht korrekt.

attr PV_KSEM obj-h40071-reading M_AC_Current
attr PV_KSEM obj-h40071-type INT16_Current


EDIT:
Mit folgenden Werten gibt es da auch ein Problem. In der Doku steht bei allen "0x8000"als Value Range.

Hier sollte die Summe der Stroeme 2.87+5.63+5.11 stehen
M_AC_Current 327.68

Hier musste eigentlich ca 380 Volt stehen
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

Im SolarEdge Modul habe ich auch keinen weiteren Hinweis gefunden :-)
Da ist sicher das unpack falsch.



defmod PV_KSEM ModbusAttr 1 60 192.168.178.17:502 TCP

attr PV_KSEM DbLogExclude .*
attr PV_KSEM alias PV_Energy_Manager
attr PV_KSEM comment Kostal KSEM (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 n

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 n

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 obj-h40071-reading M_AC_Current
attr PV_KSEM obj-h40071-type INT16_Current
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-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 group PV Eigenverbrauch
attr PV_KSEM icon measure_power
attr PV_KSEM room Strom->Photovoltaik
attr PV_KSEM sortby 02
attr PV_KSEM verbose 0
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#31
Hallo nochmal.

der Code vom "SolarEdge" Modul ist uebrigens aus dem ModbusAttr Moduld mit "set saveAsModule" generiert und dann spaeter veraendert worden.
Das bedeutet, wenn wir hier mit dem Ursprungsmodul "ModbusAttr" die Definitionen korrekt setzen, koennen wir spaeter einen Export durchfuehren und
haben den Beginn eines eigenen Kostal Moduls ;-)

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

killah78

#32
Hallo zusammen,
habe auch den KSEM und möchte gerne die Daten per Modbus TCP lesen.

Erste Leseversuche der "internal instantaneous register" (Adressen 0 - 145) waren recht erfolgreich. Also die Leistung wird da gut ausgelesen.

Dann habe ich mich an die "internal Energy register" gewagt. Also Adressen 512 - 791. Leider bekomme ich nur Null Werte, bzw keine Werte. Habt ihr das auch schonmal versucht?

Danach habe ich dann die SunSpec Register probiert. Und hier bin ich auch auf die gleichen Probleme gestossen:

M_Exported zeigt einen nicht plausiblen Wert.
M_AC_Current zeigt fix 327,68
genauso wie M_AC_Voltage_AB, M_AC_Voltage_BC, M_AC_Voltage_CA, M_AC_Voltage_LL und M_AC_Voltage_LN.

Habt ihr da schon neue Erkenntnisse?

PS: Habt ihr auch schonmal probiert den Empfangsweg umzukehren? Sprich in FHEM als Modbus slave und den KSEM als Master die Daten senden lassen? Dazu gibt es ja im KSEM die Modbus Erweiterten Einstellungen, wo man entsprechendes Konfigurieren kann. Vielleicht gibt es da Unterschiede, welche Daten per Master gesendet werden und welche per Slave abgerufen werden.

Gruss
killah78

Edit: Teilweise die Probleme gefunden:
- Die "internal Energy register" können gelesen werden und müssen mit "Q>" entpackt werden. Dann kommen auch korrekte Werte.
- Die M_Exported-Werte werden (fälschlicherweise) als signed ausgegeben. Wenn man also mit "i>" entpackt kommen entsprechende negative Werte. Aber die passen dann.
- Lediglich diesen Fixen Werte mit 327, 68 habe ich noch nicht gefunden.

ch.eick

Moin.
Bitte prüfen, ob Du die aktuellste Firmware auf dem KSEM hast. Die ältere hat noch keine Werte geliefert.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

killah78

Ja Firmware ist aktuell. Habe ja den Großteil jetzt gelesen (siehe mein Edit). Mir fehlen noch die readings, die diesen scheinbar fixen wert ausgeben. Kannst du denn zb. M_AC_Current korrekt lesen?

ch.eick

#35
Zitat von: killah78 am 10 Juni 2020, 16:31:34
Ja Firmware ist aktuell. Habe ja den Großteil jetzt gelesen (siehe mein Edit). Mir fehlen noch die readings, die diesen scheinbar fixen wert ausgeben. Kannst du denn zb. M_AC_Current korrekt lesen?

Leider nein, wie ich hier ja bereits geschrieben hatte gibt es noch mehr dieser Werte.

Ich sehe das Problem beim upack und habe nochmals separat hier einen Thread aufgemacht, den jedoch niemand beantworten kann.

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

uwek

Hallo,

ich lese Bezug und Lieferung inzwischen wie folgt aus und bekomme plausible Werte:


attr KSEM dev-type-UINT64-expr $val/10000
attr KSEM dev-type-UINT64-format %s
attr KSEM dev-type-UINT64-len 4
attr KSEM dev-type-UINT64-unpack Q>
...
attr KSEM obj-h512-reading Active energy+
attr KSEM obj-h512-type UINT64
attr KSEM obj-h516-reading Active energy-
attr KSEM obj-h516-type UINT64


Gruß,
Uwe

ch.eick

Zitat von: uwek am 11 Juni 2020, 16:13:14
ich lese Bezug und Lieferung inzwischen wie folgt aus und bekomme plausible Werte:

attr KSEM dev-type-UINT64-expr $val/10000
attr KSEM dev-type-UINT64-format %s
attr KSEM dev-type-UINT64-len 4
attr KSEM dev-type-UINT64-unpack Q>
...
attr KSEM obj-h512-reading Active energy+
attr KSEM obj-h512-type UINT64
attr KSEM obj-h516-reading Active energy-
attr KSEM obj-h516-type UINT64

Okay, das klappt auch bei mir.

Active_energy+ 2122.6187 2020-06-11 22:06:46
Active_energy- 2361.6201 2020-06-11 22:06:45

Sind das Watt ???

Mein WR zeigt immer so gegen 0 Watt an +/- 10 Watt. Dann wuerde das ja nicht passen ???

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

uwek

Guten Morgen,

Zitat von: ch.eick am 11 Juni 2020, 22:15:57
Sind das Watt ???
Mein WR zeigt immer so gegen 0 Watt an +/- 10 Watt. Dann wuerde das ja nicht passen ???
Ich bin etwas verwirrt gerade.

Mein WR zeigt immer so gegen 0 Watt an +/- 10 Watt. Dann wuerde das ja nicht passen ???

Active energy +/- sind die Werte der Wirkenergiezähler und entsprechen 1.0.8 und 2.0.8 der EVU-Zähler.
Nach $val/10000 werden kWh angezeigt.

Gruß
Uwe

M_AC_Power

ch.eick

Zitat von: uwek am 12 Juni 2020, 08:52:56
Active energy +/- sind die Werte der Wirkenergiezähler und entsprechen 1.0.8 und 2.0.8 der EVU-Zähler.
Nach $val/10000 werden kWh angezeigt.

Laut WR, der den KSEM über rs485 ausliest wurden zu dieser Zeit ca 3 Watt bezogen und nicht 2122 Watt. Ich glaube da stimmt was nicht.
Insgesamt habe ich in 2 Monaten laut EVU Zähler nur 3 KWh bezogen.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

uwek

Hallo,

Zitat von: ch.eick am 12 Juni 2020, 09:09:17
Laut WR, der den KSEM über rs485 ausliest wurden zu dieser Zeit ca 3 Watt bezogen und nicht 2122 Watt. Ich glaube da stimmt was nicht.
Insgesamt habe ich in 2 Monaten laut EVU Zähler nur 3 KWh bezogen.

hmm.. Bei mir scheinen die Werte plausibel und stimmen bis auf winzige Abweichungen auch mit dem EVU-Zähler überein.

Ich lese den KSEM über ModbusAttr und Wechselrichter über HTTPMOD völlig unabhängig voneinander aus, da mein Piko und der KSEM offenbar keine Daten austauschen, außer für die Abregelung. Beide Geräte sind ausschließlich per LAN verbunden.

Gruß,
Uwe

ch.eick

Eventuell stimmt da etwas mit dem $val/10000 nicht.
In anderen Devices musste ich folgendes schreiben

$val/10000;$val

Damit die Berechnung übernommen wird. Das prüfe ich später mal.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

uwek

Letztlich habe ich nur anhand der Doku des KSEM und einiger Beiträge aus diesem Forum "rumprobiert", bis ich die gewünschten Ausgaben hatte.
Ich häng mal meine vermutlich nicht sehr elegante Definition meines Gerätes an, vielleicht hilft das ja etwas.

Gruß
Uwe

ch.eick

Zitat von: uwek am 12 Juni 2020, 10:14:42
Letztlich habe ich nur anhand der Doku des KSEM und einiger Beiträge aus diesem Forum "rumprobiert", bis ich die gewünschten Ausgaben hatte.
Ich häng mal meine vermutlich nicht sehr elegante Definition meines Gerätes an, vielleicht hilft das ja etwas.
Das ist doch elegant! Sieht nach meiner Definition aus. Ich hatte hier den ersten ersten KSEM ;-)
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

uwek

Zitat von: ch.eick am 12 Juni 2020, 10:25:19
Das ist doch elegant! Sieht nach meiner Definition aus. Ich hatte hier den ersten ersten KSEM ;-)

Ja, Deine Definition war meine Ausgangspunkt.
Mit "vermutlich nicht elegant" meinte ich vor allem den Bereich "attr KSEM userattr" mit der langen Liste an Definitionen, deren Bedeutung ich nach wie vor nicht komplett verstehe.

An einigen Readings bin ich gescheiert, z.B. konnte ich für M_Exported nie plausible Werte auslesen - M_Imported hingegen ging.
Glücklicherweise habe ich dann die Register für Active energy gefunden, die ja dieselben Werte enthalten sollten.

Wie ich gerade gesehen habe, schulde ich noch meine HTTPMOD-Definition des Piko20. Ich häng die mal zur Info an.

Uwe