Aller au contenu

Durée De Trajet Entre Chez Vous Et Votre Travail Ou Autre


Steven

Messages recommandés

Edit : ce VD fait double emploi avec celui de Krikroff : Waze Calculator

 

 

Je n'ai malheureusement pas le temps de faire un joli tuto, mais voici le gros du sujet :
 
Connaitre le temps estimé de trajet entre votre domicile et votre travail. L'idée étant d'être averti en cas perturbation.
Ce code s'appuie sur les services Google Maps.
 
3006973005.png
 
Voici donc le VD et l'icone en pièces jointes
 
Ensuite il vous faut obtenir une clé API chez google ... voici le lien : https://developers.google.com/maps/documentation/geocoding/get-api-key
 
Une fois la clé obtenue, il ne vous reste plus qu'à  créer un scène LUA et y coller et adapter le code suivant.
 

-- Votre clé API Google
local key = "AIxxYYYzz-8sdI9BY2hEbrEO34IiNaQfELETtls"
-- Votre adresse à  la maison
local origins = "18+rue+des+bois+Annecy+France"  
-- Votre adresse professionnel
local destinations = "7+rue+de+la+fontaine+Geneva+Switzerland"

-- Numéro du module virtuel précédemment crée/importé.
local hc2_module_virtuel = 475  

-- ------------------------------------------------------------------------
--   NE PAS TOUCHER
-- ------------------------------------------------------------------------
local duree = ""
local version = "V1.00"


-- ------------------------------------------------------------------------
-- Affichage dans la console
-- ------------------------------------------------------------------------
function log(message, force)
  	force = force or false
	if (debug or force) then
		print("["..version.."] ".. __convertToString(message))
   	end
end

-- ------------------------------------------------------------------------
-- Interrogation de l'API
-- ------------------------------------------------------------------------
function getResponseData(url, body, func)
  local httpClient = net.HTTPClient();
  httpClient:request(url.."?"..body, {
      success = function(resp)
          func(json.decode(resp.data)) 
      end,
      error = function(err)
        print('error = ' .. err)
      end,
      options = {
        method = 'GET'
      }
  });  
end

-- ------------------------------------------------------------------------
-- Mesures de l'unité interne
-- ------------------------------------------------------------------------
-- ------------------------------------------------------------------------
-- Mesures de l'unité interne
-- ------------------------------------------------------------------------
function getDuree(origine, destination, message, label)
	getResponseData("https://maps.googleapis.com/maps/api/distancematrix/json", "origins="..origine.."&destinations="..destination.."&language=fr-FR&key="..key, 
		function(data)
			log("----------========== Module intérieur ==========----------")
			duree = data.rows[1].elements[1].duration.value
			log(message .. duree, true)
      		fibaro:call(hc2_module_virtuel, "setProperty", label,  math.floor(duree/60))
		end
	)
end
   
getDuree(origins, destinations, "Durée travail = ", "ui.Label1.value")
getDuree(destinations, origins, "Durée maison = ", "ui.Label2.value")
log("Last request : "  .. os.date("%x - %X"), true)

.
 
Perso, j'utilise GEA pour executé cette scène toutes les 5 mn.
.
 
A vous de jouer et d'adapter tout cela à  votre convenance.  ;) 

Durée_Trajets_(mn).vfib

post-339-0-98755500-1464614233_thumb.png

  • Upvote 6
Lien vers le commentaire
Partager sur d’autres sites

Pas mal Steve. Bon, je n'utilise pas, car jamais de bouchon pour moi :)

Par contre je cherchais justement, il n'y avait pas déjàun VD de ce style il y a qques temps mais sur une autre API ?

Lien vers le commentaire
Partager sur d’autres sites

Super Steven, merci, à  paname avec les greves des transports ca va etre l'enfer lol

 

Petite suggestion supp : ajouter push pour informer si le temps augmente lol

 

@nico : oui c'etait avec waze je crois

Lien vers le commentaire
Partager sur d’autres sites

en effe,t c'était Waze par Krikroff.

 

Ceci dit, Steven, il me semble que tu as laissé tes données perso dans ton code ?

 

J'ai également une erreur à  la ligne 56

 [DEBUG] 16:12:35: [V1.00] Last request : 05/30/16 - 16:12:35
