Open oudoulj opened 1 year ago
l'API utilisé par le projet n'existe plus. Les datas ont migré sur : https://prim.iledefrance-mobilites.fr/fr
Il faut changer les call API... reste Ă savoir si @pgrimaud souhaite le faire ou non.
l'API utilisé par le projet n'existe plus. Les datas ont migré sur : https://prim.iledefrance-mobilites.fr/fr
Il faut changer les call API... reste Ă savoir si @pgrimaud souhaite le faire ou non.
Merci. J'ai crĂ©Ă© un compte sur https://prim.iledefrance-mobilites.fr/fr puis gĂ©nĂ©rĂ© un token mais il va me falloir creuser sur comment mettre en place un call dans Home Assistant đ
Je viens de regarder, et O.M.G.
Je n'ai jamais vu une API si mal documentée, produisant difficilement des informations, et sortant un JSON si pourri.
Example : J'essaye d'avoir les prochains passage de métro à la station Parmentier. Je regarde dans la doc et on peut pas donner le nom de la station, mais uniquement son ID. Ok, c'est un peu chiant, et y'a pas de service permettant de trouver l'ID qui va bien, mais allons chercher dans le GTFS. Une ID possible est "IDFM:7705".
Sauf que non. Il faut l'ID STIF et pas IDFM. C'est quoi la différence� Aucune idée. Surtout que l'exemple dans la doc générale utilise l'ID IDFM.
On va chercher dans les jeux de donnĂ©es. Attention, parce que y'a trois jeux de donnĂ©es "ArrĂȘts" tous avec des identifiants diffĂ©rents.
Bon je trouve l'ID dans un des tableaux, "22019". Je suppose donc qu'il faut mettre "STIF:22019". Non. Il faut mettre "STIF:StopPoint:Q:22019:". Pourquoi� Personne ne sait. Au passage notez les deux points à la fin, sinon ça fonctionne pas.
Ok, cette fois, on a un JSON sur le truc de test du site. Je regarde vite fait, et⊠pas de temps d'attentes. Je regarde de plus prĂȘt, et je vois des DepartureStatus": "onTime"
. En fait, ils mettent les dates et heures complĂštes d'arrivĂ©e et de dĂ©part de la station. En UTC, sinon c'est pas drĂŽle. Mais bon, ça, ça va. Mais ce qui est encore plus drĂŽle, c'est que les horaires d'arrivĂ©e et de dĂ©part sont les mĂȘme, Ă la milliseconde prĂšs.
Notons aussi des trucs rigolo, comme
"StopPointName": [
{
"value": "Parmentier"
}
]
au lieu d'un simple "StopPointName": "Parmentier"
(et y'en a plein des comme ça dans le JSON). Et surtout, que la ligne de métro en question n'est pas cité par son nom dans le json, il n'y a que son ID "STIF:Line::C01373:"
, trĂšs pratique pour identifier simplement les choses. Surtout que, Ă©videmment, dans le tableau qu'il faut aller voir pour trouver les IDs STIF, ni la ligne, ni le sens de la marche ne sont indiquĂ©s. Pour les arrĂȘts avec plusieurs lignes, il faut donc faire au pif, prendre l'ID de la ligne et aller vĂ©rifier dans un autre tableau pour ĂȘtre sĂ»r qu'on regarde le bon JSON.
Sans compter, Ă©videmment qu'on peut pas faire une requĂȘte pour avoir les deux sens de marche en mĂȘme temps, ce serait trop simple.
Bref. Je prie vraiment pour que @pgrimaud mette à jour son API, parce que c'est la seule décente à disposition.
Si y'a les devs de l'API de IDFM qui passent par ici, je vous en veux pas. Je sais que vous avez dû suivre les ordres venant de 40 personnes différentes disant toutes quelque chose de différent. J'en veux à votre hiérarchie. Et pas qu'un peu.
Alors, j'ai lu le tutorial de PRIM et j'ai tentĂ© un appel dans Postman pour dĂ©jĂ m'assurer de l'url et des headers. Malheureusement je n'arrive pas Ă obtenir autre chose qu'une 404 đ Je ne sais pas notamment si, dans les headers, je dois passer apikey : [MY-API-KEY] ou authorization : [MY-API-KEY] comme sur la doc Home Assistant.
Du coup, moi aussi, j'espĂšre que @pgrimaud pourra faire l'update pour nous simplifier la vie ! đ
Essaye en utilisant https://prim.iledefrance-mobilites.fr/fr/donnees-dynamiques/idfm-ivtr-requete_unitaire?type=k&apiId=idfm-ivtr-requete_unitaire avec l'"Assistant requĂȘtage", c'est beaucoup plus simple
Et il semble indiquer qu'il faut utiliser apiKey (en tout cas, c'est ce qu'il fait en regardant dans l'onglet réseau des devtools).
Merci, je viens de tester pour mon Bus 120 en cliquant Try out puis en copiant STIF:StopPoint:Q:9541: dans le champ MonitoringRef puis Execute, ça renvoie bien
"ExpectedDepartureTime": "2022-10-09T22:10:54.000Z",
(UTC)
J'ai pu récupérer le code 9541 depuis l'url obtenue en remplissant les champs 1 par 1 sur cette page.
ParallĂšlement j'ai trouvĂ© cette intĂ©gration https://github.com/lesensei/idfm-card J'ai presque rĂ©ussi Ă l'installer (via HACS ok) mais pas la carte finale telle que montrĂ©e en screenshot en haut de page. Le mieux que j'ai obtenu est l'intĂ©gration elle-mĂȘme avec 5 sensors mais la carte est introuvable đ€· (malgrĂ© installation manuelle du fichier de ressources + restart de HA)
type: entities
entities:
- sensor.idfm_bry_sur_marne_rer_bry_sur_marne_nogent_sur_marne_rer_0
- sensor.idfm_bry_sur_marne_rer_bry_sur_marne_nogent_sur_marne_rer_1
- sensor.idfm_bry_sur_marne_rer_bry_sur_marne_nogent_sur_marne_rer_2
- sensor.idfm_bry_sur_marne_rer_bry_sur_marne_nogent_sur_marne_rer_3
title: 120 / RATP - Bry-sur-Marne RER - Bry-sur-Marne -> NOGENT-SUR-MARNE RER
J'ai un peu joué avec l'api ratp au mois de septembre, et le plus "drÎle" c'est que le format des réponses n'est pas stable...
Ăa ne m'Ă©tonne pas du tout de la part de la RATP/STIF/IDFM de nous pourrir la vie comme ça. En 2005, j'avais fait un widget OS X pour afficher les temps de passage. Ă l'Ă©poque, pas d'API dispo pour rĂ©cupĂ©rer les infos, je parsais les pages web Ă la main, en utilisant les balises HTML des couleurs. Et, je le sais d'une source interne, l'Ă©quipe changeait les codes couleur ou rajoutait des balises similaires pour casser mon widget.
Je vais essayer de voir comment corriger tout ça, la semaine prochaine. đ
En vrai, je pense qu'utiliser l'API utilisée par IDFM Mobilité sur ses pages (https://me-deplacer.iledefrance-mobilites.fr/fiches-horaires/metro/line%3AIDFM%3AC01373/horaires?date=2022-10-12T14%3A27&stopId=stop_area%3AIDFM%3A71801) serait mille fois plus pratique.
Genre, un curl https://api-iv.iledefrance-mobilites.fr/lines/v2/line:IDFM:C01373/stops/stop_area:IDFM:71801/realTime
pour la station Parmentier renvoie un JSON simple, utilisable, avec toutes les infos nĂ©cessaires. Y'a mĂȘme pas besoin de clĂ© API, c'est direâŠ
En vrai, je pense qu'utiliser l'API utilisée par IDFM Mobilité sur ses pages (https://me-deplacer.iledefrance-mobilites.fr/fiches-horaires/metro/line%3AIDFM%3AC01373/horaires?date=2022-10-12T14%3A27&stopId=stop_area%3AIDFM%3A71801) serait mille fois plus pratique. Genre, un
curl https://api-iv.iledefrance-mobilites.fr/lines/v2/line:IDFM:C01373/stops/stop_area:IDFM:71801/realTime
pour la station Parmentier renvoie un JSON simple, utilisable, avec toutes les infos nĂ©cessaires. Y'a mĂȘme pas besoin de clĂ© API, c'est direâŠ
Ah oui, Ă©norme !
Je viens de renseigner les infos pour ma ligne de bus sur
https://me-deplacer.iledefrance-mobilites.fr/fiches-horaires/bus/line%3AIDFM%3AC01149/horaires?date=2022-10-14T21%3A41&direction=-1&line=line%3AIDFM%3AC01149%7C%7C120%7CBus%7C&point=stop_area%3AIDFM%3A73166%7CStopArea%7CBry-sur-Marne%7C94360%7CBry-sur-Marne%7C613912.491510892%7C2427377.848770513%7C94015&stopAreaId=stop_area%3AIDFM%3A73166&stopId=stop_point%3AIDFM%3A9541&transporter
puis j'ai choppé le call dans l'onglet Network des dev tools
https://api-iv.iledefrance-mobilites.fr/lines/v2/line:IDFM:C01149/stops/stop_area:IDFM:73166/realTime
Plus qu'Ă parser le json pour extraire les 2 time
qui m'intĂ©ressent đ
Hello, comment tu rĂ©cupĂšres l"ID de ton arrĂȘt ? y'a un lien pour faire le mapping? merci
Hello, comment tu rĂ©cupĂšres l"ID de ton arrĂȘt ? y'a un lien pour faire le mapping? merci
Hello, j'ai suivi ce qu'a indiquĂ© JĂ©rĂŽme juste au-dessus, et ça a Ă©tĂ© OK pour moi. Merci Ă lui d'ailleurs. Tu peux donc te servir du portail IDF mobilitĂ©s > Me dĂ©placer > Horaires, cliquer sur Bus, remplir les infos (tu es obligĂ© de renseigner un arrĂȘt, mais tu pourras changer aprĂšs) et cliquer sur Rechercher. A partir de lĂ , tu cliques sur la direction qui t'intĂ©resse sur la ligne de Bus qui a Ă©tĂ© trouvĂ©e, puis tu utilises la section "Consulter les horaires Ă un arrĂȘt" pour avoir les horaires en temps rĂ©el, Ă chaque fois que tu sĂ©lectionnes un arrĂȘt et que tu cliques sur Rechercher, un coup de dev tools pour voir les requĂȘtes et c'est l'URL qui finit par realtime qui contient les prochains passages. De ce que je comprends, l'arrĂȘt sĂ©lectionnĂ© se retrouve dans l'URL (stop_area:XXXX). Si tu veux les IDs de tous les arrĂȘts, faut itĂ©rer... ou alors j'imagine qu'ils ont un dataset accessible pour chaque ligne avec les IDs des arrĂȘts.
Sinon, y'a la liste des arrĂȘts avec leurs diffĂ©rents ID dans https://prim.iledefrance-mobilites.fr/fr/donnees-statiques/emplacement-des-gares-idf-data-generalisee
(onglet tableau, rechercher la station, et utiliser le id_ref_lda
. La colonne idrligc
contient l'identifiant de la ligne de transport)
Ca c'est pour le réseau ferré. Pour les bus, faut soit suivre la méthode d'Anthony juste au dessus, soit télécharger les données (que j'arrive pas à retrouver). La derniÚre fois que j'avais creusé, y'avait plusieurs fichiers dans un zip, qui contenait toutes les infos. Le nom du truc était du genre BTRF, mais j'arrive pas à retrouver (et j'ai pas trop le temps juste là ).
Bref, comme toujours, c'est la merde.
EDIT : J'ai retrouvé, il s'agissait de GTFS. Vous pouvez trouver le fichier là  : https://data.iledefrance-mobilites.fr/explore/dataset/offre-horaires-tc-gtfs-idfm/table/
Et aprĂšs, faut explorer, et vous pourrez, Ă©ventuellement, trouver votre bonheur.
J'utilise avec succÚs les sensors de l'intégration idfm-card
que j'ai mentionnée plus haut mais j'aurais bien aimé réussir à extraire aussi ces horaires directement depuis l'url de ile de france mobilités
Ma question sur la communautĂ© HA n'attire pas les foules đż https://community.home-assistant.io/t/syntax-for-value-template-in-rest-sensor-from-json-returned-by-api/476140
Quelque chose a changé il y a qq jours (semaine du 12 déc ?) sur le retour du call API que j'utilise pour récupérer les prochains stops (voir ci-dessus msg en octobre).
https://api-iv.iledefrance-mobilites.fr/lines/v2/line:IDFM:C01149/stops/stop_area:IDFM:73166/realTime
renvoie errorMessage : "NO_REALTIME_SCHEDULES_FOUND"
ce qui rend l'intĂ©gration idfm inutilisable đż
Depuis ce matin (au moins), tous les appels renvoient des 500 Internal Server Error.
Exemples :
https://api-ratp.pierre-grimaud.fr/v4/destinations/metros/4
https://api-ratp.pierre-grimaud.fr/v4/lines
https://api-ratp.pierre-grimaud.fr/v4/schedules/buses/120/bry-sur-marne/R
Quelque chose a changĂ© ou est temporairement down ? đ
Le dashboard montre :