From 0009a7a042b97f5087f6cd5ac4a80ec9e8adf34f Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Sat, 4 Oct 2025 17:32:18 +0200 Subject: [PATCH] Fix MQTT Lock state reset to unknown when a reset payload is received (#153647) --- homeassistant/components/mqtt/lock.py | 5 ++++- tests/components/mqtt/test_lock.py | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/mqtt/lock.py b/homeassistant/components/mqtt/lock.py index 00771ce521f..2232abb7934 100644 --- a/homeassistant/components/mqtt/lock.py +++ b/homeassistant/components/mqtt/lock.py @@ -188,7 +188,10 @@ class MqttLock(MqttEntity, LockEntity): return if payload == self._config[CONF_PAYLOAD_RESET]: # 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: self._attr_is_locked = payload == self._config[CONF_STATE_LOCKED] self._attr_is_locking = payload == self._config[CONF_STATE_LOCKING] diff --git a/tests/components/mqtt/test_lock.py b/tests/components/mqtt/test_lock.py index 4aa6ecd03ef..de2d77e69a7 100644 --- a/tests/components/mqtt/test_lock.py +++ b/tests/components/mqtt/test_lock.py @@ -75,6 +75,7 @@ CONFIG_WITH_STATES = { "state_opening": "opening", "state_unlocked": "unlocked", "state_unlocking": "unlocking", + "state_jammed": "jammed", } } } @@ -89,6 +90,7 @@ CONFIG_WITH_STATES = { (CONFIG_WITH_STATES, "opening", LockState.OPENING), (CONFIG_WITH_STATES, "unlocked", LockState.UNLOCKED), (CONFIG_WITH_STATES, "unlocking", LockState.UNLOCKING), + (CONFIG_WITH_STATES, "jammed", LockState.JAMMED), ], ) async def test_controlling_state_via_topic( @@ -111,6 +113,12 @@ async def test_controlling_state_via_topic( state = hass.states.get("lock.test") 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( ("hass_config", "payload", "lock_state"),