mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Fix immediate state update for Comelit (#141735)
This commit is contained in:
parent
e2ff0b265d
commit
4e4446cef4
@ -8,7 +8,7 @@ from aiocomelit import ComelitSerialBridgeObject
|
|||||||
from aiocomelit.const import COVER, STATE_COVER, STATE_OFF, STATE_ON
|
from aiocomelit.const import COVER, STATE_COVER, STATE_OFF, STATE_ON
|
||||||
|
|
||||||
from homeassistant.components.cover import CoverDeviceClass, CoverEntity, CoverState
|
from homeassistant.components.cover import CoverDeviceClass, CoverEntity, CoverState
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
from homeassistant.helpers.restore_state import RestoreEntity
|
from homeassistant.helpers.restore_state import RestoreEntity
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
@ -98,13 +98,20 @@ class ComelitCoverEntity(
|
|||||||
"""Return if the cover is opening."""
|
"""Return if the cover is opening."""
|
||||||
return self._current_action("opening")
|
return self._current_action("opening")
|
||||||
|
|
||||||
|
async def _cover_set_state(self, action: int, state: int) -> None:
|
||||||
|
"""Set desired cover state."""
|
||||||
|
self._last_state = self.state
|
||||||
|
await self._api.set_device_status(COVER, self._device.index, action)
|
||||||
|
self.coordinator.data[COVER][self._device.index].status = state
|
||||||
|
self.async_write_ha_state()
|
||||||
|
|
||||||
async def async_close_cover(self, **kwargs: Any) -> None:
|
async def async_close_cover(self, **kwargs: Any) -> None:
|
||||||
"""Close cover."""
|
"""Close cover."""
|
||||||
await self._api.set_device_status(COVER, self._device.index, STATE_OFF)
|
await self._cover_set_state(STATE_OFF, 2)
|
||||||
|
|
||||||
async def async_open_cover(self, **kwargs: Any) -> None:
|
async def async_open_cover(self, **kwargs: Any) -> None:
|
||||||
"""Open cover."""
|
"""Open cover."""
|
||||||
await self._api.set_device_status(COVER, self._device.index, STATE_ON)
|
await self._cover_set_state(STATE_ON, 1)
|
||||||
|
|
||||||
async def async_stop_cover(self, **_kwargs: Any) -> None:
|
async def async_stop_cover(self, **_kwargs: Any) -> None:
|
||||||
"""Stop the cover."""
|
"""Stop the cover."""
|
||||||
@ -112,13 +119,7 @@ class ComelitCoverEntity(
|
|||||||
return
|
return
|
||||||
|
|
||||||
action = STATE_ON if self.is_closing else STATE_OFF
|
action = STATE_ON if self.is_closing else STATE_OFF
|
||||||
await self._api.set_device_status(COVER, self._device.index, action)
|
await self._cover_set_state(action, 0)
|
||||||
|
|
||||||
@callback
|
|
||||||
def _handle_coordinator_update(self) -> None:
|
|
||||||
"""Handle device update."""
|
|
||||||
self._last_state = self.state
|
|
||||||
self.async_write_ha_state()
|
|
||||||
|
|
||||||
async def async_added_to_hass(self) -> None:
|
async def async_added_to_hass(self) -> None:
|
||||||
"""Handle entity which will be added."""
|
"""Handle entity which will be added."""
|
||||||
|
@ -59,7 +59,8 @@ class ComelitLightEntity(CoordinatorEntity[ComelitSerialBridge], LightEntity):
|
|||||||
async def _light_set_state(self, state: int) -> None:
|
async def _light_set_state(self, state: int) -> None:
|
||||||
"""Set desired light state."""
|
"""Set desired light state."""
|
||||||
await self.coordinator.api.set_device_status(LIGHT, self._device.index, state)
|
await self.coordinator.api.set_device_status(LIGHT, self._device.index, state)
|
||||||
await self.coordinator.async_request_refresh()
|
self.coordinator.data[LIGHT][self._device.index].status = state
|
||||||
|
self.async_write_ha_state()
|
||||||
|
|
||||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
async def async_turn_on(self, **kwargs: Any) -> None:
|
||||||
"""Turn the light on."""
|
"""Turn the light on."""
|
||||||
|
@ -67,7 +67,8 @@ class ComelitSwitchEntity(CoordinatorEntity[ComelitSerialBridge], SwitchEntity):
|
|||||||
await self.coordinator.api.set_device_status(
|
await self.coordinator.api.set_device_status(
|
||||||
self._device.type, self._device.index, state
|
self._device.type, self._device.index, state
|
||||||
)
|
)
|
||||||
await self.coordinator.async_request_refresh()
|
self.coordinator.data[self._device.type][self._device.index].status = state
|
||||||
|
self.async_write_ha_state()
|
||||||
|
|
||||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
async def async_turn_on(self, **kwargs: Any) -> None:
|
||||||
"""Turn the switch on."""
|
"""Turn the switch on."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user