- Python 94.7%
- JavaScript 3%
- CSS 1%
- HTML 0.7%
- Shell 0.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| custom_components/campercan | ||
| docs | ||
| ha-config | ||
| ha-data/config/custom_components | ||
| mqtt-data/config | ||
| tests | ||
| theme | ||
| tools | ||
| updater | ||
| .editorconfig | ||
| .gitignore | ||
| CLAUDE.md | ||
| compose.yaml | ||
| pyproject.toml | ||
| README.md | ||
| requirements-dev.txt | ||
A Home Assistant custom integration for CampervanControlSystems.
Home Assistant sits on the bus as node 0x01. It finds the van's controllers, shows them as devices and entities, and sends them commands.
Home Assistant 2026.3 and later shows the CamperCan icon from custom_components/campercan/brand/.
Also manages distribution of firmware updates, see: docs/updater.md
See docs/entities.md for how the entities behave.
Requirements
- A CAN interface up at 250 kbps, CAN 2.0B with 29-bit extended identifiers.
Running
compose.yaml runs Home Assistant Container with this integration bind-mounted in.
tools/stamp-build # stamp the commit this checkout is on
docker compose up -d
docker compose logs -f # the first start takes a minute
Then http://localhost:8123, complete onboarding, and add the integration from Settings -> Devices & services.
To log frames, turn on the Frame log switch in the Bridge device settings. The logger level it needs is already set in ha-config/configuration.yaml.
A few things worth knowing:
- Any changes to the integration require a container restart.
network_mode: hostis required so the container can see the CAN network.ha-data/is Home Assistant's data directory and is not tracked.configuration.yamllives inha-config/and is mounted over it read-only, so edit it there and restart.- The container tracks
stable, by default. SetHA_VERSIONto pin it.
See docs/updater.md for how the updater service works.
Development
uv venv --python 3.14 .venv
uv pip install --python .venv/bin/python -r requirements-dev.txt
tools/check
tools/check runs what CI runs: ruff check, a formatting check, mypy, then the tests. .venv/bin/ruff format . fixes formatting.
See docs/development.md for the protocol package, the shared test vectors, the test suite, and release details.
Testing
tools/frame-bench builds any frame in the message catalogue and puts it on a virtual CAN bus. It needs no van and no firmware.
tools/frame-bench # asks for sudo
Then http://127.0.0.1:8099, and candump vcan0 in another terminal to watch what arrives.
See docs/frame-bench.md for the bench, its sequence player, and the tests that cover it.
Raspberry Pi
There are some brief Raspberry Pi setup instructions at docs/rpi-setup.md.
