rhythm.lighting docs
Search docs… ⌘K

Home Assistant

Drive your Home Assistant lights with Rhythm's circadian engine.

With the Home Assistant integration, Rhythm uses HA as a light hub: it reads your HA areas and light entities and drives them with the circadian engine. Whatever HA can already control — Zigbee, Z-Wave, Wi-Fi, Hue-via-HA — becomes something Rhythm can conduct, no per-vendor work required.

Direction Rhythm sits on top of Home Assistant and sends it light commands. It doesn't publish Rhythm scenes back into HA as entities — HA is the device layer, Rhythm is the engine.

How it works

The hub opens a WebSocket to your Home Assistant instance, authenticates, and pulls the registry — areas, devices, and light.* entities. Each HA area with at least one light becomes a Rhythm room. To set lights, Rhythm calls the standard light.turn_on service with a brightness and a color temperature (or an xy color for bulbs that prefer it).

Connecting

  1. In Home Assistant, create a long-lived access token (your profile → Security).
  2. In Rhythm, add a Home Assistant hub and give it your HA address (e.g. http://homeassistant.local:8123) and that token.
  3. Rhythm connects, imports your areas, and starts driving the lights.
Running as the add-on If you run Rhythm as a Home Assistant add-on, it's handed a Supervisor token automatically — no manual token, no address to type.

What syncs

  • Areas → rooms. Any HA area containing a light entity is imported as a room.
  • Light entities. RGB, tunable-white, dimmable, and on/off lights are all driven; Rhythm sends what each can take.
  • State feedback. Rhythm listens for state changes so its picture of each light stays in sync when something else changes it.

Run Sync any time you add or rearrange lights in HA to pull the changes across.

Buttons and motion

Rhythm subscribes to HA's event bus and reacts to the events your devices already fire — zha_event for Zigbee remotes, hue_event for Hue accessories bridged through HA, plus motion from binary_sensor entities. A button or sensor self-registers to its area the first time it fires, so you don't have to enumerate every remote up front.