Aller au contenu
mprinfo

Module Virtuel - Crée Automatiquement Des Variables Globales

Recommended Posts

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

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

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

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

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

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

×