mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
@@ -117,7 +117,7 @@ class ModbusLight(ModbusToggleEntity, LightEntity):
|
||||
conv_brightness = self._convert_brightness_to_modbus(brightness)
|
||||
|
||||
await self._hub.async_pb_call(
|
||||
device_address=self._device_address,
|
||||
unit=self._device_address,
|
||||
address=self._brightness_address,
|
||||
value=conv_brightness,
|
||||
use_call=CALL_TYPE_WRITE_REGISTER,
|
||||
@@ -133,7 +133,7 @@ class ModbusLight(ModbusToggleEntity, LightEntity):
|
||||
conv_color_temp_kelvin = self._convert_color_temp_to_modbus(color_temp_kelvin)
|
||||
|
||||
await self._hub.async_pb_call(
|
||||
device_address=self._device_address,
|
||||
unit=self._device_address,
|
||||
address=self._color_temp_address,
|
||||
value=conv_color_temp_kelvin,
|
||||
use_call=CALL_TYPE_WRITE_REGISTER,
|
||||
@@ -150,7 +150,7 @@ class ModbusLight(ModbusToggleEntity, LightEntity):
|
||||
|
||||
if self._brightness_address:
|
||||
brightness_result = await self._hub.async_pb_call(
|
||||
device_address=self._device_address,
|
||||
unit=self._device_address,
|
||||
value=1,
|
||||
address=self._brightness_address,
|
||||
use_call=CALL_TYPE_REGISTER_HOLDING,
|
||||
@@ -167,7 +167,7 @@ class ModbusLight(ModbusToggleEntity, LightEntity):
|
||||
|
||||
if self._color_temp_address:
|
||||
color_result = await self._hub.async_pb_call(
|
||||
device_address=self._device_address,
|
||||
unit=self._device_address,
|
||||
value=1,
|
||||
address=self._color_temp_address,
|
||||
use_call=CALL_TYPE_REGISTER_HOLDING,
|
||||
|
||||
@@ -370,17 +370,11 @@ class ModbusHub:
|
||||
_LOGGER.info(f"modbus {self.name} communication closed")
|
||||
|
||||
async def low_level_pb_call(
|
||||
self,
|
||||
device_address: int | None,
|
||||
address: int,
|
||||
value: int | list[int],
|
||||
use_call: str,
|
||||
self, slave: int | None, address: int, value: int | list[int], use_call: str
|
||||
) -> ModbusPDU | None:
|
||||
"""Call sync. pymodbus."""
|
||||
kwargs: dict[str, Any] = (
|
||||
{DEVICE_ID: device_address}
|
||||
if device_address is not None
|
||||
else {DEVICE_ID: 1}
|
||||
{DEVICE_ID: slave} if slave is not None else {DEVICE_ID: 1}
|
||||
)
|
||||
entry = self._pb_request[use_call]
|
||||
|
||||
@@ -392,26 +386,28 @@ class ModbusHub:
|
||||
try:
|
||||
result: ModbusPDU = await entry.func(address, **kwargs)
|
||||
except ModbusException as exception_error:
|
||||
error = f"Error: device: {device_address} address: {address} -> {exception_error!s}"
|
||||
error = f"Error: device: {slave} address: {address} -> {exception_error!s}"
|
||||
self._log_error(error)
|
||||
return None
|
||||
if not result:
|
||||
error = f"Error: device: {device_address} address: {address} -> pymodbus returned None"
|
||||
error = (
|
||||
f"Error: device: {slave} address: {address} -> pymodbus returned None"
|
||||
)
|
||||
self._log_error(error)
|
||||
return None
|
||||
if not hasattr(result, entry.attr):
|
||||
error = f"Error: device: {device_address} address: {address} -> {result!s}"
|
||||
error = f"Error: device: {slave} address: {address} -> {result!s}"
|
||||
self._log_error(error)
|
||||
return None
|
||||
if result.isError():
|
||||
error = f"Error: device: {device_address} address: {address} -> pymodbus returned isError True"
|
||||
error = f"Error: device: {slave} address: {address} -> pymodbus returned isError True"
|
||||
self._log_error(error)
|
||||
return None
|
||||
return result
|
||||
|
||||
async def async_pb_call(
|
||||
self,
|
||||
device_address: int | None,
|
||||
unit: int | None,
|
||||
address: int,
|
||||
value: int | list[int],
|
||||
use_call: str,
|
||||
@@ -419,7 +415,7 @@ class ModbusHub:
|
||||
"""Convert async to sync pymodbus call."""
|
||||
if not self._client:
|
||||
return None
|
||||
result = await self.low_level_pb_call(device_address, address, value, use_call)
|
||||
result = await self.low_level_pb_call(unit, address, value, use_call)
|
||||
if self._msg_wait:
|
||||
await asyncio.sleep(self._msg_wait)
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user