Intégration domotique Vélos en libre-service (GBFS), gratuite et open source

Vélos et places libres de vos stations en libre-service : Vélib', Vélo'v, V'Lille… (données GBFS).
Les vélos disponibles et les places libres de vos stations de vélos en libre-service, pour n'importe quel réseau qui publie ses données au standard ouvert GBFS (General Bikeshare Feed Specification, versions 1.0 à 3.0) : Vélib' Métropole (Paris), Vélo'v (Lyon), Naolib (Nantes), V'lille, VélôToulouse, Villo! (Bruxelles), Citi Bike (New York), BiciMAD (Madrid) et un millier d'autres, recensés dans le catalogue officiel de MobilityData. Sans compte ni clé.
Une ville qui a son intégration Gladys dédiée y sera peut-être mieux servie : Tisséo (Toulouse, VélôToulouse compris), Le Vélo (Bordeaux), STM (Montréal, BIXI compris), TCL (Lyon). Celle-ci est le complément générique, pour tous les autres réseaux.
Cette intégration est un projet communautaire, sans lien avec MobilityData ni avec aucun opérateur de vélos en libre-service. Elle a été testée sur les vrais flux de cinq réseaux, pas encore sur beaucoup d'installations Gladys : vos retours sont les bienvenus.
Ce que vous obtenez
- Un appareil par station surveillée : vélos disponibles, vélos mécaniques et électriques (quand le réseau les distingue), places libres, et si la station est en service, permet de prendre un vélo, permet d'en rendre un.
- Widget « Stations vélo » : vos stations façon tableau d'affichage, ou des tuiles en direct pour une seule station.
- Quatre déclencheurs de scène : plus de vélos, vélos de retour, plus de places, places de retour, au nombre que vous choisissez.
- Action de scène « Lire une station vélo », avec une phrase prête à envoyer (« Préfecture : 4 vélos, 29 places libres. »).
- Jusqu'à 5 réseaux et 30 stations.
Prérequis
- Gladys Assistant 5.2.0 ou plus récent.
- Un accès à Internet depuis la machine Gladys (les flux sont en ligne).
- Pour la recherche autour de la maison : la position de votre maison renseignée dans Gladys (Paramètres → Maisons). L'intégration la demande à l'installation.
Installation
- Dans Gladys, ouvrez Intégrations → Installer depuis GitHub.
- Saisissez
https://github.com/guim31/gladys-gbfs. - Acceptez l'accès demandé (la position de vos maisons, utilisée seulement pour trouver les stations les plus proches).
Configuration
Réglages
- Langue des textes : noms des fonctionnalités, noms des stations (quand le réseau les traduit) et phrases envoyées aux scènes. Les noms de fonctionnalités sont figés à la création de l'appareil.
- Fréquence de mise à jour : 1, 2, 5 ou 10 minutes. L'intégration ne lit
jamais un réseau plus vite que son
ttlne le permet (jusqu'à 5 minutes, voir « Données, rafraîchissement et volume »).
Ajouter un réseau
- Lancez Chercher un réseau avec un nom de réseau, une ville ou un code
pays (
Vélib',Lyon,BE). Chaque résultat affiche son identifiant entre crochets, par exempleVélib' Metropole — Paris, FR [Paris] · GBFS 1.0. - Lancez Ajouter un réseau avec cet identifiant (ou le nom exact). L'intégration lit la liste des stations, et vous dit combien elle en a trouvé et si elle distingue vélos mécaniques et électriques.
Un réseau absent du catalogue : donnez l'adresse de son gbfs.json. Le
catalogue recense aussi des trottinettes, des voitures et des vélos en
free-floating : seuls les systèmes à stations peuvent être ajoutés, et
ceux qui demandent une clé d'accès ne sont pas pris en charge.
Ajouter une station
- Lancez Chercher une station : vide, elle liste les dix stations les
plus proches de la maison, avec leur distance et leurs vélos du moment ;
avec un nom ou un numéro de station (les numéros Vélib' comme
16107marchent), les stations qui correspondent. - Lancez Ajouter une station avec l'identifiant entre crochets.
- Ouvrez l'onglet Découverte de l'intégration et créez l'appareil.
Avec plusieurs réseaux, remplissez le champ Réseau pour n'en chercher qu'un. Avec plusieurs maisons, choisissez la Maison autour de laquelle chercher.
Retirer, vérifier les flux
- Retirer arrête de surveiller une station (par nom ou identifiant) ou tout un réseau avec ses stations. Les appareils restent dans Gladys jusqu'à ce que vous les supprimiez.
- État affiche chaque réseau : sa version GBFS, sa liste de stations, l'âge de la dernière lecture, le rythme, le volume téléchargé par heure, les stations surveillées et la dernière erreur.
Appareils
Station
| Fonctionnalité | Type | Signification |
|---|---|---|
| Vélos disponibles | compteur | vélos que l'on peut prendre (trottinettes non comptées) |
| Vélos mécaniques | compteur | seulement quand le réseau les distingue |
| Vélos électriques | compteur | idem |
| Places libres | compteur | places pour rendre un vélo |
| Station en service | entrée (binaire) | 1 = installée (is_installed) |
| Location possible | entrée (binaire) | 1 = on peut prendre un vélo |
| Retour possible | entrée (binaire) | 1 = on peut rendre un vélo |
Les compteurs vont de 0 à la capacité de la station : une jauge ou un graphique s'y cale.
Widget du tableau de bord
Stations vélo : choisissez les stations à afficher (vide : toutes, dix au plus). Chaque ligne affiche les vélos (mécaniques et électriques quand le réseau les distingue) et les places libres, en vert, en orange à deux vélos ou moins, en rouge sans vélo, en gris hors service. Avec une seule station dont l'appareil est créé, le widget affiche des tuiles en direct.
Déclencheurs de scène
- Plus de vélos à une station : les vélos (tous, mécaniques ou électriques) descendent au nombre choisi ou en dessous (0, 1, 2, 3, 5 ou 10).
- Vélos de retour à une station : ils repassent au-dessus du nombre choisi.
- Plus de places à une station : les places libres descendent au nombre choisi ou en dessous.
- Places de retour à une station : elles repassent au-dessus.
Chaque déclencheur transmet à la scène le nom de la station, les vélos (tous, mécaniques, électriques) et les places libres à ce moment-là. Les seuils mécaniques et électriques ne se déclenchent que sur les réseaux qui les distinguent.
Action de scène
Lire une station vélo renvoie une phrase prête pour un message ou une enceinte (« Benjamin Godard - Victor Hugo : 25 vélos (21 mécaniques, 4 électriques), 10 places libres. »), et des nombres utilisables dans une étape « Continuer seulement si » : vélos, mécaniques, électriques, places, location (1/0), retour (1/0).
Exemples de scènes
- Avant de partir au travail : à 8 h en semaine, lire la station en bas de chez soi et envoyer la phrase sur Telegram.
- Plus de vélo électrique : « Plus de vélos », vélos électriques, au plus 0, à votre station habituelle : une notification, pour partir un peu plus tôt.
- Le retour du soir : « Plus de places », au plus 2, à la station près du bureau : être prévenu avant d'y aller.
Données, rafraîchissement et volume
- Le catalogue des réseaux (
systems.csvde MobilityData, 180 Ko) n'est lu que pour une recherche ou un ajout, et gardé un jour. - La liste des stations de chaque réseau est lue à l'ajout, puis au plus
une fois par jour, et gardée dans le volume
/datade l'intégration. - L'état des stations est lu à la fréquence choisie, une minute au
moins, jamais plus vite que le
ttlannoncé par le réseau. Unttlde plus de cinq minutes est plafonné : Vélib' annonce une heure pour des données rafraîchies chaque minute, il est lu toutes les 5 minutes. Quand le serveur le permet, un flux inchangé n'est pas téléchargé de nouveau. - Volume : de quelques Ko par lecture (petits réseaux) à environ 1 Mo (Citi Bike) ; Vélib' pèse environ 460 Ko par lecture. L'action État affiche le volume par heure de vos réseaux.
- Un serveur qui répond « 429 Too Many Requests » ou « 503 » est laissé tranquille le temps qu'il demande.
- Les données appartiennent à chaque opérateur et sont publiées sous sa propre licence (souvent ODbL ou une licence ouverte) : vérifiez-la avant de les réutiliser ailleurs.
Dépannage
- « ne publie pas de stations » : le système est en free-floating (vélos ou trottinettes garés n'importe où) : il n'a pas de station à surveiller.
- « est illisible (… HTTP 404) » : l'opérateur a déplacé ses flux.
Cherchez de nouveau le réseau, ou donnez l'adresse actuelle de son
gbfs.json. - Pas de fonctionnalités mécaniques/électriques : le réseau ne les distingue pas dans son flux (Naolib, V'lille…), ou n'a que des vélos électriques.
- Un appareil affiche de vieilles valeurs : lancez État ; la dernière erreur dit pourquoi. Les états reviennent seuls dès que le flux répond.
- La recherche autour de la maison est vide : renseignez la position de votre maison dans Gladys, ou cherchez par nom.
docker logs: discret par défaut ; mettezLOG_LEVEL=debugpour voir chaque lecture.
Limites
- Stations seulement : les véhicules en free-floating (
free_bike_status,vehicle_status) ne sont pas lus. - Les flux qui demandent une clé ou un jeton ne sont pas pris en charge.
- Les noms et la liste des fonctionnalités sont fixés à la création de l'appareil : un réseau qui se met à distinguer les vélos plus tard propose « Mettre à jour » dans l'onglet Découverte.
- Jusqu'à 5 réseaux et 30 stations, dix lignes dans le widget.
- La qualité des données est celle de l'opérateur : certains réseaux ne mettent leur flux à jour que toutes les quelques minutes.
Crédits
- GBFS et son catalogue des systèmes : MobilityData et les contributeurs de GBFS (Apache 2.0 pour la spécification).
- Même usage que la plateforme
citybikesde Home Assistant et l'intégrationgbfsde HACS ; aucun code n'en est repris. Les stations vélo de l'intégration Tisséo en ont été le premier jet. - Fixtures de test : vrais flux de Vélib' Métropole, Naolib, V'lille, Vélibéo et Citi Bike, réduits à quelques stations.
- Données des stations : chaque opérateur de réseau (Smovengo pour Vélib', JCDecaux, Ilévia, Lyft, Ecovélo…).
Paramètres de configuration
Voici les paramètres demandés par Vélos en libre-service (GBFS) dans son écran de configuration dans Gladys.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| Fonctionnement | section | Non | Ajoutez votre réseau avec les actions ci-dessous (recherche dans le catalogue GBFS de MobilityData, ou adresse de son gbfs.json), puis vos stations (par nom, ou autour de la maison), et créez leurs appareils dans l'onglet Découverte. Sans compte ni clé. |
| Langue des textes | select | Non | Langue des noms de fonctionnalités, des noms de stations (quand le réseau les traduit) et des phrases envoyées à vos scènes. Les noms de fonctionnalités sont fixés à la création de l'appareil. |
| Fréquence de mise à jour | select | Non | Fréquence de lecture des stations. Jamais plus vite que ce que permet le réseau (son ttl, jusqu'à 5 minutes). Un gros réseau pèse jusqu'à 1 Mo par lecture (Citi Bike : environ 60 Mo par heure à 1 minute) ; l'action « État » affiche le vôtre. |
Comment installer Vélos en libre-service (GBFS) dans Gladys
- Dans Gladys, ouvrez Intégrations : Vélos en libre-service (GBFS) apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
- Cliquez sur Installer. Gladys télécharge l'image Docker (
ghcr.io/guim31/gladys-gbfs:1.0.1), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration). - Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
- Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-gbfs.
Vélos en libre-service (GBFS) nécessite Gladys >=5.2.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.
Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.
À propos des intégrations externes
Vélos en libre-service (GBFS) est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.
- Parcourir toutes les intégrations, natives et communautaires
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation