Hi
I have completed my climate automation, inspired in the Perfect Heating Automation with Sonoff TRVZB post, but adapted it a bit more, so, first of all, big thanks to @berkans for his post!
Here i have two different objectives. First one, ask for opinions and feedback about how to improve it, and secondly, write a step by step guide for other people who might be interested in building something similar
Previous situation - Why am i doing this
My house had just a Tado X thermostat, and i was working from home most of the days. The thermostat is in the living room and it was far for efficient, as it was controlling the heating for the whole home. I wanted to have a better system to control independently my studio, which i need warm only during working hours on working days, or the bedroom, which i need to heat before going to bed or before waking up.
There are 4 rooms i wanted to control independently. The living room, two studios and the bedroom.
As advised in the perfect heating automation post, i have decided to use external temperature sensors rather than the valve sensor itself.
The solution - Components
TRV: Sonoff TRVZB x4
Temperature sensor: Sonoff SNZB-02P x3. For the living room, i will use the tado thermostat as the temperature sensor
Tado X: The thermostat will act as the 4th temperature sensor, and will also be the gateway to manage the boiler controller. It is, by setting the target temperature of the thermostat, will force the boiler to switch on or off
Configuration
Each valve has been configured as a better thermostat entity, and has its own scheduler. The temperature sensor is configured as external, mapped with the temperature sensor for each room. Finally, i configured tolerance (histeresis) to 0.3. This requires further testing but i think thats a safe approach
I have also configured the temperature sensor to report every minute for bigger accuracy.
*The logic
This is how the logic should work:
-
When any valve requires heat, it changes its status to heating, and sets the tado target temperature to 25, to force the boiler to run.
-
When a valve doesnt need heat anymore, changes the status to idle and it checks if there is any other valve calling for heat. If no other valve is calling for heat, i set the tado target temperature to 15 (force switch off)
This is a dirty trick to force the heater on/off, but it works. My boiler is not opentherm, so at the end of the day its not a big issue. In the last section, next steps, i have an idea how to adapt it to opentherm
Finally, i have also implemented a holiday mode, which i will explain in the next section. Basically it sets the target temperature for all the valves to 10C.
** Automations and scripts**
Those are the components i have created
Scheduler:
An independent scheduler for each valve. It only runs when holiday mode is off.
Helpers:
- group.yaml - A group for all the valves
- holidaymode - A binary helper just to switch on/off the holiday mode
Scripts:
Both are needed for the holiday mode. Those are:
- Set temperature to 10 - Sets target temperature for all the valves to 10
- Set temperature to 20 - Sets target temperature for all the valves to 20
Automations:
- Map valve temperature. This uses the blueprint Sonoff TRVZB External Temperature Sensor Calibration. In short, it maps the external temperature sensor with the valve. I have created one for each valve
- Heating on. When any of the valves in the group changes from idle to heating, if holiday mode is off, and tado target temperature is lower than 25, then, sets tado target temperature to 25
- Heating off. When any of the valves in the group changes from heating to idle, if holiday mode is off, and tado target temperature is bigger than 15, and all the valves are in idle status, then, sets tado target temperature to 15
- Reconciliation on/off. A script to ensure the tado target temperature and valves temperatures are aligned, just in case the automation fails or tado is unavailable when the target temperature is set. It checks every 5 minutes the status of the valves and target temperature. If any is heating and tado target temperature is not 25, sets that to 25.
On the other hand, if no valve is in heating status and tado target temperature is bigger than 15, sets that to 15. - Holiday mode on. When holiday mode changes from off to on, sets valves and tado target temperature to 10
- Holiday mode off. When holiday mode changes from on to off, sets valves and tado target temperature to 20
Monitoring
I have created a couple of scripts to monitor how long each valve is calling for heat per day, and how long in total the tado thermostat is on. I have also created some visualisations to show the status of the valve along the day
Next steps/small issues
-Overshoot When the valve switches off, the room temperature goes up around 0.8C more than the target temperature. Probably i need to play a bit more with this to close the valve gradually when it is closer to the target temperature, or close it 0.2 before reaching the temperature
-
Non Opentherm friendly. This solution just switches on and off the boiler, but doesnt help with modulation. If this was needed (probably i will buy soon an opentherm boiler), i would create a script that periodically checks the gap between the target temperature and room temperature for each room and get the max value, and mirroring that gap in the tado target temperature, rather than setting it to 25
-
Change automations to pyscript. Probably that will be easier and more functionality can be added
-
Make this configuration reusable. Don’t know if this is possible but i would like to create a blueprint or similar reusable component so other people can reuse it
What are your views on this? Is there anything you would change? Andy advise?
Thanks!
