MQTT Client that publishes data from Volkswagen WeConnect Services
If you want to integrate data from your weconnect enabled car a standard protocol such as MQTT can be very helpful. This Client enables you to integrate with the MQTT Broker of your choice (e.g. your home automation solution such as ioBroker, FHEM or Home Assistant)
You need to install python 3 on your system: How to install python. The minimum required python version is 3.8
WeConnect-mqtt is based on the new WeConnect API that was introduced with the new series of ID cars. If you use another car or hybrid you probably need to agree to the terms and conditions of the new WeConnect interface. Easiest to do so is by installing the Volkswagen app on your smartphone and login there. If necessary you will be asked to agree to the terms and conditions.
If you want to use WeConnect-mqtt, the easiest way is to obtain it from PyPI. Just install instead using:
pip3 install weconnect-mqtt
If you want to update WeConnect-mqtt, the easiest way is:
pip3 install weconnect-mqtt --upgrade
There is also a Docker image to easily host WeConnect-MQTT: See on Dockerhub
Start weconnect-mqtt from the commandline:
weconnect-mqtt
You get all the usage information by using the --help command
weconnect-mqtt --help
An example to connect with an MQTT broker at 192.168.0.1 with user test and password test123 is
weconnect-mqtt --username [email protected] --password test123 --mqttbroker 192.168.0.1 --mqtt-username test --mqtt-password test123 --prefix weconnect
The client uses user [email protected] and password test123 in this example to connect to weconnect
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
option:
weconnect-mqtt --username [email protected] --password test123 --spin 1234 --mqttbroker 192.168.0.1 --mqtt-username test --mqtt-password test123 --prefix weconnect
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):
# For WeConnect
machine volkswagen.de
login [email protected]
password testpassword123
# For the MQTTBroker
machine 192.168.0.1
login test
password testpassword123
You can also provide the location of the netrc file using the --netrc option
The optional S-PIN needed for some commands can be provided in the account section:
# For WeConnect
machine volkswagen.de
login [email protected]
password testpassword123
account 1234
You can also obtain data from charging stations by adding a location with e.g. --chargingLocation 52.437132 10.796628
and a radius in meters with --chargingLocationRadius=500
.
Data for charging stations is mostly static, but you can see the current availability.
If your broker does not let you observe all available topics you can pass the parameter --list-topics
to get all topics displayed on the commandline. Topics marked as "(writeable)" can be manipulated.
There are also two topics to receive all available topics as a comma seperated list: weconnect/0/mqtt/topics
lists all available topics, weconnect/0/mqtt/writeableTopics
provides topics that can be manipulated.
You can disable data for the cars capabilities with --no-capabilities
If you only need a subset of the data you can use the --selective
option. E.g. --selective climatisation
You can enable ASCII Art pictures of the cars with --pictures
If your client can deal with PNG-images received through MQTT you can set --picture-format png
By default the times coming from the car are UTC isoformat. You can convert times to your local timezone by adding --convert-times
. Convert times will use the systems timezone. If you want to set a specific timezone use e.g. --convert-times Europe/Berlin
.
You can format times in your local format by adding --timeformat
. This will use the default Date/Time format of your locale setting. If you want to set a specific format use e.g. --timeformat '%a %d %b %Y %T'
.
If you want to set the date in another language than default on your system use e.g. --locale de_DE
.
If you want to continue working with the whole data you can also enable the topic weconnect/0/rawjson
by adding --with-raw-json-topic
. The topic is published on every change of the json string.
- Volkswagen ID.3 Modelyear 2021
- Volkswagen Passat GTE Modelyear 2021
Please feel free to open an issue at GitHub Issue page to report problems you found.
Please see the wiki Wiki or start a discussion.
- The Tool is in alpha state and may change unexpectedly at any time!
- WeConnect-cli: Commandline Interface to interact with the Volkswagen WeConnect Services
- WeConnect-python: Python API to connect to Volkswagen WeConnect Services
- VWsFriend: VWsFriend is a software to visualize and record statistics of your car and allows control via HomeKit
Now owning a Skoda vehicle I'm about to make a rewrite of this library called CarConnectivity, I hope this will be ready for a first release in early 2025