DIY Heater Fan

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.

DIY Heater Fan

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.

DIY Heater Fan
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.

Leave a Comment