A Home Assistant custom integration for controlling fireplaces via the Flame Connect cloud API.
Develop in the cloud: Open it directly in GitHub Codespaces - no local setup required!
- Full fireplace control: Power, flame effects, heat, lights, timers, and more
- Multi-device support: Each registered fireplace appears as its own device
- Secure authentication: Email and password are used once during setup, then only OAuth tokens are stored
- Manual refresh: Data refreshes on demand via a button entity (24-hour automatic background refresh keeps tokens alive)
- RGBW light control: Media light, overhead light, and log effect with full color support
This integration sets up the following platforms:
| Platform | Description |
|---|---|
switch |
Power, flame effect, pulsating effect, ambient sensor, timer |
climate |
Heat control with temperature and preset modes |
light |
Media light, overhead light, log effect (RGBW) |
select |
Flame color, brightness, media theme |
number |
Flame speed, timer duration, sound volume, sound file |
sensor |
Connection state, software version, error codes (diagnostic, disabled by default) |
button |
Refresh data on demand |
- Click "Download" to install the integration
- Restart Home Assistant
Manual Installation
- Download the
custom_components/flameconnect/folder from this repository - Copy it to your Home Assistant's
custom_components/directory - Restart Home Assistant
Or manually:
- Go to Settings > Devices & Services
- Click "+ Add Integration"
- Search for "Flame Connect"
- Enter your Flame Connect email and password
- Click Submit
Your credentials are used once to authenticate with the Flame Connect cloud service. Only the resulting OAuth tokens are stored - your email and password are never saved.
Each fireplace device exposes the following entities:
- Power - Main fireplace power (on = manual mode, off = standby)
- Flame effect - Toggle flame visual effect
- Pulsating effect - Toggle pulsating flame effect
- Ambient sensor - Toggle ambient temperature sensor
- Timer - Enable/disable the fireplace timer
- Heat - Temperature control with preset modes (Normal, Boost, Eco, Fan only, Schedule). Only available when heat control is enabled on the fireplace.
- Media light - RGBW media accent light with theme effects
- Overhead light - RGBW overhead light
- Log effect - RGBW log effect light
- Flame color - Choose flame color (Yellow red, Blue, Red, etc.)
- Brightness - High or Low
- Media theme - Media light theme (White, Blue, Purple, Prism, etc.)
- Flame speed - Flame animation speed (1-5)
- Timer duration - Timer duration in minutes (1-480)
- Sound volume - Sound volume (disabled by default)
- Sound file - Sound file selection (disabled by default)
- Connection state - Fireplace connection status
- Software version - UI, control, and relay firmware versions
- Error codes - Fireplace error byte values
- Refresh data - Manually refresh all fireplace data from the cloud API
The integration automatically refreshes data every 24 hours to keep OAuth tokens alive. For on-demand updates, use the Refresh data button entity. Each fireplace has its own refresh button.
Evaluated against the Home Assistant Integration Quality Scale.
| Rule | Description | Status |
|---|---|---|
| action-setup | Service actions registered in async_setup |
N/A |
| appropriate-polling | Polling interval is suitable | ✅ |
| brands | Branding assets provided | ❌ |
| common-modules | Common patterns in shared modules | ✅ |
| config-flow-test-coverage | Full test coverage for config flow | ❌ |
| config-flow | UI-based setup | ✅ |
| dependency-transparency | Dependencies documented in manifest | ✅ |
| docs-actions | Service actions documented | N/A |
| docs-high-level-description | High-level integration description | ✅ |
| docs-installation-instructions | Step-by-step installation instructions | ✅ |
| docs-removal-instructions | Removal instructions documented | ❌ |
| entity-event-setup | Events subscribed in proper lifecycle methods | N/A |
| entity-unique-id | All entities have unique IDs | ✅ |
| has-entity-name | Entities use has_entity_name = True |
✅ |
| runtime-data | Runtime data stored in ConfigEntry.runtime_data |
✅ |
| test-before-configure | Connection validated before config entry creation | ✅ |
| test-before-setup | Initialization checks before setup | ✅ |
| unique-config-entry | Duplicate config entries prevented | ✅ |
| Rule | Description | Status |
|---|---|---|
| action-exceptions | Service actions raise exceptions on failure | N/A |
| config-entry-unloading | Config entry unloading supported | ✅ |
| docs-configuration-parameters | Configuration parameters documented | ✅ |
| docs-installation-parameters | Installation parameters documented | ✅ |
| entity-unavailable | Entities marked unavailable when appropriate | ✅ |
| integration-owner | Active code owner designated | ✅ |
| log-when-unavailable | Logs when device/service becomes unavailable | ✅ |
| parallel-updates | PARALLEL_UPDATES set on entity platforms |
❌ |
| reauthentication-flow | Reauth flow implemented | ✅ |
| test-coverage | Above 95% test coverage | ❌ |
| Rule | Description | Status |
|---|---|---|
| devices | Integration creates device representations | ✅ |
| diagnostics | Diagnostics implemented with redaction | ✅ |
| discovery | Automatic device discovery | N/A |
| discovery-update-info | Discovery updates network info | N/A |
| docs-data-update | Data update mechanism documented | ✅ |
| docs-examples | Automation examples provided | ❌ |
| docs-known-limitations | Known limitations documented | ❌ |
| docs-supported-devices | Supported devices listed | ❌ |
| docs-supported-functions | Entities and functions documented | ✅ |
| docs-troubleshooting | Troubleshooting guidance provided | ✅ |
| docs-use-cases | Usage scenarios illustrated | ❌ |
| dynamic-devices | New devices added after setup | ❌ |
| entity-category | Appropriate EntityCategory assignments |
✅ |
| entity-device-class | Device classes applied where applicable | ✅ |
| entity-disabled-by-default | Less common entities disabled by default | ✅ |
| entity-translations | Entity names translated | ✅ |
| exception-translations | Exception messages support translation | ❌ |
| icon-translations | Icons defined in icons.json |
❌ |
| reconfiguration-flow | UI-based reconfiguration | ❌ |
| repair-issues | Repair flows for user intervention | ✅ |
| stale-devices | Stale devices automatically removed | ❌ |
| Rule | Description | Status |
|---|---|---|
| async-dependency | Underlying library is async | ✅ |
| inject-websession | HA websession injected into dependency | ✅ |
| strict-typing | Strict type checking enforced | ❌ |
If your OAuth tokens expire, Home Assistant will display a repair notification. Click through the repair flow to re-enter your credentials and restore connectivity.
Add to configuration.yaml:
logger:
default: info
logs:
custom_components.flameconnect: debug
# Log the underlying API library INCLUDING tokens
# flameconnect: debugContributions are welcome! Please open an issue or pull request.
Requirements:
- Docker or other container runner (docker-ce + WSL2, Lima VM, Rancher / Podman Desktop all recommended)
- VS Code with Dev Containers extension
- Clone this repository
- Open in VS Code
- Click "Reopen in Container" when prompted
script/check # Type-check + lint + spell
script/test # Run testsThis project is licensed under the Apache-2.0 License - see the LICENSE file for details.
Made with care by @deviantintegral