Coup de main debug LUA ...

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 <\>.
Répondre
loops
Messages : 306
Inscription : 13 nov. 2014, 18:14

Coup de main debug LUA ...

Message 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

papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Coup de main debug LUA ...

Message 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
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
loops
Messages : 306
Inscription : 13 nov. 2014, 18:14

Re: Coup de main debug LUA ...

Message 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 !
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Coup de main debug LUA ...

Message par papoo »

déclare ta variable message en local en début script avant le commandarray comme cela
local message
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Coup de main debug LUA ...

Message par vil1driver »

Salut

Tu veux dire que ça lit "bonsoir ! test" une nouvelle fois ?
Ton print contient également "bonsoir ! test" ?
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
loops
Messages : 306
Inscription : 13 nov. 2014, 18:14

Re: Coup de main debug LUA ...

Message 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.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Coup de main debug LUA ...

Message par papoo »

est-ce que
os.execute('/usr/bin/tts ' .. message ..' &')
ne stockerait pas un fichier temporaire?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Coup de main debug LUA ...

Message 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
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
loops
Messages : 306
Inscription : 13 nov. 2014, 18:14

Re: Coup de main debug LUA ...

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Coup de main debug LUA ...

Message par vil1driver »

;)
Un espace doit également faire l'affaire
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
Répondre