They are on everyone’s lips and not exactly cheap, radiator fans. The fans are mounted under a radiator and turn on automatically when the radiator heats up. And they are good too, the energy efficiency is significantly higher, the room warms up faster.
But since they are too expensive for me and I need a very small fan in one place so that it is almost invisible, I made something again.
The devices are built quite simply, a fan and a temperature sensor. If the sensor determines from a higher temperature that hot water is flowing through the radiator, i.e. the thermostat is on heating, the fans switch on. When the radiator cools down, the fans switch off again.
I took an Esp8266 D1 Mini for the controller, a Dallas temperature sensor and a small fan . The fan is speed-controlled so that it does not always run at maximum speed and is therefore quieter. And it is a 5V fan, so the ESP and the fan can be powered by the USB port of the ESP.
I integrated the ESP into Home Assistant via ESPHome and wrote a mini automation for control.
This is what it looks like with two fans.
substitutions:
name: "Living Room Fan" # Location and Entity Names (Capitals and Spaces Allowed)
dallas_addr: "0x1a3ce1045755d528" # Put YOUR Dallas Sensor Address here
esphome:
name: "fancontrol"
platform: ESP8266
board: d1_mini
esp8266_restore_from_flash: true
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: '${device_name}'
password: "xxxxxxxxxxxxx"
captive_portal:
switch:
- platform: restart
name: "Living Room Fan Restart"
sensor:
- platform: dallas
address: $dallas_addr
name: $name Vorlauf Temperature
id: temp_sensor
accuracy_decimals: 1
output:
- platform: esp8266_pwm
pin:
number: D2
frequency: 25000 Hz
id: fanhub_pwm
fan:
- platform: speed
output: fanhub_pwm
name: "PWM Fan"
dallas:
pin: D3
update_interval: 60s
alias: Lüfter Esszimmer Steuerung nach Vorlauftemperatur
description: ""
trigger:
- type: temperature
platform: device
device_id: 5bba3ceb10cd99cae7b68d48fbc631e3
entity_id: c6ad5a5b8f94fbfb62db48d9534d6a65
domain: sensor
above: 35
id: "ON"
- type: temperature
platform: device
device_id: 5bba3ceb10cd99cae7b68d48fbc631e3
entity_id: c6ad5a5b8f94fbfb62db48d9534d6a65
domain: sensor
below: 35
id: "OFF"
condition: []
action:
- choose:
- conditions:
- condition: trigger
id:
- "ON"
- condition: and
conditions:
- condition: template
value_template: >-
{{states('input_number.hz_tagtemperatur') | float >
states('sensor.thermometer_wohnzimmer_temperature') | float}}
sequence:
- service: fan.set_percentage
data:
percentage: 90
target:
entity_id: fan.pwm_fan
- conditions:
- condition: trigger
id:
- "OFF"
sequence:
- service: fan.set_percentage
data:
percentage: 0
target:
entity_id: fan.pwm_fan
mode: single
The ESPHome integration and automation should be self-explanatory. In the automation, when the fan is switched on, an additional condition is added, here I check whether the room temperature is not already higher than the target temperature for the room. Because then the fan shouldn’t start up additionally.