Hey there,
I’ve started working on integrating my Napoleon gas fireplace into Home Assisstant using the eFIRE Bluetooth controller it has.
A first version for testing has been released as a Custom Component:
Installation Instructions here: Napoleon eFIRE Custom Component Installation
Screenshot
Reverse Engineering the damn thing
To get here I had to reverse engineer the Bluetooth protocol the fireplace uses to communicate with the eFIRE App. That work is complete and can be viewed here: eFIRE Bluetooth Protocol - Bonaparte 0.1.0 documentation
I then went ahead and turned this information into a Python library, so that it can be used with Home Assistant. Much credit goes to @bdraco whose BLE libraries I have used as templates for this.
There is some other cool stuff I found out in the process which suggests I could ultimately build an ESPHome device to speak directly to the ProFlame 2 IFC in my fireplace, getting rid of the Bluetooth module. Check out my other part of the reverse engineering journey: System Information - Bonaparte 0.1.0 documentation
Limitations
RF remote disables Bluetooth Control
As soon as you use the RF remote to control the fireplace all bets are off.
At least in my instance the eFIRE controller doesn’t register that happening and it will lose all ability to correctly report state and control the fireplace. This is a limitation of the IFC, not the Bluetooth module. The eFIRE App is supposed to display an overlay in this case preventing you from using the app further. But for me this doesn’t work.
If you turn on the fireplace using the RF remote or override control using the RF remote you will be subsequently unable to see or control the state in HA. This means you can also not turn off a fireplace in HA that was turned on using the RF remote. So it’s probably best to discontinue use of the RF remote altogether when using this integration.
The good news is that the integration is way snappier than the RF remote for me. Especially since I can immediately turn on the fireplace to its lowest setting, which is my preferred setting. The remote turns it on full blast and then I have to press the “down” button five times and wait for the fireplace to acknowledge the command.
RF remote overrides state
State is pretty absolute on this IFC. That means with every change the entire state is written to the IFC (and thus overwritten).
Since RF remote and Bluetooth are mutually exclusive they cannot sync state with each other.
The only time where this is annoying is when you set any of the features that you’d like to stick for an extended amount of time and across control modes (e.g. AUX relay, Continuous Pilot)
In my case it is the Continuous Pilot setting. I like to turn it on in winter and have it stay on for the season. Setting this setting through Bluetooth is possible, but unless you also set it to on in your RF remote it will always be returned to off when you use the remote.
Implementation status
Fireplace On / Off as Switch entity (synced with Flame Height)
Flame Height Number entity with Slider
Night Light as dimmable Light entity
Blower as Fan entity with 6 speeds
Continuous Pilot as Switch entity
Aux Relay as Switch entity
Split Flow as Switch entity (untested, don’t have this feature)
External LED controller as RGB Light entity with effects (don’t have this feature)
Sleep timer (likely not going to implement, use Automations in Home Assistant instead)
Next steps
Publish Bluetooth Library on GitHub: GitHub - kaechele/bonaparte: Library to control Napoleon eFIRE enabled fireplaces
Publish Bluetooth Library on PyPI: pybonaparte · PyPI (Possibly pending rename to bonaparte
, see PEP 541 Request: bonaparte · Issue #2683 · pypi/support · GitHub)
Publish HA custom component to GitHub / HACS: GitHub - kaechele/napoleon-efire: Napoleon eFIRE Integration for Home Assisstant
Community Testing
Pull request for core integration
Looking for
People to
- express their interest in this integration
- test the integration using the custom component
- review the library code and suggest improvements
- review the documentation and suggest improvements