Steven Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 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. 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 6
jojo Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 merci, ça me sera bien utile avec les grèves des trains depuis mercredi chez nous ! Je le mets en place immédiatement !
Nico Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 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 ?
pepite Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 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
jojo Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 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
kioneoranga Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 Salut àtous voici le VD produit par krikroff http://www.domotique-fibaro.fr/index.php/topic/6362-hc2-waze-calculator/?hl=waze
Steven Posté(e) le 30 mai 2016 Auteur Signaler Posté(e) le 30 mai 2016 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#RequestParametersPar 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"
Steven Posté(e) le 30 mai 2016 Auteur Signaler Posté(e) le 30 mai 2016 Salut à tous voici le VD produit par krikroff http://www.domotique-fibaro.fr/index.php/topic/6362-hc2-waze-calculator/?hl=waze Je connaissais pas, j'aurais économisé pas mal de temps 2
Nico Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 Je me disais bien que cela existait Maintenant si vous êtes joueur, mettez les 2 et donnez nous le plus juste des 2...
Steven Posté(e) le 30 mai 2016 Auteur Signaler Posté(e) le 30 mai 2016 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 Mais Waze est plus réactif. J'ai d'ailleurs supprimé mon VD en faveur de celui de Krikroff. 1
Nico Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 Justement, je me demandais s'ils avaient fusionné tout ça ou non ?
jojo Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 Waze, ce n'est pas que pour quelques grosses ville, alors que Google, c'est également pour mon bled ?
Steven Posté(e) le 30 mai 2016 Auteur Signaler Posté(e) le 30 mai 2016 Vu que tu mets les coordonnées lat/long, tu peux même aller au pôle nord.
Nico Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 Oui, mais bon je ne te dis pas la pertinence des données Traversé d'un groupe Caribou, phoque accidenté etc
jojo Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 De ce que je sais, Google me donne des bonnes prévisions en fonction de la densité réelle du traffic. Waze est aussi (im)précis?
Did Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 @Steven, Tu as laissé ton adresse dans les lignes de code du premier post? Mais peut-être as-tu mis une adresse bidon.
jojo Posté(e) le 30 mai 2016 Signaler Posté(e) le 30 mai 2016 non, cest sa vrai adresse : tous ceux qui suivent le topic sont invités au ski l'année prochaine
Sakkhho Posté(e) le 31 mai 2016 Signaler Posté(e) le 31 mai 2016 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 ?
Steven Posté(e) le 1 juin 2016 Auteur Signaler Posté(e) le 1 juin 2016 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"
Sakkhho Posté(e) le 5 juin 2016 Signaler Posté(e) le 5 juin 2016 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
jojo Posté(e) le 5 juin 2016 Signaler Posté(e) le 5 juin 2016 @Sakkhho, Tu sembles avoir réussi àfaire fonctionner ce VD. Je n'y arrive pas : je bloque au niveau de la clé Google : Quelle type de clé faut-il demander, serveur, ??? Saurais-tu m'aider SVP ?
Steven Posté(e) le 6 juin 2016 Auteur Signaler Posté(e) le 6 juin 2016 @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 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. @jojoVoir le lien ci-dessus : https://developers.google.com/maps/documentation/directions/ TrajetV2.vfib TrajetV2.lua 2
Sakkhho Posté(e) le 6 juin 2016 Signaler Posté(e) le 6 juin 2016 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.
Steven Posté(e) le 6 juin 2016 Auteur Signaler Posté(e) le 6 juin 2016 Voici voilà -- Timer toutes les 5 mn GEA.add( true , 5*60, "", { {"Scenario", 6}, {"Scenario", 294}, {"Repeat"} })
Messages recommandés