Ejemplo n.º 1
0
    async def async_turn_on(self, **kwargs):
        """Instruct the light to turn on."""
        rgb = None
        if ATTR_RGB_COLOR in kwargs:
            rgb = kwargs.get(ATTR_RGB_COLOR)
        if ATTR_HS_COLOR in kwargs:
            rgb = color_utils.color_hs_to_RGB(kwargs[ATTR_HS_COLOR][0],
                                              kwargs[ATTR_HS_COLOR][1])

        brightness = None
        if ATTR_BRIGHTNESS in kwargs:
            brightness = kwargs.get(ATTR_BRIGHTNESS)

        colortemp = None
        if ATTR_COLOR_TEMP in kwargs:
            kelvin = color_utils.color_temperature_mired_to_kelvin(
                kwargs[ATTR_COLOR_TEMP])
            colortemp = kelvin

        sceneid = None
        if ATTR_EFFECT in kwargs:
            sceneid = self._light.get_id_from_scene_name(kwargs[ATTR_EFFECT])

        if sceneid == 1000:  # rhythm
            pilot = PilotBuilder()
        else:
            pilot = PilotBuilder(rgb=rgb,
                                 brightness=brightness,
                                 colortemp=colortemp,
                                 scene=sceneid)

        await self._light.turn_on(pilot)
Ejemplo n.º 2
0
async def run_bulb_automation():
    loop = asyncio.get_event_loop()
    bulb1 = wizlight('192.168.178.95')
    # bulb2 = wizlight('192.168.1.7')
    # await asyncio.gather(testbulb(bulb1), testbulb(bulb2), loop = loop)
    state = await bulb1.updateState()
    await bulb1.turn_on(PilotBuilder(scene=14))
    state = await bulb1.updateState()
    await asyncio.sleep(0.5)
    await bulb1.turn_on(PilotBuilder())  #rhythm
    state = await bulb1.updateState()
Ejemplo n.º 3
0
async def music():
    await light.turn_on(PilotBuilder())
    await light.turn_on(PilotBuilder(brightness=1))

    for i in range(int(10 * 44100 / 1024)):  #go for a few seconds
        data = np.fromstring(stream.read(CHUNK), dtype=np.int16)
        peak = np.average(np.abs(data)) * 2
        bars = "#" * int(50 * peak / 2**16)
        r = 0
        g = 0
        b = 0
        if (peak <= 5000 / 6):
            r = 245
            g = peak / 5000 * 179 + 66
            b = 66
        elif (peak <= 5000 / 6 * 2):
            r = peak / 5000 * 179 + 66
            g = 245
            b = 66
        elif (peak <= 5000 / 6 * 3):
            r = 66
            g = 245
            b = peak / 5000 * 179 + 66
        elif (peak <= 5000 / 6 * 4):
            r = 66
            g = peak / 5000 * 179 + 66
            b = 245
        elif (peak <= 5000 / 6 * 5):
            r = peak / 5000 * 179 + 66
            g = 245
            b = 66
        elif (peak <= 5000 / 6 * 6):
            r = 245
            g = 66
            b = peak / 5000 * 179 + 66
        r = min(r, 255)
        g = min(g, 255)
        b = min(b, 255)
        #r = min(127.5 + peak/7000 * 255, 254)
        #g = max(127.5 - peak/5500 * 255, 0)
        #b = min(peak/4000 * 255, 254)
        brightlevel = min(peak / 7000 * 254, 255)
        #print("%04d %05d %s"%(i,peak,bars))
        #print(bars)
        print(peak)
        await light.turn_on(PilotBuilder(rgb=(r, g, b),
                                         brightness=brightlevel))
        print('r value', r)
        print('g value', g)
        print('g value', b)
        print('brightness value', brightlevel)
Ejemplo n.º 4
0
async def test_timeout_PilotBuilder(bad_bulb: wizlight) -> None:
    """Test Timout for Result."""
    # check if the bulb state it given as bool - mock ?
    with pytest.raises(WizLightTimeOutError), patch(
        "pywizlight.bulb.FIRST_SEND_INTERVAL", 0.01
    ), patch("pywizlight.bulb.TIMEOUT", 0.01):
        await bad_bulb.turn_on(PilotBuilder(brightness=255))
