I have sensors on my boiler that tell me temperatures and whether the internal thermostat is ‘demanding’.
What i cannot sense is whether the boiler is actually fired up.
I want an Automation that will run 5 minutes after the internal thermostat ‘demands’ that will check the current temperature with that of 5 minutes ago and if no different set a warning flag (email or binary indicator on my dashboard or something) telling me the boiler is not working.
My question is, how can I get at the temperature 5 minutes ago?
Warming up sounds like a trend to me.
Yes, that might work.
I was hoping to do it without creating yet another Entity, but am current pursuing the Statistics entity route which is similar to the Trend.
Not sure this will help, but I hooked up a sensor directly to the burner on the boiler. A simple binary sensor tells me when (and with history_stats, for how long) the burner is firing. When I first set it up I posted about it here.
I’ve since updated that sensor; I now power a relay from the burner whose contacts connect to GPIO pins.
I think what you’re trying to do is sense that the burner has tripped (failed to fire.) So what you’re really looking for is that the controller is powering the burner, but the burning isn’t firing. So, two sensors.
In my own system, I don’t test for this. I get a notification if the boiler temperature drops below it’s lower limit set point, which will tell me pretty quickly if it’s tripped. That hasn’t happened since I started having the boiler professionally serviced annually, so I’ve never seen that notification outside of my initial testing.
Yes, I’ve sorted it now with the statistics sensor. The boiler water outflow starts to warm up pretty quickly so I’m just making sure the temp’s going up 2 minutes after the thermostat demands. That will only work if it trips on start up but not if it trips whilst running. If it does that then the demand will stay on and the temperature will drop so perhaps I’ll do another automation, like yours, looking out for that.
ATM I’m trying to sort out how to send an email to myself with the warning.
Take a look at the Alert and SMTP integrations.
I was looking at the SMTP. Set it up to send from one of my emails to another. Just put the service call in the automation that checks the boiler is warming up and bingo, working nicely.
I’ll have to think about what other emails I might want to send myself!
I had a similar issue wherein my furnace was not starting. So the thermostat would go to “heating” but the temperature would not increase. One giveaway for me was that except for when heating up in the morning, the thermostat would never demand for more than 15 minutes or so, so I triggered on demand going on for long that than. I also was able to grab the temperature at the start of the cycle, as that is included in the from_state
object.
I think that the template message (adjusted to match your entity/attributes) in this automation will provide you with the “from temperature.” I provide it with a caveat that I didn’t get past “tuning” this automation as I had the boiler fixed in a few days. That’s why all of the logic is in that message (instead of actually in the condition).
alias: Furnace Failure Detection
description: >-
checks if heater has been heating for over 30 minutes without increase in
temperature.
trigger:
- platform: state
entity_id: climate.upstairs
to: heating
for:
hours: 0
minutes: 30
seconds: 0
attribute: hvac_action
- platform: state
entity_id: climate.downstairs
to: heating
for:
hours: 0
minutes: 30
seconds: 0
attribute: hvac_action
condition: []
action:
- service: notify.mobile_app_pixel_4a
data:
message: >-
Furnace mode triggered. From temp: {{
trigger.from_state.attributes.current_temperature }} current temp: {{
state_attr(trigger.entity_id, 'current_temperature') }} template
condition: {{ state_attr(trigger.entity_id, 'current_temperature') <
trigger.from_state.attributes.current_temperature }}
mode: single
Wow, just looked up from_state and that’s lead to Trigger States which I don’t profess to understand the documentation. I’ll investigate that a bit more but I’ve got what I wanted working using the statistics entity for now.