Skip to main content

Library for controlling Doit protocol lights

Project description

DoHome API

PyPI version Quality assurance

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:

  1. Clone this repository
  2. Install dependencies with make configure command
  3. Set the DOHOME_SSID and DOHOME_PASSWORD environment variables
  4. Connect to the light bulb's access point
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dohome_api-2.2.1.tar.gz (54.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dohome_api-2.2.1-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file dohome_api-2.2.1.tar.gz.

File metadata

  • Download URL: dohome_api-2.2.1.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

Hashes for dohome_api-2.2.1.tar.gz
Algorithm Hash digest
SHA256 870dde5be34b8de3a9d35a70984cebfbc2a19e706f28cbd9fbf27157394f0f44
MD5 8583e038617bfd156194102232d617d4
BLAKE2b-256 73efd0d2ebd6043880b45f9a83283e1b7c62e0497883c1718525881cf20ecada

See more details on using hashes here.

File details

Details for the file dohome_api-2.2.1-py3-none-any.whl.

File metadata

  • Download URL: dohome_api-2.2.1-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

Hashes for dohome_api-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b54c0638d3c395b04005c385aa54be7e3471fe15cd074e80654108a7d8e89ff6
MD5 82f29acfb6b56a4468c197b67c369165
BLAKE2b-256 489cacf0871fc49ced1e4c086e11913781e7dc9f15ad00d290a60dfd0604a5ff

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page