I would like to get the state of a sensor at a specific historical time. I can see it in the graph in the UI, but would like to have an automation based on this.
Example: what was the value of the sensor 3 hours ago?
Does seem like a odd use case. What automation would you want triggered specifically at a 3hr past moment in time?otherwsie historical values can be seen in the log charts, or grafana.
My use case: I have a Zigbee light that defaults to ON after every power failure. Now I want to create an Automation to switch off the light after the power failure was resolved. BUT, I only want it to happen if the light was OFF before the power failure occurred. Thus, I want to query the light’s state at the time just before the power failure occurred and if it was off, then the light must be switched off by the automation.
You can use an “input select” for this, without the query:
Set the value, “on”, “off”, “dimmed” or whatever, based on events and create an automation that triggers on change of the “input select” and sets e.g. scenes.
When the power is back on again execute the automation and you’re good.
Also handy when you want to activate another scene temporarily, e.g. as action on a motion event and go back to the previous state after.
Thought i would add my use case for being able to retrieve a historic sensor value: i have a humidty sensor in my shower. When the humidity spikes at a certain rate, i assume the shower is being used, and switch the air ventilation system to a higher value. I would like to be able to retrieve the value of the humidity sensor just before the spike starts, so that when the value drops to (close to that) pre-spike-value, i switch the air ventilation back to a lower gear. I now have it run 30 minutes at the high capacity, but maybe often times that is too long, wasting energy, or maybe sometimes it is to short.
Make it 5 now. I’m seeing an errant value being displayed in a historical graph and the manufacturer wants ME to dig up the discrete value to prove it’s their problem, not an HA problem.
Another use case would be to notify me if my propane tank got filled.
If sensor.propane(-15min) - sensor.propane(-2hr) > 25 then send notification
I don’t want an alert to be sent when my propane goes from 25% to 50%, I want an alert sent once my propane guy is done filling the tank (which he will fill to 80%), hence historical values would be valuable.
Here is my use case. I use a Shelly EM to monitor power usage in my home. When I run the dishwasher I see a distinct pattern in power usage. It looks like this:
My plan is to be able to reference the old data points near specific time intervals (like comparing the values 15, 17, 19 minutes ago with a threshold of 2000), and other values with a threshold of lower than 2000, and declare that the dishwasher cycle is complete and fire a notification. (basically validate that the pattern has happened).
I see that a possible solution would be to use an SQL sensor (Sensor state 24 h ago - #2 by MaxK), but that means creating a bunch of extra sensors, that in turn create noise in the database, and it’s less than ideal.
@Troon thank you for that link! I’m amazed that works
I’ve implemented it into a template binary sensor that looks like this:
{% if state_attr('sensor.power_meter_channel_0_history', "min14") > 2000 and state_attr('sensor.power_meter_channel_0_history', "min16") < 2000 and state_attr('sensor.power_meter_channel_0_history', "min18") > 2000 and state_attr('sensor.power_meter_channel_0_history', "min20") < 2000 and state_attr('sensor.power_meter_channel_0_history', "min22") > 2000 and state_attr('sensor.power_meter_channel_0_history', "min30") < 2000 %}
On
{% else %}
Off
{%endif%}
Now I’ll have to run the dishwasher and see if I got it right, and fire a notification based off it.
@raoul.teeuwen I know about that approach, but it seems wasteful to use a dedicated power sensor when my appliance has a particular power usage pattern. Since power spikes to > 2KW (and other things around the house don’t - including 2 ACs), I thought I could look for that pattern without additional hardware. Also, I’m not interested in following the appliance cycle (idle/running/finished), I just want to know when it’s finished.
I’d like my sunscreens to open automatically when rain is imminent. The buienradar_condition sensor will give me that information (state will be: rainy, snowy or lightning), but I’d like to look ahead a couple of minutes to give the screens some time to actually open.
Also, since that sensor does not contain the previous value, I’d like to look back in time to see if the value has actually changed. Now I’m using a helper to store the previous state data, which obviously works but it is not a very elegant solution.
And I’m using NodeRED for all automations, so it’d be nice if there was a way to get that value a using one of the HA nodes.
Apparently NodeRED has a Get History node that lets you retrieve historical data from an entity, either in a range or a relative time period. It does not appear to let you have a look into future data (like a forecast), nor will it give you the value at a certain point in time.