carconnectivity-connector-skoda 0.4a4__tar.gz → 0.4a5__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.4a4 → carconnectivity_connector_skoda-0.4a5}/PKG-INFO +2 -2
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/pyproject.toml +1 -1
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/PKG-INFO +2 -2
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/requires.txt +1 -1
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/_version.py +1 -1
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/connector.py +26 -2
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.flake8 +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/dependabot.yml +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/workflows/build.yml +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/workflows/build_and_publish.yml +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/workflows/codeql-analysis.yml +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.gitignore +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/CHANGELOG.md +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/LICENSE +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/Makefile +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/README.md +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/doc/Config.md +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/setup.cfg +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/setup_requirements.txt +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/SOURCES.txt +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/dependency_links.txt +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/top_level.txt +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/__init__.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/__init__.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/auth_util.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/helpers/blacklist_retry.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/my_skoda_session.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/openid_session.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/session_manager.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/skoda_web_session.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/capability.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/charging.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/climatization.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/command_impl.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/error.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/mqtt_client.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/ui/connector_ui.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/vehicle.py +0 -0
- {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/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.4a5
|
|
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.4a8
|
|
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.4a5
|
|
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.4a8
|
|
41
41
|
Requires-Dist: oauthlib~=3.2.2
|
|
42
42
|
Requires-Dist: requests~=2.32.3
|
|
43
43
|
Requires-Dist: jwt~=1.3.1
|
|
@@ -4,6 +4,7 @@ from typing import TYPE_CHECKING
|
|
|
4
4
|
|
|
5
5
|
import threading
|
|
6
6
|
import os
|
|
7
|
+
import traceback
|
|
7
8
|
import logging
|
|
8
9
|
import netrc
|
|
9
10
|
from datetime import datetime, timedelta, timezone
|
|
@@ -72,6 +73,7 @@ class Connector(BaseConnector):
|
|
|
72
73
|
"""
|
|
73
74
|
def __init__(self, connector_id: str, car_connectivity: CarConnectivity, config: Dict) -> None:
|
|
74
75
|
BaseConnector.__init__(self, connector_id=connector_id, car_connectivity=car_connectivity, config=config, log=LOG, api_log=LOG_API)
|
|
76
|
+
self._healthy = False
|
|
75
77
|
|
|
76
78
|
self._mqtt_client: SkodaMQTTClient = SkodaMQTTClient(skoda_connector=self)
|
|
77
79
|
|
|
@@ -172,6 +174,7 @@ class Connector(BaseConnector):
|
|
|
172
174
|
self._background_connect_thread.start()
|
|
173
175
|
# Start MQTT thread
|
|
174
176
|
self._mqtt_client.loop_start()
|
|
177
|
+
self._healthy = True
|
|
175
178
|
|
|
176
179
|
def _background_connect_loop(self) -> None:
|
|
177
180
|
while not self._stop_event.is_set():
|
|
@@ -216,6 +219,10 @@ class Connector(BaseConnector):
|
|
|
216
219
|
except TemporaryAuthenticationError as err:
|
|
217
220
|
LOG.error('Temporary authentification error during update (%s). Will try again after configured interval of %ss', str(err), interval)
|
|
218
221
|
self._stop_event.wait(interval)
|
|
222
|
+
except Exception as err:
|
|
223
|
+
LOG.critical('Critical error during update: %s', traceback.format_exc())
|
|
224
|
+
self._healthy = False
|
|
225
|
+
raise err
|
|
219
226
|
else:
|
|
220
227
|
self._stop_event.wait(interval)
|
|
221
228
|
|
|
@@ -786,12 +793,19 @@ class Connector(BaseConnector):
|
|
|
786
793
|
# pylint: disable-next=protected-access
|
|
787
794
|
vehicle.climatization.settings.target_temperature._add_on_set_hook(self.__on_air_conditioning_target_temperature_change)
|
|
788
795
|
vehicle.climatization.settings.target_temperature._is_changeable = True # pylint: disable=protected-access
|
|
796
|
+
precision: float = 0.5
|
|
797
|
+
min_temperature: Optional[float] = None
|
|
798
|
+
max_temperature: Optional[float] = None
|
|
789
799
|
unit: Temperature = Temperature.UNKNOWN
|
|
790
800
|
if 'unitInCar' in data['targetTemperature'] and data['targetTemperature']['unitInCar'] is not None:
|
|
791
801
|
if data['targetTemperature']['unitInCar'] == 'CELSIUS':
|
|
792
802
|
unit = Temperature.C
|
|
803
|
+
min_temperature: Optional[float] = 16
|
|
804
|
+
max_temperature: Optional[float] = 29.5
|
|
793
805
|
elif data['targetTemperature']['unitInCar'] == 'FAHRENHEIT':
|
|
794
806
|
unit = Temperature.F
|
|
807
|
+
min_temperature: Optional[float] = 61
|
|
808
|
+
max_temperature: Optional[float] = 85
|
|
795
809
|
elif data['targetTemperature']['unitInCar'] == 'KELVIN':
|
|
796
810
|
unit = Temperature.K
|
|
797
811
|
else:
|
|
@@ -801,6 +815,10 @@ class Connector(BaseConnector):
|
|
|
801
815
|
vehicle.climatization.settings.target_temperature._set_value(value=data['targetTemperature']['temperatureValue'],
|
|
802
816
|
measured=captured_at,
|
|
803
817
|
unit=unit)
|
|
818
|
+
vehicle.climatization.settings.target_temperature.precision = precision
|
|
819
|
+
vehicle.climatization.settings.target_temperature.minimum = min_temperature
|
|
820
|
+
vehicle.climatization.settings.target_temperature.maximum = max_temperature
|
|
821
|
+
|
|
804
822
|
else:
|
|
805
823
|
# pylint: disable-next=protected-access
|
|
806
824
|
vehicle.climatization.settings.target_temperature._set_value(value=None, measured=captured_at, unit=unit)
|
|
@@ -1498,9 +1516,10 @@ class Connector(BaseConnector):
|
|
|
1498
1516
|
if command_arguments['command'] == ClimatizationStartStopCommand.Command.START:
|
|
1499
1517
|
command_dict['heaterSource'] = 'ELECTRIC'
|
|
1500
1518
|
command_dict['targetTemperature'] = {}
|
|
1519
|
+
precision: float = 0.5
|
|
1501
1520
|
if 'target_temperature' in command_arguments:
|
|
1502
1521
|
# Round target temperature to nearest 0.5
|
|
1503
|
-
command_dict['targetTemperature']['temperatureValue'] = round(command_arguments['target_temperature']
|
|
1522
|
+
command_dict['targetTemperature']['temperatureValue'] = round(command_arguments['target_temperature'] / precision) * precision
|
|
1504
1523
|
if 'target_temperature_unit' in command_arguments:
|
|
1505
1524
|
if not isinstance(command_arguments['target_temperature_unit'], Temperature):
|
|
1506
1525
|
raise CommandError('Temperature unit is not of type Temperature')
|
|
@@ -1518,8 +1537,10 @@ class Connector(BaseConnector):
|
|
|
1518
1537
|
and isinstance(climatization, Climatization) and climatization.settings is not None \
|
|
1519
1538
|
and climatization.settings.target_temperature is not None and climatization.settings.target_temperature.enabled \
|
|
1520
1539
|
and climatization.settings.target_temperature.value is not None: # pylint: disable=too-many-boolean-expressions
|
|
1540
|
+
if climatization.settings.target_temperature.precision is not None:
|
|
1541
|
+
precision = climatization.settings.target_temperature.precision
|
|
1521
1542
|
# Round target temperature to nearest 0.5
|
|
1522
|
-
command_dict['targetTemperature']['temperatureValue'] = round(climatization.settings.target_temperature.value
|
|
1543
|
+
command_dict['targetTemperature']['temperatureValue'] = round(climatization.settings.target_temperature.value / precision) * precision
|
|
1523
1544
|
if climatization.settings.target_temperature.unit == Temperature.C:
|
|
1524
1545
|
command_dict['targetTemperature']['unitInCar'] = 'CELSIUS'
|
|
1525
1546
|
elif climatization.settings.target_temperature.unit == Temperature.F:
|
|
@@ -1751,3 +1772,6 @@ class Connector(BaseConnector):
|
|
|
1751
1772
|
except requests.exceptions.RetryError as retry_error:
|
|
1752
1773
|
raise CommandError(f'Retrying failed: {retry_error}') from retry_error
|
|
1753
1774
|
return command_arguments
|
|
1775
|
+
|
|
1776
|
+
def is_healthy(self) -> bool:
|
|
1777
|
+
return self._healthy and super().is_healthy()
|
|
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.4a4 → carconnectivity_connector_skoda-0.4a5}/CHANGELOG.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/doc/Config.md
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|