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.

Files changed (41) hide show
  1. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/PKG-INFO +2 -2
  2. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/pyproject.toml +1 -1
  3. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/PKG-INFO +2 -2
  4. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/requires.txt +1 -1
  5. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/_version.py +1 -1
  6. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/connector.py +26 -2
  7. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.flake8 +0 -0
  8. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  9. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  10. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/dependabot.yml +0 -0
  11. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/workflows/build.yml +0 -0
  12. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/workflows/build_and_publish.yml +0 -0
  13. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.github/workflows/codeql-analysis.yml +0 -0
  14. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/.gitignore +0 -0
  15. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/CHANGELOG.md +0 -0
  16. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/LICENSE +0 -0
  17. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/Makefile +0 -0
  18. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/README.md +0 -0
  19. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/doc/Config.md +0 -0
  20. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/setup.cfg +0 -0
  21. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/setup_requirements.txt +0 -0
  22. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/SOURCES.txt +0 -0
  23. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/dependency_links.txt +0 -0
  24. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connector_skoda.egg-info/top_level.txt +0 -0
  25. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/__init__.py +0 -0
  26. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/__init__.py +0 -0
  27. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/auth_util.py +0 -0
  28. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/helpers/blacklist_retry.py +0 -0
  29. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/my_skoda_session.py +0 -0
  30. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/openid_session.py +0 -0
  31. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/session_manager.py +0 -0
  32. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/auth/skoda_web_session.py +0 -0
  33. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/capability.py +0 -0
  34. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/charging.py +0 -0
  35. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/climatization.py +0 -0
  36. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/command_impl.py +0 -0
  37. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/error.py +0 -0
  38. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/mqtt_client.py +0 -0
  39. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/ui/connector_ui.py +0 -0
  40. {carconnectivity_connector_skoda-0.4a4 → carconnectivity_connector_skoda-0.4a5}/src/carconnectivity_connectors/skoda/vehicle.py +0 -0
  41. {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.4a4
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.4a6
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
@@ -14,7 +14,7 @@ authors = [
14
14
  { name = "Till Steinbach" }
15
15
  ]
16
16
  dependencies = [
17
- "carconnectivity>=0.4a6",
17
+ "carconnectivity>=0.4a8",
18
18
  "oauthlib~=3.2.2",
19
19
  "requests~=2.32.3",
20
20
  "jwt~=1.3.1",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: carconnectivity-connector-skoda
3
- Version: 0.4a4
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.4a6
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,4 +1,4 @@
1
- carconnectivity>=0.4a6
1
+ carconnectivity>=0.4a8
2
2
  oauthlib~=3.2.2
3
3
  requests~=2.32.3
4
4
  jwt~=1.3.1
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.4a4'
20
+ __version__ = version = '0.4a5'
21
21
  __version_tuple__ = version_tuple = (0, 4)
@@ -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'] * 2) / 2
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 * 2) / 2
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()