Page 1 sur 1

Manipulation des Variables

Publié : 21 avr. 2017, 17:52
par Deniss
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.

Re: Manipulation des Variables

Publié : 21 avr. 2017, 18:00
par vil1driver
Salut,

Une variable utilisateur ? (menu plus d'option)

Elles peuvent contenir ce que tu veux si c'est ta question

Re: Manipulation des Variables

Publié : 22 avr. 2017, 07:32
par Deniss
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").

Re: Manipulation des Variables

Publié : 22 avr. 2017, 07:53
par vil1driver
Tu n'as pas à lancer les scripts toi même !
Var1, var2 contiendraient quoi ?

https://easydomoticz.com/point-scripts-lua/

Re: Manipulation des Variables

Publié : 23 avr. 2017, 17:57
par Deniss
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. :D

Re: Manipulation des Variables

Publié : 23 avr. 2017, 18:46
par vil1driver
si ton script fonctionne c'est déjà ça :D

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

Re: Manipulation des Variables

Publié : 23 avr. 2017, 23:08
par Deniss
Ho ho, c' est noel avant l' heure :o .
Il est propre ton code, moi je dis j' achète... ça ressemble fortement à ce que je recherche.
Merci beaucoup pour ton aide vil1driver.