Ejemplo n.º 5
0
async def test_PilotBuilder_speed(correct_bulb: wizlight) -> None:
    """Test speed."""
    await correct_bulb.turn_on(PilotBuilder(scene=1, speed=50))
    state = await correct_bulb.updateState()

    assert state and state.get_scene() == SCENES[1]
    assert state and state.get_speed() == 50
Ejemplo n.º 6
0
async def set_state(ip, k, brightness):
    """Turn a given bulb on."""
    click.echo("Turning on %s" % ip)
    bulb = wizlight(ip)
    if bulb and k <= 6800 and k >= 1000 and brightness >= 0 and brightness <= 256:
        await bulb.set_state(PilotBuilder(colortemp=k, brightness=brightness))
    else:
        click.echo("Error - values are not correct. Type --help for help.")
Ejemplo n.º 7
0
async def test_PilotBuilder_scene(correct_bulb: wizlight) -> None:
    """Test scene."""
    await correct_bulb.turn_on(PilotBuilder(scene=1))
    state = await correct_bulb.updateState()

    assert state and state.get_scene() == SCENES[1]
    state.pilotResult["schdPsetId"] = True
    assert state.get_scene() == SCENES[1000]
Ejemplo n.º 8
0
async def main():

    bulbs = await discovery.discover_lights(broadcast_space="10.0.0.255")

    lights = []

    for i in range(len(bulbs)):
        light = wizlight(bulbs[i].ip)
        lights.append(light)

    print(lights)

    while True:
        rgb_vals_left, rgb_vals_right = await dual_screen_average_colors()
        #bright_val = calc_brightness(rgb_vals)
        await lights[0].turn_on(PilotBuilder(rgb=rgb_vals_left))
        await lights[1].turn_on(PilotBuilder(rgb=rgb_vals_right))
Ejemplo n.º 9
0
async def set_state(ip: str, k: int, brightness: int) -> None:
    """Set the current state of a given bulb."""
    click.echo(f"Turning on {ip}")
    bulb = wizlight(ip)
    if bulb and 1000 <= k <= 6800 and 0 <= brightness <= 255:
        await bulb.set_state(PilotBuilder(colortemp=k, brightness=brightness))
    else:
        click.echo("Error - values are not correct. Type --help for help.")
    await bulb.async_close()
Ejemplo n.º 10
0
async def test_setting_ratio(squire: wizlight) -> None:
    """Test setting ratio."""
    await squire.set_ratio(50)
    state = await squire.updateState()
    assert state and state.get_ratio() == 50
    await squire.turn_on(PilotBuilder(ratio=20))
    state = await squire.updateState()
    assert state and state.get_ratio() == 20
    with pytest.raises(ValueError):
        await squire.set_ratio(500)
Ejemplo n.º 11
0
    async def async_turn_on(self, **kwargs):
        """Instruct the light to turn on."""
        brightness = None

        if ATTR_BRIGHTNESS in kwargs:
            brightness = kwargs.get(ATTR_BRIGHTNESS)

        if ATTR_RGB_COLOR in kwargs:
            pilot = rgb2rgbcw(kwargs.get(ATTR_RGB_COLOR), brightness)
        if ATTR_HS_COLOR in kwargs:
            pilot = hs2rgbcw(kwargs.get(ATTR_HS_COLOR), brightness)
        else:
            colortemp = None
            if ATTR_COLOR_TEMP in kwargs:
                kelvin = color_utils.color_temperature_mired_to_kelvin(
                    kwargs[ATTR_COLOR_TEMP])
                colortemp = kelvin
                _LOGGER.debug(
                    "[wizlight %s] kelvin changed and send to bulb: %s",
                    self._light.ip,
                    colortemp,
                )

            sceneid = None
            if ATTR_EFFECT in kwargs:
                sceneid = self._light.get_id_from_scene_name(
                    kwargs[ATTR_EFFECT])

            if sceneid == 1000:  # rhythm
                pilot = PilotBuilder()
            else:
                pilot = PilotBuilder(brightness=brightness,
                                     colortemp=colortemp,
                                     scene=sceneid)
                _LOGGER.debug(
                    "[wizlight %s] Pilot will be send with brightness=%s, colortemp=%s, scene=%s",
                    self._light.ip,
                    brightness,
                    colortemp,
                    sceneid,
                )
        await self._light.turn_on(pilot, )
