Steven Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 Compatible uniquement 4.x (pour la 3.60 ... c'est ICI ... merci DMK2424) L'idée est de générer automatiquement le tableau d'ID utilisé dans GEA ou autres scripts. Ainsi, il sera possibile à chaque mise à jour de votre HC2, de simplement relancer le générateur, copier le résultat dans GEA et vos ID seront donc remis à jour. Voici le tableau dont je parle : local id = { --inconnu LUA_SNIPPETS = 141, --Garage OREGON = 128, SURPRESSEUR = 118, CAMERA = 123, PORTE_GARAGE = 238, DETECTEUR_PORTE = 112, PORTE_GARAGE_GARAGE = 64, --Jardin TEMPERATURE = 69, SEISMOMETRE = 71, HUMIDITE = 261, DETECTEUR = 68, NETATMO = 137, PLUVIOMETRE = 262, LUMINOSITE = 70, LAMPE_OUEST = 234, PLUIE = 139, COIN_REPAS = 14, PRESSION_ATMOSPHERIQ = 258, TERRASSE = 160, METEOALERTE = 150, ARROSAGE = 158, NETATMO_EXTERIEUR = 260, --Local Technique LIVEBOX = 251, IPX800_RELAIS = 106, PORTE_LOCAL = 56, VMC_DOUBLE_FLUX = 114, LAVE_LINGE = 120, PLAFONNIER = 54, PASSERELLE_NETATMO = 135, PASSERELLE_ZIBASE = 126, --Entrée CAMERA_ENTREE = 129, DETECTEUR_ENTREE = 5, LUMINOSITE_ENTREE = 7, SEISMOMETRE_ENTREE = 8, PLAFONNIER_ENTREE = 10, PORTE_ENTREE = 58, TEMPERATURE_ENTREE = 6, --Cuisine SIRENE = 200, BRITA__FILTRE_ = 131, CUISINE = 237, CAPTEUR_FUMEE = 46, ALARME_FUMEE = 48, FRIGO = 52, TEMPERATURE_CUISINE = 47, LAVE_VAISSELLE = 50, TABLETTE = 176, --Chambre parentale SECHE_SERVIETTE = 60, --Salon CHAUFFAGE = 104, HUMIDITE_SALON = 257, CO2 = 256, NETATMO_SALON = 255, SONOMETRE = 259, POELE = 34, OREGON_SALON = 127, TV = 39, HIFI = 42, BLUE_RAY = 41, OPENKAROTZ = 133, ROMBA = 43, LUMIERE_SALON = 107, PRISE_LIBRE = 44, BRISE_SOLEIL = 105, WI = 40, KAROTZ = 134, NETATMO_SALON_SALON = 136, --Chambres PLAFONNIER_KENDRA = 23, PLAFONNIER_NORA = 18, TEMPERATURE_CHAMBRES = 147, FENETRE_NORA = 143, FENETRE_KENDRA = 145, OREGON_CHAMBRES = 138, FENETRE_NOLAN = 149, PLAFONNIER_NOLAN = 21, --Couloir PORTE_TERRASSE = 153, APLIQUE_ESCALIER = 25, TEMPERATURE_AU_SOL = 155, SPOTS = 230, LEDS_ESCALIER = 27, --Divers ANDROID_FILES = 162, IMPERIHOME = 208, TYPE_DE_JOURNEE = 110, EVENEMENTS = 173, NETATMO_DIVERS = 253, CLOCK_SYNC = 252, UPDATE_NOTIFIER_1_0_6 = 206, AGENDA = 178, MY_BATTERIES = 130, VACANCES_SCOLAIRES = 151, } Ce générateur ce base sur les noms des modules et des pièces que vous avez déclarer. Il va donc parcourir tous vos modules, prendre leur nom et le transformer (majuscule, suppression caractères spéciaux, ...). Si le nom existe deux fois, il va le suffixer du nom de la pièces (ex : DETECTEUR_GARAGE). Donc, si comme moi, vous ne changer pas régulièrement le nom de vos modules, ce générateur va vous permettre de gagner quelques précieuses minutes. Usage ... simple, copier le code ci-dessous et lancer le script avec le bouton "start". Une fois le script terminé, il va vous affiché le tableau dans la fenêtre de debug, il ne vous suffira plus que de le copier dans vos scripts. Il est possible de spécifier les ID ou type de module que vous ne voulez pas prendre en compte. Vous pouvez aussi préciser si vous souhaiter prendre en compte les modules caché ou mort. Voici donc le script dans sa globalité : --[[ %% properties %% globals --]] local hidden = false --- true pour exporter les devices cachés local dead = false -- true pour exporter les devices morts local excludeType = {"com.fibaro.zwaveDevice", "weather", "HC_user", "iOS_device", "com.fibaro.voipUser"} local excludeID = {} local devicesJSon = api.get("/devices") local devices = {} local names = {} local rooms = {} function addName(name, roomname) if (type(names[name]) == "nil") then names[name] = true return name else return addName(name.."_"..roomname, roomname) end end function getRooms() local roomsJSon = api.get("/rooms") rooms[0] = "inconnu" for k, v in ipairs(roomsJSon) do rooms[v.id] = v.name end end function rename(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 addName(name, roomname) end getRooms() for k, v in pairs(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 table.insert(devices, v) end end table.sort(devices, function(a, return a.roomID<b.roomID end) local result = "<BR><BR>-- IDs générés le : " .. os.date("%d/%m/%y à %X") local room = -1 local lastinfo = ""; result = result .. "<BR><BR>local id = {" for k, v in ipairs(devices) do if (room ~= v.roomID) then room = v.roomID result = result .. "<BR>--"..rooms[v.roomID].."<BR>" end lastinfo = rename(v.name, rooms[v.roomID]) 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) Il ne vous restera plus qu'à utiliser les ID ainsi fibaro:getValue(id["DETECTEUR_GARAGE"], "value") GEA.add(id["DETECTEUR_GARAGE"], -1, "La porte du garage est entrain de s'ouvrir") ATTENTION : Les déclencheurs doivent et devront toujours être changé par vos soins ATTENTION 2 : Si vous ne comprenez pas l'usage de ce script, c'est sà»rement parce que vous n'en avez pas l'utilité Icone by @Did (Merci) 7
Invité chris6783 Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 merci, ne manque plus que la notion de librairie de fonctions.... mais la c a fibaro de bouger
yassinex Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 Cool, super Steven c'est du propre c'est super utile avec la migration V4 et les recréations des ID.
Berale64 Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 Merci. Non seulement c'est très pratique, mais en plus on apprend plein de choses en LUA !
chamaster Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 +1 très bien ! Peut on coller dans une variable globale et réutiliser dans TOUS les scripts ? Merci
maestrea Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 Salut Steven, J'ai des problemes: [ERROR] 21:55:05: line 12: attempt to index global 'api' (a nil value) ??? Merci.
Krikroff Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 J'imagine que le script dois bien servir à quelque chose mais comme j'y comprends rien de rien et puis c'est toujours tiré par les cheveux . Du grand Steven quoi !
Diuck Posté(e) le 26 janvier 2015 Signaler Posté(e) le 26 janvier 2015 @Krikrof ATTENTION 2 : Si vous ne comprenez pas , c'est sà»rement parce que vous n'en avez pas l'utilité
Krikroff Posté(e) le 27 janvier 2015 Signaler Posté(e) le 27 janvier 2015 @Diuck, j'avais bien pris note de cette mise en garde avant d’écrire ... Justement
jojo Posté(e) le 27 janvier 2015 Signaler Posté(e) le 27 janvier 2015 J'allais justement poser la question s'il ne serait pas possible de généer les ID automatiquement. Merci d'avoir devancé ma question. P.S. idée : ne pourrait-on pas avoir la même chose pour les autres types d'ID ? (Scènes, linked devices, heating pannel, VD, icones (mais nom ?), ...) C'est plus facile à exploiter que le toolkit de Krikroff . Je pense alors à un gros VD avec différents boutons, un par type d'ID
Steven Posté(e) le 27 janvier 2015 Auteur Signaler Posté(e) le 27 janvier 2015 Salut Steven, J'ai des problemes: [ERROR] 21:55:05: line 12: attempt to index global 'api' (a nil value) ??? Merci. Quel est la version de ton firmware stp ? J'imagine que le script dois bien servir à quelque chose mais comme j'y comprends rien de rien et puis c'est toujours tiré par les cheveux . Du grand Steven quoi ! Ben quoi ... pk tu compend pa, tu me dé soit J'allais justement poser la question s'il ne serait pas possible de généer les ID automatiquement. Merci d'avoir devancé ma question. P.S. idée : ne pourrait-on pas avoir la même chose pour les autres types d'ID ? (Scènes, linked devices, heating pannel, VD, icones (mais nom ?), ...) C'est plus facile à exploiter que le toolkit de Krikroff . Je pense alors à un gros VD avec différents boutons, un par type d'ID Tout est possible avec du temps, de la patience, de la bonne volonté mais je ne le ferais pas ... juste parce que tu as dis que cela serait plus pratique que le Toolkit de Krikroff ... nah nah nah nah nah nah nah
pepite Posté(e) le 27 janvier 2015 Signaler Posté(e) le 27 janvier 2015 (modifié) @Steven, EXCELLENTISSIME, merci, il suffit qu'on en parle dans un message precedemment et hop, merciiii beauoup @jojo, Le toolkit de Krikroff, tu trouves tout ce dont tu as besoin ;-) Heu question pour etre sur d'avoir bien compris. Après avoir passé le générateur d'id, dans GEA, l'usage sera de mettre : fibaro:getValue(id["DETECTEUR_GARAGE"], "value") avant chaque appelle GEA de type ? GEA.add(id["DETECTEUR_GARAGE"] Ai-je bien compris ? en fait je crois que je me reponds tout seul, pas bien révéillé le garcon hihihi : pour récuperer la valeur de l'ID en LUA dans une scene ou VD fibaro:getValue(id["DETECTEUR_GARAGE"], "value") et dans GEA : comme d'hab, pas de changement en fait hihi GEA.add(id["DETECTEUR_GARAGE"] J'ai bon ou je plane ce matin ? Modifié le 27 janvier 2015 par pepite
jojo Posté(e) le 27 janvier 2015 Signaler Posté(e) le 27 janvier 2015 Pour moi, le toolkit de Krikroff est génial, mais a une autre utilité. Ici je reste dans le même environnement, et un ctrl+C/Ctrl/v et l'affaire est dans le sac. Pour ce qui est de la bonne volonté, je n'en doutais pas de ta part
Steven Posté(e) le 27 janvier 2015 Auteur Signaler Posté(e) le 27 janvier 2015 Ok, ok, je ferais une adaptation. Vu qu'on parle du Toolkit et que Krikroff lit sà»rement ce topic (ne serais-ce que pour me taquiner). Je tiens à dire que lorsque ma HC2 a planté ... c'est les backups effectués via le toolkit qui mon sauvé plus de 3 mois de travail. Alors ne minimisons surtout pas ce merveilleux outil. C'est vrai qu'il est développé par un personnage peu fréquentable et qu'on veux surtout pas voir le code ... mais bon, il est super utile.
Steven Posté(e) le 27 janvier 2015 Auteur Signaler Posté(e) le 27 janvier 2015 +1 très bien ! Peut on coller dans une variable globale et réutiliser dans TOUS les scripts ? Merci Les variables globales sont limitées en nombre de caractères ce qui posera un problème
pepite Posté(e) le 27 janvier 2015 Signaler Posté(e) le 27 janvier 2015 Tiens, c'est vrai qu il faudrait que je fasse les sauvegardes par le toolkit ;-) ah non, pas de minimisation ;-).
maestrea Posté(e) le 27 janvier 2015 Signaler Posté(e) le 27 janvier 2015 Bonjour Steven, La version de firmware: 3.60 Merci.
Diuck Posté(e) le 27 janvier 2015 Signaler Posté(e) le 27 janvier 2015 @Diuck, j'avais bien pris note de cette mise en garde avant d’écrire ... Justement C'est pour Krikroff !! je me doute que tu as vu les notes de Steven
jojo Posté(e) le 29 janvier 2015 Signaler Posté(e) le 29 janvier 2015 Salut Steven, J'ai des problemes: [ERROR] 21:55:05: line 12: attempt to index global 'api' (a nil value) ??? Merci. Steven, J'ai exactement la même erreur que Maestrea. Nous sommes tous les 2 en v3.600. Et en plus je débute dans LUA, donc difficile pour moi de débugger. Merci de ton aide.
Sebbrunie1 Posté(e) le 30 janvier 2015 Signaler Posté(e) le 30 janvier 2015 Bonjour, par contre il me sort cela: [DEBUG] 10:14:49: -- IDs générés le : 30/01/15 à 10:14:49 local id = { --inconnu ANNE = 31, SEB = 30, --Salon FREBOX = 95, FREBOX_SERVEUR = 29, 199_2 = 202, 199_3 = 203, ORDINATEUR_SALON = 57, 199_1 = 201, } Anne et Seb, c'est quoi? Je n'ai pas de module de ce nom. Frebox_Serveur non plus et le numéro du module semble étonnant. Comment dois je le lire? Merci beaucoup
Steven Posté(e) le 30 janvier 2015 Auteur Signaler Posté(e) le 30 janvier 2015 Alors, ce n'est pas compatible 3.60 donc on oublie si vous avez pas 4.x @sebbrunie1 Anne et Seb doivent probablement être des utilisateurs. 199_2, 199_3, 199_1 sont sà»rement des modules cachés, mal supprimé ou secondaires. Si toi tu sais pas ce que tu as dans ta box, je vois pas ce que je peux faire pour toi. 3
Sebbrunie1 Posté(e) le 30 janvier 2015 Signaler Posté(e) le 30 janvier 2015 Merci.... Ben je sais mais, je suis couillon ce sont des modules virtuels hihi. Désolé
Messages recommandés