Je me suis donc penché de plus près sur ce que proposait la SNCF et j’ai trouvé une api https://data.sncf.com/api que nous allons utiliser pour récupérer nos horaires de train. (ouf je ne vais plus être en retard au taf 🙂 )
J’ai développé ce script en PHP pour un Raspberry mais bien sur, on peut le modifier pour le faire fonctionner directement sur la box Eedomus.
La mise en oeuvre des horaires de train dans eedomus
Dans un premier temps, il faut obtenir une clé d’accès sur le site de la SNCF. https://data.sncf.com/api/fr/register
Vous allez rapidement recevoir un mail avec la clé d’accès nécessaire pour la suite.
Téléchargement du script depuis github
git clone https://github.com/domoblog/eedomus_train.gitTélécharger depuis Github
Création d’un capteur pour récupérer les informations
Création d’un état dans la box Eedomus.
Récupérer le code API pour la suite
Modification du script
Changer les valeurs suivantes avec vos propres données.
// Identifiants de l'API Eedomus $api_user = "XXXXXX"; $api_secret= "YYYYYYYYYYY"; $IPeedomus = "api.eedomus.com"; //IP eedomus $IPLocal = "192.168.0.XX/api"; //IP locale de votre box Eedomus $periph_id = 'ZZZZZZZ'; //Code du capteur créer précédement // Identifiants de l'API SNCF https://data.sncf.com/api/fr/documentation $api_sncf_user = 'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'; //Clé envoyer par mail (étape précédente) $api_sncf_mdp = '';
Récupération des coordonnées des villes
Voici la partie la moins simple du script car il faut exécuter une requête et lire le code JSON renvoyé.
Ensuite il faudra changer dans le scripts les deux valeurs trouvées.
Cliquer sur le lien suivant en indiquant bien sur la ville désirée. Dans mon exemple, je prendrais LYON.
https://api.sncf.com/v1/coverage/sncf/places?q=LYON
Authentifier vous avec le code API.
On obtient un superbe fichier JSON, pas vraiment lisible pour tout le monde.
Faire une recherche sur le mot ID et vous devriez retrouver le code associé à votre gare.
Il commence par admin:
Faire le même travail pour la ville d’arrivée et renseignez ces deux codes dans le script.
// Initialiation des variables $VilleDepart = 'admin:139203extern'; $VilleArrivee = 'admin:117905extern';
Utilisation du script
Il n’y a qu’un paramètre à renseigner dans la requête, c’est le sens du trajet entre les deux villes.
trajet=a –> Trajet entre la ville de départ et la ville d’arrivée (Trajet allé).
trajet=r –> Trajet entre la ville d’arrivée et la ville de départ (Trajet retour)
Depuis votre navigateur , (remplacer XX par l’adresse IP de votre Raspberry)
http://192.168.0.XX/eedomus/scripts/gare2.php?trajet=a
ou
http://192.168.0.XX/eedomus/scripts/gare2.php?trajet=r
Depuis l’Eedomus:
Créer un Actionner HTTP
Ensuite il ne reste plus qu’à planifier l’exécution de ces requêtes.
Résultat
Trafic normal
Trafic avec un retard de 15 mn
Pour aller plus loin
Moi, je préfère laisser la planification au Raspberry.
Rien de bien compliqué. Comme pour la version navigateur, il existe deux lignes de commande,
une pour l’aller
/usr/bin/php /var/www/eedomus/scripts/gare.php a
et une pour le retour
/usr/bin/php /var/www/eedomus/scripts/gare.php r
Se connecter en SSH au rapsberry.
Exécuter la commande
sudo crontab -e
Ajouter les lignes suivantes pour une programmation toutes les 10 minutes de 7h à 9h et de 16h à 18h.
*/10 7,8 * * * /usr/bin/php /var/www/eedomus/scripts/gare.php a */10 16,17 * * * /usr/bin/php /var/www/eedomus/scripts/gare.php r
Bonus
Voici deux icônes pour faire joli.
bonjour, merci pour ce partage!!
En revanche on a pas accès au script en telechargement
c’est corrigé, script dispo 🙂
Bonjour, J’y suis presque mais que mettre dans les champs “Type” et “Paramètres” de l’onglet valeur de l’actionneur HTTP ?
Je ne sais pas si ça vient de là mais j’ai une erreur du type “Une erreur est survenue lors de la mise à jour [{ “success”: “0”, “body”: { “error_code”: “6”, “error_msg”: “Unknown peripheral value [06h28, 06h44, 06h58, 07h14].” } }]” en toute fin d’exécution du script
Salut, moi j’ai autre chose: (et merci pour le script!!!)
Une erreur est survenue lors de la mise à jour [{ “success”: “0”, “body”: { “error_code”: “23”, “error_msg”: “HTTP protocol not allowed on your account.” } }]
C’est bon j’ai trouvé, il faut remplacer le http par https
$url = “https://”.$IPLocal.”/set?action=periph.value”;
Aurel, j’ai oublié un point essentiel : te remercier pour ton script et te féliciter pour ton blog en général.
Pour info, le https ne résoud pas mon erreur mais je ne désespère pas
Merci, mais ce script n’est pas de moi, il est de eedomus box. Il a codé et redigé ce tuto pour vous, difficile de repondre a vos question du fait que ce n’est pas mon script, mais je ne doute pas qu’il va passer par ici pour vous donner une solution.
A+
Bonjour,
Le principe de la domotique c’est de vous simplifier la vie, pas de la compliquer. Il existe déjà des applis très bien faites pour consulter les horaires de train. Ma femme prend le train tous les jours à la même heure pour aller bosser, quand elle prend son petit déjeuner une voix sympathique lui annonce si son train est à l’heure, la température extérieure (pour savoir comment se vêtir), les prévisions météo et si il va pleuvoir dans la demi-heure qui suit (pour savoir si elle doit prendre son parapluie). Il ne faut pas grand chose pour rendre une femme heureuse…. 😉
A bientôt,