Skip to content

Commit 235d4b0

Browse files
author
chenwenhao
committed
Adapt update_ha_state api
1 parent d077b40 commit 235d4b0

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

custom_components/sensecraft/image.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ def handle_event(self, event):
7676
self._image_path = None
7777

7878
self._attr_image_last_updated = dt_util.utcnow()
79-
self.hass.async_create_task(self.async_write_ha_state)
79+
if self.hass:
80+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
8081

8182
@property
8283
def device_info(self) -> DeviceInfo:

custom_components/sensecraft/number.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ async def async_set_native_value(self, value: float) -> None:
143143
local: GroveVisionAiV2 = data[GROVE_VISION_AI_V2]
144144
if local is not None:
145145
local.device.tscore = value
146-
self.hass.async_create_task(self.async_write_ha_state)
146+
if self.hass:
147+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
147148

148149

149150
class IOU(ConfigNumber):
@@ -169,7 +170,8 @@ async def async_set_native_value(self, value: float) -> None:
169170
local: GroveVisionAiV2 = data[GROVE_VISION_AI_V2]
170171
if local is not None:
171172
local.device.tiou = value
172-
self.hass.async_create_task(self.async_write_ha_state)
173+
if self.hass:
174+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
173175

174176

175177
class ReCameraMotor(NumberEntity):
@@ -218,11 +220,13 @@ async def async_set_native_value(self, value: float) -> None:
218220
# 发送控制命令
219221
self._recamera.send_control(command)
220222
self._attr_native_value = value
221-
self.hass.async_create_task(self.async_write_ha_state)
223+
if self.hass:
224+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
222225
except Exception as e:
223226
_LOGGER.error("Error setting motor position: %s", e)
224227

225228
def update_state(self, angle: float) -> None:
226229
"""更新电机状态."""
227230
self._attr_native_value = angle
228-
self.hass.async_create_task(self.async_write_ha_state)
231+
if self.hass:
232+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)

custom_components/sensecraft/sensor.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ async def async_will_remove_from_hass(self) -> None:
189189

190190
def handle_event(self, event):
191191
self._state = event.data.get('value')
192-
self.hass.async_create_task(self.async_write_ha_state())
192+
if self.hass:
193+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
193194

194195
@property
195196
def device_info(self) -> DeviceInfo:
@@ -242,7 +243,8 @@ async def async_will_remove_from_hass(self) -> None:
242243

243244
def handle_event(self, event):
244245
self._state = event.data.get('value')
245-
self.hass.async_create_task(self.async_write_ha_state())
246+
if self.hass:
247+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
246248

247249
@property
248250
def device_info(self) -> DeviceInfo:
@@ -290,7 +292,8 @@ async def async_will_remove_from_hass(self) -> None:
290292

291293
def handle_event(self, event):
292294
self._state = event.data.get('value')
293-
self.hass.async_create_task(self.async_write_ha_state())
295+
if self.hass:
296+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
294297

295298
@property
296299
def device_info(self) -> DeviceInfo:
@@ -335,7 +338,8 @@ async def async_will_remove_from_hass(self) -> None:
335338

336339
def handle_event(self, event):
337340
self._state = event.data.get('value')
338-
self.hass.async_create_task(self.async_write_ha_state())
341+
if self.hass:
342+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
339343

340344
@property
341345
def device_info(self) -> DeviceInfo:
@@ -379,7 +383,8 @@ async def async_will_remove_from_hass(self) -> None:
379383

380384
def handle_event(self, event):
381385
self._state = event.data.get('text')
382-
self.hass.async_create_task(self.async_write_ha_state())
386+
if self.hass:
387+
self.hass.loop.call_soon_threadsafe(self.async_schedule_update_ha_state)
383388

384389
@property
385390
def device_info(self) -> DeviceInfo:

0 commit comments

Comments
 (0)