Description:
This project addresses the challenges of fluctuating hot water temperature in a home with two bathrooms and a distance-dependent gas water heater. By integrating a servo motor with ESPHome, the gas level can be adjusted remotely from each bathroom, ensuring a consistent and comfortable showering experience.
Motivation:
The existing gas water heater lacked automatic temperature control, requiring manual adjustments before each shower. This was inconvenient and ineffective due to factors like:
- Distance-dependent flow: Different water flow rates in each bathroom affected the final temperature.
- Cold water temperature changes: Seasonal variations in cold water temperature impacted the final hot water output.
- Manual adjustment challenges: Finding the ideal gas level was difficult and time-consuming.
Solution:
This project employs an ESPHome-controlled servo motor connected to the gas water heater's gas valve. The servo's position corresponds to the desired gas level, translating to adjustable hot water temperature.
Hardware:
- Gas water heater\
Optional:
- 9-12V Power supply adapter. (Only if you have the breadboard and you would like to power your heater with it, get rid of batteries)
- Nodemcu breadboard.\
Requirements:
- Running HomeAssistant instance.
- Esphome installed on HomeAssistant.
- Basic knowledge of flashing Esp devices with Esphome.
- Prepare the list of hardware described above.
Steps to build:
- Connect the hardware
- Connect the servo to the right GPIO as shown in the diagram below.
- You can choose to connect the thermistor of the machine as well.
- if you decided to add the physical buttons please connect them according to the diagram as well.
2. Flash your NodeMcu with provided code
servo-controler.yaml
.
You should be able to see the following in Esphome integration if you decided to include all the buttons, lights servo and thermistor.
Usage:
- Access the Homeassistant dashboard.
- From the esphome integration visit this project.
- Change the servo position, the servo should move.
- Clicking any button should move the servo and blink the lights.
Mounting the device:
Mount the servo to the gas pedal.
2. Mount the NodeMcu. You can see below how I have a cate6 cable, this connects all my buttons and leds. The yellow and white cables power up the heater. Red and Green cables for the thermistor.