Fix modbus switch problems (#50117)

This commit is contained in:
jan iversen 2021-05-07 22:12:13 +02:00 committed by GitHub
parent 934d241b70
commit 552ca1c57b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 17 deletions

View file

@ -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,
}, }
),
} }
) )

View file

@ -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)