Skip to main content

Python SDK for AVE DominaPlus home automation systems

Project description

pyavedominaplus

A Python SDK and Home Assistant custom integration for AVE DominaPlus home automation systems. Communicates with the DominaPlus server over WebSocket using the native binary protocol.

AI Disclaimer: This project was built using the assistance of Claude Code

Features

  • Async WebSocket client with automatic ping/pong keepalive
  • Full binary protocol implementation (STX/ETX framing, CRC validation)
  • Push-based real-time device status updates
  • Home Assistant integration with config flow UI

Supported devices

Device type HA platform Controls
Light light On/off
Dimmer light On/off, brightness (0-254)
Shutter cover Open, close, stop
Thermostat climate Temperature setpoint, season mode, fan
Scenario switch Activate
Energy meter Read-only

Requirements

  • Python >= 3.13
  • aiohttp >= 3.9

Installation

Python SDK

pip install -e .

# With dev dependencies
pip install -e ".[dev]"

SDK usage

import asyncio
from pyavedominaplus import AVEDominaClient

async def main():
    client = AVEDominaClient(host="192.168.1.100", port=14001)
    await client.connect()
    await client.initialize()
    await client.wait_for_initialization(timeout=30.0)

    # List discovered devices
    for device_id, device in client.devices.items():
        print(f"{device.name}: {device.device_type}")

    # Control devices
    await client.turn_on_light("100")
    await client.set_dimmer_level("101", 128)
    await client.open_shutter("102")
    await client.set_thermostat_set_point("103", 21.5)

    # Register for real-time updates
    def on_update(event_type, data):
        print(f"Update: {event_type} - {data}")

    client.register_update_callback(on_update)

    await asyncio.sleep(60)
    await client.disconnect()

asyncio.run(main())

Project structure

pyavedominaplus/           Python SDK
  client.py                Async WebSocket client
  protocol.py              Message encoding/decoding, CRC
  models.py                DominaDevice, DominaThermostat, DominaArea
  const.py                 Protocol constants and device types

tests/                     SDK unit tests (133 tests)

Running tests

# All tests
pytest

# With coverage
coverage run -m pytest tests
coverage report

# Specific module
pytest tests/test_client.py -v

Protocol notes

The SDK implements AVE's custom binary WebSocket protocol:

  • Framing: STX (0x02) marks message start, ETX (0x03) end, EOT (0x04) end of transmission
  • Fields: Separated by GS (0x1D) and RS (0x1E) control characters
  • CRC: XOR-based checksum (0xFF minus XOR of all payload bytes)
  • Port: Default 14001
  • Special devices: RGBW names prefixed with $, DALI names suffixed with $, VMC Daikin thermostats have IDs offset by 10000000

License

See LICENSE for details.

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

pyavedominaplus-0.1.3.tar.gz (34.3 kB view details)

Uploaded Source

Built Distribution

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

pyavedominaplus-0.1.3-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file pyavedominaplus-0.1.3.tar.gz.

File metadata

  • Download URL: pyavedominaplus-0.1.3.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyavedominaplus-0.1.3.tar.gz
Algorithm Hash digest
SHA256 81d3e1e933fb6817dbadb990da96423834ceddeaf61c4c33f22bf951935cb5c3
MD5 4818a6af3e899fa1cb197aeea17e1c8f
BLAKE2b-256 9be80f9dbe63a76327de4a9ebdf7665cfb60e94c9405eb34d5d3059d1a041da9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyavedominaplus-0.1.3.tar.gz:

Publisher: release.yml on pyavedominaplus/pyavedominaplus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyavedominaplus-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for pyavedominaplus-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d094df44e7c3c7e293868329ef0bbf39202f8ffd49d9622d84456cf43eb51d20
MD5 2161e53a4d20a8d3f8eafbe9460f804f
BLAKE2b-256 11a958ae5f1a8ce80e0db4ad45dd7b7c361ef86eb1f426669bdece129990fb4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyavedominaplus-0.1.3-py3-none-any.whl:

Publisher: release.yml on pyavedominaplus/pyavedominaplus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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