Skip to main content

Caldera Sauna — Home Assistant integration

Local control of Relaxe Caldera infrared saunas over Bluetooth LE — no cloud, no account. Adds sauna controls to Home Assistant, and works through an ESPHome BLE proxy if the sauna is out of range of your HA host.

Sauna climate control in Heat mode    Device page: climate, cabin lamp, mood light and timer

Install (HACS)

  1. In HACS → ⋮ → Custom repositories, add https://github.com/realark/caldera-ble as an Integration.
  2. Search for Caldera Sauna, download it, and restart Home Assistant.
  3. Open Settings → Devices & Services — your sauna should be discovered automatically. Click Configure to add it.

Disconnect the manufacturer's phone app from the sauna first — the sauna allows only one Bluetooth connection at a time.

That's it. You'll get:

  • Climate — power on/off, current & target temperature
  • Light — RGB mood light (color presets as effects)
  • Switch — cabin lamp
  • Number — session timer (minutes)

Manual install (without HACS)

Copy custom_components/caldera_sauna/ into your HA config/custom_components/ and restart.


How it works

Reverse-engineered from the manufacturer's Android app: the sauna exposes a cheap serial-over-BLE module (service FFF0, characteristic FFF1) speaking a plain ASCII protocol — no pairing, PIN, or auth. The integration talks to it through Home Assistant's Bluetooth stack, so both host adapters and ESPHome BLE proxies work. Full wire protocol: PROTOCOL.md.

The protocol logic lives in a standalone, hardware-independent Python library (caldera-sauna on PyPI); the Home Assistant integration is a thin layer on top.

Developing

src/caldera_sauna/
  protocol.py   pure codec (no I/O) — encode commands, decode status frames
  device.py     bleak + bleak-retry-connector transport (proxy-compatible)
  monitor.py    read-only CLI: scan, connect, print decoded state
scripts/          hardware probes / calibration tools (read-only unless noted)
tests/            unit tests for the codec (no hardware needed)
custom_components/caldera_sauna/   the Home Assistant integration
python3 -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest                       # codec tests, no hardware
ruff check src tests scripts custom_components

Device-specific info stays out of git — copy .env.example to .env and set your sauna's BLE address (find it with bluetoothctl scan on or nRF Connect). The scripts/ tools read .env; with no address set they scan by name (default Sauna). Read-only state monitor:

caldera-sauna-monitor        # scan by name, print decoded state; sends nothing

Releases are cut with ./release.sh <version> (bumps versions, publishes to PyPI, tags, pushes, and creates the GitHub release HACS installs from).

Disclaimer

Independent, unofficial project. Not affiliated with, endorsed by, or supported by Relaxe or Caldera. Reverse-engineered for personal interoperability. Use at your own risk — it can turn on a heater.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

caldera_sauna-0.0.3.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

caldera_sauna-0.0.3-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file caldera_sauna-0.0.3.tar.gz.

File metadata

  • Download URL: caldera_sauna-0.0.3.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for caldera_sauna-0.0.3.tar.gz
Algorithm Hash digest
SHA256 c56b48f1103b3f5525efd1746a8b8c1cb9fb757d923b26651769ee8416329a39
MD5 74e8eff034e0dfd22964b80f84a1b8b5
BLAKE2b-256 37454f93f411dd15f9f60f0d539ebb51a407c8e6afca47178b7d921d6643832d

See more details on using hashes here.

File details

Details for the file caldera_sauna-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: caldera_sauna-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for caldera_sauna-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4f64ae72694d4771b09e2d93906aa836bf9e99e1c6e61a02f3e4a6656fe82b96
MD5 87bd6c9dde4073d8d37f03f023c8a617
BLAKE2b-256 ada9365c76ee09422e75a157169ea70acf8b2daf73d76fca0c1ab7f3b86b7228

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

This release

0.0.3 This release

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page