I think the issue is that the trigger is looking for a report from the Heat setpoint of Thermostat to evaluate the condition. Even though the Thermostat temperature is changing the trigger isn't re-evaluated since the setpoint hasn't changed. I'm not sure if you can reverse the logic so you may need to put the setpoint into a variable for a < comparison to be made.
Sorry, I tried what you did after I posted and saw the same issue. I updated my post to suggest using a variable for the setpoint. I can post a rule if that's helpful.
Yes I was hoping to avoid the needless complexity, but I will give it a go. You're quite right about the "reports" not updating, that was an oversight by me.
It seems this is a feature gap. We should probably be able to compare to device attributes.
Trying this now, with a separate rule that updates HVACCurrentHeatSetpoint variable when the Thermostat setpoint changes.
I think the initial premise was not correct. What was needed is to know if the temperature of the space being heated is remaining below the thermostat setpoint for longer than one hour. The thermostat setpoint is not going to change so there is nothing to be evaluated. You would need another sensor such as a motion sensor that also reports temperature. You could use the temperature of that sensor to evaluate whether it is staying below the thermostat setpoint for > 1 hour. If so, then it could trigger a message to you.
That's what the OP is trying to do. They're comparing the set point on the thermostat to the reported temperature of the thermostat. The initial rule didn't work because it was dependent on the setpoint changing which didn't. The reported temperature did.
Still seems like maybe the comparison triggers should be subscribing to events from both attributes instead of just the one on the left.