Patskins a écrit:Je crois qu'il va falloir abandonner tout espoir d'avoir la durée du trajet en temps réel
<?php
//*************************************************************************************
//**
//** Calcul de la durée du trajet en Time réel avec Google Distance Matrix
//**
//** 2017-12-18 (Patskins) : Version 1.2
//**
//** Nouveautés : corrections mineures et optimisation par Merguez07
//**
//**************************************************************************************/
$api_key = getArg('API', false, NULL); // VAR1 : Clé API Google
$start = getArg('start'); // VAR2 : Point de départ
$end = getArg('end'); // VAR3 : Point d'arrivée
$module_id = getArg('eedomus_controller_module_id') ;
$mem_time_min_id = "mem_time_min_id".$module_id;
$mem_time_hour_id = "mem_time_hour_id".$module_id;
$mem_distance_id = "mem_distance_id".$module_id;
if ($api_key) {
$url = "https://maps.googleapis.com/maps/api/distancematrix/xml?units=metric&origins={$start}&destinations={$end}&mode=driving&departure_time=now&language=fr-FR&key={$api_key}";
$Result = httpQuery($url);
$time_in_seconds = xpath($Result,"/DistanceMatrixResponse/row/element/duration_in_traffic/value");
$time_in_hours = xpath($Result,"/DistanceMatrixResponse/row/element/duration_in_traffic/text");
$distance = xpath($Result,"/DistanceMatrixResponse/row/element/distance/text");
$time_in_minutes = round($time_in_seconds / 60);
if(!$time_in_hours) {
$time_in_minutes = loadVariable($mem_time_min_id);
$time_in_hours = loadVariable($mem_time_hour_id);
$distance = loadVariable($mem_distance_id);
}
saveVariable($mem_time_min_id, $time_in_minutes);
saveVariable($mem_time_hour_id, $time_in_hours);
saveVariable($mem_distance_id, $distance);
}
sdk_header('text/xml');
echo '<root>';
echo '<minutes>' . loadVariable($mem_time_min_id) . '</minutes>';
echo '<heures>'. loadVariable($mem_time_hour_id). '</heures>';
echo '<distance>'. loadVariable($mem_distance_id). '</distance>';
echo '</root>';
?>
Et bah dis donc vous m'impressionner avec vos scripts en PHP. Si je savais faire autant y a longtemps que j'y serais penché pour le pilotage de mon ampli Harman Kardon ainsi que les lampes mi light...merguez07 a écrit:bon voilà,
en fait ton script est bon il y a que des modifs mineures à faire. j'en ai profité pour le modifier afin que la requête ne soit faite que par un capteur (pour les autres il suffit d'enlever le terme Key dans l'url de la requête (ex: http://localhost/script/?exec=Maps_matrix.php&start=[VAR2]]&end=[VAR3])
- Code : Tout sélectionner
<?php
//*************************************************************************************
//**
//** Calcul de la durée du trajet en Time réel avec Google Distance Matrix
//**
//** 2017-12-18 (Patskins) : Version 1.2
//**
//** Nouveautés : corrections mineures et optimisation par Merguez07
//**
//**************************************************************************************/
$api_key = getArg('API', false, NULL); // VAR1 : Clé API Google
$start = getArg('start'); // VAR2 : Point de départ
$end = getArg('end'); // VAR3 : Point d'arrivée
$module_id = getArg('eedomus_controller_module_id') ;
$mem_time_min_id = "mem_time_min_id".$module_id;
$mem_time_hour_id = "mem_time_hour_id".$module_id;
$mem_distance_id = "mem_distance_id".$module_id;
if ($api_key) {
$url = "https://maps.googleapis.com/maps/api/distancematrix/xml?units=metric&origins={$start}&destinations={$end}&mode=driving&departure_time=now&language=fr-FR&key={$api_key}";
$Result = httpQuery($url);
$time_in_seconds = xpath($Result,"/DistanceMatrixResponse/row/element/duration_in_traffic/value");
$time_in_hours = xpath($Result,"/DistanceMatrixResponse/row/element/duration_in_traffic/text");
$distance = xpath($Result,"/DistanceMatrixResponse/row/element/distance/text");
$time_in_minutes = round($time_in_seconds / 60);
if(!$time_in_hours) {
$time_in_minutes = loadVariable($mem_time_min_id);
$time_in_hours = loadVariable($mem_time_hour_id);
$distance = loadVariable($mem_distance_id);
}
saveVariable($mem_time_min_id, $time_in_minutes);
saveVariable($mem_time_hour_id, $time_in_hours);
saveVariable($mem_distance_id, $distance);
}
sdk_header('text/xml');
echo '<root>';
echo '<minutes>' . loadVariable($mem_time_min_id) . '</minutes>';
echo '<heures>'. loadVariable($mem_time_hour_id). '</heures>';
echo '<distance>'. loadVariable($mem_distance_id). '</distance>';
echo '</root>';
?>
Cordialement
Patskins a écrit:Bien l'optimisation du code, mais, malheureusement, ça ne résout pas le problème de la durée du trajet, on n'a toujours pas la durée en temps réel
marcal a écrit:Pour économiser les requêtes, est-il possible de définir des heures d'activation du script?
merguez07 a écrit:Pourquoi veux tu économiser les requêtes ?
marcal a écrit:--> ca permettrait d'avoir plus de trajets sur la même APIkey...
marcal a écrit: marcal a écrit:
--> ca permettrait d'avoir plus de trajets sur la même APIkey.
Retour vers Scripts & Périphériques du store
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 58 invité(s)