Library to control Brightech Kuler Sky Bluetooth LED smart lamps
Project description
Library to control Brightech Kuler Sky Bluetooth LED smart lamps
Free software: Apache Software License 2.0
Features
Discover nearby bluetooth devices
Get light color
Set light color
Command line usage
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
Usage
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())
Changelog
0.5.5 (2023-04-07)
Support CI for bleak 0.20
0.5.4 (2022-05-03)
Unpin test dependencies
0.5.3 (2021-11-23)
Support CI for bleak 0.13
0.5.2 (2021-03-04)
Use built-in asyncmock for Python 3.8+
0.5.1 (2020-12-23)
Include default timeout on all API calls
0.5.0 (2020-12-19)
Refactor from pygatt to bleak for async interface
0.4.0 (2020-11-11)
Rename discover method to make behavior clear
0.3.1 (2020-11-10)
Fix connected status after broken connection
0.3.0 (2020-11-10)
Add workaround for firmware bug
0.2.0 (2020-10-14)
Remove thread-based auto_reconnect
0.1.1 (2020-10-13)
Always raise PykulerskyException
0.1.0 (2020-10-09)
Initial release
0.0.1 (2020-10-09)
Fork from pyzerproc
Credits
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pykulersky-0.5.5.tar.gz
.
File metadata
- Download URL: pykulersky-0.5.5.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.14.0 pkginfo/1.8.1 requests/2.26.0 setuptools/58.3.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06d00ddc93f91eeb71a10ab86ff10ad225fd71187cc6a32c7d2de9af0f6d1662 |
|
MD5 | 3e059724d949f2ab44e7d743919c3727 |
|
BLAKE2b-256 | 1b58a5d70d05c2a25a984ba81265098125dd0621e800b479d3831eb4a93a4e29 |