carconnectivity-connector-skoda 0.3__tar.gz → 0.4a2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of carconnectivity-connector-skoda might be problematic. Click here for more details.
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/PKG-INFO +2 -2
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/pyproject.toml +1 -1
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connector_skoda.egg-info/PKG-INFO +2 -2
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connector_skoda.egg-info/requires.txt +1 -1
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/_version.py +9 -4
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/climatization.py +8 -6
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/connector.py +49 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/vehicle.py +2 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.flake8 +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.github/dependabot.yml +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.github/workflows/build.yml +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.github/workflows/build_and_publish.yml +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.github/workflows/codeql-analysis.yml +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.gitignore +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/CHANGELOG.md +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/LICENSE +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/Makefile +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/README.md +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/doc/Config.md +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/setup.cfg +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/setup_requirements.txt +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connector_skoda.egg-info/SOURCES.txt +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connector_skoda.egg-info/dependency_links.txt +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connector_skoda.egg-info/top_level.txt +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/__init__.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/auth/__init__.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/auth/auth_util.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/auth/helpers/blacklist_retry.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/auth/my_skoda_session.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/auth/openid_session.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/auth/session_manager.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/auth/skoda_web_session.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/capability.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/charging.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/command_impl.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/error.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/mqtt_client.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/src/carconnectivity_connectors/skoda/ui/connector_ui.py +0 -0
- {carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/test/integration_test/carConnectivity.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: carconnectivity-connector-skoda
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4a2
|
|
4
4
|
Summary: CarConnectivity connector for Skoda services
|
|
5
5
|
Author: Till Steinbach
|
|
6
6
|
License: MIT License
|
|
@@ -37,7 +37,7 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
37
37
|
Requires-Python: >=3.8
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
39
39
|
License-File: LICENSE
|
|
40
|
-
Requires-Dist: carconnectivity>=0.
|
|
40
|
+
Requires-Dist: carconnectivity>=0.4a4
|
|
41
41
|
Requires-Dist: oauthlib~=3.2.2
|
|
42
42
|
Requires-Dist: requests~=2.32.3
|
|
43
43
|
Requires-Dist: jwt~=1.3.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: carconnectivity-connector-skoda
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4a2
|
|
4
4
|
Summary: CarConnectivity connector for Skoda services
|
|
5
5
|
Author: Till Steinbach
|
|
6
6
|
License: MIT License
|
|
@@ -37,7 +37,7 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
37
37
|
Requires-Python: >=3.8
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
39
39
|
License-File: LICENSE
|
|
40
|
-
Requires-Dist: carconnectivity>=0.
|
|
40
|
+
Requires-Dist: carconnectivity>=0.4a4
|
|
41
41
|
Requires-Dist: oauthlib~=3.2.2
|
|
42
42
|
Requires-Dist: requests~=2.32.3
|
|
43
43
|
Requires-Dist: jwt~=1.3.1
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
# file generated by
|
|
1
|
+
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
|
+
|
|
4
|
+
__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
|
|
5
|
+
|
|
3
6
|
TYPE_CHECKING = False
|
|
4
7
|
if TYPE_CHECKING:
|
|
5
|
-
from typing import Tuple
|
|
8
|
+
from typing import Tuple
|
|
9
|
+
from typing import Union
|
|
10
|
+
|
|
6
11
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
7
12
|
else:
|
|
8
13
|
VERSION_TUPLE = object
|
|
@@ -12,5 +17,5 @@ __version__: str
|
|
|
12
17
|
__version_tuple__: VERSION_TUPLE
|
|
13
18
|
version_tuple: VERSION_TUPLE
|
|
14
19
|
|
|
15
|
-
__version__ = version = '0.
|
|
16
|
-
__version_tuple__ = version_tuple = (0,
|
|
20
|
+
__version__ = version = '0.4a2'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 4)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Module for
|
|
2
|
+
Module for climatization for skoda vehicles.
|
|
3
3
|
"""
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
7
|
from carconnectivity.climatization import Climatization
|
|
8
8
|
from carconnectivity.objects import GenericObject
|
|
9
|
-
from carconnectivity.vehicle import
|
|
9
|
+
from carconnectivity.vehicle import GenericVehicle
|
|
10
10
|
|
|
11
11
|
from carconnectivity_connectors.skoda.error import Error
|
|
12
12
|
|
|
@@ -21,13 +21,15 @@ class SkodaClimatization(Climatization): # pylint: disable=too-many-instance-at
|
|
|
21
21
|
This class extends the Climatization class and includes an enumeration of various
|
|
22
22
|
charging states specific to Skoda vehicles.
|
|
23
23
|
"""
|
|
24
|
-
def __init__(self, vehicle:
|
|
24
|
+
def __init__(self, vehicle: GenericVehicle | None = None, origin: Optional[Climatization] = None) -> None:
|
|
25
25
|
if origin is not None:
|
|
26
26
|
super().__init__(origin=origin)
|
|
27
|
-
self.settings
|
|
27
|
+
if not isinstance(self.settings, SkodaClimatization.Settings):
|
|
28
|
+
self.settings: Climatization.Settings = SkodaClimatization.Settings(parent=self, origin=origin.settings)
|
|
29
|
+
self.settings.parent = self
|
|
28
30
|
else:
|
|
29
31
|
super().__init__(vehicle=vehicle)
|
|
30
|
-
self.settings: Climatization.Settings = SkodaClimatization.Settings(
|
|
32
|
+
self.settings: Climatization.Settings = SkodaClimatization.Settings(parent=self)
|
|
31
33
|
self.errors: Dict[str, Error] = {}
|
|
32
34
|
|
|
33
35
|
class Settings(Climatization.Settings):
|
|
@@ -36,6 +38,6 @@ class SkodaClimatization(Climatization): # pylint: disable=too-many-instance-at
|
|
|
36
38
|
"""
|
|
37
39
|
def __init__(self, parent: Optional[GenericObject] = None, origin: Optional[Climatization.Settings] = None) -> None:
|
|
38
40
|
if origin is not None:
|
|
39
|
-
super().__init__(origin=origin)
|
|
41
|
+
super().__init__(parent=parent, origin=origin)
|
|
40
42
|
else:
|
|
41
43
|
super().__init__(parent=parent)
|
|
@@ -345,6 +345,8 @@ class Connector(BaseConnector):
|
|
|
345
345
|
vehicle_to_update = self.fetch_charging(vehicle_to_update)
|
|
346
346
|
if vehicle_to_update.capabilities.has_capability('AIR_CONDITIONING'):
|
|
347
347
|
vehicle_to_update = self.fetch_air_conditioning(vehicle_to_update)
|
|
348
|
+
if vehicle_to_update.capabilities.has_capability('VEHICLE_HEALTH_INSPECTION'):
|
|
349
|
+
vehicle_to_update = self.fetch_maintenance(vehicle_to_update)
|
|
348
350
|
|
|
349
351
|
def fetch_charging(self, vehicle: SkodaElectricVehicle, no_cache: bool = False) -> SkodaElectricVehicle:
|
|
350
352
|
"""
|
|
@@ -608,6 +610,53 @@ class Connector(BaseConnector):
|
|
|
608
610
|
vehicle.position.position_type._set_value(None) # pylint: disable=protected-access
|
|
609
611
|
return vehicle
|
|
610
612
|
|
|
613
|
+
def fetch_maintenance(self, vehicle: SkodaVehicle, no_cache: bool = False) -> SkodaVehicle:
|
|
614
|
+
"""
|
|
615
|
+
Fetches the maintenance information for a given Skoda vehicle.
|
|
616
|
+
|
|
617
|
+
Args:
|
|
618
|
+
vehicle (SkodaVehicle): The vehicle object for which maintenance information is to be fetched.
|
|
619
|
+
no_cache (bool, optional): If True, bypasses the cache and fetches fresh data. Defaults to False.
|
|
620
|
+
|
|
621
|
+
Returns:
|
|
622
|
+
SkodaVehicle: The vehicle object with updated maintenance information.
|
|
623
|
+
|
|
624
|
+
Raises:
|
|
625
|
+
APIError: If the VIN is missing or if the 'capturedAt' field is missing in the fetched data.
|
|
626
|
+
ValueError: If the vehicle has no charging object.
|
|
627
|
+
"""
|
|
628
|
+
vin = vehicle.vin.value
|
|
629
|
+
if vin is None:
|
|
630
|
+
raise APIError('VIN is missing')
|
|
631
|
+
if vehicle.position is None:
|
|
632
|
+
raise ValueError('Vehicle has no charging object')
|
|
633
|
+
url = f'https://mysmob.api.connect.skoda-auto.cz/api/v3/vehicle-maintenance/vehicles/{vin}/report'
|
|
634
|
+
data: Dict[str, Any] | None = self._fetch_data(url=url, session=self.session, no_cache=no_cache)
|
|
635
|
+
#{'capturedAt': '2025-02-24T19:54:32.728Z', 'inspectionDueInDays': 620, 'mileageInKm': 2512}
|
|
636
|
+
if data is not None:
|
|
637
|
+
if 'capturedAt' in data and data['capturedAt'] is not None:
|
|
638
|
+
captured_at: datetime = robust_time_parse(data['capturedAt'])
|
|
639
|
+
else:
|
|
640
|
+
raise APIError('Could not fetch maintenance, capturedAt missing')
|
|
641
|
+
if 'mileageInKm' in data and data['mileageInKm'] is not None:
|
|
642
|
+
vehicle.odometer._set_value(value=data['mileageInKm'], measured=captured_at, unit=Length.KM) # pylint: disable=protected-access
|
|
643
|
+
else:
|
|
644
|
+
vehicle.odometer._set_value(None) # pylint: disable=protected-access
|
|
645
|
+
if 'inspectionDueInDays' in data and data['inspectionDueInDays'] is not None:
|
|
646
|
+
inspection_due: timedelta = timedelta(days=data['inspectionDueInDays'])
|
|
647
|
+
inspection_date: datetime = captured_at + inspection_due
|
|
648
|
+
inspection_date = inspection_date.replace(hour=0, minute=0, second=0, microsecond=0)
|
|
649
|
+
# pylint: disable-next=protected-access
|
|
650
|
+
vehicle.maintenance.inspection_due_at._set_value(value=inspection_date, measured=captured_at)
|
|
651
|
+
else:
|
|
652
|
+
vehicle.maintenance.inspection_due_at._set_value(None) # pylint: disable=protected-access
|
|
653
|
+
log_extra_keys(LOG_API, 'maintenance', data, {'capturedAt', 'mileageInKm', 'inspectionDueInDays'})
|
|
654
|
+
|
|
655
|
+
#url = f'https://mysmob.api.connect.skoda-auto.cz/api/v1/vehicle-health-report/warning-lights/{vin}'
|
|
656
|
+
#data: Dict[str, Any] | None = self._fetch_data(url=url, session=self.session, no_cache=no_cache)
|
|
657
|
+
#{'capturedAt': '2025-02-24T15:32:35.032Z', 'mileageInKm': 2512, 'warningLights': [{'category': 'ASSISTANCE', 'defects': []}, {'category': 'COMFORT', 'defects': []}, {'category': 'BRAKE', 'defects': []}, {'category': 'ELECTRIC_ENGINE', 'defects': []}, {'category': 'LIGHTING', 'defects': []}, {'category': 'TIRE', 'defects': []}, {'category': 'OTHER', 'defects': []}]}
|
|
658
|
+
return vehicle
|
|
659
|
+
|
|
611
660
|
def fetch_air_conditioning(self, vehicle: SkodaVehicle, no_cache: bool = False) -> SkodaVehicle:
|
|
612
661
|
"""
|
|
613
662
|
Fetches the air conditioning data for a given Skoda vehicle and updates the vehicle object with the retrieved data.
|
|
@@ -7,6 +7,7 @@ from carconnectivity.charging import Charging
|
|
|
7
7
|
|
|
8
8
|
from carconnectivity_connectors.skoda.capability import Capabilities
|
|
9
9
|
from carconnectivity_connectors.skoda.charging import SkodaCharging
|
|
10
|
+
from carconnectivity_connectors.skoda.climatization import SkodaClimatization
|
|
10
11
|
|
|
11
12
|
SUPPORT_IMAGES = False
|
|
12
13
|
try:
|
|
@@ -36,6 +37,7 @@ class SkodaVehicle(GenericVehicle): # pylint: disable=too-many-instance-attribu
|
|
|
36
37
|
|
|
37
38
|
else:
|
|
38
39
|
super().__init__(vin=vin, garage=garage, managing_connector=managing_connector)
|
|
40
|
+
self.climatization = SkodaClimatization(vehicle=self, origin=self.climatization)
|
|
39
41
|
self.capabilities = Capabilities(vehicle=self)
|
|
40
42
|
if SUPPORT_IMAGES:
|
|
41
43
|
self._car_images: Dict[str, Image.Image] = {}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/.github/dependabot.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carconnectivity_connector_skoda-0.3 → carconnectivity_connector_skoda-0.4a2}/setup_requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|