Durée de trajet avec Waze
-
- Messages : 420
- Enregistré le : 19 déc. 2015, 07:29
Re: Durée de trajet avec Waze
Mieux vaut référencer le script duquel on parle si on veut du support.
Mets un lien vers ce script ou poste-le, de manière à ce qu'on puisse voir ce qui se passe.
Mets un lien vers ce script ou poste-le, de manière à ce qu'on puisse voir ce qui se passe.
Re: Durée de trajet avec Waze
Bonjour,
voici le script (c'est le dernier posté sur ce sujet.
J'ai uniquement modifié les valeurs id, depart et arrivee ainsi que l'import du fichier json pour prendre celui sur les pages précédentes. Mais je précise quand le laissant tel quel, ça ne fonctionne pas non plus.
voici le script (c'est le dernier posté sur ce sujet.
J'ai uniquement modifié les valeurs id, depart et arrivee ainsi que l'import du fichier json pour prendre celui sur les pages précédentes. Mais je précise quand le laissant tel quel, ça ne fonctionne pas non plus.
---------------------------------
-- Script de calcul de temps pour un trajet entre 2 coordonnées
-- Auteur : Neutrino
-- Date : 7 septembre 2015
-- Nécessite un capteur virtuel de type Text
-- source :
-- http://www.domo-blog.fr/info-trajet-waz ... raspberry/
---------------------------------
-- Modif Chrominator
--
-- 2016-01-30 : Remplacement des secondes du trajet par " mn"
-- Pas de détermination du temps de trajet les W-E et jours fériés
-- 2017-11-11 : Détermination du nom des routes principales (les plus longtemps parcourues) car routeName n'existe plus dans le JSON
--
DEBUG=false
function voir_les_logs (s) -- nécessite la variable DEBUG
if DEBUG then
if s ~= nil then
print ("<font color='#f3031d'>".. s .."</font>")
else
print ("<font color='#f3031d'>aucune valeur affichable</font>")
end
end
end
commandArray={}
--import des fontions pour lire le JSON
--json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON_Waze.lua") ()
--variables à modifier----------------
--idx du capteur
idx = '69' -- Capteur de type texte pour afficher la durée du trajet et le nom de la principale route empruntée.
idx_curve = '70' -- Capteur de type voltmetre pour archiver les temps de parcours calculés
--coordonnées de départ
departx="-1.14082"
departy="48.84987"
--coordonnées d'arrivée
arrivex="-1.1329"
arrivey="48.63198"
---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)
-- Récupère le jour pour ne pas calculer de trajet les week-end.
-- Sunday = 0 - Saturday = 6
local weekday = os.date('%w', time)
---calcule du trajet entre 7h et 9h sauf W-E et jours fériés
--
if (maintenant>=420 and maintenant<= 540 and uservariables["jf"] == "false" and weekday ~= 6 and weekday ~= 0) or DEBUG then
-----------------------------------------
----------------------------------------------------------------
--Récupération du trajet et de sa durée en temps réel via WAZE--
----------------------------------------------------------------
voir_les_logs('curl --referer https://www.waze.com "https://www.waze.com/row-RoutingManager ... A'..arrive
x..'+y%3A'..arrivey..'&returnJSON=true&returnGeometries=true&returnInstructions=true&timeout=60000&nPaths=1&clientVersion=4.0.0&options=AVOID_TRAILS%3At%2CALLOW_UTURNS
%3At%2CAVOID_TOLL_ROADS"')
local waze=assert(io.popen('curl --referer https://www.waze.com "https://www.waze.com/row-RoutingManager ... rty..'&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%2
CALLOW_UTURNS%3At%2CAVOID_TOLL_ROADS"'))
local infowaze = waze:read('*all')
waze:close()
local jsonTrajet = json:decode(infowaze)
--Noms des principales routes empruntées
routeName = jsonTrajet['response']['routeName']
if routeName == nil then routeName="route non précisée" end
--Liste des routes empruntées
route = jsonTrajet['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)
-- Détermination des noms des routes employées
xtime = {}
route = jsonTrajet['response']['results']
voie = jsonTrajet['response']['streetNames']
for response,results in pairs(route) do
i = tonumber(results['street'])
if voie == nil then voie = "/ND" end
if xtime==nil then xtime=0 end
xtime=xtime+tonumber(results['crossTime'])
voir_les_logs(tostring(response).." "..results['crossTime'].." "..results['street'].." "..voie.." "..xtime)
end
i=0
j=1
chemin = {}
trajet = {}
-- Détermination des durées de parcours pour chacune des routes
for street in pairs(voie) do
if xtime[street] ~= nil then
upd=0
for i in ipairs(chemin) do
if chemin==voie[street] then
trajet=trajet[i]+xtime[street]
upd=1
end
end
if upd == 0 and xtime[street]~=nil and voie[street]~=nil then
voir_les_logs("voie[street]="..voie[street])
voir_les_logs("xtime[street]="..xtime[street])
voir_les_logs("j="..j)
chemin[j]=voie[street]
if xtime[street]~=nil then
trajet[j]=xtime[street]
else
trajet[j]=0
end
voir_les_logs("chemin["..tostring(j).."]="..chemin[j])
voir_les_logs("trajet["..tostring(j).."]="..trajet[j])
j=j+1
end
end
end
voie4T=0
voie5T=0
-- Recherche de deux routes les plus utilisées
for i in ipairs(chemin) do
voir_les_logs("chemin["..tostring(i).."]="..chemin[i])
voir_les_logs("trajet["..tostring(i).."]="..trajet[i])
if trajet[i]~=nil and chemin[i]~="/ND" then
if trajet[i] > voie4T then
voie4N=chemin[i]
voie4T=trajet[i]
elseif trajet[i] > voie5T then
voie5N=chemin[i]
voie5T=trajet[i]
end
end
end
voir_les_logs(voie4N.." "..voie5N)
routeName=voie4N.." "..voie5N
routeTotalTime = os.date("%H:%M", routeTotalTimeSec-3600)..' par  '..string.gsub(routeName, ' ', ' ')
commandArray[#commandArray+1]={['UpdateDevice'] =idx..'|0|' .. tostring(routeTotalTime)}
commandArray[#commandArray+1]={['UpdateDevice'] =idx_curve..'|0|' .. tostring(routeTotalTimeMin)}
end
return commandArray
Re: Durée de trajet avec Waze
Bonjour,
je suis vraiment le seul pour qui le script ne fonctionne pas?
Merci de votre aide svp
je suis vraiment le seul pour qui le script ne fonctionne pas?
Merci de votre aide svp
Re: Durée de trajet avec Waze
Non le miens ne fonctionne pas non plus ...alacran a écrit :Bonjour,
je suis vraiment le seul pour qui le script ne fonctionne pas?
Merci de votre aide svp
Re: Durée de trajet avec Waze
J'ai trouvé il me semble.
Dans le IF, la variable jf n'est pas déclarée, donc jamais "true". On ne peut donc pas rentrer dans la boucle. Je l'ai retiré et maintenant ça fonctionne.
J'ai vu passé un message plus haut dans le thread la dessus mais j'avoue ne pas avoir compris les échanges.
Maintenant il fonctionne. Mais il fonctionne également le samedi et le dimanche pour moi. Donc les weekday !=6 et !=0 doivent correspondre à d'autres jours, mais pour l'instant, ça ne fonctionne que depuis samedi, je n'ai aps encore fait une semaine entière pour savoir.
Enfin, mieux vaut trop que pas assez; depuis, ça fonctionne bien et j'ai pu ajuster les plages horaires
Dans le IF, la variable jf n'est pas déclarée, donc jamais "true". On ne peut donc pas rentrer dans la boucle. Je l'ai retiré et maintenant ça fonctionne.
J'ai vu passé un message plus haut dans le thread la dessus mais j'avoue ne pas avoir compris les échanges.
Maintenant il fonctionne. Mais il fonctionne également le samedi et le dimanche pour moi. Donc les weekday !=6 et !=0 doivent correspondre à d'autres jours, mais pour l'instant, ça ne fonctionne que depuis samedi, je n'ai aps encore fait une semaine entière pour savoir.
Enfin, mieux vaut trop que pas assez; depuis, ça fonctionne bien et j'ai pu ajuster les plages horaires
Re: Durée de trajet avec Waze
Donc tu as retiré le 1er "If" complet ??alacran a écrit :J'ai trouvé il me semble.
Dans le IF, la variable jf n'est pas déclarée, donc jamais "true". On ne peut donc pas rentrer dans la boucle. Je l'ai retiré et maintenant ça fonctionne.
J'ai vu passé un message plus haut dans le thread la dessus mais j'avoue ne pas avoir compris les échanges.
Maintenant il fonctionne. Mais il fonctionne également le samedi et le dimanche pour moi. Donc les weekday !=6 et !=0 doivent correspondre à d'autres jours, mais pour l'instant, ça ne fonctionne que depuis samedi, je n'ai aps encore fait une semaine entière pour savoir.
Enfin, mieux vaut trop que pas assez; depuis, ça fonctionne bien et j'ai pu ajuster les plages horaires
Re: Durée de trajet avec Waze
voila ce que j'ai mis
540 = 9h du matin
weekday ~=6 = je ne sais pas quel jour
weekday ~=0 = je ne sais pas quel jour
Pour l'instant le script à fonctionner samedi, dimanche, lundi et mardi. Donc les weekday à 6 et 0, je ne sais pas encore à quels jours ils correspondent (c'est du debuggage empirique ^^)
480 = 8hif (maintenant>=480 and maintenant<= 540 and weekday ~= 6 and weekday ~= 0) or DEBUG then
540 = 9h du matin
weekday ~=6 = je ne sais pas quel jour
weekday ~=0 = je ne sais pas quel jour
Pour l'instant le script à fonctionner samedi, dimanche, lundi et mardi. Donc les weekday à 6 et 0, je ne sais pas encore à quels jours ils correspondent (c'est du debuggage empirique ^^)
-
- Messages : 420
- Enregistré le : 19 déc. 2015, 07:29
Re: Durée de trajet avec Waze
Ouvrez une doc LUA et il n'y aura plus de doute.
La semaine commence le dimanche pour les nord-américains.
En LUA, O est dimanche, 6 est samedi.
et pour ceux qui se demandent ce qu'est jf, lorsqu'il est vrai on est un jour férié.
Le script est ici dans ce forum.
La semaine commence le dimanche pour les nord-américains.
En LUA, O est dimanche, 6 est samedi.
et pour ceux qui se demandent ce qu'est jf, lorsqu'il est vrai on est un jour férié.
Le script est ici dans ce forum.
Re: Durée de trajet avec Waze
Merci Chrominator.
Mais en France (pour ma part),0 et 6 ne correspondent pas à samedi et dimanche puisque le script fonctionne le samedi et le dimanche.
J'attend de voir le reste de la semaine, mais pour l'instant il a fonctionné tous les jours (de samedi à mercredi).
Pour la variable jf, ok c'est les jours fériés, mais comme elle n'est déclarée nul part, elle est toujours fausse chez moi; donc on ne rentre jamais dans le if donc le script ne fonctionne pas...
Ou alors la variable jf est externe, mais dans ce cas elle est où et pourquoi chez moi elle est toujours false?
Mais en France (pour ma part),0 et 6 ne correspondent pas à samedi et dimanche puisque le script fonctionne le samedi et le dimanche.
J'attend de voir le reste de la semaine, mais pour l'instant il a fonctionné tous les jours (de samedi à mercredi).
Pour la variable jf, ok c'est les jours fériés, mais comme elle n'est déclarée nul part, elle est toujours fausse chez moi; donc on ne rentre jamais dans le if donc le script ne fonctionne pas...
Ou alors la variable jf est externe, mais dans ce cas elle est où et pourquoi chez moi elle est toujours false?
Re: Durée de trajet avec Waze
Bonjour à tous,
Je suis nouveau sur Domoticz
et j'ai du mal à démarrer pour waze
. Ou doit on mettre le script pour WAZE? dans le répertoire Script de domoticz ou il faut créer un script à partir d'evenement?
Pourriez-vous faire un petit tuto d'installation?
Merci pour vos réponses.
Je suis nouveau sur Domoticz


Pourriez-vous faire un petit tuto d'installation?
Merci pour vos réponses.