mirror of
https://github.com/home-assistant/core.git
synced 2025-11-11 20:10:12 +00:00
Fix MQTT Lock state reset to unknown when a reset payload is received (#153647)
This commit is contained in:
committed by
Franck Nijhof
parent
a3d1aa28e7
commit
0009a7a042
@@ -188,7 +188,10 @@ class MqttLock(MqttEntity, LockEntity):
|
|||||||
return
|
return
|
||||||
if payload == self._config[CONF_PAYLOAD_RESET]:
|
if payload == self._config[CONF_PAYLOAD_RESET]:
|
||||||
# Reset the state to `unknown`
|
# Reset the state to `unknown`
|
||||||
self._attr_is_locked = None
|
self._attr_is_locked = self._attr_is_locking = None
|
||||||
|
self._attr_is_unlocking = None
|
||||||
|
self._attr_is_open = self._attr_is_opening = None
|
||||||
|
self._attr_is_jammed = None
|
||||||
elif payload in self._valid_states:
|
elif payload in self._valid_states:
|
||||||
self._attr_is_locked = payload == self._config[CONF_STATE_LOCKED]
|
self._attr_is_locked = payload == self._config[CONF_STATE_LOCKED]
|
||||||
self._attr_is_locking = payload == self._config[CONF_STATE_LOCKING]
|
self._attr_is_locking = payload == self._config[CONF_STATE_LOCKING]
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ CONFIG_WITH_STATES = {
|
|||||||
"state_opening": "opening",
|
"state_opening": "opening",
|
||||||
"state_unlocked": "unlocked",
|
"state_unlocked": "unlocked",
|
||||||
"state_unlocking": "unlocking",
|
"state_unlocking": "unlocking",
|
||||||
|
"state_jammed": "jammed",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -89,6 +90,7 @@ CONFIG_WITH_STATES = {
|
|||||||
(CONFIG_WITH_STATES, "opening", LockState.OPENING),
|
(CONFIG_WITH_STATES, "opening", LockState.OPENING),
|
||||||
(CONFIG_WITH_STATES, "unlocked", LockState.UNLOCKED),
|
(CONFIG_WITH_STATES, "unlocked", LockState.UNLOCKED),
|
||||||
(CONFIG_WITH_STATES, "unlocking", LockState.UNLOCKING),
|
(CONFIG_WITH_STATES, "unlocking", LockState.UNLOCKING),
|
||||||
|
(CONFIG_WITH_STATES, "jammed", LockState.JAMMED),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_controlling_state_via_topic(
|
async def test_controlling_state_via_topic(
|
||||||
@@ -111,6 +113,12 @@ async def test_controlling_state_via_topic(
|
|||||||
state = hass.states.get("lock.test")
|
state = hass.states.get("lock.test")
|
||||||
assert state.state == lock_state
|
assert state.state == lock_state
|
||||||
|
|
||||||
|
async_fire_mqtt_message(hass, "state-topic", "None")
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get("lock.test")
|
||||||
|
assert state.state == STATE_UNKNOWN
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("hass_config", "payload", "lock_state"),
|
("hass_config", "payload", "lock_state"),
|
||||||
|
|||||||
Reference in New Issue
Block a user