Aller au contenu

Krikroff

Messages recommandés

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

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...