@@ -176,7 +176,8 @@ def __init__(self, client, entity):
176176 self .entity_id = entity .get ("entity_id" )
177177 self .domain = self .entity_id .split ("." )[0 ]
178178 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" , "" )
180181 self .state = entity .get ("state" )
181182 self .attributes = entity ["attributes" ]
182183 self .target = {"entity_id" : self .entity_id }
@@ -225,15 +226,17 @@ def turn_on(self, **service_data) -> any:
225226 for arg in service_data :
226227 service_data [arg ] = service_data [arg ]
227228 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 )
229231
230232 @service (icon = "switch_off" , score = 100 )
231233 def turn_off (self , ** service_data ) -> None :
232234 """Turn entity off."""
233235 for arg in service_data :
234236 service_data [arg ] = service_data [arg ]
235237 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 )
237240
238241
239242class Light (Entity ):
@@ -250,7 +253,8 @@ def __init__(self, client: Client, entity: dict) -> None:
250253 for effect in self .attributes .get ("effect_list" , []):
251254 setattr (self , f"{ effect } " , partial (self .turn_on , effect = effect ))
252255 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 } ."
254258 getattr (self , f"{ effect } " ).icon = "star-circle-outline"
255259 getattr (self , f"{ effect } " ).score = 0
256260 # print(getattr(self, f"{color}").__icon__)
@@ -336,12 +340,14 @@ def play(self) -> None:
336340 @service (icon = "pause" )
337341 def pause (self ) -> None :
338342 """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 )
340345
341346 @service (icon = "play-pause" )
342347 def play_pause (self ) -> None :
343348 """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 )
345351
346352
347353class Climate (Entity ):
@@ -362,7 +368,8 @@ def cycle_mode(self) -> None:
362368 mode_index = 0
363369 service_data = self .target
364370 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 )
366373
367374
368375class Script (Entity ):
@@ -413,7 +420,8 @@ def snapshot(self) -> None:
413420 @service (icon = "television" )
414421 def view (self ) -> None :
415422 """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" ]} ' )
417425
418426
419427class InputSelect (BaseEntity ):
@@ -467,3 +475,16 @@ def __init__(self, client: Client, entity: dict) -> None:
467475 getattr (self , entity ).__doc__ = 'Toggle entity "{}"' .format (entity )
468476 getattr (self , entity ).icon = "checkbox-multiple-blank"
469477 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