Message populaire Krikroff Posté(e) le 10 novembre 2015 Message populaire Signaler Posté(e) le 10 novembre 2015 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/) 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... Créer la scène HC2 Waze Calculator cf. fichier HC2 Waze Calculator Scene.txt puis passer au paramètrage 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 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 15
TonyC Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 Welcome home!! J'ai juste envie de dire 2
Nico Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 Hello Krikri !!! De retour parmi nous Cool le module, mais ne suis pas parisien et évite Strasbourg aux heures de pointe
kioneoranga Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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.
CASINOS Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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 ?
Lazer Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 Excellent Krikroff, grand retour en fanfare J'adore l'exemple de trajet choisi 2
Moicphil Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 @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
HANSOLO Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 L'icône, c'est la tête à@krikroff au réveil ?
Moicphil Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 Pourquoi tu dis ca? Pas sympa pour lui.
HANSOLO Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 heeeeeeuuuuu il y a du sabotage d'admin. 1
BenjyNet Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 Je pense pas en avoir besoin mais pour un retour en fanfare, ça c'est du retour !!!
mprinfo Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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
PdB Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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??
Moicphil Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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
Moicphil Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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
Krikroff Posté(e) le 10 novembre 2015 Auteur Signaler Posté(e) le 10 novembre 2015 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
Moicphil Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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 ...
BenjyNet Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 Punaise, moi c'est les pattern où j'y pite rien... j'ai beau essayer de comprendre mais ça veut pas rentrer ! 1
jojo Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 @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 ) 5
Lazer Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 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 1
Sakkhho Posté(e) le 11 novembre 2015 Signaler Posté(e) le 11 novembre 2015 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 :-)
clarkkent609 Posté(e) le 11 novembre 2015 Signaler Posté(e) le 11 novembre 2015 C'est vraiment du plug & play! Merci pour ce super module qui marche au poil et bon retour parmi nous Krikroff :-)
Lazer Posté(e) le 11 novembre 2015 Signaler Posté(e) le 11 novembre 2015 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
Messages recommandés