Hallo,
wie hier bereits angerissen versuche ich meinen Stromzähler (Zweirichtungszähler wegen einer PV-Analge) mit einem HM-ES-TX-WM mit ES-IEC in openHAB einzubinden.
Das Gerät verarbeitet beim Zählerstand die bezogene und die eingespeiste Energie in zwei unterschiedlichen Channels (Channel 1 und 2 jeweils IEC_ENERGY_COUNTER). Soweit so gut.
Mein Problem besteht darin, dass die momentane Leistung vom Gerät aber anders verarbeitet wird und nur im Channel 1 IEC_POWER ausgegeben wird. Bei einem reinem Strombezug durch das EVU ist das auch kein Problem. Wenn man aber zeitweise mehr Strom erzeugt als man verbraucht (wie bei mir per PV) bekommt man einen negativen Wert für die aktuell verbrauchte Leistung am Display des Geräts angezeigt:
Diese wird auch über Channel 1 IEC_POWER an HG übertragen. Allerdings werden mir nur positive Werte zum übertragen an openHAB ausgegeben. Alles was negativ sein sollte stellt HG schlicht als 0 dar.
Scheinbar werden die positiven Werte in “normaler Logik” als Hex von HG erfasst. Die negativen Werte jedoch scheinbar als Differenz vom Maximum (hex FFFFFFFF / dec 4294967295)
Bsp. positive Werte:
02/14/21 13:03:05.622 Module HomeMatic BidCoS: Info: IEC_POWER on channel 1 of HomeMatic BidCoS peer 30 with serial number XXXX was set to 0x000197C8.
Bsp. negative Werte:
02/14/21 09:24:51.790 Module HomeMatic BidCoS: Info: IEC_POWER on channel 1 of HomeMatic BidCoS peer 30 with serial number XXXX was set to 0xFFFB5D21.
Max. Hex - zurückgegebener Hex-Wert = 303838 → /100 → 3,03 kW → plausibler Wert. (müsste ggf. mehrfach geprüft werden zur Verifizierung)
Ist das ein bekanntes Verhalten zum übertragen von negativen Werten? Könnte das ohne großen Aufwand in HG implementiert/gefixt werden?
Besten Dank vorweg!
FTR:
14.2.21 09:24 : homegear -e rc ‘print_v($hg->getAllValues(30));’
Channel 1
[IEC_POWER] (Struct length=8)
{
[MAX] (Float) 4.29497e+07
[MIN] (Float) 0
[READABLE] (Boolean) 1
[TRANSMITTED] (Boolean) 1
[TYPE] (String) FLOAT
[UNIT] (String) W
[VALUE] (Float) 0
[WRITEABLE] (Boolean) 0
}