Gare Sncf / Aller-Retour + Estimation pour choper son train.

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
minicupi
Messages : 34
Inscription : 27 janv. 2017, 03:52

Gare Sncf / Aller-Retour + Estimation pour choper son train.

Message par minicupi »

Bonjour,
Tout d'abord, sachez que ce code est une modification d'un existant. ^^

Voici ce qu'il fait :
Vous indiquez votre ville de depart et d'arrivée le matin, puis celle du soir.
Vous indiquez Cb de temps vous mettez pour aller a la gare de chez vous(ou du taf)

Et il vous sortira Les 5 prochains Train et vous dira dans Cb de temps vous devez partir pour le chopper.

A quoi ca sert? : Pour ma part j'ai pour horreur de glander a la gare en attendant mon train le matin. Et le soir j'ai horreur de quitter le travail et de glander a la gare 10 minute alors que j'aurais pu etre au chaud et mieu calculer mon coup. Et bien maintenant le script va calculer pour moi, et pour vous ;)
Je suis pas codeur donc le code est tres sale blindé detruc inutile et peut etre facilement optimisé MAIS j'ai passé l'aprem dessus je l'ai testé de partout et il marche bien. Voila a quoi ca peut ressembler une fois configuré et mis en forme.

Cela prend en compte en fonction du temps que vous allez mettre
Exemple, si le premier train n'est pas attrapable car vous mettrez trop de temps pour aller a la gare, il le prend en compte et estimera en fonction du train suivant, jusqu'a ce qu'il y en ai un de faisable :) La par exemple sur mon image le premier train je ne pouvait pas l'avoir donc il a calcule par rapport au second

Image

Image


Et voici le code :

Code : Tout sélectionner

<?php
/*************************************************************************************/
/*         ### Report MAJ information train de la Gare SNCF ###                      */
/*                    Adaptation pour domoticz papoo                               */
/*              Développement originel par eedomusbox@gmail.com                      */
/*                    bidouillé par minicupi apres coup                                                               */
/*************************************************************************************/
/*-------------------------------------------- */
/*------------ Variables à éditer ------------ */
/*-------------------------------------------- */

$IPdomoticz = "192.168.1.84:8080"; //<username:password@>domoticz-ip<:port>
// Identifiants de l'API SNCF https://data.sncf.com/api/fr/documentation

$NbJourneys ="5"; //Nb de trains minimum par jour à afficher
$api_sncf_user = '4298c9d8-3291-43b1-96d7-a435499e8d8d';
$api_sncf_mdp  = '';

//valeure pour le depart le matin

$TpsMarcheMinute = '12';//Le temps que vous mettez pour arriver a la gare
$VilleDepart  = 'admin:fr:93053'; //Ville d'ou vous partez le matin recuperable sur https://api.sncf.com/v1/coverage/sncf/places?q=MAGENTA pour magenta ect...
$VilleArrivee = 'admin:fr:75110'; //Ville ou vous arrivez
$idxprochainstrain = '185';  // connaitre les Prochaines heures de train
$idxrushtrain1 = '186';  //temps restant pour le premier train exemple : 3min22
$idxrushtrain2 = '187'; //temps restant pour le train 2
$idxrushtrain3 = '188'; //temps restant pour le train 3
$idxrushtrain4 = '189'; //temps restant pour le train 4
$idxrushtrain5 = '190'; //temps restant pour le train 5
$idxtotal = '191'; // affiche les 5 valeur au dessus en 1 seule (exemple : 3min22,4min34,4min55,6min33,7min30)
$partirdans = '192'; //n'affiche que la valeur la plus proche vous permettant d'avoir votre train

//valeure pour le depart le soir
$TpsMarcheMinute2 = '14';//Le temps que vous mettez pour arriver a la gare
$VilleDepart2  = 'admin:fr:93066'; //Ville d'ou vous partez le matin 
$VilleArrivee2 = 'admin:fr:75110'; //Ville ou vous arrivez
$idxprochainstrain2 = '193';  // connaitre les Prochaines heures de train
$idxrushtrain12 = '194';  //temps restant pour le premier train exemple : 3min22
$idxrushtrain22 = '195'; //temps restant pour le train 2
$idxrushtrain32 = '196'; //temps restant pour le train 3
$idxrushtrain42 = '197'; //temps restant pour le train 4
$idxrushtrain52 = '198'; //temps restant pour le train 5
$idxtotal2 = '199'; // affiche les 5 valeur au dessus en 1 seule (exemple : 3min22,4min34,4min55,6min33,7min30)
$partirdans2 = '200'; //n'affiche que la valeur la plus proche vous permettant d'avoir votre train



