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
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 pyavedominaplus-0.1.2.tar.gz.
File metadata
- Download URL: pyavedominaplus-0.1.2.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b27d00b478f82602ade238824060a53f12d217e55a07c5699596bf9bdc03ce60
|
|
| MD5 |
a9a92f4c59dd9fb3968f54cd88d63422
|
|
| BLAKE2b-256 |
616a65c32e6868bbe0858071dc02ae8e98f6eded14e50db3f25fc39a654984fb
|
Provenance
The following attestation bundles were made for pyavedominaplus-0.1.2.tar.gz:
Publisher:
release.yml on pyavedominaplus/pyavedominaplus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyavedominaplus-0.1.2.tar.gz -
Subject digest:
b27d00b478f82602ade238824060a53f12d217e55a07c5699596bf9bdc03ce60 - Sigstore transparency entry: 976333547
- Sigstore integration time:
-
Permalink:
pyavedominaplus/pyavedominaplus@47aac37842f66bfd144f804cd0a46fd8d7f04b91 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/pyavedominaplus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47aac37842f66bfd144f804cd0a46fd8d7f04b91 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file pyavedominaplus-0.1.2-py3-none-any.whl.
File metadata
- Download URL: pyavedominaplus-0.1.2-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58d540e7b48b3e4b1ebca3d485922fa0087472bacb831cdc72ac84d0eb747119
|
|
| MD5 |
2bdc0cb0866fcd0314cd248587ea125b
|
|
| BLAKE2b-256 |
d81bc41df1981a3287f393563e7b41452c832312e937f3dc01cfff06dba8df16
|
Provenance
The following attestation bundles were made for pyavedominaplus-0.1.2-py3-none-any.whl:
Publisher:
release.yml on pyavedominaplus/pyavedominaplus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyavedominaplus-0.1.2-py3-none-any.whl -
Subject digest:
58d540e7b48b3e4b1ebca3d485922fa0087472bacb831cdc72ac84d0eb747119 - Sigstore transparency entry: 976333550
- Sigstore integration time:
-
Permalink:
pyavedominaplus/pyavedominaplus@47aac37842f66bfd144f804cd0a46fd8d7f04b91 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/pyavedominaplus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@47aac37842f66bfd144f804cd0a46fd8d7f04b91 -
Trigger Event:
workflow_dispatch
-
Statement type: