Intégration SNCF API

:high_speed_train: Intégration SNCF Trains (API officielle)

Bonjour à tous ! :waving_hand:

Je vous partage une intégration personnalisée Home Assistant permettant de suivre en temps réel les départs de trains SNCF entre deux gares, en utilisant l’API officielle SNCF. Pratique pour visualiser les prochains TER/TGV DIRECT directement depuis votre dashboard !

Vous pouvez la trouver ici : GitHub - Master13011/SNCF-API-HA: Intégration SNCF API pour Home Assistant

:white_check_mark: Fonctionnalités :

  • Affiche les prochains départs entre deux gares configurées
  • Filtrage selon une plage horaire personnalisable
  • Gestion des retards, types de train, destination finale, etc.
  • Mise à jour intelligente selon l’heure (plus fréquente aux heures de pointe)
  • Supporte plusieurs trajets simultanés

:gear: Paramètres modifiables dans l’UI :

  • Plage horaire (début / fin)
  • Fréquence de mise à jour (pendant / hors plage)
  • Nombre de départs à afficher

Pas besoin de tout reconfigurer : les options sont modifiables à tout moment via l’interface de Home Assistant ! :raising_hands:

:camera_with_flash: Aperçu :

Dashboard

N’hésitez pas à tester et à me faire vos retours ou suggestions ! :folded_hands:
Dispo pour répondre aux questions, corriger ou améliorer si besoin.

@Master13011

6 « J'aime »

Très intéressant, mais tu pourrais donner le code de ton dashboard, s’il te plaît ?

1 « J'aime »

C’est sur son github :sweat_smile:

1 « J'aime »

Je dois recevoir mes nouvelles lunettes la semaine prochaine…

2 « J'aime »

Alors mes lunettes sont arrivées, mais depuis la dernière mise à jour HA, j’ai une erreur :

TypeError: '>' not supported between instances of 'NoneType' and 'int'

Et je ne suis pas compétent en python pour corriger…

Je vais regarder ca, mais je ne suis pas encore passé sur HA 2025.08…

Tu peux me mettre le log entier ?

Merci

Alors ça a dû être corrigé avec la maj d’hier car je n’ai plus l’erreur.

Tu es sûr d’avoir mis les lunettes, hier :sweat_smile:

Voui, car sinon je n’aurais pas capturé le message d’erreur sur la carte.
Je viens d’être retraité mais quand même !

1 « J'aime »

Je te taquinais :wink: image