[DEBUG] 16:12:35: [1;31m2016-05-30 16:12:35.232321 [ fatal] LUA error: /opt/fibaro/scenes/24.lua:56: attempt to index field '?' (a nil value)
function getDuree(origine, destination, message, label)
	getResponseData("https://maps.googleapis.com/maps/api/distancematrix/json", "origins="..origine.."&destinations="..destination.."&language=fr-FR&key="..key, 
		function(data)
			log("----------========== Module intérieur ==========----------")
			duree = data.rows[1].elements[1].duration.value
			log(message .. duree, true)
      		fibaro:call(hc2_module_virtuel, "setProperty", label,  math.floor(duree/60))
		end
	)
end
Lien vers le commentaire
Partager sur d’autres sites

Lol, non, c'est des fausses données :-)

Etrange ton erreur car j'ai copié le code du forum dans ma scène afin d'être sà»re.

Vérifie la clé et les adresses stp ... éventuellement, tu peux faire directement l'url dans un navigateur pour être sà»re.


Pour plus d'info .. c'est ICI : https://developers.google.com/maps/documentation/distance-matrix/intro#RequestParameters

Par exemple pour préciser le mode : Train, il suffit d'ajouter "&mode=transit" après la clé.
 

getResponseData("https://maps.googleapis.com/maps/api/distancematrix/json", "origins="..origine.."&destinations="..destination.."&language=fr-FR&key="..key .. "&mode=transit" 
Lien vers le commentaire
Partager sur d’autres sites

Perso, pour la voiture, je préfère Waze ... bien que Waze appartienne à  Google et que les données sont croisées. On devrait avoir des résultats similaires  :60:

 

Mais Waze est plus réactif.

 

J'ai d'ailleurs supprimé mon VD en faveur de celui de Krikroff.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Merci pour le VD.

avec le VD waze de Krikroff j'avais pas trouvé comment 'éviter les péages', car du coup pour mon trajet ils prenaient toujours celui la .. sauf que c'est pas rentable tous les jours ;- ) tunnel A86 pour les experts :-)

10E par jour ...

 

si ce VD pour le faire ça peut être interessant ?

Lien vers le commentaire
Partager sur d’autres sites

Il le peux, il suffit d'ajouter "&avoid=highways" àla fin de l'url

getResponseData("https://maps.googleapis.com/maps/api/distancematrix/json", "origins="..origine.."&destinations="..destination.."&language=fr-FR&key="..key .. "&avoid=highways" 
Lien vers le commentaire
Partager sur d’autres sites

merci steven,

le avoid highways, c'est toute autoroute je suppose, je vais mettre juste un avoid tolls comme j'ai vu sur le site google;

est ce qu'il y a un moyen de tester la réponse ? (voir le chemin pris depuis gmap ?)

tu peux aussi nous mettre ta ligne GEA ? ca éviteras les futurs questions :-)

 

grand merci

Lien vers le commentaire
Partager sur d’autres sites

@Sakkhho,

Tu sembles avoir réussi àfaire fonctionner ce VD.

Je n'y arrive pas :angry: : je bloque au niveau de la clé Google : Quelle type de clé faut-il demander, serveur, ???

Saurais-tu m'aider SVP ?

Lien vers le commentaire
Partager sur d’autres sites

@Sakkhho,
J'ai fait une 2ème version plus proche de celle de Krikroff mais toujours via les API Google .. cela afin de voir le résumé du trajet selon ta demande
 
mini_532260TrajetV2.png
 
Ci-joint le nouveau module virtuel ainsi que la nouvelle scène qui se configure ainsi : 
 

local trajets = {
    {
    	depart = "37+rue+du+bois+Annecy+France",
    	arrivee = "7+rue+des+Fontaines+Geneva+Switzerland",
    	options = "&avoid=highways",
    	module_virtuel = 475
    }
} 

La clé n'est plus la même car avant on utilisait l'API "Distance" et maintenant il nous faut celui-ci : https://developers.google.com/maps/documentation/directions/
 
Cette scène ne se lance pas automatiquement, j'utilise GEA pour la lancer toutes les 5mn .. à  toi de voir comment tu veux faire.

 

@jojo
Voir le lien ci-dessus : https://developers.google.com/maps/documentation/directions/
mini_241510ApiGoogle.png

TrajetV2.vfib

TrajetV2.lua

  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

merci Steven, je test des mon retour du Canada.

je vais aussi utiliser GEA pour ce faire. tu peux me rappeler comment on lance un scene depuis GEA, j'ai jamais eut besoin jusqu' a present

 

@jojo, j'avais la meme erreur au depart, mais c'etait à  cause de l'adresse generique - j'ai mis un truc tres simple pour tester  : genre PARIS; LYON - sans adresse, juste la ville

comme c'etait ok alors j'ai mis mes adresses.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...