ConnectedCar Binding myAudi, Volkswagen, VW ID, Skoda, Enyaq, Seat, Ford, WeCharge

I’m using the program MQTT Explorer for that.
The topics (read- and writeable) i found there under:
carconnectivity/0/plugins/mqtt/topics
and
carconnectivity/0/plugins/mqtt/writeable_topics

In the OpenHAB UI create a Generic MQTT item.
Label: Skoda Enyaq - MQTT
Bridge: Name of your Broker

Example for a Battery-Charge (read-only) channel:
Channels:
Add Channel
Channel id: Skoda_Enyaq_MQTT_battery_charge
Label: Skoda Enyaq - MQTT - Battery Charge
Number Value - MQTT State Topic = carconnectivity/0/garage/YOUR_VEHICLE_IDENTIFICATION_NUMBER/drives/primary/level

For a docker container, I did it successfully with portainer.
Here is my yaml:

services:
  carconnectivity-mqtt:
    image: "tillsteinbach/carconnectivity-mqtt:latest"
    volumes:
      - /portainer/Files/AppData/Config/carconnectivity/carconnectivity.json:/carconnectivity.json
    environment:
      - TZ=Europe/Berlin
      - LANG=de_DE
      - LC_ALL=de_DE
      - ADDITIONAL_INSTALLS=carconnectivity-plugin-webui
    ports:
      - 4000:4000

configuration is done via carconnectivity.json:

{
  "carConnectivity": {
    "log_level": "debug",
    "connectors": [
      {
        "type": "volkswagen",
        "config": {
          "interval": 300,
          "username": "...",
          "password": "...",
          "account": "..." // PIN
        }
      }
    ],
    "plugins": [
      {
        "type": "mqtt",
        "config": {
          "broker": "192.168.178.22",
          "username": "...",
          "password": "..."
        }
      },
      {
        "type": "webui",
        "config": {
          "username": "...",
          "password": "..."
        }
      }
    ]
  }
}

The plugin for webui gives a simple but nice UI at port 4000.

Many thanks guys! I did the following (all executed in the openhabian console):
Go to the directory where carconnectivity is installed:

openhabian@openhabian:~ $ cd /home/openhabian/skoda-venv/bin

Activate my virtual enviroment “skoda-venv”:

openhabian@openhabian:~/skoda-venv/bin $ source ~/skoda-venv/bin/activate

Starting mqtt-broadcasting:

(skoda-venv) openhabian@openhabian:~/skoda-venv/bin $ carconnectivity-mqtt carconnectivity.json

loooking for topics:

openhabian@openhabian:~/skoda-venv/bin mosquitto_sub -h 192.168.1.172 -t "carconnectivity/0/plugins/mqtt/topics/#" -v

This results in the follwing topics:

carconnectivity/0/plugins/mqtt/topics carconnectivity/0/connectors/skoda/commands/spin,
carconnectivity/0/connectors/skoda/connection_state,
carconnectivity/0/connectors/skoda/healthy,
carconnectivity/0/connectors/skoda/interval,
carconnectivity/0/connectors/skoda/log_level,
carconnectivity/0/connectors/skoda/version,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ACCIDENT_DAMAGE_MANAGEMENT/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ACCIDENT_DAMAGE_MANAGEMENT/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING_SAVE_AND_ACTIVATE/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING_SAVE_AND_ACTIVATE/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING_SMART_SETTINGS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING_SMART_SETTINGS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING_TIMERS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AIR_CONDITIONING_TIMERS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AUTOMATION/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/AUTOMATION/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/BATTERY_CHARGING_CARE/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/BATTERY_CHARGING_CARE/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/BATTERY_SUPPORT/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/BATTERY_SUPPORT/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGE_MODE_SELECTION/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGE_MODE_SELECTION/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING_MEB/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING_MEB/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING_PROFILES/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING_PROFILES/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING_STATIONS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CHARGING_STATIONS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CUBIC/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/CUBIC/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DEALER_APPOINTMENT/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DEALER_APPOINTMENT/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DESTINATIONS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DESTINATIONS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DIGICERT/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DIGICERT/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DRIVING_SCORE/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/DRIVING_SCORE/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/EV_ROUTE_PLANNING/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/EV_ROUTE_PLANNING/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/EXTENDED_CHARGING_SETTINGS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/EXTENDED_CHARGING_SETTINGS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/GUEST_USER_MANAGEMENT/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/GUEST_USER_MANAGEMENT/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/MAP_UPDATE/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/MAP_UPDATE/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/MEASUREMENTS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/MEASUREMENTS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ONLINE_REMOTE_UPDATE/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ONLINE_REMOTE_UPDATE/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ONLINE_SPEECH_GPS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ONLINE_SPEECH_GPS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PARKING_INFORMATION/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PARKING_INFORMATION/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PARKING_POSITION/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PARKING_POSITION/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PAY_TO_PARK/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PAY_TO_PARK/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PLUG_AND_CHARGE/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/PLUG_AND_CHARGE/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/POI_SEARCH/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/POI_SEARCH/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/POWERPASS_TARIFFS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/POWERPASS_TARIFFS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/READINESS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/READINESS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROADSIDE_ASSISTANT/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROADSIDE_ASSISTANT/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROUTE_IMPORT/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROUTE_IMPORT/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROUTE_PLANNING_5_CHARGERS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROUTE_PLANNING_5_CHARGERS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROUTING/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/ROUTING/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/SERVICE_PARTNER/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/SERVICE_PARTNER/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/STATE/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/STATE/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/SUBSCRIPTIONS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/SUBSCRIPTIONS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/TRAFFIC_INFORMATION/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/TRAFFIC_INFORMATION/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/UNAVAILABILITY_STATUSES/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/UNAVAILABILITY_STATUSES/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_HEALTH_INSPECTION/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_HEALTH_INSPECTION/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_HEALTH_WARNINGS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_HEALTH_WARNINGS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_SERVICES_BACKUPS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_SERVICES_BACKUPS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_WAKE_UP_TRIGGER/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/VEHICLE_WAKE_UP_TRIGGER/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/WARNING_LIGHTS/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/WARNING_LIGHTS/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/WEB_RADIO/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/WEB_RADIO/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/WINDOW_HEATING/id,
carconnectivity/0/garage/TMBLE9NY1NF023390/capabilities/WINDOW_HEATING/status,
carconnectivity/0/garage/TMBLE9NY1NF023390/images/car_picture,
carconnectivity/0/garage/TMBLE9NY1NF023390/license_plate,
carconnectivity/0/garage/TMBLE9NY1NF023390/manufacturer,
carconnectivity/0/garage/TMBLE9NY1NF023390/model,
carconnectivity/0/garage/TMBLE9NY1NF023390/name,
carconnectivity/0/garage/TMBLE9NY1NF023390/software/version,
carconnectivity/0/garage/TMBLE9NY1NF023390/vin,
carconnectivity/0/plugins/mqtt/connection_state,
carconnectivity/0/plugins/mqtt/healthy,
carconnectivity/0/plugins/mqtt/topics,
carconnectivity/0/plugins/mqtt/version,
carconnectivity/0/plugins/mqtt/writeable_topics,
carconnectivity/0/plugins/webui/healthy,
carconnectivity/0/plugins/webui/version,
carconnectivity/0/version

