I have an underfloor heating system (UFH) that operates by pumping hot water into 8 different rooms. The water is heated by an external boiler which has a Z-Wave Micro Switch (MH-DS221) Each room is controlled by a Z-Wave Qubino Flush On/off Thermostat (ZMNHIA). At any given time, any of the rooms can be calling for heat (because the ambient room temperature is more then 2 degrees below the setpoint).
I would like to set it up so that if all 8 rooms are not calling for heat, the Micro Switch closes (thereby stopping the boiler from heating and pumping water) but when any of the rooms calls for heat, it opens, thereby turning on the boiler.
How do I accomplish this? Is there maybe a component someone already built to keep track of states, provide “or” logic?
Also, the Qubino thermostats don’t seem to provide a flag if heating is called for or not; best I found is I can check is use the Electric Consumption of the thermostat since it should only use electricity if it is calling for heat (e.g. > 0).
Yes there is. It’s called a Group. It behaves exactly as you described:
* The group state is unavailable if all group members are unavailable. * Otherwise, the group state is unknown if all group members are unknown or unavailable. * Otherwise, the group state is on if at least one group member is on. * Otherwise, the group state is off.
EDIT: Missed the part where you said your thermostats don’t have a binary sensor to indicate if heating is on or off.
You should still be able to use a group. The sensor group will be able to show 0 or greater if you set the type to sum.
If you have a climate entity for each thermostat, that entity should have an attribute called hvac_action which will change value from idle to heating when there is a call for heat.
You could create a template binary_sensor helper that looks at each of the 8 climate entities and turns on when any one is one. The sum helper option is probably easier but seems kind of hacky. But either should work.
If you want a template you can use something like this, replace floor_heat in the first line with whatever matches all your 8 climate entity ID’s:
{% set climate_list = states.climate | map(attribute='entity_id') | select('search', 'floor_heat') | list %}
{{
climate_list
| select('is_state_attr', 'hvac_action', 'heating')
| list
| count
> 0
}}
If you don’t want to search for your climate entities and instead want to hard-code them, replace the first line with
there are the attributes that show when I look at the entity states in HA. I don’t see hvac_action there. Is there some other way to see if it exists?