[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.
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Durée de trajet avec Waze

Message par Chrominator »

alacran a écrit :...
Mais en France (pour ma part),0 et 6 ne correspondent pas à samedi et dimanche
Qui te parle de fuseau horaire ou de quoi que ce soit d'autre ?
Je te parle de convention.

Lis la doc de LUA et tu seras moins dans le flou.
Screenshot-2018-1-26 Programming in Lua 22 1.png
Screenshot-2018-1-26 Programming in Lua 22 1.png (1.69 Kio) Consulté 9233 fois

Pour le jour férié, le script est là :

../viewtopic.php?f=17&t=885&hilit=P%C3%A2ques
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Durée de trajet avec Waze

Message par landaisbenj »

Si ca interresse quelqu'un moi je me suis rajouté l'heure d'arrivée:

Code : Tout sélectionner

print('Heure d\'arrivée: '..os.date("%Hh%M",os.time()+routeTotalTimeSec))
En plus d'indiquer le retard pour un départ au travail ou quoi, pourra surement servir à initier un script time lors du retour à la maison (par exemple ouverture du portail a tel heure ou allumer les lumières)

Et en suspends, je crois que ca:

Code : Tout sélectionner

--calcul du temps de trajet
for response,results in pairs(route) do
routeTotalTimeSec = routeTotalTimeSec + results['crossTime']
end
peut etre remplacé par ca:

Code : Tout sélectionner

routeTotalTimeSec =jsonTrajet['response']['totalRouteTime']
(les boucles si je peux les éviter au maximum...)
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Dim33
Messages : 209
Inscription : 29 janv. 2017, 23:19

Re: Durée de trajet avec Waze

Message par Dim33 »

Bonjour,

J'ai installé ce script hier. Super boulot hormis qu'il s'est exécuté ce matin alors qu'il ne devrait pas. Le test sur le numéro du jour ne semble pas fonctionner pourtant avec ce petit script, la valeur affichée est bien zéro (Sunday).

Code : Tout sélectionner

time=os.time()
local weekday = os.date('%w', time)
commandArray = {}
print (weekday)
return commandArray
Je continue d'investiguer .....
NUC sous Ubuntu Server / RFXCom / Domoticz Version: 2020.2
Dim33
Messages : 209
Inscription : 29 janv. 2017, 23:19

Re: Durée de trajet avec Waze

Message par Dim33 »

De temps en temps, j'ai également ça qui apparaît dans les Log :

"Error: EventSystem: in /usr/local/domoticz/var/scripts/lua/scrip_time_calcultrajet.lua: /volume1/@appstore/domoticz/var/scripts/lua/JSON.lua:660: html passed to JSON:decode():"
NUC sous Ubuntu Server / RFXCom / Domoticz Version: 2020.2
Moumi32
Messages : 4
Inscription : 28 févr. 2017, 09:56

Re: Durée de trajet avec Waze

Message par Moumi32 »

bonjour à tous,

Tout fonctionne pour le calcul et tout s'affiche correctement sauf que dans le log j'ai l'erreur suivante:
Error: EventSystem: in waze2: [string "-- Script de calcul de temps pour un trajet e..."]:70: attempt to concatenate global 'arrivey' (a nil value)

la ligne 70 correspond à:
local waze=assert(io.popen('curl --referer https://www.waze.com "https://www.waze.com/row-RoutingManager ... TOLL_ROADS"'))

Je ne sais pas d'ou cela peut venir.

Pourriez-vous m'aider svp?

Merci
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Durée de trajet avec Waze

Message par Chrominator »

Moumi32 a écrit :....
la ligne 70 correspond à:
local waze=assert(io.popen('curl --referer https://www.waze.com "https://www.waze.com/row-RoutingManager ... ex..'+y%3A'..arrivey..'&returnJSON=true&returnGeometries=true&returnInstructions=true&timeout=60000&nPaths='..nbIti..'&clientVersion=4.0.0&options=AVOID_TRAILS%3At%2CALLOW_UTURNS%3At%2CAVOID_TOLL_ROADS"'))
...
Tu as sans doute mal initialisé la variable arrivey en début de script.

Du coup je me demande d'où vient le résultat que tu dis être correctement calculé.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Dim33
Messages : 209
Inscription : 29 janv. 2017, 23:19

Re: Durée de trajet avec Waze

Message par Dim33 »

Bonjour,

Avec la dernière version de Domoticz, le script m'affiche une erreur : attempt to index local 'jsonTrajet' (a nil value).

Cette ligne de code est incriminée : routeName = jsonTrajet['response']['routeName']

Code : Tout sélectionner

   -----------------------------------------
   ----------------------------------------------------------------
   --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/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%3At%2CAVOID_TOLL_ROADS"')
   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%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
   routeTotalTimeSec =jsonTrajet['response']['totalRouteTime']
   
   --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[i] == nil then voie[i] = "/ND" end
      if xtime[i]==nil then xtime[i]=0 end
      xtime[i]=xtime[i]+tonumber(results['crossTime'])
      voir_les_logs(tostring(response).." "..results['crossTime'].." "..results['street'].." "..voie[i].." "..xtime[i])
   end

   i=0
   j=1
   chemin = {}
   trajet = {}

Une idée ? Personne n'a le pb avec la dernière version stable de Domoticz ?

Merci.
NUC sous Ubuntu Server / RFXCom / Domoticz Version: 2020.2
Datawolf
Messages : 273
Inscription : 03 avr. 2018, 13:51

Re: Durée de trajet avec Waze

Message par Datawolf »

Salut,

Un grand merci à Neutrino et Chrominator pour ce chef d’œuvre, ça marche nickel du premier coup ! :D

@+

Datawolf
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Durée de trajet avec Waze

Message par patrice »

Bonjour
Oui merci au rédacteurs de ce script , je l'utilise depuis un mois,j'y ai intégré l'envoi de SMS quand le delai de déplacement dépasse une certaine durée et c'est un bijou
Merci encore
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Datawolf
Messages : 273
Inscription : 03 avr. 2018, 13:51

Re: Durée de trajet avec Waze

Message par Datawolf »

Bonjour,
Hey, bonne idée ! J'ai ajouté l'heure d'arrivée prévue, je vais de ce pas ajouter une notification si l'heure dépasse mon "horaire de bureau". :D
@+
Datawolf
Répondre