Add "close_comm_on_error" to modbus configuration (#50583)
This commit is contained in:
parent
7ea23533cf
commit
19cdff10c3
3 changed files with 9 additions and 0 deletions
|
@ -57,6 +57,7 @@ from .const import (
|
||||||
CONF_BAUDRATE,
|
CONF_BAUDRATE,
|
||||||
CONF_BYTESIZE,
|
CONF_BYTESIZE,
|
||||||
CONF_CLIMATES,
|
CONF_CLIMATES,
|
||||||
|
CONF_CLOSE_COMM_ON_ERROR,
|
||||||
CONF_CURRENT_TEMP,
|
CONF_CURRENT_TEMP,
|
||||||
CONF_CURRENT_TEMP_REGISTER_TYPE,
|
CONF_CURRENT_TEMP_REGISTER_TYPE,
|
||||||
CONF_DATA_COUNT,
|
CONF_DATA_COUNT,
|
||||||
|
@ -281,6 +282,7 @@ MODBUS_SCHEMA = vol.Schema(
|
||||||
{
|
{
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_HUB): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_HUB): cv.string,
|
||||||
vol.Optional(CONF_TIMEOUT, default=3): cv.socket_timeout,
|
vol.Optional(CONF_TIMEOUT, default=3): cv.socket_timeout,
|
||||||
|
vol.Optional(CONF_CLOSE_COMM_ON_ERROR, default=True): cv.boolean,
|
||||||
vol.Optional(CONF_DELAY, default=0): cv.positive_int,
|
vol.Optional(CONF_DELAY, default=0): cv.positive_int,
|
||||||
vol.Optional(CONF_BINARY_SENSORS): vol.All(
|
vol.Optional(CONF_BINARY_SENSORS): vol.All(
|
||||||
cv.ensure_list, [BINARY_SENSOR_SCHEMA]
|
cv.ensure_list, [BINARY_SENSOR_SCHEMA]
|
||||||
|
|
|
@ -16,6 +16,7 @@ from homeassistant.const import (
|
||||||
CONF_BAUDRATE = "baudrate"
|
CONF_BAUDRATE = "baudrate"
|
||||||
CONF_BYTESIZE = "bytesize"
|
CONF_BYTESIZE = "bytesize"
|
||||||
CONF_CLIMATES = "climates"
|
CONF_CLIMATES = "climates"
|
||||||
|
CONF_CLOSE_COMM_ON_ERROR = "close_comm_on_error"
|
||||||
CONF_COILS = "coils"
|
CONF_COILS = "coils"
|
||||||
CONF_CURRENT_TEMP = "current_temp_register"
|
CONF_CURRENT_TEMP = "current_temp_register"
|
||||||
CONF_CURRENT_TEMP_REGISTER_TYPE = "current_temp_register_type"
|
CONF_CURRENT_TEMP_REGISTER_TYPE = "current_temp_register_type"
|
||||||
|
|
|
@ -28,6 +28,7 @@ from .const import (
|
||||||
ATTR_VALUE,
|
ATTR_VALUE,
|
||||||
CONF_BAUDRATE,
|
CONF_BAUDRATE,
|
||||||
CONF_BYTESIZE,
|
CONF_BYTESIZE,
|
||||||
|
CONF_CLOSE_COMM_ON_ERROR,
|
||||||
CONF_PARITY,
|
CONF_PARITY,
|
||||||
CONF_STOPBITS,
|
CONF_STOPBITS,
|
||||||
DEFAULT_HUB,
|
DEFAULT_HUB,
|
||||||
|
@ -125,6 +126,7 @@ class ModbusHub:
|
||||||
self._config_port = client_config[CONF_PORT]
|
self._config_port = client_config[CONF_PORT]
|
||||||
self._config_timeout = client_config[CONF_TIMEOUT]
|
self._config_timeout = client_config[CONF_TIMEOUT]
|
||||||
self._config_delay = client_config[CONF_DELAY]
|
self._config_delay = client_config[CONF_DELAY]
|
||||||
|
self._config_reset_socket = client_config[CONF_CLOSE_COMM_ON_ERROR]
|
||||||
Defaults.Timeout = client_config[CONF_TIMEOUT]
|
Defaults.Timeout = client_config[CONF_TIMEOUT]
|
||||||
if self._config_type == "serial":
|
if self._config_type == "serial":
|
||||||
# serial configuration
|
# serial configuration
|
||||||
|
@ -163,6 +165,7 @@ class ModbusHub:
|
||||||
parity=self._config_parity,
|
parity=self._config_parity,
|
||||||
timeout=self._config_timeout,
|
timeout=self._config_timeout,
|
||||||
retry_on_empty=True,
|
retry_on_empty=True,
|
||||||
|
reset_socket=self._config_reset_socket,
|
||||||
)
|
)
|
||||||
elif self._config_type == "rtuovertcp":
|
elif self._config_type == "rtuovertcp":
|
||||||
self._client = ModbusTcpClient(
|
self._client = ModbusTcpClient(
|
||||||
|
@ -170,18 +173,21 @@ class ModbusHub:
|
||||||
port=self._config_port,
|
port=self._config_port,
|
||||||
framer=ModbusRtuFramer,
|
framer=ModbusRtuFramer,
|
||||||
timeout=self._config_timeout,
|
timeout=self._config_timeout,
|
||||||
|
reset_socket=self._config_reset_socket,
|
||||||
)
|
)
|
||||||
elif self._config_type == "tcp":
|
elif self._config_type == "tcp":
|
||||||
self._client = ModbusTcpClient(
|
self._client = ModbusTcpClient(
|
||||||
host=self._config_host,
|
host=self._config_host,
|
||||||
port=self._config_port,
|
port=self._config_port,
|
||||||
timeout=self._config_timeout,
|
timeout=self._config_timeout,
|
||||||
|
reset_socket=self._config_reset_socket,
|
||||||
)
|
)
|
||||||
elif self._config_type == "udp":
|
elif self._config_type == "udp":
|
||||||
self._client = ModbusUdpClient(
|
self._client = ModbusUdpClient(
|
||||||
host=self._config_host,
|
host=self._config_host,
|
||||||
port=self._config_port,
|
port=self._config_port,
|
||||||
timeout=self._config_timeout,
|
timeout=self._config_timeout,
|
||||||
|
reset_socket=self._config_reset_socket,
|
||||||
)
|
)
|
||||||
except ModbusException as exception_error:
|
except ModbusException as exception_error:
|
||||||
self._log_error(exception_error, error_state=False)
|
self._log_error(exception_error, error_state=False)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue