Page 8 sur 26

Re: Durée de trajet avec Waze

Publié : 11 juin 2017, 21:49
par berty42
Oui j'ai modifier idx comme tu l'as marqué.
J'ai pris le script qui est sur la première pas du forum :

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

--import des fontions pour lire le JSON
json = (loadfile "C:\Program Files\Domoticz\scripts\lua\JSON.lua")()
--variables à modifier----------------
--idx du capteur
idx = '3'
-- y = latitude et x = longitude
-- exemple pour paris :
-- departx="2.2903622"
-- departy="48.8582546"
--coordonnées de départ
departx="XX.XXXXXX"
departy="XX.XXXXXX"
--coordonnées d'arrivée
arrivex="XX.XXXXXX"
arrivey="XX.XXXXXX"

-----------------------------------------
----------------------------------------------------------------
--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 ... LOW_UTURNS"'))
local trajet = waze:read('*all')
waze:close()

local jsonTrajet = json:decode(trajet)
--Noms des principales routes empruntées
routeName = jsonTrajet['response']['routeName']
--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)

--mise en forme de la réponse
if (routeTotalTimeSec%60<10)then
routeTotalTime = routeTotalTimeMin ..':0'..routeTotalTimeSec%60
else
routeTotalTime = routeTotalTimeMin ..':'..routeTotalTimeSec%60
end

commandArray[1]={['UpdateDevice'] =idx..'|0|' .. tostring(routeTotalTime).." par "..routeName}

return commandArray

Re: Durée de trajet avec Waze

Publié : 11 juin 2017, 21:52
par schwinny
tu n'as pas renseigné la zone de départ et d'arrivé..

Code : Tout sélectionner

--coordonnées de départ
departx="XX.XXXXXX"
departy="XX.XXXXXX"
--coordonnées d'arrivée
arrivex="XX.XXXXXX"
arrivey="XX.XXXXXX"
renseigne les et teste de nouveau.

Re: Durée de trajet avec Waze

Publié : 11 juin 2017, 22:35
par berty42
Malgré les points gps renseignés ca ne fonctionne pas et tjrs le meme message d'erreur dans les log.
Dans domoticz je dois utiliser le type de matériel : Dummy (Does nothing, use for virtual switches only)?

Re: Durée de trajet avec Waze

Publié : 11 juin 2017, 22:37
par schwinny
remontre ton script stp

Re: Durée de trajet avec Waze

Publié : 11 juin 2017, 22:40
par berty42
J'ai essayé en inversant x;y pareil


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

--import des fontions pour lire le JSON
json = (loadfile "C:\Program Files\Domoticz\scripts\lua\JSON.lua")()
--variables à modifier----------------
--idx du capteur
idx = '4'
-- y = latitude et x = longitude
-- exemple pour paris :
-- departx="3.2903622"
-- departy="48.8582546"
--coordonnées de départ
departx="3"
departy="49"
--coordonnées d'arrivée
arrivex="3"
arrivey="49"

-----------------------------------------
----------------------------------------------------------------
--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 ... LOW_UTURNS"'))
local trajet = waze:read('*all')
waze:close()

local jsonTrajet = json:decode(trajet)
--Noms des principales routes empruntées
routeName = jsonTrajet['response']['routeName']
--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)

--mise en forme de la réponse
if (routeTotalTimeSec%60<10)then
routeTotalTime = routeTotalTimeMin ..':0'..routeTotalTimeSec%60
else
routeTotalTime = routeTotalTimeMin ..':'..routeTotalTimeSec%60
end

commandArray[1]={['UpdateDevice'] =idx..'|0|' .. tostring(routeTotalTime).." par "..routeName}

return commandArray

Re: Durée de trajet avec Waze

Publié : 11 juin 2017, 22:44
par schwinny
je viens de voir ton import du script lua..
il n'est pas bon.

ton erreur provient de la:

Code : Tout sélectionner

loadfile "C:\Program Files\Domoticz\scripts\lua\JSON.lua")()

deja vire les ()

Code : Tout sélectionner

loadfile "C:\Program Files\Domoticz\scripts\lua\JSON.lua")[size=200]()[/size]
ensuite, je ne pense pas que l'on puisse importer avec un chemin windows...

Re: Durée de trajet avec Waze

Publié : 12 juin 2017, 00:19
par Neutrino
Tu as installé CURL sur ton windows ?

Re: Durée de trajet avec Waze

Publié : 12 juin 2017, 00:33
par berty42
J ai testé et c est toujours Ko.
Non je n ai pas installé Curl.
Par contre apperement il faut créer le fichier en format utf8 sans Bom ... sous windows. Ça ne me parle pas du tout.

Re: Durée de trajet avec Waze

Publié : 12 juin 2017, 08:32
par vil1driver
Le chemin vers le fichier JSON.lua doit être avec des doubles antislashs pour Windows.

As tu vérifié également que ce fichier est bien présent ?

Oui curl est impératif, il te faut l'installer et également modifier son chemin dans le script.

Pour utf8.. utilise notepad++ comme éditeur

Re: Durée de trajet avec Waze

Publié : 12 juin 2017, 20:57
par berty42
Ca va etre la galère pour juste faire un test sur windows avec tout ce qu'il faut à coté.
Je vais attendre mon raspberry pi.
En tout cas merci pour vos conseils ;)