mirror of https://github.com/home-assistant/core
Add array write to turn_on/off in modbus switch/fan/light (#52582)
This commit is contained in:
parent
8f8935c859
commit
646862ec96
|
@ -54,6 +54,8 @@ from .const import (
|
|||
CALL_TYPE_DISCRETE,
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CALL_TYPE_REGISTER_INPUT,
|
||||
CALL_TYPE_X_COILS,
|
||||
CALL_TYPE_X_REGISTER_HOLDINGS,
|
||||
CONF_BAUDRATE,
|
||||
CONF_BYTESIZE,
|
||||
CONF_CLIMATES,
|
||||
|
@ -185,6 +187,8 @@ BASE_SWITCH_SCHEMA = BASE_COMPONENT_SCHEMA.extend(
|
|||
[
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CALL_TYPE_COIL,
|
||||
CALL_TYPE_X_COILS,
|
||||
CALL_TYPE_X_REGISTER_HOLDINGS,
|
||||
]
|
||||
),
|
||||
vol.Optional(CONF_COMMAND_OFF, default=0x00): cv.positive_int,
|
||||
|
|
|
@ -23,8 +23,13 @@ from homeassistant.helpers.restore_state import RestoreEntity
|
|||
|
||||
from .const import (
|
||||
CALL_TYPE_COIL,
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CALL_TYPE_WRITE_COIL,
|
||||
CALL_TYPE_WRITE_COILS,
|
||||
CALL_TYPE_WRITE_REGISTER,
|
||||
CALL_TYPE_WRITE_REGISTERS,
|
||||
CALL_TYPE_X_COILS,
|
||||
CALL_TYPE_X_REGISTER_HOLDINGS,
|
||||
CONF_INPUT_TYPE,
|
||||
CONF_STATE_OFF,
|
||||
CONF_STATE_ON,
|
||||
|
@ -92,10 +97,19 @@ class BaseSwitch(BasePlatform, RestoreEntity):
|
|||
config[CONF_INPUT_TYPE] = ""
|
||||
super().__init__(hub, config)
|
||||
self._is_on = None
|
||||
if config[CONF_WRITE_TYPE] == CALL_TYPE_COIL:
|
||||
self._write_type = CALL_TYPE_WRITE_COIL
|
||||
else:
|
||||
self._write_type = CALL_TYPE_WRITE_REGISTER
|
||||
convert = {
|
||||
CALL_TYPE_REGISTER_HOLDING: (
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CALL_TYPE_WRITE_REGISTER,
|
||||
),
|
||||
CALL_TYPE_COIL: (CALL_TYPE_COIL, CALL_TYPE_WRITE_COIL),
|
||||
CALL_TYPE_X_COILS: (CALL_TYPE_COIL, CALL_TYPE_WRITE_COILS),
|
||||
CALL_TYPE_X_REGISTER_HOLDINGS: (
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CALL_TYPE_WRITE_REGISTERS,
|
||||
),
|
||||
}
|
||||
self._write_type = convert[config[CONF_WRITE_TYPE]][1]
|
||||
self.command_on = config[CONF_COMMAND_ON]
|
||||
self._command_off = config[CONF_COMMAND_OFF]
|
||||
if CONF_VERIFY in config:
|
||||
|
@ -107,7 +121,7 @@ class BaseSwitch(BasePlatform, RestoreEntity):
|
|||
CONF_ADDRESS, config[CONF_ADDRESS]
|
||||
)
|
||||
self._verify_type = config[CONF_VERIFY].get(
|
||||
CONF_INPUT_TYPE, config[CONF_WRITE_TYPE]
|
||||
CONF_INPUT_TYPE, convert[config[CONF_WRITE_TYPE]][0]
|
||||
)
|
||||
self._state_on = config[CONF_VERIFY].get(CONF_STATE_ON, self.command_on)
|
||||
self._state_off = config[CONF_VERIFY].get(CONF_STATE_OFF, self._command_off)
|
||||
|
|
|
@ -98,6 +98,8 @@ CALL_TYPE_WRITE_COIL = "write_coil"
|
|||
CALL_TYPE_WRITE_COILS = "write_coils"
|
||||
CALL_TYPE_WRITE_REGISTER = "write_register"
|
||||
CALL_TYPE_WRITE_REGISTERS = "write_registers"
|
||||
CALL_TYPE_X_COILS = "coils"
|
||||
CALL_TYPE_X_REGISTER_HOLDINGS = "holdings"
|
||||
|
||||
# service calls
|
||||
SERVICE_WRITE_COIL = "write_coil"
|
||||
|
|
Loading…
Reference in New Issue