Library for controlling Doit protocol lights
Project description
DoHome API
Async Python library for controlling smart LED bulbs and strips that use the DoIt protocol (DoHome app). Communicates with devices over the local network via TCP/UDP — no cloud required.
Features
- Device discovery via UDP broadcast
- RGB color and white temperature control
- Brightness adjustment
- Built-in light effects (gradients, strobes, jumps)
- Device info, state reading, and power management
- Wi-Fi credential provisioning
Installation
pip install dohome-api
Requires Python 3.12+.
Quick Start
import asyncio
from dohome.api import APIClient, discover
from dohome.transport import TCPStream, UDPBroadcast
async def main():
# Discover devices on the local network
broadcast = UDPBroadcast()
devices = await discover(broadcast)
broadcast.close()
if not devices:
print("No devices found")
return
# Connect to the first device
client = APIClient(TCPStream(devices[0]["sta_ip"]))
await client.set_power(True)
await client.set_color((255, 0, 0), 128) # Red at 50% brightness
await asyncio.sleep(2)
await client.set_power(False)
asyncio.run(main())
More examples (device info, Wi-Fi setup, state inspection) are available in the examples/ directory.
Provisioning
You can use this library to perform the initial device setup without using the DoHome app.
To do this:
- Clone this repository
- Install dependencies with
make configurecommand - Set the
DOHOME_SSIDandDOHOME_PASSWORDenvironment variables - Connect to the light bulb's access point
- Run
uv run examples/configure.py
API Reference
Discovery
| Function | Description |
|---|---|
discover(transport) |
Finds all DoIt devices on the local network |
APIClient
| Method | Description |
|---|---|
set_power(is_on) |
Turn the device on or off |
set_color(rgb, brightness) |
Set RGB color with brightness (0–255) |
set_white(kelvin, brightness) |
Set white temperature (3000–6400 K) with brightness |
set_effect(effect) |
Activate a built-in light effect |
get_state() |
Read current light state |
get_device_info() |
Read device hardware info |
get_datetime() / set_datetime(dt) |
Read or set the device clock |
set_wifi_credentials(ssid, password) |
Provision Wi-Fi credentials |
reboot() |
Reboot the device |
License
MIT © Mikhael Khrustik
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dohome_api-2.2.0.tar.gz.
File metadata
- Download URL: dohome_api-2.2.0.tar.gz
- Upload date:
- Size: 54.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dcbd312dfef3e42a84203bde26e6c10448c3159a63577c6c7f37743f375ffff
|
|
| MD5 |
a203cc1cfe51462f5c8f03403ccf67e9
|
|
| BLAKE2b-256 |
2cd1ea5b2d78df32314b3e8c66d416149beb42d64c44396e77a39ee9b4bfc227
|
File details
Details for the file dohome_api-2.2.0-py3-none-any.whl.
File metadata
- Download URL: dohome_api-2.2.0-py3-none-any.whl
- Upload date:
- Size: 18.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea600aa16a4ab33f5a457a22ed0908223c3f5c48c705f267e6f1f6665c7bbbfe
|
|
| MD5 |
ed7057954524705d48cec36772a5588b
|
|
| BLAKE2b-256 |
0bdefaa954dba56d8236da7b16785fddb35436547c9ecf39e1c00710ebf2ca7c
|