from abc import ABC, abstractmethod

from platypush.plugins import action
from platypush.plugins.switch import SwitchPlugin


class LightPlugin(SwitchPlugin, ABC):
    """
    Abstract plugin to interface your logic with lights/bulbs.
    """

    @action
    @abstractmethod
    def on(self):
        """ Turn the light on """
        raise NotImplementedError()

    @action
    @abstractmethod
    def off(self):
        """ Turn the light off """
        raise NotImplementedError()

    @action
    @abstractmethod
    def toggle(self):
        """ Toggle the light status (on/off) """
        raise NotImplementedError()


# vim:sw=4:ts=4:et: