carconnectivity-connector-skoda 0.5a1__tar.gz → 0.5a2__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.5a1 → carconnectivity_connector_skoda-0.5a2}/PKG-INFO +1 -1
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connector_skoda.egg-info/PKG-INFO +1 -1
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/_version.py +1 -1
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/charging.py +4 -4
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/connector.py +135 -5
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/vehicle.py +8 -7
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.flake8 +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.github/dependabot.yml +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.github/workflows/build.yml +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.github/workflows/build_and_publish.yml +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.github/workflows/codeql-analysis.yml +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/.gitignore +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/CHANGELOG.md +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/LICENSE +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/Makefile +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/README.md +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/doc/Config.md +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/pyproject.toml +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/setup.cfg +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/setup_requirements.txt +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connector_skoda.egg-info/SOURCES.txt +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connector_skoda.egg-info/dependency_links.txt +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connector_skoda.egg-info/requires.txt +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connector_skoda.egg-info/top_level.txt +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/__init__.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/auth/__init__.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/auth/auth_util.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/auth/helpers/blacklist_retry.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/auth/my_skoda_session.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/auth/openid_session.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/auth/session_manager.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/auth/skoda_web_session.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/capability.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/climatization.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/command_impl.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/error.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/mqtt_client.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/src/carconnectivity_connectors/skoda/ui/connector_ui.py +0 -0
- {carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/test/integration_test/carConnectivity.json +0 -0
|
@@ -26,11 +26,11 @@ class SkodaCharging(Charging): # pylint: disable=too-many-instance-attributes
|
|
|
26
26
|
"""
|
|
27
27
|
def __init__(self, vehicle: ElectricVehicle | None = None, origin: Optional[Charging] = None) -> None:
|
|
28
28
|
if origin is not None:
|
|
29
|
-
super().__init__(origin=origin)
|
|
30
|
-
self.settings: Charging.Settings = SkodaCharging.Settings(origin=origin.settings)
|
|
29
|
+
super().__init__(vehicle=vehicle, origin=origin)
|
|
30
|
+
self.settings: Charging.Settings = SkodaCharging.Settings(parent=self, origin=origin.settings)
|
|
31
31
|
else:
|
|
32
32
|
super().__init__(vehicle=vehicle)
|
|
33
|
-
self.settings: Charging.Settings = SkodaCharging.Settings(origin=self.settings)
|
|
33
|
+
self.settings: Charging.Settings = SkodaCharging.Settings(parent=self, origin=self.settings)
|
|
34
34
|
self.errors: Dict[str, Error] = {}
|
|
35
35
|
self.is_in_saved_location: BooleanAttribute = BooleanAttribute("is_in_saved_location", parent=self, tags={'connector_custom'})
|
|
36
36
|
|
|
@@ -40,7 +40,7 @@ class SkodaCharging(Charging): # pylint: disable=too-many-instance-attributes
|
|
|
40
40
|
"""
|
|
41
41
|
def __init__(self, parent: Optional[GenericObject] = None, origin: Optional[Charging.Settings] = None) -> None:
|
|
42
42
|
if origin is not None:
|
|
43
|
-
super().__init__(origin=origin)
|
|
43
|
+
super().__init__(parent=parent, origin=origin)
|
|
44
44
|
else:
|
|
45
45
|
super().__init__(parent=parent)
|
|
46
46
|
self.preferred_charge_mode: EnumAttribute = EnumAttribute("preferred_charge_mode", parent=self, tags={'connector_custom'})
|
|
@@ -23,7 +23,8 @@ from carconnectivity.doors import Doors
|
|
|
23
23
|
from carconnectivity.windows import Windows
|
|
24
24
|
from carconnectivity.lights import Lights
|
|
25
25
|
from carconnectivity.drive import GenericDrive, ElectricDrive, CombustionDrive
|
|
26
|
-
from carconnectivity.attributes import
|
|
26
|
+
from carconnectivity.attributes import BooleanAttribute, DurationAttribute, TemperatureAttribute, EnumAttribute, LevelAttribute, \
|
|
27
|
+
CurrentAttribute
|
|
27
28
|
from carconnectivity.charging import Charging
|
|
28
29
|
from carconnectivity.position import Position
|
|
29
30
|
from carconnectivity.climatization import Climatization
|
|
@@ -509,14 +510,24 @@ class Connector(BaseConnector):
|
|
|
509
510
|
if 'settings' in data and data['settings'] is not None:
|
|
510
511
|
if 'targetStateOfChargeInPercent' in data['settings'] and data['settings']['targetStateOfChargeInPercent'] is not None \
|
|
511
512
|
and vehicle.charging is not None and vehicle.charging.settings is not None:
|
|
513
|
+
vehicle.charging.settings.target_level.minimum = 50.0
|
|
514
|
+
vehicle.charging.settings.target_level.maximum = 100.0
|
|
515
|
+
vehicle.charging.settings.target_level.precision = 10.0
|
|
516
|
+
vehicle.charging.settings.target_level._add_on_set_hook(self.__on_charging_target_level_change) # pylint: disable=protected-access
|
|
517
|
+
vehicle.charging.settings.target_level._is_changeable = True # pylint: disable=protected-access
|
|
512
518
|
# pylint: disable-next=protected-access
|
|
513
519
|
vehicle.charging.settings.target_level._set_value(value=data['settings']['targetStateOfChargeInPercent'], measured=captured_at)
|
|
514
520
|
else:
|
|
515
521
|
vehicle.charging.settings.target_level._set_value(None, measured=captured_at) # pylint: disable=protected-access
|
|
516
522
|
if 'maxChargeCurrentAc' in data['settings'] and data['settings']['maxChargeCurrentAc'] is not None \
|
|
517
523
|
and vehicle.charging is not None and vehicle.charging.settings is not None:
|
|
524
|
+
vehicle.charging.settings.maximum_current.minimum = 6.0
|
|
525
|
+
vehicle.charging.settings.maximum_current.maximum = 16.0
|
|
526
|
+
vehicle.charging.settings.maximum_current.precision = 1.0
|
|
527
|
+
vehicle.charging.settings.maximum_current._add_on_set_hook(self.__on_charging_maximum_current_change) # pylint: disable=protected-access
|
|
528
|
+
vehicle.charging.settings.maximum_current._is_changeable = True # pylint: disable=protected-access
|
|
518
529
|
if data['settings']['maxChargeCurrentAc'] == 'MAXIMUM':
|
|
519
|
-
vehicle.charging.settings.maximum_current._set_value(value=
|
|
530
|
+
vehicle.charging.settings.maximum_current._set_value(value=16, measured=captured_at) # pylint: disable=protected-access
|
|
520
531
|
elif data['settings']['maxChargeCurrentAc'] == 'REDUCED':
|
|
521
532
|
vehicle.charging.settings.maximum_current._set_value(value=6, measured=captured_at) # pylint: disable=protected-access
|
|
522
533
|
else:
|
|
@@ -525,6 +536,8 @@ class Connector(BaseConnector):
|
|
|
525
536
|
else:
|
|
526
537
|
vehicle.charging.settings.maximum_current._set_value(None, measured=captured_at) # pylint: disable=protected-access
|
|
527
538
|
if 'autoUnlockPlugWhenCharged' in data['settings'] and data['settings']['autoUnlockPlugWhenCharged'] is not None:
|
|
539
|
+
vehicle.charging.settings.auto_unlock._add_on_set_hook(self.__on_charging_auto_unlock_change) # pylint: disable=protected-access
|
|
540
|
+
vehicle.charging.settings.auto_unlock._is_changeable = True # pylint: disable=protected-access
|
|
528
541
|
if data['settings']['autoUnlockPlugWhenCharged'] in ['ON', 'PERMANENT']:
|
|
529
542
|
vehicle.charging.settings.auto_unlock._set_value(True, measured=captured_at) # pylint: disable=protected-access
|
|
530
543
|
elif data['settings']['autoUnlockPlugWhenCharged'] == 'OFF':
|
|
@@ -1234,7 +1247,7 @@ class Connector(BaseConnector):
|
|
|
1234
1247
|
car_type = GenericVehicle.Type(range_data['carType'])
|
|
1235
1248
|
if car_type == GenericVehicle.Type.ELECTRIC and not isinstance(vehicle, SkodaElectricVehicle):
|
|
1236
1249
|
LOG.debug('Promoting %s to SkodaElectricVehicle object for %s', vehicle.__class__.__name__, vin)
|
|
1237
|
-
vehicle = SkodaElectricVehicle(origin=vehicle)
|
|
1250
|
+
vehicle = SkodaElectricVehicle(garage=self.car_connectivity.garage, origin=vehicle)
|
|
1238
1251
|
self.car_connectivity.garage.replace_vehicle(vin, vehicle)
|
|
1239
1252
|
elif car_type in [GenericVehicle.Type.FUEL,
|
|
1240
1253
|
GenericVehicle.Type.GASOLINE,
|
|
@@ -1244,11 +1257,11 @@ class Connector(BaseConnector):
|
|
|
1244
1257
|
GenericVehicle.Type.LPG] \
|
|
1245
1258
|
and not isinstance(vehicle, SkodaCombustionVehicle):
|
|
1246
1259
|
LOG.debug('Promoting %s to SkodaCombustionVehicle object for %s', vehicle.__class__.__name__, vin)
|
|
1247
|
-
vehicle = SkodaCombustionVehicle(origin=vehicle)
|
|
1260
|
+
vehicle = SkodaCombustionVehicle(garage=self.car_connectivity.garage, origin=vehicle)
|
|
1248
1261
|
self.car_connectivity.garage.replace_vehicle(vin, vehicle)
|
|
1249
1262
|
elif car_type == GenericVehicle.Type.HYBRID and not isinstance(vehicle, SkodaHybridVehicle):
|
|
1250
1263
|
LOG.debug('Promoting %s to SkodaHybridVehicle object for %s', vehicle.__class__.__name__, vin)
|
|
1251
|
-
vehicle = SkodaHybridVehicle(origin=vehicle)
|
|
1264
|
+
vehicle = SkodaHybridVehicle(garage=self.car_connectivity.garage, origin=vehicle)
|
|
1252
1265
|
self.car_connectivity.garage.replace_vehicle(vin, vehicle)
|
|
1253
1266
|
except ValueError:
|
|
1254
1267
|
LOG_API.warning('Unknown car type %s', range_data['carType'])
|
|
@@ -1889,5 +1902,122 @@ class Connector(BaseConnector):
|
|
|
1889
1902
|
raise CommandError(f'Retrying failed: {retry_error}') from retry_error
|
|
1890
1903
|
return command_arguments
|
|
1891
1904
|
|
|
1905
|
+
def __on_charging_target_level_change(self, level_attribute: LevelAttribute, target_level: float) -> float:
|
|
1906
|
+
"""
|
|
1907
|
+
Callback for the charging target level change.
|
|
1908
|
+
|
|
1909
|
+
Args:
|
|
1910
|
+
level_attribute (LevelAttribute): The level attribute that changed.
|
|
1911
|
+
target_level (float): The new target level.
|
|
1912
|
+
"""
|
|
1913
|
+
if level_attribute.parent is None or level_attribute.parent.parent is None \
|
|
1914
|
+
or level_attribute.parent.parent.parent is None or not isinstance(level_attribute.parent.parent.parent, SkodaVehicle):
|
|
1915
|
+
raise SetterError('Object hierarchy is not as expected')
|
|
1916
|
+
vehicle: SkodaVehicle = level_attribute.parent.parent.parent
|
|
1917
|
+
vin: Optional[str] = vehicle.vin.value
|
|
1918
|
+
if vin is None:
|
|
1919
|
+
raise SetterError('VIN in object hierarchy missing')
|
|
1920
|
+
precision: float = level_attribute.precision if level_attribute.precision is not None else 10.0
|
|
1921
|
+
target_level = round(target_level / precision) * precision
|
|
1922
|
+
setting_dict = {}
|
|
1923
|
+
setting_dict['targetSOCInPercent'] = target_level
|
|
1924
|
+
|
|
1925
|
+
url = f'https://mysmob.api.connect.skoda-auto.cz/api/v1/charging/{vin}/set-charge-limit'
|
|
1926
|
+
try:
|
|
1927
|
+
settings_response: requests.Response = self.session.put(url, data=json.dumps(setting_dict), allow_redirects=True)
|
|
1928
|
+
if settings_response.status_code != requests.codes['accepted']:
|
|
1929
|
+
LOG.error('Could not set target level (%s)', settings_response.status_code)
|
|
1930
|
+
raise SetterError(f'Could not set value ({settings_response.status_code})')
|
|
1931
|
+
except requests.exceptions.ConnectionError as connection_error:
|
|
1932
|
+
raise SetterError(f'Connection error: {connection_error}.'
|
|
1933
|
+
' If this happens frequently, please check if other applications communicate with the Skoda server.') from connection_error
|
|
1934
|
+
except requests.exceptions.ChunkedEncodingError as chunked_encoding_error:
|
|
1935
|
+
raise SetterError(f'Error: {chunked_encoding_error}') from chunked_encoding_error
|
|
1936
|
+
except requests.exceptions.ReadTimeout as timeout_error:
|
|
1937
|
+
raise SetterError(f'Timeout during read: {timeout_error}') from timeout_error
|
|
1938
|
+
except requests.exceptions.RetryError as retry_error:
|
|
1939
|
+
raise SetterError(f'Retrying failed: {retry_error}') from retry_error
|
|
1940
|
+
return target_level
|
|
1941
|
+
|
|
1942
|
+
def __on_charging_maximum_current_change(self, current_attribute: CurrentAttribute, maximum_current: float) -> float:
|
|
1943
|
+
"""
|
|
1944
|
+
Callback for the charging target level change.
|
|
1945
|
+
|
|
1946
|
+
Args:
|
|
1947
|
+
current_attribute (CurrentAttribute): The current attribute that changed.
|
|
1948
|
+
maximum_current (float): The new maximum current.
|
|
1949
|
+
"""
|
|
1950
|
+
if current_attribute.parent is None or current_attribute.parent.parent is None \
|
|
1951
|
+
or current_attribute.parent.parent.parent is None or not isinstance(current_attribute.parent.parent.parent, SkodaVehicle):
|
|
1952
|
+
raise SetterError('Object hierarchy is not as expected')
|
|
1953
|
+
vehicle: SkodaVehicle = current_attribute.parent.parent.parent
|
|
1954
|
+
vin: Optional[str] = vehicle.vin.value
|
|
1955
|
+
if vin is None:
|
|
1956
|
+
raise SetterError('VIN in object hierarchy missing')
|
|
1957
|
+
setting_dict = {}
|
|
1958
|
+
precision: float = current_attribute.precision if current_attribute.precision is not None else 1.0
|
|
1959
|
+
maximum_current = round(maximum_current / precision) * precision
|
|
1960
|
+
if maximum_current < 16:
|
|
1961
|
+
setting_dict['chargingCurrent'] = "REDUCED"
|
|
1962
|
+
maximum_current = 6.0
|
|
1963
|
+
else:
|
|
1964
|
+
setting_dict['chargingCurrent'] = "MAXIMUM"
|
|
1965
|
+
maximum_current = 16.0
|
|
1966
|
+
|
|
1967
|
+
url = f'https://mysmob.api.connect.skoda-auto.cz/api/v1/charging/{vin}/set-charging-current'
|
|
1968
|
+
try:
|
|
1969
|
+
settings_response: requests.Response = self.session.put(url, data=json.dumps(setting_dict), allow_redirects=True)
|
|
1970
|
+
if settings_response.status_code != requests.codes['accepted']:
|
|
1971
|
+
LOG.error('Could not set target charging current (%s)', settings_response.status_code)
|
|
1972
|
+
raise SetterError(f'Could not set value ({settings_response.status_code})')
|
|
1973
|
+
except requests.exceptions.ConnectionError as connection_error:
|
|
1974
|
+
raise SetterError(f'Connection error: {connection_error}.'
|
|
1975
|
+
' If this happens frequently, please check if other applications communicate with the Skoda server.') from connection_error
|
|
1976
|
+
except requests.exceptions.ChunkedEncodingError as chunked_encoding_error:
|
|
1977
|
+
raise SetterError(f'Error: {chunked_encoding_error}') from chunked_encoding_error
|
|
1978
|
+
except requests.exceptions.ReadTimeout as timeout_error:
|
|
1979
|
+
raise SetterError(f'Timeout during read: {timeout_error}') from timeout_error
|
|
1980
|
+
except requests.exceptions.RetryError as retry_error:
|
|
1981
|
+
raise SetterError(f'Retrying failed: {retry_error}') from retry_error
|
|
1982
|
+
return maximum_current
|
|
1983
|
+
|
|
1984
|
+
def __on_charging_auto_unlock_change(self, boolean_attribute: BooleanAttribute, auto_unlock: bool) -> bool:
|
|
1985
|
+
"""
|
|
1986
|
+
Callback for the charging target level change.
|
|
1987
|
+
|
|
1988
|
+
Args:
|
|
1989
|
+
boolean_attribute (BooleanAttribute): The boolean attribute that changed.
|
|
1990
|
+
auto_unlock (float): The new auto_unlock setting.
|
|
1991
|
+
"""
|
|
1992
|
+
if boolean_attribute.parent is None or boolean_attribute.parent.parent is None \
|
|
1993
|
+
or boolean_attribute.parent.parent.parent is None or not isinstance(boolean_attribute.parent.parent.parent, SkodaVehicle):
|
|
1994
|
+
raise SetterError('Object hierarchy is not as expected')
|
|
1995
|
+
vehicle: SkodaVehicle = boolean_attribute.parent.parent.parent
|
|
1996
|
+
vin: Optional[str] = vehicle.vin.value
|
|
1997
|
+
if vin is None:
|
|
1998
|
+
raise SetterError('VIN in object hierarchy missing')
|
|
1999
|
+
setting_dict = {}
|
|
2000
|
+
if auto_unlock:
|
|
2001
|
+
setting_dict['autoUnlockPlug'] = "PERMANENT"
|
|
2002
|
+
else:
|
|
2003
|
+
setting_dict['autoUnlockPlug'] = "OFF"
|
|
2004
|
+
|
|
2005
|
+
url = f'https://mysmob.api.connect.skoda-auto.cz/api/v1/charging/{vin}/set-auto-unlock-plug'
|
|
2006
|
+
try:
|
|
2007
|
+
settings_response: requests.Response = self.session.put(url, data=json.dumps(setting_dict), allow_redirects=True)
|
|
2008
|
+
if settings_response.status_code != requests.codes['accepted']:
|
|
2009
|
+
LOG.error('Could not set auto unlock setting (%s)', settings_response.status_code)
|
|
2010
|
+
raise SetterError(f'Could not set value ({settings_response.status_code})')
|
|
2011
|
+
except requests.exceptions.ConnectionError as connection_error:
|
|
2012
|
+
raise SetterError(f'Connection error: {connection_error}.'
|
|
2013
|
+
' If this happens frequently, please check if other applications communicate with the Skoda server.') from connection_error
|
|
2014
|
+
except requests.exceptions.ChunkedEncodingError as chunked_encoding_error:
|
|
2015
|
+
raise SetterError(f'Error: {chunked_encoding_error}') from chunked_encoding_error
|
|
2016
|
+
except requests.exceptions.ReadTimeout as timeout_error:
|
|
2017
|
+
raise SetterError(f'Timeout during read: {timeout_error}') from timeout_error
|
|
2018
|
+
except requests.exceptions.RetryError as retry_error:
|
|
2019
|
+
raise SetterError(f'Retrying failed: {retry_error}') from retry_error
|
|
2020
|
+
return auto_unlock
|
|
2021
|
+
|
|
1892
2022
|
def get_name(self) -> str:
|
|
1893
2023
|
return "Skoda Connector"
|
|
@@ -30,7 +30,7 @@ class SkodaVehicle(GenericVehicle): # pylint: disable=too-many-instance-attribu
|
|
|
30
30
|
def __init__(self, vin: Optional[str] = None, garage: Optional[Garage] = None, managing_connector: Optional[BaseConnector] = None,
|
|
31
31
|
origin: Optional[SkodaVehicle] = None) -> None:
|
|
32
32
|
if origin is not None:
|
|
33
|
-
super().__init__(origin=origin)
|
|
33
|
+
super().__init__(garage=garage, origin=origin)
|
|
34
34
|
self.capabilities: Capabilities = origin.capabilities
|
|
35
35
|
self.capabilities.parent = self
|
|
36
36
|
self.in_motion: BooleanAttribute = origin.in_motion
|
|
@@ -55,13 +55,14 @@ class SkodaElectricVehicle(ElectricVehicle, SkodaVehicle):
|
|
|
55
55
|
def __init__(self, vin: Optional[str] = None, garage: Optional[Garage] = None, managing_connector: Optional[BaseConnector] = None,
|
|
56
56
|
origin: Optional[SkodaVehicle] = None) -> None:
|
|
57
57
|
if origin is not None:
|
|
58
|
-
super().__init__(origin=origin)
|
|
58
|
+
super().__init__(garage=garage, origin=origin)
|
|
59
59
|
if isinstance(origin, ElectricVehicle):
|
|
60
|
-
self.charging: Charging = SkodaCharging(origin=origin.charging)
|
|
61
|
-
|
|
60
|
+
self.charging: Charging = SkodaCharging(vehicle=self, origin=origin.charging)
|
|
61
|
+
else:
|
|
62
|
+
self.charging: Charging = SkodaCharging(vehicle=self, origin=self.charging)
|
|
62
63
|
else:
|
|
63
64
|
super().__init__(vin=vin, garage=garage, managing_connector=managing_connector)
|
|
64
|
-
self.charging: Charging = SkodaCharging(vehicle=self)
|
|
65
|
+
self.charging: Charging = SkodaCharging(vehicle=self, origin=self.charging)
|
|
65
66
|
|
|
66
67
|
|
|
67
68
|
class SkodaCombustionVehicle(CombustionVehicle, SkodaVehicle):
|
|
@@ -71,7 +72,7 @@ class SkodaCombustionVehicle(CombustionVehicle, SkodaVehicle):
|
|
|
71
72
|
def __init__(self, vin: Optional[str] = None, garage: Optional[Garage] = None, managing_connector: Optional[BaseConnector] = None,
|
|
72
73
|
origin: Optional[SkodaVehicle] = None) -> None:
|
|
73
74
|
if origin is not None:
|
|
74
|
-
super().__init__(origin=origin)
|
|
75
|
+
super().__init__(garage=garage, origin=origin)
|
|
75
76
|
else:
|
|
76
77
|
super().__init__(vin=vin, garage=garage, managing_connector=managing_connector)
|
|
77
78
|
|
|
@@ -83,6 +84,6 @@ class SkodaHybridVehicle(HybridVehicle, SkodaVehicle):
|
|
|
83
84
|
def __init__(self, vin: Optional[str] = None, garage: Optional[Garage] = None, managing_connector: Optional[BaseConnector] = None,
|
|
84
85
|
origin: Optional[SkodaVehicle] = None) -> None:
|
|
85
86
|
if origin is not None:
|
|
86
|
-
super().__init__(origin=origin)
|
|
87
|
+
super().__init__(garage=garage, origin=origin)
|
|
87
88
|
else:
|
|
88
89
|
super().__init__(vin=vin, garage=garage, managing_connector=managing_connector)
|
|
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.5a1 → carconnectivity_connector_skoda-0.5a2}/CHANGELOG.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/doc/Config.md
RENAMED
|
File without changes
|
{carconnectivity_connector_skoda-0.5a1 → carconnectivity_connector_skoda-0.5a2}/pyproject.toml
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
|