Intégration domotique Île-de-France Mobilités, gratuite et open source

RER, Transilien, métro, tram, bus : départs et trafic en temps réel.
Cette intégration suit vos transports franciliens en temps réel dans Gladys : les prochains passages à vos arrêts — RER, Transilien, métro, tram, bus — avec leurs retards et suppressions, et l'info trafic de vos lignes (incidents, travaux). Elle les transforme en appareils, en déclencheurs de scène (« mon RER est supprimé », « mon métro passe dans 5 minutes », « la ligne 13 est perturbée ») et en widgets de tableau de bord.
Les données viennent de PRIM, la plateforme de données ouvertes d'Île-de-France Mobilités, et de ses référentiels ouverts (lignes et arrêts).
Intégration communautaire, sans lien avec Île-de-France Mobilités, la SNCF ou la RATP.
Configuration
1. Obtenir une clé d'API (gratuit)
- Créez un compte sur prim.iledefrance-mobilites.fr.
- Dans le menu de votre compte, ouvrez Mes jetons d'authentification, onglet API, puis cliquez sur Générer mon jeton.
- Copiez le jeton tout de suite : il n'est affiché qu'une fois (en générer un nouveau invalide l'ancien).
Un nouveau compte autorise 1 000 requêtes par jour et par API. C'est suffisant pour un ou deux arrêts avec une plage horaire. Pour davantage, demandez gratuitement un quota plus élevé sur la page Ma consommation API (jusqu'à 1 000 000 par jour pour les prochains passages), puis reportez le nouveau quota dans le réglage Quota quotidien des départs.
2. Les arrêts suivis (jusqu'à 3)
| Champ | Rôle |
|---|---|
| Arrêt | le nom de l'arrêt (« Massy - Palaiseau », « Châtelet ») ou son numéro donné par Chercher un arrêt |
| Ligne | optionnelle mais conseillée : « RER B », « Transilien P », « Métro 13 », « T3a », « Bus 91 », « C01743 » |
| Direction | optionnelle : des mots de la destination (« Robinson », « Saint-Rémy | Massy » pour deux directions) |
| Plage horaire | optionnelle, par exemple 07:00-09:30 |
| Jours de trajet | optionnels, par exemple du lundi au vendredi (vide : tous les jours) |
Pour une ligne, sans mode précisé, une lettre désigne une ligne de train (« B » = RER B, « P » = Transilien P) et un nombre une ligne de métro avant une ligne de bus (« 13 » = métro 13). Pour un bus, écrivez « Bus 91 » ; si plusieurs réseaux ont une ligne du même numéro, utilisez l'identifiant donné par Chercher une ligne (« C01122 »).
Avec une ligne, le nom de l'arrêt est cherché parmi les arrêts de cette ligne : c'est le plus fiable. Sans ligne, l'intégration prend l'arrêt dont le nom correspond exactement, en privilégiant les gares, et affiche toutes ses lignes. Si ce n'est pas le bon arrêt, utilisez Chercher un arrêt et copiez son numéro.
La plage horaire
Les prochains passages ne sont connus que deux heures à l'avance. Avec une plage horaire, l'arrêt n'est lu que d'une heure avant la plage jusqu'à sa fin, et pas du tout le reste du temps. Cela économise beaucoup le quota : un arrêt avec une plage de 2 heures du lundi au vendredi coûte environ 65 requêtes par jour, contre environ 600 pour un arrêt lu toute la journée.
Si les arrêts configurés demandent plus que le quota, l'intégration espace d'elle-même les lectures (le bouton Tester la connexion indique l'intervalle réellement utilisé).
3. L'info trafic
Dans Lignes suivies, saisissez jusqu'à 6 lignes séparées par des virgules : RER B, Transilien P, Métro 13. Tout le réseau est lu en une seule requête toutes les 5 minutes (réglable), environ 290 requêtes par jour quel que soit le nombre de lignes.
Une ligne est :
- interrompue si une perturbation bloquante est en cours (trafic interrompu sur tout ou partie de la ligne) ;
- perturbée si une perturbation est en cours sans interrompre le trafic (ralentissements, arrêts non desservis…) ;
- normale sinon. Les simples messages d'information (ascenseur en panne, etc.) ne comptent pas.
Enregistrez, puis cliquez sur Tester la connexion : il indique, pour chaque arrêt, le nombre de départs trouvés et l'heure du prochain, l'état de chaque ligne et la consommation du quota.
4. Ajouter les appareils
Dans l'onglet Découverte, chaque arrêt apparaît comme « IDFM – arrêt (ligne → direction) » et chaque ligne suivie comme « IDFM – Trafic ligne ». Ajoutez-les et placez-les dans une pièce.
| Appareil | Fonctionnalité | Valeur |
|---|---|---|
| Arrêt | Prochain départ | texte, par exemple « 07:42 · RER B KASE → Aéroport CDG 2 · +5 min » |
| Arrêt | Départ dans | en minutes, temps réel |
| Arrêt | Retard | en minutes (trains avec horaire ; toujours 0 pour le métro, qui n'en a pas) |
| Arrêt | Départs perturbés | combien de départs suivis sont en retard (au-delà du seuil) ou supprimés |
| Ligne | Trafic | texte : « Trafic normal », « Perturbé : … », « Interrompu : … » |
| Ligne | Perturbations en cours | nombre de perturbations en cours (hors simples informations) |
Scènes
Déclencheurs
| Déclencheur | Quand |
|---|---|
| IDFM : train en retard | un train suivi prend du retard (à partir du seuil), puis à 15 et 30 min |
| IDFM : départ supprimé | un départ suivi est supprimé |
| IDFM : départ imminent | un départ suivi part dans 2, 5, 10, 15, 20 ou 30 minutes, compté sur l'horaire réel |
| IDFM : ligne perturbée | une nouvelle perturbation touche une ligne suivie (filtres : gravité, incident/travaux) |
| IDFM : retour à la normale | une ligne suivie qui était perturbée circule de nouveau normalement |
Chaque événement fournit une variable Résumé, une phrase prête à envoyer : « Massy - Palaiseau : le RER B KASE → Aéroport CDG 2 part dans 15 min, à 07:42 (4 min de retard). » ou « RER B : Interrompu. Trafic interrompu entre Massy et Paris. ».
Un événement n'est déclenché qu'une fois par départ ou par perturbation, même après un redémarrage.
Actions
- IDFM : prochains départs : le prochain départ d'un arrêt (ligne, destination, horaire, retard, voie…) et un résumé, par exemple pour « annoncer mon prochain RER quand je sors de la douche ».
- IDFM : trafic d'une ligne : l'état d'une ligne, sa principale perturbation et un résumé.
Widgets
- Départs IDFM : les prochains départs d'un arrêt, comme sur les écrans en gare, avec « dans N min », « +N min », « Supprimé » ou « À quai ». Choisissez un arrêt suivi, ou saisissez un autre arrêt (et sa ligne) directement dans le widget — attention, il consomme alors le quota à chaque rafraîchissement.
- Trafic IDFM : l'état de chaque ligne suivie (ou de celles saisies dans le widget), puis les perturbations en cours et celles prévues dans les 24 heures ; touchez-en une pour lire le message complet.
Questions fréquentes
Pas de retard pour le métro ? Le métro et la plupart des bus n'ont pas d'horaire théorique dans les données temps réel : seul le temps d'attente est connu. Le retard et le déclencheur « train en retard » concernent les RER, Transilien et lignes avec horaire.
Le widget affiche « Départs de 07:00-09:30 affichés à partir de 06:00 ». C'est normal : hors de la plage horaire, l'arrêt n'est pas lu.
« La clé d'API PRIM est refusée ». Le jeton a été mal copié ou régénéré depuis : générez-en un nouveau et collez-le.
« Quota quotidien atteint ». Ajoutez une plage horaire à vos arrêts, augmentez le rafraîchissement, ou demandez un quota plus élevé à PRIM (gratuit) et reportez-le dans les réglages.
Paramètres de configuration
Voici les paramètres demandés par Île-de-France Mobilités dans son écran de configuration dans Gladys.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| Clé d’API PRIM | section | Non | Les données viennent de PRIM, la plateforme de données ouvertes d’Île-de-France Mobilités : prochains passages en temps réel des RER, Transilien, métro, tram et bus, et perturbations du trafic. La clé est gratuite : créez un compte, puis générez un jeton dans « Mes jetons d’authentification ». Un nouveau compte autorise 1 000 requêtes par jour et par API ; l’intégration les compte et espace ses lectures pour rester en dessous. |
| Clé d’API | secret | Oui | Le jeton généré sur PRIM (affiché une seule fois). |
| Arrêt 1 | section | Non | L’arrêt où vous prenez votre train, métro, tram ou bus, et sa ligne : les départs sont lus en temps réel. Un nom d’arrêt (« Massy - Palaiseau ») ou son numéro donné par le bouton « Chercher un arrêt ». Avec une ligne, le nom est cherché parmi ses arrêts. La direction ne garde que les départs dont la destination contient ces mots (« Robinson », « Saint-Rémy | Massy »). La plage horaire économise le quota : l’arrêt n’est alors lu que d’une heure avant jusqu’à sa fin. |
| Arrêt | string | Non | |
| Ligne | string | Non | RER B, Transilien P, Métro 13, T3a, Bus 91… Vide : toutes les lignes de l’arrêt. |
| Direction | string | Non | Des mots de la destination. Vide : toutes les directions. |
| Plage horaire | string | Non | Départs entre ces heures, par exemple 07:00-09:30. Vide : toute la journée. |
| Jours de trajet | multi_select | Non | Vide : tous les jours. |
| Arrêt 2 (optionnel) | section | Non | Mêmes champs que l’arrêt 1, par exemple le retour. Laissez vide si inutile. |
| Arrêt | string | Non | |
| Ligne | string | Non | RER B, Transilien P, Métro 13, T3a, Bus 91… Vide : toutes les lignes de l’arrêt. |
| Direction | string | Non | Des mots de la destination. Vide : toutes les directions. |
| Plage horaire | string | Non | Départs entre ces heures, par exemple 07:00-09:30. Vide : toute la journée. |
| Jours de trajet | multi_select | Non | Vide : tous les jours. |
| Arrêt 3 (optionnel) | section | Non | Mêmes champs que l’arrêt 1, par exemple le retour. Laissez vide si inutile. |
| Arrêt | string | Non | |
| Ligne | string | Non | RER B, Transilien P, Métro 13, T3a, Bus 91… Vide : toutes les lignes de l’arrêt. |
| Direction | string | Non | Des mots de la destination. Vide : toutes les directions. |
| Plage horaire | string | Non | Départs entre ces heures, par exemple 07:00-09:30. Vide : toute la journée. |
| Jours de trajet | multi_select | Non | Vide : tous les jours. |
| Info trafic | section | Non | Les lignes dont vous suivez le trafic : un appareil par ligne (normal, perturbé, interrompu), des scènes quand une perturbation commence ou se termine, et un widget. Tout le réseau est lu en une requête toutes les quelques minutes. |
| Lignes suivies | string | Non | Jusqu’à 6, séparées par des virgules. |
| Réglages | section | Non | Avec les valeurs par défaut, un arrêt lu toute la journée coûte environ 600 requêtes par jour, un arrêt avec une plage de 2 heures en semaine environ 65. Quand les arrêts demanderaient plus que le quota quotidien, l’intégration les lit moins souvent d’elle-même. |
| Départs suivis par arrêt | number | Non | Les prochains départs de chaque arrêt, entre 1 et 8. |
| Seuil de retard (min) | number | Non | À partir de combien de minutes un train compte comme en retard (scènes, départs perturbés, couleurs). |
| Rafraîchissement des départs (min) | number | Non | Dans la plage horaire (toute la journée sans plage), entre 1 et 30 minutes. |
| Rafraîchissement du trafic (min) | number | Non | Entre 2 et 60 minutes. |
| Quota quotidien des départs | number | Non | Le quota quotidien de l’API « Prochains passages (requête unitaire) » de votre compte : 1 000 pour un nouveau compte. Augmentez-le ici après en avoir demandé davantage à PRIM (gratuit). |
Comment installer Île-de-France Mobilités dans Gladys
- Dans Gladys, ouvrez Intégrations : Île-de-France Mobilités 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/william-de71/gladys-idfm:1.0.0), 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/William-De71/gladys-idfm.
Île-de-France Mobilités nécessite Gladys >=5.1.1. 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
Île-de-France Mobilités 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 William-De71, et non par l'équipe cœur de Gladys.
- Parcourir toutes les intégrations externes
- Découvrir les intégrations natives intégrées à Gladys
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation