Skip to content

Commit

Permalink
Merge pull request #105 from zabuldon/dev
Browse files Browse the repository at this point in the history
2020-07-28
  • Loading branch information
alandtse committed Jul 29, 2020
2 parents 555a2f5 + a397af1 commit ff7bdd3
Show file tree
Hide file tree
Showing 33 changed files with 256 additions and 87 deletions.
22 changes: 12 additions & 10 deletions teslajsonpy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,21 @@
For more details about this api, please refer to the documentation at
https://github.com/zabuldon/teslajsonpy
"""
from teslajsonpy.battery_sensor import Battery, Range
from teslajsonpy.binary_sensor import (
from teslajsonpy.controller import Controller
from teslajsonpy.exceptions import TeslaException, UnknownPresetMode
from teslajsonpy.homeassistant.battery_sensor import Battery, Range
from teslajsonpy.homeassistant.binary_sensor import (
ChargerConnectionSensor,
OnlineSensor,
ParkingSensor,
UpdateSensor,
)
from teslajsonpy.charger import ChargerSwitch, ChargingSensor, RangeSwitch
from teslajsonpy.climate import Climate, TempSensor
from teslajsonpy.controller import Controller
from teslajsonpy.exceptions import TeslaException, UnknownPresetMode
from teslajsonpy.gps import GPS, Odometer
from teslajsonpy.lock import Lock
from teslajsonpy.sentry_mode import SentryModeSwitch
from teslajsonpy.trunk import TrunkLock, FrunkLock
from teslajsonpy.homeassistant.charger import ChargerSwitch, ChargingSensor, RangeSwitch
from teslajsonpy.homeassistant.climate import Climate, TempSensor
from teslajsonpy.homeassistant.gps import GPS, Odometer
from teslajsonpy.homeassistant.lock import Lock
from teslajsonpy.homeassistant.sentry_mode import SentryModeSwitch
from teslajsonpy.homeassistant.trunk import FrunkLock, TrunkLock

from .__version__ import __version__

Expand All @@ -29,6 +30,7 @@
"ChargingSensor",
"OnlineSensor",
"ParkingSensor",
"UpdateSensor",
"ChargerSwitch",
"RangeSwitch",
"Climate",
Expand Down
2 changes: 1 addition & 1 deletion teslajsonpy/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
import aiohttp
from yarl import URL

from teslajsonpy.exceptions import IncompleteCredentials, TeslaException
from teslajsonpy.const import DRIVING_INTERVAL, WEBSOCKET_TIMEOUT
from teslajsonpy.exceptions import IncompleteCredentials, TeslaException

_LOGGER = logging.getLogger(__name__)

Expand Down
28 changes: 14 additions & 14 deletions teslajsonpy/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,10 @@
import time
from typing import Callable, Optional, Text, Tuple

from aiohttp import ClientConnectorError
import backoff
import wrapt
from aiohttp import ClientConnectorError

from teslajsonpy.battery_sensor import Battery, Range
from teslajsonpy.binary_sensor import (
ChargerConnectionSensor,
OnlineSensor,
ParkingSensor,
UpdateSensor,
)
from teslajsonpy.charger import ChargerSwitch, ChargingSensor, RangeSwitch
from teslajsonpy.climate import Climate, TempSensor
from teslajsonpy.connection import Connection
from teslajsonpy.const import (
DRIVING_INTERVAL,
Expand All @@ -31,10 +22,19 @@
SLEEP_INTERVAL,
)
from teslajsonpy.exceptions import RetryLimitError, TeslaException
from teslajsonpy.gps import GPS, Odometer
from teslajsonpy.lock import ChargerLock, Lock
from teslajsonpy.sentry_mode import SentryModeSwitch
from teslajsonpy.trunk import TrunkLock, FrunkLock
from teslajsonpy.homeassistant.battery_sensor import Battery, Range
from teslajsonpy.homeassistant.binary_sensor import (
ChargerConnectionSensor,
OnlineSensor,
ParkingSensor,
UpdateSensor,
)
from teslajsonpy.homeassistant.charger import ChargerSwitch, ChargingSensor, RangeSwitch
from teslajsonpy.homeassistant.climate import Climate, TempSensor
from teslajsonpy.homeassistant.gps import GPS, Odometer
from teslajsonpy.homeassistant.lock import ChargerLock, Lock
from teslajsonpy.homeassistant.sentry_mode import SentryModeSwitch
from teslajsonpy.homeassistant.trunk import FrunkLock, TrunkLock

_LOGGER = logging.getLogger(__name__)

Expand Down
6 changes: 6 additions & 0 deletions teslajsonpy/homeassistant/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
"""
Python Package for controlling Tesla API.
For more details about this api, please refer to the documentation at
https://github.com/zabuldon/teslajsonpy
"""
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"""
from typing import Dict, Optional, Text

from teslajsonpy.vehicle import VehicleDevice
from teslajsonpy.homeassistant.vehicle import VehicleDevice


