mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 08:47:10 +00:00
Catch non payload modbus messages (#49910)
This commit is contained in:
parent
9e43239240
commit
7ac05110ca
@ -5,7 +5,6 @@ import threading
|
|||||||
from pymodbus.client.sync import ModbusSerialClient, ModbusTcpClient, ModbusUdpClient
|
from pymodbus.client.sync import ModbusSerialClient, ModbusTcpClient, ModbusUdpClient
|
||||||
from pymodbus.constants import Defaults
|
from pymodbus.constants import Defaults
|
||||||
from pymodbus.exceptions import ModbusException
|
from pymodbus.exceptions import ModbusException
|
||||||
from pymodbus.pdu import ExceptionResponse, IllegalFunctionRequest
|
|
||||||
from pymodbus.transaction import ModbusRtuFramer
|
from pymodbus.transaction import ModbusRtuFramer
|
||||||
|
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
@ -237,8 +236,8 @@ class ModbusHub:
|
|||||||
result = self._client.read_coils(address, count, **kwargs)
|
result = self._client.read_coils(address, count, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
self._log_error(exception_error)
|
||||||
return None
|
result = exception_error
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
if not hasattr(result, "registers"):
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return None
|
return None
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
@ -251,9 +250,8 @@ class ModbusHub:
|
|||||||
try:
|
try:
|
||||||
result = self._client.read_discrete_inputs(address, count, **kwargs)
|
result = self._client.read_discrete_inputs(address, count, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
result = exception_error
|
||||||
return None
|
if not hasattr(result, "registers"):
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return None
|
return None
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
@ -266,9 +264,8 @@ class ModbusHub:
|
|||||||
try:
|
try:
|
||||||
result = self._client.read_input_registers(address, count, **kwargs)
|
result = self._client.read_input_registers(address, count, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
result = exception_error
|
||||||
return None
|
if not hasattr(result, "registers"):
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return None
|
return None
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
@ -281,9 +278,8 @@ class ModbusHub:
|
|||||||
try:
|
try:
|
||||||
result = self._client.read_holding_registers(address, count, **kwargs)
|
result = self._client.read_holding_registers(address, count, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
result = exception_error
|
||||||
return None
|
if not hasattr(result, "registers"):
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return None
|
return None
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
@ -296,9 +292,8 @@ class ModbusHub:
|
|||||||
try:
|
try:
|
||||||
result = self._client.write_coil(address, value, **kwargs)
|
result = self._client.write_coil(address, value, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
result = exception_error
|
||||||
return False
|
if not hasattr(result, "registers"):
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return False
|
return False
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
@ -311,9 +306,8 @@ class ModbusHub:
|
|||||||
try:
|
try:
|
||||||
result = self._client.write_coils(address, values, **kwargs)
|
result = self._client.write_coils(address, values, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
result = exception_error
|
||||||
return False
|
if not hasattr(result, "registers"):
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return False
|
return False
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
@ -326,9 +320,8 @@ class ModbusHub:
|
|||||||
try:
|
try:
|
||||||
result = self._client.write_register(address, value, **kwargs)
|
result = self._client.write_register(address, value, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
result = exception_error
|
||||||
return False
|
if not hasattr(result, "registers"):
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return False
|
return False
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
@ -341,9 +334,8 @@ class ModbusHub:
|
|||||||
try:
|
try:
|
||||||
result = self._client.write_registers(address, values, **kwargs)
|
result = self._client.write_registers(address, values, **kwargs)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error)
|
result = exception_error
|
||||||
return False
|
if not hasattr(result, "registers"):
|
||||||
if isinstance(result, (ExceptionResponse, IllegalFunctionRequest)):
|
|
||||||
self._log_error(result)
|
self._log_error(result)
|
||||||
return False
|
return False
|
||||||
self._in_error = False
|
self._in_error = False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user