sebcbien Posté(e) le 14 avril 2015 Signaler Partager Posté(e) le 14 avril 2015 dites, ch'tite question: Si j'utilise le scripts 3.6, quand je passerai en V4, le script 4 va générer les mêmes id's ? Sur-sur certain-certain ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 15 avril 2015 Signaler Partager Posté(e) le 15 avril 2015 heuuu je dirais pas sur sur ;-)..etant donne qu'en changeant de firmware, on court le risque de changer d'IDs, d'ou l'interet d'utiliser le generateur après mise àjour ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 15 avril 2015 Signaler Partager Posté(e) le 15 avril 2015 oui sorry, je voulais dire les noms des id's :-/ comme je vois que la génération parfois ne colle pas trop au nom d'origine de l'id Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 23 mai 2015 Signaler Partager Posté(e) le 23 mai 2015 depuis ma migration en V4, j'ai voulu relancer le script pour vérifier, et il ne me retourne rien du coup j'ai mis des debug un peu partout pour voir jusqu'où il allait, et en fait, il va jusqu'au bout, sauf qu'il ne veut pas afficher le résultat : fibaro:debug(result) la variable result a chez moi une longueur de 4017 caractères. Aurait-on atteint la limite des possibilités du fibaro:debug ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 23 mai 2015 Auteur Signaler Partager Posté(e) le 23 mai 2015 Possible. A la ligne 77 supprime les espaces avant et après le = pour gagner quelques caractères. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 23 mai 2015 Signaler Partager Posté(e) le 23 mai 2015 @Steven, Je viens de faire une analyse un peu plus approfondie, en remplaçant reseult = par fibaro:debug( Donc j'affiche mes lignes de débug au fur et à mesure, mais c'est inutilisable, car il y a l'heure, ... Mais cela m'a permis de voir qu'il listait également tous les devices qui étaient cochés comme invisibles (dont tous les main zwave controler). Donc dans la fonction d'exclusion, il faudrait également supprimer les devices pour lesquels visible = false, et le tour est joué. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 23 mai 2015 Signaler Partager Posté(e) le 23 mai 2015 A la ligne 77 supprime les espaces avant et après le = pour gagner quelques caractères. Sorry, je ne comprends pas. Comment vais-je réduire la taille de la variable result si je modifie ça result = result .. "<BR>--"..rooms[v.roomID].."<BR>" en ça ? result=result .. "<BR>--"..rooms[v.roomID].."<BR>" Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 23 mai 2015 Signaler Partager Posté(e) le 23 mai 2015 comme je suis impatient, j'ai fait le test en supprimant les devices invisibles for k, v in pairs(devicesJSon) do local doit = (dead or not v.dead) -- exclure les device invisibles if v.visible == false then doit = false end if (doit) then et j'ai réduit result à2897 caractères, mais c'est encore de trop. Je continuerai àchercher demain Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 23 mai 2015 Signaler Partager Posté(e) le 23 mai 2015 comme on était déjà demain , j'ai regardé, et il ne m'affiche plus rien de trop. Je pense donc qu'en plus, on devra faire un test sur la longueur de la variable result, et dès qu'elle atteint 2000 car, l'imprimer et recommencer. Mais maintenant je dois aller dormir Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 24 mai 2015 Signaler Partager Posté(e) le 24 mai 2015 @jojo voila comment je fais (merci steven) c'est moi complet que le script de steven mais c'est plus léger local TousLesModules = api.get("/devices?") -- Création de la table qui va permettre de retrouver l'id fibaro:debug("Nombres de modules : " ..#TousLesModules) ---------------------------------------------------------------------------------------------- -- Fonction qui permet de récuperer l'id par le nom du module ---------------------------------------------------------------------------------------------- function ID(NomModule) for i,v in ipairs(TousLesModules) do if TousLesModules[i].visible == true then if NomModule == TousLesModules[i].name then return (tonumber(TousLesModules[i].id)) end end end end -------------------------------------------------------------------------------------------- -- Debut du programme -------------------------------------------------------------------------------------------- local id = ID("Volet Bureau") fibaro:debug("l'id est "..id) @Steven peux tu m'aider car cela ne fonctionne pas avec tout les parametres -- cela fonctionne local TousLesModules = api.get("/devices?") --ou local TousLesModules = api.get("/devices?type=com.fibaro.FGRM222") --ou local TousLesModules = api.get("/devices?roomID=8") -- cela ne fonctionne pas local TousLesModules = api.get("/devices?visible=true") Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 1 juin 2015 Signaler Partager Posté(e) le 1 juin 2015 je viens de voir pourquoi j'avais le problème. Dans le VD, la longueur de la variable qui est affichée en DEBUG est limitée. Dans une scène il n'y a pas de limite. Et Steven a proposé une scène. Mais moi j'avais pris la version pour 3.6 (j'étais en 3.6 àl'époque) qui est une version VD. Et donc en v4.x, comme il y a beaucoup plus d'id, cela explosait. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 20 septembre 2015 Signaler Partager Posté(e) le 20 septembre 2015 Steven, J'abuse de ton script. Mais j'ai beaucoup de devices et pièces. Ta scène trie les pièce par ID. J'ai essayé de la modifier pour rajouter la notion de section, pour trier donc par section, puis pièce, puis devices (de préférence sur le nom et pas sur l'id). Mais j'y arrive pas, je n'arrive pas à faire du rétro-engineering de ton code. Si tu passes par là , je suis sà»r que tu peux proposer cela en 30 min. Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 20 septembre 2015 Signaler Partager Posté(e) le 20 septembre 2015 Rhooooo c abuser Jojo ;-) Sent from my SM-N910F using Tapatalk 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 24 septembre 2015 Auteur Signaler Partager Posté(e) le 24 septembre 2015 Voilà . Je te joint le fichier mais voici un aperçu du résultat (c'est donc trié par nom de section puis par nom de pièce) : Je te laisse modifier le script à ton aise. Je l'ai volontairement fait de manière tordu mais cela est uniquement à des fins pédagogiques. (un objet "generateur" qui contient des propriétés et des fonctions qui s'appellent l'une l'autre, qui pour finir va remplir un tableau de "devices" qui contient toutes les propriétés d'un device + la nom de la pièce "roomname" et de la section "sectionname"). Que du bonheur à lire (je plaisante). J'ai laissé la possibilité de ne pas utiliser les sections "useSections = false" au cas ou cela ne fonctionnerait pas bien. Amicalement -- IDs générés le : 24/09/15 à 17:57:43 local id = { -- SECTION : Autre -- ROOM : Divers AGENDA = 178, JOURS_CHEOME = 110, CLOCK_SYNC = 252, PING = 397, MY_BATTERIES = 130, VARIABLES_GLOBALES = 288, GEA_ALARM = 279, X400CT_____AN6 = 284, X400CT_____AN5 = 283, NOTIFICATION_CENTER = 290, EVENEMENTS = 173, UPDATE_NOTIFIER_1_0_6 = 206, IMPERIHOME = 208, X400CT_____AN7 = 285, ANDROID_FILES = 162, VACANCES_SCOLAIRES = 151, -- SECTION : Etage -- ROOM : Chambres FENETRE_NOLAN = 149, FENETRE_NORA = 143, TEMPERATURE = 147, PLAFONNIER_NOLAN = 21, PLAFONNIER_KENDRA = 23, PLAFONNIER_NORA = 18, FENETRE_KENDRA = 145, -- ROOM : Couloir SPOTS = 230, PORTE_TERRASSE = 153, DETECTEUR_DEFECT = 5, HUMIDITE = 365, TEMPERATURE_COULOIR = 364, LEDS_ESCALIER = 27, APLIQUE_ESCALIER = 25, LUMINOSITE_DEFECT = 7, TEMPERATURE_DEFECT = 6, -- SECTION : Extérieur -- ROOM : Garage SURPRESSEUR = 118, PORTE_GARAGE = 64, CAMERA = 403, HUMIDITE_GARAGE = 400, PORTE_GARAGE_GARAGE = 238, TEMPERATURE_GARAGE = 399, -- ROOM : Jardin TEMPERATURE_JARDIN = 69, METEOALERTE___74 = 406, COIN_REPAS = 14, LUMINOSITE = 70, ARROSAGE = 158, DETECTEUR = 68, TERRASSE = 160, PLUIE = 139, SEISMOMETRE = 71, LAMPE_OUEST = 234, -- SECTION : Rez-de-chaussé -- ROOM : Chambre parentale SECHE_SERVIETTE = 60, -- ROOM : Cuisine CAPTEUR_FUMEE = 46, TEMPERATURE_CUISINE = 47, SIRENE = 200, FRIGO = 52, BRITA__FILTRE_ = 131, ALARME_FUMEE = 48, LAVE_VAISSELLE = 50, CUISINE = 237, -- ROOM : Entrée DETECTEUR_ENTREE = 414, LUMINOSITE_ENTREE = 416, PLAFONNIER = 10, CAMERA_ENTREE = 129, PORTE_ENTREE = 58, TEMPERATURE_ENTREE = 415, -- ROOM : Local Technique IPX800_RELAIS = 106, WAKE_SYNO = 404, PLAFONNIER_LOCAL_TECHNIQUE = 54, PORTE_LOCAL = 56, PASSERELLE_ZIBASE = 126, LAVE_LINGE = 120, VMC_DOUBLE_FLUX = 114, -- ROOM : Salon WI = 40, PRISE_LIBRE = 41, KAROTZ = 134, HIFI = 42, TV = 39, OCTAN = 412, ROMBA = 43, FREBOX_TV = 307, HUMIDITE_SALON = 360, PLAFONNIER_SALON = 282, LUMIERE_SALON = 107, FRE_PLAYER = 44, BRISE_SOLEIL = 105, OPENKAROTZ = 133, TEMPERATURE_SALON = 359, CHAUFFAGE = 104, -- SECTION : inconnu -- ROOM : inconnu SEISMOMETRE_DEFECT = 8, LUA_SNIPPETS = 141, } -- usage : -- fibaro:getValue(id["LUA_SNIPPETS"], "value") -- GEA.add(id["LUA_SNIPPETS"], 30, "") GEA_ID.lua 3 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 24 septembre 2015 Signaler Partager Posté(e) le 24 septembre 2015 MERCI, c'est exactement ce que je voulais avoir 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 27 septembre 2015 Signaler Partager Posté(e) le 27 septembre 2015 Adopté ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 27 septembre 2015 Signaler Partager Posté(e) le 27 septembre 2015 @Steven, Voici ce que j'ai dans mon debug du GEA lorsque j'utilise la v2 du générateur d'id. Avec la G1 (donc les même modules,) mon GEA fonctionne parfaitement. [DEBUG] 19:52:27: [ 158 | Alarme_Activee ] Add Autostart : ajout de la tache pour 1 secondes (ID:86) [Inverse] [StopTask,66] [DEBUG] 19:52:27: [ 158 | Alarme_Activee ] Add Autostart : ajout de la tache pour 1 secondes (ID:87) [Inverse] [StopTask,69] [DEBUG] 19:52:28: [ 158 | Alarme_Activee ] Add Autostart : ajout de la tache pour 1 secondes (ID:88) [SetDisarmed,643] [DEBUG] 19:52:28: [1;31m2015-09-27 19:52:28.020126 [ fatal] Runtime error: /opt/fibaro/scenes/615.lua:815: bad argument #1 to 'lower' (string expected, got nil)[0m @Sakkhho, L'as-tu déjàintégré dans GEA ? Sans erreur àla fin du débug ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 27 septembre 2015 Signaler Partager Posté(e) le 27 septembre 2015 Oui et pas d erreur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 27 septembre 2015 Signaler Partager Posté(e) le 27 septembre 2015 "zut" alors, ,je ne comprends vraiment pas, car j'ai régénéré les ID (donc exactement les mêmes) avec l'anciene version du générateur, et ça fonctionne. Ca va être dur à trouver Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 28 septembre 2015 Auteur Signaler Partager Posté(e) le 28 septembre 2015 Arrives-tu me transmettre le résultat du générateur v2 stp ... par pm si possible. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Evilsky Posté(e) le 17 janvier 2016 Signaler Partager Posté(e) le 17 janvier 2016 Bonjour, J'ai juste un petit problème, je n'arrive pas à faire un "copier" dans la fenêtre debug pour "coller" le résultat dans le GEA. Des conseils ?? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 19 janvier 2016 Signaler Partager Posté(e) le 19 janvier 2016 j'ai également des difficultés. La sélection n'est pas top. Il faut aller vite, dès que tu crois que c'est bon, ctrl+C. Ensuite ctrl+V dans notepad pour vérifier Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 20 mai 2016 Signaler Partager Posté(e) le 20 mai 2016 Steven, Puis-je encore abuser ... Dans la dernière version de ton script, tu as fait un tri par section, puis par pièce. Serait-il possible de rajouter, pour chaque pièce, un tri sur le nom du device ? Cela me serait vraiment très utile, car mon GEA devient tellement gros... Merci P.S. n'oublie pas qu'il ne faut rien changer d'autre, car nous avions eu des problème avec notre GEA. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 6 juin 2016 Auteur Signaler Partager Posté(e) le 6 juin 2016 Oups, non pas vu, désolé. Peux tu m'envoyer ton scripts car j'ai peur que le mien ne soit plus àjour (backup, restore, backup, restore, ...). Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 6 juin 2016 Signaler Partager Posté(e) le 6 juin 2016 Merci Steven. Voici ton code : local hidden = false --- true pour exporter les devices cachés local dead = false -- true pour exporter les devices morts local useSections = true local excludeType = {"com.fibaro.zwaveDevice", "weather", "HC_user", "iOS_device", "com.fibaro.voipUser"} local excludeID = {} local generateur = { devices = {}, names = {}, rooms = {}, sections = {}, devicesJSon = api.get("/devices"), roomsJSon = api.get("/rooms"), sectionsJSon = api.get("/sections"), -- Retourne la section souhaitée getSection = function(self, id) if (not useSections) then return "" end if (#self.sections == 0) then for k, v in ipairs(self.sectionsJSon) do self.sections[v.id] = v.name end end id = tonumber(id) if (type(self.sections[id]) == "nil") then return "inconnu" else return self.sections[id] end end, -- Retourne la pièce souhaitée getRoom = function(self, id) if (#self.rooms == 0) then for k, v in ipairs(self.roomsJSon) do self.rooms[v.id] = {} self.rooms[v.id].name = v.name self.rooms[v.id].sectionId = v.sectionID self.rooms[v.id].sectionName = self:getSection(v.sectionID) end end id = tonumber(id) if (type(self.rooms[id]) == "nil") then return "inconnu", "inconnu", 0 else return self.rooms[id].name, self.rooms[id].sectionName, self.rooms[id].sectionId end end, -- Retourne un nom unique addName = function(self, name, roomname) if (type(self.names[name]) == "nil") then self.names[name] = true return name else return self:addName(name.."_"..roomname, roomname) end end, -- Supprime les caractères indésirables et rend le nom unique rename = function(self, name, roomname) local name = name:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_") local roomname = roomname:upper():gsub("[éêèë]", "E"):gsub("EE", "E"):gsub("[ûüù]", "U"):gsub("UU", "U"):gsub("[àâä]", "A"):gsub("AA", "A"):gsub("[öô]", "O"):gsub("OO", "O"):gsub("[îï]", "I"):gsub("II", "I"):gsub("%W", "_") return self:addName(name, roomname) end, proceed = function(self) for k, v in pairs(self.devicesJSon) do local doit = (hidden or v.visible) and (dead or not v.dead) if (doit) then for h, w in pairs(excludeType) do if (v.type == w) then doit = false end end if (doit) then for h, w in pairs(excludeID) do if (v.id == w) then doit = false end end end end if (doit) then v.roomname, v.sectionname, v.sectionID = self:getRoom(v.roomID) table.insert(self.devices, v) end end table.sort(self.devices, function(a, if (not useSections) then return a.roomID < b.roomID else return a.sectionname..a.roomname < b.sectionname..b.roomname end end) return self.devices; end } local result = "<BR><BR>-- IDs générés le : " .. os.date("%d/%m/%y à%X") local room = "" local section = "" local lastinfo = "" result = result .. "<BR><BR>local id = {" local devices = generateur:proceed() for k, v in ipairs(devices) do if (section ~= v.sectionname and useSections) then section = v.sectionname result = result .. "<BR><BR>-- SECTION : "..v.sectionname end if (room ~= v.roomname) then room = v.roomname if (not useSections) then result = result .. "<BR>" end result = result .. "<BR>-- ROOM : "..v.roomname.."<BR>" end lastinfo = generateur:rename(v.name, v.roomname) result = result .. lastinfo .. " = " .. v.id .. ", " end result = result .. "<BR>}" result = result .. "<BR>" result = result .. "<BR>-- usage :" result = result .. "<BR>-- fibaro:getValue(id[\""..lastinfo .."\"], \"value\")" result = result .. "<BR>-- GEA.add(id[\""..lastinfo .."\"], 30, \"\")" print(result) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés