@@ -569,23 +569,6 @@ async def async_write_registers(
569569 if register_type in [RegisterType .HOLDING , RegisterType .WRITE_ONLY ]:
570570 tried_offset = False
571571 last_error = None
572- # Try offset addressing first if address >= 40001
573- # if address >= 40001:
574- # offset_address = address - 40001
575- # _LOGGER.debug(
576- # "Trying write_registers at offset address %s (orig %s) with values %s for slave %s",
577- # offset_address, address, values, slave_id
578- # )
579- # result = await client.write_registers(
580- # address=offset_address, values=values, slave=slave_id
581- # )
582- # if not result.isError():
583- # _LOGGER.debug("Successfully wrote to registers at offset address %s", offset_address)
584- # return
585- # _LOGGER.debug("Offset write failed, will try original address. Error: %s", result)
586- # last_error = result
587- # tried_offset = True
588- # Try original address if not tried yet or offset failed
589572 _LOGGER .debug (
590573 "Trying write_registers at original address %s with values %s for slave %s" ,
591574 address , values , slave_id
@@ -1001,116 +984,6 @@ async def async_write_parameter(
1001984 slave_id , value , register_def .address ,
1002985 register_def .register_type , register_def .data_type , register_def .gain
1003986 )
1004-
1005- # === Plant-Specific Handling ===
1006- # Certain plant registers require special handling due to Modbus quirks
1007- if device_type == "plant" :
1008- key = self ._get_connection_key (device_info ) # Get connection key for client/lock
1009- # plant_info is guaranteed to be a dict here
1010-
1011- # Special handling for plant_remote_ems_enable register
1012- # if register_name == "plant_remote_ems_enable":
1013- # _LOGGER.debug("Special handling for plant_remote_ems_enable register")
1014- # approaches = [
1015- # {"function": "write_registers", "address": register_def.address,
1016- # "values": [int(value)]},
1017- # {"function": "write_register", "address": register_def.address,
1018- # "value": int(value)},
1019- # {"function": "write_registers", "address": register_def.address - 40001,
1020- # "values": [int(value)]},
1021- # {"function": "write_register", "address": register_def.address - 40001,
1022- # "value": int(value)},
1023- # ]
1024- # last_error = None
1025- # success = False
1026- # try:
1027- # async with self._locks[key]:
1028- # client = await self._get_client(device_info)
1029- # for approach in approaches:
1030- # try:
1031- # _LOGGER.debug(
1032- # "Plant write attempt: %s", approach['description'] \
1033- # if 'description' in approach \
1034- # else f"{approach['function']} @ {approach['address']}")
1035- # if approach["function"] == "write_registers":
1036- # result = await client.write_registers(
1037- # address=approach["address"],
1038- # values=approach["values"],
1039- # slave=slave_id
1040- # )
1041- # else:
1042- # result = await client.write_register(
1043- # address=approach["address"],
1044- # value=approach["value"],
1045- # slave=slave_id
1046- # )
1047- # if not result.isError():
1048- # success = True
1049- # break
1050- # last_error = result
1051- # except Exception as ex_inner:
1052- # last_error = ex_inner
1053- # if not success:
1054- # raise SigenergyModbusError("Failed plant_remote_ems_enable write after "
1055- # f"all attempts. Last error: {last_error}")
1056- # return # Success
1057- # except (ConnectionException, ModbusException, SigenergyModbusError) as ex_outer:
1058- # self._connected[key] = False
1059- # raise SigenergyModbusError(f"Error during special plant write: {ex_outer}") \
1060- # from ex_outer
1061- # except Exception as ex_outer:
1062- # raise SigenergyModbusError("Unexpected error during special plant write:"
1063- # f" {ex_outer}") from ex_outer
1064-
1065- # Special handling for U32/S32 registers
1066- # if register_def.data_type in [DataType.U32, DataType.S32]:
1067- # _LOGGER.debug("Special handling for U32/S32 register %s", register_name)
1068- # encoded_values = self._encode_value(value=value, data_type=register_def.data_type,
1069- # gain=register_def.gain)
1070- # _LOGGER.debug("Encoded values for %s: %s", register_name, encoded_values)
1071- # approaches = [
1072- # {"address": register_def.address},
1073- # {"address": register_def.address - 40001},
1074- # {"address": register_def.address - 40000},
1075- # {"address": register_def.address % 10000},
1076- # ]
1077- # last_error = None
1078- # success = False
1079- # try:
1080- # async with self._locks[key]:
1081- # client = await self._get_client(device_info)
1082- # for approach in approaches:
1083- # try:
1084- # _LOGGER.debug("Plant U32/S32 write attempt: write_registers @ %s",
1085- # approach['address'])
1086- # result = await client.write_registers(
1087- # address=approach["address"],
1088- # values=encoded_values,
1089- # slave=slave_id
1090- # )
1091- # if not result.isError():
1092- # success = True
1093- # break
1094- # last_error = result
1095- # except Exception as ex_inner:
1096- # last_error = ex_inner
1097- # if not success:
1098- # raise SigenergyModbusError(
1099- # f"Failed U32/S32 write for {register_name} after all attempts. "
1100- # f"Last error: {last_error}"
1101- # )
1102- # return # Success
1103- # except (ConnectionException, ModbusException, SigenergyModbusError) as ex_outer:
1104- # self._connected[key] = False
1105- # raise SigenergyModbusError("Error during special plant U32/S32 write:"\
1106- # f" {ex_outer}") from ex_outer
1107- # except Exception as ex_outer:
1108- # raise SigenergyModbusError("Unexpected error during special plant " \
1109- # f"U32/S32 write: {ex_outer}") from ex_outer
1110-
1111- # === General Write Logic ===
1112- # (Executes if device_type is not 'plant' or if it's a plant register
1113- # without special handling)
1114987 encoded_values = self ._encode_value (
1115988 value = value ,
1116989 data_type = register_def .data_type ,
0 commit comments