Giter VIP home page Giter VIP logo

python-limitlessled's Introduction

Build Status PyPI version

python-limitlessled

python-limitlessled controls LimitlessLED bridges. It supports white, rgbw and rgbww bulb groups as well as the bridge-led of newer wifi bridges.

Install

pip install limitlessled

Usage

Configure

Your bridge(s) must be set up and bulbs joined prior to using this module.

Group names can be any string, but must be unique amongst all bridges.

from limitlessled.bridge import Bridge
from limitlessled.group.rgbw import RGBW
from limitlessled.group.rgbww import RGBWW
from limitlessled.group.white import WHITE

bridge = Bridge('<your bridge ip address>')
bridge.add_group(1, 'bedroom', RGBW)
# A group number can support two groups as long as the types differ
bridge.add_group(2, 'bathroom', WHITE)
bridge.add_group(2, 'living_room', RGBW)
bridge.add_group(2, 'kitchen', RGBWW)

Get access to groups either via the return value of add_group, or with the LimitlessLED object.

bedroom = bridge.add_group(1, 'bedroom', RGBW)
# or
limitlessled = LimitlessLED()
limitlessled.add_bridge(bridge)
bedroom = limitlessled.group('bedroom')

# The bridge led can be controlled and acts as a RGBW group
bridge_led = bridge.bridge_led

Control

Turn on:

bedroom.on = True

Change brightness:

bedroom.brightness = 0.5 # 0.0 through 1.0

Change temperature (white groups only)

bedroom.temperature = 0.5 # 0.0 through 1.0

Change color (rgbw groups only)

LimitlessLED RGBW bulbs can represent only the hue component of RGB color. There are 256 possible values, starting with blue as 0. Maximum saturation and value are always used. This means that most RGB colors are not supported. There are two special cases: Black (0, 0, 0) is simply all LEDs turned off. White (255, 255, 255) is the RGB LEDs off and the white LED on. Note that the actual color of the white LED depends on whether the bulb is a cool white or a warm white bulb.

from limitlessled import Color
bedroom.color = Color(255, 0, 0) # red

Transition

bedroom.transition(brightness=1.0, temperature=0.1) # white groups

from limitlessled import Color
bedroom.transition(brightness=1.0, color=Color(0, 255, 0)) # rgbw groups

Pipelines

Pipelines specify a sequence of stages, each stage being a command. Pipelines are not executed until called as an argument to a group's enqueue method.

Pipelines are executed in a thread (per group). Multiple pipelines can be started on a group; they will queue and execute in the order received.

A bridge can run multiple pipelines concurrently provided they are on different groups. Note that concurrency is achieved by interleaving commands, and as a consequence, pipeline execution can take longer than specified and each pipeline may use fewer transition steps depending on the number of concurrently executing pipelines.

from limitlessled import Color
from limitlessled.pipeline import Pipeline

pipeline = Pipeline() \
    .on() \
    .brightness(0.7) \
    .color(0, 0, 255) \
    .transition(color=Color(255, 0, 0))
    
bedroom.enqueue(pipeline)

Stop the currently-running pipeline:

bedroom.stop()
Commands

Turn on

Pipeline().on()

Turn off

Pipeline().off()

Set brightness

Pipeline().brightness(0.5)

Set temperature

Pipeline().temperature(0.5)

Set color

Pipeline().color(255, 0, 0)

Transition

Pipeline().transition(...)

Wait

Pipeline.().wait(4) # in seconds

Repeat

stages is how many previous stages to repeat iterations is how many times to repeat stages

Default stages is 1, default iterations is infinite.

Pipeline().repeat(stages=2, iterations=3)

Callback

def my_function():
    pass

Pipeline().callback(my_function)

Append

p1 = Pipeline.off()

p2 = Pipeline.on().append(p1)

Contributions

Pull requests welcome. Some areas for enhancement include

  • Discovery
  • Pairing

Disclaimer

Not affiliated with LimitlessLED and/or marketers/manufacturers of rebranded devices.

python-limitlessled's People

Contributors

amelchio avatar ash-vd avatar bobdrummond avatar corneyl avatar fmeuman avatar happyleavesaoc avatar janlo avatar kamaradclimber avatar keesschollaart81 avatar robiinn avatar rubenverhoef avatar soldag avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.