Aller au contenu

Krikroff

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
Lien vers le commentaire
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.

Lien vers le commentaire
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??

Lien vers le commentaire
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
Lien vers le commentaire
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
Lien vers le commentaire
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 :)

Lien vers le commentaire
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
Lien vers le commentaire
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
Lien vers le commentaire
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 :-)

Lien vers le commentaire
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

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...