Aller au contenu

Recommended Posts

Après longue absence voici un petit script permettant d’utiliser sur notre HC2 le service de trafic et de navigation communautaire WAZE (https://www.waze.com/fr/)

gallery_3_20_5996.png

 

Le principe du script est très simple : 1 scène pour interroger l’ API Waze pour tous les trajets parametrés et autant de vd qui seront mis à  jour par la dite scène.]

 

1 - Installation

 

Importer le vd HC2_Waze_Calculator.vfib sur le HC2, 1x pour un trajet, 2x pour deux etc...

 

post-3-0-67452400-1447114247_thumb.png

 

Créer la scène HC2 Waze Calculator cf. fichier HC2 Waze Calculator Scene.txt puis passer au paramètrage

post-3-0-47638500-1447114251_thumb.png

 

2 - Paramétrage

 

Configurer l'object params: nom, id du vd cible, polling, latitude, longiture etc... pour tous les trajets.

Pour trouver les coordonnées GPS, latitude et longitude il existe les services : www.coordonnees-gps.fr, www.torop.net/coordonnees-gps.php, www.gpsfrance.net etc.

 

local params = {
  {
    name = "Trajet 1",
    virtualDeviceId = 1449,
    from = {
      name = "Palais de l'Élysée",
      x = 2.3167538999999806, -- longitude
      y = 48.8704156   -- latitude 
    },
    to = {
      name = "Théâtre Guignol",
      x = 2.311747670173645, -- longitude
      y = 48.86977710077997 -- latitude 
    },
    pollingMs = 60*1000
  },
  {
    name = "Trajet 2",
    virtualDeviceId = 1452,
    from = {
      name = "Palais de l'Élysée",
      x = 2.3167538999999806, -- longitude
      y = 48.8704156   -- latitude 
    },
    to = {
      name = "Théâtre Guignol",
      x = 2.311747670173645, -- longitude
      y = 48.86977710077997 -- latitude 
    },
    pollingMs = 5*60*1000
  }
}
4 - Icône

 

post-3-0-88106700-1447114269_thumb.png

 

Merci à  Moicphil de m’avoir suggéré la chose et aussi pour son icône tip-top :)

 

Fichier du vd: HC2_Waze_Calculator.vfib

Fichier de la scène: HC2 Waze Calculator Scene.txt

  • Upvote 15

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello Krikri !!! De retour parmi nous :) Cool le module, mais ne suis pas parisien et évite Strasbourg aux heures de pointe :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Super module, fonctionnel rapidement 3 min  :-)

 

                         ----------------

Evolution : Avoir un bouton Aller / Retour qui permette le soir d'inverser dans un module le trajet afin de calculer en sens inverse

Ceci permettrait d'éviter de faire un VD pour l'aller et un autre pour le retour.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour

Je suis toujours en V3.6 & J'ai le message suivant :

[ERROR] 11:24:44: line 108: attempt to index global 'net' (a nil value)

 

Faut-il rajouter une adresse IP et Port ?
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Excellent Krikroff, grand retour en fanfare :)

J'adore l'exemple de trajet choisi :D

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

@casinos

Va falloir un jour ou l'autre passer en V4 hein ? ;)

@lazer, j'avais pas fais gaffe au chemin d'exemple de Krikroff... Excellent :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Je pense pas en avoir besoin mais  pour un retour en fanfare, ça c'est du retour !!! :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes un retour que nous attendions tous

Merci JC

Et Comme dab nico râle toujours autant lol

Envoyé de mon SM-G900F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes, je suis fait pour ça :)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Super idée, merci c'est génial !!!

 

Je pensais utiliser la localisation donnée par fibaro pour actualiser les temps de trajet en temps réel.

Mais je bute sur un problème de variable...

 

fibaro:getValue(id,"Location") renvoie une variable dont le contenu est "Longitude;Latitude"

Auriez-vous une idée de comment extraire de cette variable deux variables distinctes de latitude et de longitude??

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut

 

Avec un string.sub ca devrait être bon je pense :

local userLocation = fibaro:getValue(2,'Location');
fibaro:debug("coordonnées brutes : "..userLocation)

format_x = string.sub(userLocation, 1, 13)
fibaro:debug("coordonnées x formatée : "..format_x)

format_y = string.sub(userLocation, 15, 30)
fibaro:debug("coordonnées y formatée : "..format_y)

Débug :

[DEBUG] 20:07:08: coordonnées brutes : 52.4320294933;16.8449900900
[DEBUG] 20:07:08: coordonnées x formatée : 52.4320294933
[DEBUG] 20:07:08: coordonnées y formatée : 16.8449900900

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah...sauf que la taille des nombres peuvent changer en fonction de ta localisation, donc il faut rechercher le caractere " ; " qui est le séparateur.

 

