Skip to content

Commit

Permalink
Adding checks for valid vehicle data before updating values
Browse files Browse the repository at this point in the history
  • Loading branch information
alandtse committed Jan 28, 2018
1 parent 7d6a8aa commit f8012af
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 33 deletions.
5 changes: 3 additions & 2 deletions teslajsonpy/BatterySensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ def __init__(self, data, controller):
def update(self):
self._controller.update(self._id)
data = self._controller.get_charging_params(self._id)
self.__battery_level = data['battery_level']
self.__charging_state = data['charging_state']
if data:
self.__battery_level = data['battery_level']
self.__charging_state = data['charging_state']

@staticmethod
def has_battery():
Expand Down
18 changes: 10 additions & 8 deletions teslajsonpy/BinarySensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ def __init__(self, data, controller):
def update(self):
self._controller.update(self._id)
data = self._controller.get_drive_params(self._id)
if not data['shift_state'] or data['shift_state'] == 'P':
self.__state = True
else:
self.__state = False
if data:
if not data['shift_state'] or data['shift_state'] == 'P':
self.__state = True
else:
self.__state = False

def get_value(self):
return self.__state
Expand All @@ -46,10 +47,11 @@ def __init__(self, data, controller):
def update(self):
self._controller.update(self._id)
data = self._controller.get_charging_params(self._id)
if data['charging_state'] in ["Disconnected", "Stopped", "NoPower"]:
self.__state = False
else:
self.__state = True
if data:
if data['charging_state'] in ["Disconnected", "Stopped", "NoPower"]:
self.__state = False
else:
self.__state = True

def get_value(self):
return self.__state
Expand Down
2 changes: 1 addition & 1 deletion teslajsonpy/Charger.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def __init__(self, data, controller):
def update(self):
self._controller.update(self._id)
data = self._controller.get_charging_params(self._id)
if time.time() - self.__manual_update_time > 60:
if data and (time.time() - self.__manual_update_time > 60):
if data['charging_state'] != "Charging":
self.__charger_state = False
else:
Expand Down
26 changes: 14 additions & 12 deletions teslajsonpy/Climate.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,17 @@ def update(self):
self._controller.update(self._id)

data = self._controller.get_climate_params(self._id)
if time.time() - self.__manual_update_time > 60:
self.__is_auto_conditioning_on = data['is_auto_conditioning_on']
self.__is_climate_on = data['is_climate_on']
self.__driver_temp_setting = data['driver_temp_setting'] \
if data['driver_temp_setting'] else self.__driver_temp_setting
self.__passenger_temp_setting = data['passenger_temp_setting'] \
if data['passenger_temp_setting'] else self.__passenger_temp_setting
self.__inside_temp = data['inside_temp'] if data['inside_temp'] else self.__inside_temp
self.__outside_temp = data['outside_temp'] if data['outside_temp'] else self.__outside_temp
self.__fan_status = data['fan_status']
if data:
if time.time() - self.__manual_update_time > 60:
self.__is_auto_conditioning_on = data['is_auto_conditioning_on']
self.__is_climate_on = data['is_climate_on']
self.__driver_temp_setting = data['driver_temp_setting'] \
if data['driver_temp_setting'] else self.__driver_temp_setting
self.__passenger_temp_setting = data['passenger_temp_setting'] \
if data['passenger_temp_setting'] else self.__passenger_temp_setting
self.__inside_temp = data['inside_temp'] if data['inside_temp'] else self.__inside_temp
self.__outside_temp = data['outside_temp'] if data['outside_temp'] else self.__outside_temp
self.__fan_status = data['fan_status']

def set_temperature(self, temp):
temp = round(temp, 1)
Expand Down Expand Up @@ -102,8 +103,9 @@ def get_outside_temp(self):
def update(self):
self._controller.update(self._id)
data = self._controller.get_climate_params(self._id)
self.__inside_temp = data['inside_temp'] if data['inside_temp'] else self.__inside_temp
self.__outside_temp = data['outside_temp'] if data['outside_temp'] else self.__outside_temp
if data:
self.__inside_temp = data['inside_temp'] if data['inside_temp'] else self.__inside_temp
self.__outside_temp = data['outside_temp'] if data['outside_temp'] else self.__outside_temp

@staticmethod
def has_battery():
Expand Down
7 changes: 4 additions & 3 deletions teslajsonpy/GPS.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ def get_location(self):
def update(self):
self._controller.update(self._id)
data = self._controller.get_drive_params(self._id)
self.__longitude = data['longitude']
self.__latitude = data['latitude']
self.__heading = data['heading']
if data:
self.__longitude = data['longitude']
self.__latitude = data['latitude']
self.__heading = data['heading']
if data['latitude'] and data['longitude'] and data['heading']:
self.__location = {'longitude': self.__longitude,
'latitude': self.__latitude,
Expand Down
2 changes: 1 addition & 1 deletion teslajsonpy/Lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def __init__(self, data, controller):
def update(self):
self._controller.update(self._id)
data = self._controller.get_state_params(self._id)
if time.time() - self.__manual_update_time > 60:
if data and (time.time() - self.__manual_update_time > 60):
self.__lock_state = data['locked']

def lock(self):
Expand Down
17 changes: 11 additions & 6 deletions teslajsonpy/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,18 @@ def update(self, car_id):
with self.__lock:
if cur_time - self.__last_update_time[car_id] > self.update_interval:
self.wake_up(car_id)
data = self.get(car_id, 'data')['response']
if data:
self.__climate[car_id] = data['climate_state']
self.__charging[car_id] = data['charge_state']
self.__state[car_id] = data['vehicle_state']
self.__driving[car_id] = data['drive_state']
data = self.get(car_id, 'data')
if data and data['response']:
self.__climate[car_id] = data['response']['climate_state']
self.__charging[car_id] = data['response']['charge_state']
self.__state[car_id] = data['response']['vehicle_state']
self.__driving[car_id] = data['response']['drive_state']
self.__last_update_time[car_id] = time.time()
else:
self.__climate[car_id] = False
self.__charging[car_id] = False
self.__state[car_id] = False
self.__driving[car_id] = False

def get_climate_params(self, car_id):
return self.__climate[car_id]
Expand Down

0 comments on commit f8012af

Please sign in to comment.