{"id":1560,"date":"2025-03-16T18:09:25","date_gmt":"2025-03-16T17:09:25","guid":{"rendered":"https:\/\/www.thelins.se\/johan\/blog\/?p=1560"},"modified":"2025-09-09T18:56:10","modified_gmt":"2025-09-09T16:56:10","slug":"carconnectivity-and-the-id-buzz","status":"publish","type":"post","link":"https:\/\/www.thelins.se\/johan\/blog\/2025\/03\/carconnectivity-and-the-id-buzz\/","title":{"rendered":"CarConnectivity and the ID.Buzz"},"content":{"rendered":"\n<p>I just got myself a brand new car: an ID.Buzz with seven seats so that I can fit the whole family at once. I&#8217;m very happy with the car this far, but since it has connectivity, I want to see if I can integrate it into HomeAssistant.<\/p>\n\n\n\n<p>To do this, I wanted to use the CarConnectivity project by <a href=\"https:\/\/github.com\/tillsteinbach\">Till Steinbach<\/a>. It is a Python package that comes in a few parts. The <a href=\"https:\/\/github.com\/tillsteinbach\/CarConnectivity\">main project<\/a>, a <a href=\"https:\/\/github.com\/tillsteinbach\/CarConnectivity-connector-volkswagen\">Volkswagen connector<\/a>, an <a href=\"https:\/\/github.com\/tillsteinbach\/CarConnectivity-plugin-mqtt\">MQTT bridge<\/a> and a <a href=\"https:\/\/github.com\/tillsteinbach\/CarConnectivity-plugin-mqtt_homeassistant\">HomeAssistant MQTT discovery helper<\/a>.<\/p>\n\n\n\n<p>Having played with the software for a bit (and reported a bug that Till fixed asap &#8211; I&#8217;m impressed!) I decided to setup the whole thing on my little RaspberryPi that runs a few little services I use around the house.<\/p>\n\n\n\n<p>Preparing this, I setup a new user and installed the software in a Python virtual environment:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo adduser carconnectivity\nsudo su carconnectivity\ncd\nmkdir carconnectivity\ncd carconnectivity\/\npython -m venv venv\nsource venv\/bin\/activate\npip install carconnectivity-connector-volkswagen==0.5a1 carconnectivity-plugin-mqtt carconnectivity-plugin-mqtt_homeassistant\nvim carconnectivity.json<\/code><\/pre>\n\n\n\n<p>Using the <code>vim<\/code> command, I created the CarConnectivity configuration file. Update usernames, passwords and IPs to your needs. I will experiment with the <code>interval<\/code> parameter, as I don&#8217;t want to discharge the 12v battery by querying the car too much.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n        \"carConnectivity\": {\n                \"log_level\": \"error\",\n                \"connectors\": &#91;\n                        {\n                                \"type\": \"volkswagen\",\n                                \"config\": {\n                                        \"interval\": 1800,\n                                        \"username\": \"hello@example.com\",\n                                        \"password\": \"secret\"\n                                }\n                        }\n                ],\n                \"plugins\": &#91;\n                        {\n                                \"type\": \"mqtt\",\n                                \"config\": {\n                                        \"broker\": \"my-mqtt.local\",\n                                        \"username\": \"user\",\n                                        \"password\": \"secret\"\n                                }\n                        },\n                        {\n                                \"type\": \"mqtt_homeassistant\",\n                                \"config\": {}\n                        }\n                ]\n        }\n}\n<\/code><\/pre>\n\n\n\n<p>Having configured the service (and having run it manually to fix my mistakes) I created the <code>carconnectivity.service<\/code> systemd service shown below (in <code>\/etc\/systemd\/system<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Car Connectivity to MQTT\nAfter=network-online.target\n\n&#91;Service]\nType=simple\nUser=carconnectivity\nGroup=carconnectivity\nWorkingDirectory=\/home\/carconnectivity\/carconnectivity\/\nEnvironment=\"LC_ALL=sv_SE\"\nExecStart=\/home\/carconnectivity\/carconnectivity\/venv\/bin\/carconnectivity-mqtt \/home\/carconnectivity\/carconnectivity\/carconnectivity.json\n\n&#91;Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n\n\n\n<p>And then I started and enabled the service.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl start carconnectivity<br>sudo systemctl enable carconnectivity<\/code><\/pre>\n\n\n\n<p>Finally, I had a look at the status and made sure that everything looks ok.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status carconnectivity<\/code><\/pre>\n\n\n\n<p>And, viola, the car shows up as a device in Home Assistant. Magic!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2025\/03\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"781\" src=\"https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2025\/03\/image-1024x781.png\" alt=\"\" class=\"wp-image-1562\" srcset=\"https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2025\/03\/image-1024x781.png 1024w, https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2025\/03\/image-300x229.png 300w, https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2025\/03\/image-768x586.png 768w, https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2025\/03\/image-1536x1172.png 1536w, https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2025\/03\/image.png 1974w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>I just got myself a brand new car: an ID.Buzz with seven seats so that I can fit the whole family at once. I&#8217;m very happy with the car this far, but since it has connectivity, I want to see if I can integrate it into HomeAssistant. To do this, I wanted to use the &hellip; <a href=\"https:\/\/www.thelins.se\/johan\/blog\/2025\/03\/carconnectivity-and-the-id-buzz\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">CarConnectivity and the ID.Buzz<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-1560","post","type-post","status-publish","format-standard","hentry","category-personal"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/1560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/comments?post=1560"}],"version-history":[{"count":2,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/1560\/revisions"}],"predecessor-version":[{"id":1563,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/1560\/revisions\/1563"}],"wp:attachment":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/media?parent=1560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/categories?post=1560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/tags?post=1560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}