Apparentaly carconnectivity connected successfully with my skoda account as it looked up the correct VIN by itself. I presume the topic showing the state of charge of the battery would be “…CHARGING_MEB/status”. Unfortunately no values are broadcasted over this and also the other topics with exception of these:

(skoda-venv) openhabian@openhabian:~/skoda-venv/bin $ mosquitto_sub -h 192.168.1.172 -t "carconnectivity/0/garage/TMBLE9NY1NF023390/#" -v
carconnectivity/0/garage/TMBLE9NY1NF023390/climatization/state off
carconnectivity/0/garage/TMBLE9NY1NF023390/climatization/settings/target_temperature 68.0
carconnectivity/0/garage/TMBLE9NY1NF023390/climatization/settings/climatization_at_unlock False
carconnectivity/0/garage/TMBLE9NY1NF023390/climatization/settings/window_heating False

Any ideas on this?

Many thanks!

It seems that the real read- and writeable Topics differ a little from what i wrote before.
I recommend using MQTT Explorer. There you can find the correct topics relatively easy.

In case of the charging state it is:
carconnectivity/0/garage/VIN/charging/state

Thank you, Udo.
Somehow it still won’t work for me.
OpenHABian on Raspberry. Docker installed. Portainer ist also working.
I used your code in a docker-file (docker-compose.yml) and startet it.
(only difference in volumes:
/home/openhabian/.local/bin/carconnectivity.json:/carconnectivity.json)
Found it as Container and startet it. (Restart policy on Always or Unless stopped)

But no data ist send to MQTT.

In the Portainer-Log is shown an error:
ImportError: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.38’ not found (required by /opt/venv/lib/python3.12/site-packages/_cffi_backend.cpython-312-arm-linux-gnueabihf.so)

Don’t know if this is important or how it could be repaired

Well, I’m using an LXC container at my Proxmox server, so I can’t say anything about arm (although there are docker images for both arm/v7 and arm64).

But: It’s a bad idea to use docker on top of openHABian. It would be better to install openHAB as a docker container (if you want to use docker)

Ahhh…Thank you. Didn’t know that before.

OK, so I checked with MQTT Explorer. Same result. I can see a whole lot of of topics (the ones I already mentioned above). But most of them are listed under “capabilities” and don’t publish anything useful. Other topics show real data including “last_update” which seems to work correctly. Also a lot of information the programm took from my skoda acccount is visible.

I already did all the --upgrade commands in pip, but it just states the requirements are already fullfulled.

I don’t see the error currently, help much apreciated!

So the connected car binding is not beeing maintained further? Having installed the openhab on a windows server, setting up docker containers and stuff is a little tricky.
Sadly I have to say, this solution - even though its working - its not very userfriendly at all… I honestly would appreciate a more simple and robust solution.

Very sad, that a german founded home automation solution has not a very good solution to connect to the cars of the biggest german car manufacturer :frowning:

