Page 1 sur 1

Coup de main debug LUA ...

Publié : 27 déc. 2017, 13:39
par loops
Salut à tous,
J'ai un petit script LUA que je ne parviens pas à débugger. Il fonctionnait très bien et depuis le passage à la version 3.8153 ça déconne.

Le principe : Je stocke dans une variable utilisateur un texte qui sera lu par la synthèse vocale. Au cours de la journée il est possible que soit concaténés dans cette variable plusieurs messages. Quand un mouvement est détecté sur le capteur de mouvements proche du haut parleur, le message est lu et la variable vidée. Si la variable est vide, bien sur on ne fais rien.

Le script tel que je le poste ici lis bien le message de la variable, et efface bien le contenu de cette dernière (je le vois dans Reglages / plus d'options / variables utilisateurs). Par contre a chaque mouvement détecté, le script relis le message comme si il était encore dans la variable, ce qui n'est pas le cas.

Avez vous une idée de c que je dois faire pour corriger ?

En vous remerciant,
JC

Code : Tout sélectionner

commandArray = {}
  if (devicechanged['Mouvements Salon'] == 'On' and uservariables["Message_Vocal"] ~= "") then
    message = "Bonsoir ! " .. uservariables["Message_Vocal"]
    print("<font color='#fb8a21'>Lecture du message</font>")
    print(message)
    commandArray['Variable:Message_Vocal'] = ""    
    os.execute('/usr/bin/tts ' .. message ..' &')
  end
return commandArray


Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 18:50
par papoo
je pencherais pour un état "" non reconnu
du coup je tenterais avec

Code : Tout sélectionner

commandArray = {}
  if (devicechanged['Mouvements Salon'] == 'On' and uservariables['Message_Vocal'] ~= nil) then
    local message = "Bonsoir ! " .. uservariables['Message_Vocal']
    print("<font color='#fb8a21'>Lecture du message</font>")
    print(message)
    os.execute('/usr/bin/tts ' .. message ..' &')
    commandArray['Variable:Message_Vocal'] = nil  
  end
return commandArray

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 19:57
par loops
Merci pour le retour mais malheureusement, rien de mieux.
J'ai mis la chaîne "test" dans la variable, après exécution du script que ce soit avec le code que j'ai posté ou avec ta correction, je vois bien la variable vide mais à chaque détection de mouvement le message est lu à nouveau.

Un peu comme si la chaîne stockée dans la base était bien vide mais celle "en mémoire" contenais encore la chaîne !

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 20:17
par papoo
déclare ta variable message en local en début script avant le commandarray comme cela
local message

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 20:33
par vil1driver
Salut

Tu veux dire que ça lit "bonsoir ! test" une nouvelle fois ?
Ton print contient également "bonsoir ! test" ?

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 20:38
par loops
vil1driver a écrit :Salut

Tu veux dire que ça lit "bonsoir ! test" une nouvelle fois ?
Ton print contient également "bonsoir ! test" ?
Oui, pour tes deux questions.
Chaque lecture du message me dit "bonsoir, test" et chaque retranscription dans le log me l'écrit !

@Papoo, même problème avec la déclaration de la variable.

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 21:05
par papoo
est-ce que
os.execute('/usr/bin/tts ' .. message ..' &')
ne stockerait pas un fichier temporaire?

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 21:06
par vil1driver
C'est que ta variable n'est pas vide..
Ce ne doit pas être permis de ne rien enregistrer
Essai de lui attribuer une autre valeur...
Par exemple ceci ;)

Code : Tout sélectionner

"vide" 
Tu n'auras qu'à tester que son contenu n'est pas "vide" :D

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 21:23
par loops
Bon beh ... Comme le dit le vieux proverbe chinois, mieux vaut un qui sait que cent qui cherchent ...
Ça fonctionne bien comme ça ! Bon j'ai remplacé ton "vide" par un "_" qui m'évite d'enlever le "vide" lors de l'ajout du premier message ...

Merci beaucoup !!! :D

Re: Coup de main debug LUA ...

Publié : 27 déc. 2017, 21:29
par vil1driver
;)
Un espace doit également faire l'affaire