@@ -192,10 +192,12 @@ def extra_state_attribute_names(self) -> set[str] | None:
192
192
def enable (self ) -> None :
193
193
"""Enable the entity."""
194
194
self .enabled = True
195
+ self .maybe_emit_state_changed_event ()
195
196
196
197
def disable (self ) -> None :
197
198
"""Disable the entity."""
198
199
self .enabled = False
200
+ self .maybe_emit_state_changed_event ()
199
201
200
202
async def on_remove (self ) -> None :
201
203
"""Cancel tasks and timers this entity owns."""
@@ -501,6 +503,7 @@ def __init__(
501
503
)
502
504
self ._attr_device_class = self ._entity_info .device_class
503
505
self ._attr_state_class = self ._entity_info .state_class
506
+ self ._tasks : list [asyncio .Task ] = []
504
507
505
508
@functools .cached_property
506
509
def info_object (self ) -> BaseEntityInfoType :
@@ -516,6 +519,23 @@ def state(self) -> dict[str, Any]:
516
519
def state (self , value : dict [str , Any ]) -> None :
517
520
"""Set the state of the entity."""
518
521
self ._entity_info .state = value
522
+ self ._attr_enabled = self ._entity_info .enabled
523
+
524
+ def enable (self ) -> None :
525
+ """Enable the entity."""
526
+ task = asyncio .create_task (
527
+ self ._device .gateway .entities .enable (self ._entity_info )
528
+ )
529
+ self ._tasks .append (task )
530
+ task .add_done_callback (self ._tasks .remove )
531
+
532
+ def disable (self ) -> None :
533
+ """Disable the entity."""
534
+ task = asyncio .create_task (
535
+ self ._device .gateway .entities .disable (self ._entity_info )
536
+ )
537
+ self ._tasks .append (task )
538
+ task .add_done_callback (self ._tasks .remove )
519
539
520
540
async def async_update (self ) -> None :
521
541
"""Retrieve latest state."""
0 commit comments