Development
DWD Precipitation is a Home Assistant custom integration written in Python. These pages are for people who want to understand or change it. If you just want to use it, the user docs are the place to start.
The repository
| Path | What it holds |
|---|---|
custom_components/dwd_precipitation/ | The integration itself |
custom_components/dwd_precipitation/radar/ | The Home-Assistant-free core: file readers and pure domain logic |
tests/ | Five test tiers, see Tests and checks |
scripts/ | Tools to create fixtures and check DWD's publication delays |
docs/adr/ | The architecture decision records |
website/ | This documentation site, see Working on these docs |
CLAUDE.md | The codebase guide: the rules the code follows, kept next to it |
Where to read on
- Architecture: the modules, how data flows from DWD to an entity, and how failures are handled.
- Adding a DWD product: the checklist.
- Tests and checks: what runs where, and how to run it locally.
- Architecture decisions: why things are the way they are, and what they were before.
Getting set up
The project uses uv for its Python environments. Each test tier has its own dependency group, so a fast tier does not need Home Assistant installed:
git clone https://github.com/Hoffmann77/ha-dwd-precipitation.git
cd ha-dwd-precipitation
uv run --group unit-test pytest tests/parser
To try a change in a real Home Assistant, copy (or symlink)
custom_components/dwd_precipitation into the custom_components folder of
a development instance and restart it.
Contributing
- Bugs and ideas go to GitHub issues.
- Pull requests are welcome. Keep a change focused, add tests in the tier that fits, and update the docs it affects, in English and German.
- A decision that changes how the integration behaves, or overturns an earlier one, gets an ADR.
- Only dependencies with binary wheels that install cleanly in Home
Assistant are acceptable. Today that is
numpyandh5py; heavy packages such as wradlib, pyproj or GDAL are not.