I have in my house a solar panel to heat water that is controlled by a "dummy" control panel from which I can see the current temperature of the water in the solar panel and the water in the tank. There's a pump that moves water from the tank into the solar panel and back into the tank in order to heat it when the temperature of the solar panel is x degrees higher than the temperature in the water tank. There's also a resistance in the water tank that can be turned on to heat the water when there's no sunlight.
I currently use a Shelly 1PM device to control the resistance from my Home Assistant instance, so I can turn it on even when I'm out of home. Still, I really don't know what's the real temperature of water unless I reach to the controller panel and read the value at its screen. So I'm not sure of when I need to turn the resistance on or when I can turn it off because the water is hot enough.
I saw in the user/installation guides of my current controller panel that it uses two sensors:
Reading about those sensors it seems they're quite standard so I thought it would be nice to replace the controller panel with a ESP32-based device that reports all temperature values to Home Assistant. This way, I could check the temperatures when I'm not home, create automations to turn the resistance on automatically when it's needed and turn it off when it's not, maybe even taking in mind the weather forecast for the next hours thus saving energy and contributing a little bit to reduce global warming.
Goal for this Hackweek
Some months ago I got some protoboards, an ESP32, an e-ink 2.9in display, some buttons, relays, wires, terminal blocks, etc. to try building this smart control panel. I also got two PT1000 and NTC10K sensors in order to test the temperature readings before using the actual sensors in the solar panel/water tank. I never passed from the research-the-needs-for-this-project step, so I think Hackweek is a good time to advance it, experiment and get practice with:
- ESP32 programming (which I've never used before but always thought it would be interesting)
- Hardware design (I have very basic knowledge of electronics, and just read how pull-up/pull-down resistances work when researching for this, but I'm eager to learn)
- MQTT (which I've used before in some projects, but never in an ESP32)
The project can be divided in several subgoals which can be done mostly in parallel:
- Get the ESP32 to run some code when connected to a computer and see the result in the development's console
- Get the ESP32 to read the temperature from the PT-1000 sensor
- Get the ESP32 to read the temperature from the NTC10K sensor
- Get the ESP32 to print numbers (and the UI) in the e-ink display
- Get the ESP32 to read the button presses from the "DIY keyboard"
- Get the ESP32 to connect to the local wifi
- Get the ESP32 to control the relay to turn the water pump on and off
- Get the ESP32 to send data to the local MQTT server
- Get the ESP32 to read commands from the local MQTT server (to control the relay)
- Get the ESP32 to work from AC (230V) instead of the USB cable (I got a HiLink HLK-10M05 module and some other components for that circuitry)
- Once all of the above work together, 3d-print a case to hold everything together and replace the dummy panel controller with the smart one
Note that since the resistance (the one used to heat water when there's no sunlight) has a high power usage of ~2000W, I prefer to keep using the Shelly 1PM to control it instead of using a cheap relay that could be a fire hazard, so the relay will only be used to control the water pump which should use <600W.
I'm still wondering if using MicroPython or C++. I guess I'll decide when I start coding and reading some tutorials.
If I manage to get it working, I'll publish all sources (and pictures, I guess) in github. I'll put the link here when there's some code available.
Looking for hackers with the skills:
Nothing? Add some keywords!
This project is part of:
Hack Week 21
This project is one of its kind!