Sommaire
Pourquoi ?
L’objectif ici sera de retrouver vos transports en commun dans votre interface Jeedom (et surtout dans votre design). Aussi, vous pourrez coupler cette fonctionnalité avec des interactions et d’autres plugins (comme FBbot pour recevoir vos horaires sur Messenger par exemple).
Comment ?
Pour récupérer les informations de vos transports en commun et les intégrer à Jeedom, nous utiliserons les APIs disponibles sur le site https://www.navitia.io/. Je tiens à préciser, surtout pour ceux ayant un usage professionnel des transports en commun, qu’il s’agit bien d’un service fiable. Pour ceux qui comme moi habitent dans la Métropole lilloise, n’hésitez pas à tester une recherche sur le site d’Ilévia. Vous y trouverez en bas à droite des résultats proposés par Navitia justement :
Commencez donc par installer le plugin Localisation et Trajet depuis le Market Jeedom.
Activez-le ensuite si Jeedom vous le propose.
Accédez ensuite à la gestion des équipements du plugin puis à sa configuration.
Le plugin aura alors besoin d’une API Navitia.io (l’API Google Maps n’étant pas nécessaire ici)
Avec Navitia
Pour obtenir le token permettant l’utilisation des API Navitia.io, enregistrez-vous sur le site via l’URL suivante :
https://www.navitia.io/register/
Une fois enregistré, connectez-vous et créez votre application en lui donnant le nom de votre choix puis en cliquant sur « +ADD NEW TOKEN« .
Vous retrouverez alors votre application juste en dessous avec un Token à placer dans la configuration de votre plugin.
Nous allons ensuite utiliser le playground de Navitia.io : il s’agit d’une interface web qui va vous permettre de tester plusieurs paramètres parmis lesquels vous trouverez :
- Le mode de transport utilisé, comme le bus par exemple.
- la ligne de bus que vous utiliserez.
- La direction vers laquelle se dirige votre bus.
- Les coordonnées de l’arrêt que vous allez prendre.
- Votre région.
Rendez-vous donc à cette adresse :
http://canaltp.github.io/navitia-playground/play.html?
Pour la catégorie « Fill out credential info« , vous trouverez le champs « API » dans lequel vous devrez saisir :
https://api.navitia.io/v1
puis le champ Token dans lequel mettre celui saisi précédemment dans la configuration du plugin.
Vous trouverez ensuite la catégorie « Build your path« . J’utiliserai un code couleur sur certains termes pour vous aider à vous repérer avec la couleur des champs sur Navitia.io.
Accédez à Google Maps puis cliquez sur la carte à l’endroit où se trouve votre arrêt. En bas, vous trouverez les coordonnées du point que vous avez choisi sous la forme X, Y . Nous allons donc reprendre ces coordonnées mais en y changeant la forme pour qu’elle devienne Y;X , c’est à dire qu’on :
- Inverse les coordonnées.
- Remplace la virgule par un point virgule.
- Supprime l’espace qui précède la seconde coordonnée.
Ensuite dans Navitia.io, choisissez « coord » dans le premier champ, cliquez sur « ADD » et saisissez les coordonnées sous la forme modifiée citée précédemment.
Cliquez ensuite sur « SUBMIT« . Vous trouverez en bas la ligne « Response » à droite de laquelle cliquer sur « {}« . Cliquez ensuite sur le « + » situé à droite de « regions » et récupérer la vôtre (me concernant le résultat me donne « fr-ne« ).
Revenons alors dans la partie « Build your path » pour y ajouter notre région avec le paramètre « coverage« . Attention cependant, la région doit se trouver avant les coordonnées. Vous aurez donc un résultat sous cette forme :
Toujours dans la même partie, nous allons récupérer les moyens de transports disponibles à la position choisie en choisissant « physical_modes » dans « empty feature« .
Cliquez ensuite sur « SUBMIT« . Me concernant je n’ai qu’un moyen de transport disponible : le bus. Selon la localisation que vous avez choisi, vous trouverez bien sur d’autres moyens de transport disponibles. En cliquant sur « {} » à droite du moyen de transport qui nous intéresse, récupérez l’id.
Revenons une nouvelle fois dans la partie « Build your path« . Choisissez dans le troisième champ vide « physical_modes » choisissez le mode de transport que vous allez utiliser, vous retrouverez l’id récupéré précédemment ici.
Récupérons ensuite les lignes de bus qui vont passer à votre arrêt avec le paramètre « lines » où nous avions précédemment « empty feature« .
Cliquez sur « SUBMIT« . On observe dans mon cas 3 lignes de bus. Je vais garder la ligne « HALLUIN GOUNOD <> LEERS CENTRE CCIAL » en récupérant son id.
Dans « Build your path« , ajoutez le paramètre « lines » et supprimez la feature « lines » créé précédemment.
Nous avons maintenant la ligne de bus qui nous intéresse mais nous avons besoin de récupérer la route qui va déterminer le sens de déplacement. Pour ce faire, utilisez la feature « routes« .
Vous devriez ensuite avoir deux résultats correspondant à l’aller et au retour de la ligne. Pour les distinguer, regardez le paramètre direction_type qui peut prendre soit la valeur « forward » pour l’aller ou bien « backward » pour le retour. Ici, comme je recherche la route pour l’aller, je prends l’id de la route correspondante.
Vous pouvez ensuite tester le résultat ainsi obtenu en remplaçant la feature « routes » par « departures » et en ajoutant le paramètre « route » avec l’id ainsi récupéré précédemment.
Pour ma part, je vois bien les prochains passages de bus dans les résultats avec comme unique arrêt « Noir Pignon« .
Avec Jeedom
Nous allons maintenant pouvoir configurer notre plugin avec :
- Les coordonnées Google Maps de votre arrêt.
- L’id de la route.
Retournez donc à la création des équipement dans la gestion du plugin Localisation et Trajet et ajoutez d’abord un équipement dans « Localisations statiques et mobiles » en lui donnant le nom de votre choix, comme celui de votre arrêt de bus.
Activez-le et rendez-le visible, choisissez en type « Localisation« , un mode « Par coordonnées » puis saisissez les coordonnées récupérée avec Google Maps juste en dessous sous la forme d’origine puis sauvegardez.
Revenez ensuite à la création d’équipement et ajoutez cette fois un arrêt de transport en commun en lui donnant le nom de votre choix.
Activez-le et rendez-le visible, choisissez en type « Arrêt Transports« , sélectionnez la localisation créée précédemment et définissez pour les options de transport :
filter=route.id=X
où :
- X est l’id de la route récupérée précédemment (ex : route:OLI:L4 dans mon exemple de test).
Pour ma part, je masque les arrivées pour ne garder que les départs. Sauvegardez ensuite vos modifications.
Petite précision, l’équipement intègre nativement 4 commandes pour vos horaires : 2 de départ et 2 d’arrivée. Si vous décidez de masquer les arrivées, vous aurez toujours vos 4 commandes, mais celles d’arrivée retourneront des heures de départ également !
Voici donc le résultat obtenu :
Vos transports en commun sont maintenant disponibles directement dans Jeedom.
Pour aller plus loin
Rafraîchissement des données
Vous pouvez constater que dans la configuration du plugin l’unique CRON actif est le CRON15. Ceci signifie que vos horaires seront actualisés toutes les 15 minutes, ce qui n’est pas du tout suffisant selon moi.
Je vous propose donc de créer un scénario en lui donnant le nom de votre choix.
Activez-le et choisissez un mode de scénario Provoqué en ajoutant un déclencheur qui sera la commande de « Départ 1 heure« .
Accédez ensuite à l’onglet « Scénario« , ajoutez un bloc, choisissez « Dans » et enregistrez.
Saisissez 5 dans ce bloc et ajoutez-y une action.
Ajoutez-y ensuite la commande de rafraîchissement.
Reproduisez ensuite ce même bloc avec cette fois-ci un délai de 10. Vous obtiendrez alors ce résultat :
Puis sauvegardez.
Ainsi, le rafraîchissement sera beaucoup plus fréquent et régulier qu’initialement.
Intégration dans un design
Intégrez vos transports en commun directement dans un design de Jeedom via le tuto disponible directement depuis cette adresse.
Bonjour,
J’ai tenté de reproduire la même chose avec le réseau Ilévia chez moi habitant aussi à Lille mais je n’ai pas de external_code sur le constructeur de l’api.
L’api de Navitia a changé ?
Bonne journée
Hello,
Je rencontre malheureusement le même problème, mais je n’ai pour le moment pas de solution à apporter. J’éditerai l’article si je trouve une solution.
Super tutorial, franchement super clair et bien documenté.
Concernant les filtres, à proximité de mes coordonnées GPS, j’ai 2 arrêt de bus.
Est-il possible d’utiliser le paramètre &stop_point.id=stop_point:OAB:SP:1000088 après le filtre sur la route par exemple ?
J’ai tenté cela dans le filtre de mon arrêt de bus et j’ai toujours les horaires des 2 arrêts.
Merci d’avance.
Bonjour,
Attention, pour que ça marche sans avoir besoin de l’API Google, il faut choisir le mode de localisation « Manuel » pour l’équipement de type Localisation.
Ensuite cet équipement sort une erreur s’il est affiché, mais ça ne gêne pas l’équipement de type « Arrêt de Transport » qui marche correctement.
Bonne journée,
JeedAlf
Bonjour, je rejoins Jérome: super tuto !
Mais…. ca en marche pas chez moi ;-), mais comme je débute sur Jeedom, ca doit pas venir du tuto….
La procédure décrite pour l’utilisation de l’API Navita fonctionne avec mes paramètres. Seulement, je n’ai toujours pas de résultat dans Jeedom.
Dans ‘Arret et transports en commun’, je vais dans commande. Quand je clique sur ‘Tester’, paramètres avancés, je pensais pouvoir récupérer un résultat de commande. Mais rien ne s’affiche.
Comment récupérer l’URL de la commande envoyée vers Navita ?
Merci, et bon confinement à toutes et tous
Bonjour,
je suis dans le même cas que (Lo)², j’ai réussi à récupérer toutes les informations. Renseigner mon id=route mais je n’ai aucun résultat qui apparait. Pourtant sur Navita j’ai bien tous les départs d’affiché. Il doit y avoir un blocage quelque part mais qui ne vient pas de nous … 🙁
Si quelqu’un à une solution.
Merci d’avance 🙂
Bonjour, j’ai le même soucis que YaYa et (Lo)² mais résultat n’apparaissent pas.
Dans les log en debug j’ai : » [message] => The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. » si cela peut aider
Merci d’avance
Eric
Bonjour,
J’avais désactivé le plugin depuis 1 an, je viens d’essayer de le remettre et bien sûr ça ne marche plus 🙂
Je reprends donc toutes les étapes, avec le playground, au cas où la route que j’avais créée initialement ne serait plus correcte.
A la toute première étape il est indiqué de saisir juste « coord » pour obtenir la région. De ce que je viens de tester ça ne marche plus, il a fallu que je mette en premier « coverage » pour avoir une 1ère réponse.
Je poursuis.
Le playground a changé d’adresse:
https://playground.navitia.io/play.html