carconnectivity-connector-seatcupra 0.1a11__tar.gz → 0.1a13__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.
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/PKG-INFO +2 -2
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/pyproject.toml +1 -1
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connector_seatcupra.egg-info/PKG-INFO +2 -2
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connector_seatcupra.egg-info/requires.txt +1 -1
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/_version.py +1 -1
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/connector.py +25 -16
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/vehicle.py +0 -1
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.flake8 +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.github/dependabot.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.github/workflows/build.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.github/workflows/build_and_publish.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.github/workflows/codeql-analysis.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.gitignore +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/CHANGELOG.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/LICENSE +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/Makefile +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/README.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/doc/Config.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/setup.cfg +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/setup_requirements.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connector_seatcupra.egg-info/SOURCES.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connector_seatcupra.egg-info/dependency_links.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connector_seatcupra.egg-info/top_level.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/__init__.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/auth/__init__.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/auth/auth_util.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/auth/helpers/blacklist_retry.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/auth/my_cupra_session.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/auth/openid_session.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/auth/session_manager.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/auth/vw_web_session.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/capability.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/charging.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/climatization.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/command_impl.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/src/carconnectivity_connectors/seatcupra/ui/connector_ui.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/test/integration_test/carConnectivity.json +0 -0
{carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: carconnectivity-connector-seatcupra
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.1a13
|
4
4
|
Summary: CarConnectivity connector for Seat and Cupra 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.9
|
38
38
|
Description-Content-Type: text/markdown
|
39
39
|
License-File: LICENSE
|
40
|
-
Requires-Dist: carconnectivity>=0.
|
40
|
+
Requires-Dist: carconnectivity>=0.4a6
|
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-seatcupra
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.1a13
|
4
4
|
Summary: CarConnectivity connector for Seat and Cupra 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.9
|
38
38
|
Description-Content-Type: text/markdown
|
39
39
|
License-File: LICENSE
|
40
|
-
Requires-Dist: carconnectivity>=0.
|
40
|
+
Requires-Dist: carconnectivity>=0.4a6
|
41
41
|
Requires-Dist: oauthlib~=3.2.2
|
42
42
|
Requires-Dist: requests~=2.32.3
|
43
43
|
Requires-Dist: jwt~=1.3.1
|
@@ -77,6 +77,16 @@ class Connector(BaseConnector):
|
|
77
77
|
|
78
78
|
self.connected: BooleanAttribute = BooleanAttribute(name="connected", parent=self, tags={'connector_custom'})
|
79
79
|
self.interval: DurationAttribute = DurationAttribute(name="interval", parent=self, tags={'connector_custom'})
|
80
|
+
|
81
|
+
def __check_interval(attribute: GenericAttribute, value: Any) -> Any:
|
82
|
+
del attribute
|
83
|
+
if value is not None and value < timedelta(seconds=180):
|
84
|
+
raise ValueError('Intervall must be at least 180 seconds')
|
85
|
+
return value
|
86
|
+
|
87
|
+
self.interval._is_changeable = True # pylint: disable=protected-access
|
88
|
+
self.interval._add_on_set_hook(__check_interval) # pylint: disable=protected-access
|
89
|
+
|
80
90
|
self.commands: Commands = Commands(parent=self)
|
81
91
|
|
82
92
|
LOG.info("Loading seatcupra connector with config %s", config_remove_credentials(config))
|
@@ -159,6 +169,7 @@ class Connector(BaseConnector):
|
|
159
169
|
|
160
170
|
def startup(self) -> None:
|
161
171
|
self._background_thread = threading.Thread(target=self._background_loop, daemon=False)
|
172
|
+
self._background_thread.name = 'carconnectivity.connectors.seatcupra-background'
|
162
173
|
self._background_thread.start()
|
163
174
|
|
164
175
|
def _background_loop(self) -> None:
|
@@ -226,10 +237,10 @@ class Connector(BaseConnector):
|
|
226
237
|
self.car_connectivity.garage.remove_vehicle(vehicle.id)
|
227
238
|
vehicle.enabled = False
|
228
239
|
self._stop_event.set()
|
240
|
+
self.session.close()
|
229
241
|
if self._background_thread is not None:
|
230
242
|
self._background_thread.join()
|
231
243
|
self.persist()
|
232
|
-
self.session.close()
|
233
244
|
BaseConnector.shutdown(self)
|
234
245
|
|
235
246
|
def fetch_all(self) -> None:
|
@@ -524,6 +535,10 @@ class Connector(BaseConnector):
|
|
524
535
|
else:
|
525
536
|
vehicle.doors.open_state._set_value(Doors.OpenState.OPEN, measured=captured_at) # pylint: disable=protected-access
|
526
537
|
seen_window_ids: set[str] = set()
|
538
|
+
if 'sunRoof' in vehicle_status_data and vehicle_status_data['sunRoof'] is not None \
|
539
|
+
and 'windows' in vehicle_status_data and vehicle_status_data['windows'] is not None:
|
540
|
+
vehicle_status_data['windows']['sunRoof'] = vehicle_status_data['sunRoof']
|
541
|
+
|
527
542
|
if 'windows' in vehicle_status_data and vehicle_status_data['windows'] is not None:
|
528
543
|
all_windows_closed = True
|
529
544
|
for window_id, window_status in vehicle_status_data['windows'].items():
|
@@ -550,7 +565,7 @@ class Connector(BaseConnector):
|
|
550
565
|
for window_id in vehicle.windows.windows.keys() - seen_window_ids:
|
551
566
|
vehicle.windows.windows[window_id].enabled = False
|
552
567
|
log_extra_keys(LOG_API, f'/api/v2/vehicle-status/{vin}', vehicle_status_data, {'updatedAt', 'locked', 'lights', 'hood', 'trunk', 'doors',
|
553
|
-
'windows'})
|
568
|
+
'windows', 'sunRoof'})
|
554
569
|
return vehicle
|
555
570
|
|
556
571
|
def fetch_vehicle_mycar_status(self, vehicle: SeatCupraVehicle, no_cache: bool = False) -> SeatCupraVehicle:
|
@@ -922,8 +937,11 @@ class Connector(BaseConnector):
|
|
922
937
|
plug_power_state: ChargingConnector.ExternalPower = \
|
923
938
|
ChargingConnector.ExternalPower(data['plug']['externalPower'])
|
924
939
|
else:
|
925
|
-
|
926
|
-
|
940
|
+
if data['plug']['externalPower'] == 'ready':
|
941
|
+
plug_power_state = ChargingConnector.ExternalPower.AVAILABLE
|
942
|
+
else:
|
943
|
+
LOG_API.info('Unknown plug power state %s', data['plug']['externalPower'])
|
944
|
+
plug_power_state = ChargingConnector.ExternalPower.UNKNOWN
|
927
945
|
vehicle.charging.connector.external_power._set_value(value=plug_power_state) # pylint: disable=protected-access
|
928
946
|
else:
|
929
947
|
vehicle.charging.connector.external_power._set_value(None) # pylint: disable=protected-access
|
@@ -994,7 +1012,7 @@ class Connector(BaseConnector):
|
|
994
1012
|
if img is None or self.active_config['max_age'] is None \
|
995
1013
|
or (cache_date is not None and cache_date < (datetime.utcnow() - timedelta(seconds=self.active_config['max_age']))):
|
996
1014
|
try:
|
997
|
-
image_download_response = requests.get(image_url, stream=True, timeout=
|
1015
|
+
image_download_response = requests.get(image_url, stream=True, timeout=10)
|
998
1016
|
if image_download_response.status_code == requests.codes['ok']:
|
999
1017
|
img = Image.open(image_download_response.raw) # pyright: ignore[reportPossiblyUnboundVariable]
|
1000
1018
|
if self.session.cache is not None:
|
@@ -1105,19 +1123,10 @@ class Connector(BaseConnector):
|
|
1105
1123
|
try:
|
1106
1124
|
if command_arguments['command'] == ChargingStartStopCommand.Command.START:
|
1107
1125
|
url = f'https://ola.prod.code.seat.cloud.vwgroup.com/vehicles/{vin}/charging/requests/start'
|
1108
|
-
|
1109
|
-
and vehicle.charging.settings.maximum_current is not None and vehicle.charging.settings.maximum_current.enabled \
|
1110
|
-
and vehicle.charging.settings.maximum_current.value is not None:
|
1111
|
-
if vehicle.charging.settings.maximum_current.value <= 6:
|
1112
|
-
command_dict['maxChargeCurrentAC'] = 'reduced'
|
1113
|
-
else:
|
1114
|
-
command_dict['maxChargeCurrentAC'] = 'maximum'
|
1115
|
-
else:
|
1116
|
-
command_dict['maxChargeCurrentAC'] = 'maximum'
|
1117
|
-
command_response: requests.Response = self.session.post(url, json=command_dict, allow_redirects=True)
|
1126
|
+
command_response: requests.Response = self.session.post(url, allow_redirects=True)
|
1118
1127
|
elif command_arguments['command'] == ChargingStartStopCommand.Command.STOP:
|
1119
1128
|
url = f'https://ola.prod.code.seat.cloud.vwgroup.com/vehicles/{vin}/charging/requests/stop'
|
1120
|
-
command_response: requests.Response = self.session.post(url,
|
1129
|
+
command_response: requests.Response = self.session.post(url, allow_redirects=True)
|
1121
1130
|
else:
|
1122
1131
|
raise CommandError(f'Unknown command {command_arguments["command"]}')
|
1123
1132
|
|
{carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.flake8
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/.gitignore
RENAMED
File without changes
|
File without changes
|
{carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/LICENSE
RENAMED
File without changes
|
{carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/Makefile
RENAMED
File without changes
|
{carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/README.md
RENAMED
File without changes
|
File without changes
|
{carconnectivity_connector_seatcupra-0.1a11 → carconnectivity_connector_seatcupra-0.1a13}/setup.cfg
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
|