root@domoticz:/home/pi/domoticz/scripts/lua# lua script_time_wazeN2.lua
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 54 100 54 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
lua: script_time_wazeN2.lua:53: bad argument #1 to 'pairs' (table expected, got nil)
stack traceback:
[C]: in function 'pairs'
script_time_wazeN2.lua:53: in main chunk
[C]: ?
Une idée ? (sachant que le script d'origine me met aussi une erreur du meme style mais différente)
Un grand merci d'avance
Multinet
Je viens d'essayer avec plusieurs coordonnées québécoises et j'obtiens le même résultat que toi
Comme si Waze n'aimait pas la Belle Province...
Essaye la solution Google Maps, ça fonctionne peut-être mieux... http://www.domoticz.com/forum/viewtopic ... 23&t=11450
root@domoticz:/home/pi/domoticz/scripts/lua# lua script_time_wazeN2.OLD
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 35715 0 35715 0 0 54984 0 --:--:-- --:--:-- --:--:-- 55286
16:32 par Avenue François Mitterrand Mérignac; A630 - Rocade Extérieure
mon script (mes coord sont masquées volontairement)
root@domoticz:/home/pi/domoticz/scripts/lua# cat script_time_wazeN2.OLD
--------------------------------
-- 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")()
--variables à modifier----------------
--idx du capteur
idx='256'
--coordonnées de départ
departy="x"
departx="x"
--coordonnées d'arrivée
arrivey="x"
arrivex="x"
--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 "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}
print(itineraires)
----end
return commandArray
et mon dispositif text de domoticz
Capture d’écran 2016-06-07 à 19.47.21.jpg (49.46 Kio) Consulté 10069 fois