[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.
multinet
Messages : 24
Inscription : 09 févr. 2016, 13:07

Re: Durée de trajet avec Waze

Message par multinet »

Salut Neutrino

Avec le script denriere version (celui avec 3 iti possibles)
j'obtiens ce message d'erreur lorsque je l'execute manuellement

Code : Tout sélectionner

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
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Durée de trajet avec Waze

Message par Neutrino »

Il doit y avoir un problème avec tes coordonnées de départ et d'arrivée.
Essaie d'échanger X et Y pour voir, c'est souvent l'erreur qui est faite.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
multinet
Messages : 24
Inscription : 09 févr. 2016, 13:07

Re: Durée de trajet avec Waze

Message par multinet »

Super merci c'etait cela en effet j'avais inversé

Bon il me reste un pb car la mise à jour du capteur virtuel type 'text' ne fonctionne pas (j'ai toujours hello world')

j'ai vérifié l'idx il est bon

As tu une idée.?

Merci et bonne journée
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Durée de trajet avec Waze

Message par Neutrino »

Ajoute un

Code : Tout sélectionner

print(itineraires)
avant le commandArray, histoire de voir si tout est bien calculé.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: Durée de trajet avec Waze

Message par staber »

Lorsque je passe :

Code : Tout sélectionner

https://www.waze.com/row-RoutingManager/routingRequest?from=x:-70.970+y:48.385&to=x:-71.014+y:48.431&returnJSON=true&timeout=6000&nPaths=1&options=AVOID_TRAILS:t,ALLOW_UTURNS
(je précise que ce n'est pas le vrai coordonnée de ma maison :D

Il me retourne :

Code : Tout sélectionner

{ "error" : "Error: 502|Could not locate start point"}
J'arrive à faire un itinéraire en France. Ça marche bien mais impossible de le faire chez moi :shock:

Une idée ? J'ai essayé aussi d'inversé x et y mais je pense que je les mets dans le bon ordre car un itinéraire en France marche
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Durée de trajet avec Waze

Message par Neutrino »

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
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: Durée de trajet avec Waze

Message par staber »

Oui ça fonctionne bien avec google maps...

très étrange car j'utilise waze ici!
multinet
Messages : 24
Inscription : 09 févr. 2016, 13:07

Re: Durée de trajet avec Waze

Message par multinet »

Neutrino a écrit :Ajoute un

Code : Tout sélectionner

print(itineraires)
avant le commandArray, histoire de voir si tout est bien calculé.
Bonsoir

Cela m'affiche bien les 2 trajets avec leur durée

Merci pour toute l'aide fournie :)

Multinet
multinet
Messages : 24
Inscription : 09 févr. 2016, 13:07

Re: Durée de trajet avec Waze

Message par multinet »

Bonsoir

Je reviens sur mon probleme car je suis toujours bloqué sur la mise a jour du dispositif TEXTE de domiticz

voici le résultat de ma commande :

Code : Tout sélectionner

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)

Code : Tout sélectionner

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
Capture d’écran 2016-06-07 à 19.47.21.jpg (49.46 Kio) Consulté 10060 fois
si vous avez une idée ?

Merci pour tout
Multinet
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Durée de trajet avec Waze

Message par vil1driver »

C'est quoi ce .OLD et surtout cette méthode de lancement ?!!

Les gars les scripts lua doivent être lancé par domoticz !

Si ce n'est pas domoticz qui lance le script aucune action liée à domoticz ne sera effectué !
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre