New integration - RF Fan with Learning — a HACS integration that learns your RF ceiling-fan remote

I've been trying to get my RF ceiling fans into Home Assistant properly for a while, and kept hitting the same walls:

  • SmartIR is great for AC and media gear, but it didn't really cater for most of my ceiling fans - and where it might, you're hunting for a matching code set rather than just using your own remote.

  • Learning the codes by hand through Developer Tools worked, but I found it frustratingly fiddly — capturing blobs, working out frequencies, then wiring it all into template fans and scripts.

  • Broadlink's own integration doesn't really get past the remote device itself and it doesn't seem possible to retrieve RF codes from their app to use in HA.

So I built a small HACS integration that does the capture-and-replay for you behind a learning wizard. You tell it how many speeds your fan has (and whether it has a separate On button, a light, or any extra buttons), then it walks you through pressing each button on your remote. At the end you get a proper fan entity with speeds, an optional light, and a button for anything custom - all from the UI, no YAML or code lists.

Under the hood it captures with the Broadlink's own RF learn and transmits through Home Assistant's newer radio_frequency platform. Since RF is one-way, the entities are optimistic (HA tracks what it last sent).

Requirements

  • Home Assistant 2026.5+ (when the radio_frequency platform landed)
  • A Broadlink RM Pro / RM4 Pro already set up in the Broadlink integration

Install - it's not in the default HACS store yet (PR's in the long queue), so add it as a custom repo:

  • HACS → ⋮ → Custom repositorieshttps://github.com/clevrdavid/rf_fan → category Integration
  • Download, restart, then Settings → Devices & Services → Add Integration → "RF Fan with Learning"

A couple of tips from setting up my own:

  • Learn each speed by the speed it actually produces, not the label on the remote — some remotes are mislabelled or backwards, and you can't fix that after the fact (have to re-learn).
  • If a remote won't learn with the frequency sweep (short-burst remotes like the Mercator FRM97 do this), tick "Capture without the sweep" and set the frequency (usually 433.92) — it then listens directly, like learning an IR code.
  • You can re-learn a single button, or add new ones, later via Configure on the entry.

Heads up: I leaned on Claude Code heavily while building this, so you'll probably spot some fairly AI-flavoured code and wording in places. It's working across my 5 fans (including two Mercator FRM97s), but it's very much a personal-itch project - so treat it as early, and issues/PRs are welcome (or even if anyone wants to take this on as their own project).

Repo: GitHub - clevrdavid/rf_fan: Learn and replay RF ceiling-fan remotes in Home Assistant via a Broadlink — fan, light and custom-button entities, all from the UI. · GitHub

1 Like