Titof_44 Posté(e) le 1 novembre 2017 Signaler Posté(e) le 1 novembre 2017 Bonjour, Qu'est ce que je fais de mal, je ne comprends pas pour quoi cela ne marche pas, la variable n'est pas crée donc le debug renvoie nil et les debug de http n'apparaissent pas ! Dans un VD avec les Net.FHttp je n'ai pas de problème ! Merci d'avance. 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.isEnum = 0 newVar.value = defaultValue local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables", { options = { method = 'POST', data = json.encode(newVar)}, success = function(response) fibaro:debug(varName .. " création avec succès") end, error = function(response) fibaro:debug(varName .. " ERROR !!!") end }) end fibaro:debug(varName .. " valeur "..fibaro:getGlobal(varName)) return true end
Lazer Posté(e) le 1 novembre 2017 Signaler Posté(e) le 1 novembre 2017 avec api.post c'est plus facile. Voici une fonction qui fait le job : local debug = true -- false -- -- createVG function -- function CreateVG(varName, varValue, varEnum) Message("purple", "CreateVG") local isEnum = (#varEnum > 0) and 1 or 0 local payload = {name=varName, isEnum=isEnum, value=(varValue or "")} if debug then Message("gray", json.encode(payload)) end local response, status = api.post("/globalVariables/"..varName, payload) if (tonumber(status) == 200 or tonumber(status) == 201) and response ~= nil and response ~= "" then Message("", 'Global variable "'..varName..'" created') if isEnum > 0 then local payload = {name=varName, isEnum=true, enumValues=varEnum} local response, status = api.put("/globalVariables/"..varName, payload) if (tonumber(status) == 200 or tonumber(status) == 201) and response ~= nil and response ~= "" then Message("", 'Global variable "'..varName..'" modified with enum values') else Message("red", 'Error : Can not modify enum global variable, status='..status..', payload='..json.encode(payload)..', response='..(response or "")) end end else Message("red", 'Error : Can not create global variable, status='..status..', payload='..json.encode(payload)..', response='..(response or "")) end end -- function -- Create VG local vg = "MyVariable" local variable = api.get("/globalVariables/"..vg) if not variable then if debug then Message("gray", 'Global variable "'..vg..'" does not exist') end CreateVG(vg, "", {}) elseif debug then Message("green", 'Global variable "'..vg..'" exist') end Attention dans ce code la fonction Message() fait appel à une autre fonction que je n'ai pas recopié, tu peux simplement faire un fibaro:debug() à la place 3
mprinfo Posté(e) le 1 novembre 2017 Signaler Posté(e) le 1 novembre 2017 Voici une solution que le pére @steven m'avait donné --[[ %% properties %% globals --]] local variables = { {nom = "JourChomeJ1", valeur = "NON", choix = {"OUI"}}, -- VD J chomé {nom = "JourChome", valeur = "NON", choix = {"OUI"}}, -- VD J chomé {nom = "Conges", valeur = "NON", choix = {"OUI"}}, {nom = "Chloe", valeur = "NON", choix = {"OUI"} } local variablesASupprimer = { --{nom = "TestSteven"} } -- ----------------------------------------------- -- Supprime une variable -- ----------------------------------------------- function supprimer(nom) local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables/"..nom, { options = { method = 'DELETE' } , success = function(response) fibaro:debug(nom .. " supprimée avec succès") end, error = function(response) fibaro:debug(nom .. " ERROR !!!") end, }) end -- ----------------------------------------------- -- Modifie une variable -- ----------------------------------------------- function modifier(nom, valeur, choix) local variable = {} variable.value = valeur variable.isEnum = false if (type(choix) ~= "nil") then variable.isEnum = true table.insert(choix, 1, valeur) variable.enumValues = choix end local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables/"..nom, { options = { method = 'PUT', data = json.encode(variable) }, success = function(response) fibaro:debug(nom .. " modifiée avec succès") end, error = function(response) fibaro:debug(nom .. " ERROR !!!") end, }) end -- ----------------------------------------------- -- Ajoute une variable -- ----------------------------------------------- function ajouter(nom, valeur, choix) local enum = 0 if (type(choix) ~= "nil") then enum = 1 end local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables", { options = { method = "POST", data = json.encode({name=nom, isEnum=enum}) }, success = function(response) fibaro:debug(nom .. " créé avec succès") modifier(nom, valeur, choix) end, error = function(response) fibaro:debug(nom .. " ERROR !!!") end, }) end -- ----------------------------------------------- -- Voir si une variable existe ou non -- et la modifier ou créer -- ----------------------------------------------- function traiter(nom, valeur, choix) if (fibaro:getGlobalValue(nom) == nil) then ajouter(nom, valeur, choix) else -- modifier(nom, valeur, choix) end end ---------------------------------------------------- -- Execution du programme ---------------------------------------------------- for _,v in ipairs(variables) do traiter(v.nom, v.valeur, v.choix) end for _,v in ipairs(variablesASupprimer) do supprimer(v.nom) end 3
Steven Posté(e) le 1 novembre 2017 Signaler Posté(e) le 1 novembre 2017 @mprinfo Ca c'était en version 3.x en version 4.x ... j'utilise ceci : https://gea.piccand.me/doku.php/vg 2
jjacques68 Posté(e) le 1 novembre 2017 Signaler Posté(e) le 1 novembre 2017 il y a une heure, Steven a dit : j'utilise ceci : https://gea.piccand.me/doku.php/vg ouuuuh mais c'est bon ça !! je prends, mercii
Titof_44 Posté(e) le 1 novembre 2017 Auteur Signaler Posté(e) le 1 novembre 2017 Merci à tous. @Steven essayé et adopté. Vraiment top. . Un grand merci !
MAM78 Posté(e) le 17 décembre 2018 Signaler Posté(e) le 17 décembre 2018 Est-ce que l'un de vous aurait une scène (utilitaire) qui permet de lire un variable globale que son contenu est de type tableau et quelque soit le nombre de niveau dans la structure du tableau. Je pourrais l'écrire moi-même, mais j'avoue que si c'est déjà fait autant que cela me serve Merci d'avance.
Messages recommandés