Extract and distribute Homematic CCU/OpenCCU configuration metadata (translations, easymodes, link profiles).
Project description
openccu-data
Extract and distribute Homematic CCU configuration metadata (translations, easymodes, link profiles) from OCCU / OpenCCU / RaspberryMatic.
This repository is the single source of truth for the data artifacts that are consumed by aiohomematic and aiohomematic-config. Both projects vendor the produced JSON archives at runtime.
What this provides
| Extractor | Source | Output |
|---|---|---|
openccu-extract-easymodes |
TCL config under config/easymodes/ |
openccu_data/data/easymode_extract.json.gz |
openccu-extract-translations |
JS translation files + stringtable | openccu_data/data/translation_extract.json.gz + translation_custom/ |
openccu-extract-profiles |
TCL link-profile files per receiver | openccu_data/data/profiles/<RECEIVER_TYPE>.json.gz (+ _receiver_type_aliases.json) |
All three read from either:
- a local OCCU/OpenCCU/RaspberryMatic checkout (
OCCU_PATH=/path/to/occu), or - a running CCU instance over HTTP/HTTPS (
CCU_URL=https://my-ccu.local).
If both are set, the easymode/translation extractors merge results; the profile extractor prefers the running CCU and falls back to local.
Repository layout
openccu-data/
├── LICENSE MIT (covers the code)
├── NOTICE.md Data-artifact licensing (EQ-3/OCCU)
├── README.md this file
├── CLAUDE.md guide for AI assistants
├── changelog.md
├── pyproject.toml
├── openccu_data/
│ ├── const.py
│ ├── easymodes/extractor.py easymode metadata parser
│ ├── translations/extractor.py CCU WebUI translation parser
│ ├── profiles/extractor.py easymode link-profile parser
│ └── data/ committed, vendored output
│ ├── easymode_extract.json.gz
│ ├── translation_extract.json.gz
│ ├── translation_custom/*.json
│ └── profiles/*.json.gz (+ _receiver_type_aliases.json)
├── script/ CLI wrappers
└── tests/
Installation
python -m pip install -e .[test]
No third-party runtime dependencies; only the standard library.
Usage
Console scripts
After installation, three console scripts are available on the PATH:
OCCU_PATH=/path/to/occu openccu-extract-easymodes
OCCU_PATH=/path/to/occu openccu-extract-translations
CCU_URL=https://my-ccu.local openccu-extract-profiles
Output lands in openccu_data/data/ by default. Override via OUTPUT_DIR.
Without installation
OCCU_PATH=/path/to/occu python script/extract_easymodes.py
OCCU_PATH=/path/to/occu python script/extract_translations.py
CCU_URL=https://my-ccu.local python script/extract_profiles.py
Environment variables
| Variable | Purpose |
|---|---|
OCCU_PATH |
Path to a local OCCU/RaspberryMatic checkout |
CCU_URL |
URL of a running CCU/OpenCCU instance (http:// or https://) |
OUTPUT_DIR |
Override the default output directory |
RECEIVERS |
(extract_profiles only) comma-separated list of receiver channel types |
.env files at the repository root are auto-loaded (existing env vars win).
Vendoring into consumer projects
The committed artifacts in openccu_data/data/ are the source of truth.
Consumers maintain their own runtime copies:
| Consumer | Vendored copy |
|---|---|
aiohomematic |
aiohomematic/ccu_data/easymode_extract.json.gz |
aiohomematic |
aiohomematic/ccu_data/translation_extract.json.gz |
aiohomematic |
aiohomematic/ccu_data/translation_custom/*.json |
aiohomematic-config |
aiohomematic_config/profiles/*.json.gz (+ _receiver_type_aliases.json) |
After regenerating any artifact, copy the relevant files into the consumer repository and open a PR there as well.
Development
python -m pip install -e .[test]
pytest tests/
ruff check openccu_data/ tests/
mypy
License
- Code: MIT.
- Data artifacts under
openccu_data/data/: derivative of OCCU/RaspberryMatic and subject to the EQ-3 license (see NOTICE.md). The curatedtranslation_custom/overrides are MIT.
"Homematic" and "HomematicIP" are trademarks of eQ-3 AG. This project is not affiliated with or endorsed by eQ-3 AG.
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 openccu_data-2026.4.1.tar.gz.
File metadata
- Download URL: openccu_data-2026.4.1.tar.gz
- Upload date:
- Size: 668.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91f2f94136ec2f3279ddabf7df861d84b08c51e04ef8d53d9b7a6fb8f21537cb
|
|
| MD5 |
ce8034a36eb896990964aefe2f7b1e1d
|
|
| BLAKE2b-256 |
b057d5fde32cb72998733031ef8f64949eab6000715483cb4624418aebe5e978
|
Provenance
The following attestation bundles were made for openccu_data-2026.4.1.tar.gz:
Publisher:
python-publish.yml on SukramJ/openccu-data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openccu_data-2026.4.1.tar.gz -
Subject digest:
91f2f94136ec2f3279ddabf7df861d84b08c51e04ef8d53d9b7a6fb8f21537cb - Sigstore transparency entry: 1368834944
- Sigstore integration time:
-
Permalink:
SukramJ/openccu-data@1a1b48e0d26a819f0bdde67d58291ec1cb772954 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/SukramJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1a1b48e0d26a819f0bdde67d58291ec1cb772954 -
Trigger Event:
repository_dispatch
-
Statement type:
File details
Details for the file openccu_data-2026.4.1-py3-none-any.whl.
File metadata
- Download URL: openccu_data-2026.4.1-py3-none-any.whl
- Upload date:
- Size: 682.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28c9c4cae976868aff2e9807c4fbe32e433ad18fea8efd96d64578aef7492349
|
|
| MD5 |
b7e663a4b41af74a4d123730778196cc
|
|
| BLAKE2b-256 |
2c34a0dd28f3fd2e388c3291b34c5fc3a00240e8c807942a5b09080d9ded8b00
|
Provenance
The following attestation bundles were made for openccu_data-2026.4.1-py3-none-any.whl:
Publisher:
python-publish.yml on SukramJ/openccu-data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openccu_data-2026.4.1-py3-none-any.whl -
Subject digest:
28c9c4cae976868aff2e9807c4fbe32e433ad18fea8efd96d64578aef7492349 - Sigstore transparency entry: 1368835052
- Sigstore integration time:
-
Permalink:
SukramJ/openccu-data@1a1b48e0d26a819f0bdde67d58291ec1cb772954 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/SukramJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1a1b48e0d26a819f0bdde67d58291ec1cb772954 -
Trigger Event:
repository_dispatch
-
Statement type: