ProFlame 2 ESPHome
Flash your hardware directly from this page. No command line, no Docker, no ESPHome install. Two paths below: a LilyGo T-Embed CC1101 (recommended) or a generic ESP32 + CC1101 breakout.
⭐ LilyGo T-Embed CC1101
Recommended hardware: ESP32-S3 + CC1101 radio + 1.9″ LCD + rotary encoder + 8-pixel WS2812 strip + Li-ion battery on a single board. Both the T-Embed CC1101 and the T-Embed CC1101 Plus (extra PN532 NFC chip, dormant in this firmware) flash with the same image. Buy from LilyGo →
- Plug the T-Embed into this computer with a USB-C cable.
- Click Install below.
- Pick the serial port labeled USB JTAG/serial debug unit.
- Wait ~60 s — the page does the rest, then prompts for your Wi-Fi.
- Long-press the encoder, point your OEM remote at the device, and confirm to pair.
After flash completes, the page will show a Connect to Wi-Fi prompt. Enter your network SSID and password — the firmware uses Improv-Wi-Fi over the same USB connection to receive them. No SSID is hard-coded into the firmware.
Generic ESP32 + CC1101 breakout
For makers who already have an ESP32 dev board (e.g. ESP32-WROOM-32) and a CC1101 433 MHz breakout module on hand. No LCD, no encoder, no battery — just the radio + Home Assistant entities.
This build assumes the standard wiring documented in
docs/hardware.md:
GPIO21 CSN, GPIO18 SCK, GPIO23 MOSI,
GPIO19 MISO, GPIO22 GDO0. Different
wiring? OTA-reflash later with your own YAML.
- Wire the CC1101 to your ESP32 per the table above.
- Plug the ESP32 dev board into this computer with USB.
- Click Install below.
- Pick the serial port matching your USB-to-serial chip (often CP210x, CH340, or similar).
- Wait ~60 s — the page does the rest, then prompts for your Wi-Fi.
- Pair from Home Assistant: press the Pair Remote button, press your OEM remote a couple times, then Confirm Pairing.
Same Improv-Wi-Fi handoff as the T-Embed build. Same credentials below — both web-flash builds in a given CI run share an API key and OTA password.
Credentials for Home Assistant
Use these regardless of which board you flashed (both builds in a given CI run share them).
Home Assistant API encryption key — paste this when HA prompts on adoption.
GjUmnqGtw6ou68c3BqxTCZIXARyJ/Yvht6R77m/ToVQ=
OTA password — for OTA reflashing from the ESPHome dashboard.
4eea71896ba506fb9e52ebd61d878005
Why are these baked into the firmware?
Home Assistant's "Add ESPHome device" flow effectively requires an encryption key, and the OTA password stops anyone on your LAN from pushing arbitrary firmware. Both have to be set at ESPHome compile time, and a static GitHub Pages site can't generate per-user binaries — so CI generates fresh values per build and stamps them in here.
They're not real secrets: the public firmware
.factory.bin is downloadable from this same site,
and anyone with it (and strings) can extract them.
Treat them as UX bridges for HA's adoption flow, not
as cryptographic boundaries. Your home Wi-Fi password is the
actual security perimeter for a LAN-only fireplace controller.
How to swap them for your own permanent values
OTA-reflash the device with your own YAML and a private
secrets.yaml. The
installation
docs walk through the full esphome run flow.
After OTA, your private key replaces the per-build one, the HA
integration re-pairs with the new key, and future builds of
your YAML never rotate it.
Why you might want to swap them
- Each new web-flash build rotates these values. If you re-flash from this page after a code update, the API key changes and you'll need to update HA. Your own YAML keeps keys stable across reflashes.
- True LAN privacy. Anyone who pulls the public firmware bin can read these. Your own YAML keeps them private — the API stream becomes opaque to LAN snoopers, and the OTA endpoint refuses unauthorized firmware pushes.
- You're past the "first flash" stage. The web flasher is the on-ramp; your own YAML is the long-term home for the device.
What you get after flashing
Both builds ship the full Home Assistant entity set; the T-Embed adds the on-board UI features.
- Home Assistant entity set (both) — climate (HEAT/OFF thermostat with fan modes), light (1–6 brightness as 0–100 %), all the proflame2 controls, plus a diagnostic block showing your captured serial & ECC.
- HA-driven pairing (both) — capture your OEM remote's serial & ECC by pressing Pair Remote in HA, then Confirm Pairing; no SDR needed.
- Standalone LCD UI (T-Embed only) — drives the fireplace from the device with no Wi-Fi or HA dependency. Idle backlight dim, settings cog, info screen, on-device pairing via long-press encoder.
- Fire-effect LED strip (T-Embed only) — bottom-edge WS2812 with red/orange/yellow flicker that runs while the burner is on. Killable from HA or the device.
- Battery monitoring (T-Embed only) via the on-board BQ27220 fuel gauge.
Already running another build?
Web-flash will fully erase the existing firmware. If you've customized a YAML on top of this project, OTA-reflash from your existing setup instead — see the installation docs.