Manipulation des Variables
Manipulation des Variables
Bonjour,
Est il possible de récupérer le nom ou id d' un device dans une variable sur action on off par exemple (un peu comme parameters dans VBA), et de l' utiliser dans un script Lua.
Désolé si je ne suis pas tres clair mais j' ai du mal avec la gestion et l' utilisation des variables.
Merci.
Est il possible de récupérer le nom ou id d' un device dans une variable sur action on off par exemple (un peu comme parameters dans VBA), et de l' utiliser dans un script Lua.
Désolé si je ne suis pas tres clair mais j' ai du mal avec la gestion et l' utilisation des variables.
Merci.
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Manipulation des Variables
Salut,
Une variable utilisateur ? (menu plus d'option)
Elles peuvent contenir ce que tu veux si c'est ta question
Une variable utilisateur ? (menu plus d'option)
Elles peuvent contenir ce que tu veux si c'est ta question
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: Manipulation des Variables
Merci d' avoir pris un peu de temps pour me répondre. Mais sauf erreur de ma part les variables utilisateur ne sont pas dynamique. Il faut leur affecter une valeur soit en dur soit par code. En fait ce que je recherche c' est de lancer un script lua avec des paramètres variable. exemple :
script_device_xxx.lua("var1","var2").
script_device_xxx.lua("var1","var2").
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Manipulation des Variables
Tu n'as pas à lancer les scripts toi même !
Var1, var2 contiendraient quoi ?
https://easydomoticz.com/point-scripts-lua/
Var1, var2 contiendraient quoi ?
https://easydomoticz.com/point-scripts-lua/
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: Manipulation des Variables
En fait c' est pour simplifier mon code en utilisant moins de if then. J' utilise pour mon arrosage 6 relais d' une carte USB UART donc j' ai créé 6 devices que j' ai nommé Vanne1,Vanne2... jusqu' à 6. J' utilise qu' un fichier pour gerer les 6 actions, mon code commence par:
if devicechanged['Vanne1'] or devicechanged['Vanne2'] or devicechanged['Vanne3'] or devicechanged['Vanne4'] or devicechanged['Vanne5'] or devicechanged['Vanne6'] then
Comme il est dit dans la convention d' écriture de script LUA domoticz pour arrêter le code si il n y a pas de changement d' état.
.Je trouve ça tres lourd alors que si dans un premier temps le code s' éxecute avec comme argument variable le nom du device ou même un indice du type RLYX, je pourrai le comparer à un tableau de variable dans mon code et continuer si le nom ou l' indice fait partie du tableau. Dans un deuxième temps si je peux passer RLYX comme variable dynamique, le code serait simplifié de 30 lignes :
--Actionner les relais--
if (devicechanged['Vanne1'] == 'On') then
trame=( 'VariableRLYX'+1) --1 pour ON
chaine="Début d'arrosage"
elseif (devicechanged['Vanne1'] == 'Off') then
trame=( 'VariableRLYX'+0) --0 pour OFF
chaine="Fin d'arrosage"
au lieu de:
--Actionner les relais--
if (devicechanged['Vanne1'] == 'On') then
trame=( 'RLY11')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne1'] == 'Off') then
trame=( 'RLY10')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne2'] == 'On') then
trame=( 'RLY21')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne2'] == 'Off') then
trame=( 'RLY20')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne3'] == 'On') then
trame=( 'RLY31')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne3'] == 'Off') then
trame=( 'RLY30')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne4'] == 'On') then
trame=( 'RLY41')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne4'] == 'Off') then
trame=( 'RLY40')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne5'] == 'On') then
trame=( 'RLY51')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne5'] == 'Off') then
trame=( 'RLY50')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne6'] == 'On') then
trame=( 'RLY61')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne6'] == 'Off') then
trame=( 'RLY60')
chaine="Fin d'arrosage"
end
J' espère ne pas avoir était trop ennuyeux, et merci d' avoir lu jusqu'au bout.
if devicechanged['Vanne1'] or devicechanged['Vanne2'] or devicechanged['Vanne3'] or devicechanged['Vanne4'] or devicechanged['Vanne5'] or devicechanged['Vanne6'] then
Comme il est dit dans la convention d' écriture de script LUA domoticz pour arrêter le code si il n y a pas de changement d' état.
.Je trouve ça tres lourd alors que si dans un premier temps le code s' éxecute avec comme argument variable le nom du device ou même un indice du type RLYX, je pourrai le comparer à un tableau de variable dans mon code et continuer si le nom ou l' indice fait partie du tableau. Dans un deuxième temps si je peux passer RLYX comme variable dynamique, le code serait simplifié de 30 lignes :
--Actionner les relais--
if (devicechanged['Vanne1'] == 'On') then
trame=( 'VariableRLYX'+1) --1 pour ON
chaine="Début d'arrosage"
elseif (devicechanged['Vanne1'] == 'Off') then
trame=( 'VariableRLYX'+0) --0 pour OFF
chaine="Fin d'arrosage"
au lieu de:
--Actionner les relais--
if (devicechanged['Vanne1'] == 'On') then
trame=( 'RLY11')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne1'] == 'Off') then
trame=( 'RLY10')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne2'] == 'On') then
trame=( 'RLY21')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne2'] == 'Off') then
trame=( 'RLY20')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne3'] == 'On') then
trame=( 'RLY31')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne3'] == 'Off') then
trame=( 'RLY30')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne4'] == 'On') then
trame=( 'RLY41')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne4'] == 'Off') then
trame=( 'RLY40')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne5'] == 'On') then
trame=( 'RLY51')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne5'] == 'Off') then
trame=( 'RLY50')
chaine="Fin d'arrosage"
elseif (devicechanged['Vanne6'] == 'On') then
trame=( 'RLY61')
chaine="Début d'arrosage"
elseif (devicechanged['Vanne6'] == 'Off') then
trame=( 'RLY60')
chaine="Fin d'arrosage"
end
J' espère ne pas avoir était trop ennuyeux, et merci d' avoir lu jusqu'au bout.
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Manipulation des Variables
si ton script fonctionne c'est déjà ça
si ce n'est qu'une histoire de taille, en voici un plus court :
si ce n'est qu'une histoire de taille, en voici un plus court :
Code : Tout sélectionner
act = {
['On'] = {'1','Début d\'arrosage'},
['Off'] = {'0','Fin d\'arrosage'}
}
for name, status in pairs(devicechanged) do
if name:sub(1,5) == 'Vanne' then
trame=('RLY'..name:sub(-1)..act[status][1])
chaine=act[status][2]
break
end
end
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: Manipulation des Variables
Ho ho, c' est noel avant l' heure
.
Il est propre ton code, moi je dis j' achète... ça ressemble fortement à ce que je recherche.
Merci beaucoup pour ton aide vil1driver.
Il est propre ton code, moi je dis j' achète... ça ressemble fortement à ce que je recherche.
Merci beaucoup pour ton aide vil1driver.