Switch control (boiler) trigger on any temperature/heat setpoint change

Hello everyone,

Merry Christmas and Happy New Year!

I'm looking for assistance with the Rule Machine to control EU/UK type boiler switch based on thermostatic radiator valves heat setpoints and their reported temperature.

Test Setup:

  • Hubitat Elevation 2.3.0.121 C-7
  • Rule Machine 5.1.1
  • Thermostat Scheduler 1.3.2
  • Mode Manager 1.1.5
  • 2x Thermostatic Radiator Valves: Virtual Thermostat (A & B) allowing to set heat setpoints and reporting temperatures
  • 1x Boiler: Virtual Switch

Real setup:

  • Hubitat Elevation 2.3.0.121 C-7
  • Rule Machine 5.1.1
  • Thermostat Scheduler 1.3.2
  • Mode Manager 1.1.5
  • 12x Z-Wave Thermostatic Radiator Valves: Fibaro Radiator Thermostat and Temperature Sensor (FIBEFGT-001 also known as FGT-001 and FGBRS-001 sensor)
  • 1x Z-Wave Secure Boiler Receiver HRT Gen5 SSR303 (one channel)

In EU and UK many boilers are not connected to thermostatic valves and you need to turn the boiler on/off whenever you need. Thermostatic radiator valves (TRV) have a heat setpoint setting and their own temperature sensor (embedded, or as a separate sensor looking like a button in my case). Whenever the temperature of a sensor drops below it's heat setpoint, the valve opens. When the temperature of a sensor reaches it's heat setpoint, the valve closes.

The heat setpoints are changed by a built-in Thermostat Scheduler Hubitat application basing on Modes set by a built-in Mode Manager Hubitat application (Morning/Day/Evening/Night/Away/etc.). The Scheduler and the Mode manager work fine, as far as I can observe.

The logic I program is to turn the boiler on when the temperature in any room drops below the heat setpoint of the TRV in the same room, and turn the boiler off when the temperature in all rooms is above the heat setpoints in corresponding rooms.

System state: Boiler is off, heat setpoints are at 22C, temperature is 19C.

RM Rule: Test Boiler ON controller

Define Required Expression
Boiler switch(off) is off(T) [TRUE]
Select Trigger Events

Heat setpoint of Thermostat Room A(22) reports >= Thermostat Room A(19)
OR
Heat setpoint of Thermostat Room B(22) reports >= Thermostat Room B(19)

Select Actions to Run
On: Boiler switch
Event Subscriptions: switch for Boiler switch with stHandler and Filter=true, heatingSetpoint and temperatureMeasurement for TRVs A & B with allHandler and Filter=true.
Logging is enabled for Events, Triggers, Actions

RM Rule: Test Boiler OFF controller

Define Required Expression

Boiler switch(off) is on(F) [TRUE] AND
( Heat setpoint of Thermostat Room A(22) is < Thermostat Room A(19)(F)
  Heat setpoint of Thermostat Room B(22) is < Thermostat Room B(19)(F)
) [FALSE]

Select Trigger Events

Heat setpoint of Thermostat Room A(22) reports < Thermostat Room A(19)
OR
Heat setpoint of Thermostat Room B(22) reports < Thermostat Room B(19)

