[Store] Trajet en temps réel avec Google Distance Matrix

Discussion et échanges de scripts pour la box eedomus

[Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 16 Déc 2017 19:16

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.
Dernière édition par Patskins le 17 Déc 2017 09:58, édité 1 fois.
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar merguez07 » 16 Déc 2017 23:14

Super génial

Merci
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 18 Déc 2017 08:31

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é 15940 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:
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar merguez07 » 18 Déc 2017 11:31

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)
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 18 Déc 2017 12:53

Bonjour,

Merci, on va donc attendre ;)
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar merguez07 » 18 Déc 2017 14:00

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
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar technoseb27 » 18 Déc 2017 14:16

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
Une box Eedomus, 9 x FGS-221, 6 FGR-221, 1 x FGRM-222, 6 x Prises Neo Coolcam, 4 Détecteurs de mouvements Fibaro et Neo Coolcam, 8 Sondes Banggood, et le reste top secret ;-)
Voici mon blog :
https://domotiquetechnoseb27.com/
technoseb27
 
Messages : 398
Inscription : 01 Sep 2013

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 18 Déc 2017 16:37

@ 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 :(
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar merguez07 » 18 Déc 2017 16:57

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é 15898 fois
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 18 Déc 2017 17:25

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é 15893 fois

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

On avance !! :)
Dernière édition par Patskins le 18 Déc 2017 17:43, édité 1 fois.
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 18 Déc 2017 17:33

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
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 24 Déc 2017 04:53

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.
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar rover820i » 26 Déc 2017 11:30

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 ?
rover820i
 
Messages : 3363
Inscription : 23 Juil 2016

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar Patskins » 26 Déc 2017 12:11

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)
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar marcal » 19 Fév 2018 11:05

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!
marcal
 
Messages : 202
Inscription : 07 Déc 2016
Localisation : Toulouse

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar merguez07 » 19 Fév 2018 11:48

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.
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar marcal » 19 Fév 2018 12:16

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:
marcal
 
Messages : 202
Inscription : 07 Déc 2016
Localisation : Toulouse

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar merguez07 » 19 Fév 2018 13:16

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
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar marcal » 19 Fév 2018 17:08

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:
marcal
 
Messages : 202
Inscription : 07 Déc 2016
Localisation : Toulouse

Re: [Store] Trajet en temps réel avec Google Distance Matrix

Messagepar OUARZA » 11 Mars 2018 11:23

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é 15044 fois

Merci
OUARZA
 
Messages : 167
Inscription : 04 Sep 2016
Localisation : Clermont-Ferrand

Suivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : fab_web et 10 invité(s)