Intégration Train Traveler (SNCF)

Hello,

J’ai pris en compte vos remarques, et je publie donc une nouvelle version contenant quelques nouveautés

Mise à jour v0.1.0-alpha.1

Cette version comprend les mises à jour suivantes :

  • Ajout de l’intégration via HACS
    • Vous pouvez maintenant installer et sélectionner la version via HACS
  • Ajout d’une entité « journeys » qui contient l’ensemble des prochains trajets demandés dans une liste
  • Ajout d’une fonction expérimentale permettant d’arrêter de requêter l’API entre les horaires de fermeture et d’ouverture
  • Modification des noms par défaut des entités pour une meilleure lisibilité
  • Quelques améliorations du code

Renommage des entités :

Les entités sont maintenant nommées selon le trajet de l’appareil qu’elles suivent pour une meilleure lisibilité selon le schéma suivant :

sensor.train_traveler_<départ>_<arrivée>_next_journey_<numero_prochain_train>

où :

  • <départ> sont les 3 premières lettres de la gare de départ
  • <arrivée> sont les 3 premières lettres de la gare d’arrivée
  • <numéro_prochain_train> représente l’indice du train dans la liste

Exemple pour un trajet « Paris - Marseille » qui suit les 2 prochains trains, les entités seront nommées de la manière suivante :

sensor.train_traveler_par_mar_next_journey_1
sensor.train_traveler_par_mar_next_journey_2

Entité sensor.train_traveler_<départ>_<arrivée>_journeys :

Grâce à cette version, il est maintenant possible de ne travailler qu’avec une seule entité pour récupérer les informations des prochains trains.
Merci @roumano pour la suggestion

Exemple :

Capture d'écran 2024-05-31 164307

Avec le code suivant (utilisation de custom:flex-table-card) :

type: custom:flex-table-card
title: Départ - Arrivée
strict: true
sort_by:
  - Départ+
columns:
  - data: journeys
    modify: new Date(x.departure_time).toLocaleString()
    name: Départ
  - data: journeys
    modify: new Date(x.arrival_time).toLocaleString()
    name: Arrivée
  - data: journeys
    modify: |
      if (parseInt(x.delay) >= 3600 ) 
        '<div style="color:#E70B0B;">' + Math.trunc(x.delay /3600) + 'h' + Math.trunc((x.delay %3600)/60) + 'm</div>'
      else if (parseInt(x.delay) >= 60 ) 
        '<div style="color:#E70B0B;">' + Math.trunc(x.delay/60) + 'm'+ '</div>'
      else if (parseInt(x.delay) >= 1 ) 
        '<div style="color:#E70B0B;">' + x.delay + 's</div>' 
      else '<div style="color:#139523;">Aucun retard</div>'
    name: Retard
entities:
  include: sensor.train_traveler_mar_bor_journeys

Cela nécessite l’installation d’une card custom, c’est pourquoi j’ai laissé le détail par entité également pour les personnes qui souhaitent plutôt travailler en mode « vanilla ».

Expérimentation : arrêt des appels API entre les horaires d’ouverture et de fermeture

Vous pouvez activer cette option à la configuration d’un appareil (trajet), elle est notée « expérimentale » car il est possible que quelques effets de bords surviennent. Désactivez-là si vous rencontrez des soucis et un petit retour pour m’en faire part serait le bienvenu :slight_smile:

A+ et n’hésitez pas à me faire vos retours

2 « J'aime »