Page 15 sur 18

Re: Durée de trajet avec Waze

Posté : 12 janv. 2018, 19:26
par Chrominator
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.

Re: Durée de trajet avec Waze

Posté : 15 janv. 2018, 09:57
par alacran
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.
---------------------------------
-- 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)..'&nbsppar&nbsp '..string.gsub(routeName, ' ', '&nbsp')
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

Posté : 19 janv. 2018, 09:09
par alacran
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

Posté : 21 janv. 2018, 18:37
par tonejay
alacran a écrit :Bonjour,
je suis vraiment le seul pour qui le script ne fonctionne pas?

Merci de votre aide svp
Non le miens ne fonctionne pas non plus ...

Re: Durée de trajet avec Waze

Posté : 22 janv. 2018, 14:54
par alacran
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

Posté : 22 janv. 2018, 16:46
par tonejay
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
Donc tu as retiré le 1er "If" complet ??

Re: Durée de trajet avec Waze

Posté : 23 janv. 2018, 11:03
par alacran
voila ce que j'ai mis
if (maintenant>=480 and maintenant<= 540 and weekday ~= 6 and weekday ~= 0) or DEBUG then
480 = 8h
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 ^^)

Re: Durée de trajet avec Waze

Posté : 24 janv. 2018, 23:17
par Chrominator
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.

Re: Durée de trajet avec Waze

Posté : 24 janv. 2018, 23:42
par alacran
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?

Re: Durée de trajet avec Waze

Posté : 26 janv. 2018, 15:48
par Moumi32
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.