Ensure group state is recalculated when re-adding on reload (#40497)

pull/40510/head
J. Nick Koston 2020-09-23 13:55:32 -05:00 committed by GitHub
parent 6c8e0e20fb
commit 3880ac0b0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 2 deletions

View File

@ -39,7 +39,7 @@ from homeassistant.const import (
STATE_OPEN, STATE_OPEN,
STATE_OPENING, STATE_OPENING,
) )
from homeassistant.core import State from homeassistant.core import CoreState, State
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.event import async_track_state_change_event from homeassistant.helpers.event import async_track_state_change_event
@ -162,6 +162,10 @@ class CoverGroup(GroupEntity, CoverEntity):
self.hass, self._entities, self._update_supported_features_event self.hass, self._entities, self._update_supported_features_event
) )
) )
if self.hass.state == CoreState.running:
await self.async_update()
return
await super().async_added_to_hass() await super().async_added_to_hass()
@property @property

View File

@ -36,7 +36,7 @@ from homeassistant.const import (
STATE_ON, STATE_ON,
STATE_UNAVAILABLE, STATE_UNAVAILABLE,
) )
from homeassistant.core import State from homeassistant.core import CoreState, State
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.event import async_track_state_change_event from homeassistant.helpers.event import async_track_state_change_event
from homeassistant.helpers.typing import ConfigType, HomeAssistantType from homeassistant.helpers.typing import ConfigType, HomeAssistantType
@ -111,6 +111,11 @@ class LightGroup(GroupEntity, light.LightEntity):
self.hass, self._entity_ids, async_state_changed_listener self.hass, self._entity_ids, async_state_changed_listener
) )
) )
if self.hass.state == CoreState.running:
await self.async_update()
return
await super().async_added_to_hass() await super().async_added_to_hass()
@property @property

View File

@ -737,6 +737,11 @@ async def test_reload_with_base_integration_platform_not_setup(hass):
}, },
) )
await hass.async_block_till_done() await hass.async_block_till_done()
hass.states.async_set("light.master_hall_lights", STATE_ON)
hass.states.async_set("light.master_hall_lights_2", STATE_OFF)
hass.states.async_set("light.outside_patio_lights", STATE_OFF)
hass.states.async_set("light.outside_patio_lights_2", STATE_OFF)
yaml_path = path.join( yaml_path = path.join(
_get_fixtures_base_path(), _get_fixtures_base_path(),
@ -755,6 +760,8 @@ async def test_reload_with_base_integration_platform_not_setup(hass):
assert hass.states.get("light.light_group") is None assert hass.states.get("light.light_group") is None
assert hass.states.get("light.master_hall_lights_g") is not None assert hass.states.get("light.master_hall_lights_g") is not None
assert hass.states.get("light.outside_patio_lights_g") is not None assert hass.states.get("light.outside_patio_lights_g") is not None
assert hass.states.get("light.master_hall_lights_g").state == STATE_ON
assert hass.states.get("light.outside_patio_lights_g").state == STATE_OFF
def _get_fixtures_base_path(): def _get_fixtures_base_path():