Build a cheap water usage sensor using ESPhome and a proximity sensor

ESP home water meter home assistant proximity

This article will provide you with a walkthrough on how you can build a water usage meter sensor that integrates with your Home Assistant for under 10 $/EURO, without the need of any soldering or coding skills.

This article will also cover the configuration that’s needed in Home Assistants to translate the ‘pulse’ to liters (or any other non-metric measurement) in Home Assistant. At the end you will have clear insights in how much water you are using per day, hour and week.

Why do you want to measure water usage of your home?

These days it’s all about insights. I measure pretty much all my utilities, including power and city heating. The last missing piece is water usage. Although water in the Netherlands is not really expensive I wanted to get more insights on how much water are we using and is there anyway to save some water. Unfortunately water delivery doesn’t come with a smart meter. There’s just a analog counter. So how do you measure the water usage and make this analog meter smart?

Continue reading “Build a cheap water usage sensor using ESPhome and a proximity sensor”

2022 update: Flash ESPhome on ESP32 ESP2866 NodeMCU board

A lot is changed since I wrote multiple articles around ESPhome. One of the mayor things is that ESPhome is now part of HomeAssistant core and it comes with a nice integrated User Interface.

What are ESP32 and ESP2866 nodeMCU boards?

ESP boards are a low cost Wi-Fi chips that have built in flash chips allowing you to build a single chip device capable of connecting to Wi-Fi. newer versions like the ESP32 boards also provide you BLE (Bluetooth low energy) and there’s loads of variety of boards you can use.  

With ESP you can easy make smart solutions for HomeAutomation. You can buy them for about 4-9 dollar/euro on AliExpress or for a bit more with faster delivery on Amazon.

Read more about ESP boards in my introduction to ESP boards article

This article is an updated version of the the Compile and flash your ESP with ESPhome article.

Continue reading “2022 update: Flash ESPhome on ESP32 ESP2866 NodeMCU board”

Adding centerfire, increase and decrease to your smart Bellfire fireplace solution

In previous article series I provided an overview and step by step instruction how to make you Bellfire fireplace with Mertik Maxitrol controller smart. This project that was presented during the Home Assistant Conference 2020.

In the article series and presentation I focused on the essential controls, basically turning the fireplace on and off. I received number of requests to extend the controls to support increasing and decreasing the fire and also activating the so called center burner.

After doing some research and trial and error I’ve found the combinations for the relays to add these features to your smart fireplace.

Continue reading “Adding centerfire, increase and decrease to your smart Bellfire fireplace solution”

Step 5: Wire the relays to the fireplace

This article is part of the Make your Bellfire fireplace smart project that I presented during the Home Assistant Conference 2020.

It’s time to execute the final step, you can find all steps in the overview how it all going to work article.

Now everything is set. We now can connect the relays to the fireplace and light up the fireplace using Home Assistant.

The wiring

Again very basic wiring is needed.  I need to make sure that I connect the wiring to map the pinout of the fireplace.

If we look at the pin-out on the fireplace, going bottom up.

  • Pin 0 is the common circuit and need to be connected to the COM of all three relay.
  • Pin 1 wires to the Normal Open (NO) port of relay 1
  • Pin 2 wires to the Normal Open (NO) port of relay 3
  • Pin 2 wires to the Normal Open (NO) port of relay 3

See wiring details below.

wiring

That’s it! Now sit back, open Home Assistant and press the ignite button. Your fireplace will now lite up.

Step 4: Configure ESPHome to control the relays from Home Assistant

This article is part of the Make your Bellfire fireplace smart project that I presented during the Home Assistant Conference 2020.

It’s time to execute the fourth step, you can find all steps in the overview how it all going to work article.

The wiring is now ready, let’s expose three switches to Home Assistant to control the relays.

Expose pins as switches

Open ESPHome and click EDIT on your node. The ESPHome configuration editor will now show. Add following configuration in the bottom of the configuration.

switch:
  - platform: gpio
    pin: GPIO13   #D7
    name: "IN1" 
    id: IN1
  - platform: gpio 
    pin: GPIO12  #D6
    name: "IN2"
    id: IN2
  - platform: gpio 
    pin: GPIO14  #D5
    name: "IN3" 
    id: IN3

Note: The PIN name is translated from the physical D number printed on the ESP to the addressable name used in configurations and programming.  E.g. pin D7 is referred to as GPIO13, all mappings can be found in the image in the ESP Intro section.

UPDATE (thanks Petr): “Fortunately ESPHome knows the mapping from the on-board pin numbers to the internal pin numbering, but you need to prefix the pin numbers with D as in the image below in order for this automatic mapping to occur. In general, it is best to just use the D0, D1, … pin numbering to avoid confusion”

We are adding three switches of the platform type GPIO, this means that the switch will 1:1 control the GPIO pins. For every switch we define the GPIO pin that is controlled, and we provide a name and ID.

Flash the firmware Over The Air (OTA)

That’s it, now flash the firmware of the ESP with the updated firmware based on our new configuration. We do not need to use the flasher tool anymore, we can use the Over-The-Air flash feature to flash the chip with the new firmware over the WiFi Connection. It is as easy as clicking the UPLOAD button.

ESPHome will compile the new firmware, send it over to the ESP that will than flash itself. After flashing the ESP will come back online with the new firmware. It does not get much easier!

Control the relay from Home Assistant

Wait till the ESP has been flashed successful and is connected to the WiFi.

Find your device in Home Assistant, noticed that the device now has 3 entities. Click on the device and you’ll see that it has three switches, called IN1, IN2 and IN3.

Press the switches and enjoy the sound of clicking relays. Every switch should control the matching relay.

Create timing to control the fireplace

To control the fireplace I need to match following sequences with the switches:

  • Ignition, close contacts 1 and 3 simultaneously for 2 seconds
  • Fire off, clos contact 1,2, and 3 simultaneously for 1 second

We need to control the relays in these sequences with the ESP board. We can do this by extending the ESP configuration. We’ll add an Ignition switch that will execute sequences above when turned on and off.

Open ESP home and click edit on the node to go to the configuration editor.

Add a new Switch (right under IN3) with following configuration.

- platform: template
    name: "Fireplace_ignition"
    id: Fireplace_ignition
    turn_on_action:
      - then:
        - switch.turn_on: IN1
        - switch.turn_on: IN3
        - delay: 2s
        - switch.turn_off: IN1
        - switch.turn_off: IN3
        - switch.template.publish:
            id: Fireplace_ignition
            state: ON
    turn_off_action:
      - then:
        - switch.turn_on: IN1
        - switch.turn_on: IN2
        - switch.turn_on: IN3
        - delay: 1s
        - switch.turn_off: IN1
        - switch.turn_off: IN2
        - switch.turn_off: IN3
        - switch.template.publish:
            id: Fireplace_ignition
            state: OFF

Press the Upload to compile, upload and flash the ESP with the new firmware. Test your new switch and verify that the relay react as expected.

Now it’s time to for the last step, time to wire the relays to the fireplace.

Step 2: Flash ESP chip with ESPHome node firmware

This article is part of the Make your Bellfire fireplace smart project that I presented during the Home Assistant Conference 2020.

UPDATE: This article has been updated to reflect the changes in Home Assistant and ESPHome. Read the updated article to flash ESPhome on your ESP32 / ESP2866 NodeMCU board.

It’s time to execute the second step, you can find all steps in the overview how it all going to work article.

Make sure you have some ESP boards ready to go, you can buy ESP boards few dollar on AliExpress. Buy the ESP32 variant if you need Bluetooth (BLE) connectivity.

Now we need to load the configuration of your node to the ESP board. I recommend flashing the firmware from your local laptop and a USB cable, using the Flasher tool from ESPHome. Let’s get started.

Compile firmware

We need to start by compiling the firmware that we’ll use to flash the ESP chip.
In ESPHome select the menu of your node (three dots (…) in the top right of your node) and select Compile.

ESP home will now compile your firmware. After the compilation is finalized you can download the firmware.  Download and store the file somewhere you can find it later on.

Flash ESP with compiled firmware

Now we’re going to flash the ESP firmware with your compiled firmware.

  • Go to the esphome-flasher GitHub page and download the flasher for the OS you’re using. There is a esp home flash tool for macOS, Ubuntu and Windows :
    https://github.com/esphome/esphome-flasher/releases
  • Connect your ESP board with USB to your laptop.
  • Open the flasher tool
    • Serial port: select COM port where the board is connected (there is probably only one option 😊).
    • Firmware: Browse to the location where you downloaded your compiled firmware and select your firmware.
    • Click Flash ESP and wait
  • The ESP will be flashed now, you can follow the progress in the console window. When finished writing the firmware the ESP will restart and connect to your WiFi.
The ESP will be ready after it states that it’s ready for Over-The-Air Updates and that he API server is ready.

All good so far, now configure the device in Home Assistant.

Configure device in Home Assistant

Home Assistant will automatically recognize the ESP on the network and notify you about the new device found.  Click on the notification or click Configuration, Integrations. Find the new discovered device and click configure.

Provide the OTA password that you set during step 3 when you created the node in ESPHome.

Home Assistant will now add your ESP as a new device, there is not much you can do with the device as there are no entities to control.

In the next article, we’ll wire the relay to the ESP board.

Step 1: Install ESPHome in Home Assistant and create first Node

This article is part of the Make your Bellfire fireplace smart project that I presented during the Home Assistant Conference 2020.

It’s time to execute the first steps, you can find all steps in the overview how it all going to work article.

Install ESPHome

Installing ESPHome in Home Assistant is really easy. Go to Supervise, Add-on Store and search for ESPHome.

After installation starts the Add-On, make sure you select that ESPHome is visible in the side menu.

Create first Node

  1. Click on ESPHome in the sidemenu of Home Assistant, ESPHome will load.
  2. Click the green + icon in the button right corner to add a new node.
  3. Complete the new node wizard steps
    1. Node Name: provide the name of your node. Note: only lowercase and no spaces
    1. Device Type: Select the board you are using. I’m using the ESP8266, NodeMCU board.
    1. WiFI & Updates:
      1. Provide your WiFi network details
      1. OTA password: password use to integrate with Home Assistant and to flash the firmware in the future using WiFi.
  4. Finish: Click Submit. Congratulations, you created your first node.
More detailed steps can be found on the ESPHome site. They have a very detailed getting started guide.

Now we need to compile this node and flash the ESP with the firmware.