Page 1 sur 1
Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 11 juil. 2020, 15:23
par FloFlo
Salut tout le monde,
Je voudrais pouvoir mettre à jour une "variable utilisateur" en lua en utilisant l' IDX de la variable utilisateur et pas son nom car si je change son nom, faudra que je modifie tous mes programmes. Comment je peux faire?
Merci pour votre aide
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 11 juil. 2020, 16:44
par vil1driver
Salut,
Ne change pas son nom
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 11 juil. 2020, 18:31
par boum
C'est faisable en dzVents, mais pas en Lua classique.
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 11 juil. 2020, 21:07
par denis_brasseur
vil1driver a écrit : 11 juil. 2020, 16:44
Salut,
Ne change pas son nom
Effectivement, cela me semble la meilleur solution, ne pas changer le nom de la variable, même si il doit être possible de manière détournée d'utiliser l'idx pour en retrouver le nom, dans l'exemple de la fonction GetDeviceNameByIdx.
J'utilise 38 variables utilisateur, j'en crée autant que de besoin, et si le nom de la variable est bien explicite, nul besoin de la renommer.
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 11 juil. 2020, 22:38
par vil1driver
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 12 juil. 2020, 08:06
par denis_brasseur
En t'inspirant de la proposition de papoo, tu peux faire une fonction ;
Code : Tout sélectionner
function GetVariableNameByIdx(variableIDX)
local config=assert(io.popen(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command¶m=getuservariables"'))
local blocjson = config:read('*all')
config:close()
jsonValeur = json:decode(blocjson)
for index, variable in pairs(jsonValeur.result) do
if variable.idx == variableIDX then
--print(variable.idx, variable.Name, variable.Value, variable.LastUpdate)
return variable.Name
end
end
return 0
end
Tu l'utilises ensuite de la manière suivante afin d'obtenir le nom de la variable en partant de l'idx :
ou idx est l'idx de ta variable,
entre quote,
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 12 juil. 2020, 08:17
par denis_brasseur
denis_brasseur a écrit : 12 juil. 2020, 08:06
En t'inspirant de la proposition de papoo, tu peux faire une fonction :
Code : Tout sélectionner
function GetVariableNameByIdx(variableIDX)
local config=assert(io.popen(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command¶m=getuservariables"'))
local blocjson = config:read('*all')
config:close()
jsonValeur = json:decode(blocjson)
for index, variable in pairs(jsonValeur.result) do
if variable.idx == variableIDX then
--print(variable.idx, variable.Name, variable.Value, variable.LastUpdate)
return variable.Name
end
end
return 0
end
Il te faut personnaliser curl, domoticzUSER, domoticzPSWD et domoticzURL ou écrire la ligne en "dur".
Tu l'utilises ensuite de la manière suivante afin d'obtenir le nom de la variable en partant de l'idx :
ou idx est l'idx de ta variable,
entre quote,
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Publié : 12 juil. 2020, 10:12
par FloFlo
Merci à tous, vous êtes super. C'est exactement ce que j'ai besoin. Encore merci.