/*-------------------------------------------- */
/*--------- Fin Variables à éditer ----------- */
/*-------------------------------------------- */
$rChariot = "\n"; 
$result = '';
$constante = ($TpsMarcheMinute * 60);
$constante2 = ($TpsMarcheMinute2 * 60);
// 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
}
  $horaire = fopen ('horaire.txt', 'w+');
	  fclose($horaire);
//******************************** 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;

$response=file_get_contents($query);
$json = json_decode($response, true);
// Boucle sur les trajet
echo $rChariot."************TRAINS ALLER*************";

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

	  $horaire = fopen ('horaire.txt', 'a+');
	  fputs($horaire, $dateDepart.' ');
	  fclose($horaire);
      
	  $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."************SUIVANT*************";
               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 ALLER*************";
   }
   
   $result = substr($result,0,-2);; // Supprime les deux derniers caractères
   echo $rChariot.$rChariot."Prochains Trains a : ".$result.$rChariot;  // Affichage des résultats

 // Modif Minicupi 

 //met les horaire de train dans un fichier txt pour stockage et reutilisation
	$file = fopen('horaire.txt','r');
	$contenu = fgets($file);
	fclose($file);
	
 //recupere les horaire de train dans le fichier horaire txt
	$horaire1 = substr($contenu,0,8).substr($contenu,9,6);
	$horaire2 = substr($contenu,16,8).substr($contenu,25,6);
    $horaire3 = substr($contenu,32,8).substr($contenu,41,6);
    $horaire4 = substr($contenu,48,8).substr($contenu,57,6);
    $horaire5 = substr($contenu,64,8).substr($contenu,73,6);
	
 //variable servant a l'affichage en console des horaires de train
   $heurelue1 = substr($contenu,9,2).'h'.substr($contenu,11,2);
   $heurelue2 = substr($contenu,25,2).'h'.substr($contenu,27,2);
   $heurelue3 = substr($contenu,41,2).'h'.substr($contenu,43,2);
   $heurelue4 = substr($contenu,57,2).'h'.substr($contenu,59,2);
   $heurelue5 = substr($contenu,73,2).'h'.substr($contenu,75,2);
   
 //convertie les valeur en date pour le calcul a venir
	$date1 = time();
	$date2 = strtotime($horaire1);
	$date3 = strtotime($horaire2);
	$date4 = strtotime($horaire3);
	$date5 = strtotime($horaire4);
	$date6 = strtotime($horaire5);

//variable le resultat du differentiel
	$train10 = differentiel($date1, $date2);
	$train20 = differentiel($date1, $date3);
	$train30 = differentiel($date1, $date4);
	$train40 = differentiel($date1, $date5);
	$train50 = differentiel($date1, $date6);
	
	$trainTotal = $train10.','.$train20.','.$train30.','.$train40.','.$train50;
	if 	($train10 > 0) 	{
		$trainTotal = $train10.','.$train20.','.$train30.','.$train40.','.$train50;
								} 
						elseif 	($train20 > 0) 	{
									$trainTotal = $train20.','.$train30.','.$train40.','.$train50;	
															}
															elseif 	($train30 > 0) 	{
																		$trainTotal = $train30.','.$train40.','.$train50;
																								} 	
																								elseif 	($train40 > 0) 	{
																											$trainTotal = $train40.','.$train50;
																																	} 
																																	else
																																	$trainTotal = $train50;
			
   $departdans = $train10.','.$train20.','.$train30.','.$train40.','.$train50;
	if 	($train10 > 0) 	{
		$departdans = $train10;
								} 
						elseif 	($train20 > 0) 	{
									$departdans = $train20;	
															}
															elseif 	($train30 > 0) 	{
																		$departdans = $train30;
																								} 	
																								elseif 	($train40 > 0) 	{
																											$departdans = $train40;
																																	} 
																																	else
																																	$departdans = $train50;
   
//upload les valeur sur domoticz   
	$json_result = maj_periph($idxprochainstrain,$result); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain1,$train10); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain2,$train20); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain3,$train30); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain4,$train40); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain5,$train50); //Mise à jour Domoticz
	$json_result = maj_periph($idxtotal,$trainTotal); //Mise à jour Domoticz
	$json_result = maj_periph($partirdans,$departdans); //Mise à jour Domoticz
   
 


