mirror of
https://github.com/home-assistant/core.git
synced 2025-07-09 06:17:07 +00:00
Correct Modbus platform cover restore state (#50421)
* Correct cover restore state. * Change mock usage. * Add states to convert.
This commit is contained in:
parent
1e11bfae05
commit
224cc779c4
@ -12,6 +12,12 @@ from homeassistant.const import (
|
||||
CONF_NAME,
|
||||
CONF_SCAN_INTERVAL,
|
||||
CONF_SLAVE,
|
||||
STATE_CLOSED,
|
||||
STATE_CLOSING,
|
||||
STATE_OPEN,
|
||||
STATE_OPENING,
|
||||
STATE_UNAVAILABLE,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.event import async_track_time_interval
|
||||
@ -105,7 +111,15 @@ class ModbusCover(CoverEntity, RestoreEntity):
|
||||
"""Handle entity which will be added."""
|
||||
state = await self.async_get_last_state()
|
||||
if state:
|
||||
self._value = state.state
|
||||
convert = {
|
||||
STATE_CLOSED: self._state_closed,
|
||||
STATE_CLOSING: self._state_closing,
|
||||
STATE_OPENING: self._state_opening,
|
||||
STATE_OPEN: self._state_open,
|
||||
STATE_UNAVAILABLE: None,
|
||||
STATE_UNKNOWN: None,
|
||||
}
|
||||
self._value = convert[state.state]
|
||||
|
||||
async_track_time_interval(self.hass, self.async_update, self._scan_interval)
|
||||
|
||||
|
@ -8,6 +8,11 @@ from homeassistant.components.modbus.const import (
|
||||
CALL_TYPE_COIL,
|
||||
CALL_TYPE_REGISTER_HOLDING,
|
||||
CONF_REGISTER,
|
||||
CONF_STATE_CLOSED,
|
||||
CONF_STATE_CLOSING,
|
||||
CONF_STATE_OPEN,
|
||||
CONF_STATE_OPENING,
|
||||
CONF_STATUS_REGISTER,
|
||||
CONF_STATUS_REGISTER_TYPE,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
@ -16,11 +21,16 @@ from homeassistant.const import (
|
||||
CONF_SCAN_INTERVAL,
|
||||
CONF_SLAVE,
|
||||
STATE_CLOSED,
|
||||
STATE_CLOSING,
|
||||
STATE_OPEN,
|
||||
STATE_OPENING,
|
||||
)
|
||||
from homeassistant.core import State
|
||||
|
||||
from .conftest import ReadResult, base_config_test, base_test, prepare_service_update
|
||||
|
||||
from tests.common import mock_restore_cache
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"do_options",
|
||||
@ -202,3 +212,37 @@ async def test_service_cover_update(hass, mock_pymodbus):
|
||||
"homeassistant", "update_entity", {"entity_id": entity_id}, blocking=True
|
||||
)
|
||||
assert hass.states.get(entity_id).state == STATE_OPEN
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"state", [STATE_CLOSED, STATE_CLOSING, STATE_OPENING, STATE_OPEN]
|
||||
)
|
||||
async def test_restore_state_cover(hass, state):
|
||||
"""Run test for cover restore state."""
|
||||
|
||||
entity_id = "cover.test"
|
||||
cover_name = "test"
|
||||
config = {
|
||||
CONF_NAME: cover_name,
|
||||
CALL_TYPE_COIL: 1234,
|
||||
CONF_STATE_OPEN: 1,
|
||||
CONF_STATE_CLOSED: 0,
|
||||
CONF_STATE_OPENING: 2,
|
||||
CONF_STATE_CLOSING: 3,
|
||||
CONF_STATUS_REGISTER: 1234,
|
||||
CONF_STATUS_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
|
||||
}
|
||||
mock_restore_cache(
|
||||
hass,
|
||||
(State(f"{entity_id}", state),),
|
||||
)
|
||||
await base_config_test(
|
||||
hass,
|
||||
config,
|
||||
cover_name,
|
||||
COVER_DOMAIN,
|
||||
CONF_COVERS,
|
||||
None,
|
||||
method_discovery=True,
|
||||
)
|
||||
assert hass.states.get(entity_id).state == state
|
||||
|
Loading…
x
Reference in New Issue
Block a user