[LUA] Durée de trajet avec Waze

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
schwinny
Messages : 123
Inscription : 23 mars 2017, 21:41

Re: Durée de trajet avec Waze

Message par schwinny »

Merci pour ton retour. très utile ;)
MAidEN91
Messages : 132
Inscription : 01 sept. 2015, 20:50

Re: Durée de trajet avec Waze

Message par MAidEN91 »

Bonjour,

J'ai tenté de faire fonctionner le script google maps (les 2 versions) mais dans les 2 cas mes compteurs s'update avec "0" comme valeur.

Quand je teste l'API a la main avec les coordonnées GPS départ et arrivée + ma clé cela fonctionne bien.

On dirait qu'une des boucles ne marche pas et qu'il passe directement a la fin en updatant a 0, normalement cela est censé se faire uniquement hors periode de calcul du trajet (journée et weekend).

Vous me direz si vous avez réussi a le faire marcher!
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Durée de trajet avec Waze

Message par Neutrino »

Pour ceux qui veulent continuer à utiliser Waze plutot que gmaps, la solution vient de ce post :
http://www.domoticz.com/forum/viewtopic ... 00#p145454
Il faut changer :

Code : Tout sélectionner

local waze=assert(io.popen('curl  "https://www.waze.com/r...".')

par :

Code : Tout sélectionner

local waze=assert(io.popen('curl --referer https://www.waze.com "https://www.waze.com/r...."')
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
MAidEN91
Messages : 132
Inscription : 01 sept. 2015, 20:50

Re: Durée de trajet avec Waze

Message par MAidEN91 »

Impec ca fonctionne a nouveau merci pour l'info!
OyyoDams
Messages : 71
Inscription : 24 mars 2015, 15:07

Re: Durée de trajet avec Waze

Message par OyyoDams »

Génial merci!
Domoticz sur Raspberry PI 3
Interfaces: razberry, rfxtrx433e, rflink
Périphériques: DI.O, Somfy RTS, Yeelight
L'excellent blog de mon ami Deennoo: http://www.domo-attitude.fr
sennheiser
Messages : 8
Inscription : 14 août 2017, 16:28

Re: Durée de trajet avec Waze

Message par sennheiser »

Salut !

Bon j'ai tout bien fait et cela fonction avec les coordonnées qui sont dans le script de base en revanche, dés que je met les miennes "de coordonnées" :D , j'ai le message suivant :

2017-08-20 13:38:07.081 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_waze.lua: /home/pi/domoticz/scripts/lua/script_time_waze.lua:58: bad argument #1 to 'pairs' (table expected, got nil)

J'ai essayé d'inverser les X / Y mais ca ne change rien :(

Si qqn peut m'aider ?


Merci
Raspberry Pi 3 + Ecran tactile 7" raspberry
Domoticz
Interface Broadlink RM PRO
MAidEN91
Messages : 132
Inscription : 01 sept. 2015, 20:50

Re: Durée de trajet avec Waze

Message par MAidEN91 »

Tu peux copier ton script ici?

Tu as bien mis des "." dans les coordonnées GPS?
sennheiser
Messages : 8
Inscription : 14 août 2017, 16:28

Re: Durée de trajet avec Waze

Message par sennheiser »

Bonjour,

J'ai bien mis des "." pour les coordonnées.

Je précise qu'après avoir fait plein de test le script fonctionne si je met le "nblti='1'". Si je met 2 ou 3 ca ne marche plus. Donc je ne peut pas avoir plusieurs iti.

Sinon j'ai aussi toujours cette erreur là :
Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_waze.lua has been running for more than 10 seconds

Voici mon script :

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/
---------------------------------
commandArray={}

--import des fontions pour lire le JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
--coordonnées à modifier----------------
--idx du capteur
idx = '52'

-- y = latitude et x = longitude
-- exemple pour paris : 
-- departx="2.2XXXXXX"
-- departy="48.8XXXXXX"
--coordonnées de départ
departy="48.85XXXXX"
departx="2.29XXXXX"
--coordonnées d'arrivée
arrivey="48.XXXXX"
arrivex="2.XXXXX"

--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 --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&returnGeometries=true&returnInstructions=true&timeout=60000&nPaths=1&clientVersion=4.0.0&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 ..'mn'..routeTotalTimeSec%60
      end
      if(routeTotalTimeSec%60>=30)then
         routeTotalTimeMin = routeTotalTimeMin +1
      end
   itineraires = itineraires .. routeTotalTime.." par "..routeName
   end
   print(itineraires)
   commandArray[1]={['UpdateDevice'] =idx..'|0|' .. itineraires}
return commandArray
Merci pour ton aide :)

S
Raspberry Pi 3 + Ecran tactile 7" raspberry
Domoticz
Interface Broadlink RM PRO
MAidEN91
Messages : 132
Inscription : 01 sept. 2015, 20:50

Re: Durée de trajet avec Waze

Message par MAidEN91 »

Tu as pas inversé ton X et ton Y?

Essayes avec x="2.xxxx" et y="48.xxxxx"

Sur ma version de script je n'ai pas la variable nblti, il est plus court je dois pas utiliser la dernière version...
sennheiser
Messages : 8
Inscription : 14 août 2017, 16:28

Re: Durée de trajet avec Waze

Message par sennheiser »

Salut,

Merci pour la réponse.

J'ai déjà testé l'inversion et effectivement j'utilise la version qui donne 3 trajets alternatifs.

Je pense qu'il est là le souci mais je d'autre ont pris le meme script que moi et cela semble marcher.

S
Raspberry Pi 3 + Ecran tactile 7" raspberry
Domoticz
Interface Broadlink RM PRO
Répondre