Visiblement l' API fait du yoyo et n'accepte le PUT que sous certaines conditions et la limite semble être le virtual device lui même , voici le code à utiliser pour la création complète d' une variable de type Enum
--Variables
local varName, varValue = "multi", "a";
local HC2 = Net.FHttp("127.0.0.1", 11111);
response ,status, errorCode = HC2:POST("/api/globalVariables/"..varName, json.encode({
name = varName,
value = "",
isEnum = 1,
enumValues = {}
})
);
--Verification des erreurs
if status == "200" or status == "201" then
fibaro:sleep(800);
response ,status, errorCode = HC2:PUT("/api/globalVariables/"..varName, json.encode({
name = varName,
value = varValue,
isEnum = true,
enumValues = {"a","b","c"}
})
);
if status == "200" or status == "201" then
fibaro:debug("La variable '" ..varName.. "' valeur : '" ..varValue.. "' a été créé avec succes.");
else
fibaro:debug("Mise à jour - Code erreur : " ..status);
end
else
fibaro:debug("Création - Code erreur : " ..status);
end
Observations sur ton code (critique constructive )
local variableName = "multi";
variableName = tostring(variableName);
un tostring(...) sur la valeur "multi" donc en string ne change rien et n'avance à rien.
local payload = {"name":"multi","value":"a","isEnum":true,"enumValues":["a","b","c"]};
payload ainsi est une table LUA, tu dois obligatoirement faire un json.encode afin de préparer la chaine pour le passage au body de la requête (POST, PUT)
Voilou... J'espere avoir répondu a tes attentes