Code : Tout sélectionner
https://{clé_d’authentification}@api.sncf.com/v1/coverage/sncf/journeys?from=admin:114172extern&to=admin:132348extern&datetime=20161114T23:08&datetime_represents=departure&min_nb_journeys=4132348 étant la gare de Poitiers
Code : Tout sélectionner
https://{clé_d’authentification}@api.sncf.com/v1/coverage/sncf/journeys?from=admin:114172extern&to=admin:132348extern&datetime=20161114T23:08&datetime_represents=departure&min_nb_journeys=4Code : Tout sélectionner
crontab -eCode : Tout sélectionner
*/10 7,8 * * * /usr/bin/php /home/pi/domoticz/scripts/php/gare.php a
*/10 16,17 * * * /usr/bin/php /home/pi/domoticz/scripts/php/gare.php r
Code : Tout sélectionner
<?php
/*************************************************************************************/
/* ### Report MAJ information train de la Gare SNCF ### */
/* Adaptation pour domoticz papoo */
/* Développement originel par eedomusbox@gmail.com */
/* */
/*************************************************************************************/
/*-------------------------------------------- */
/*------------ Variables à éditer ------------ */
/*-------------------------------------------- */
$IPdomoticz = "192.168.1.24:8080"; //<username:password@>domoticz-ip<:port>
$periph_id = '720';
// Identifiants de l'API SNCF https://data.sncf.com/api/fr/documentation
$NbJourneys ="2"; //Nb de trains minimum par jour à afficher
$api_sncf_user = 'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'';
$api_sncf_mdp = ''; // ne pas modifier
// Fin Identifiants de l'API SNCF
// Initialiation des variables
// Pour trouver l'id de la ville rechercher "id" dans la requete suivante https://api.sncf.com/v1/coverage/sncf/places?q=LIMOGES
$VilleDepart = 'admin:114172extern'; //LIMOGES
$VilleArrivee = 'admin:147559extern'; //ORLEANS
//$VilleArrivee = 'admin:132348extern'; //POITIERS
/*-------------------------------------------- */
/*--------- Fin Variables à éditer ----------- */
/*-------------------------------------------- */
$result = '';
// Récupération des paramètres de la requête : 2 methodes, une Web et une Raspberry
if (isset($_GET['trajet'])) {
$SensTrajet = $_GET['trajet'];
$rChariot = "<BR>"; //Retour à la ligne
} else {
$SensTrajet = $_SERVER['argv'][1];
$rChariot = "\n"; //Retour à la ligne
}
//******************************** Contruction du trajet *****************************/
switch ($SensTrajet) {
case 'a':
$gareDepart = $VilleDepart;
$gareArrive = $VilleArrivee;
break;
case 'r':
$gareDepart = $VilleArrivee;
$gareArrive = $VilleDepart;
break;
default:
$gareDepart = $VilleDepart;
$gareArrive = $VilleArrivee;
break;
}
//******************************** Date de heures d'exection *****************************/
date_default_timezone_set("Europe/Paris");
$date = date("Ymd\TH:i");
echo $rChariot."Date et heure d'execution: ".$date.$rChariot;
//******************************** Récupération des données *****************************/
$query = 'https://'.$api_sncf_user.'@api.sncf.com/v1/coverage/sncf/journeys?from='.$gareDepart.'&to='.$gareArrive.'&datetime='.$date.'&datetime_represents=departure&min_nb_journeys='.$NbJourneys;
echo $rChariot.'Requete: '.$query.$rChariot.$rChariot;
$response=file_get_contents($query);
$json = json_decode($response, true);
// Boucle sur les trajets
echo $rChariot."************TRAINS*************";
foreach($json['journeys'] as $trains) // Lecture des trajets
{
$dateDepart = $trains['departure_date_time']; echo $rChariot.'Heure de depart: '.$dateDepart; // Date de départ
$HeuredeDepart = substr($dateDepart,9,4); // Heure de départ
$dateArrive = $trains['arrival_date_time']; echo $rChariot."Heure d'arrive: ".$dateArrive; // Date d'arrivée
$heuredarrive = substr($dateArrive,9,4); // Heure d'arrivée
$numtrain = $trains['sections'][1]['display_informations']['headsign']; //Numero du train
echo $rChariot.'Numero de train: '.$numtrain;
if ( $trains['status'] != "" ) // Cas du train en retard
{ $retard = '';
$text = '';
echo $rChariot.'Statut du train: '.$trains['status'] ;
if ($trains['status'] == 'NO_SERVICE'){
echo $rChariot."************TRAINS*************";
continue; //Affichage du statut}
}
$numdisrup = $trains['sections'][1]['display_informations']['links'][0]['id']; //Affichage de l'ID de retard
echo $rChariot.'ID de retard: '.$numdisrup;
//Récupération des retards
$retards = $json['disruptions'];
//Recherche des retards
foreach($retards as $retard)
{ echo $rChariot.'ID de retard dans les retards: '.$retard['disruption_id'];
if ( $retard['disruption_id']== $numdisrup )
{ // Boucle sur l'ensemble des impacts du retard
foreach($retard['impacted_objects'][0]['impacted_stops'] as $impactStop)
{ if ( substr($impactStop['base_departure_time'],0,4) == $HeuredeDepart ) // Recherche du lieu que l'on veut
{
$updatetime = $impactStop['amended_departure_time']; // Nouvel Horaire
echo $rChariot.'Nouvelle heure de depart: '; echo substr($updatetime,0,2);echo substr($updatetime,2,2);
// Calcul du retard
$retard = ( substr($updatetime,0,2) * 60 + substr($updatetime,2,2) ) -
( substr($HeuredeDepart,0,2) * 60 + substr($HeuredeDepart,2,2) ); //En minutes
echo $rChariot.'Retard en mn: '.$retard; // Affichage du retard
$text = '-'.$retard.'mn, ';
break;
}
}
}
}
}
else
{ $text = ', ';} // Train est à l'heure
$result = $result.substr($HeuredeDepart,0,2).'h'.substr($HeuredeDepart,2,2).$text;
echo $rChariot."************TRAINS*************";
}
$result = substr($result,0,-2);; // Supprime les deux derniers caractères
echo $rChariot.$rChariot."Resultat: ".$result.$rChariot; // Affichage des résultats
$json_result = maj_periph($periph_id,$result); //Mise à jour Eedomus
// Fonction
function supprimer_accents($str, $encoding='ISO-8859-1')
{
// transformer les caractères accentués en entités HTML
$str = htmlentities($str, ENT_NOQUOTES, $encoding);
// remplacer les entités HTML pour avoir juste le premier caractères non accentués
// Exemple : "&ecute;" => "e", "&Ecute;" => "E", "Ã " => "a" ...
$str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#', '\1', $str);
// Remplacer les ligatures tel que : Œ, Æ ...
// Exemple "Å“" => "oe"
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
// Supprimer tout le reste
$str = preg_replace('#&[^;]+;#', '', $str);
// Supprimer les espaces
$str = preg_replace('/\s/', '-', $str);
return $str;
}
function maj_periph( $periphID, $val )
{
global $IPdomoticz;
global $rChariot;
// Remplacement des blancs par le code hexa
$val = str_replace(' ', '%20', $val);
// Remplacement des points virgules par le blanc
$val = str_replace(';','%20', $val);
// Remplacement des accents
$val = supprimer_accents($val);
$val = utf8_encode($val);
//Contruction de l'url Local
$url = "http://".$IPdomoticz."/json.htm?type=command";
$url .= "¶m=udevice";
$url .= "&idx=$periphID";
$url .= "&vnalue=0";
$url .= "&svalue=$val";
echo $rChariot."URL locale Mise à jour Domoticz: ".$url.$rChariot;
// Mis à jour du périphérique
$result = @file_get_contents($url);
$pos = strpos($result, '"OK"');
if ($pos === false)
{
echo $rChariot."Une erreur est survenue lors de la mise à jour [".$result."]".$rChariot;//}
}
return $result;
}
/*
/usr/bin/php /home/pi/domoticz/scripts/php/sncf.php a //pour l'aller
/usr/bin/php /home/pi/domoticz/scripts/php/sncf.php r //pour le retour
*/
?>Code : Tout sélectionner
root@Minas:/volume1/@appstore/domoticz/var/scripts/sncf# php gare.php a
Date et heure d'execution: 20161118T22:57
Requete: https://a733ef84-3e4èè7-4f35-b2e6-95ce08315ee9@api.sncf.com/v1/coverage/sncf/journeys?from=admin:2078971extern&to=admin:74090extern&datetime=20161118T22:57&datetime_represents=departure&min_nb_journeys=2
************TRAINS*************
Heure de depart: 20161119T060300
Heure d'arrive: 20161119T070000
Numero de train: 891432
************TRAINS*************
Heure de depart: 20161119T063200
Heure d'arrive: 20161119T071800
Numero de train: 17754
************TRAINS*************
Resultat: 06h03, 06h32
URL locale Mise ▒ jour Domoticz: http://<admin:bidule@>192.168.X.25<:8084>/json.htm?type=command¶m=udevice&idx=69&vnalue=0&svalue=06h03,%2006h32
Une erreur est survenue lors de la mise ▒ jour []
Que donne cette ligne dans ton navigateur?minos a écrit :
Code : Tout sélectionner
http://<admin:bidule@>192.168.X.25<:8084>/json.htm?type=command¶m=udevice&idx=69&vnalue=0&svalue=06h03,%2006h32
je suis sous syno , mon domoticz tourne sur le 8084deennoo a écrit :Le <:8084> me semble bizzare
Code : Tout sélectionner
root@Minas:/volume1/@appstore/domoticz/var/scripts/sncf# php gare.php aCode : Tout sélectionner
root:Minas@/volume1/@appstore/domoticz/var/scripts/sncf# php gare.php ac'est tout Bon Papoo !!!!@Papoo
Je confirme ça marche aussi avec exclusion du réseaupatrice a écrit :Bonjour
Pour le mot de passe obligatoire , tu peux dans "parametres" puis "reseau locaux" dire que tu ne veux pas de mdp pour les reseaux en local