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