FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: HOMIE1975 am 11 November 2020, 14:24:08

Titel: HM-ES-TX-WM mit ES-IEC und ISKRA MT175
Beitrag von: HOMIE1975 am 11 November 2020, 14:24:08
Hallo Zusammen.

Ich habe bei der Auslesung meines Zweirichtungszählers über HM-ES-TX-WM im Kombination ES-IEC folgendes Problem festgestellt:

- zunächst Software  HM-ES-TX-WM auf 2.5 aktualisiert
- es werden zwei Channels angelegt... bei mir "Stromverbrauch" = Channel 1 und "Einspeisung" = Channel 2
  die Zählerstände dazu werden alle 3 Minuten übermittelt...
  Channel 1 Reading energyIEC = 1.8.0 = Zählerstand Verbrauch ( in 1/10 Wh ... Teilen durch 10.000 ergibt Zählerstand in kWh )
  Channel 1 Reading powerIEC = 16.7 = akt. Leistung Verbrauch/Einspeisung ( in 1/100 W ... Teilen durch 100.000 ergibt die Leistung in kW )
  Channel 2 Reading energyIEC = 2.8.0 = Zählerstand Einspeisung ( in 1/10 Wh ... Teilen durch 10.000 ergibt Zählerstand in kWh )

Jetzt zum Problem... wenn die Leistungsanzeige am Zäler negativ wird..., sprich die Photovoltaikanlage erzeugt mehr Strom als aktuell verbraucht wird
dann zeigt powerIEC nicht den korrekten Wert an. Es werden abstrus hohe Leistungswerte angezeigt. ( powerIEC = 4294967295 )
Meiner Meinung nach wird der übermittelte Wert nicht als "singed integer() (-2.147.4483.648 ... 2.147.483.647)" sondern als "unsigned integer()
oder DWORD ( 0... 4294967295 )" interpretiert und damit dann falsch angezeigt.

Als Workaround habe ich mir ein userReading angelegt und darin mit if / else und Berechnung die Werte korrekt umgerechnet.

Zaehlerstand1.8.0kWh {sprintf("%.2f",ReadingsVal("Stromverbrauch","energyIEC","???")/10000)},
LeistungkW {if(ReadingsVal("Stromverbrauch","powerIEC","???") < 1000000) {sprintf("%.2f",ReadingsVal("Stromverbrauch","powerIEC","???")/100000)} else{ sprintf("%.2f",(ReadingsVal("Stromverbrauch","powerIEC","???")-4294967295)/100000)}}




 

Titel: Antw:HM-ES-TX-WM mit ES-IEC und ISKRA MT175
Beitrag von: kpwg am 29 Mai 2022, 14:00:50
Gleiches Problem, anderer Lösungsansatz: Mit readingsChange ist es nur ein kurzer Einzeiler, das Reading powerIEC passend zu manipulieren.
define rc_Zaehler_neg readingsChange HM_3BD456_IEC_01 powerIEC (\d+) { $1 > 400000000 ? $1-4294967295 : $1}
Danke für die gute Erklärung und die mathematische Vorarbeit.
Titel: Antw:HM-ES-TX-WM mit ES-IEC und ISKRA MT175
Beitrag von: renardfm am 29 Mai 2022, 21:59:40
Also bei meinem mt631 hat es geholfen beide Kompatibilitätsmodi auszuprobieren. Der eine von beiden hat funktioniert.
Außerdem habe ich noch eingestellt, dass sofort Werte gesendet werden, sobald sich die Leistung um 100w ändert.

Gruß Flo
Titel: Antw:HM-ES-TX-WM mit ES-IEC und ISKRA MT175
Beitrag von: Beta-User am 30 Mai 2022, 10:44:43
Moin zusammen,

im Modul (aktuelle svn-Fassung) sollte die Berechnung ab Zeile 3121 zu finden sein. Vielleicht bekommen wir das allgemein so gefixt, dass man keine zusätzlichen Konvertierungen anflanschen muss?

Leider kenne ich mich mit der pack/unpack-Syntax auch nicht aus, würde aber vermuten, dass DWORD dem letzten "A8" im "unpack" entspräche und es ggf. reichen würde, da ein "c" hinzuschreiben?
https://perldoc.perl.org/functions/pack