Sebbrunie1 Posté(e) le 5 février 2016 Signaler Posté(e) le 5 février 2016 Bonjour, Il existe des VD pour créer automatiquement des variables globales. Mais est il possible de supprimer des variables automatiquement? Si elles n'ont pas été mise à jour au bout d'1 mois par exemple et/ou si elle n'est lié à aucune scène ou module, le VD la supprime automatiquement. C'est vrai que j'ai des VD que j'ai supprimés car ils ne me servaient plus et j'ai des tas de variables qui ne sont plus utile mais je ne sais plus les quelles..... J'aimerai faire le ménage Merci Sébastien 3
mprinfo Posté(e) le 5 février 2016 Signaler Posté(e) le 5 février 2016 Oui c'est possible j'ai fais un topic mais je sais plus ou lol Envoyé de mon SM-G900F en utilisant Tapatalk 1
jojo Posté(e) le 5 février 2016 Signaler Posté(e) le 5 février 2016 avant d'automatiser la suppression, c'est bien dangereux, il faut bien réfléchir au process. J'ai des variables qui ne sont utilisée que TRES rârement (Noà«l, Vacances, ...) Faire un "where used" pour les variables, je ne pense pas que ce soit possible. Je pense que ce qui couterait le moins d'effort, et serait le plus efficace, serait de documenter cela (et de tenir la doc à jour), au moment de la création de la variable et de son utilisation dans un VD/Scène 1
Lazer Posté(e) le 5 février 2016 Signaler Posté(e) le 5 février 2016 Le "where used" serait faisable en lisant /api/devices et en faisant un gros string.match() pour retrouver le nom de la variable. Un peu bourrin, mais efficace.
Krikroff Posté(e) le 6 février 2016 Signaler Posté(e) le 6 février 2016 @Sebbrunie1, C'est vrai dommage qu'il manque un timestamp , tu peux toujours faire un ticket sur le bugtracker ... Petite astuce ou "Bonne pratique" que j'utilise pour les variables: L'ajout d'un préfixe au nom de la variable permet d'identifier facilement la destination de la dite variable...
Sebbrunie1 Posté(e) le 7 février 2016 Auteur Signaler Posté(e) le 7 février 2016 Bonjour, merci pour vos commentaires et conseils. Il suffirait juste avoir l'info et supprimer le variables si on le souhaite. La suppression n'est pas obligatoirement automatique. Bon je vois que c'est tout de même plus compliqué que cela en à l'air.... Le bugtracker, je sais pas mais j'ai une vague impression que je ne serais pas en haut de la liste des priorités .... Ca doit bien être tracé tout de même quelque part la date de dernière mise à jour non? Sébastien
Barelle Posté(e) le 7 février 2016 Signaler Posté(e) le 7 février 2016 Bonjour, Pour savoir où les variables globales sont utilisées, je vous propose la scène ci-après qui permet de lister, dans la fenêtre de debug, les variables globales et les endroits où elles sont utilisées : --[[ This scene is used to list all the global variables and where they are used. Its a kind of xref. --]] local globalVariables = api.get("/globalVariables"); -- Get all globals variables, local scenes = api.get("/scenes"); -- all the scenes local devices = api.get("/devices"); -- and all the devices local txt = '<BR><BR><font color="yellow">Globals Xref on : ' .. os.date("%d/%m/%y à %X") .. '</font><BR>'; for _, v in pairs(globalVariables) do -- For each global variable txt = txt .. '<BR><font color="Orange">' .. v.name .. ' :</font>'; local used = false; for _, s in pairs(scenes) do -- For each scene local scene = api.get("/scenes/" .. s.id); if scene.triggers.globals ~= nil then for _, g in pairs(scene.triggers.globals) do -- We look each trigger if (g ~= nil) and (g == v.name) then txt = txt .. '<BR><font color="lightgreen"> - trigger in scene "' .. s.name.. '"</font>'; used = true; end end end -- On inspecte le code lua if (scene.isLua ~= nil) and (scene.isLua == true) and (string.find(scene.lua, v.name) ~= nil) then txt = txt .. '<BR><font color="Chartreuse"> - used in scene "' .. s.name .. '"</font>'; used = true; end end -- for _, s in pairs(scenes) for _,device in pairs(devices) do -- On parcourt les devices if device.type == "virtual_device" then -- For others types there is no lua code if (device.properties.mainLoop ~= nil) and (string.find(device.properties.mainLoop, v.name) ~= nil) then txt = txt .. '<BR><font color="DeepSkyBlue"> - used in VD "' .. device.name .. '" mainloop</font>'; used = true; end local rows = device.properties.rows; for _, r in pairs(rows) do if (r ~= nil) and (r.elements ~= nil) then for _,e in pairs(r.elements) do if (e.lua ~= nil) and (e.lua == true) then if (e.msg ~= nil) and (string.find(e.msg, v.name) ~= nil) then txt = txt .. "<BR><font color='LightSkyBlue'> - used in " .. '"' .. e.name .. '" (id: ' .. e.id .. ') of "' .. device.name .. '" VD</font>'; used = true; end end end end end end end -- for _,d in pairs(devices) if not used then txt = txt .. "<font color='Magenta'> unused</font>"; end end fibaro:debug(txt); 9
Olinet Posté(e) le 7 février 2016 Signaler Posté(e) le 7 février 2016 Alors ça c'est un super outil ! Bravo et merci
Sebbrunie1 Posté(e) le 8 février 2016 Auteur Signaler Posté(e) le 8 février 2016 Bonjour, merci, c'est super. Ca me suffit. Il suffit de le faire tourner et d'aller supprimer la variable qui n'est pas utilisée. Dans mon cas, j'en ai 5, et hop, ma box est plus propre Merci beaucoup Sébastien
pepite Posté(e) le 8 février 2016 Signaler Posté(e) le 8 février 2016 Super idee, merci du partage pour le nettoyage ;-)
Did Posté(e) le 8 février 2016 Signaler Posté(e) le 8 février 2016 Merci @Barelle pour cet outil bien pratique. J'ai donc fait le ménage dans mes variables et il m'en reste une que ton code m'indique comme utilisée dans GEA mais je ne la voie pas dans mes lignes GEA, elle a effectivement été utilisée pour des tests mais ces lignes sont effacées depuis longtemps (pas dans l'entête non plus).
Barelle Posté(e) le 8 février 2016 Signaler Posté(e) le 8 février 2016 Et dans une ligne en commentaire ? Ce qui est sà»r, c'est que le nom de la variable fait partie des informations retournées par l'API.
jojo Posté(e) le 10 février 2016 Signaler Posté(e) le 10 février 2016 moi qui voulait attendre d'avoir épuisé tous mes topics pour le mettre dans mon todo. Je n'ai pas su résister. C'est grandiose, et en plus bien présenté avec de belles couleurs
mprinfo Posté(e) le 10 février 2016 Signaler Posté(e) le 10 février 2016 Super job cela mériterait un petit tuto Envoyé de mon SM-G900F en utilisant Tapatalk
Shyrka973 Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 Ce script m'interpelle. Je ne connaissais pas la fonction api.get. Vous, oui ? Cette ligne: local globalVariables = api.get("/globalVariables") est équivalente à : local HC2 = Net.FHttp(127.0.0.1, 11111) local response, status, errorCode = HC2:GET("/api/globalVariables") local globalVariables = json.decode(response)
Shyrka973 Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 La fonction api.get n'est pas disponible dans les VD.
Barelle Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 Souvent, découvrant leur nouveau joujou, les débutants (en lua) sont amenés à parcourir cet excellent forum à la recherche de la bonne syntaxe, ainsi, j'ai découvert la fonction api.get dans le tutoriel http://www.domotique-fibaro.fr/index.php/topic/4439-cr%C3%A9e-une-variable-globale-ou-une-variable-globale-predefinie-en-lua/ dans une réponse de mprinfo. De part sa concision, celle-ci a eu ma préférence. Maintenant, j'ignorais qu'elle n'est pas disponible dans les VD, encore une curiosité dont la logique m'échappe. @mprinfo, un tutoriel, pourquoi pas ? Mais je ne vois pas très bien quoi détailler, ce bout de code ne consiste qu'en l'analyse de la réponse de l'API, et pour un petit nouveau membre de moins de dix messages, publier un tutoriel serait quelque peu prétentieux... A tous, merci de vos aimables commentaires.
mprinfo Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 Un tuto ce n'est pas forcément une grande explication. C'est aussi pour mettre en avant un bout code bien pratique afin qu'il ne soit pas perdu dans un post au milieu d'un topic Envoyé de mon SM-G900F en utilisant Tapatalk
pepite Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 Exact, d'accord avec @mprinfo, le nombre de messages publiés n'a pas d'importance, ce petit bout de code est tres pratique et un tuto permet de retrouver très facilement sur le forum ;-)
mprinfo Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 @barelle la je crois que tu n'as plus le choix lol Envoyé de mon SM-G900F en utilisant Tapatalk
Barelle Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 Aà¯e, aà¯e aà¯e ! Bizutage ? Bon, si je trouve le temps, je m'y mets... 1
mprinfo Posté(e) le 11 février 2016 Signaler Posté(e) le 11 février 2016 Super Merci. Ils sont dur sur ce forum lol Doucement qu'en même sur les couleurs lol j'ai cru en regardant le résultat du code que j'étais sous Apple mdr Envoyé de mon SM-G900F en utilisant Tapatalk
Messages recommandés