Monitoring and controlling my furnace using Tasmota


This article is a follow-up of my previous (old)  French post “Domotiser une ancienne chaudière mazout : Gestion du thermostat“. That previous built used a custom firmware to control relays, measure water temps and show status on a OLED screen.

Time has past and Tasmota is a very capable and easy to integrate framework. I don’t use much the OLED screen so I decided it was time to get rid of that old custom software.

Obviously, Tasmota supports OLED displays, I might consider going down the docs at Tasmota > Features > Displays. A custom build using USE_DISPLAY_SSD1306 will be required as well as quite some read.


This built is similar to Monitoring a boiler using Tasmota on ESP8266 and DS18B20 sensors but adds relays to control the Power and Circulator.

Another option is to use an OpenTherm interface but that’d require changing my physical thermostat. As far as possible I prefer non invasive hacks that are easy to reverse.

The below overview shows the main components such that:

Test bed and wall box assembly

Bill Of Materials

The BoM is exactly the same as for the Monitoring a boiler using Tasmota on ESP8266 and DS18B20 sensors except you need one or two relays to control the furnace power / circultor.

Part Quantity Approx. Price
Perfboard : Main PCB to put your assembly 1 15€ for a set of 34
PCB 2 pin terminal : Optional direct 5V power input 1 10€ for a set of 50
PCB 3 pin terminal : One per temp sensor 4 14€ for a set of 50
WeMos D1 Mini ESP8266 : The brain 1 5€
DS18B20 : Waterproof temp sensors with 1m wire 3 10€ for a set of 10
Flexible silicone wire rolls : To wire the board 1 12€ for a set of 5 spools of 10 meters
Resistors assortment kit : One 4.7Kohm for data bus of DS18B20 1 5€ for a set of 500
5V relay module : Use a 2 Way to control power and circulator, 1 Way for circulator alone 1 2€



Just connect your WeMos D1 Mini ESP8266 to your computer over USB and install the regular Tasmota image using

To configure your board, use Module type = Generic(18) with below settings (adjust based on your actual wiring):

  • D5 GPIO14 : Relay_i #1 for Power
  • D6 GPIO12 : Relay_i #2 for Circulator
  • D7 GPIO13 : DS18x20 #1 – As the DS18B20 uses a bus, a single data pin is required for both sensors (or more!)

Finally configure the MQTT to point to you Home Assistant server.

Home Assistant

In HA, make sure to setup the Tasmota integration, this will detect your Tasmota device over MQTT and setup the entities automatically.

Once entities are present in HA, I included them as shown below.

Here is the YAML configuration

type: vertical-stack
  - cards:
      - show_name: true
        show_icon: true
        entity: switch.tasmota_furnace_relay_power
          action: none
          action: toggle
        type: button
        icon: mdi:power
      - show_name: true
        show_icon: true
        entity: switch.tasmota_furnace_relay_circulator
          action: none
          action: toggle
        type: button
        icon: mdi:engine
    type: horizontal-stack
  - type: history-graph
      - entity: switch.tasmota_furnace_relay_circulator
      - entity: sensor.tasmota_furnace_ds18b20_1_temperature
      - entity: sensor.tasmota_furnace_ds18b20_2_temperature
    hours_to_show: 8
    refresh_interval: 1
    title: Chaudière


I enjoyed working on this build and it is probably the hardware I use the most for my home automation. The use of Tasmota dramatically simplifies its deployment and maintenance.

However this is only one of three big parts for my heating automation:

  1. Furnace control : This post
  2. Radiators control using Zigbee valves : It’s as simple as adding the Sonoff ZBDongle-P and some Zigbee radiator valves from MOES
  3. Full radiators automation : Home Assistant to control per room valves on a schedule

I still have some work to put on automating the heating itself. I’m currently relying on the physical thermostat and manual circulator control.

Post Author: Shut

Leave a Reply

Your email address will not be published. Required fields are marked *