https://github.com/techn0phil/vdl-parkings
VDL (Ville De Luxembourg) parkings data integration for Home Assistant
https://github.com/techn0phil/vdl-parkings
custom-integration home-assistant luxembourg parking
Last synced: about 2 months ago
JSON representation
VDL (Ville De Luxembourg) parkings data integration for Home Assistant
- Host: GitHub
- URL: https://github.com/techn0phil/vdl-parkings
- Owner: techn0phil
- License: apache-2.0
- Created: 2026-03-11T00:06:16.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-26T12:07:14.000Z (about 2 months ago)
- Last Synced: 2026-04-26T14:00:36.597Z (about 2 months ago)
- Topics: custom-integration, home-assistant, luxembourg, parking
- Language: Python
- Homepage:
- Size: 1.69 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# VDL Parkings β Home Assistant Custom Integration
Home Assistant custom integration to monitor the availability and status of public parkings in Luxembourg city (VDL - Ville De Luxembourg) using the public data from [vdl.lu](https://www.vdl.lu/fr/se-deplacer/en-voiture/parkings-et-pr) website.
> [!WARNING]
> **Beta version** β This integration is in testing phase π§
> - Features and entities may change between releases.
> - Use at your own risk and keep regular backups of your Home Assistant configuration.
> - Please [report issues](https://github.com/techn0phil/vdl-parkings/issues) with logs and details.
## Table of contents
- [Features](#features)
- [Requirements](#requirements)
- [Installation](#installation)
- [HACS (recommended)](#hacs-recommended)
- [Manual installation](#manual-installation)
- [Configuration](#configuration)
- [Provided entities](#provided-entities)
- [Sensor entities](#sensor-entities)
- [Binary sensor entities](#binary-sensor-entities)
- [Zone entities](#zone-entities)
- [Example usage](#example-usage)
- [Simple Lovelace card](#simple-lovelace-card)
- [Conditional notification when a parking has space](#conditional-notification-when-a-parking-has-space)
- [Map view with zones](#map-view-with-zones)
- [Screenshots](#screenshots)
- [FAQ](#faq)
- [Troubleshooting](#troubleshooting)
- [Development and contributions](#development-and-contributions)
## Features
- Cloud polling of the public VDL parking data (no account or API key required, only Internet access).
- Provides sets of entities per parking:
- `sensor` entities:
- Total capacity
- Available spaces
- Occupied spaces
- Occupancy rate as a percentage
- `binary_sensor` entities:
- Open
- Full
- Out of service
- A `zone` entity to expose its geolocation (usable for proximity, automations, maps).
- Configuration via the Home Assistant UI (`config_flow`), no YAML needed.
## Requirements
- Home Assistant Core **2026.3.0** or newer.
- Working Internet connection to reach the VDL public parking API (cloud polling, `iot_class: cloud_polling`).
## Installation
### HACS (recommended)
[](https://my.home-assistant.io/redirect/hacs_repository/?owner=techn0phil&repository=vdl-parkings&category=integration)
Or:
1. In Home Assistant, go to **HACS β Custom repositories**.
2. Add this repository URL `https://github.com/techn0phil/vdl-parkings` as type **Integration**.
3. Search for **VDL Parkings** in HACS and install it.
4. Restart Home Assistant.
5. Add the integration from **Settings β Devices & Services β Add integration β VDL Parkings**.
### Manual installation
1. Download or clone this repository.
2. Copy the `custom_components/vdl_parkings` folder into your Home Assistant `config/custom_components` directory.
3. Ensure the final path is:
`config/custom_components/vdl_parkings` (folder name must match the domain).
4. Restart Home Assistant.
5. Add the integration from **Settings β Devices & Services β Add integration β VDL Parkings**.
## Configuration
The integration is configured entirely from the UI via a **config flow**.
1. Go to **Settings β Devices & Services β Add integration**.
2. Search for **VDL Parkings**.
3. Follow the onboarding steps to:
- Select which parkings you want to monitor
- Optionally assign areas to selected parkings
At the moment there is no advanced options exposed in the configuration flow.
## Provided entities
For each selected parking, the integration creates multiple entities. The exact entity IDs may vary slightly depending on your Home Assistant server language.
### Sensor entities
| Entity class | Example entity ID | Description |
|---------------------------|----------------------------------------------|------------------------------------------------------|
| `ParkingTotalCapacity` | `sensor._total_capacity` | Total number of parking spaces. |
| `ParkingAvailableSpaces` | `sensor._available_spaces` | Current number of free spaces. |
| `ParkingOccupiedSpaces` | `sensor._occupied_spaces` | Current number of occupied spaces. |
| `ParkingOccupancyRate` | `sensor._occupancy_rate` | Percentage of occupied spaces. |
### Binary sensor entities
| Entity class | Example entity ID | Description |
|-------------------------|---------------------------------------------|-----------------------------------------------------------------------------|
| `ParkingOpen` | `binary_sensor._open` | On when the parking is open, off when closed. |
| `ParkingFull` | `binary_sensor._full` | On when the parking is considered full. |
| `ParkingOutOfService` | `binary_sensor._out_of_service`| On when the parking is out of service, closed for maintenance, etc. |
### Zone entities
- A `zone` is created for each parking to expose its geolocation in the map and for proximity-based automations.
- The zone name matches the parking name.
## Example usage
### Simple Lovelace card
Example: show availability for a single parking using an Entities card:
```yaml
type: entities
title: Parking Royal Hamilius
entities:
- entity: sensor.royal_hamilius_available_spaces
name: Available spaces
- entity: sensor.royal_hamilius_total_capacity
name: Total capacity
- entity: sensor.royal_hamilius_occupied_spaces
name: Occupied spaces
- entity: binary_sensor.royal_hamilius_full
name: Full
- entity: binary_sensor.royal_hamilius_open
name: Open
```
### Conditional notification when a parking has space
```yaml
alias: Notify when parking has space
triggers:
- trigger: numeric_state
entity_id: sensor.royal_hamilius_available_spaces
above: 10
conditions:
- condition: state
entity_id: binary_sensor.royal_hamilius_open
state: "on"
actions:
- action: notify.mobile_app_my_phone
data:
message: "Royal Hamilius has more than 10 free parking spaces."
mode: single
```
### Map view with zones
Once zones are created for each parking, you can add the standard **Map** card in Lovelace and enable the parking zones to visualize all monitored parkings on a map.
## Screenshots
### Integration page

### Parking entities overview

### Map view with parking zones

## FAQ
**Does this integration require an account or API key?**
No. It uses the public data provided by vdl.lu for parking information, so no credentials are required.
**How often is data updated?**
The integration uses cloud polling at a fixed interval of 60 seconds. The effective refresh rate is limited by both the integration and the VDL API update frequency.
**Can I select which parkings to track?**
Yes, the configuration flow allows choosing which parkings to monitor.
**Can I change the polling interval or configure advanced options?**
Not yet. The first versions only provide a minimal UI configuration without extra options. Future releases may add options such as polling interval.
**Does this integration support YAML configuration?**
No. It is UI-only and uses the recommended `config_flow` for setup.
## Troubleshooting
**Integration does not appear in the βAdd integrationβ list**
- Check that the folder is named `vdl_parkings` under `custom_components` and that Home Assistant has been restarted.
- Clear your browser cache or try another browser.
**No entities are created**
- Verify that the config flow has completed successfully and that at least one parking was selected.
- Check **Settings β System β Logs** for errors related to `vdl_parkings`.
- Ensure that your Home Assistant host has working Internet access to reach the VDL API.
**Data seems outdated or not updating**
- Check for rate limiting or connectivity issues in the logs.
- Confirm that the source VDL website/API shows up-to-date information.
**Too many entities / clutter**
- During setup, only select the parkings that you actually need. You can also disable unnecessary entities from the entity settings in Home Assistant.
## Development and contributions
Contributions, bug reports and feature requests are welcome via the [GitHub issue tracker](https://github.com/techn0phil/vdl-parkings/issues). Please include Home Assistant version, integration version, logs and clear reproduction steps when reporting bugs.