I have a brand new Heatilator fireplace that uses a rheostat to control the blower. I’d like to change this so I can control via HA. I can confirm the blower works on a standard Kasa KS200 Smart light switch. But, when I tried hooking it up to a Kasa KS240 Smart ceiling fan control & dimmer switch but I couldn’t get it to run at anything other than 0% or 100% (either off or on like the KS200).
This leads me to believe that there is something different in this blower that makes it operate differently than a ceiling fan. Here are the specs of my blower:
I’ve been able to find that there are two types of fan controls, TRAIC and VFD. I learned that TRAIC are most common. I believe I need to find a smart fan control that is VFD.
I just started looking at how to do this same thing with my fireplace. I’m surprised how limited the info is on doing this. your post is one of the first that came up, and is only 11 days old! I’ve also found similar information that you have. ceiling fan controllers apparently work completely differently (triac as you just pointed out).
The fan control for the blower on fireplaces seems to work by reducing the voltage, and the type of thing to control and reduce the voltage is this rheostat. So… I’m searching for a wifi-controlled rheostat and not much is coming up. My potential solution… i’m considering getting a regular rheostat and attaching a servo to it to physically turn it “up and down”. it’s relatively easy to control a servo through HA with an esp32 or esp8266… let me know if you’ve gotten any further in your search, and i’ll update here if i make progress.
I’ve attached a servo to my rheostat. I 3D-printed an attachment to connect a servo arm to the fitting for the rheostat knob - pretty sure the rheostat on my FP is this one:
and used a 270 degree servo, model DS3218. it’s overkill @ 20 kg, but i had already previously modeled up a bracket to hold this same size servo.
I did have to model and 3D print an attaching arm to hold the servo to the fireplace frame, basically the mounting plate for the rheostat. I’ll upload the knob adapter, servo bracket, and connecting arm to thingiverse when i get a chance.
Lastly, I programmed an esp8266 wemos D1 using ESPHome to control the servo. my script also reads the relay wires from the remote controller and uses a relay I added to turn the flame on and off. a bit excessive to read the remote control input this way, but i wanted to keep the original remote control functionality.
ESPHome code below. The gpio pins that i used are all listed, but i did have to put a resistor between pin 12 and ground to keep it reliably pulled low in order to read whether the controller circuit was closed to the 3.3v pin on the esp8266
i’ll draw up a wiring diagram if anybody’s interested
esphome:
name: fireplace-remote
friendly_name: Fireplace-remote
#mac [add device mac address here for reference]
esp8266:
board: esp01_1m
#configuration for toggling relay
switch:
- platform: gpio
name: "fireplace-switch"
id: "fireplace_switch"
icon: "mdi:fireplace"
pin: 4 #gpio4 is d2
# read open or closed circuit signal from fireplace remote controller
# 10kh resistor btwn gpio pin and ground, connect other end of controller to 3.3v
binary_sensor:
- platform: gpio
name: "fireplace_remote_control_sensor"
pin:
number: 12 #gpio12, d6
mode:
input: True
on_press:
then:
- switch.turn_on: fireplace_switch
- number.set:
id: FPservoSlider
value: 100
on_release:
then:
- switch.turn_off: fireplace_switch
- number.set:
id: FPservoSlider
value: 80
- delay: 90s
- number.set:
id: FPservoSlider
value: 0
# Enable logging
logger:
# Enable Home Assistant API
api:
# encryption:
# key: "7B+BU5CmJO+OG/I01gwECCOM2B4iL0p54DoGb83iwLE="
ota:
- platform: esphome
password: "2ccd2eae94cbece40a9583350107ae8c"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Fireplace-Remote"
password: "SmdwM9HIL4rz"
manual_ip:
# Set this to the IP of the ESP
static_ip: 192.168.2.48
# Set this to the IP address of the router. Often ends with .1
gateway: 192.168.1.200
# The subnet of the network. 255.255.255.0 works for most home networks.
subnet: 255.255.255.0
captive_portal:
# create an slider/number in home assistant
number:
- platform: template
id: FPservoSlider
name: Blower Fan
icon: mdi:fan
optimistic: true
min_value: 0
max_value: 100
initial_value: 0
step: 5
on_value:
then: #converts 0-100 -> -1 t0 1
- lambda: !lambda |-
id(FP_servo).write((x-50)/50);
#define and control the servo
servo:
- id: FP_servo
output: pwm_output
output:
- platform: esp8266_pwm
id: pwm_output
pin: 0 #d3
frequency: 50 Hz