Skip to content

Commit 3797def

Browse files
silverailscoloscabrero
authored andcommitted
resolve review comments for issue #6 pymodbus dep
1 parent 1875645 commit 3797def

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ dynamic = ["version"]
2323
requires-python = ">= 3.12"
2424

2525
dependencies = [
26-
"pymodbus>=3.11", # bump for HA 2025.9.0 from: 3.8.2,!=3.8.5,<3.10",
26+
"pymodbus>=3.11.2,<4",
2727
"pyserial-asyncio>=0.6",
2828
"aiocmd>=0.1.5"
2929
]

src/pyairios/client.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from pymodbus.constants import ExcCodes
1515
from pymodbus.exceptions import ConnectionException as ModbusConnectionException
1616
from pymodbus.exceptions import ModbusException, ModbusIOException
17-
from pymodbus.pdu import ModbusPDU
17+
from pymodbus.pdu import ExceptionResponse, ModbusPDU
1818
from pymodbus.pdu.register_message import (
1919
WriteMultipleRegistersResponse,
2020
WriteSingleRegisterResponse,
@@ -116,26 +116,28 @@ async def _read_registers(self, register: int, length: int, slave: int) -> Modbu
116116
await asyncio.sleep(delay)
117117

118118
response = await self.client.read_holding_registers(
119-
register, count=length, device_id=slave # pymodbus keyword was renamed
119+
register,
120+
count=length,
121+
device_id=slave, # pymodbus keyword was renamed
120122
)
121-
if isinstance(response, ExcCodes):
122-
if response == ExcCodes.DEVICE_BUSY:
123+
if isinstance(response, ExceptionResponse):
124+
if response.exception_code == ExcCodes.DEVICE_BUSY:
123125
message = (
124126
"Got a SlaveBusy Modbus Exception while reading "
125127
f"register {register} (length {length}) from slave {slave}"
126128
)
127129
LOGGER.info(message)
128130
raise AiriosSlaveBusyException(message)
129131

130-
if response == ExcCodes.DEVICE_FAILURE:
132+
if response.exception_code == ExcCodes.DEVICE_FAILURE:
131133
message = (
132134
"Got a SlaveFailure Modbus Exception while reading "
133135
f"register {register} (length {length}) from slave {slave}"
134136
)
135137
LOGGER.info(message)
136138
raise AiriosSlaveFailureException(message)
137139

138-
if response == ExcCodes.ACKNOWLEDGE:
140+
if response.exception_code == ExcCodes.ACKNOWLEDGE:
139141
message = (
140142
f"Got ACK while reading register {register} (length {length}) "
141143
f"from slave {slave}."
@@ -149,7 +151,7 @@ async def _read_registers(self, register: int, length: int, slave: int) -> Modbu
149151
)
150152
LOGGER.warning(message)
151153
raise AiriosReadException(
152-
message, modbus_exception_code=response
154+
message, modbus_exception_code=response.exception_code
153155
)
154156

155157
if len(response.registers) != length:
@@ -199,14 +201,14 @@ async def _write_registers(self, register: int, value: list[int], slave: int) ->
199201
value,
200202
device_id=slave, # pymodbus keyword was renamed
201203
)
202-
if isinstance(response, ExcCodes):
204+
if isinstance(response, ExceptionResponse):
203205
message = (
204206
f"Failed to write value {value} to register {register}: "
205-
f"{response:02X}"
207+
f"{response.exception_code:02X}"
206208
)
207209
LOGGER.info(message)
208210
raise AiriosWriteException(
209-
message, modbus_exception_code=response
211+
message, modbus_exception_code=response.exception_code
210212
)
211213
except ModbusIOException as err:
212214
message = f"Could not write register, I/O exception: {err}"

0 commit comments

Comments
 (0)