//MATCH RETOUR--------------------------------------------------------------------------------------------------



// 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
}
  $horaire = fopen ('horaire2.txt', 'w+');
	  fclose($horaire);
	  
	  
//******************************** Date de heures d'exection *****************************/
date_default_timezone_set("Europe/Paris");
$date = date("Ymd\TH:i"); 


//********************************  Récupération des données *****************************/

	 


$gareDepart = $VilleDepart2;
$gareArrive = $VilleArrivee2;
$result = ' ';

//********************************  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;

$response=file_get_contents($query);
$json = json_decode($response, true);
// Boucle sur les trajets
echo $rChariot."************TRAINS RETOUR*************";

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

	  $horaire = fopen ('horaire2.txt', 'a+');
	  fputs($horaire, $dateDepart.' ');
	  fclose($horaire);
      
	  $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 RETOUR*************";
               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

// Modif Minicupi  retour

 //met les horaire de train dans un fichier txt pour stockage et reutilisation
	$file = fopen('horaire2.txt','r');
	$contenu = fgets($file);
	fclose($file);
 //recupere les horaire de train dans le fichier horaire txt
	$horaire1 = substr($contenu,0,8).substr($contenu,9,6);
	$horaire2 = substr($contenu,16,8).substr($contenu,25,6);
    $horaire3 = substr($contenu,32,8).substr($contenu,41,6);
    $horaire4 = substr($contenu,48,8).substr($contenu,57,6);
    $horaire5 = substr($contenu,64,8).substr($contenu,73,6);
 //variable servant a l'affichage en console des horaires de train
   $heurelue1 = substr($contenu,9,2).'h'.substr($contenu,11,2);
   $heurelue2 = substr($contenu,25,2).'h'.substr($contenu,27,2);
   $heurelue3 = substr($contenu,41,2).'h'.substr($contenu,43,2);
   $heurelue4 = substr($contenu,57,2).'h'.substr($contenu,59,2);
   $heurelue5 = substr($contenu,73,2).'h'.substr($contenu,75,2);


 //convertie les valeur en date pour le calcul a venir
	$date1 = time();
	$date2 = strtotime($horaire1);
	$date3 = strtotime($horaire2);
	$date4 = strtotime($horaire3);
	$date5 = strtotime($horaire4);
	$date6 = strtotime($horaire5);

//variable le resultat du differentiel
	$train10 = differentiel2($date1, $date2);
	print($train10);
	$train20 = differentiel2($date1, $date3);
	$train30 = differentiel2($date1, $date4);
	$train40 = differentiel2($date1, $date5);
	$train50 = differentiel2($date1, $date6);
	
	$trainTotal = $train10.','.$train20.','.$train30.','.$train40.','.$train50;
   
	if 	($train10 > 0) 	{
		$trainTotal = $train10.','.$train20.','.$train30.','.$train40.','.$train50;
								} 
						elseif 	($train20 > 0) 	{
									$trainTotal = $train20.','.$train30.','.$train40.','.$train50;	
															}
															elseif 	($train30 > 0) 	{
																		$trainTotal = $train30.','.$train40.','.$train50;
																								} 	
																								elseif 	($train40 > 0) 	{
																											$trainTotal = $train40.','.$train50;
																																	} 
																																	else
																																	$trainTotal = $train50;
			
   $departdans = $train10.','.$train20.','.$train30.','.$train40.','.$train50;
   
	if 	($train10 > 0) 	{
		$departdans = $train10;
								} 
						elseif 	($train20 > 0) 	{
									$departdans = $train20;	
															}
															elseif 	($train30 > 0) 	{
																		$departdans = $train30;
																								} 	
																								elseif 	($train40 > 0) 	{
																											$departdans = $train40;
																																	} 
																																	else
																																	$departdans = $train50;
   
//upload les valeur sur domoticz   
	$json_result = maj_periph($idxprochainstrain2,$result); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain12,$train10); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain22,$train20); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain32,$train30); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain42,$train40); //Mise à jour Domoticz
	$json_result = maj_periph($idxrushtrain52,$train50); //Mise à jour Domoticz
	$json_result = maj_periph($idxtotal2,$trainTotal); //Mise à jour Domoticz
	$json_result = maj_periph($partirdans2,$departdans); //Mise à jour Domoticz
   

