Homematic interface for Home Assistant running on Python 3.
Project description
aiohomematic
A modern, async Python library for controlling and monitoring Homematic and HomematicIP devices. Powers the Home Assistant integration "Homematic(IP) Local".
This project is the modern successor to pyhomematic, focusing on automatic entity creation, fewer manual device definitions, and faster startups.
Key Features
- Automatic entity discovery from device/channel parameters
- Extensible via custom entity classes for complex devices (thermostats, lights, covers, locks, sirens)
- Fast startups through caching of paramsets
- Robust operation with automatic reconnection after CCU restarts
- Fully typed with strict mypy compliance
- Async/await based on asyncio
Documentation
Full documentation: sukramj.github.io/aiohomematic
| Section | Description |
|---|---|
| Getting Started | Installation and first steps |
| User Guide | Home Assistant integration guide |
| Developer Guide | API reference for integrations |
| Architecture | System design overview |
| Glossary | Terminology reference |
How It Works
┌─────────────────────────────────────────────────────────┐
│ Home Assistant │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Homematic(IP) Local Integration │ │
│ │ │ │
│ │ • Home Assistant entities (climate, light, etc.) │ │
│ │ • UI configuration flows │ │
│ │ • Services and automations │ │
│ │ • Device/entity registry integration │ │
│ └────────────────────────┬───────────────────────────┘ │
└───────────────────────────┼─────────────────────────────┘
│
│ uses
▼
┌───────────────────────────────────────────────────────────┐
│ aiohomematic │
│ │
│ • Protocol implementation (XML-RPC, JSON-RPC) │
│ • Device model and data point abstraction │
│ • Connection management and reconnection │
│ • Event handling and callbacks │
│ • Caching for fast startups │
└───────────────────────────────────────────────────────────┘
│
│ communicates with
▼
┌───────────────────────────────────────────────────────────┐
│ CCU3 / OpenCCU / Homegear │
└───────────────────────────────────────────────────────────┘
Why Two Projects?
| Aspect | aiohomematic | Homematic(IP) Local |
|---|---|---|
| Purpose | Python library for Homematic protocol | Home Assistant integration |
| Scope | Protocol, devices, data points | HA entities, UI, services |
| Dependencies | Standalone (aiohttp, orjson) | Requires Home Assistant |
| Reusability | Any Python project | Home Assistant only |
| Repository | aiohomematic | homematicip_local |
Benefits of this separation:
- Reusability: aiohomematic can be used in any Python project, not just Home Assistant
- Testability: The library can be tested independently without Home Assistant
- Maintainability: Protocol changes don't affect HA-specific code and vice versa
- Clear boundaries: Each project has a focused responsibility
How They Work Together
- Homematic(IP) Local creates a
CentralUnitvia aiohomematic's API - aiohomematic connects to the CCU/Homegear and discovers devices
- aiohomematic creates
Device,Channel, andDataPointobjects - Homematic(IP) Local wraps these in Home Assistant entities
- aiohomematic receives events from the CCU and notifies subscribers
- Homematic(IP) Local translates events into Home Assistant state updates
For Home Assistant Users
Use the Home Assistant custom integration Homematic(IP) Local:
- Add the custom repository: https://github.com/sukramj/homematicip_local
- Install via HACS
- Configure via Settings → Devices & Services → Add Integration
See the Integration Guide for detailed instructions.
For Developers
pip install aiohomematic
Quick Start
from aiohomematic.central import CentralConfig
from aiohomematic.client import InterfaceConfig
from aiohomematic.const import Interface
config = CentralConfig(
central_id="ccu-main",
host="ccu.local",
username="admin",
password="secret",
default_callback_port=43439,
interface_configs={
InterfaceConfig(central_name="ccu-main", interface=Interface.HMIP_RF, port=2010)
},
)
central = config.create_central()
await central.start()
for device in central.devices:
print(f"{device.name}: {device.device_address}")
await central.stop()
See Getting Started for more examples.
Requirements
- Python: 3.13+
- CCU Firmware: CCU2 ≥2.53.27, CCU3 ≥3.53.26 (for HomematicIP devices)
Related Projects
| Project | Description |
|---|---|
| Homematic(IP) Local | Home Assistant integration |
| aiohomematic Documentation | Full documentation |
Contributing
Contributions are welcome! See the Contributing Guide for details.
License
MIT License - see LICENSE for details.
Support
If you find this project useful, consider sponsoring the development.
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 aiohomematic-2026.1.54.tar.gz.
File metadata
- Download URL: aiohomematic-2026.1.54.tar.gz
- Upload date:
- Size: 494.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5534ff51a39e52bf4097fbf534bb2b1a97cf15fe91ebb9b7f12fe7255fcd2682
|
|
| MD5 |
9efc9e2a9d4e23fce8f8f1f3e47fbcd9
|
|
| BLAKE2b-256 |
98e6db50b91d252403d8b32be083acb4b8d80f4d01a3af41214ac16fc28c7830
|
Provenance
The following attestation bundles were made for aiohomematic-2026.1.54.tar.gz:
Publisher:
python-publish.yml on SukramJ/aiohomematic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aiohomematic-2026.1.54.tar.gz -
Subject digest:
5534ff51a39e52bf4097fbf534bb2b1a97cf15fe91ebb9b7f12fe7255fcd2682 - Sigstore transparency entry: 870982811
- Sigstore integration time:
-
Permalink:
SukramJ/aiohomematic@1fa34fa1b906f66a0f628748ba3790600c08a195 -
Branch / Tag:
refs/heads/devel - Owner: https://github.com/SukramJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1fa34fa1b906f66a0f628748ba3790600c08a195 -
Trigger Event:
repository_dispatch
-
Statement type:
File details
Details for the file aiohomematic-2026.1.54-py3-none-any.whl.
File metadata
- Download URL: aiohomematic-2026.1.54-py3-none-any.whl
- Upload date:
- Size: 600.2 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 |
cc18321e1f83f0a89909d076d273a679776be5213748c17add727ceebecd4087
|
|
| MD5 |
746b9e7949fdd9bee24ccdff99b53b75
|
|
| BLAKE2b-256 |
b994419fc8c7047aa2b02df815f3d66978606cfeb1044734998d4f219e6f2ce4
|
Provenance
The following attestation bundles were made for aiohomematic-2026.1.54-py3-none-any.whl:
Publisher:
python-publish.yml on SukramJ/aiohomematic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aiohomematic-2026.1.54-py3-none-any.whl -
Subject digest:
cc18321e1f83f0a89909d076d273a679776be5213748c17add727ceebecd4087 - Sigstore transparency entry: 870982824
- Sigstore integration time:
-
Permalink:
SukramJ/aiohomematic@1fa34fa1b906f66a0f628748ba3790600c08a195 -
Branch / Tag:
refs/heads/devel - Owner: https://github.com/SukramJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1fa34fa1b906f66a0f628748ba3790600c08a195 -
Trigger Event:
repository_dispatch
-
Statement type: