Library to control Brightech Kuler Sky Bluetooth LED smart lamps
- Free software: Apache Software License 2.0
- Discover nearby bluetooth devices
- Get light color
- Set light color
pykulersky ships with a command line tool that exposes the features of the library.
$ pykulersky discover
INFO:pykulersky.discovery:Starting scan for local devices
INFO:pykulersky.discovery:Discovered AA:BB:CC:00:11:22: Living Room
INFO:pykulersky.discovery:Discovered AA:BB:CC:33:44:55: Bedroom
INFO:pykulersky.discovery:Scan complete
AA:BB:CC:00:11:22: Living Room
AA:BB:CC:33:44:55: Bedroom
$ pykulersky get-color AA:BB:CC:00:11:22
INFO:pykulersky.light:Connecting to AA:BB:CC:00:11:22
INFO:pykulersky.light:Got color of AA:BB:CC:00:11:22: (0, 0, 0, 255)'>
000000ff
$ pykulersky set-color AA:BB:CC:00:11:22 ff000000
INFO:pykulersky.light:Connecting to AA:BB:CC:00:11:22
INFO:pykulersky.light:Changing color of AA:BB:CC:00:11:22 to #ff000000
$ pykulersky set-color AA:BB:CC:00:11:22 000000ff
INFO:pykulersky.light:Connecting to AA:BB:CC:00:11:22
INFO:pykulersky.light:Changing color of AA:BB:CC:00:11:22 to #000000ff
Discover nearby bluetooth devices
import asyncio
import pykulersky
async def main():
lights = await pykulersky.discover(timeout=5)
for light in lights:
print("Address: {} Name: {}".format(light.address, light.name))
asyncio.get_event_loop().run_until_complete(main())
Turn a light on and off
import asyncio
import pykulersky
async def main():
address = "AA:BB:CC:00:11:22"
light = pykulersky.Light(address)
try:
await light.connect()
await light.set_color(0, 0, 0, 255)
await asyncio.sleep(5)
await light.set_color(0, 0, 0, 0)
finally:
await light.disconnect()
asyncio.get_event_loop().run_until_complete(main())
Change the light color
import asyncio
import pykulersky
async def main():
address = "AA:BB:CC:00:11:22"
light = pykulersky.Light(address)
try:
await light.connect()
while True:
await light.set_color(255, 0, 0, 0) # Red
await asyncio.sleep(1)
await light.set_color(0, 255, 0, 0) # Green
await asyncio.sleep(1)
await light.set_color(0, 0, 0, 255) # White
await asyncio.sleep(1)
finally:
await light.disconnect()
asyncio.get_event_loop().run_until_complete(main())
Get the light color
import asyncio
import pykulersky
async def main():
address = "AA:BB:CC:00:11:22"
light = pykulersky.Light(address)
try:
await light.connect()
color = await light.get_color()
print(color)
finally:
await light.disconnect()
asyncio.get_event_loop().run_until_complete(main())
- Support CI for bleak 0.20
- Unpin test dependencies
- Support CI for bleak 0.13
- Use built-in asyncmock for Python 3.8+
- Include default timeout on all API calls
- Refactor from pygatt to bleak for async interface
- Rename discover method to make behavior clear
- Fix connected status after broken connection
- Add workaround for firmware bug
- Remove thread-based auto_reconnect
- Always raise PykulerskyException
- Initial release
- Fork from pyzerproc
- Thanks to Uri Shaked for an incredible guide to Reverse Engineering a Bluetooth Lightbulb.
- This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.