Forum eedomus
http://forum.eedomus.fr/

[Store] Trajet en temps réel avec Google Distance Matrix
http://forum.eedomus.fr/viewtopic.php?f=50&t=6306
Page 1 sur 2  Suivant »
Auteur:  Patskins [ 16 Déc 2017 19:16 ]
Sujet du message:  [Store] Trajet en temps réel avec Google Distance Matrix

Bonjour ,

Ce plugin permet d'afficher dans 3 capteurs ;
- La valeur de la durée prévue du trajet en minutes (pour des courbes éventuelles)
- Le temps prévu du trajet en heures et minutes
- La distance en km

Nécessite 3 variables :
- Une clé API Google particulière : API Google Distance Matrix (différente de Google Maps)
- Un point de départ sous forme de texte (sans les accents) ou de coordonnées
- Un point d'arrivée sous forme de texte (sans les accents) ou de coordonnées

Remarques :
- le lien pour obtenir la clé API est disponible lors de la création du périphérique
- les textes pour le départ et l'arrivée sont, à mon avis, plus simple à saisir. Ils ne doivent pas comporter de caractères accentués (ex : saisir "8 place de l eglise, machin sur mer" pour "8 Place de l'église, Machin/Mer"

Avantages de la méthode :
- 2500 requêtes par jour (soit env. 8 requêtes toutes les 5 minutes)
- En cas de dépassement, les requêtes ne sont (en principe) bloquées que pour la journée.
Auteur:  merguez07 [ 16 Déc 2017 23:14 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Super génial

Merci
Auteur:  Patskins [ 18 Déc 2017 08:31 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Bonjour,

Non, ce n'est plus génial depuis samedi soir, Google a changé les conditions d’utilisation et plus moyen d'avoir le trajet en temps réel.

Matrix.png
Matrix.png (86.36 Kio) Consulté 17596 fois

Conclusions :
- le plugin "Temps de trajet avec Waze" ne fonctionne plus (au moins chez moi)
- le plugin "Temps de trajet avec Google Maps" ne renvoi que le temps estimé
- le plugin que j'avais développé ne fonctionne plus (il ne fait maintenant rien de plus que le plugin "Temps de trajet avec Google Maps") .
Je crois qu'il va falloir abandonner tout espoir d'avoir la durée du trajet en temps réel :cry:
Auteur:  merguez07 [ 18 Déc 2017 11:31 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Patskins a écrit:Je crois qu'il va falloir abandonner tout espoir d'avoir la durée du trajet en temps réel


Allons, allons, faut pas se décourager si vite.
J'ai mis mon neveu sur le coup (il est développeur), on te fait une proposition de script qui marche (sur la base de ton script)
Auteur:  Patskins [ 18 Déc 2017 12:53 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Bonjour,

Merci, on va donc attendre ;)
Auteur:  merguez07 [ 18 Déc 2017 14:00 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

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
Auteur:  technoseb27 [ 18 Déc 2017 14:16 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

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
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...

Envoyé de mon Xiaomi Mi Mix en utilisant mes doigts
Auteur:  Patskins [ 18 Déc 2017 16:37 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

@ merguez07

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 :(
Auteur:  merguez07 [ 18 Déc 2017 16:57 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

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 :(



tu as du mal regarder :roll: :roll: . En tout cas chez moi ça marche

Capture.JPG
Capture.JPG (54.72 Kio) Consulté 17554 fois
Auteur:  Patskins [ 18 Déc 2017 17:25 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Ah ben voui, c'est reparti chez moi avec les 2 règles (celle de base et celle que tu as optimisé), comprends pas .....

Matrix2.png
Matrix2.png (22.57 Kio) Consulté 17549 fois

Vais mettre en ligne la mise à jour avec tes modifs.

On avance !! :)
Auteur:  Patskins [ 18 Déc 2017 17:33 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Ayé, nouvelle version en ligne. Merci Merguez07 ! Par contre, vais voir avec la team, je remarque que depuis ce matin, impossible de vérifier les mises à jour pour ce script ..

Edit : Réponse de la team : il y a effectivement un petit soucis (qui sera résolu) ; il faut donc, pour l'instant, créer un nouveau périphérique pour que la mise à jour se fasse
Auteur:  Patskins [ 24 Déc 2017 04:53 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Bonjour,

Mise à jour en version 1.21 :
- Petite modification du script afin de ne pas prendre en compte les valeurs nulles.
- Ajout d'une documentation (que j'espère assez complète) en Français.
Auteur:  rover820i [ 26 Déc 2017 11:30 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Petite question : quand on a plusieurs trajets disponibles (pour ma part, 3 trajets possibles pour rejoindre mon boulot le matin, qui changent systématiquement en fonction des bouchons), comment on sait quel est le trajet pris en compte par l'appli ?
Auteur:  Patskins [ 26 Déc 2017 12:11 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Bonjour,

Cette API ne donne aucune indication sur l'itinéraire (je l'ai indiqué dans la documentation du script).

"Le service Google Maps Distance Matrix API fournit les distances et les durées des trajets pour une matrice d'origines et de destinations en fonction de l'itinéraire recommandé entre les points de départ et d'arrivée." (https://developers.google.com/maps/documentation/distance-matrix/start?hl=fr)
Auteur:  marcal [ 19 Fév 2018 11:05 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Bonjour,

Pour économiser les requêtes, est-il possible de définir des heures d'activation du script?
Par exemple : trajet maison-boulot mesuré que le matin entre 0600 et 1000, trajet boulot-maison mesuré que de 1600 à 2000? (il y a quand même peu de chances que j'aille bosser à 2h du mat ou que je rentre du boulot à 9h du mat...)
--> ca permettrait d'avoir plus de trajets sur la même APIkey...

Ou cela est-il possible par une règle?

Merci!
Auteur:  merguez07 [ 19 Fév 2018 11:48 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

marcal a écrit:Pour économiser les requêtes, est-il possible de définir des heures d'activation du script?


La question est : Pourquoi veux tu économiser les requêtes :shock: ? on a droit à 2500 éléments par jour, sachant qu'une requête rapatrie 3 éléments cela fait 833 requêtes pas jour soit 34 par heure soit 2 par 5mn.

Après rien ne t’empêche de modifier la fréquence des requêtes; voir de mettre 0 pour ne l'activer que sur la base d'une règle.
Auteur:  marcal [ 19 Fév 2018 12:16 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

merguez07 a écrit:Pourquoi veux tu économiser les requêtes :shock: ?

marcal a écrit:--> ca permettrait d'avoir plus de trajets sur la même APIkey...

En fait le but serait d'avoir 4 trajets sur la même APIkey, 2 allers le matin et 2 retours le soir (vu que les lieux de taf de Mme et moi-même ne sont pas les mêmes...).
Sinon je peux toujours ouvrir un autre compte google pour avoir une deuxième APIkey :roll:
Auteur:  merguez07 [ 19 Fév 2018 13:16 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

marcal a écrit: marcal a écrit:
--> ca permettrait d'avoir plus de trajets sur la même APIkey.


damned, la réponse était dans la question. Je ne suis pas en forme. :oops:

pour 4 trajets tu passes la fréquence à 10 mn et ça devrait marcher
Auteur:  marcal [ 19 Fév 2018 17:08 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

hehe oui je me doute bien... :D
J'aimais bien la fréquence à 5 minutes moi... :P
Du coup je me fais un nouveau compte google! :roll:
Auteur:  OUARZA [ 11 Mars 2018 11:23 ]
Sujet du message:  Re: [Store] Trajet en temps réel avec Google Distance Matrix

Hello,
J'ai ajouté le module et mis les coordonnées GPS. Je ne peux pas mettre l'adresse puisque Maps localise mal l'adresse, pas du bon côté de la rue et couper le sens de circulation est interdit.
J'ai testé le script, mais il me retourne "ERREUR: Valeur lue vide".
Format GPS: XX.XXXXXX,XX.XXXXXX

Pas de problème en mettant des adresses.

Une idée ?

Autre chose, le module de distance va chercher une durée et non une distance. Information que l'on peut modifier facilement mais qui est natif lors de l'ajout du module. Même chose pour le module "Heures".
De plus, le type de données pour les modules "distance" et "heure" doivent être "texte" puisque la valeur retournée est 11,5 Km (par exemple).
google maps.JPG
google maps.JPG (52 Kio) Consulté 16700 fois

Merci
Page 1 sur 2 Le fuseau horaire est UTC+1 heure