@@ -176,7 +176,8 @@ def __init__(self, client, entity):
176
176
self .entity_id = entity .get ("entity_id" )
177
177
self .domain = self .entity_id .split ("." )[0 ]
178
178
self .name = entity .get ("name" )
179
- self .friendly_name = entity .get ("attributes" , "" ).get ("friendly_name" , "" )
179
+ self .friendly_name = entity .get (
180
+ "attributes" , "" ).get ("friendly_name" , "" )
180
181
self .state = entity .get ("state" )
181
182
self .attributes = entity ["attributes" ]
182
183
self .target = {"entity_id" : self .entity_id }
@@ -225,15 +226,17 @@ def turn_on(self, **service_data) -> any:
225
226
for arg in service_data :
226
227
service_data [arg ] = service_data [arg ]
227
228
service_data ["entity_id" ] = self .entity_id
228
- self ._client .call_services ("homeassistant" , "turn_on" , data = service_data )
229
+ self ._client .call_services (
230
+ "homeassistant" , "turn_on" , data = service_data )
229
231
230
232
@service (icon = "switch_off" , score = 100 )
231
233
def turn_off (self , ** service_data ) -> None :
232
234
"""Turn entity off."""
233
235
for arg in service_data :
234
236
service_data [arg ] = service_data [arg ]
235
237
service_data ["entity_id" ] = self .entity_id
236
- self ._client .call_services ("homeassistant" , "turn_off" , data = service_data )
238
+ self ._client .call_services (
239
+ "homeassistant" , "turn_off" , data = service_data )
237
240
238
241
239
242
class Light (Entity ):
@@ -250,7 +253,8 @@ def __init__(self, client: Client, entity: dict) -> None:
250
253
for effect in self .attributes .get ("effect_list" , []):
251
254
setattr (self , f"{ effect } " , partial (self .turn_on , effect = effect ))
252
255
getattr (self , f"{ effect } " ).name = effect .title ()
253
- getattr (self , f"{ effect } " ).__doc__ = f"Set light effect to { effect } ."
256
+ getattr (
257
+ self , f"{ effect } " ).__doc__ = f"Set light effect to { effect } ."
254
258
getattr (self , f"{ effect } " ).icon = "star-circle-outline"
255
259
getattr (self , f"{ effect } " ).score = 0
256
260
# print(getattr(self, f"{color}").__icon__)
@@ -336,12 +340,14 @@ def play(self) -> None:
336
340
@service (icon = "pause" )
337
341
def pause (self ) -> None :
338
342
"""Pause currently playing media."""
339
- self ._client .call_services ("media_player" , "media_pause" , data = self .target )
343
+ self ._client .call_services (
344
+ "media_player" , "media_pause" , data = self .target )
340
345
341
346
@service (icon = "play-pause" )
342
347
def play_pause (self ) -> None :
343
348
"""Toggle Play/Pause."""
344
- self ._client .call_services ("media_player" , "media_play_pause" , data = self .target )
349
+ self ._client .call_services (
350
+ "media_player" , "media_play_pause" , data = self .target )
345
351
346
352
347
353
class Climate (Entity ):
@@ -362,7 +368,8 @@ def cycle_mode(self) -> None:
362
368
mode_index = 0
363
369
service_data = self .target
364
370
service_data ["hvac_mode" ] = self .hvac_modes [mode_index ]
365
- self ._client .call_services ("climate" , "set_hvac_mode" , data = service_data )
371
+ self ._client .call_services (
372
+ "climate" , "set_hvac_mode" , data = service_data )
366
373
367
374
368
375
class Script (Entity ):
@@ -413,7 +420,8 @@ def snapshot(self) -> None:
413
420
@service (icon = "television" )
414
421
def view (self ) -> None :
415
422
"""View a still from this Camera entity."""
416
- webbrowser .open (f'{ self ._client ._url } { self .attributes ["entity_picture" ]} ' )
423
+ webbrowser .open (
424
+ f'{ self ._client ._url } { self .attributes ["entity_picture" ]} ' )
417
425
418
426
419
427
class InputSelect (BaseEntity ):
@@ -467,3 +475,16 @@ def __init__(self, client: Client, entity: dict) -> None:
467
475
getattr (self , entity ).__doc__ = 'Toggle entity "{}"' .format (entity )
468
476
getattr (self , entity ).icon = "checkbox-multiple-blank"
469
477
getattr (self , entity )._service = True
478
+
479
+
480
+ class Scene (Entity ):
481
+ def __init__ (self , client : Client , entity : dict ) -> None :
482
+ super ().__init__ (client , entity )
483
+
484
+ def _default_action (self ):
485
+ self .activate ()
486
+
487
+ @service (icon = "play" )
488
+ def activate (self ) -> None :
489
+ """Activate scene."""
490
+ self ._client .call_services ("scene" , "turn_on" , data = self .target )
0 commit comments