Pure-local control of your Heat & Glo / SIT Group ProFlame 2 gas fireplace from Home Assistant (or HomeKit, via the HA bridge), no cloud — over OOK 314.973 MHz RF using a CC1101 radio.
If you're starting from scratch, buy a LilyGo T-Embed CC1101 (or the T-Embed CC1101 Plus — same board with an extra PN532 NFC chip that this firmware leaves dormant). Then either:
- Web-flash from your browser — plug the board into USB, click Install, push your Wi-Fi creds via Improv-Wi-Fi, pair on-device. No CLI, no Docker, no ESPHome install. (Chrome/Edge desktop only.)
- Or use
proflame2_tembed.yamlthe regular way (clone +esphome run) if you want to bake your own secrets, encryption key, etc. into the firmware.
Either way, this is the path the project is built around:
- No wiring — ESP32-S3, CC1101 radio, ST7789V LCD, rotary encoder + push- button, dedicated user button, 8-pixel WS2812 strip, BQ27220 fuel gauge, and Li-ion battery on a single board with USB-C charging.
- Pair in 30 seconds, no SDR. Long-press the encoder, point your OEM remote at the device, press a couple of buttons, hold to confirm. → On-device pairing (T-Embed)
- Standalone LCD + encoder UI that drives the fireplace without HA or Wi-Fi. Idle field list, full settings page (LEDs, battery rendering, clock screensaver, encoder direction, backlight timeout, info, clear-pairing, reboot), 8-row climate editor (mode / target / fan / heat-mode defaults). → Device UI
- Fire-effect LED strip along the bottom edge — red / orange / yellow flicker that runs whenever the burner is on, killable from HA or the device's settings cog.
- Battery monitoring via the on-board BQ27220 fuel gauge.
- HomeKit-friendly climate (HEAT/OFF thermostat with fan modes), light (1–6 brightness as 0–100 %), state restoration, web fallback. Same as the generic build — just nothing to wire.
If you already have a CC1101 breakout and an ESP32 dev board, see the generic ESP32 path — same component, same protocol, manual wiring + manual pairing.
- Pick your hardware — T-Embed (recommended) or generic ESP32 + CC1101 breakout.
- Install + flash — drop the
external_componentsstanza, copy the example YAML, set your secrets,esphome run. - Pair your remote — on-device on the T-Embed, HA-driven on the plain ESP32, or via SDR for boards without GDO0.
- Pull the batteries from your OEM remote so it doesn't fight the ESP32. (Important — read this before you wonder why settings revert.)
| Hardware | T-Embed pin map, generic ESP32 wiring |
| Installation & quickstart | external_components, secrets, flashing |
| Pairing | overview + the OEM remote conflict warning |
| · On-device (T-Embed) | 30 s, no SDR, no YAML edits |
| · On-device (plain ESP32) | HA-driven, requires gdo0_pin wired |
| · SDR capture (any board) | rtl_433 / OMG / pair-as-new-remote |
| Climate (thermostat) | HEAT/OFF behavior, HomeKit fan modes |
| Device UI (T-Embed) | LCD + encoder gestures, LED strip, backlight |
| Standalone web UI | HA-free fallback over web_server: |
| Home Assistant entities | full entity list, boot defaults, state restoration |
| Protocol details | wire format, ECC math, RX architecture |
| Troubleshooting | common symptoms and fixes |
This component controls a gas appliance. Always keep the original remote available (with batteries removed but stored — see Pairing), install CO detectors, follow local codes, and consider timeout automations. Test thoroughly before relying on it.
This component stands on a lot of other people's work. In rough order of how much code / architecture we pulled from each:
- merbanan/rtl_433 — the
proflame2.cdevice decoder is the canonical reference for the ProFlame 2 protocol: word layout, Thomas-Manchester encoding, the 4-chip1110sync, the ECC inversion math, parity / guard-bit validation. Ourproflame2_decode.{h,cpp}is a direct port of that logic to host-testable C++, with the same field semantics and the same pulse-demod approach. - NorthernMan54/rtl_433_ESP
— the entire RX architecture is modeled on this project. CC1101 register
values for raw-OOK envelope mode (DATARATE 17.24 kbaud, 270 kHz RX BW,
AGCCTRL2 = 0xC7, etc.), the GDO0 ISR + edge-timestamp ring-buffer pattern, and the chip-rate-locked sample-buffer / linear-scan framer all come from here. Without it, our first attempt — a streaming edge-time classifier — couldn't survive WiFi ISR jitter; once we ported this architecture, pairing converged in under two seconds. - johnellinwood/smartfire — original reverse engineering of the ProFlame 2 RF protocol. The serial and ECC pairing model, command-byte layout, and 5-repeat transmit pattern all came out of this work.
- FCC ID
T99058402300— the OEM remote's filing has the protocol documentation that confirms baud rate, modulation, and frequency. - j2deen/proflame2-esp — the original ESPHome external-component for ProFlame 2: component skeleton, ESP-IDF framework setup, secondary-flame support, and non-blocking TX state machine. marksieczkowski/proflame2-esp is an intermediate fork of j2deen's; this project began as a fork of that and has since been detached from the fork network as it diverged substantially (ESP32-S3 / T-Embed target, RX path, on-device learn-mode, climate, light, state restoration, device UI, LED strip, web UI).
- LSatan/SmartRC-CC1101-Driver-Lib — early reference for CC1101 register programming patterns and the PA-table values used at 314.973 MHz.
- Xinyuan-LilyGO/T-Embed-CC1101
— the official LilyGo hardware reference is where the T-Embed pin map
came from: shared SPI bus + per-CS muxing, antenna-switch quirks
(GPIO47 SW1 high / GPIO48 SW0 low for 315 MHz routing), and the
GPIO15peripheral power-enable that has to be HIGH before SPI starts or every CC1101 register reads0x00. - OpenMQTTGateway — an alternate path for capturing the OEM remote's serial + ECC if you don't have an SDR and aren't on the T-Embed. OMG embeds rtl_433_ESP and decodes ProFlame 2 out of the box.
- ESPHome — the framework that hosts this whole component. The climate / light / number / switch / button entity surfaces, NVS persistence, OTA, web server, and codegen pipeline are all ESPHome.
MIT — see LICENSE.
Not affiliated with SIT Group, ProFlame, or any fireplace manufacturer. Use at your own risk.

