Mise à jour UserVariable par son IDX au lieu de son nom
Mise à jour UserVariable par son IDX au lieu de son nom
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
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
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Salut,
Ne change pas son nom
Ne change pas son nom
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Mise à jour UserVariable par son IDX au lieu de son nom
C'est faisable en dzVents, mais pas en Lua classique.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Mise à jour UserVariable par son IDX au lieu de 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.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Mise à jour UserVariable par son IDX au lieu de son nom
En cherchant 3min..
Papoo nous a avait proposé ceci
https://easydomoticz.com/forum/viewtopi ... 950#p39950
Papoo nous a avait proposé ceci
https://easydomoticz.com/forum/viewtopi ... 950#p39950
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Mise à jour UserVariable par son IDX au lieu de son nom
En t'inspirant de la proposition de papoo, tu peux faire une fonction ;
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,
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
endCode : Tout sélectionner
GetVariableNameByIdx('idx')Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Mise à jour UserVariable par son IDX au lieu de son nom
denis_brasseur a écrit : 12 juil. 2020, 08:06 En t'inspirant de la proposition de papoo, tu peux faire une fonction :Il te faut personnaliser curl, domoticzUSER, domoticzPSWD et domoticzURL ou écrire la ligne en "dur".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,Code : Tout sélectionner
GetVariableNameByIdx('idx')
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Mise à jour UserVariable par son IDX au lieu de son nom
Merci à tous, vous êtes super. C'est exactement ce que j'ai besoin. Encore merci.