I’d like to set, and update, my nest thermostat ETA. The best/only information I have found about this is this bug report. However, I am unable to translate any info there into actual parameters to send in a service, or even how to call the service itself.
Total guesswork from reading the changes to the files in the Pr’s…
automation:
alias: Test modify eta
trigger:
platform: state
entity_id: input_boolean.test
to: 'on'
action:
service: climate.set_eta
data:
entity_id: climate.YOUR _NEST
eta: '00:10:00'
Try that first.
If the configuration does not validate, post the error.
If it does, try running the automation (you’ll either need to add an input boolean called test or use a different trigger). If it works, ace. If not then post the logs
OK I tried putting it in the config. Config validates just fine. But, I tried 3 different ways. Here’s the log messages from all 3.
2019-01-01 11:31:00 WARNING (MainThread) [homeassistant.core] Unable to find service climate/set_eta
2019-01-01 11:31:10 ERROR (MainThread) [homeassistant.core] Invalid service data for climate.set_away_mode: extra keys not allowed @ data['eta']. Got '00:10:00'
invalid boolean value away for dictionary value @ data['away_mode']. Got 'away'
2019-01-01 11:31:57 ERROR (MainThread) [homeassistant.core] Invalid service data for climate.set_away_mode: extra keys not allowed @ data['set_eta']. Got '00:10:00'
invalid boolean value away for dictionary value @ data['away_mode']. Got 'away'
This appears to have functioned, although the nest sensor still reports epoch time for the eta sensor. I don’t have another way to check what nest really thinks right now, though I may write up a REST call later to check it. At any rate it hasn’t started warming up yet. We’ll see.
Turns out that when I re-authenticated my nest to get the permissions it made a second nest ‘integration’ with _2 in the name. I got the new one back to the original name and it was updating again. The thermostat did turn on but definitely did not meet the eta, but that’s a Nest problem now.
And now I don’t know how to cancel it either. The home-assistant nest docs said to use service “set_eta” and “cancel_eta” and neither work. Instead service “set_mode” works to set the eta. But how to cancel…
Yeah, it looks like the docs don’t support the python code, and the python code is too complicated for me to get to the bottom of what it should be (albeit it certainly looks like it should be climate.set_eta and climate.cancel_eta in the code too, so maybe the docs are right for what it should be, but it’s not working for some other reason).
I think the only way to get to the bottom of this is going to be to submit a bug report with your experience and expectations and see what the devs make of it
@vontrapp Did you ever get this working? I’m using the below service call and the ETA is set successful as I can see the sensor updated in HA. It’s in UTC time I believe. However, my system does not ever change from away mode to home unless done manually, or I arrive to a cold house and it then it kicks on.
nest.set_eta { "eta" : "06:00:00"}
The above example should set the ETA to 6 hours from the current time and start heating the house appropriately to reach the set time when I arrive in 6 hours as I understand.
Yes I did get hass to update the eta, at least as reported again by hass. I have found no way to verify directly with nest that it has an eta set, but I assume hass is getting the now set eta from nest.
However, like you, it doesn’t seem to start heating soon enough to meet the ETA. I did read on some nest documentation that it wants you to keep updating the eta so it has “confidence” on when to start heating.
Now I think I want to set an ETA value that hass stores, and a cron job/script to send that same eta to nest so long as it is in the future.
I experience the same thing. Created a script to set my Nest ETA to one hour from now, but Nest doesn’t start pre-heating for my arrival at the end of that hour.
Having the same issue where ETA doesn’t work. Seems to me to be a time zone thing, as the state returns a value that is several hours off. Any idea on how to modify the time zone?