Sortir d un script lua sous condition

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
loteran
Messages : 59
Inscription : 29 oct. 2017, 18:59

Sortir d un script lua sous condition

Message par loteran »

Bonjour,

J'ai fait un script permettant de changer de chaines et autre sur la freebox avec google home.

Je rencontre un problème, je passe par ifttt pour envoyer à domoticz du texte, exemple "mets TF1", le script fonctionne parfaitement.
j'alimente une variable utilisateur ["freebox"] de domoticz avec la chaine de caractère d'ifttt, dès qu'une variable utilisateur est modifié, cela lance mon script_variable_freebox.lua

Si je n'utilise que la variable utilisateur ["freebox"] tout fonctionne, en revanche si j'ajoute une variable utilisateur exemple ["temp"] qui correspond à la temperature d'une de mes sondes et que je la mets à jour à chaque intérogation de la sonde soit toutes les 10s, cela déclanche également mon script
script_variable_freebox.lua, ce qui est logique car ces scripts se déclanche sur la modification d'une uservariable, ce qui aura pour effet de relancer le script ce que je ne souhaite pas, car je veux le déclancher uniquement si la variable ["freebox"] est modifée.

J'ai donc voulu vider la variable ["freebox"] en fin de script, une fois que la chaine est modifié et j'ai mis une condition en début de script afin que le script soit arreté si la variable ["freebox"] est vide, mais cela ne fonctionne pas, j'ai surement un probleme de synthaxe.

en début de script :

Code : Tout sélectionner

ifttt=uservariables["freebox"]
ifttt=string.lower(ifttt)


print("valeur de debut"..ifttt)
if ifttt=="" or ifttt== nil then
print("sortie du script")
os.exit()
end
Mais la variable ifttt reste toujours avec la valeur précédente, donc dans mon exemple, toujours égale à "mets TF1".
Je suppose que je vide mal la variable ["freebox"] en fin de script, j'ai tenté avec un :

Code : Tout sélectionner

raz=""
os.execute('sudo curl -s "http://ip:port/json.htm?type=command&param=updateuservariable&id=1&vname=freebox&vtype=2&vvalue="'..raz)
mais cela fait tourner le script en rond et ifttt ne prends pas la valeur de raz.

Je ne parviens pas à trouver une commande lua pour vider la variable ["freebox"]

Une petite aide serait la bienvenue ;)

Ps: je ne veux pas de solution de contournement du type, utilise qu'une seule variable ;), je sais que je peut faire autrement pour ma variable température, mais je ne le souhaite pas, car cela me servira pour d'autres choses.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Sortir d un script lua sous condition

Message par vil1driver »

Salut,

jamais testé os.exit() mais un return commandArray fonctionne très bien.

pour ta variable, pas certain que tu puisses ne rien mettre dedant.
je pense que tu peux lui affecter une valeur particulière que tu testeras facilement au lieu de tester qu'elle ne contient rien
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
loteran
Messages : 59
Inscription : 29 oct. 2017, 18:59

Re: Sortir d un script lua sous condition

Message par loteran »

vil1driver a écrit :Salut,

jamais testé os.exit() mais un return commandArray fonctionne très bien.

pour ta variable, pas certain que tu puisses ne rien mettre dedant.
je pense que tu peux lui affecter une valeur particulière que tu testeras facilement au lieu de tester qu'elle ne contient rien

oui désolé pour le os.exit.

En revanche cela fonctionne lorsque je donne une valeur "test" à ma variable, c'est bien le "" qui posait problème.
Merci.
Répondre