I’m no Java developer, so not really in a position to take it on. Though from fumbling through and fixing a few things, it feels like the Connected Car binding is trying too hard to be one piece of code to handle multiple different very unique APIs with quite different ways of doing things. I’d like to spend some more time on it, but I’ve been distracted by a new smart charger that I have to write something funky for.

I’ve also found the VW eConnect integration flakey. It’s currently moaning at me and not returning a token, looks like there some extra workflow that needs doing. Though that seems to be variable. Needs some good debugging and as above, I find the Java tooling clunky.

My two cents about weconnect: I have to accept the EULA from time to time (every time it’s changed), otherwise there is no connection to the API.
And it has to be done via web page, not via API.
Last time was April, 8th :slight_smile:

1 Like

There is also a possibility that here is something wrong with carconnectivity. To get all values for my ID.7 is got in touch with the developer to get everything working.

Ok, with help of the carconnectivity developer Till Steinbach I managed to run carconnectivity on openhab 4.3.4 (openhabian) for my Skoda Enyaq. Here is a step-by-step manual (also for my records):

  1. Create a virtal enviroment venv (in my case I named it “enyaq-venv”):
python3 -m venv enyaq-venv
  1. go to directory:
cd /home/openhabian/skoda-venv/bin
  1. activate venv
source ~/skoda-venv/bin/activate
  1. Install all packages:
pip install \
  git+https://github.com/tillsteinbach/carconnectivity-plugin-mqtt.git \
  git+https://github.com/tillsteinbach/carconnectivity-connector-skoda.git \
  git+https://github.com/tillsteinbach/carconnectivity-cli.git
  1. Upgrade all packages:
  pip install --upgrade \  
  git+https://github.com/tillsteinbach/carconnectivity-plugin-mqtt.git \
  git+https://github.com/tillsteinbach/carconnectivity-connector-skoda.git \
  git+https://github.com/tillsteinbach/carconnectivity-cli.git
  1. Create a file called carconnectivity.json:
sudo nano carconnectivity.json

The file has to contain the following:

{
    "carConnectivity": {
        "log_level": "error", // set the global log level, you can set individual log levels in the connectors and plugins
        "connectors": [
            {
                "type": "skoda", // Definition for a MySkoda account
                "config": {
                    //"log_level": "info",
                   //"api_log_level": "info",
                    "interval": 600, // Interval in which the server is checked in seconds
                    "username": "xxxxxxxxxxx", // Username of your MySkoda Account
                    "password": "xxxxxxxxxxx" // Password of your MySkoda Account
                }
            }
        ],
        "plugins": [
            {
                "type": "webui",
                "config": {
                    "enabled":true, 
                    "host":"192.168.1.172",
                    "port":4000,
                    "username": "openhabian", // Generic  username for login
                    "password": "**************" // Password for login
 }
            },
            {
                "type": "mqtt", // Definition for the MQTT Connection
                "config": {
                    "broker": "192.168.1.172", // Broker hostname or IP address
                    "username": "", // Broker username to login (optional)
                    "password": "", // Broker password to login, (optional)
                    //"api_log_level": "info",
                    "keepalive": 60
              }
            }
        ]
    }
}
  1. Fire-up the program:
carconnectivity-mqtt carconnectivity.json

Use MQTT Explorer to find your topics or just use the console:

mosquitto_sub -h 192.168.1.172 -t "carconnectivity/0/plugins/mqtt/topics" -v

mosquitto_sub -h 192.168.1.172 -t "carconnectivity/0/plugins/mqtt/writeable_topics" -v

You can now also access the webui: 192.168.1.172:4000

You will need a rule that starts the program every 10 mintues (for some reason…). Create an openab rule running the following code every 10minutes:

var command = ["bash", "-c", "source /home/openhabian/skoda-venv/bin/activate && carconnectivity-mqtt /home/openhabian/carconnectivity.json"]; 
actions.Exec.executeCommandLine(command);

Most useful topics:

SoC: 
stateTopic:carconnectivity/0/garage/YOURVIN/drives/primary/level

Target Charging Level: 
stateTopic: carconnectivity/0/garage/YOURVIN/charging/settings/target_level
commandTopic: carconnectivity/0/garage/YOURVIN/charging/settings/target_level_writetopic

Position: 
stateTopic: carconnectivity/0/garage/YOURVIN/position/latitude
stateTopic: carconnectivity/0/garage/YOURVIN/position/longitude

Range: 
stateTopic: carconnectivity/0/garage/YOURVIN/drives/primary/range

Climatization Temperature:
commandTopic: carconnectivity/0/garage/YOURVIN/climatization/settings/target_temperature_writetopic
stateTopic: carconnectivity/0/garage/YOURVIN/climatization/settings/target_temperature

Clima-Control:
commandTopic: carconnectivity/0/garage/YOURVIN/climatization/commands/start-stop_writetopic
stateTopic: carconnectivity/0/garage/YOURVIN/climatization/commands/start-stop


2 Likes

Hi there,
I am running openHAB as well on Windows server and I am running carconnectivity-mqtt together with the webui and the connector to Skoda as well on Windows without any problems (you only need to add a task on startup of the server to run it).