Skip to content

Commit 85a5163

Browse files
authored
Set state properly on start (#126)
1 parent 30cd01f commit 85a5163

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

custom_components/lock_code_manager/binary_sensor.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def __init__(
114114
)
115115
self._entity_id_map: dict[str, str] = {}
116116

117-
async def _update_state(self, _: datetime | None = None) -> None:
117+
@callback
118+
def _update_state(self, _: datetime | None = None) -> None:
118119
"""Update binary sensor state by getting dependent states."""
119120
_LOGGER.debug(
120121
"%s (%s): Updating %s",
@@ -165,32 +166,35 @@ async def _config_entry_update_listener(
165166
"""Update listener."""
166167
if config_entry.options:
167168
return
168-
await self._update_state()
169+
self._update_state()
169170

170-
async def _remove_keys_to_track(self, keys: list[str]) -> None:
171+
@callback
172+
def _remove_keys_to_track(self, keys: list[str]) -> None:
171173
"""Remove keys to track."""
172174
for key in keys:
173175
if key not in PLATFORM_MAP:
174176
continue
175177
self._entity_id_map.pop(key, None)
176-
await self._update_state()
178+
self._update_state()
177179

178-
async def _add_keys_to_track(self, keys: list[str]) -> None:
180+
@callback
181+
def _add_keys_to_track(self, keys: list[str]) -> None:
179182
"""Add keys to track."""
180183
for key in keys:
181184
if not (platform := PLATFORM_MAP.get(key)):
182185
continue
183186
self._entity_id_map[key] = self.ent_reg.async_get_entity_id(
184187
platform, DOMAIN, self._get_uid(key)
185188
)
186-
await self._update_state()
189+
self._update_state()
187190

188-
async def _handle_calendar_state_changes(
191+
@callback
192+
def _handle_calendar_state_changes(
189193
self, entity_id: str, _: State, __: State
190194
) -> None:
191195
"""Handle calendar state changes."""
192196
if entity_id == self._calendar_entity_id:
193-
await self._update_state()
197+
self._update_state()
194198

195199
async def async_added_to_hass(self) -> None:
196200
"""Handle entity added to hass."""
@@ -223,6 +227,8 @@ async def async_added_to_hass(self) -> None:
223227
self.config_entry.add_update_listener(self._config_entry_update_listener)
224228
)
225229

230+
self._update_state()
231+
226232

227233
class LockCodeManagerCodeSlotInSyncEntity(
228234
BaseLockCodeManagerCodeSlotPerLockEntity,
@@ -283,15 +289,15 @@ async def async_update(self) -> None:
283289
self.lock.lock.entity_id,
284290
self.slot_num,
285291
)
286-
await self._update_state()
292+
await self._async_update_state()
287293

288294
def _get_entity_state(self, key: str) -> str | None:
289295
"""Get entity state."""
290296
if (state := self.hass.states.get(self._entity_id_map[key])) is None:
291297
return None
292298
return state.state
293299

294-
async def _update_state(
300+
async def _async_update_state(
295301
self,
296302
entity_id: str | None = None,
297303
from_state: State | None = None,
@@ -371,10 +377,10 @@ async def _update_state(
371377
else:
372378
self._attr_is_on = True
373379

374-
if self._attr_is_on is False:
375-
await self.coordinator.async_refresh()
376-
else:
380+
if self._attr_is_on:
377381
self.async_write_ha_state()
382+
else:
383+
await self.coordinator.async_refresh()
378384

379385
async def async_added_to_hass(self) -> None:
380386
"""Handle entity added to hass."""
@@ -383,6 +389,6 @@ async def async_added_to_hass(self) -> None:
383389
# await CoordinatorEntity.async_added_to_hass(self)
384390

385391
self.async_on_remove(
386-
async_track_state_change(self.hass, MATCH_ALL, self._update_state)
392+
async_track_state_change(self.hass, MATCH_ALL, self._async_update_state)
387393
)
388-
await self._update_state()
394+
await self._async_update_state()

0 commit comments

Comments
 (0)