Page 11 sur 26
Re: Durée de trajet avec Waze
Publié : 25 août 2017, 14:11
par MAidEN91
Hello,
J'ai testé ta version et effectivement j'obtiens la même erreur dès que je passe les itinéraires a + que 1...
Code : Tout sélectionner
2017-08-25 14:06:07.154 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_waze_test.lua: /home/pi/domoticz/scripts/lua/script_time_waze_test.lua:56: bad argument #1 to 'pairs' (table expected, got nil)
Le soucis vient donc de la boucle qui gère les chemins alternatifs mais je ne vois pas trop ou :
Code : Tout sélectionner
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
Re: Durée de trajet avec Waze
Publié : 25 août 2017, 19:50
par Neutrino
Le problème doit effectivement venir de la boucle, mais je ne vois pas où.
A mon avis, waze ne trouve pas de chemin alternatif et le JSON renvoyé n'est du coup pas bien interprété.
L'un de vous peut-il m'envoyer leur version avec leur vraies coordonnées en MP histoire que je débugge ?
Re: Durée de trajet avec Waze
Publié : 26 août 2017, 11:42
par sennheiser
Neutrino a écrit :Le problème doit effectivement venir de la boucle, mais je ne vois pas où.
A mon avis, waze ne trouve pas de chemin alternatif et le JSON renvoyé n'est du coup pas bien interprété.
L'un de vous peut-il m'envoyer leur version avec leur vraies coordonnées en MP histoire que je débugge ?
C'est fait

Re: Durée de trajet avec Waze
Publié : 26 août 2017, 16:11
par Neutrino
Merci
Le problème se situe chez Waze

.
Le serveur met plus de 10 secondes à répondre, donc le script est dégagé par Domoticz...
Pour que ça marche, il faut que le script s'exécute en dehors de domoticz et lancé par cron par exemple.
Et là, plus de problème de timeout.
Re: Durée de trajet avec Waze
Publié : 08 sept. 2017, 11:42
par jmv75013
Bonjour,
J'ai essayé le script ci-dessous et trajet retourne un chaine vide. Quelqu'un aurait une idée
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/
---------------------------------
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()--import des fontions pour lire le JSON
function aff_log (s,debuging)
if (debuging) then
print ("<font color='#f3031d'> ".. s .."</font>")
end
end
idx = '152' --idx du capteur
--coordonnées de départ y = latitude et x = longitude
departy="49.355966"
departx="0.513058"
--coordonnées d'arrivée
arrivey="48.955823"
arrivex="4.359103"
nbIti=1 --Nombre d'itinéraires possibles
local debuging=true
commandArray={}
now=os.date("*t")
if (now.min % 2 == 0) then -- Execution du script toutes les 15 minutes
aff_log("--------------------------",debuging)
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&timeout=6000&nPaths='..nbIti..'&options=AVOID_TRAILS%3At%2CALLOW_UTURNS"'))
local trajet = waze:read('*all')
waze:close()
heure = os.date("%X",time)
aff_log("-- Heure : "..heure,debuging)
if (trajet~= nil) then
aff_log("-- Trajet : "..trajet,debuging)
aff_log("-- Long : "..string.len(trajet),debuging)
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
-- aff_log("-- Itinéraires : "..itineraires,debuging)
if(itineraires ~= "")then
itineraires = itineraires .. " ou "
end
routeName = alternatives['response']['routeName'] --Noms des principales routes empruntées
route = alternatives['response']['results'] --Liste des routes empruntées
aff_log("-- RouteName : "..routeName,debuging)
aff_log("-- Route : "..route,debuging)
--calcul du temps de trajet en secondes
routeTotalTimeSec = 0
for response,results in pairs(route) do
routeTotalTimeSec = routeTotalTimeSec + results['crossTime']
end
tps = os.date("%Hh:%Mmn",routeTotalTimeSec)
aff_log("-- RouteTotalTimeSec : "..routeTotalTimeSec,debuging)
aff_log("-- Tps : "..tps,debuging)
if (itineraires=="") then
itineraires = "A "..heure..", le temps de trajet était de "
end
itineraires = itineraires .. tps .." par ".. routeName
end
aff_log("-- Itinéraires : "..itineraires,debuging)
aff_log("--------------------------",debuging)
aff_log(" ",debuging)
commandArray[1]={['UpdateDevice'] =idx..'|0|' .. itineraires}
else
aff_log("-- Trajet : nil",debugging)
end
end
return commandArray
Re: Durée de trajet avec Waze
Publié : 12 sept. 2017, 09:22
par faipassa
Salut,
Un grand merci pour cette solution. Mes scripts de calcul d’itinéraires ne fonctionnaient plus depuis cet été et je n'avais pas pris le temps de regarder de plus près pourquoi. Hier soir, je jette un œil au forum, tombe sur ton post et en 5 minutes, c'était réglé. Super

F.
Re: Durée de trajet avec Waze
Publié : 12 sept. 2017, 21:36
par pimseb
Salut,
J'ai pas encore installé ce script mais est ce qu'on pourrait l'utiliser comme base de lancement d'autres appareils connectés ? Comme par exemple si le temps de trajet est plus élevé que d'habitude, lancer un réveil plus tôt. Ou bien allumer une lumière en rouge... Pour éviter d'avoir à regarder le téléphone portable
Re: Durée de trajet avec Waze
Publié : 01 oct. 2017, 19:48
par Phebus06
Bonjour,
Bon après avoir essayé d'installer ce script voici l'erreur que j'ai :
Code : Tout sélectionner
2017-10-01 19:45:01.009 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Duree_Vespins_Travail_Isa.lua: /home/pi/domoticz/scripts/lua/JSON.lua:660: html passed to JSON:decode():
403 Forbidden
nginx
Si quelqu'un sait pourquoi ?
Re: Durée de trajet avec Waze
Publié : 01 oct. 2017, 19:59
par Phebus06
Bon comme souvent je suis un neuneu, la réponse était juste au dessus ...

Re: Durée de trajet avec Waze
Publié : 01 oct. 2017, 20:05
par Phebus06
et évidement j'ai une autre erreur :
Code : Tout sélectionner
2017-10-01 20:03:00.344 LUA: _________ Début du script Durée Trajet Vespins Travail Isa _________
2017-10-01 20:03:01.417 LUA: 16:09 par Boulevard René Cassin, Voie Pierre Mathis, Boulevard du Général Louis Delfino Nice ou 16:18 par Boulevard René Cassin, Voie Pierre Mathis, Avenue des Diables Bleus Nice ou 18:44 par Promenade Édouard Corniglion Molinier, Voie Pierre Mathis Nice
2017-10-01 20:03:01.420 Error: SQL Query("INSERT INTO LightingLog (DeviceRowID, nValue, sValue) VALUES ('52', '0', '16:09 par Boulevard René Cassin, Voie Pierre Mathis, Boulevard du Général Louis Delfino Nice ou 16:18 par Boulevard René Cassin, Voie Pierre Mathis, Avenue des Diables Bleus Nice ou 18:44 par Promenade Édouard Corniglion Molinier, Voie Pierre Mathis Nice')") : database disk image is malformed
Si quelqu'un a une idée ???