Ejemplo n.º 12
0
def _async_pilot_builder(**kwargs: Any) -> PilotBuilder:
    """Create the PilotBuilder for turn on."""
    brightness = kwargs.get(ATTR_BRIGHTNESS)

    if ATTR_RGBWW_COLOR in kwargs:
        return PilotBuilder(brightness=brightness,
                            rgbww=kwargs[ATTR_RGBWW_COLOR])

    if ATTR_RGBW_COLOR in kwargs:
        return PilotBuilder(brightness=brightness,
                            rgbw=kwargs[ATTR_RGBW_COLOR])

    if ATTR_COLOR_TEMP in kwargs:
        return PilotBuilder(
            brightness=brightness,
            colortemp=color_temperature_mired_to_kelvin(
                kwargs[ATTR_COLOR_TEMP]),
        )

    if ATTR_EFFECT in kwargs:
        scene_id = get_id_from_scene_name(kwargs[ATTR_EFFECT])
        if scene_id == 1000:  # rhythm
            return PilotBuilder()
        return PilotBuilder(brightness=brightness, scene=scene_id)

    return PilotBuilder(brightness=brightness)
Ejemplo n.º 13
0
async def main():

    bulbs = await discovery.discover_lights(broadcast_space="10.0.0.255")

    lights = []

    for i in range(len(bulbs)):
        light = wizlight(bulbs[i].ip)
        lights.append(light)

    print(len(lights), "lights found.")

    while True:
        rgb_vals = await screen_average_colors()
        #bright_val = calc_brightness(rgb_vals)
        for light in lights:
            await light.turn_on(PilotBuilder(rgb=rgb_vals))
Ejemplo n.º 14
0
async def testbulb(bulb):
    wait_secs = 10

    state = await bulb.updateState()

    if state.get_state():  # check if on
        await asyncio.wait_for(bulb.turn_off(), wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.lightSwitch(), wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_off(), wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_on(PilotBuilder(brightness=255)),
                           wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_on(PilotBuilder(brightness=50)),
                           wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_on(PilotBuilder(rgb=(50, 100, 200))),
                           wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_on(PilotBuilder(colortemp=4000)),
                           wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_on(PilotBuilder(colortemp=6500)),
                           wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_on(PilotBuilder(scene=14)), wait_secs)
    await asyncio.sleep(0.5)
    await asyncio.wait_for(bulb.turn_on(PilotBuilder(scene=24)), wait_secs)

    state = await bulb.updateState()
    print(state.get_state())
    print(state.get_scene())
    print(state.get_scene())
    print(state.get_warm_white())
    print(state.get_speed())
    print(state.get_cold_white())
    print(state.get_rgb())
    print(state.get_brightness())
    print(state.get_colortemp())
Ejemplo n.º 15
0
async def test_PilotBuilder_brightness(correct_bulb: wizlight) -> None:
    """Test Brightness."""
    await correct_bulb.turn_on(PilotBuilder(brightness=10))
    state = await correct_bulb.updateState()
    # 10% == 26 in Hex
    assert state and state.get_brightness() == 26
Ejemplo n.º 16
0
 async def test_error_PilotBuilder_warm_wite(self, data):
     """Error Warm White."""
     with pytest.raises(ValueError):
         await pytest.correct_bulb.turn_on(PilotBuilder(warm_white=300))
     with pytest.raises(ValueError):
         await pytest.correct_bulb.turn_on(PilotBuilder(warm_white=0))
Ejemplo n.º 17
0
 async def test_error_PilotBuilder_brightness(self, data):
     """Error Brightness."""
     with pytest.raises(ValueError):
         await pytest.correct_bulb.turn_on(PilotBuilder(brightness=500))
Ejemplo n.º 18
0
    async def test_PilotBuilder_scene(self, data):
        """Test Screen."""
        await pytest.correct_bulb.turn_on(PilotBuilder(scene=1))
        state = await pytest.correct_bulb.updateState()

        assert state.get_scene() == SCENES[1]
