mprinfo 3 352 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
trainkill666 70 Signaler ce message Posté(e) 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. Partager ce message Lien à poster Partager sur d’autres sites
mprinfo 3 352 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
zozotte 24 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
domo 47 Signaler ce message Posté(e) 31 janvier 2016 merci pour le partage Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 1 février 2016 c'est une question que je pose Je n'ai rien àpartager malheureusement ..... Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 3 février 2017 Bonsoir a vous, ce VD ne me créé plus les variables. Ca marche vous? Merci Sébastien Partager ce message Lien à poster Partager sur d’autres sites
henri-allauch 225 Signaler ce message Posté(e) 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é 18 août 2019 par henri-allauch 3 Partager ce message Lien à poster Partager sur d’autres sites
BenjyNet 1 200 Signaler ce message Posté(e) 5 septembre 2019 Bon, moi même avec la correction ça marche plus Ça vient pas de la disparition du POST cette histoire ? Partager ce message Lien à poster Partager sur d’autres sites
henri-allauch 225 Signaler ce message Posté(e) 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é 6 septembre 2019 par henri-allauch Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
BenjyNet 1 200 Signaler ce message Posté(e) 6 septembre 2019 Ah yep, merci @henri-allauch ça marche now ! Partager ce message Lien à poster Partager sur d’autres sites