diff --git a/packages/modules/consumers/idm/idm/consumer.py b/packages/modules/consumers/idm/idm/consumer.py index 510ed8dad6..cfcb80291f 100644 --- a/packages/modules/consumers/idm/idm/consumer.py +++ b/packages/modules/consumers/idm/idm/consumer.py @@ -38,7 +38,7 @@ def send_values(values: CurrentValues) -> None: pv_power = max(-values.pv_power, 0) # Ladeleistung mit einrechnen, da diese sonst fälschlich als freier Überschuss an die # WP gemeldet würde, obwohl sie bereits von einer Fahrzeugladung verbraucht wird - surplus = max(pv_power - values.home_consumption - values.cp_power, 0) + surplus = max(-values.evu_power, 0) battery_soc = int(values.bat_soc) if values.bat_soc is not None else -1 # Reg 74: Aktueller PV-Überschuss [kW] @@ -47,8 +47,11 @@ def send_values(values: CurrentValues) -> None: # Reg 78: Aktuelle PV-Produktion [kW] client.write_register(78, pv_power / 1000, data_type=ModbusDataType.FLOAT_32, wordorder=Endian.Little, unit=modbus_id) - # Reg 82: Hausverbrauch [kW], Default 0 - client.write_register(82, values.home_consumption / 1000, data_type=ModbusDataType.FLOAT_32, + + # Reg 82: Hausverbrauch [kW], Default 0 - aus PV/Netz/Speicher berechnet, damit jeder Verbraucher + # (auch die WP selbst) automatisch enthalten ist, unabhängig von der internen Hausverbrauchs-Berechnung + idm_home_consumption = max(pv_power + values.evu_power - values.bat_power, 0) + client.write_register(82, idm_home_consumption / 1000, data_type=ModbusDataType.FLOAT_32, wordorder=Endian.Little, unit=modbus_id) # Reg 84: Batterieentladung [kW], Default 0 (negativ = Ladung). values.bat_power kommt roh aus # process.py (negativ = Entladung, positiv = Ladung, gleiche Konvention wie z.B. bei Sungrow) ->