Read VW car data from We Connect and store in Influx DB
Project description
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 ervices, I use https://github.com/trocotronic/weconnect
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/
Getting started
Step | Action |
---|---|
1. | Install monitorVW ([sudo] pip install monitorVW ) on a Linux system (e.g. Raspberry Pi) |
2. | Install and configure an InfluxDB V2.4 (https://docs.influxdata.com/influxdb/v2.4/install/) |
3. | In InfluxDB, create a new bucket (https://docs.influxdata.com/influxdb/v2.4/organizations/buckets/create-bucket/) |
5. | In InfluxDB, create an API Token with write access to the bucket (https://docs.influxdata.com/influxdb/v2.4/security/tokens/create-token/) |
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
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
-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 under $HOME/.config
or under /etc
.
For testing in a development environment, primarily the location ../tests/data
is searched for a configuration file.
Alternatively, the path to the configuration file can be specified on the command line.
Structure of JSON Configuration File
The following is an example of a configuration file:
A a template can be found under
./data
in the installation folder.
{
"measurementInterval": 1800,
"weconUsername": "weconUser",
"weconPassword": "weconPwd",
"weconSPin": "weconPin",
"weconCarId": "weconCarID",
"InfluxOutput": true,
"InfluxURL": "influxURL",
"InfluxOrg": "inflixOrg",
"InfluxToken": "influxToken",
"InfluxBucket": "influxBucket",
"csvOutput": true,
"csvFile": "tests/output/monitorVW.csv",
"carData": {
"tripDataShortTerm": {
"InfluxOutput": true,
"InfluxMeasurement": "tripShortTerm",
"InfluxTimeStart": "2022-10-01",
"csvOutput": true,
"csvFile": "tests/output/monitorVW_tripST.csv"
},
"tripDataLongTerm": {
"InfluxOutput": false,
"InfluxMeasurement": "tripLongTerm",
"InfluxTimeStart": "2022-10-01",
"csvOutput": true,
"csvFile": "tests/output/monitorVW_tripLT.csv"
},
"tripDataCyclic": {
"InfluxOutput": false,
"InfluxMeasurement": "tripCyclic",
"InfluxTimeStart": "2022-10-01",
"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 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 | 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
To continuously log car data, monitorVW should be run as service.
A service configuration file template can be found under
./data
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 |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file monitorVW-1.0.0.tar.gz
.
File metadata
- Download URL: monitorVW-1.0.0.tar.gz
- Upload date:
- Size: 26.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bdad138211c9655ef9bd08ac110c89556dc4fdbc6b15eec333fd1cb846fd89b2 |
|
MD5 | 248bc13ced51fbd8deefa914f2f7952b |
|
BLAKE2b-256 | 90efbcc6edae4b9136fa4b10813f9458ccaf929d0ea0607f993e9388671a29b7 |
File details
Details for the file monitorVW-1.0.0-py3.7.egg
.
File metadata
- Download URL: monitorVW-1.0.0-py3.7.egg
- Upload date:
- Size: 42.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d0d5e335a6aa52a93699bf56b79b69f28b73dd1a27addf601a0f0d8fbbd536e |
|
MD5 | ba26b69cb0b647cfc739017ace5fc1bd |
|
BLAKE2b-256 | 3b406e00ee7606fe5a7fac08481110f1f307d2d46ca76526ceafd694c983df9e |
File details
Details for the file monitorVW-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: monitorVW-1.0.0-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0021eaa66378c91c44370b9af5ecc87c1d3d35a19efed70d16d16592157ab0d8 |
|
MD5 | da88461b87f660d2779b1299558d6a52 |
|
BLAKE2b-256 | 51a625abb7b0bbf315063211dcb543526f35fe18958acb9e54b7fd1e54fb5cc4 |