class Battery(VehicleDevice):
Expand Down Expand Up @@ -37,6 +37,14 @@ def __init__(self, data: Dict, controller) -> None:
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the battery state."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_charging_params(self._id)
if data:
self.__battery_level = data["battery_level"]
Expand Down Expand Up @@ -100,6 +108,14 @@ def __init__(self, data: Dict, controller) -> None:
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the battery range state."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_charging_params(self._id)
if data:
self.__battery_range = data["battery_range"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
"""
from typing import Dict, Optional, Text

from teslajsonpy.vehicle import VehicleDevice
from teslajsonpy.const import RELEASE_NOTES_URL
from teslajsonpy.homeassistant.vehicle import VehicleDevice


class BinarySensor(VehicleDevice):
Expand Down Expand Up @@ -94,6 +94,14 @@ def __init__(self, data: Dict, controller):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the parking brake sensor."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_drive_params(self._id)
if data:
self.attrs["shift_state"] = (
Expand Down Expand Up @@ -142,6 +150,14 @@ def __init__(self, data, controller):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the charger connection sensor."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_charging_params(self._id)
if data:
self.attrs["charging_state"] = data["charging_state"]
Expand Down Expand Up @@ -182,6 +198,14 @@ def __init__(self, data: Dict, controller) -> None:
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the battery state."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
self.__online_state = self._controller.car_online[self._vin]
self.attrs["state"] = self._controller.car_state[self._vin].get("state")

Expand Down Expand Up @@ -211,6 +235,14 @@ def __init__(self, data: Dict, controller) -> None:
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the battery state."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
self.attrs = (
self.device_state_attributes.copy() if self.device_state_attributes else {}
)
Expand Down
26 changes: 25 additions & 1 deletion teslajsonpy/charger.py → teslajsonpy/homeassistant/charger.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import time
from typing import Dict, Optional, Text

from teslajsonpy.vehicle import VehicleDevice
from teslajsonpy.homeassistant.vehicle import VehicleDevice


class ChargerSwitch(VehicleDevice):
Expand Down Expand Up @@ -42,6 +42,14 @@ def __init__(self, data, controller):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the charging state of the Tesla Vehicle."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
last_update = self._controller.get_last_update_time(self._id)
if last_update >= self.__manual_update_time:
data = self._controller.get_charging_params(self._id)
Expand Down Expand Up @@ -97,6 +105,14 @@ def __init__(self, data, controller):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the status of the range setting."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
last_update = self._controller.get_last_update_time(self._id)
if last_update >= self.__manual_update_time:
data = self._controller.get_charging_params(self._id)
Expand Down Expand Up @@ -165,6 +181,14 @@ def __init__(self, data: Dict, controller) -> None:
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the battery state."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_gui_params(self._id)
if data:
self.measurement = data["gui_distance_units"]
Expand Down
18 changes: 17 additions & 1 deletion teslajsonpy/climate.py → teslajsonpy/homeassistant/climate.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import time
from typing import List, Optional, Text

from teslajsonpy.vehicle import VehicleDevice
from teslajsonpy.exceptions import UnknownPresetMode
from teslajsonpy.homeassistant.vehicle import VehicleDevice


class Climate(VehicleDevice):
Expand Down Expand Up @@ -75,6 +75,14 @@ def get_fan_status(self):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the HVAC state."""
await super().async_update(wake_if_asleep=wake_if_asleep, force=force)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_climate_params(self._id)
if data:
last_update = self._controller.get_last_update_time(self._id)
Expand Down Expand Up @@ -222,6 +230,14 @@ def get_outside_temp(self):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the temperature."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_climate_params(self._id)
if data:
self.__inside_temp = (
Expand Down
18 changes: 17 additions & 1 deletion teslajsonpy/gps.py → teslajsonpy/homeassistant/gps.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"""
from typing import Optional, Text

from teslajsonpy.vehicle import VehicleDevice
from teslajsonpy.homeassistant.vehicle import VehicleDevice


class GPS(VehicleDevice):
Expand Down Expand Up @@ -60,6 +60,14 @@ def get_location(self):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the current GPS location."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_drive_params(self._id)
if data:
if data["native_location_supported"]:
Expand Down Expand Up @@ -115,6 +123,14 @@ def __init__(self, data, controller):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the odometer and the unit of measurement based on GUI."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
data = self._controller.get_state_params(self._id)
if data:
self.__odometer = data["odometer"]
Expand Down
18 changes: 17 additions & 1 deletion teslajsonpy/lock.py → teslajsonpy/homeassistant/lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"""
import time

from teslajsonpy.vehicle import VehicleDevice
from teslajsonpy.homeassistant.vehicle import VehicleDevice


class Lock(VehicleDevice):
Expand Down Expand Up @@ -47,6 +47,14 @@ def __init__(self, data, controller):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update the lock state."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
last_update = self._controller.get_last_update_time(self._id)
if last_update >= self.__manual_update_time:
data = self._controller.get_state_params(self._id)
Expand Down Expand Up @@ -117,6 +125,14 @@ def __init__(self, data, controller):
async def async_update(self, wake_if_asleep=False, force=False) -> None:
"""Update state of the charger lock."""
await super().async_update(wake_if_asleep=wake_if_asleep)
self.refresh()

def refresh(self) -> None:
"""Refresh data.
This assumes the controller has already been updated
"""
super().refresh()
last_update = self._controller.get_last_update_time(self._id)
if last_update >= self.__manual_update_time:
data = self._controller.get_charging_params(self._id)
Expand Down
Loading

0 comments on commit ff7bdd3

Please sign in to comment.