Re: Durée de trajet avec Waze
Publié : 19 juil. 2017, 13:20
Merci pour ton retour. très utile 
Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
Code : Tout sélectionner
local waze=assert(io.popen('curl "https://www.waze.com/r...".')
Code : Tout sélectionner
local waze=assert(io.popen('curl --referer https://www.waze.com "https://www.waze.com/r...."')
Code : Tout sélectionner
---------------------------------
-- Script de calcul de temps pour un trajet entre 2 coordonnées
-- Auteur : Aurelien Neutrino
-- Date : 22 mars 2016
-- Nécessite un capteur virtuel de type Text
-- source :
-- http://www.domo-blog.fr/info-trajet-waze-eedomus-version-raspberry/
---------------------------------
commandArray={}
--import des fontions pour lire le JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
--coordonnées à modifier----------------
--idx du capteur
idx = '52'
-- y = latitude et x = longitude
-- exemple pour paris :
-- departx="2.2XXXXXX"
-- departy="48.8XXXXXX"
--coordonnées de départ
departy="48.85XXXXX"
departx="2.29XXXXX"
--coordonnées d'arrivée
arrivey="48.XXXXX"
arrivex="2.XXXXX"
--Nombre d'itinéraires possibles
nbIti='1'
---récupère l'heure actuelle en minutes
time=os.time()
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))
maintenant=tonumber(hours*60+minutes)
---calcule du trajet entre 7h et 9h
--if(maintenant>=420 and maintenant<= 540 and maintenant%2==0)then
----------------------------------------------------------------
--Récupération du trajet et de sa durée en temps réel via WAZE--
----------------------------------------------------------------
local waze=assert(io.popen('curl --referer https://www.waze.com "https://www.waze.com/row-RoutingManager/routingRequest?from=x%3A'..departx..'+y%3A'..departy..'&to=x%3A'..arrivex..'+y%3A'..arrivey..'&returnJSON=true&returnGeometries=true&returnInstructions=true&timeout=60000&nPaths=1&clientVersion=4.0.0&options=AVOID_TRAILS%3At%2CALLOW_UTURNS"'))
local trajet = waze:read('*all')
waze:close()
local jsonTrajet = json:decode(trajet)
--formate la réponse pour un trajet
jsonTrajet1 = {}
jsonTrajet1['alternatives']={}
if(nbIti=='1')then
jsonTrajet1['alternatives'][1] = jsonTrajet
jsonTrajet = jsonTrajet1
end
itineraires = ""
for i, alternatives in pairs(jsonTrajet['alternatives']) do
if(i>1)then itineraires = itineraires .. " ou " end
--Noms des principales routes empruntées
routeName = alternatives['response']['routeName']
--Liste des routes empruntées
route = alternatives['response']['results']
--Temps de trajet en secondes
routeTotalTimeSec = 0
--calcul du temps de trajet
for response,results in pairs(route) do
routeTotalTimeSec = routeTotalTimeSec + results['crossTime']
end
--Temps de trajet en minutes
routeTotalTimeMin = routeTotalTimeSec/60-((routeTotalTimeSec%60)/60)
--mise en forme de la réponse
if (routeTotalTimeSec%60<10)then
routeTotalTime = routeTotalTimeMin ..':0'..routeTotalTimeSec%60
else
routeTotalTime = routeTotalTimeMin ..'mn'..routeTotalTimeSec%60
end
if(routeTotalTimeSec%60>=30)then
routeTotalTimeMin = routeTotalTimeMin +1
end
itineraires = itineraires .. routeTotalTime.." par "..routeName
end
print(itineraires)
commandArray[1]={['UpdateDevice'] =idx..'|0|' .. itineraires}
return commandArray