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