monitorVW
The program periodically reads car data from Volkswagen WeConnect and stores these as measurements in an InfluxDB database.
For WeConnect, see: https://www.volkswagen-nutzfahrzeuge.de/de/digitale-dienste-und-apps/we-connect.html
As interface to WeConnect Web Services, I use https://github.com/tillsteinbach/WeConnect-python
In order to use the program you need
- A registration at WeConnect
- An Influx DB V2.4 or later running on the same or another machine
- A Grafana instance vor visualization
InfluxDB (https://www.influxdata.com/products/influxdb-overview/) is a time series database which can be used as cloud version or local installation on various platforms.
For visualization with Grafana, see https://grafana.com/
A visualization client is available at https://github.com/signag/Hybrid-Car-Consumption-Monitor
Getting started
| Step | Action |
|---|---|
| 1. | Install and configure an InfluxDB V2.4 (https://docs.influxdata.com/influxdb/v2.4/install/) |
| 2. | In InfluxDB, create a new bucket for status data (https://docs.influxdata.com/influxdb/v2.4/organizations/buckets/create-bucket/) |
| 3. | In InfluxDB, create a new bucket for trip data. This should be different from status data because of longer retention period |
| 4. | In InfluxDB, create an API Token with write access to the buckets (https://docs.influxdata.com/influxdb/v2.4/security/tokens/create-token/) |
| 5. | Install monitorVW ([sudo] pip install monitorVW) on a Linux system (e.g. Raspberry Pi) |
| Alternatively run the latest https://hub.docker.com/repository/docker/signag/monitorvw image in a Docker container. For the container, you will need to map the containers /app/config directory to a container-external directory, where the configuration file needs to be staged (see step 6). |
|
| 6. | Create and stage configuration file for monitorVW (see Configuration) |
| 7. | Do a test run (see Usage) |
| 8. | Set up monitorVW service (see Serviceconfiguration) |
Usage
(Not required when running the Docker image)
usage: monitorVW.py [-h] [-t] [-s] [-l] [-L] [-F] [-f FILE] [-v] [-c CONFIG]
This program periodically reads data from VW WeConnect
and stores these as measurements in an InfluxDB database.
If not otherwises specified on the command line, a configuration file
monitorVW.json
will be searched sequentially under ./tests/data, $HOME/.config or /etc.
This configuration file specifies credentials for WeConnect access,
the car data to read, the connection to the InfluxDB and other runtime parameters.
options:
-h, --help show this help message and exit
-t, --test Test run - single cycle - no wait
-s, --service Run as service - special logging
-l, --log Shallow (module) logging
-L, --Log Deep logging
-F, --Full Full logging
-p, --logfile path to log file
-f FILE, --file FILE Logging configuration from specified JSON dictionary file
-v, --verbose Verbose - log INFO level
-c CONFIG, --config CONFIG
Path to config file to be used
Configuration
Configuration for monitorVW needs to be provided in a specific configuration file.
By default, a configuration file "monitorVW.json" is searched in the given sequence under $ROOT/config, $HOME/.config or under /etc.
Here, $ROOT is the project root directory and $HOME is the home directory of the user running the program.
For testing in a development environment, primarily the location $ROOT/tests/data is searched for a configuration file.
Alternatively, the path to the configuration file can be specified on the command line.
The Docker image expects a configuration file "monitorVW.json" under /app/config which should be mapped to a directory in a container-external file system.
Structure of JSON Configuration File
The following is an example of a configuration file:
A a template can be found under
$ROOT/config in the installation folder.
{
"measurementInterval": 1800,
"weconUsername": "weconUser",
"weconPassword": "weconPwd",
"weconSPin": "weconPin",
"weconCarId": "weconCarID",
"InfluxOutput": true,
"InfluxURL": "influxURL",
"InfluxOrg": "inflixOrg",
"InfluxToken": "influxToken",
"InfluxBucket": "influxBucket",
"InfluxTripBucket": "influxTripBucket",
"csvOutput": true,
"csvFile": "tests/output/monitorVW.csv",
"carData": {
"tripDataShortTerm": {
"InfluxOutput": true,
"InfluxMeasurement": "tripShortTerm",
"InfluxTimeStart": "",
"InfluxDaysBefore": "5",
"csvOutput": true,
"csvFile": "tests/output/monitorVW_tripST.csv"
},
"tripDataLongTerm": {
"InfluxOutput": false,
"InfluxMeasurement": "tripLongTerm",
"InfluxTimeStart": "2022-10-01",
"InfluxDaysBefore": "",
"csvOutput": true,
"csvFile": "tests/output/monitorVW_tripLT.csv"
},
"tripDataCyclic": {
"InfluxOutput": false,
"InfluxMeasurement": "tripCyclic",
"InfluxTimeStart": "2022-10-01",
"InfluxDaysBefore": "",
"csvOutput": true,
"csvFile": "tests/output/monitorVW_tripCy.csv"
}
}
}
Parameters
| Parameter | Description | Mandatory |
|---|---|---|
| measurementInterval | Measurement interval in seconds. (Default: 1800) | No |
| weconUsername | User name of Volkswagen WE Connect registration | Yes |
| weconPassword | Password of Volkswagen WE Connect registration | Yes |
| weconSPin | The 4-digit security pin which is specified in the mobile We Connect App | Yes |
| weconCarId | Vehicle Identification Number (VIN/FIN) as shown for cars registered in WE Connect | Yes |
| InfluxOutput | Specifies whether data shall be stored in InfluxDB (Default: false) | No |
| InfluxURL | URL for access to Influx DB | Only for Influx |
| InfluxOrg | Organization Name specified during InfluxDB installation | Only for Influx |
| InfluxToken | Influx API Token (see Getting started) | Only for Influx |
| InfluxBucket | Bucket to be used for storage of car status data | Only for Influx |
| InfluxTripBucket | Bucket to be used for storage of car trip data | Only for Influx |
| csvOutput | Specifies whether car data shall be written to a csv file (Default: false) | No |
| csvFile | Path to the csv file | For csvOutput=true |
| carData | list of car data to be considered (default: Empty) | No |
| - tripDataShortTerm | Short term trip data (includes every individual trip) | Yes |
| -- InfluxOutput | Specifies whether trip data shall be written to InfluxDB | Yes |
| -- InfluxMeasurement | Measurement to be used for this kind of trip data | Yes |
| -- InfluxTimeStart | Start date from which on trips shall be included (default: 01.01.1900) | Yes |
| -- InfluxDaysBefore | Number of days before current date from which on trips shall be included (default: 9999) (later of both is uesd) | Yes |
| -- csvOutput | Specifies whether these trip data shall be written to a cvs file | Yes |
| -- csvFile | File path to which these trip data shall be written | Yes |
| - tripDataLongTerm | Long term trip data (aggregated trip data for longer periods | No |
| - tripDataCyclic | Aggregated trips from one fill-up to the next | No |
InfluxDB Data Schema
monitorVW uses the following schema when storing measurements in the database:
| Data Element | Description |
|---|---|
| _time | carStatus: timestamp when data is written to InfluxDB |
| trip : timestamp when trip was ended | |
| _measuerement | "carStatus", "trip_shortTerm", "trip_longTerm", "trip_cyclic" |
| tags | |
| - vin | Car ID (vehicle identification number) - all measurements |
| - tripID | We-Connect-internal ID for the trip - only trip measurements |
| - reportReason | We-Connect-internal reason for the trip - only trip measurements |
| fields | |
| - fuelLevel | percentage of fuel filling - only for carStatus |
| - stateOfCharge | percentage of charging of HV battery - only for carStatus |
| - mileage | current mileage - only for carStatus |
| - startMileage | Mileage at trip start - only trip measurements |
| - tripMileage | Mileage for the trip - only trip measurements |
| - travelTime | Travel time (min) for trip - only trip measurements |
| - fuelConsumed | Fuel consumed (l) for trip - only trip measurements |
| - electricPowerConsumed | Electric power consumed (kWh) for trip - only trip measurements |
Serviceconfiguration
(Not required when running the Docker image)
To continuously log car data, monitorVW should be run as service.
A service configuration file template can be found under
$ROOT/config in the installation folder.
| Step | Action |
|---|---|
| 1. | Adjust the service configuration file, if required, especially check python path and user |
| 2. | Stage configuration file: sudo cp monitorVW.service /etc/systemd/system |
| 3. | Start service: sudo systemctl start monitorVW.service |
| 4. | Check log: sudo journalctl -e should show that monitorVW has successfully started |
| 5. | In case of errors adjust service configuration file and restart service |
| 6. | To enable your service on every reboot: sudo systemctl enable monitorVW.service |
Metadata
Release files for monitorVW 2.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| monitorvw-2.4.0.tar.gz | 28.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| monitorvw-2.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.9 kB
Release files / monitorvw-2.4.0.tar.gz
| Download URL | monitorvw-2.4.0.tar.gz |
|---|---|
| Size | 28.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f35f35feca4ce436e01c8ed82df6f8ae7034f598b2a6a1ac39831757147b2e9f
|
|
BLAKE2b-256 checksum How to use checksums |
36adbcda395ac5b47b34f4e84d67dae85be479674b1dbbeb539117b378ef314b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.5
|
Release files / monitorvw-2.4.0-py3-none-any.whl
| Download URL | monitorvw-2.4.0-py3-none-any.whl |
|---|---|
| Size | 12.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
86e6953f526ecc5dc0ab94d7bf9a4444572a76f34093a3d302c9f102374638f1
|
|
BLAKE2b-256 checksum How to use checksums |
3a37ff7b377f4c52dc38f8b0d2dba7cd06e2b25c3be63ccf7f0f39cc5cf97573
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.5
|