Message populaire mprinfo Posté(e) le 9 avril 2015 Message populaire Signaler Posté(e) le 9 avril 2015 (modifié) Voici une solution pour créer une variable globale en LUA il existe 8 types de base: nil, boolean, number, string, userdata, function, thread, et table Je remercie Gazous pour son aide Ce code va crée une variable globale Pascal -- Creation de Variable Pascal Merci Gazous json = '{"name":"Pascal", "isEnum":0}' HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json) Voici une solution pour créer une variable globale prédéfinie ce code appartient entièrement a Gazous il va crée une variable prédéfinie Gazous qui aura comme valeur Gazous1 ou Gazous2 -- Creation de Variable Gazous json = '{"name":"Gazous", "isEnum":1}' HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json) -- Ajout de 2 valeurs à la Variable Gazous et modification avec une des 2 valeurs json = '{"value":"Gazous1","isEnum":true,"enumValues":["Gazous1", "Gazous2"]}' HC2:PUT("/api/globalVariables/Gazous", json) ou comme cela avec des variables : local VG_Nom = "MPRInfo" local VG_Value = "MPRInfo1" local VG_enumValues = '["'..VG_Value..'", "MPRInfo2"]' --Creation de Variable Gazous json = '{"name":"'..VG_Nom..'", "isEnum":1}' fibaro:debug(json) HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json) --Ajout de 2 valeurs à la Variable Gazous et modification avec une des 2 valeurs json = '{"value":"'..VG_Value..'","isEnum":true,"enumValues":'..VG_enumValues..'}' fibaro:debug(json) HC2:PUT("/api/globalVariables/"..VG_Nom, json) Il ne vous reste plus qu'a vérifier dans le panneau des variables globales. Je pense que je vais crée un Module Virtuel avec toutes mes variables comme cela lors d'un recovery je clic sur le bouton de VD et mes variables sont crées. Code réalisé par Gazous Je complète avec une petite fonction pratique pour créer une variable si elle n'existe pas La version pour un Virtual Device (avec Net.FHttp) function createGlobalIfNotExists(varName, defaultValue) if (fibaro:getGlobal(varName) == "") then fibaro:debug("Création de la variable "..varName.." avec comme valeur par défaut "..defaultValue) newVar = {} newVar.name = varName newVar.value = defaultValue HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) end end createGlobalIfNotExists("Gazous", "Oui c'est moi") La version pour une Scène (avec net.HTTPClient) function createGlobalIfNotExists(varName, defaultValue) if (fibaro:getGlobal(varName) == nil) then fibaro:debug("Création de la variable "..varName.." avec comme valeur par défaut "..defaultValue) newVar = {} newVar.name = varName newVar.value = defaultValue local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables", { options = { method = 'POST', data = json.encode(newVar)}}) end end createGlobalIfNotExists("Gazous", "Oui c'est moi") La doc ce trouve ICI : http://xxx.xxx.xxx.xxx/docs/#!/globalVariables/getGVariables Il faut remplacer les xxx.xxx.xxx.xxx par l'adresse IP du Home Center 2 Un Petit Merci ou un Petit J'aime fais toujours plaisir..... Comme d’habitude voici un petit Bonus Cette Scéne permet d'envoyer une notification lorsqu'il y a un démarrage de la box Le message contient la date et l'heure de démarrage Il faut juste mettre l'ID du portable (Téléphone ou GSM pour nos amis Belge ) --[[ %% autostart --]] local IdTel = 181 local heure = os.date("%R"); local date = os.date("%d/%m/%Y"); local Message = "Votre Home center 2 à démarrée le " ..date .." à " ..heure fibaro:debug(Message) fibaro:call(IdTel, "sendPush", Message) Modifié le 12 avril 2015 par mprinfo 12
Berale64 Posté(e) le 9 avril 2015 Signaler Posté(e) le 9 avril 2015 Je suis toujours en 3.60, je n'ai donc pas la doc qui va bien. Merci de partager tes découvertes !!!
mprinfo Posté(e) le 9 avril 2015 Auteur Signaler Posté(e) le 9 avril 2015 De rien cousin Envoyé de mon SM-G900F en utilisant Tapatalk
cybersquat Posté(e) le 10 avril 2015 Signaler Posté(e) le 10 avril 2015 désolé j'ai une question bête, mais dans une variable global, on peut pas mettre de code ? Pour le 2ieme code vous l'intégrer bien dans une variable définie, mais le premier du coup
cybersquat Posté(e) le 10 avril 2015 Signaler Posté(e) le 10 avril 2015 (modifié) re à tous, j'ai créer la variable prédéfinis avec l'idée de chez moi Sécurité (porte entrée et porte patio) ... bon !! après j'ai créer un bouton virtuel ou j'ai intégrer le code et cela me donne bien deux bouton ! dans la boucle principale j'ai intégrer le code si c'est bien ça Je continu ou je sort ? lol ------- Est ce que l'on peut remplacer le sendPush afin de recevoir un sms plutôt ? --[[ %% autostart --]] local IdTel = 166 local heure = os.date("%R"); local date = os.date("%d/%m/%Y"); local Message = "Votre Home center 2 à démarrée le " ..date .." à " ..heure fibaro:debug(Message) fibaro:call(IdTel, "sendPush", Message) Modifié le 10 avril 2015 par cybersquat
Gazous Posté(e) le 10 avril 2015 Signaler Posté(e) le 10 avril 2015 Merci d'avoir pris le temps d'écrire ce tuto qui je pense servira à beaucoup de monde. Je complète avec une petite fonction pratique pour créer une variable si elle n'existe pas La version pour un Virtual Device (avec Net.FHttp) function createGlobalIfNotExists(varName, defaultValue) if (fibaro:getGlobal(varName) == "") then fibaro:debug("Création de la variable "..varName.." avec comme valeur par défaut "..defaultValue) newVar = {} newVar.name = varName newVar.value = defaultValue HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) end end createGlobalIfNotExists("Gazous", "Oui c'est moi") La version pour une Scène (avec net.HTTPClient) function createGlobalIfNotExists(varName, defaultValue) if (fibaro:getGlobal(varName) == nil) then fibaro:debug("Création de la variable "..varName.." avec comme valeur par défaut "..defaultValue) newVar = {} newVar.name = varName newVar.value = defaultValue local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables", { options = { method = 'POST', data = json.encode(newVar)}}) end end createGlobalIfNotExists("Gazous", "Oui c'est moi") 2
mprinfo Posté(e) le 11 avril 2015 Auteur Signaler Posté(e) le 11 avril 2015 @Gazous merci j'ajoute cela au post 1
mprinfo Posté(e) le 11 avril 2015 Auteur Signaler Posté(e) le 11 avril 2015 pour un scéne je pense qu'il y a plus simple pour utiliser l'api --[[ %% properties %% globals --]] local TousLesModules = api.get("/devices") local VoletsID = {} for i = 3, #TousLesModules do local theType = TousLesModules[i].type local Var_Name = TousLesModules[i].name -- Si égale à'blind' if (theType == 'com.fibaro.FGRM222') then table.insert(VoletsID, t_id) fibaro:debug('Volets ID ' ..i .." = "..Var_Name) end end C'est un exemple pour scanner les FRGM222 dans une scène via l'api en v4 c'est très simple. J'ai eu l'info hier par un membre du forum que je remercie
Gazous Posté(e) le 11 avril 2015 Signaler Posté(e) le 11 avril 2015 Oui, si tu as le prototype de "api.post()" on peut simplifier le code de la version pour une scène. Mais je n'ai pas trouvé de documentation làdessus.
mprinfo Posté(e) le 11 avril 2015 Auteur Signaler Posté(e) le 11 avril 2015 get /globalVariables/{globalVariableID} http://ipbox:80/api/globalVariables/Conges { "name": "Conges", "value": "OUI", "readOnly": false, "isEnum": true, "enumValues": [ "NON", "OUI" ], "created": 1428422026, "modified": 1428598187 }
mprinfo Posté(e) le 13 avril 2015 Auteur Signaler Posté(e) le 13 avril 2015 --Creation de Variable --- function VG_Creation(VG_Nom, VG_isEnum, VG_Value, VG_enumValues) if (fibaro:getGlobal(VG_Nom) == "") then newVar = {} newVar.name = VG_Nom newVar.isEnum = tonumber(VG_isEnum) if tonumber(VG_isEnum) == 0 then newVar.value = VG_Value end HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) --Ajout de x valeurs àla Variable Gazous et modification avec une des 2 valeurs if tonumber(VG_isEnum) == 1 then VG_Predefinie = '{"value":"'..VG_Value ..'","isEnum":true,"enumValues":'..'["'..VG_Value..'", '..VG_enumValues..']' ..'}' fibaro:debug(VG_Predefinie) HC2:PUT("/api/globalVariables/"..VG_Nom, VG_Predefinie) end end end ------------------ VG_Creation("MPRInfo", "1", "MPRInfo1", '"MPRInfo2", "TOTO"' Ne fonctionne que dans un Module Virtuel 0 = Variable globale 1 = Variable prédéfinie
Krikroff Posté(e) le 13 avril 2015 Signaler Posté(e) le 13 avril 2015 pour un scéne je pense qu'il y a plus simple pour utiliser l'api --[[ %% properties %% globals --]] local TousLesModules = api.get("/devices") local VoletsID = {} for i = 3, #TousLesModules do local theType = TousLesModules[i].type local Var_Name = TousLesModules[i].name -- Si égale à 'blind' if (theType == 'com.fibaro.FGRM222') then table.insert(VoletsID, t_id) fibaro:debug('Volets ID ' ..i .." = "..Var_Name) end end C'est un exemple pour scanner les FRGM222 dans une scène via l'api en v4 c'est très simple. J'ai eu l'info hier par un membre du forum que je remercie Il y a plus simple encore: /api/devices?type=com.fibaro.FGRM222 1
mprinfo Posté(e) le 14 avril 2015 Auteur Signaler Posté(e) le 14 avril 2015 Pfff trop fort lol merci par contre blind ne fonctionne pas en v4 Envoyé avec mon SmartPhone
mprinfo Posté(e) le 14 avril 2015 Auteur Signaler Posté(e) le 14 avril 2015 comme cela ? local text = api.get("/devices?type=com.fibaro.FGRM222") local VoletsID = {} for i = 1, #text do local theType = text[i].type local Var_Name = text[i].name table.insert(VoletsID, t_id) fibaro:debug('Volets ID ' ..i .." = "..Var_Name) end par contre tu fais comment pour faire cela via l'api ? local theType = string.sub(fibaro:getType(i), 12,15) je recupere avec string.sub FRGM c'est ce qui ressemble le plus left$ mid$ right$ lol
jojo Posté(e) le 2 mai 2015 Signaler Posté(e) le 2 mai 2015 Enfin, je prends le temps de mettre cela en place chez moi, mais je n'y arrive pas C'est parce que je serais en v3.600 ? Car en fait cela m'aurait été bien utile pour préparer ma future ? migration vers 4.042 ou 4.1 ?
mprinfo Posté(e) le 3 mai 2015 Auteur Signaler Posté(e) le 3 mai 2015 jojo ça ne marche qu'avec la v4
jojo Posté(e) le 26 mai 2015 Signaler Posté(e) le 26 mai 2015 voilà , je suis passé en v4.x, et bien sur j'ai essayé ceci !!!! Afin de gagner 10 min lors d'un prochain recovery, je viens de passer 3 heures à faire un VD de tout ceci. (vous commencez à me connaître, c'est plus fort que moi ...) Le principe (suivant l'idée de mprinfo) est de recréer les variables (si elles n'existent pas). Il y a 2 boutons : Variable Globale Variable Prédéfinie Variable Globale remplir une table (VarGlob) avec un nombre PAIR d'entrées : d'abord le nom de la variable, puis sa valeur par défaut. Variable Prédéfinie remplir une table (VarPred) avec : d'abord le nom de la variable, ensuite les valeurs prédéfinies, et enfin entre chaque variable la valeur "NewVar487" (cette dernière précise que l'on a fini de lire des valeurs prédéfinies, et que l'entrée suivante est un nom de variable) Il n'est donc PAS nécessaire de terminer par cette valeur. Les deux boutons fournissent en début de code un exemple de table à remplir pour définir les variables.
henri-allauch Posté(e) le 3 octobre 2016 Signaler Posté(e) le 3 octobre 2016 --Creation de Variable --- function VG_Creation(VG_Nom, VG_isEnum, VG_Value, VG_enumValues) if (fibaro:getGlobal(VG_Nom) == "") then newVar = {} newVar.name = VG_Nom newVar.isEnum = tonumber(VG_isEnum) if tonumber(VG_isEnum) == 0 then newVar.value = VG_Value end HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) --Ajout de x valeurs à la Variable Gazous et modification avec une des 2 valeurs if tonumber(VG_isEnum) == 1 then VG_Predefinie = '{"value":"'..VG_Value ..'","isEnum":true,"enumValues":'..'["'..VG_Value..'", '..VG_enumValues..']' ..'}' fibaro:debug(VG_Predefinie) HC2:PUT("/api/globalVariables/"..VG_Nom, VG_Predefinie) end end end ------------------ VG_Creation("MPRInfo", "1", "MPRInfo1", '"MPRInfo2", "TOTO"' Ne fonctionne que dans un Module Virtuel 0 = Variable globale 1 = Variable prédéfinie J'utilisai le code ci-dessus à priori sans problème ( on ne crée pas des VG tout les jours) Je viens de passer en 4.1 et lors d'un test je me rend compte qu'il y a des erreurs bizarre dans le debug .. "Assertion ... Le pb viens de: if (fibaro:getGlobal(VG_Nom) == "") then à remplacer par if (fibaro:getGlobal(VG_Nom) == nill) then Dans mon cas cela à corriger le pb et tout re fonctionne normalement 2
flacon030 Posté(e) le 9 octobre 2020 Signaler Posté(e) le 9 octobre 2020 (modifié) Je viens de voir ce sujet sur les variable prédéfinie Je ne connais rien en lua Mais j'ai un VD netatmo qui utilise les variable prédéfini en table Je voudrais récupérer une variable vent max Voir le sujet ci dessous que j'ai ouvert ici Si l'un d'entre vous pouvait m'aider Merci par avance Modifié le 9 octobre 2020 par flacon030
Messages recommandés