diff --git a/packages/modules/consumers/lambda_/lambda_/consumer.py b/packages/modules/consumers/lambda_/lambda_/consumer.py index 43b59c7fc3..beba8684bc 100644 --- a/packages/modules/consumers/lambda_/lambda_/consumer.py +++ b/packages/modules/consumers/lambda_/lambda_/consumer.py @@ -29,7 +29,8 @@ def send_values(values: CurrentValues) -> None: # Wärmepumpe selbst auf Datenquelle "Modbus Client" umgestellt werden (Kap. 4.3), # das kann openWB nicht per Modbus setzen. Wird vom Core automatisch aufgerufen, # solange dieser Verbraucher als ConsumerUsage.SELF_CONTROLLED konfiguriert ist. - client.write_register(102, values.evu_power, wordorder=Endian.Little, unit=config.configuration.modbus_id) + client.write_register(102, values.evu_power, data_type=ModbusDataType.INT_16, + wordorder=Endian.Little, unit=config.configuration.modbus_id) def update() -> ConsumerState: power = client.read_holding_registers( @@ -39,8 +40,12 @@ def update() -> ConsumerState: def set_power_limit(power_limit: float, data: SetLimitData) -> None: # Schreibt den von openWB berechneten Überschuss in Register 102 (E-Manager Bezug/Einspeisung). # Keine echte Leistungsvorgabe - die Wärmepumpe regelt weiterhin selbst anhand dieses Wertes. + # Negiert wie in send_values(), da der E-Manager auf "Neg. E-Überschuss" eingestellt sein muss + # (negativ = Überschuss) - ohne das Minus würde eine zugeteilte Leistung als Fehlbetrag + # missverstanden. client.write_register(102, - max(power_limit, 0), + -max(power_limit, 0), + data_type=ModbusDataType.INT_16, wordorder=Endian.Little, unit=config.configuration.modbus_id)