Home Assistant integration

A free, open-source integration that brings every RavLight controller into Home Assistant — discovered on its own, with no addresses typed in. It watches the rig; it does not drive it.

The device page of a RavLight Elyon in Home Assistant: device info with firmware and MAC, and sensors reporting DMX active, 60 fps, Art-Net, 8 active outputs and 2400 pixels
An eight-output Elyon while a show is running into it — 2,400 pixels on one controller
The integration does not send pixel data. Your sequencer, media server or console keeps that job, over sACN or Art-Net, exactly as before. What Home Assistant adds is everything around the show: whether data is arriving, how warm the hardware is, what firmware is on it, and which physical run a given output drives.

Who this is for

Two audiences, the same integration.

Seasonal displays. A Halloween or Christmas display that has outgrown one controller is a small distributed system on the outside of a house: boards under the eaves, in the garden, in a box on the roof, tens of thousands of pixels between them. The sequencer runs the show. What it cannot tell you is that the controller on the garage roof has been sitting at 71 °C since three o'clock, or that one board dropped off the WiFi and a whole roof line went dark twenty minutes ago.

Installations that stay up. A rig in a venue, a shop, a museum — the same questions, asked all year instead of for six weeks.

For the workshop side of the job — inventory, addressing, patching a whole rig at once, firmware for the fleet — use Polaris. The division is simple: Polaris is what you use while building the rig, Home Assistant is what stays on once it is up.

Installing

Through HACS, as a custom repository. A submission to the HACS default store is in progress; until it lands, adding the repository by hand takes about a minute.

  1. HACS → the three-dot menu → Custom repositories
  2. Paste https://github.com/Q-Squared-Systems/ha-ravlight, type Integration, Add
  3. Search for RavLight, Download
  4. Restart Home Assistant

Devices running current firmware then announce themselves: a Discovered — RavLight card appears in Settings → Devices & services, and accepting it is the whole setup. If nothing appears, add it manually and either scan the network or enter one controller's address.

The integration itself runs on any recent Home Assistant. Version 2026.3 or newer is only needed for the RavLight icon to appear, since that is when Home Assistant began serving brand images that ship inside an integration.

How devices are found

Four routes, so that a controller is found whatever the network looks like:

RouteNeedsFinds
mDNScurrent firmwareControllers already running, automatically — and follows them when their address changes
DHCP hostnameany firmwareControllers as they take or renew a lease
Network scanHome Assistant on host networkingAnything that answers a broadcast probe, on demand from the setup dialog
Through a controllerone reachable deviceFixtures on subnets Home Assistant sees no broadcast from

Devices are identified by their hardware MAC, not by the name you gave them, so renaming a controller in its web UI does not create a second device or orphan its history.

The network scan needs Home Assistant to be on host networking, and needs UDP port 4211 to be free on that machine. RavLight devices reply to a fixed port rather than to the port a probe came from, so a container behind NAT never receives the answers — and a Polaris instance on the same machine already holds that port. The other three routes are unaffected; the setup dialog says so rather than reporting an empty network.

What you get

Entities are built from what each device reports about itself, so a controller only ever gets the ones it actually has — no unavailable rows for hardware that is not there.

Every fixture

EntityWhat it is good for
DMX active · DMX frame rateWhether show data is arriving, and how fast. The pair an automation watches to know a show really started
DMX source · UniversesACN, Art-Net, wired DMX, a recorded scene or the on-board effects — and which universe the device starts at
TemperatureWhere the board has a sensor. The one that matters in a sealed enclosure in the sun
WiFi signal · Connection · IP addressWired or wireless, how good the link is, where the device is
Uptime · Total hoursA controller that reboots on its own shows up as an uptime that keeps resetting
OnlineReachability, kept reporting even while the device is unreachable
FirmwareAn update entity fed by the device's own update check
Identify · Restart · Check for updateButtons. Identify runs the fixture's visual identification sequence

LED controllers — Elyon, Axon

Active outputs and total pixel count, with a per-output breakdown in the attributes: protocol, pixel count, universe and start channel for each one. Every configured output also gets its own identify button, which wipes that run white — the fastest way to work out which physical string a row in your patch actually drives, from the ground, on a phone.

Diagnostic entities of an eight-output Elyon: check for firmware update, configuration revision, connection, firmware, identify fixture, identify output 1 to 8, IP address, online, total hours and uptime
One identify button per configured output, alongside the diagnostics

Orion winches

Motor state, position in centimetres with its travel limits, driver temperature, fault flags, StallGuard reading, homed, moving and manual override — plus run homing, emergency stop, clear fault and release DMX override.

Automations worth having

Two that earn their place on the first evening of a season.

The show did not start

The sequencer is a PC that can fail to wake, a service that can fail to launch, a network link that can come up half-configured. The controllers know within a second whether frames are arriving:

alias: Display — no data after showtime
triggers:
  - trigger: numeric_state
    entity_id: sensor.rvd008_dmx_frame_rate
    below: 1
    for: "00:05:00"
conditions:
  - condition: time
    after: "17:30:00"
    before: "23:00:00"
actions:
  - action: notify.mobile_app_phone
    data:
      title: Display fault
      message: >-
        No show data reaching RVD008 for five minutes.
        Check the sequencer.

A controller is cooking

Southern-hemisphere Christmas is a summer problem: a sealed enclosure in direct sun runs far hotter than the same board on a bench in December in Europe.

alias: Display — controller too hot
triggers:
  - trigger: numeric_state
    entity_id: sensor.rvd008_temperature
    above: 70
    for: "00:10:00"
actions:
  - action: notify.mobile_app_phone
    data:
      title: Controller overheating
      message: "RVD008 has been above 70 °C for ten minutes."

Both are per-controller as written. For a display with a dozen boards, point the same automation at a group, or template over the devices — the entity names follow the device name you set in the fixture's own web UI.

What it does not do

Credits

Open source under the MIT licence, originally written by George Qualley IV. Issues and pull requests are welcome on GitHub.