e1000 Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 Bonjour, (Ce n'est pas spécifique à GEA, donc je ne poste pas dans le sujet "Support GEA", mais si un modo souhaite déplacer la discussion, pas de soucis) Dans GEA, j'utilise deux variables globales pour alimenter des conditions. Les variables : local SurveillanceDebut = fibaro:getGlobalValue("SurveillanceDebut") local SurveillanceFin = fibaro:getGlobalValue("SurveillanceFin") Et la condition : local siSurveillance = {"Time", SurveillanceDebut, SurveillanceFin} Ces variables ont été préalablement définies en lua : fibaro:setGlobal("SurveillanceDebut", "09:30") fibaro:setGlobal("SurveillanceFin", "18:00") Tout fonctionnait bien, puis depuis hier, des erreurs apparaissent dans le debug de GEA. Apparemment, l'erreur porte sur les conditions. En fait, je me suis aperçu que si je clique sur le bouton sauvegarder depuis le panel des variables globales, la chaine 09:00 devient 9 et 18:30 devient 18, ce qui fait planter la condition de GEA puisque le format n'est plus le bon. J'ai essayé de redéfinir les variables en ajoutant des simples quotes autour des doubles quotes, mais ça ne marche pas. Dans l'immédiat, ces variables ne sont utilisées que par GEA, donc je peux me passer de variables globales, mais évidemment l'idée est de les utiliser dans d'autres scripts... Avez-vous déjà constaté le même problème, et avez-vous une solution pour le contourner ? Merci e1000
pepite Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 Salut, Ce code de la creation de variable est dans ta scene GEA ou dans une autre ? Elles sont créées dans le panneau de variables ? Dans le debug tu recuperes quelle valeur de tes variables ?
e1000 Posté(e) le 23 septembre 2015 Auteur Signaler Posté(e) le 23 septembre 2015 Les variables ont été préalablement créées via le panneau des variables. Le "setGlobal" est au début du script GEA : je l'ai exécuté une fois pour définir les variables, puis j'avais mis les 2 lignes en commentaire (dans la mesure où tout était OK, je ne pensais pas qu'elles se modifieraient toutes seules...). J'envisage d'utiliser un VD pour les redéfinir, lorsque je veux changer les heures. Tant que je ne sauvegarde pas le panneau, tout est bon et le debug me donne : [DEBUG] 10:16:01: 09:30 [DEBUG] 10:16:01: 18:00 Mais dès que j'ai sauvegardé depuis le panneau, j'obtiens : [DEBUG] 10:16:38: 9 [DEBUG] 10:16:38: 18 Il faudrait que j'ajoute une tâche pour forcer régulièrement la réécriture des variables globales, mais on tourne en rond : l'objectif est de les lire, pas de les écrire... Ce n'est pas critique, et à terme je vais activer la surveillance automatique dès que la maison est vide, quelle que soit l'heure. Mais en attendant, j'aimerais régler ça ^^
pepite Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 OK, Dans GEA, tu peux definir tes VG comme cela dans les options : {"Global", "SurveillanceDebut", "09:30"} Dans GEA, tu peux, si tu veux utiliser du code LUA..utiliser dans les options {"Function",...end} Cela vient peut-etre de là , Cree ton VD pour tester et mets ton setGlobal....dans un bouton pour définir les variables attention tu melanges les codes "lua fibaro" et lua "GEA .. ;-) Pour définir une condition dans GEA : ensuite effectivement, GEA va faire un getGlobalValue ;-) local SurveillanceDebut = {"Global", "SurveillanceDebut", "09:30"}
e1000 Posté(e) le 23 septembre 2015 Auteur Signaler Posté(e) le 23 septembre 2015 Merci, mais justement, je veux éviter de définir les variables depuis GEA, seulement les lire. Si je les définis depuis un VD ou un autre script, j'ai toujours le même problème : la sauvegarde depuis le panneau semble remplacer la chaine de caractères par une valeur numérique. De fait, le problème ne vient pas de GEA, mais du panneau des variables. La chaine {"Global", "SurveillanceDebut", "09:30"} sera bien :
e1000 Posté(e) le 23 septembre 2015 Auteur Signaler Posté(e) le 23 septembre 2015 Merci, mais justement, je veux éviter de définir les variables depuis GEA, seulement les lire. Si je les définis depuis un VD ou un autre script, j'ai toujours le même problème : la sauvegarde depuis le panneau semble remplacer la chaine de caractères par une valeur numérique. De fait, le problème ne vient pas de GEA, mais du panneau des variables. La chaine {"Global", "SurveillanceDebut", "09:30"} sera bien :
pepite Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 essaie avec un tostring ou tonumber des gros doutes sur la syntaxe ;-), eput-etre qu'un pro LUA va passer ;-) tostring(fibaro:setGlobal("SurveillanceDebut", "09:30")) tonumber(fibaro:setGlobal("SurveillanceDebut", "09:30")) manque la fin de ton post ;-)
e1000 Posté(e) le 23 septembre 2015 Auteur Signaler Posté(e) le 23 septembre 2015 Pardon, petit bug, je faisais des tests en parallèle. Je recommence donc ^^ Merci mais justement, je ne veux pas les définir dans GEA, uniquement les lire. De fait, le problème semble venir du panneau des variables qui remplace apparemment la chaine de caractère par une valeur numérique (string to integer ?) Tu as raison pour le mélange entre le code fibaro et GEA, mais il n'y a pas de commande GEA pour simplement lire une VG, si ? De ce que j'ai compris, on a : des déclencheurs : {"Global", "SurveillanceDebut"} : si SurveillanceDebut a changé, on démarre la tâche des conditions : {"Global", "SurveillanceDebut", "09:30"} : teste si SurveillanceDebut == "09:30" des actions : {"Global", "SurveillanceDebut", "09:30"} écrit "09:30" dans SurveillanceDebut si c'est mis dans les options Par exemple ça, ça ne marche pas : local siSurveillance = {"Time", {"Global", "SurveillanceDebut"}, {"Global", "SurveillanceFin"}} (déjà testé au cas où ^^) Je pense que je vais laisser un ticket sur bugzilla. J'ai l'impression que si une chaine de caractères commence par un nombre, seul le nombre est conservé. Petit test rapide : fibaro:setGlobal("SurveillanceDebut", "8gggg") fibaro:setGlobal("SurveillanceFin", "9996fff") fibaro:debug(fibaro:getGlobalValue("SurveillanceDebut")); fibaro:debug(fibaro:getGlobalValue("SurveillanceFin")); [DEBUG] 11:24:28: 8gggg [DEBUG] 11:24:28: 9996fff Je vais dans le panneau des variables, c'est OK. J'enregistre, et il ne reste que les chiffres : --fibaro:setGlobal("SurveillanceDebut", "8gggg") --fibaro:setGlobal("SurveillanceFin", "9996fff") fibaro:debug(fibaro:getGlobalValue("SurveillanceDebut")); fibaro:debug(fibaro:getGlobalValue("SurveillanceFin")); [DEBUG] 11:29:07: 8 [DEBUG] 11:29:07: 9996 1
e1000 Posté(e) le 23 septembre 2015 Auteur Signaler Posté(e) le 23 septembre 2015 Ticket déposé : http://bugzilla.fibaro.com/view.php?id=3554
pepite Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 ah oui ok ;-) bien vu le ticket, c'est pe un bug connu je n'avais jamais eu, un expert peut peut-etre nous eclairé ;-) Sinon pour jouer avec les valeurs de Variables globales avec GEA : 1- Pour les declencheurs, tu mets le nom de ta variable globale dans l'entete sous %globals 2 et 3 : exact ;-) Pour récupérer la valeur d'une VG avec GEA GEA.add({"Global", "Message", ""}, 1, "#value#", {{"Inverse"}}) c'est - a-dire, si la VG n'est pas vide, ...GEA stocke la valeur Après tu peux jouer avec Global!, valeur different de... Pour ton exemple que tu as testé, cette syntaxe n'aurait pas marché ;-) J'aurais pe testé comme cela dans GEA local SurveillanceDebut = {"Function", function() fibaro:getGlobalValue("SurveillanceDebut") end } local SurveillanceFin = {"Function", function() fibaro:getGlobalValue("SurveillanceFin") end } local siSurveillance = {"Time", SurveillanceDebut, SurveillanceFin} A teste, jamais eu l'occasion ;-)
e1000 Posté(e) le 23 septembre 2015 Auteur Signaler Posté(e) le 23 septembre 2015 GEA.add({"Global", "Message", ""}, 1, "#value#", {{"Inverse"}}) c'est - a-dire, si la VG n'est pas vide, ...GEA stocke la valeur Il la stocke où ? Dans #value# ? Mais comment on l'utilise ensuite, parce que ça, ça permet uniquement de l'envoyer en push, non ? J'aurais pe testé comme cela dans GEA local SurveillanceDebut = {"Function", function() fibaro:getGlobalValue("SurveillanceDebut") end } local SurveillanceFin = {"Function", function() fibaro:getGlobalValue("SurveillanceFin") end } local siSurveillance = {"Time", SurveillanceDebut, SurveillanceFin} A teste, jamais eu l'occasion ;-) à‡a retourne une table : [DEBUG] 16:08:44: table: 0x8e279c8 [ERROR] 16:08:06: line 130: attempt to concatenate local 'SurveillanceDebut' (a table value)
pepite Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 Comme ca par exemple !! GEA.add({"Global", "variable",""}, 30, "valeur d'id_module : #value#", {{"Inverse"},{"Value", "id", "#value#"}}) Ah ca fonctionne pas terrible le code que je t'ai donne ;-)
Lazer Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 Le bug du panneau de variable est connu depuis toujours. Il faut te faire un VD ou une scène pour modifier les variables, et ne jamais modifier en direct les variables via le panneau.
e1000 Posté(e) le 23 septembre 2015 Auteur Signaler Posté(e) le 23 septembre 2015 Ah ben c'est pourtant pas faute d'avoir cherché (ici et sur bugzilla). J'ai sans doute pas utilisé les bons mots-clefs. Cela dit, c'est un bug trivial qui ne me semble pas insurmontable àfixer. Je suppose qu'ils ont d'autres chats àfouetter chez Fibaro...
Lazer Posté(e) le 23 septembre 2015 Signaler Posté(e) le 23 septembre 2015 Sur le bugtracker, je ne sais pas, mais on en parlait beaucoup ici du temps de la v3, donc ça remonte àl'année dernière. J'ai souvenir que de modifier le panneau de variable cassait tous les VD de Krikroff car il était le premier àstocker des valeurs non conventionnelles dans ses variables.
Messages recommandés