Afficher horaires de bus

Bonjour,

Je souhaite m’inspirer de se TOPIC pour intégrer et afficher les horraires de bus. Je suis de Lyon et j’ai trouvé les API de horaires de bus ICI
Mais je ne sais pas quelle données il faut prendre ? Quel format ?
Merci !

Ma configuration


[center]## System Information

version core-2023.4.1
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.10
os_name Linux
os_version 5.15.84-v8
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4747
Installed Version 1.31.0
Stage running
Available Repositories 1255
Downloaded Repositories 40
Home Assistant Cloud
logged_in true
subscription_expiration 1 janvier 2018 à 01:00
relayer_connected false
relayer_region null
remote_enabled true
remote_connected false
alexa_enabled true
google_enabled false
remote_server null
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.5
update_channel stable
supervisor_version supervisor-2023.04.0
agent_version 1.4.1
docker_version 20.10.22
disk_total 116.5 GB
disk_used 10.3 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.6.1), SomfyProtect2MQTT (0.2.9), File editor (5.5.0), Mosquitto broker (6.2.0), Spotify Connect (0.12.3), Home Assistant Google Drive Backup (0.110.3), Duck DNS (1.15.0)
Dashboards
dashboards 1
resources 24
views 8
mode storage
Recorder
oldest_recorder_run 28 mars 2023 à 07:21
current_recorder_run 7 avril 2023 à 07:29
estimated_db_size 390.48 MiB
database_engine sqlite
database_version 3.38.5
Spotify
api_endpoint_reachable ok
[/center] ___

De leur site, je ne voix pas des données temps-reel, c’est correcte?
T’as l’option d’utiliser le fichier json (dans Telechargements) et sensor REST mais je ne voix pas les infos par stop/halte.
Avec gtfs (intégration HA de base), tu ouraait créer des sensor par stop, il faut chercher un peu comment la faire mais ça marche. Le seul truc (chez moi)…la qualité des données est de temps en temps hors norme (négative)

Réseau urbain TCL - Open (GTFS, NeTEx, pdf) datasets - SYTRAL Mobilités

General Transit Feed Specification (GTFS) - Home Assistant (home-assistant.io)

Ils ont aussi une site pour temps reel mais il faut se connecter avant…
data.grandlyon.com : Open data de la Métropole de Lyon
Probablement, avec le json tu pourrait c’reer des sensor REST par bus, stop et direction

Merci de ta réponse mais en gtfs se sont des infos dynamique ? ou juste une fiche horaire pré chargé ?

GTFS est static, je l’utilise parallel avec les données temps-reel cause…qualité, voir ici :frowning:
List: gtfs
Realtime: ???

image

Si t’es inscrit sur temps reel, je peux voir comment t’aider si nécessaire…sans données je ne fait rien et je ne m’inscrit pas dans Lyon :slight_smile:

Je viens de m’inscrire mais le site plante totalement…

Contrairement a mes môts avant, je me suis inscrit et demandé l’accès. Je ne sais pas si je suis accepté (loin de Lyon) et/ou quand

J’ai aussi pu faire une demande. c’est en attente !

J’ai l’accès (un peu curieux comment, mais bon)…
Mais, je ne peux pas faire grand chose car les stops sont ‹ codé › et je ne connait pas leurs ID

EDIT: j’aussi demandé accès vers leurs données gtfs, probablement, les stops sont détaillées dedans