Ce n’est pas un problème de log (je viens d’activer le journal, mais à mon avis ce ne sera pas très enrichissant) mais un problème de code de la carte.
Les capteurs fonctionnent correctement, mais je la même message d’erreur depuis la maj 8.2.
Je pense que c’est ici : {% set st = "🚨 Retard: " ~ r ~ " min" if r > 0 else "✅ À l'heure" %}
Et que c’est lié à une différence entre python 2 et 3 (cf. python - Why isn't my variable set when I call the other function? - Stack Overflow ou https://www.reddit.com/r/learnpython/comments/1bm7xyc/what_cause_this_error_typeerror_not_supported/)
Mais tout cela à mon faible niveau, incapable d’apporter les corrections idoines

Merci pour l’intégration ! Super boulot ! j’avais voulu exploiter l’api sncf à l’époque mais c’était une vraie galère ! content que tu ais pu créer une intégration comme celle-ci !

Merci pour l’intégration que je suis en train d’ajouter à mes dashboards.
Cette intégration sort pile poil alors que j’ai du temps à investir sur HA et que mon inclusion par iframe des prochains départs/arrivées en gare ne fonctionnait plus à cause d’une protection récente X-frame-options.

En configurant l’intégration qui fonctionne sans problèmes, je découvre qu’elle ne peut pas servir à mon usage tel quel.
En effet l’information retournée correspond aux N premiers trains d’une ville A à B dans une tranche horaires. Je comprends parfaitement que l’usage correspond au besoin de connaître les trains au départs de petite tranches horaires statiques pour des trajets domicile/travail par exemple.

Dans mon cas, mon besoin est différent:

  • trains aux départs de la gare A (quelque soit la destination)
  • tranche horaire: à partit de maintenant ou les N prochains trains
  • idéalement, les trains à l’arrivée en gare A aussi

En fait ce que je recherche correspond aux tableaux d’affichage Départs/Arrivées que l’on trouve en gare.
Voici ce que j’incluais via iframe, lorsque c’était encore possible il y a encore quelques mois (exemple pour Lille:)

https://www.ter.sncf.com/hauts-de-france/se-deplacer/prochains-departs/lille-flandres-87286005

La configuration de l’intégration pourrait être:

  • Choix de la gare
  • Départs ou Arrivées
  • Filtres origine/destination:
    • gare destination (si départs choisis)
    • gare origine (si arrivées choisies)
    • pas de filtre
  • Filtres horaires:
    • statique: tranche horaires comme 8h-10h
    • dynamique: tous les trains à partir de maintenant

En y réfléchissant plus sérieusement, l’idéal serait plutôt un combo intégration + carte:

  • Intégration:

    • choix de la gare
    • filtre Départ/Arrivées/aucun
  • Carte:

    • filtre Départ/Arrivées/aucun
    • filtre origine/destination/aucun
    • filtre horaire statique: heure debut
    • filtre horaire dynamique: à partir de maintenant
    • filtre durée: D heures
    • filtre quantité: N trains

    J’ai pas compris grand chose à la documentation de l’API qui est trop générique.
    J’ai mis le filtrage Départ/Arrivées/aucun au niveau de l’intégration dans le cas où il faut obligatoirement faire 2 appels API pour avoir les 2.

Mon raisonnement se base sur le fait de minimiser le nombre d’appels à l’API et qu’il vaut donc mieux remonter le plus d’informations possibles par appel et donc filtrer à l’affichage par la carte.
Car en l’état, selon le besoin, on peut vite se retrouver avec beaucoup d’instances de l’intégration dans le but d’avoir les trains au départs et à l’arrivée de 2 gares par exemple alors qu’une seule instance par gare devrait couvrir tous les cas. La multiplication des instances pourrait rapidement poser des problèmes car je suppose que le nombre d’appel API est limité.

J’ai conscience que mon message est une sorte de cahier des charges/doléances et que cela demande du travail en perspective. Je ne remet pas en question le travail déjà effectué qui correspond parfaitement à un besoin aujourd’hui.
Par ailleurs, je peux lire du code python et donc comprendre et modifier une intégration. Par contre je n’ai strictement aucune connaissance quant au développement d’une carte custom lovelace.

Je viens de m’apercevoir que mon HA Core est encore en version 2025.06.3.

J’ai un souci avec mon installation (j’ai vu sur les forums que d’autres ont rencontré le même problème).

Bref… je vais régler ça d’abord et je regarderai ton souci une fois que ma version sera passée en 2025.08.02.

1 « J'aime »

Bonjour,

Je m’aide de l’IA pour écrire mon code.
Je sais lire du Python, mais je ne suis pas encore assez compétent pour développer seul.

Dans les mois à venir, je n’aurai pas suffisamment de temps pour modifier le code et intégrer toutes les demandes, même si elles me semblent extrêmement pertinentes.

Je vais essayer d’avancer petit à petit. Ton aide est la bienvenue :slightly_smiling_face:

Corrigé, je rmodifie le template dans mon github

Hello, merci pour cette intégration. Je suis tombé dessus hier soir, et ça a l’air vraiment top.

J’ai une petite suggestion: sur le github, pour l’exemple du dashboard, la ligne

type: markdown

ne semble plus présente dans le fichier “exemple_dashboard”. J’ai mis un peu de temps à le faire fonctionner à cause de ce manque… :wink:

Ensuite, je n’arrive pas à savoir si les annulations sont gérées par l’intégration et si oui, comment ça remonte (et vu comment la doc de l’API est illisible, j’ai pas réussi à voir quels paramètres pourraient faire remonter l’info d’une annulation).

Mon but est de me notifier quand un problème survient. J’ai testé pour un retard (ça arrive souvent, donc facile à tester) et ça fonctionne très bien, mais en cas d’annulation, ça va ressortir comment au niveau des sensors ?

Parce qu’être notifié en cas de retard, c’est déjà énorme, mais être notifié aussi en cas d’annulation, ça serait bien mieux… Et surtout, si ça ne notifie absolument pas en cas d’annulation, on risque de ne s’en rendre compte qu’une fois en gare…

En tous cas, bravo pour l’intégration et le dashboard… Et merci d’avance pour les réponses qui pourront m’être apportées.

Bonne continuation

Bonjour,

Merci pour ton retour.
J’ai corrigé l’exemple.

Concernant les trains annulés, ils devraient également apparaître, mais je n’ai pas encore eu l’occasion de le vérifier dans un cas concret.

J’ai amélioré les sensors rest et le template markdown dans le thread original pour gérer:

  • départs et arrivées
  • code couleur de la sncf (bleu=départs et vert=arrivées)
  • sous titre automatique du nom de la gare et sens départs/arrivées
  • filtre optionnel sur le nom de la gare
  • limite optionnelle du nombre de train
  • affichage optionnelle du numéro des trains
  • affichage optionnel de l’heure de mise à jour

Voir: Horaires SNCF via api.sncf - #24 par zentoo

Tu devrais pouvoir t’en aspirer pour améliorer l’intégration.