C'est pas joli, mais ça fonctionne :

--[[
%% properties

%% globals
--]]

local userLocation = fibaro:getValue(2,'Location');
fibaro:debug("coordonnées brutes : "..userLocation)

local find = string.find(userLocation, ";")
fibaro:debug(find)

---------
local find_x = string.sub(userLocation, 1, find)
fibaro:debug(find_x)
local string_x = tonumber(find - 1 )
fibaro:debug(string_x)
format_x = string.sub(userLocation, 1, string_x)
fibaro:debug("coordonnées x formatée : "..format_x)
---------
local find_y = string.sub(userLocation, find, 40)
fibaro:debug(find_y)
local string_y = tonumber(find + 1 )
fibaro:debug(string_y)
format_y = string.sub(userLocation, string_y, 40)
fibaro:debug("coordonnées y formatée : "..format_y)

[DEBUG] 20:27:16: coordonnées brutes : 52.4320294933;16.8449900900
[DEBUG] 20:27:16: 14
[DEBUG] 20:27:16: 52.4320294933;
[DEBUG] 20:27:16: 13
[DEBUG] 20:27:16: coordonnées x formatée : 52.4320294933
[DEBUG] 20:27:16: ;16.8449900900
[DEBUG] 20:27:16: 15
[DEBUG] 20:27:16: coordonnées y formatée : 16.8449900900

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello ;)

 

J'utiliserai ceci qui retourne un tableau...

function split(s)
  if (string.len(s)>0) then
    local _a, r = nil, {};
    for _a in string.gmatch(s, "([^;]+)") do
      table.insert(r, tostring(_a));
    end
    return r;
  end
  return nil;
end

Exemple:

local c = split("52.4320294933;16.8449900900");

print(c[1])
print(c[2])

PS: Attention dans un vd il faut utiliser fibaro:debug et pas print

 

Sinon pour info Il y a des choses intéressantes ici : http://lua-users.org/wiki/SplitJoin :)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'étais sur qu'il y avait plus court et plus joli que mon code...  :)

 

Bah, maintenant je vais essayer de décrypter tes lignes ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Punaise, moi c'est les pattern où j'y pite rien... j'ai beau essayer de comprendre mais ça veut pas rentrer !

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@krikroff,

Peux-tu SVP essayer de te mettre à  notre niveau ? Ton code est génial, mais incompréhensible. Ce n'est pas un forum de génies ici (à  part quelques exceptions :13::98:  

  • Upvote 5

Partager ce message


Lien à poster
Partager sur d’autres sites

Punaise, moi c'est les pattern où j'y pite rien... j'ai beau essayer de comprendre mais ça veut pas rentrer !

Je me suis arraché les cheveux un soir sur les paterns, et j'avais fini par comprendre et obtenir ce que je voulais (bon depuis j'ai oublié....)

Regarde ces 2 liens que je viens de retrouver :

http://www.gammon.com.au/scripts/doc.php?lua=string.find

http://www.lua.org/pil/20.2.html

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

VD en place pour le fun, c'est top :-)

 

maintenant, si le temps de trajet maison/boulot est trop long, alors le VD jour chômé se modifie automatiquement et passe en jour chômé "Oui" et donc le wallplug sur lequel est branché le reveil se coupe :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est vraiment du plug & play! Merci pour ce super module qui marche au poil et bon retour parmi nous Krikroff :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Je me suis arraché les cheveux un soir sur les paterns, et j'avais fini par comprendre et obtenir ce que je voulais (bon depuis j'ai oublié....)

Regarde ces 2 liens que je viens de retrouver :

http://www.gammon.com.au/scripts/doc.php?lua=string.find

http://www.lua.org/pil/20.2.html

Un exemple d'expression régulière utilisée à  l'instant : ^\s*\-\-.*$

 

=> permet de trouver une ligne contenant uniquement des commentaires LUA, commençant par "--", avec éventuellement des espaces ou tabulations devant.

Par conséquent, les commentaires situés en fin de ligne après du code source ne seront pas pris en compte.

 

Explication :

^  = début de ligne

\s = espace (tabulation ou espace)

*  = quelque soit le nombre de caractère précédent (donc l'espace dans le cas présent)

\- = un tiret

\- = un second tiret

.  = n'importe quel caractère

*  = quelque soit le nombre de caractère précédent (donc n'importe quel caractère dans le cas présent)

$  = fin de ligne

 

Source : http://www.domotique-fibaro.fr/index.php/topic/328-plugin-freebox-v6/?p=95853

Partager ce message


Lien à poster
Partager sur d’autres sites

×