kisskool a écrit :
Y a t'il un moyen plus efficace et rapide de modifier une variable utilisateur en fonction de la temperature comme en lua ci-dessous? J'ai cru comprendre qu'il etait possible d'utiliser un 'tableau'
Pour compléter ce que t'a répondu Keros, l'utilisation d'un tableau ne simplifiera pas forcément le code. Tout simplement parce que pour accéder aux valeurs de la table (nom des tableaux en Lua), il faut calculer un index à partir de la température. S'il n'y a pas de transformation mathématique évidente entre la température et l'index, tu vas te retrouver à recoder la cascade de if elseif then pour obtenir dans quelle case de la table piocher le coefficient.
La seule optimisation du code Lua cité que je vois est plus pour la lisibilité et éviter la duplication de code.
Après, c'est une question de gout, mais avoir les valeurs proches des conditions permet d'éviter les changements à un endroit mais pas à l'autre. Dans le code original, C03 est défini pour 15-20° mais au final sera utilsé quand T_eau sera de 14.01
Et puis ça donne un morceau supplémentaire de code simple pour comprendre le langage :
Code : Tout sélectionner
local besoin_filtration = nil
if (T_eau) > 50 then print("===Calcul du temps de cycle===")
-- eau à plus de 50° ??? la variable n'est pas changée dans ce cas
-----------------------------------------------------------------------------------------------------
elseif (T_eau < 10) then
-- si <10°
besoin_filtration = 0.1*duree_cycle
---------------------------------------------------------------------------------------------------
elseif (T_eau < 14.5) then
-- si 10-14°
besoin_filtration = 0.5*duree_cycle
---------------------------------------------------------------------------------------------------
elseif (T_eau < 20.5) then
-- si 15-20°
besoin_filtration = 1.0*duree_cycle
---------------------------------------------------------------------------------------------------
elseif (T_eau < 28) then
-- si 21-28°
besoin_filtration = 2.0*duree_cycle
-----------------------------------------------------------------------------------------------------
else
-- si >28°
besoin_filtration = 3.0*duree_cycle
-----------------------------------------------------------------------------------------------------
end
-- change la variable si besoin_filtration n'est pas nil
if besoin_filtration then
domoticz.variables('Variable:Besoin_filtration').set(besoin_filtration) -- rajouter tostring() si la variable est une chaine de caractères
end