carconnectivity-cli 0.1a1__tar.gz → 0.3__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_cli-0.1a1 → carconnectivity_cli-0.3}/.github/workflows/build.yml +5 -0
- carconnectivity_cli-0.3/CHANGELOG.md +20 -0
- carconnectivity_cli-0.3/PKG-INFO +219 -0
- carconnectivity_cli-0.3/README.md +167 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/pyproject.toml +13 -1
- carconnectivity_cli-0.3/setup_requirements.txt +3 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli/_version.py +9 -4
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli/carconnectivity_cli_base.py +24 -18
- carconnectivity_cli-0.3/src/carconnectivity_cli.egg-info/PKG-INFO +219 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli.egg-info/SOURCES.txt +1 -0
- carconnectivity_cli-0.3/src/carconnectivity_cli.egg-info/requires.txt +11 -0
- carconnectivity_cli-0.1a1/PKG-INFO +0 -92
- carconnectivity_cli-0.1a1/README.md +0 -48
- carconnectivity_cli-0.1a1/setup_requirements.txt +0 -3
- carconnectivity_cli-0.1a1/src/carconnectivity_cli.egg-info/PKG-INFO +0 -92
- carconnectivity_cli-0.1a1/src/carconnectivity_cli.egg-info/requires.txt +0 -1
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.flake8 +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.github/dependabot.yml +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.github/workflows/build_and_publish.yml +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.github/workflows/codeql-analysis.yml +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.gitignore +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/LICENSE +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/Makefile +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/setup.cfg +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli/__init__.py +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli.egg-info/dependency_links.txt +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli.egg-info/entry_points.txt +0 -0
- {carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli.egg-info/top_level.txt +0 -0
|
@@ -10,10 +10,12 @@ on:
|
|
|
10
10
|
paths:
|
|
11
11
|
- .github/workflows/build.yml
|
|
12
12
|
- '**.py'
|
|
13
|
+
- 'pyproject.toml'
|
|
13
14
|
pull_request:
|
|
14
15
|
paths:
|
|
15
16
|
- .github/workflows/build.yml
|
|
16
17
|
- '**.py'
|
|
18
|
+
- 'pyproject.toml'
|
|
17
19
|
|
|
18
20
|
jobs:
|
|
19
21
|
build-python:
|
|
@@ -39,6 +41,9 @@ jobs:
|
|
|
39
41
|
- name: Install built package
|
|
40
42
|
run: |
|
|
41
43
|
pip install dist/*.whl
|
|
44
|
+
- name: Run
|
|
45
|
+
run: |
|
|
46
|
+
carconnectivity-cli --version
|
|
42
47
|
- name: Lint
|
|
43
48
|
run: |
|
|
44
49
|
make lint
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
- No unreleased changes so far
|
|
7
|
+
|
|
8
|
+
## [0.3] - 2025-03-02
|
|
9
|
+
- Bump carconnectivity dependency to 0.4
|
|
10
|
+
|
|
11
|
+
## [0.2] - 2025-02-19
|
|
12
|
+
- Bump carconnectivity dependency to 0.3
|
|
13
|
+
|
|
14
|
+
## [0.1] - 2025-01-25
|
|
15
|
+
Initial release, let's go and give this to the public to try out...
|
|
16
|
+
|
|
17
|
+
[unreleased]: https://github.com/tillsteinbach/CarConnectivity-cli/compare/v0.3...HEAD
|
|
18
|
+
[0.3]: https://github.com/tillsteinbach/CarConnectivity-cli/releases/tag/v0.3
|
|
19
|
+
[0.2]: https://github.com/tillsteinbach/CarConnectivity-cli/releases/tag/v0.2
|
|
20
|
+
[0.1]: https://github.com/tillsteinbach/CarConnectivity-cli/releases/tag/v0.1
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: carconnectivity-cli
|
|
3
|
+
Version: 0.3
|
|
4
|
+
Summary: Library for retrieving information from car connectivity services
|
|
5
|
+
Author: Till Steinbach
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2021 Till Steinbach
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
Classifier: Development Status :: 3 - Alpha
|
|
29
|
+
Classifier: Environment :: Console
|
|
30
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
32
|
+
Classifier: Intended Audience :: System Administrators
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
38
|
+
Classifier: Topic :: Utilities
|
|
39
|
+
Classifier: Topic :: System :: Monitoring
|
|
40
|
+
Requires-Python: >=3.9
|
|
41
|
+
Description-Content-Type: text/markdown
|
|
42
|
+
License-File: LICENSE
|
|
43
|
+
Requires-Dist: carconnectivity>=0.4
|
|
44
|
+
Requires-Dist: argparse
|
|
45
|
+
Requires-Dist: JSON_minify~=0.3.0
|
|
46
|
+
Provides-Extra: connectors
|
|
47
|
+
Requires-Dist: carconnectivity-connector-volkswagen; extra == "connectors"
|
|
48
|
+
Requires-Dist: carconnectivity-connector-skoda; extra == "connectors"
|
|
49
|
+
Provides-Extra: plugins
|
|
50
|
+
Requires-Dist: carconnectivity-plugin-abrp; extra == "plugins"
|
|
51
|
+
Requires-Dist: carconnectivity-plugin-homekit; extra == "plugins"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# CarConnectivity Command Line Interface
|
|
56
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/)
|
|
57
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/releases/latest)
|
|
58
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/blob/master/LICENSE)
|
|
59
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/issues)
|
|
60
|
+
[](https://pypi.org/project/carconnectivity-cli/)
|
|
61
|
+
[](https://pypi.org/project/carconnectivity-cli/)
|
|
62
|
+
[](https://www.paypal.com/donate?hosted_button_id=2BVFF5GJ9SXAJ)
|
|
63
|
+
[](https://github.com/sponsors/tillsteinbach)
|
|
64
|
+
|
|
65
|
+
## CarConnectivity will become the successor of [WeConnect-python](https://github.com/tillsteinbach/WeConnect-python) in 2025 with similar functionality but support for other brands beyond Volkswagen!
|
|
66
|
+
|
|
67
|
+
## Supported Car Brands
|
|
68
|
+
CarConenctivity uses a plugin architecture to enable access to the services of various brands. Currently known plugins are:
|
|
69
|
+
|
|
70
|
+
| Brand | Connector |
|
|
71
|
+
|-----------------------------------|---------------------------------------------------------------------------------------------------------------|
|
|
72
|
+
| Skoda | [CarConnectivity-connector-skoda](https://github.com/tillsteinbach/CarConnectivity-connector-skoda) |
|
|
73
|
+
| Volkswagen | [CarConnectivity-connector-volkswagen](https://github.com/tillsteinbach/CarConnectivity-connector-volkswagen) |
|
|
74
|
+
| [Tronity](https://www.tronity.io) | [CarConnectivity-connector-tronity](https://github.com/tillsteinbach/CarConnectivity-connector-tronity) |
|
|
75
|
+
|
|
76
|
+
If you know of a connector not listed here let me know and I will add it to the list.
|
|
77
|
+
If you are a python developer and willing to implement a connector for a brand not listed here, let me know and I try to support you as good as possible
|
|
78
|
+
|
|
79
|
+
## How to install
|
|
80
|
+
You first need a running [Python](https://www.python.org/downloads/) installation. Afterwards you can install CarConnectivity-cli with:
|
|
81
|
+
```
|
|
82
|
+
pip install carconnectivity-cli
|
|
83
|
+
```
|
|
84
|
+
You also need the right connector for your vehicle, e.g.
|
|
85
|
+
```
|
|
86
|
+
pip install carconnectivity-connector-skoda
|
|
87
|
+
```
|
|
88
|
+
or you installed CarConnectivity-cli with all known connectors and plugins:
|
|
89
|
+
```
|
|
90
|
+
pip3 install 'carconnectivity-cli[connectors,plugins]'
|
|
91
|
+
```
|
|
92
|
+
The plugins will then become active when you add them to your configuration.
|
|
93
|
+
|
|
94
|
+
## How to use
|
|
95
|
+
Start by creating a carconnectivity.json configuration file
|
|
96
|
+
|
|
97
|
+
### Configuration
|
|
98
|
+
In your carconnectivity.json configuration add a section for the connectors you like to use like this:
|
|
99
|
+
```
|
|
100
|
+
{
|
|
101
|
+
"carConnectivity": {
|
|
102
|
+
"connectors": [
|
|
103
|
+
{
|
|
104
|
+
"type": "volkswagen",
|
|
105
|
+
"config": {
|
|
106
|
+
"username": "test@test.de"
|
|
107
|
+
"password": "testpassword123"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"type": "skoda",
|
|
112
|
+
"config": {
|
|
113
|
+
"username": "test@test.de"
|
|
114
|
+
"password": "testpassword123"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
The detailed configuration options of the connectors can be found in their README files.
|
|
122
|
+
|
|
123
|
+
### How to use the commandline interface
|
|
124
|
+
Start carconnectivity-cli from the commandline, by default you will enter the interactive shell:
|
|
125
|
+
```bash
|
|
126
|
+
carconnectivity-cli mycarconnectivity_config.json
|
|
127
|
+
```
|
|
128
|
+
You get all the usage information by using the --help command
|
|
129
|
+
```bash
|
|
130
|
+
carconnectivity-cli mycarconnectivity_config.json --help
|
|
131
|
+
```
|
|
132
|
+
With the "list" command you can get a list of all available information you can query (use "list -s" if you want to see which attributes can be changed)
|
|
133
|
+
```bash
|
|
134
|
+
carconnectivity-cli mycarconnectivity_config.json list
|
|
135
|
+
/garage/WVWABCE1ZSD057394
|
|
136
|
+
/garage/WVWABCE1ZSD057394/vin
|
|
137
|
+
/garage/WVWABCE1ZSD057394/type
|
|
138
|
+
/garage/WVWABCE1ZSD057394/odometer
|
|
139
|
+
/garage/WVWABCE1ZSD057394/model
|
|
140
|
+
/garage/WVWABCE1ZSD057394/name
|
|
141
|
+
...
|
|
142
|
+
```
|
|
143
|
+
You can then pass the addresses to the "get" command:
|
|
144
|
+
```bash
|
|
145
|
+
carconnectivity-cli mycarconnectivity_config.json get /garage/WVWABCE1ZSD057394/model
|
|
146
|
+
ID.3
|
|
147
|
+
```
|
|
148
|
+
or the "set" command:
|
|
149
|
+
```bash
|
|
150
|
+
carconnectivity-cli mycarconnectivity_config.json /garage/WVWABCE1ZSD057394/climatisation/command stop
|
|
151
|
+
```
|
|
152
|
+
The "events" command allows you to monitor what is happening on the WeConnect Interface:
|
|
153
|
+
```bash
|
|
154
|
+
carconnectivity-cli mycarconnectivity_config.json events
|
|
155
|
+
2021-05-26 16:49:58.698570: /garage/WVWABCE1ZSD057394/doors/lock_state: new value: unlocked
|
|
156
|
+
2021-05-26 16:49:58.698751: /garage/WVWABCE1ZSD057394/doors/bonnet/lock_state: new value: unknown lock state
|
|
157
|
+
2021-05-26 16:49:58.698800: /garage/WVWABCE1ZSD057394/doors/bonnet/open_state: new value: closed
|
|
158
|
+
2021-05-26 16:49:58.698980: /garage/WVWABCE1ZSD057394/doors/frontLeft/lock_state: new value: unlocked
|
|
159
|
+
2021-05-26 16:49:58.699056: /garage/WVWABCE1ZSD057394/doors/frontLeft/open_state: new value: closed
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### S-PIN
|
|
163
|
+
For some commands (e.g. locking/unlocking supported on some cars) you need in addition to your login the so called S-PIN, you can provide it with the spin config option:
|
|
164
|
+
|
|
165
|
+
### Interactive Shell
|
|
166
|
+
You can also use an interactive shell:
|
|
167
|
+
```
|
|
168
|
+
carconnectivity-cli --username user@mail.de --password test123 shell
|
|
169
|
+
Welcome! Type ? to list commands
|
|
170
|
+
user@mail.de@weconnect-sh:/$update
|
|
171
|
+
update done
|
|
172
|
+
user@mail.de@weconnect-sh:/$cd garage
|
|
173
|
+
user@mail.de@weconnect-sh:/garage$ ls
|
|
174
|
+
..
|
|
175
|
+
WVWABCE1ZSD057394
|
|
176
|
+
WVWABCE13SD057505
|
|
177
|
+
user@mail.de@weconnect-sh:/garage$ cd /garage/WVWABCE13SD057505/status/parkingPosition
|
|
178
|
+
user@mail.de@weconnect-sh:/garage/WVWABCE13SD057505/status/parkingPosition$ cat
|
|
179
|
+
[parkingPosition] (last captured 2021-06-01T19:05:04+00:00)
|
|
180
|
+
Latitude: 51.674535
|
|
181
|
+
Longitude: 16.154376
|
|
182
|
+
user@mail.de@weconnect-sh:/garage/WVWABCE13SD057505/parking/parkingPosition$ exit
|
|
183
|
+
Bye
|
|
184
|
+
```
|
|
185
|
+
### Caching
|
|
186
|
+
By default carconnectivity-cli will cache (store) the data for 300 seconds before retrieving new data from the servers. This makes carconnectivity-cli more responsive and at the same time does not cause unneccessary requests to the vw servers. If you want to increase the cache duration use max_age config option. If you do not want to cache use no_cache option. Please use the no_cache option with care. You are generating traffic with subsequent requests. If you request too often you might be blocked for some time until you can generate requests again.
|
|
187
|
+
|
|
188
|
+
### Credentials
|
|
189
|
+
If you do not want to provide your username or password all the time you have to create a ".netrc" file at the appropriate location (usually this is your home folder):
|
|
190
|
+
```
|
|
191
|
+
machine volkswagen.de
|
|
192
|
+
login test@test.de
|
|
193
|
+
password testpassword123
|
|
194
|
+
```
|
|
195
|
+
You can also provide the location of the netrc file in the configuration.
|
|
196
|
+
|
|
197
|
+
The optional S-PIN needed for some commands can be provided in the account section:
|
|
198
|
+
```
|
|
199
|
+
# For WeConnect
|
|
200
|
+
machine volkswagen.de
|
|
201
|
+
login test@test.de
|
|
202
|
+
password testpassword123
|
|
203
|
+
account 1234
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Tested with
|
|
207
|
+
- Volkswagen ID.3 Modelyear 2021
|
|
208
|
+
- Volkswagen Passat GTE Modelyear 2021
|
|
209
|
+
- Skoda Enyaq RS Modelyear 2025
|
|
210
|
+
|
|
211
|
+
## Reporting Issues
|
|
212
|
+
Please feel free to open an issue at [GitHub Issue page](https://github.com/tillsteinbach/carconnectivity-cli/issues) to report problems you found.
|
|
213
|
+
|
|
214
|
+
### Known Issues
|
|
215
|
+
- The Tool is in alpha state and may change unexpectedly at any time!
|
|
216
|
+
|
|
217
|
+
## Related Projects:
|
|
218
|
+
- [CarConnectivity-plugin-mqtt](https://github.com/tillsteinbach/CarConnectivity-plugin-mqtt): MQTT Client that publishes data from CarConnectivity to any MQTT broker.
|
|
219
|
+
- [CarConnectivity](https://github.com/tillsteinbach/CarConnectivity): The underlying python API behind CarConnectivity-cli. If you are a developer and want to implement an application or service with vehicle telemetry data you can use [CarConnectivity-Library](https://github.com/tillsteinbach/CarConnectivity).
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
# CarConnectivity Command Line Interface
|
|
4
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/)
|
|
5
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/releases/latest)
|
|
6
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/blob/master/LICENSE)
|
|
7
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/issues)
|
|
8
|
+
[](https://pypi.org/project/carconnectivity-cli/)
|
|
9
|
+
[](https://pypi.org/project/carconnectivity-cli/)
|
|
10
|
+
[](https://www.paypal.com/donate?hosted_button_id=2BVFF5GJ9SXAJ)
|
|
11
|
+
[](https://github.com/sponsors/tillsteinbach)
|
|
12
|
+
|
|
13
|
+
## CarConnectivity will become the successor of [WeConnect-python](https://github.com/tillsteinbach/WeConnect-python) in 2025 with similar functionality but support for other brands beyond Volkswagen!
|
|
14
|
+
|
|
15
|
+
## Supported Car Brands
|
|
16
|
+
CarConenctivity uses a plugin architecture to enable access to the services of various brands. Currently known plugins are:
|
|
17
|
+
|
|
18
|
+
| Brand | Connector |
|
|
19
|
+
|-----------------------------------|---------------------------------------------------------------------------------------------------------------|
|
|
20
|
+
| Skoda | [CarConnectivity-connector-skoda](https://github.com/tillsteinbach/CarConnectivity-connector-skoda) |
|
|
21
|
+
| Volkswagen | [CarConnectivity-connector-volkswagen](https://github.com/tillsteinbach/CarConnectivity-connector-volkswagen) |
|
|
22
|
+
| [Tronity](https://www.tronity.io) | [CarConnectivity-connector-tronity](https://github.com/tillsteinbach/CarConnectivity-connector-tronity) |
|
|
23
|
+
|
|
24
|
+
If you know of a connector not listed here let me know and I will add it to the list.
|
|
25
|
+
If you are a python developer and willing to implement a connector for a brand not listed here, let me know and I try to support you as good as possible
|
|
26
|
+
|
|
27
|
+
## How to install
|
|
28
|
+
You first need a running [Python](https://www.python.org/downloads/) installation. Afterwards you can install CarConnectivity-cli with:
|
|
29
|
+
```
|
|
30
|
+
pip install carconnectivity-cli
|
|
31
|
+
```
|
|
32
|
+
You also need the right connector for your vehicle, e.g.
|
|
33
|
+
```
|
|
34
|
+
pip install carconnectivity-connector-skoda
|
|
35
|
+
```
|
|
36
|
+
or you installed CarConnectivity-cli with all known connectors and plugins:
|
|
37
|
+
```
|
|
38
|
+
pip3 install 'carconnectivity-cli[connectors,plugins]'
|
|
39
|
+
```
|
|
40
|
+
The plugins will then become active when you add them to your configuration.
|
|
41
|
+
|
|
42
|
+
## How to use
|
|
43
|
+
Start by creating a carconnectivity.json configuration file
|
|
44
|
+
|
|
45
|
+
### Configuration
|
|
46
|
+
In your carconnectivity.json configuration add a section for the connectors you like to use like this:
|
|
47
|
+
```
|
|
48
|
+
{
|
|
49
|
+
"carConnectivity": {
|
|
50
|
+
"connectors": [
|
|
51
|
+
{
|
|
52
|
+
"type": "volkswagen",
|
|
53
|
+
"config": {
|
|
54
|
+
"username": "test@test.de"
|
|
55
|
+
"password": "testpassword123"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "skoda",
|
|
60
|
+
"config": {
|
|
61
|
+
"username": "test@test.de"
|
|
62
|
+
"password": "testpassword123"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
The detailed configuration options of the connectors can be found in their README files.
|
|
70
|
+
|
|
71
|
+
### How to use the commandline interface
|
|
72
|
+
Start carconnectivity-cli from the commandline, by default you will enter the interactive shell:
|
|
73
|
+
```bash
|
|
74
|
+
carconnectivity-cli mycarconnectivity_config.json
|
|
75
|
+
```
|
|
76
|
+
You get all the usage information by using the --help command
|
|
77
|
+
```bash
|
|
78
|
+
carconnectivity-cli mycarconnectivity_config.json --help
|
|
79
|
+
```
|
|
80
|
+
With the "list" command you can get a list of all available information you can query (use "list -s" if you want to see which attributes can be changed)
|
|
81
|
+
```bash
|
|
82
|
+
carconnectivity-cli mycarconnectivity_config.json list
|
|
83
|
+
/garage/WVWABCE1ZSD057394
|
|
84
|
+
/garage/WVWABCE1ZSD057394/vin
|
|
85
|
+
/garage/WVWABCE1ZSD057394/type
|
|
86
|
+
/garage/WVWABCE1ZSD057394/odometer
|
|
87
|
+
/garage/WVWABCE1ZSD057394/model
|
|
88
|
+
/garage/WVWABCE1ZSD057394/name
|
|
89
|
+
...
|
|
90
|
+
```
|
|
91
|
+
You can then pass the addresses to the "get" command:
|
|
92
|
+
```bash
|
|
93
|
+
carconnectivity-cli mycarconnectivity_config.json get /garage/WVWABCE1ZSD057394/model
|
|
94
|
+
ID.3
|
|
95
|
+
```
|
|
96
|
+
or the "set" command:
|
|
97
|
+
```bash
|
|
98
|
+
carconnectivity-cli mycarconnectivity_config.json /garage/WVWABCE1ZSD057394/climatisation/command stop
|
|
99
|
+
```
|
|
100
|
+
The "events" command allows you to monitor what is happening on the WeConnect Interface:
|
|
101
|
+
```bash
|
|
102
|
+
carconnectivity-cli mycarconnectivity_config.json events
|
|
103
|
+
2021-05-26 16:49:58.698570: /garage/WVWABCE1ZSD057394/doors/lock_state: new value: unlocked
|
|
104
|
+
2021-05-26 16:49:58.698751: /garage/WVWABCE1ZSD057394/doors/bonnet/lock_state: new value: unknown lock state
|
|
105
|
+
2021-05-26 16:49:58.698800: /garage/WVWABCE1ZSD057394/doors/bonnet/open_state: new value: closed
|
|
106
|
+
2021-05-26 16:49:58.698980: /garage/WVWABCE1ZSD057394/doors/frontLeft/lock_state: new value: unlocked
|
|
107
|
+
2021-05-26 16:49:58.699056: /garage/WVWABCE1ZSD057394/doors/frontLeft/open_state: new value: closed
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### S-PIN
|
|
111
|
+
For some commands (e.g. locking/unlocking supported on some cars) you need in addition to your login the so called S-PIN, you can provide it with the spin config option:
|
|
112
|
+
|
|
113
|
+
### Interactive Shell
|
|
114
|
+
You can also use an interactive shell:
|
|
115
|
+
```
|
|
116
|
+
carconnectivity-cli --username user@mail.de --password test123 shell
|
|
117
|
+
Welcome! Type ? to list commands
|
|
118
|
+
user@mail.de@weconnect-sh:/$update
|
|
119
|
+
update done
|
|
120
|
+
user@mail.de@weconnect-sh:/$cd garage
|
|
121
|
+
user@mail.de@weconnect-sh:/garage$ ls
|
|
122
|
+
..
|
|
123
|
+
WVWABCE1ZSD057394
|
|
124
|
+
WVWABCE13SD057505
|
|
125
|
+
user@mail.de@weconnect-sh:/garage$ cd /garage/WVWABCE13SD057505/status/parkingPosition
|
|
126
|
+
user@mail.de@weconnect-sh:/garage/WVWABCE13SD057505/status/parkingPosition$ cat
|
|
127
|
+
[parkingPosition] (last captured 2021-06-01T19:05:04+00:00)
|
|
128
|
+
Latitude: 51.674535
|
|
129
|
+
Longitude: 16.154376
|
|
130
|
+
user@mail.de@weconnect-sh:/garage/WVWABCE13SD057505/parking/parkingPosition$ exit
|
|
131
|
+
Bye
|
|
132
|
+
```
|
|
133
|
+
### Caching
|
|
134
|
+
By default carconnectivity-cli will cache (store) the data for 300 seconds before retrieving new data from the servers. This makes carconnectivity-cli more responsive and at the same time does not cause unneccessary requests to the vw servers. If you want to increase the cache duration use max_age config option. If you do not want to cache use no_cache option. Please use the no_cache option with care. You are generating traffic with subsequent requests. If you request too often you might be blocked for some time until you can generate requests again.
|
|
135
|
+
|
|
136
|
+
### Credentials
|
|
137
|
+
If you do not want to provide your username or password all the time you have to create a ".netrc" file at the appropriate location (usually this is your home folder):
|
|
138
|
+
```
|
|
139
|
+
machine volkswagen.de
|
|
140
|
+
login test@test.de
|
|
141
|
+
password testpassword123
|
|
142
|
+
```
|
|
143
|
+
You can also provide the location of the netrc file in the configuration.
|
|
144
|
+
|
|
145
|
+
The optional S-PIN needed for some commands can be provided in the account section:
|
|
146
|
+
```
|
|
147
|
+
# For WeConnect
|
|
148
|
+
machine volkswagen.de
|
|
149
|
+
login test@test.de
|
|
150
|
+
password testpassword123
|
|
151
|
+
account 1234
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Tested with
|
|
155
|
+
- Volkswagen ID.3 Modelyear 2021
|
|
156
|
+
- Volkswagen Passat GTE Modelyear 2021
|
|
157
|
+
- Skoda Enyaq RS Modelyear 2025
|
|
158
|
+
|
|
159
|
+
## Reporting Issues
|
|
160
|
+
Please feel free to open an issue at [GitHub Issue page](https://github.com/tillsteinbach/carconnectivity-cli/issues) to report problems you found.
|
|
161
|
+
|
|
162
|
+
### Known Issues
|
|
163
|
+
- The Tool is in alpha state and may change unexpectedly at any time!
|
|
164
|
+
|
|
165
|
+
## Related Projects:
|
|
166
|
+
- [CarConnectivity-plugin-mqtt](https://github.com/tillsteinbach/CarConnectivity-plugin-mqtt): MQTT Client that publishes data from CarConnectivity to any MQTT broker.
|
|
167
|
+
- [CarConnectivity](https://github.com/tillsteinbach/CarConnectivity): The underlying python API behind CarConnectivity-cli. If you are a developer and want to implement an application or service with vehicle telemetry data you can use [CarConnectivity-Library](https://github.com/tillsteinbach/CarConnectivity).
|
|
@@ -14,7 +14,9 @@ authors = [
|
|
|
14
14
|
{ name = "Till Steinbach" }
|
|
15
15
|
]
|
|
16
16
|
dependencies = [
|
|
17
|
-
"
|
|
17
|
+
"carconnectivity>=0.4",
|
|
18
|
+
"argparse",
|
|
19
|
+
"JSON_minify~=0.3.0"
|
|
18
20
|
]
|
|
19
21
|
readme = "README.md"
|
|
20
22
|
license = { file = "LICENSE" }
|
|
@@ -33,6 +35,16 @@ classifiers = [
|
|
|
33
35
|
'Topic :: System :: Monitoring',
|
|
34
36
|
]
|
|
35
37
|
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
connectors = [
|
|
40
|
+
'carconnectivity-connector-volkswagen',
|
|
41
|
+
'carconnectivity-connector-skoda',
|
|
42
|
+
]
|
|
43
|
+
plugins = [
|
|
44
|
+
'carconnectivity-plugin-abrp',
|
|
45
|
+
'carconnectivity-plugin-homekit',
|
|
46
|
+
]
|
|
47
|
+
|
|
36
48
|
[project.urls]
|
|
37
49
|
|
|
38
50
|
[project.scripts]
|
|
@@ -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.3'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 3)
|
|
@@ -11,9 +11,12 @@ import tempfile
|
|
|
11
11
|
import cmd
|
|
12
12
|
import json
|
|
13
13
|
import time
|
|
14
|
-
from datetime import datetime
|
|
14
|
+
from datetime import datetime, timezone
|
|
15
15
|
|
|
16
|
-
from
|
|
16
|
+
from json_minify import json_minify
|
|
17
|
+
|
|
18
|
+
from carconnectivity import carconnectivity, errors, util, objects, observable
|
|
19
|
+
from carconnectivity.attributes import GenericAttribute
|
|
17
20
|
from carconnectivity._version import __version__ as __carconnectivity_version__
|
|
18
21
|
|
|
19
22
|
from carconnectivity_cli._version import __version__
|
|
@@ -21,7 +24,6 @@ from carconnectivity_cli._version import __version__
|
|
|
21
24
|
if TYPE_CHECKING:
|
|
22
25
|
from typing import Literal, List
|
|
23
26
|
from carconnectivity.objects import GenericObject
|
|
24
|
-
from carconnectivity.attributes import GenericAttribute
|
|
25
27
|
|
|
26
28
|
LOG_LEVELS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
|
|
27
29
|
DEFAULT_LOG_LEVEL = "ERROR"
|
|
@@ -124,9 +126,10 @@ def main() -> None: # noqa: C901 # pylint: disable=too-many-statements,too-many
|
|
|
124
126
|
handler.addFilter(util.DuplicateFilter())
|
|
125
127
|
|
|
126
128
|
try: # pylint: disable=too-many-nested-blocks
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
try:
|
|
130
|
+
with open(file=args.config, mode='r', encoding='utf-8') as config_file:
|
|
131
|
+
config_dict = json.loads(json_minify(config_file.read(), strip_space=False))
|
|
132
|
+
car_connectivity = carconnectivity.CarConnectivity(config=config_dict, tokenstore_file=args.tokenfile, cache_file=args.cachefile)
|
|
130
133
|
|
|
131
134
|
if args.command == 'shell':
|
|
132
135
|
try:
|
|
@@ -139,13 +142,13 @@ def main() -> None: # noqa: C901 # pylint: disable=too-many-statements,too-many
|
|
|
139
142
|
all_elements: List[GenericAttribute] = car_connectivity.get_attributes(recursive=True)
|
|
140
143
|
for element in all_elements:
|
|
141
144
|
if args.setters:
|
|
142
|
-
if
|
|
145
|
+
if element.is_changeable:
|
|
143
146
|
print(element.get_absolute_path())
|
|
144
147
|
else:
|
|
145
148
|
print(element.get_absolute_path())
|
|
146
149
|
elif args.command == 'get':
|
|
147
150
|
car_connectivity.fetch_all()
|
|
148
|
-
element: carconnectivity.GenericObject |
|
|
151
|
+
element: carconnectivity.GenericObject | GenericAttribute | bool = car_connectivity.get_by_path(args.id)
|
|
149
152
|
if element:
|
|
150
153
|
if args.format == Formats.STRING:
|
|
151
154
|
if isinstance(element, dict):
|
|
@@ -162,10 +165,10 @@ def main() -> None: # noqa: C901 # pylint: disable=too-many-statements,too-many
|
|
|
162
165
|
sys.exit('id not found')
|
|
163
166
|
elif args.command == 'set':
|
|
164
167
|
car_connectivity.fetch_all()
|
|
165
|
-
element:
|
|
168
|
+
element: GenericObject | GenericAttribute | bool = car_connectivity.get_by_path(args.id)
|
|
166
169
|
if element:
|
|
167
170
|
try:
|
|
168
|
-
if isinstance(element,
|
|
171
|
+
if isinstance(element, GenericAttribute) and element.is_changeable:
|
|
169
172
|
element.value = args.value
|
|
170
173
|
else:
|
|
171
174
|
print(f'id {args.id} cannot be set. You can see all changeable entries with "list -s', file=sys.stderr)
|
|
@@ -183,21 +186,22 @@ def main() -> None: # noqa: C901 # pylint: disable=too-many-statements,too-many
|
|
|
183
186
|
sys.exit('id not found')
|
|
184
187
|
elif args.command == 'events':
|
|
185
188
|
car_connectivity.startup()
|
|
189
|
+
|
|
186
190
|
def observer(element, flags):
|
|
187
191
|
if flags & observable.Observable.ObserverEvent.ENABLED:
|
|
188
|
-
print(str(datetime.now()) + ': ' + element.get_absolute_path() + ': new object created')
|
|
192
|
+
print(str(datetime.now(tz=timezone.utc)) + ': ' + element.get_absolute_path() + ': new object created')
|
|
189
193
|
elif flags & observable.Observable.ObserverEvent.DISABLED:
|
|
190
|
-
print(str(datetime.now()) + ': ' + element.get_absolute_path() + ': object not available anymore')
|
|
194
|
+
print(str(datetime.now(tz=timezone.utc)) + ': ' + element.get_absolute_path() + ': object not available anymore')
|
|
191
195
|
elif flags & observable.Observable.ObserverEvent.VALUE_CHANGED:
|
|
192
|
-
print(str(datetime.now()) + ': ' + element.get_absolute_path() + ': new value: ' + str(element))
|
|
196
|
+
print(str(datetime.now(tz=timezone.utc)) + ': ' + element.get_absolute_path() + ': new value: ' + str(element))
|
|
193
197
|
elif flags & observable.Observable.ObserverEvent.UPDATED_NEW_MEASUREMENT:
|
|
194
|
-
print(str(datetime.now()) + ': ' + element.get_absolute_path()
|
|
198
|
+
print(str(datetime.now(tz=timezone.utc)) + ': ' + element.get_absolute_path()
|
|
195
199
|
+ ': was updated from vehicle but did not change: ' + str(element))
|
|
196
200
|
elif flags & observable.Observable.ObserverEvent.UPDATED:
|
|
197
|
-
print(str(datetime.now()) + ': ' + element.get_absolute_path()
|
|
201
|
+
print(str(datetime.now(tz=timezone.utc)) + ': ' + element.get_absolute_path()
|
|
198
202
|
+ ': was updated from server but did not change: ' + str(element))
|
|
199
203
|
else:
|
|
200
|
-
print(str(datetime.now()) + ' (' + str(flags) + '): '
|
|
204
|
+
print(str(datetime.now(tz=timezone.utc)) + ' (' + str(flags) + '): '
|
|
201
205
|
+ element.get_absolute_path() + ': ' + str(element))
|
|
202
206
|
car_connectivity.add_observer(observer, observable.Observable.ObserverEvent.ALL,
|
|
203
207
|
priority=observable.Observable.ObserverPriority.USER_MID)
|
|
@@ -209,8 +213,10 @@ def main() -> None: # noqa: C901 # pylint: disable=too-many-statements,too-many
|
|
|
209
213
|
else:
|
|
210
214
|
LOG.error('command not implemented')
|
|
211
215
|
sys.exit('command not implemented')
|
|
212
|
-
|
|
213
216
|
car_connectivity.shutdown()
|
|
217
|
+
except FileNotFoundError as e:
|
|
218
|
+
LOG.critical('Could not find configuration file %s (%s)', args.config, e)
|
|
219
|
+
sys.exit('Could not find configuration file')
|
|
214
220
|
except json.JSONDecodeError as e:
|
|
215
221
|
LOG.critical('Could not load configuration file %s (%s)', args.config, e)
|
|
216
222
|
sys.exit('Could not load configuration file')
|
|
@@ -513,7 +519,7 @@ class CarConnectivityShell(cmd.Cmd):
|
|
|
513
519
|
all_elements = self.pwd.get_attributes(recursive=True)
|
|
514
520
|
for element in all_elements:
|
|
515
521
|
if setters:
|
|
516
|
-
if isinstance(element,
|
|
522
|
+
if isinstance(element, GenericAttribute) and element.is_changeable:
|
|
517
523
|
print(element.get_absolute_path())
|
|
518
524
|
else:
|
|
519
525
|
print(element.get_absolute_path())
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: carconnectivity-cli
|
|
3
|
+
Version: 0.3
|
|
4
|
+
Summary: Library for retrieving information from car connectivity services
|
|
5
|
+
Author: Till Steinbach
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2021 Till Steinbach
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
Classifier: Development Status :: 3 - Alpha
|
|
29
|
+
Classifier: Environment :: Console
|
|
30
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
32
|
+
Classifier: Intended Audience :: System Administrators
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
38
|
+
Classifier: Topic :: Utilities
|
|
39
|
+
Classifier: Topic :: System :: Monitoring
|
|
40
|
+
Requires-Python: >=3.9
|
|
41
|
+
Description-Content-Type: text/markdown
|
|
42
|
+
License-File: LICENSE
|
|
43
|
+
Requires-Dist: carconnectivity>=0.4
|
|
44
|
+
Requires-Dist: argparse
|
|
45
|
+
Requires-Dist: JSON_minify~=0.3.0
|
|
46
|
+
Provides-Extra: connectors
|
|
47
|
+
Requires-Dist: carconnectivity-connector-volkswagen; extra == "connectors"
|
|
48
|
+
Requires-Dist: carconnectivity-connector-skoda; extra == "connectors"
|
|
49
|
+
Provides-Extra: plugins
|
|
50
|
+
Requires-Dist: carconnectivity-plugin-abrp; extra == "plugins"
|
|
51
|
+
Requires-Dist: carconnectivity-plugin-homekit; extra == "plugins"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# CarConnectivity Command Line Interface
|
|
56
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/)
|
|
57
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/releases/latest)
|
|
58
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/blob/master/LICENSE)
|
|
59
|
+
[](https://github.com/tillsteinbach/CarConnectivity-cli/issues)
|
|
60
|
+
[](https://pypi.org/project/carconnectivity-cli/)
|
|
61
|
+
[](https://pypi.org/project/carconnectivity-cli/)
|
|
62
|
+
[](https://www.paypal.com/donate?hosted_button_id=2BVFF5GJ9SXAJ)
|
|
63
|
+
[](https://github.com/sponsors/tillsteinbach)
|
|
64
|
+
|
|
65
|
+
## CarConnectivity will become the successor of [WeConnect-python](https://github.com/tillsteinbach/WeConnect-python) in 2025 with similar functionality but support for other brands beyond Volkswagen!
|
|
66
|
+
|
|
67
|
+
## Supported Car Brands
|
|
68
|
+
CarConenctivity uses a plugin architecture to enable access to the services of various brands. Currently known plugins are:
|
|
69
|
+
|
|
70
|
+
| Brand | Connector |
|
|
71
|
+
|-----------------------------------|---------------------------------------------------------------------------------------------------------------|
|
|
72
|
+
| Skoda | [CarConnectivity-connector-skoda](https://github.com/tillsteinbach/CarConnectivity-connector-skoda) |
|
|
73
|
+
| Volkswagen | [CarConnectivity-connector-volkswagen](https://github.com/tillsteinbach/CarConnectivity-connector-volkswagen) |
|
|
74
|
+
| [Tronity](https://www.tronity.io) | [CarConnectivity-connector-tronity](https://github.com/tillsteinbach/CarConnectivity-connector-tronity) |
|
|
75
|
+
|
|
76
|
+
If you know of a connector not listed here let me know and I will add it to the list.
|
|
77
|
+
If you are a python developer and willing to implement a connector for a brand not listed here, let me know and I try to support you as good as possible
|
|
78
|
+
|
|
79
|
+
## How to install
|
|
80
|
+
You first need a running [Python](https://www.python.org/downloads/) installation. Afterwards you can install CarConnectivity-cli with:
|
|
81
|
+
```
|
|
82
|
+
pip install carconnectivity-cli
|
|
83
|
+
```
|
|
84
|
+
You also need the right connector for your vehicle, e.g.
|
|
85
|
+
```
|
|
86
|
+
pip install carconnectivity-connector-skoda
|
|
87
|
+
```
|
|
88
|
+
or you installed CarConnectivity-cli with all known connectors and plugins:
|
|
89
|
+
```
|
|
90
|
+
pip3 install 'carconnectivity-cli[connectors,plugins]'
|
|
91
|
+
```
|
|
92
|
+
The plugins will then become active when you add them to your configuration.
|
|
93
|
+
|
|
94
|
+
## How to use
|
|
95
|
+
Start by creating a carconnectivity.json configuration file
|
|
96
|
+
|
|
97
|
+
### Configuration
|
|
98
|
+
In your carconnectivity.json configuration add a section for the connectors you like to use like this:
|
|
99
|
+
```
|
|
100
|
+
{
|
|
101
|
+
"carConnectivity": {
|
|
102
|
+
"connectors": [
|
|
103
|
+
{
|
|
104
|
+
"type": "volkswagen",
|
|
105
|
+
"config": {
|
|
106
|
+
"username": "test@test.de"
|
|
107
|
+
"password": "testpassword123"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"type": "skoda",
|
|
112
|
+
"config": {
|
|
113
|
+
"username": "test@test.de"
|
|
114
|
+
"password": "testpassword123"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
The detailed configuration options of the connectors can be found in their README files.
|
|
122
|
+
|
|
123
|
+
### How to use the commandline interface
|
|
124
|
+
Start carconnectivity-cli from the commandline, by default you will enter the interactive shell:
|
|
125
|
+
```bash
|
|
126
|
+
carconnectivity-cli mycarconnectivity_config.json
|
|
127
|
+
```
|
|
128
|
+
You get all the usage information by using the --help command
|
|
129
|
+
```bash
|
|
130
|
+
carconnectivity-cli mycarconnectivity_config.json --help
|
|
131
|
+
```
|
|
132
|
+
With the "list" command you can get a list of all available information you can query (use "list -s" if you want to see which attributes can be changed)
|
|
133
|
+
```bash
|
|
134
|
+
carconnectivity-cli mycarconnectivity_config.json list
|
|
135
|
+
/garage/WVWABCE1ZSD057394
|
|
136
|
+
/garage/WVWABCE1ZSD057394/vin
|
|
137
|
+
/garage/WVWABCE1ZSD057394/type
|
|
138
|
+
/garage/WVWABCE1ZSD057394/odometer
|
|
139
|
+
/garage/WVWABCE1ZSD057394/model
|
|
140
|
+
/garage/WVWABCE1ZSD057394/name
|
|
141
|
+
...
|
|
142
|
+
```
|
|
143
|
+
You can then pass the addresses to the "get" command:
|
|
144
|
+
```bash
|
|
145
|
+
carconnectivity-cli mycarconnectivity_config.json get /garage/WVWABCE1ZSD057394/model
|
|
146
|
+
ID.3
|
|
147
|
+
```
|
|
148
|
+
or the "set" command:
|
|
149
|
+
```bash
|
|
150
|
+
carconnectivity-cli mycarconnectivity_config.json /garage/WVWABCE1ZSD057394/climatisation/command stop
|
|
151
|
+
```
|
|
152
|
+
The "events" command allows you to monitor what is happening on the WeConnect Interface:
|
|
153
|
+
```bash
|
|
154
|
+
carconnectivity-cli mycarconnectivity_config.json events
|
|
155
|
+
2021-05-26 16:49:58.698570: /garage/WVWABCE1ZSD057394/doors/lock_state: new value: unlocked
|
|
156
|
+
2021-05-26 16:49:58.698751: /garage/WVWABCE1ZSD057394/doors/bonnet/lock_state: new value: unknown lock state
|
|
157
|
+
2021-05-26 16:49:58.698800: /garage/WVWABCE1ZSD057394/doors/bonnet/open_state: new value: closed
|
|
158
|
+
2021-05-26 16:49:58.698980: /garage/WVWABCE1ZSD057394/doors/frontLeft/lock_state: new value: unlocked
|
|
159
|
+
2021-05-26 16:49:58.699056: /garage/WVWABCE1ZSD057394/doors/frontLeft/open_state: new value: closed
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### S-PIN
|
|
163
|
+
For some commands (e.g. locking/unlocking supported on some cars) you need in addition to your login the so called S-PIN, you can provide it with the spin config option:
|
|
164
|
+
|
|
165
|
+
### Interactive Shell
|
|
166
|
+
You can also use an interactive shell:
|
|
167
|
+
```
|
|
168
|
+
carconnectivity-cli --username user@mail.de --password test123 shell
|
|
169
|
+
Welcome! Type ? to list commands
|
|
170
|
+
user@mail.de@weconnect-sh:/$update
|
|
171
|
+
update done
|
|
172
|
+
user@mail.de@weconnect-sh:/$cd garage
|
|
173
|
+
user@mail.de@weconnect-sh:/garage$ ls
|
|
174
|
+
..
|
|
175
|
+
WVWABCE1ZSD057394
|
|
176
|
+
WVWABCE13SD057505
|
|
177
|
+
user@mail.de@weconnect-sh:/garage$ cd /garage/WVWABCE13SD057505/status/parkingPosition
|
|
178
|
+
user@mail.de@weconnect-sh:/garage/WVWABCE13SD057505/status/parkingPosition$ cat
|
|
179
|
+
[parkingPosition] (last captured 2021-06-01T19:05:04+00:00)
|
|
180
|
+
Latitude: 51.674535
|
|
181
|
+
Longitude: 16.154376
|
|
182
|
+
user@mail.de@weconnect-sh:/garage/WVWABCE13SD057505/parking/parkingPosition$ exit
|
|
183
|
+
Bye
|
|
184
|
+
```
|
|
185
|
+
### Caching
|
|
186
|
+
By default carconnectivity-cli will cache (store) the data for 300 seconds before retrieving new data from the servers. This makes carconnectivity-cli more responsive and at the same time does not cause unneccessary requests to the vw servers. If you want to increase the cache duration use max_age config option. If you do not want to cache use no_cache option. Please use the no_cache option with care. You are generating traffic with subsequent requests. If you request too often you might be blocked for some time until you can generate requests again.
|
|
187
|
+
|
|
188
|
+
### Credentials
|
|
189
|
+
If you do not want to provide your username or password all the time you have to create a ".netrc" file at the appropriate location (usually this is your home folder):
|
|
190
|
+
```
|
|
191
|
+
machine volkswagen.de
|
|
192
|
+
login test@test.de
|
|
193
|
+
password testpassword123
|
|
194
|
+
```
|
|
195
|
+
You can also provide the location of the netrc file in the configuration.
|
|
196
|
+
|
|
197
|
+
The optional S-PIN needed for some commands can be provided in the account section:
|
|
198
|
+
```
|
|
199
|
+
# For WeConnect
|
|
200
|
+
machine volkswagen.de
|
|
201
|
+
login test@test.de
|
|
202
|
+
password testpassword123
|
|
203
|
+
account 1234
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Tested with
|
|
207
|
+
- Volkswagen ID.3 Modelyear 2021
|
|
208
|
+
- Volkswagen Passat GTE Modelyear 2021
|
|
209
|
+
- Skoda Enyaq RS Modelyear 2025
|
|
210
|
+
|
|
211
|
+
## Reporting Issues
|
|
212
|
+
Please feel free to open an issue at [GitHub Issue page](https://github.com/tillsteinbach/carconnectivity-cli/issues) to report problems you found.
|
|
213
|
+
|
|
214
|
+
### Known Issues
|
|
215
|
+
- The Tool is in alpha state and may change unexpectedly at any time!
|
|
216
|
+
|
|
217
|
+
## Related Projects:
|
|
218
|
+
- [CarConnectivity-plugin-mqtt](https://github.com/tillsteinbach/CarConnectivity-plugin-mqtt): MQTT Client that publishes data from CarConnectivity to any MQTT broker.
|
|
219
|
+
- [CarConnectivity](https://github.com/tillsteinbach/CarConnectivity): The underlying python API behind CarConnectivity-cli. If you are a developer and want to implement an application or service with vehicle telemetry data you can use [CarConnectivity-Library](https://github.com/tillsteinbach/CarConnectivity).
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: carconnectivity-cli
|
|
3
|
-
Version: 0.1a1
|
|
4
|
-
Summary: Library for retrieving information from car connectivity services
|
|
5
|
-
Author: Till Steinbach
|
|
6
|
-
License: MIT License
|
|
7
|
-
|
|
8
|
-
Copyright (c) 2021 Till Steinbach
|
|
9
|
-
|
|
10
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
-
in the Software without restriction, including without limitation the rights
|
|
13
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
-
furnished to do so, subject to the following conditions:
|
|
16
|
-
|
|
17
|
-
The above copyright notice and this permission notice shall be included in all
|
|
18
|
-
copies or substantial portions of the Software.
|
|
19
|
-
|
|
20
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
-
SOFTWARE.
|
|
27
|
-
|
|
28
|
-
Classifier: Development Status :: 3 - Alpha
|
|
29
|
-
Classifier: Environment :: Console
|
|
30
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
-
Classifier: Intended Audience :: End Users/Desktop
|
|
32
|
-
Classifier: Intended Audience :: System Administrators
|
|
33
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
34
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
35
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
36
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
38
|
-
Classifier: Topic :: Utilities
|
|
39
|
-
Classifier: Topic :: System :: Monitoring
|
|
40
|
-
Requires-Python: >=3.9
|
|
41
|
-
Description-Content-Type: text/markdown
|
|
42
|
-
License-File: LICENSE
|
|
43
|
-
Requires-Dist: argparse
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
# CarConnectivity Command Line Interface
|
|
48
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/)
|
|
49
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/releases/latest)
|
|
50
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/blob/master/LICENSE)
|
|
51
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/issues)
|
|
52
|
-
[](https://www.paypal.com/donate?hosted_button_id=2BVFF5GJ9SXAJ)
|
|
53
|
-
[](https://github.com/sponsors/tillsteinbach)
|
|
54
|
-
|
|
55
|
-
## CarConnectivity will become the successor of [WeConnect-python](https://github.com/tillsteinbach/WeConnect-python) in 2025 with similar functionality but support for other brands beyond Volkswagen!
|
|
56
|
-
|
|
57
|
-
## Supported Car Brands
|
|
58
|
-
CarConenctivity uses a plugin architecture to enable access to the services of various brands. Currently known plugins are:
|
|
59
|
-
|
|
60
|
-
| Brand | Connector |
|
|
61
|
-
|------------|---------------------------------------------------------------------------------------------------------------|
|
|
62
|
-
| Skoda | [CarConnectivity-connector-skoda](https://github.com/tillsteinbach/CarConnectivity-connector-skoda) |
|
|
63
|
-
| Volkswagen | [CarConnectivity-connector-volkswagen](https://github.com/tillsteinbach/CarConnectivity-connector-volkswagen) |
|
|
64
|
-
|
|
65
|
-
If you know of a connector not listed here let me know and I will add it to the list.
|
|
66
|
-
If you are a python developer and willing to implement a connector for a brand not listed here, let me know and I try to support you as good as possible
|
|
67
|
-
|
|
68
|
-
## Configuration
|
|
69
|
-
In your carconnectivity.json configuration add a section for the connectors you like to use like this:
|
|
70
|
-
```
|
|
71
|
-
{
|
|
72
|
-
"carConnectivity": {
|
|
73
|
-
"connectors": [
|
|
74
|
-
{
|
|
75
|
-
"type": "volkswagen",
|
|
76
|
-
"config": {
|
|
77
|
-
"username": "test@test.de"
|
|
78
|
-
"password": "testpassword123"
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"type": "skoda",
|
|
83
|
-
"config": {
|
|
84
|
-
"username": "test@test.de"
|
|
85
|
-
"password": "testpassword123"
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
The detailed configuration options of the connectors can be found in their README files.
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
# CarConnectivity Command Line Interface
|
|
4
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/)
|
|
5
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/releases/latest)
|
|
6
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/blob/master/LICENSE)
|
|
7
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/issues)
|
|
8
|
-
[](https://www.paypal.com/donate?hosted_button_id=2BVFF5GJ9SXAJ)
|
|
9
|
-
[](https://github.com/sponsors/tillsteinbach)
|
|
10
|
-
|
|
11
|
-
## CarConnectivity will become the successor of [WeConnect-python](https://github.com/tillsteinbach/WeConnect-python) in 2025 with similar functionality but support for other brands beyond Volkswagen!
|
|
12
|
-
|
|
13
|
-
## Supported Car Brands
|
|
14
|
-
CarConenctivity uses a plugin architecture to enable access to the services of various brands. Currently known plugins are:
|
|
15
|
-
|
|
16
|
-
| Brand | Connector |
|
|
17
|
-
|------------|---------------------------------------------------------------------------------------------------------------|
|
|
18
|
-
| Skoda | [CarConnectivity-connector-skoda](https://github.com/tillsteinbach/CarConnectivity-connector-skoda) |
|
|
19
|
-
| Volkswagen | [CarConnectivity-connector-volkswagen](https://github.com/tillsteinbach/CarConnectivity-connector-volkswagen) |
|
|
20
|
-
|
|
21
|
-
If you know of a connector not listed here let me know and I will add it to the list.
|
|
22
|
-
If you are a python developer and willing to implement a connector for a brand not listed here, let me know and I try to support you as good as possible
|
|
23
|
-
|
|
24
|
-
## Configuration
|
|
25
|
-
In your carconnectivity.json configuration add a section for the connectors you like to use like this:
|
|
26
|
-
```
|
|
27
|
-
{
|
|
28
|
-
"carConnectivity": {
|
|
29
|
-
"connectors": [
|
|
30
|
-
{
|
|
31
|
-
"type": "volkswagen",
|
|
32
|
-
"config": {
|
|
33
|
-
"username": "test@test.de"
|
|
34
|
-
"password": "testpassword123"
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"type": "skoda",
|
|
39
|
-
"config": {
|
|
40
|
-
"username": "test@test.de"
|
|
41
|
-
"password": "testpassword123"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
The detailed configuration options of the connectors can be found in their README files.
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: carconnectivity-cli
|
|
3
|
-
Version: 0.1a1
|
|
4
|
-
Summary: Library for retrieving information from car connectivity services
|
|
5
|
-
Author: Till Steinbach
|
|
6
|
-
License: MIT License
|
|
7
|
-
|
|
8
|
-
Copyright (c) 2021 Till Steinbach
|
|
9
|
-
|
|
10
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
-
in the Software without restriction, including without limitation the rights
|
|
13
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
-
furnished to do so, subject to the following conditions:
|
|
16
|
-
|
|
17
|
-
The above copyright notice and this permission notice shall be included in all
|
|
18
|
-
copies or substantial portions of the Software.
|
|
19
|
-
|
|
20
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
-
SOFTWARE.
|
|
27
|
-
|
|
28
|
-
Classifier: Development Status :: 3 - Alpha
|
|
29
|
-
Classifier: Environment :: Console
|
|
30
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
-
Classifier: Intended Audience :: End Users/Desktop
|
|
32
|
-
Classifier: Intended Audience :: System Administrators
|
|
33
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
34
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
35
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
36
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
38
|
-
Classifier: Topic :: Utilities
|
|
39
|
-
Classifier: Topic :: System :: Monitoring
|
|
40
|
-
Requires-Python: >=3.9
|
|
41
|
-
Description-Content-Type: text/markdown
|
|
42
|
-
License-File: LICENSE
|
|
43
|
-
Requires-Dist: argparse
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
# CarConnectivity Command Line Interface
|
|
48
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/)
|
|
49
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/releases/latest)
|
|
50
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/blob/master/LICENSE)
|
|
51
|
-
[](https://github.com/tillsteinbach/CarConnectivity-cli/issues)
|
|
52
|
-
[](https://www.paypal.com/donate?hosted_button_id=2BVFF5GJ9SXAJ)
|
|
53
|
-
[](https://github.com/sponsors/tillsteinbach)
|
|
54
|
-
|
|
55
|
-
## CarConnectivity will become the successor of [WeConnect-python](https://github.com/tillsteinbach/WeConnect-python) in 2025 with similar functionality but support for other brands beyond Volkswagen!
|
|
56
|
-
|
|
57
|
-
## Supported Car Brands
|
|
58
|
-
CarConenctivity uses a plugin architecture to enable access to the services of various brands. Currently known plugins are:
|
|
59
|
-
|
|
60
|
-
| Brand | Connector |
|
|
61
|
-
|------------|---------------------------------------------------------------------------------------------------------------|
|
|
62
|
-
| Skoda | [CarConnectivity-connector-skoda](https://github.com/tillsteinbach/CarConnectivity-connector-skoda) |
|
|
63
|
-
| Volkswagen | [CarConnectivity-connector-volkswagen](https://github.com/tillsteinbach/CarConnectivity-connector-volkswagen) |
|
|
64
|
-
|
|
65
|
-
If you know of a connector not listed here let me know and I will add it to the list.
|
|
66
|
-
If you are a python developer and willing to implement a connector for a brand not listed here, let me know and I try to support you as good as possible
|
|
67
|
-
|
|
68
|
-
## Configuration
|
|
69
|
-
In your carconnectivity.json configuration add a section for the connectors you like to use like this:
|
|
70
|
-
```
|
|
71
|
-
{
|
|
72
|
-
"carConnectivity": {
|
|
73
|
-
"connectors": [
|
|
74
|
-
{
|
|
75
|
-
"type": "volkswagen",
|
|
76
|
-
"config": {
|
|
77
|
-
"username": "test@test.de"
|
|
78
|
-
"password": "testpassword123"
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"type": "skoda",
|
|
83
|
-
"config": {
|
|
84
|
-
"username": "test@test.de"
|
|
85
|
-
"password": "testpassword123"
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
The detailed configuration options of the connectors can be found in their README files.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
argparse
|
|
File without changes
|
|
File without changes
|
{carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.github/ISSUE_TEMPLATE/feature_request.md
RENAMED
|
File without changes
|
|
File without changes
|
{carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/.github/workflows/build_and_publish.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
|
{carconnectivity_cli-0.1a1 → carconnectivity_cli-0.3}/src/carconnectivity_cli.egg-info/top_level.txt
RENAMED
|
File without changes
|