Firefly + Home Assistant

Firefly is a local-first sensor and control hub for Home Assistant. It auto-discovers its panels as HA entities over MQTT, but it keeps running its own automation, logging and display even when the network is down. That makes it the right place for the jobs HA is bad at: fast sensor polling, tight control loops, and anything that must keep working offline.

What you get

  • Auto-discovered entities: inputs as sensors, outputs/set/timers as switches, PWM outputs as numbers, and servo angles as numbers — all over MQTT, no YAML per device.
  • Live values and switch commands: HA can read state and drive outputs back through cmnd/<device>/<panel>.
  • Offline resilience: rules, logging, OLED display and local I/O keep working with no WiFi. HA just sees the device go unavailable until it reconnects.
  • Local-first automation: a tank-level rule on the board reacts in milliseconds; HA handles scenes, history and voice on top of the same data.

Why not just use HA's own ESPHome/ESPHome-native boards?

ESPHome is excellent, but it's a YAML-first, compile-every-change workflow. Firefly is the no-code path: create panels in the browser, calibrate with buttons, write IF/THEN rules from the dashboard, and reflash over WiFi. The trade-off is explicit — Firefly gives up the deep customisation of ESPHome for a setup you can hand to someone who has never touched a config file.

Quick start

  1. Flash Firefly (see Firmware) and join it to WiFi.
  2. Install an MQTT broker (Mosquitto) on the machine running Home Assistant, reachable from the board's LAN.
  3. In the Firefly dashboard, Settings: set mqtt_server (host or host:port), mqtt_mode=homeassistant, save and restart.
  4. On each panel card click the MQTT button (lilac = ON). The board publishes discovery for that panel.
  5. In Home Assistant: Settings → Devices & Services → MQTT → the Firefly device appears with its entities.

Full topic reference: HA integration over MQTT (PDF).

Using the Firefly OLED as a remote HA display

Firefly has a 128×64 OLED that the firmware can drive from any panel value. With MQTT, Home Assistant can push text to it: publish a string to cmnd/<device>/display and the board shows it on the OLED until the next panel update. Useful for a small status display in the kitchen, a tank-level readout at the cistern, or a notification line that survives a WiFi blip.

Status: this remote-display mode is proposed, not yet implemented. If you want it, ask — it's a small firmware addition on top of the existing MQTT command path.

What Firefly is not

Firefly is not a replacement for Home Assistant. It's the edge layer: fast, local, always-on. HA is the brain: scenes, history, voice, multi-user UI. They share the same MQTT data, so neither fights the other.

Documentation · Firmware · Hardware