mprinfo Posté(e) le 24 avril 2015 Signaler Posté(e) le 24 avril 2015 Ce module virtuel va crée automatiquement les variables si elles n'existent pas. Comment utiliser la table : "Nom de la variable", "1" (si prédéfinie) ou "0" (Variable Globale), "Valeur par défault", '"Valeur Prédéfinie"' -- Table variable Globale local VG_Table = { "Mode", "1", "Absent", '"Maison", "Vacances"', -- Variable Prédéfinie Mode "MPRInfo", "0", "100", -- Variable MPRInfo "Jour", "1", "Oui", '"Non"' -- Variable Prédéfinie Jour } Création des Variables Globales et Prédéfinies --************************ --Creation de Variable --- --************************ function VG_Creation(VG_Nom, VG_isEnum, VG_Value, VG_enumValues) if (fibaro:getGlobal(VG_Nom) == "") then fibaro:debug(VG_Nom.." "..VG_isEnum.." "..VG_Value) 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)) --------------------------------------------- -- création des valeurs prédéfinies si Besoin --------------------------------------------- if tonumber(VG_isEnum) == 1 then VG_Predefinie = '{"value":"'..VG_Value ..'","isEnum":true,"enumValues":'..'["'..VG_Value..'", '..VG_enumValues..']' ..'}' HC2:PUT("/api/globalVariables/"..VG_Nom, VG_Predefinie) end end end Lecture du tableaux et création si besoin des variables ---------------------------------------------------- -- Execution du programme ---------------------------------------------------- local j = 1 local NbreVG = 0 while VG_Table[j] ~= nil do if tonumber(VG_Table[j+1]) == 0 then fibaro:debug((NbreVG+1).." - Variable Globale") VG_Creation(VG_Table[j], VG_Table[j+1], VG_Table[j+2]) j=j+3 elseif tonumber(VG_Table[j+1]) == 1 then fibaro:debug((NbreVG+1).." - Variable prédéfinie") VG_Creation(VG_Table[j], VG_Table[j+1], VG_Table[j+2], VG_Table[j+3]) j=j+4 else fibaro:debug("Erreur dans la table VG") end NbreVG = NbreVG + 1 end fibaro:debug("Nombres de variable dans le tableau : " ..NbreVG) J'ai simplement ajouter un bouton aux VD Variables Globales de STEVEN comme cela on voit de suite si la variable n'est pas crée Petit Exercice : Optimiser ce code qui et fonctionnel mais pas très académique, il permet de crée les valeurs de la variable prédéfinie : 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 Variables_Globales.vfib
trainkill666 Posté(e) le 25 avril 2015 Signaler Posté(e) le 25 avril 2015 Bonsoir Pascal, function ajoutvariable(Nom, typevariable, Valeurbase, Valeurspredef) if (fibaro:getGlobal(Nom) == "") then composants = {} composants.name = Nom composants.isEnum = typevariable composants.value = Valeurbase HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(composants)) if composants.isEnum == 1 then composants.enumValues = '[' .. Valeurspredef .. ']' HC2:PUT("/api/globalVariables/"..Nom, json.encode(composants)) end end end ajoutvariable("Test1", 0, "1") ajoutvariable("Test2", 1, "2", '"1", "2", "3", "4"') Peux-tu stp me dire où est l'erreur de syntaxe qui fait que la variable prédéfinie est vide.
mprinfo Posté(e) le 26 avril 2015 Auteur Signaler Posté(e) le 26 avril 2015 Pour les variables globales il faut les crées en 2 fois tu dois avoir des soucis de "" sur value et isEnum et surtout le enumValues qui est en réalité un tableau de chaque valeur possible. J'ai pas ma galéré aussi sur cette partie heureusement que j'avais mon correcteur de code lol if tonumber(VG_isEnum) == 1 then newVar1 = {} fibaro:debug("VG_Nom "..VG_Nom) newVar1.value = VG_Value newVar1.isEnum = true newVar1.enumValues = {"Absent", "Maison"} HC2:PUT("/api/globalVariables/"..VG_Nom, json.encode(newVar1)) endif tonumber(VG_isEnum) == 1 then newVar1 = {} fibaro:debug("VG_Nom "..VG_Nom) newVar1.value = VG_Value newVar1.isEnum = true newVar1.enumValues = {"Absent", "Maison"} HC2:PUT("/api/globalVariables/"..VG_Nom, json.encode(newVar1)) end
zozotte Posté(e) le 28 août 2015 Signaler Posté(e) le 28 août 2015 Bonjour, Je viens de tester en 4.056 et la methode POST ne semble pas disponible sur ma box !!??? est-ce que ca marche pour vous ? Merci Zoe
Sebbrunie1 Posté(e) le 31 janvier 2016 Signaler Posté(e) le 31 janvier 2016 Bonsoir, est il possible de supprimer des variables. Si elles n'ont pas été mise à jour au bout d'1 mois par exemple ça la supprime ou alors si elle n'est lié à aucune scène ou module? Merci
Sebbrunie1 Posté(e) le 1 février 2016 Signaler Posté(e) le 1 février 2016 c'est une question que je pose Je n'ai rien àpartager malheureusement .....
Sebbrunie1 Posté(e) le 3 février 2017 Signaler Posté(e) le 3 février 2017 Bonsoir a vous, ce VD ne me créé plus les variables. Ca marche vous? Merci Sébastien
henri-allauch Posté(e) le 18 août 2019 Signaler Posté(e) le 18 août 2019 (modifié) J'ai rencontré un problème de création automatique de Variable avec Un Virtual device inspiré de "Variables_Globales.vfib" Depuis la version 4.550 on obtient une erreur ( si on la teste !! ) du style isNum expected J'ai solutionné en modifiant le code de création : Avant (4.550) 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)) Correction pour (4.550) newVar = {} newVar.name = VG_Nom if tonumber(VG_isEnum) == 0 then newVar.isEnum = tonumber(false) newVar.value = VG_Value else newVar.isEnum = tonumber(true) end HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) Modifié le 18 août 2019 par henri-allauch 3
BenjyNet Posté(e) le 5 septembre 2019 Signaler Posté(e) le 5 septembre 2019 Bon, moi même avec la correction ça marche plus Ça vient pas de la disparition du POST cette histoire ?
henri-allauch Posté(e) le 6 septembre 2019 Signaler Posté(e) le 6 septembre 2019 (modifié) Ce module de test fonctionne chez moi tu peux l'essayer TestVG.vfib @Steven a aussi fait une correction dans GEA pour la création des VG, il a peut être utilisé une méthode plus efficace ? Modifié le 6 septembre 2019 par henri-allauch
pepite Posté(e) le 6 septembre 2019 Signaler Posté(e) le 6 septembre 2019 Bonjour, Encore après la bataille ;-) en retard en ce moment, ce n'est pas avec moi que vous pourriez gagner une guerre ;-) Pour la création : api.post("/globalVariables", {name="Avant455", isEnum=0}) api.post("/globalVariables", {name="A_Partir455", isEnum=false}) @henri-allauch dans GEA cela teste la version du firmware de la HC2 et en fonction met 0 ou false 1
BenjyNet Posté(e) le 6 septembre 2019 Signaler Posté(e) le 6 septembre 2019 Ah yep, merci @henri-allauch ça marche now !
Messages recommandés