// Fonctions-----------------------------------------------------------------------------------------------------


//vire les accents
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;
}


//Verifie si tu a le temps d'arriver a la gare en fonction du temps de marche


function differentiel2($date1, $date2)
						
{
	global $TpsMarcheMinute2;
	global $rChariot; 
	global $constante2;								
	
	$test1 =  abs($date1 - $date2);
	$check = ($test1 - $constante2);

												

	if 	($check < 0) {
			$renvoi = 0;
						} 
	else 					{
			$renvoi = dateDiff2($date1, $date2);
							}

	return $renvoi;
}


function differentiel($date1, $date2)
						
{
	global $TpsMarcheMinute;
	global $rChariot; 
	global $constante;								
	
	$test1 =  abs($date1 - $date2);
	$check = ($test1 - $constante);
												

	if 	($check < 0) {
			$renvoi = 0;
						} 
	else 					{
			$renvoi = dateDiff($date1, $date2);
							}

	return $renvoi;
}

//calcule la difference de temps entre la date actuelle et l'heure du train
function dateDiff($date1, $date2){
	global $constante;
    $test1 = abs($date1 - $date2); // abs pour avoir la valeur absolute, ainsi éviter d'avoir une différence négative
    $diff = ($test1 - $constante);
	$retour = array();
    $tmp = $diff;
	$retour['second'] = $tmp % 60;
    $seconde = $retour['second'];
	$tmp = floor( ($tmp - $retour['second']) /60 );
    $minute = $tmp;
	$retour['minute'] = $tmp % 60;
    $tmp = floor( ($tmp - $retour['minute'])/60 );
    $heure = $tmp;
	$retour['hour'] = $tmp % 24;
    $tmp = floor( ($tmp - $retour['hour'])  /24 );
    $heure = $tmp;
	$retour['day'] = $tmp;
	$retour = $minute.'%20min%20'.$seconde;

	return $retour;
}


function dateDiff2($date1, $date2){
	global $constante2;
    $test1 = abs($date1 - $date2); // abs pour avoir la valeur absolute, ainsi éviter d'avoir une différence négative
    $diff = ($test1 - $constante2);
	$retour = array();
    $tmp = $diff;
	$retour['second'] = $tmp % 60;
    $seconde = $retour['second'];
	$tmp = floor( ($tmp - $retour['second']) /60 );
    $minute = $tmp;
	$retour['minute'] = $tmp % 60;
    $tmp = floor( ($tmp - $retour['minute'])/60 );
    $heure = $tmp;
	$retour['hour'] = $tmp % 24;
    $tmp = floor( ($tmp - $retour['hour'])  /24 );
    $heure = $tmp;
	$retour['day'] = $tmp;
	$retour = $minute.'%20min%20'.$seconde;

	return $retour;
}


//met a jour le peripherique
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 .= "&param=udevice";
   $url .= "&idx=$periphID";
   $url .= "&vnalue=0";
   $url .= "&svalue=$val";
   
   echo 'Domoticz Mis a jour - Idx : '.$periphID.' - Valeur donnee :'.$val.$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;
} 
 
?>


Donc comment ca marche concretement, mettons que je suis chez moi dans cet exemple et je pars au travail.
Alors je sais que si je pars dans 3 minutes alors je choppe mon train direct.
Et si je suis au travail alors je sais que je dois partir dans un peu plus de 8 minute et je tomberais pile sur mon train.

N.B : j'ai créé beaucoup de données au cas ou je ne sais pas si ca marchera si vous les creez pas, a vous de voir.
ce sont tous des dummy Text.
N.B.2 : vous devrez demanderune clé api a la sncf, j'ai mis le lien dans le code, c'est automatique le code vous sera donné en moins de 10 seconde.
Ils refusent plus de 20 appels minute, pour ma part j'ai fait un crontab pour que ca se lance 1 fois par minute, histoire que ca mettte les données a jour sur Monitor.

Enjoy.

N.B.3 : Je vous souhaite que ca marche du premier coup parceque je n'ai absolument pas les competence pour faire du service client ;p
lamouette
Messages : 150
Inscription : 07 déc. 2016, 16:10

Re: Gare Sncf / Aller-Retour + Estimation pour choper son train.

Message par lamouette »

Merci pour ce partage :D
J'étais justement en train de plancher sur un truc plus ou moins équivalent pour les transiliens et RER et je vois que l'API de la SNCF gère tous les types de trains.
Répondre