Fix modbus switch problems (#50117)
This commit is contained in:
parent
934d241b70
commit
552ca1c57b
2 changed files with 22 additions and 17 deletions
|
@ -183,19 +183,21 @@ SWITCH_SCHEMA = BASE_COMPONENT_SCHEMA.extend(
|
|||
),
|
||||
vol.Optional(CONF_COMMAND_OFF, default=0x00): cv.positive_int,
|
||||
vol.Optional(CONF_COMMAND_ON, default=0x01): cv.positive_int,
|
||||
vol.Optional(CONF_VERIFY): {
|
||||
vol.Optional(CONF_ADDRESS): cv.positive_int,
|
||||
vol.Optional(CONF_INPUT_TYPE): vol.In(
|
||||
[
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CALL_TYPE_DISCRETE,
|
||||
CALL_TYPE_REGISTER_INPUT,
|
||||
CALL_TYPE_COIL,
|
||||
]
|
||||
),
|
||||
vol.Optional(CONF_STATE_OFF): cv.positive_int,
|
||||
vol.Optional(CONF_STATE_ON): cv.positive_int,
|
||||
},
|
||||
vol.Optional(CONF_VERIFY): vol.Maybe(
|
||||
{
|
||||
vol.Optional(CONF_ADDRESS): cv.positive_int,
|
||||
vol.Optional(CONF_INPUT_TYPE): vol.In(
|
||||
[
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CALL_TYPE_DISCRETE,
|
||||
CALL_TYPE_REGISTER_INPUT,
|
||||
CALL_TYPE_COIL,
|
||||
]
|
||||
),
|
||||
vol.Optional(CONF_STATE_OFF): cv.positive_int,
|
||||
vol.Optional(CONF_STATE_ON): cv.positive_int,
|
||||
}
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -70,6 +70,8 @@ class ModbusSwitch(SwitchEntity, RestoreEntity):
|
|||
self._command_on = config[CONF_COMMAND_ON]
|
||||
self._command_off = config[CONF_COMMAND_OFF]
|
||||
if CONF_VERIFY in config:
|
||||
if config[CONF_VERIFY] is None:
|
||||
config[CONF_VERIFY] = {}
|
||||
self._verify_active = True
|
||||
self._verify_address = config[CONF_VERIFY].get(
|
||||
CONF_ADDRESS, config[CONF_ADDRESS]
|
||||
|
@ -97,10 +99,9 @@ class ModbusSwitch(SwitchEntity, RestoreEntity):
|
|||
if state:
|
||||
self._is_on = state.state == STATE_ON
|
||||
|
||||
if self._verify_active:
|
||||
async_track_time_interval(
|
||||
self.hass, lambda arg: self.update(), self._scan_interval
|
||||
)
|
||||
async_track_time_interval(
|
||||
self.hass, lambda arg: self.update(), self._scan_interval
|
||||
)
|
||||
|
||||
@property
|
||||
def is_on(self):
|
||||
|
@ -154,6 +155,8 @@ class ModbusSwitch(SwitchEntity, RestoreEntity):
|
|||
def update(self):
|
||||
"""Update the entity state."""
|
||||
if not self._verify_active:
|
||||
self._available = True
|
||||
self.schedule_update_ha_state()
|
||||
return
|
||||
|
||||
result = self._read_func(self._slave, self._verify_address, 1)
|
||||
|
|
Loading…
Add table
Reference in a new issue