platypush/platypush/message/event/light.py

88 lines
2.7 KiB
Python

from typing import Optional
from platypush.message.event import Event
class LightEvent(Event):
"""
Base class for light plugins events.
"""
def __init__(self, *args, plugin_name: Optional[str] = None, **kwargs):
"""
:param plugin_name: Name of the :class:`platypush.plugins.light.LightPlugin` instance that triggered the event.
"""
super().__init__(*args, plugin_name=plugin_name, **kwargs)
class LightStatusChangeEvent(LightEvent):
"""
Event triggered when the state of a lightbulb changes
"""
def __init__(self, light_id=None, light_name=None, on=None, bri=None,
sat=None, hue=None, ct=None, xy=None, *args, **kwargs):
"""
:param light_id: Light ID that triggered the event
:type light_id: int
:param light_name: Light name that triggered the event
:type light_name: str
:param on: Set if the power state of the bulb changed
:type on: bool
:param bri: Set if the brightness state of the bulb changed
:type bri: int
:param sat: Set if the saturation state of the bulb changed
:type sat: int
:param hue: Set if the hue state of the bulb changed
:type hue: int
:param ct: Set if the color temperature state of the bulb changed
:type ct: int
:param xy: Set if the color of the bulb (expressed in XY coordinates) has changed
:type xy: list
"""
attrs = {}
if light_id is not None:
attrs['light_id'] = light_id
if light_name is not None:
attrs['light_name'] = light_name
if on is not None:
attrs['on'] = on
if bri is not None:
attrs['bri'] = bri
if sat is not None:
attrs['sat'] = sat
if hue is not None:
attrs['hue'] = hue
if ct is not None:
attrs['ct'] = ct
if xy is not None:
attrs['xy'] = xy
super().__init__(*args, **attrs, **kwargs)
class LightAnimationStartedEvent(LightEvent):
"""
Event triggered when a light animation is started.
"""
def __init__(self, *args, animation, lights: Optional[list] = None, groups: Optional[list] = None, **kwargs):
super().__init__(*args, animation=animation, lights=lights, groups=groups, **kwargs)
class LightAnimationStoppedEvent(LightEvent):
"""
Event triggered when a light animation is stopped.
"""
def __init__(self, *args, animation=None, lights: Optional[list] = None, groups: Optional[list] = None, **kwargs):
super().__init__(*args, animation=animation, lights=lights, groups=groups, **kwargs)
# vim:sw=4:ts=4:et: