Exemple #1
0
def christmas():
    """Christmas lights."""
    click.echo("Happy holidays.")
    transitions = tr.christmas()
    flow = yeelight.Flow(count=0, transitions=transitions)
    for bulb in BULBS:
        bulb.start_flow(flow)
Exemple #2
0
def christmas(duration=250, brightness=100, sleep=3000):
    """
    Color changes from red to green, like christmas lights.

    :param int duration: The duration between red and green, in milliseconds.
    :param int brightness: The brightness of the transition.
    :param int sleep: The time to sleep between colors, in milliseconds.

    :returns: An infinite Flow consisting of 4 transitions.
    :rtype: Flow
    """
    return Flow(count=0, action=Action.recover, transitions=transitions.christmas(duration, brightness, sleep))
Exemple #3
0
def start_flow_yeelight(id_bulb=None):
    
    flow = Flow(
        count=0,  # Cycle forever.
        transitions=transitions.christmas()
    )

    if id_bulb != None:
        if id_bulb == 0:
            bulb0.start_flow(flow)
        elif id_bulb == 1:
            bulb1.start_flow(flow)
        elif id_bulb == 2:
            bulb0.start_flow(flow)
            bulb1.start_flow(flow)
    return ('', 204)
    def set_effect(self, effect) -> None:
        """Activate effect."""
        if effect:
            from yeelight import (Flow, BulbException)
            from yeelight.transitions import (disco, temp, strobe, pulse,
                                              strobe_color, alarm, police,
                                              police2, christmas, rgb,
                                              randomloop, slowdown)
            if effect == EFFECT_STOP:
                self._bulb.stop_flow()
                return
            if effect == EFFECT_DISCO:
                flow = Flow(count=0, transitions=disco())
            if effect == EFFECT_TEMP:
                flow = Flow(count=0, transitions=temp())
            if effect == EFFECT_STROBE:
                flow = Flow(count=0, transitions=strobe())
            if effect == EFFECT_STROBE_COLOR:
                flow = Flow(count=0, transitions=strobe_color())
            if effect == EFFECT_ALARM:
                flow = Flow(count=0, transitions=alarm())
            if effect == EFFECT_POLICE:
                flow = Flow(count=0, transitions=police())
            if effect == EFFECT_POLICE2:
                flow = Flow(count=0, transitions=police2())
            if effect == EFFECT_CHRISTMAS:
                flow = Flow(count=0, transitions=christmas())
            if effect == EFFECT_RGB:
                flow = Flow(count=0, transitions=rgb())
            if effect == EFFECT_RANDOM_LOOP:
                flow = Flow(count=0, transitions=randomloop())
            if effect == EFFECT_FAST_RANDOM_LOOP:
                flow = Flow(count=0, transitions=randomloop(duration=250))
            if effect == EFFECT_SLOWDOWN:
                flow = Flow(count=0, transitions=slowdown())
            if effect == EFFECT_WHATSAPP:
                flow = Flow(count=2, transitions=pulse(37, 211, 102))
            if effect == EFFECT_FACEBOOK:
                flow = Flow(count=2, transitions=pulse(59, 89, 152))
            if effect == EFFECT_TWITTER:
                flow = Flow(count=2, transitions=pulse(0, 172, 237))

            try:
                self._bulb.start_flow(flow)
            except BulbException as ex:
                _LOGGER.error("Unable to set effect: %s", ex)
Exemple #5
0
    def set_effect(self, effect) -> None:
        """Activate effect."""
        if effect:
            from yeelight import (Flow, BulbException)
            from yeelight.transitions import (disco, temp, strobe, pulse,
                                              strobe_color, alarm, police,
                                              police2, christmas, rgb,
                                              randomloop, slowdown)
            if effect == EFFECT_STOP:
                self._bulb.stop_flow()
                return
            if effect == EFFECT_DISCO:
                flow = Flow(count=0, transitions=disco())
            if effect == EFFECT_TEMP:
                flow = Flow(count=0, transitions=temp())
            if effect == EFFECT_STROBE:
                flow = Flow(count=0, transitions=strobe())
            if effect == EFFECT_STROBE_COLOR:
                flow = Flow(count=0, transitions=strobe_color())
            if effect == EFFECT_ALARM:
                flow = Flow(count=0, transitions=alarm())
            if effect == EFFECT_POLICE:
                flow = Flow(count=0, transitions=police())
            if effect == EFFECT_POLICE2:
                flow = Flow(count=0, transitions=police2())
            if effect == EFFECT_CHRISTMAS:
                flow = Flow(count=0, transitions=christmas())
            if effect == EFFECT_RGB:
                flow = Flow(count=0, transitions=rgb())
            if effect == EFFECT_RANDOM_LOOP:
                flow = Flow(count=0, transitions=randomloop())
            if effect == EFFECT_FAST_RANDOM_LOOP:
                flow = Flow(count=0, transitions=randomloop(duration=250))
            if effect == EFFECT_SLOWDOWN:
                flow = Flow(count=0, transitions=slowdown())
            if effect == EFFECT_WHATSAPP:
                flow = Flow(count=2, transitions=pulse(37, 211, 102))
            if effect == EFFECT_FACEBOOK:
                flow = Flow(count=2, transitions=pulse(59, 89, 152))
            if effect == EFFECT_TWITTER:
                flow = Flow(count=2, transitions=pulse(0, 172, 237))

            try:
                self._bulb.start_flow(flow)
            except BulbException as ex:
                _LOGGER.error("Unable to set effect: %s", ex)
    def showPanel(self):
        self.bulb = Bulb(self.ipEntry.get(), effect="smooth", duration=1000)
        self.confirmIp.destroy()
        self.ipEntry.destroy()
        self.ipText.destroy()

        # -------------------------------------| RGB FRAME |---------------------------------------------
        self.rgb_handler = tk.Frame(master=self.window, bg='black')
        self.rgb_handler.grid(row=0,
                              column=0,
                              sticky=tk.N,
                              pady=(15, 0),
                              padx=(50, 0))

        self.redLabel = tk.Label(master=self.rgb_handler,
                                 text="Red",
                                 bg="red",
                                 fg='white')
        self.greenLabel = tk.Label(master=self.rgb_handler,
                                   text="Green",
                                   bg="green",
                                   fg='white')
        self.blueLabel = tk.Label(master=self.rgb_handler,
                                  text="Blue",
                                  bg="blue",
                                  fg='white')
        self.redLabel.grid(row=0, column=0, sticky=tk.S, pady=(12, 2))
        self.greenLabel.grid(row=0, column=1, sticky=tk.S, pady=(12, 2))
        self.blueLabel.grid(row=0, column=2, sticky=tk.S, pady=(12, 2))

        self.redSlider = tk.Scale(master=self.rgb_handler,
                                  from_=1,
                                  to=255,
                                  tickinterval=60,
                                  orient=tk.VERTICAL,
                                  bg="red",
                                  fg='white',
                                  command=self.setRedText)
        self.greenSlider = tk.Scale(master=self.rgb_handler,
                                    from_=1,
                                    to=255,
                                    tickinterval=60,
                                    orient=tk.VERTICAL,
                                    bg="green",
                                    fg='white',
                                    command=self.setGreenText)
        self.blueSlider = tk.Scale(master=self.rgb_handler,
                                   from_=1,
                                   to=255,
                                   tickinterval=60,
                                   orient=tk.VERTICAL,
                                   bg="blue",
                                   fg='white',
                                   command=self.setBlueText)

        self.redSlider.grid(row=1,
                            column=0,
                            sticky=tk.W,
                            padx=(10, 10),
                            pady=10)
        self.greenSlider.grid(row=1, column=1, sticky=tk.W, padx=(10, 10))
        self.blueSlider.grid(row=1, column=2, sticky=tk.W, padx=(10, 10))

        self.redInput = tk.Entry(master=self.rgb_handler,
                                 width=5,
                                 bg='red',
                                 fg='white')
        self.greenInput = tk.Entry(master=self.rgb_handler,
                                   width=5,
                                   bg='green',
                                   fg='white')
        self.blueInput = tk.Entry(master=self.rgb_handler,
                                  width=5,
                                  bg='blue',
                                  fg='white')
        self.redInput.insert(tk.END, 1)
        self.greenInput.insert(tk.END, 1)
        self.blueInput.insert(tk.END, 1)
        self.redInput.grid(row=2, column=0, sticky=tk.N, padx=(10, 10))
        self.greenInput.grid(row=2, column=1, sticky=tk.N, padx=(10, 10))
        self.blueInput.grid(row=2, column=2, sticky=tk.N, padx=(10, 10))

        self.colorFrame = tk.Frame(master=self.rgb_handler,
                                   bg="black",
                                   width=40,
                                   height=40,
                                   relief=tk.RIDGE,
                                   borderwidth=2)
        self.colorFrame.grid(row=3,
                             column=1,
                             sticky=tk.S,
                             padx=(10, 10),
                             pady=(10, 15))

        self.applyButton = tk.Button(master=self.rgb_handler,
                                     command=self.setColors,
                                     text="Apply Color")
        self.applyButton.grid(row=4, column=1, sticky=tk.S)

        # ---------------------------------| POWER FRAME |----------------------------------------

        self.power_handler = tk.Frame(master=self.window, bg='black')
        self.power_handler.grid(row=0,
                                column=1,
                                sticky=tk.N,
                                padx=(60, 60),
                                pady=20)

        self.title = tk.Label(master=self.power_handler,
                              text='Xiaomi led Bulb remote control',
                              fg='white',
                              bg='black',
                              font=('Helvetica', 14, 'bold'))
        self.title.grid(row=0, column=1, sticky=tk.N)

        self.buttonsHandler = tk.Frame(master=self.power_handler, bg='black')
        self.buttonsHandler.grid(row=1, column=1, sticky=tk.N, pady=10)

        self.turnOnButton = tk.Button(master=self.buttonsHandler,
                                      text="ON",
                                      width=15,
                                      command=self.turnOnBulb,
                                      padx=5)
        self.turnOnButton.grid(row=0, column=0, sticky=tk.N, padx=5)

        self.turnOffButton = tk.Button(master=self.buttonsHandler,
                                       text="OFF",
                                       width=15,
                                       command=self.turnOffBulb)
        self.turnOffButton.grid(row=0, column=1, sticky=tk.N, padx=5)

        self.title = tk.Label(master=self.power_handler,
                              text='Brightness',
                              fg='white',
                              bg='black',
                              font=('Helvetica', 12, 'bold'))
        self.title.grid(row=2, column=1, sticky=tk.N, pady=(20, 5))

        self.brightnessSlider = tk.Scale(master=self.power_handler,
                                         from_=0,
                                         to=100,
                                         tickinterval=20,
                                         orient=tk.HORIZONTAL,
                                         bg="#FFFFFF",
                                         fg='#000000',
                                         length=200)
        self.brightnessSlider.set(80)
        self.brightnessSlider.grid(row=3, column=1, sticky=tk.N, pady=10)

        self.applyBrightnessButton = tk.Button(master=self.power_handler,
                                               text="Apply Brightness",
                                               width=15,
                                               command=self.setBrightness)
        self.applyBrightnessButton.grid(row=4, column=1, sticky=tk.N, pady=10)

        # ---------------------------| MODES FRAME |----------------------------------

        self.modes_handler = tk.Frame(master=self.window, bg='black')
        self.modes_handler.grid(row=0, column=2, sticky=tk.N, padx=30, pady=50)

        self.mode_1 = tk.Button(master=self.modes_handler,
                                text="Flow 1 (smooth)",
                                width=15,
                                command=lambda: self.showFlow([
                                    RGBTransition(20, 255, 20, 2000),
                                    RGBTransition(255, 20, 20, 2000),
                                    RGBTransition(20, 20, 255, 2000),
                                    RGBTransition(255, 255, 20, 2000),
                                    RGBTransition(255, 20, 255, 2000),
                                    RGBTransition(20, 255, 255, 2000)
                                ], 10))
        self.mode_1.grid(column=0, row=0, pady=(0, 15))

        self.mode_2 = tk.Button(master=self.modes_handler,
                                text="Flow 2 (speed)",
                                width=15,
                                command=lambda: self.showFlow([
                                    RGBTransition(20, 255, 20, 100),
                                    RGBTransition(255, 20, 20, 100),
                                    RGBTransition(20, 20, 255, 100),
                                    RGBTransition(255, 255, 20, 100),
                                    RGBTransition(255, 20, 255, 100),
                                    RGBTransition(20, 255, 255, 100)
                                ], 30))
        self.mode_2.grid(column=0, row=1, pady=(0, 15))

        self.mode_3 = tk.Button(master=self.modes_handler,
                                text="Flow 3 (temp)",
                                width=15,
                                command=lambda: self.showFlow([
                                    TemperatureTransition(6500, 1000),
                                    TemperatureTransition(5200, 1000),
                                    TemperatureTransition(4000, 1000),
                                    TemperatureTransition(2800, 1000),
                                    TemperatureTransition(1700, 1000)
                                ], 5))
        self.mode_3.grid(column=0, row=2, pady=(0, 15))

        self.mode_4 = tk.Button(master=self.modes_handler,
                                text="Flow 4 (disco)",
                                width=15,
                                command=lambda: self.showFlow(disco(), 5))

        self.mode_4.grid(column=0, row=3, pady=(0, 15))

        self.mode_5 = tk.Button(master=self.modes_handler,
                                text="Flow 5 (strobe)",
                                width=15,
                                command=lambda: self.showFlow(strobe(), 20))

        self.mode_5.grid(column=0, row=4, pady=(0, 15))

        self.mode_6 = tk.Button(master=self.modes_handler,
                                text="Flow 6 (alarm)",
                                width=15,
                                command=lambda: self.showFlow(alarm(), 5))

        self.mode_6.grid(column=0, row=5, pady=(0, 15))

        self.mode_7 = tk.Button(master=self.modes_handler,
                                text="Flow 7 (police)",
                                width=15,
                                command=lambda: self.showFlow(police(), 10))

        self.mode_7.grid(column=0, row=6, pady=(0, 15))

        self.mode_8 = tk.Button(master=self.modes_handler,
                                text="Flow 8 (smooth)",
                                width=15,
                                command=lambda: self.showFlow(lsd(), 5))

        self.mode_8.grid(column=0, row=7, pady=(0, 15))

        self.mode_9 = tk.Button(master=self.modes_handler,
                                text="Flow 9 (christmas)",
                                width=15,
                                command=lambda: self.showFlow(christmas(), 5))

        self.mode_9.grid(column=0, row=8, pady=(0, 15))

        self.mode_10 = tk.Button(
            master=self.modes_handler,
            text="Flow 10 (random)",
            width=15,
            command=lambda: self.showFlow(random_loop(), 5))

        self.mode_10.grid(column=0, row=9, pady=(0, 15))

        self.quitBT = tk.Button(master=self.window,
                                text="Quit",
                                font=('Helvetica', 12, 'bold'),
                                command=self.quit)
        self.quitBT.grid(column=1, row=1, pady=(0, 15))
Exemple #7
0
import tkinter
from tkinter.colorchooser import *
from yeelight import Bulb, discover_bulbs, transitions, Flow
from PIL import Image
import pyautogui

listOfBulbs = []
brightness = 100
isFlow = False
preMadeTransitions = {
    'Alarm': transitions.alarm(),
    'Christmas': transitions.christmas(),
    'Disco': transitions.disco(),
    'LSD': transitions.lsd(),
    'Police': transitions.police(),
    'Police 2': transitions.police2(),
    'Random Loop': transitions.randomloop(),
    'RGB': transitions.rgb(),
    'Slowdown': transitions.slowdown(),
    'Strobe': transitions.strobe(),
    'Strobe Color': transitions.strobe_color(),
    'Temp': transitions.temp()
}


def searchForBulbs():
    global listOfBulbs
    listOfBulbs = []
    results = discover_bulbs()
    for bulb in results:
        listOfBulbs.append(Bulb(bulb.get("ip")))