Code : Tout sélectionner
commandArray['UpdateDevice']='172|0|'..routeTotalTimeMin
Code : Tout sélectionner
idx='172'
commandArray['UpdateDevice']=idx..'|0|'..routeTotalTimeMin
Code : Tout sélectionner
commandArray['UpdateDevice']='172|0|'..routeTotalTimeMin
Code : Tout sélectionner
idx='172'
commandArray['UpdateDevice']=idx..'|0|'..routeTotalTimeMin

Code : Tout sélectionner
&returnJSON=true&timeout=6000&nPaths=1&options=AVOID_TRAILS%3At%2CALLOW_UTURNSCode : 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 = '97'
-- y = latitude et x = longitude
-- exemple pour paris :
-- departx="2.2903622"
-- departy="48.8582546"
--coordonnées de départ
departx="-1"
departy="46"
--coordonnées d'arrivée
arrivex="-2"
arrivey="47"
--Nombre d'itinéraires possibles
nbIti='3'
---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 "https://www.waze.com/row-RoutingManager/routingRequest?from=x%3A'
..departx..'+y%3A'..departy..'&to=x%3A'..arrivex..'+y%3A'
..arrivey..'&returnJSON=true&timeout=6000&nPaths='..nbIti..'&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 ..':'..routeTotalTimeSec%60
end
if(routeTotalTimeSec%60>=30)then
routeTotalTimeMin = routeTotalTimeMin +1
end
itineraires = itineraires .. routeTotalTime.." par "..routeName
end
commandArray[1]={['UpdateDevice'] =idx..'|0|' .. itineraires}
end
return commandArray