Select Actions to Run
Off: Boiler switch
Event Subscriptions: switch for Boiler switch with stHandler and Filter=true, heatingSetpoint and temperatureMeasurement for TRV A with stHandlerA and Filter=true, heatingSetpoint and temperatureMeasurement for TRV B with stHandler and Filter=true (I can't explain the difference in handlers here and in "Test Boiler ON controller" - it is what was programmed by Web-UI).
Logging is enabled for Events, Triggers, Actions

Actual results: Setting the temperature on the virtual thermostat in room A to 19C (below heat setpoint 22C) does not trigger the rule to run and the Rule Machine application does not log anything.

Expected results: Setting the temperature on the virtual thermostat in room A to 19C (below heat setpoint 22C) triggers the rule to run (turns the boiler switch on) and the Rule Machine application logs events/triggers/actions.

Could someone please explain me what is wrong in setup here and how to get it work properly?
Thank you.

Is it possible that an event is not created because the event condition never changes from true to false or false to true? In other words an event trigger is not like a condition... it will not trigger just because the heat set point < the thermostat. It will only trigger if the heat set point BECOMES less than the thermostat.

I might be tempted to change the trigger to themostat CHANGES and then use conditionals in the rule / required expressions for the rest.

Take a look at the Advanced vThermostat Manager community app by @nclark. It may do exactly what you want without a lot of RM work. I use it for air conditioners and it works great.

Thank you, @brad5. Giving your suggestion a try.

System state: Boiler is on, heat setpoins are at 22C, temperature is /whatever/ and I set it to 23C

RM Rule: Test 2 Boiler OFF controller

Actual results: Setting the temperature on virtual thermostats in rooms A & B from 19C (below heat setpoint 22C) to 23C (above setpoint) does not trigger the rule to run and the Rule Machine application does not log anything.

Expected results: Setting the temperature on virtual thermostats in rooms A & B from 19C (below heat setpoint 22C) to 23C (above setpoint) triggers the rule to run (turns the boiler switch off) and the Rule Machine application logs events/triggers/actions.

Trying the other way around.

System state: Boiler is off, heat setpoins are at 22C, temperature is /whatever/ and I set it to 20C

RM Rule: Test 2 Boiler ON controller

Actual results: Setting the temperature on virtual thermostats in rooms A & B from 23C (above heat setpoint 22C) to 20C (below setpoint) does not trigger the rule to run and the Rule Machine application does not log anything.

Expected results: Setting the temperature on virtual thermostats in rooms A & B from 23C (above heat setpoint 22C) to 20C (below setpoint) triggers the rule to run (turns the boiler switch on) and the Rule Machine application logs events/triggers/actions.

Still no luck.

Why does RM write "(Required expression is false)" at the page top, whereas in "Define Required Expression" expression evaluates to TRUE?

Would it be simpler to just use the built-in functions of the thermostat itself? It will automatically change modes when it calls for heat. Then all your rule would have to do is trigger on a change in thermostatOperatingState, kind of like this...

What do you plan on using for a real thermostat though? At some point you need a sensor in there somewhere. You could use that virtual thermostat app I mentioned but I'd also be a bit concerned causing rapid cycling of the boiler on and off...

The thermostatic radiator valves don't have this built-in function to turn on/off the boiler. This is a very common setup in EU/UK. Quoting my message from above with details on my real setup.

Righ I get that (or maybe I don't), though I am not familiar with the setup. But what's your plan for linking the valve's set point and temperature sensor (if I understand correctly it has both) to the virtual thermostat? I'm assuming the Fibaro driver presents itself to HE as a thermostat. And if you can, then just use the logic in the virtual thermostat to trigger the boiler switch logic.

The Valves heat setpoints are changed by a built-in Thermostat Scheduler Hubitat application basing on Modes set by a built-in Mode Manager Hubitat application (Morning/Day/Evening/Night/Away/etc.). The Scheduler and the Mode manager work fine, as far as I can observe.

Somewhere on your boiler connections there will be a link that if removed can have a switched link, stitched open and closed by a smart switch, that is what I have set up and shuts the boiler down at my selected temperature, the pump runs for a while after to ensure the boiler does not overheat

I think we're talking at cross-purposes here. In the screen shot you just posted there's a thermostat called "thermostat kitchen." All the thermostat scheduler does is change the setpoints of "themostat kitchen." Assuming somehow "thermostat kitchen" adjusts the setpoints of the actual "thermostatic radiator valve" (or just opens and shuts it) and the temperature sensor on the valve feeds the "thermostat kitchen" device the current temperature then the state of "thermostat kitchen" will change when the themostat calls for heat. You can use that change to trigger the boiler control rule.

@zapbust , no, there is nothing like this. Boiler can be turned on or off via Z-Wave switch (Secure SSR303 in my case), and when it is on, it heats and runs hot water trough the heating system with radiator. Boiler measures temperature of the return stream (e.g. 60C) and heats the water to desired temperature which is set from the control panel of the boiler (e.g.85C). By knowing temperature difference between inflow and desired temperature, boiler regulates how much gas does it burn to heat water, and does it on it's own, I can't control it.

There are boiler control addons for my boiler that would give you control of the boilers own control system

"All the thermostat scheduler does is change the setpoints of "themostat kitchen." Assuming somehow "thermostat kitchen" adjusts the setpoints of the actual "thermostatic radiator valve"" – Exactly that is what it does.
"(or just opens and shuts it)" – no.
"and the temperature sensor on the valve feeds the "thermostat kitchen" device the current temperature then the state of "thermostat kitchen" will change when the themostat calls for heat." – Exactly.

"You can use that change to trigger the boiler control rule." – it doesn't trigger rule run, unfortunately, as you may see from example above. I can see from the logs of TRV that reported temperature has changed, or that heat setpoint has been changed by a Mode Manager & Thermostat Scheduler, but this changes do not trigger RM rule to run.

Not really needed in my case. I just need to control boiler as a simple on/off switch. Secure SSR303 does that perfectly. Problem I'm experiencing is that the Rule Machine ignores changes of temperature and heat setpoints on thermostatic valves.

I'm not making myself clear, or maybe I misread your screen shots (or missed one). What I'm suggesting is that you NOT use comparisons of the set point to the actual temperature. Instead you let those comparisons be done by the virtual thermostat and simply turn on and off the boiler based on when the virtual thermostat calls for heat.

I just use a temperature sensor to start and stop the boiler, the hot water still works normally

Good idea. Where could I link Virtual Thermostat device to a Switch which controls my boiler?

Here is a picture of my real thermostatic valve. Buttons "Refresh" and "Set Heating Setpoint" work as expected.


Same question: where could I link Boiler switch to it? I don't see any way.

That's what I try to do – make Hubitat Rule Machine use temperature sensors of thermostatic valves in each room to turn on the boiler when temperature in any room drops below setpoint, and turn off the boiler when temperature in all rooms is above setpoints in every room.
Hot water is supplied via different pipes and flows trough boiler separately, boiler warms it separately when it detects that someone openned a hot water tap.

What make of boiler is it?

Most thermostat drivers report when the thermostat changes its current state. For instance the sttandard Hubitat driver contains a state known as "thermostatOperatingState" as seen below:

Screen Shot 2021-12-27 at 11.16.10 AM

That corresponds to a trigger in RM:

However, that state change seems to be missing from your driver:

It is possible if you just installed this driver it will show up once the thermostat calls for heat. If it does then you can use it to trigger a rule that would turn on or off the boiler. I'd still be concerned about cycling the boiler too much or turning it off when the pump still needed to run to prevent damage, but that's a subject for a qualified HVAC professional - not me.

It is Valliant ecoFIT pure 835 (link to documentation). Gas boiler with 2 contours (hot water & heating). In my setup it's heating contour on/off is controlled by the Z-Wave Secure Boiler Receiver HRT Gen5 SSR303 (one channel) (link to documentation). It only can turn on or turn off heating contour of the boiler.
There is an add-on module VR33 for my boiler which supports OpenTherm protocol to control temperature in heating and hot water contours, but it is not certified for use in UK and is irrelevant in my setup.