Ejemplo n.º 19
0
    async def test_PilotBuilder_rgb(self, data):
        """Test RGB Value."""
        await pytest.correct_bulb.turn_on(PilotBuilder(rgb=(0, 128, 255)))
        state = await pytest.correct_bulb.updateState()

        assert state.get_rgb() == (0, 128, 255)
Ejemplo n.º 20
0
    async def test_PilotBuilder_cold_white(self, data):
        """Test Cold White."""
        await pytest.correct_bulb.turn_on(PilotBuilder(cold_white=255))
        state = await pytest.correct_bulb.updateState()

        assert state.get_cold_white() == 255
Ejemplo n.º 21
0
import sys
import asyncio
from pywizlight import wizlight, PilotBuilder, discovery

addr = sys.argv[1]

# allow to pass 'red', 'blue', 'green', 'white' as color in arguments, otherwise default to white
color = sys.argv[2] if len(sys.argv) > 2 else "white" 
if (color != "white" and 
    color != "red" and color != "r" and 
    color != "blue" and color != "b" and
    color != "green" and color != "g"):
    color = "white"

pb = PilotBuilder(warm_white = 230, brightness = 110, speed = 100)
if (color != "white"):
    if color == "red" or color == "r":
        pb = PilotBuilder(rgb = (255, 0, 0), brightness = 255, speed = 100)
    elif color == "green" or color == "g":
        pb = PilotBuilder(rgb = (0, 255, 0), brightness = 255, speed = 100)    
    elif color == "blue" or color == "b":
        pb = PilotBuilder(rgb = (0, 0, 255), brightness = 255, speed = 100)
    else:
        raise ValueError("color wasn't white but couldn't parse to true color")

async def main():
    light = wizlight(addr)
    await light.turn_on(pb)

loop = asyncio.get_event_loop()
Ejemplo n.º 22
0
    async def test_PilotBuilder_colortemp(self, data):
        """Test Color Temp."""
        await pytest.correct_bulb.turn_on(PilotBuilder(colortemp=2800))
        state = await pytest.correct_bulb.updateState()

        assert state.get_colortemp() == 2800
Ejemplo n.º 23
0
 async def test_timeout_PilotBuilder(self, data):
     """Test Timout for Result."""
     # check if the bulb state it given as bool - mock ?
     with pytest.raises(WizLightTimeOutError):
         await pytest.bad_bulb.turn_on(PilotBuilder(brightness=255))
Ejemplo n.º 24
0
 async def test_error_PilotBuilder_scene(self, data):
     """Error Screen."""
     with pytest.raises(ValueError):
         await pytest.correct_bulb.turn_on(PilotBuilder(scene=532))
Ejemplo n.º 25
0
 async def test_error_PilotBuilder_blue(self, data):
     """Error Blue Value."""
     with pytest.raises(ValueError):
         await pytest.correct_bulb.turn_on(PilotBuilder(rgb=(0, 0, 300)))
Ejemplo n.º 26
0
 async def test_error_PilotBuilder_cold_white_lower(self, data):
     """Error Cold White."""
     with pytest.raises(ValueError):
         await pytest.correct_bulb.turn_on(PilotBuilder(cold_white=0))
Ejemplo n.º 27
0
async def test_PilotBuilder_warm_wite(correct_bulb: wizlight) -> None:
    """Test Warm White."""
    await correct_bulb.turn_on(PilotBuilder(warm_white=255))
    state = await correct_bulb.updateState()

    assert state and state.get_warm_white() == 255
Ejemplo n.º 28
0
async def test_setting_rgbww(light_strip: wizlight) -> None:
    """Test setting rgbww."""
    await light_strip.turn_on(PilotBuilder(rgbww=(1, 2, 3, 4, 5)))
    state = await light_strip.updateState()
    assert state and state.get_rgbww() == (1, 2, 3, 4, 5)
Ejemplo n.º 29
0
 async def async_turn_on(self, **kwargs):
     """Instruct the switch to turn on."""
     await self._switch.turn_on(PilotBuilder())
     self._state = True
     self.schedule_update_ha_state()
Ejemplo n.º 30
0
 async def test_PilotBuilder_brightness(self, data):
     """Test Brightness."""
     await pytest.correct_bulb.turn_on(PilotBuilder(brightness=10))
     state = await pytest.correct_bulb.updateState()
     # 10% == 26 in Hex
     assert state.get_brightness() == 26