From e147619a63f3e4b07c96a737a2a98abb49ce8c39 Mon Sep 17 00:00:00 2001 From: Matt Schmitt Date: Wed, 24 Oct 2018 07:55:03 -0400 Subject: [PATCH 1/2] Allow ability to cancel ETA --- nest/nest.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/nest/nest.py b/nest/nest.py index 5cf00dd..30ebef2 100644 --- a/nest/nest.py +++ b/nest/nest.py @@ -1526,28 +1526,38 @@ def eta_begin(self): if 'eta_begin' in self._structure: return parse_time(self._structure['eta_begin']) + def _set_eta(self, trip_id, eta_begin, eta_end): + if self.num_thermostats == 0: + raise ValueError("ETA can only be set or cancelled when a" + " thermostat is in the structure.") + if trip_id is None: + raise ValueError("trip_id must be not None") + + data = {'trip_id': trip_id, + 'estimated_arrival_window_begin': eta_begin, + 'estimated_arrival_window_end': eta_end} + self._set('structures', {'eta': data}) + def set_eta(self, trip_id, eta_begin, eta_end=None): """ Set estimated arrival winow, use same trip_id to update estimation. - Nest may choose ignore inaccurate estimation. + Nest may choose to ignore inaccurate estimation. See: https://developers.nest.com/documentation/cloud/away-guide #make_an_eta_write_call """ - if self.num_thermostats == 0: - raise ValueError("ETA can only be set when Thermostat is in the" - " structure.") - if trip_id is None: - raise ValueError("trip_id must be not None") if eta_begin is None: raise ValueError("eta_begin must be not None") if eta_end is None: # set default eta window to 1 minute eta_end = eta_begin + datetime.timedelta(0, 60) - data = {'trip_id': trip_id, - 'estimated_arrival_window_begin': eta_begin.isoformat(), - 'estimated_arrival_window_end': eta_end.isoformat()} - self._set('structures', {'eta': data}) + self._set_eta(trip_id, eta_begin.isoformat(), eta_end.isoformat()) + + def cancel_eta(self, trip_id): + """ + Cancel estimated arrival winow. + """ + self._set_eta(trip_id, int(0), datetime.datetime.now()) @property def wheres(self): From e7b8a28547e70587fc70f4d0c7a85b781c4de823 Mon Sep 17 00:00:00 2001 From: Matt Schmitt Date: Fri, 26 Oct 2018 08:09:43 -0400 Subject: [PATCH 2/2] Clean up format --- nest/nest.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nest/nest.py b/nest/nest.py index 30ebef2..a7100f8 100644 --- a/nest/nest.py +++ b/nest/nest.py @@ -1536,6 +1536,7 @@ def _set_eta(self, trip_id, eta_begin, eta_end): data = {'trip_id': trip_id, 'estimated_arrival_window_begin': eta_begin, 'estimated_arrival_window_end': eta_end} + self._set('structures', {'eta': data}) def set_eta(self, trip_id, eta_begin, eta_end=None): @@ -1548,8 +1549,7 @@ def set_eta(self, trip_id, eta_begin, eta_end=None): if eta_begin is None: raise ValueError("eta_begin must be not None") if eta_end is None: - # set default eta window to 1 minute - eta_end = eta_begin + datetime.timedelta(0, 60) + eta_end = eta_begin + datetime.timedelta(minutes=1) self._set_eta(trip_id, eta_begin.isoformat(), eta_end.isoformat()) @@ -1557,7 +1557,8 @@ def cancel_eta(self, trip_id): """ Cancel estimated arrival winow. """ - self._set_eta(trip_id, int(0), datetime.datetime.now()) + eta_end = datetime.datetime.utcnow() + self._set_eta(trip_id, int(0), eta_end.isoformat()) @property def wheres(self):