{
  "fields": [
    "id", 
    "ligne", 
    "direction", 
    "delaipassage", 
    "type", 
    "heurepassage", 
    "idtarretdestination", 
    "coursetheorique", 
    "gid", 
    "last_update_fme"
  ], 
  "layer_name": "tcl_sytral.tclpassagearret", 
  "nb_results": 27980, 
  "table_href": "https://download.data.grandlyon.com/ws/rdata/tcl_sytral.tclpassagearret.json", 
  "values": [
    {
      "coursetheorique": "96A-052BM:1:1:19", 
      "delaipassage": "1 min", 
      "direction": "Quincieux Boulodrome", 
      "gid": 1, 
      "heurepassage": "2023-04-07 11:46:00", 
      "id": 1700, 
      "idtarretdestination": 46231, 
      "last_update_fme": "2023-04-07 11:43:52", 
      "ligne": "96A", 
      "type": "E"
    }, 
    {
      "coursetheorique": "96A-052BM:1:1:19", 
      "delaipassage": "3 min", 
      "direction": "Quincieux Boulodrome", 
      "gid": 2, 
      "heurepassage": "2023-04-07 11:48:00", 
      "id": 11452, 
      "idtarretdestination": 46231, 
      "last_update_fme": "2023-04-07 11:43:52", 
      "ligne": "96A", 
      "type": "E"
    }, 
    {
      "coursetheorique": "96A-052BM:1:1:19", 
      "delaipassage": "4 min",

Les ID sont en effet dans gtfs, j’ai téléchargé une ancienne version (zip) et dans stops.txt tu trouves les détails

Transitland • Transports en Commun Lyonnais (TCL) • GTFS feed details: f-u05-tcl~systral

Si t’es OK avec REST tu peux maintenant créer des sensor. Je peux t’aider un peu aussi mais il faut que tu me donne des détails:

  • no. bus (ligne)
  • stop (id ou nom)
  • direction (idtarretdestination ou nom)

Merci de ton aide ! Je n’ai pas tout compris au REST, mais je voulais faire remonté les infos sur le bus n°C18, stop Place Flammarion direction Hotel de ville.

de plus cette intégration GitHub - zacs/ha-gtfs-rt: Real-time transit information for Home Assistant ne permettrais pas d’avoir les infos en dynamique ?

Si t’as recherché les ‹ issues › t’as pu voir mes commentaires…donc: non utilisable

La structure Lyon preuve d’être différent que Zou-Maregionsud (Nice-CdA)…je vais voir dans le w/e

En dessous une première solution, aussi pour te donner uin peu plus d’infos comment ça marche

  1. sensor qui collecte le fichier temps-reel et (!) filtre sur C18A et ton stop 2384 et tri par heuredepassage (pour avoir la première bus au dernier). Ça va creer une fichier dans ton dossier www lyon_c18a_2384.
    Il faut que to met ton user/mdp, en attendant que t’as l’accès maintenant
    Tu va voir plusieurs départ (heurepassage), ce qui est différent chez moi, j’ai que une (le prochain bus)
    Le sensor déclenche tout les 5 min. (300)

  2. sensor qui utilise ce fichier, fait le contrôle si C18A et 2384 (oui, pas vraiment nécessaire mais si le fichier change avec plus de bus/stop…) et va creer le sensor bus_c18a_2384 avec le temps du prochain bus (je l’a formatté …mon choix)
    Le sensor déclenche tout les 3 min. (180)

En réalité je pourrais le faire plus compacte (un sensor au lieu de deux) mais je pense que c’est mieux si on commence avec ces trucs curl / jq / rest … c’est mieux lisible je trouve

sensor:
  - platform: command_line
    name: collect_lyon_realtime
    scan_interval: 300
    command: > 
        curl "https://download.data.grandlyon.com/ws/rdata/tcl_sytral.tclpassagearret/all.json?maxfeatures=-1" --user "USER:PASSWORD" | jq '[.values[] | select(.ligne=="C18A") | select(.id==2384) ]| sort_by(.heurepassage) | reverse'
        > www/lyon_c18A_2384.json  

  - platform: rest
    name: bus_c18a_2384
    scan_interval: 180
    resource: "http://192.168.1.20:8123/local/lyon_c18a_2384.json"
    value_template: >
         {% if value_json is defined %}
            {% set y = value_json | count %}
            {% set ns = namespace(val="--:--") %}
            {% for x in range(0,y) %} 
                {% if value_json[x]["ligne"] == "C18A" and value_json[x]["id"] == 2384 %}
                    {% set ns.val = as_local(as_datetime(value_json[x]["heurepassage"])).strftime("%H:%M") %}
                {% endif %}
            {% endfor %}
            {{ns.val}} 
          {% else %}
           --:--
          {% endif %}
1 « J'aime »

Merci de ta réponse super complète !!! Mais Jai plusieurs questions : Ou insérer les identifiants ? Et je n’ai aucun capteurs de créer, je n’ai peut être pas demander l’accès aux bonne ressources ?

Dans la premièe sensor…USER (email) et PWD…comme

--user "adresseemail:motdepasse"

D’accord, j’ai bien le fichier .json qui c’est créer avec des info à l’interieur. Le sensor Telechargement_Horaire_TCL est bien présent aussi.Comment le présenté dans une card ?