Page 1 sur 1

Aide pour script de présence

Publié : 16 janv. 2019, 19:33
par pimseb
Bonjour,

J'essaie d'écrire un script lua mais je n'y arrive pas... En fait on est deux à la maison et on a chacun un beacon bluetooth.
Les deux switchs individuels de présence fonctionnent bien séparément mais j'aimerais un 3ème switch qui s'active quand on est tous les 2 à la maison, afin de déclencher d'autres scénarios.
J'ai une variable user pour la présence de Monsieur qui passe en HOME ou en AWAY selon la présence, et une variable user pour Mme qui fait la même chose.
J'ai essayé ce script mais il ne marche pas :

Code : Tout sélectionner

commandArray = {}
if uservariablechanged['Tag_Mr'] or uservariablechanged['Tag_Mme'] then
  if uservariables['Tag_Mr']=="HOME" and uservariables['Tag_Mme']=="HOME" then
        table.insert (commandArray, { ['Presence_Mr_ET_Mme'] ='On' } )
  else
        table.insert (commandArray, { ['Presence_Mr_ET_Mme'] ='Off' } )
  end 
end  
return commandArray
Ce soir Mme est rentrée avant Mr. La présence Mme était sur ON, celle de Mr sur OFF (normal jusque là) mais le switch Presence_Mr_ET_Mme s'est quand même mis sur ON et il n'aurait pas du.
J'ai aussi essayé avec blocky, mais même ça je n'arrive pas. Pourtant ça a l'air assez basique comme concept, non ?
Merci si une âme charitable peut m'aider

Re: Aide pour script de présence

Publié : 18 janv. 2019, 05:41
par denis_brasseur
Bonjour,

as tu essayé d'afficher l'état de tes variables pour voir ce qui cloche ?

J'ai entouré volontairement l'affichage des variables de parentheses pour afficher lisiblement les valeurs retournées.

Code : Tout sélectionner

commandArray = {}
if uservariablechanged['Tag_Mr'] or uservariablechanged['Tag_Mme'] then
	print('Test 1 => etat de la variable Tag_Mr ('..uservariables['Tag_Mr']..') - etat de la variable Tag_Mme ('..uservariables['Tag_Mme']..')')
  	if uservariables['Tag_Mr']=="HOME" and uservariables['Tag_Mme']=="HOME" then
		print('Test 2 => etat de la variable Tag_Mr ('..uservariables['Tag_Mr']..') - etat de la variable Tag_Mme ('..uservariables['Tag_Mme']..')')
        	table.insert (commandArray, { ['Presence_Mr_ET_Mme'] ='On' } )
	else
        	print('Test 3 => etat de la variable Tag_Mr ('..uservariables['Tag_Mr']..') - etat de la variable Tag_Mme ('..uservariables['Tag_Mme']..')')
		table.insert (commandArray, { ['Presence_Mr_ET_Mme'] ='Off' } )
 	end 
end  
return commandArray
Tu devrais obtenir quelque chose comme :

Code : Tout sélectionner

Test 1 => etat de la variable Tag_Mr (HOME) - etat de la variable Tag_Mme (HOME)

Re: Aide pour script de présence

Publié : 18 janv. 2019, 16:19
par lost
pimseb a écrit : 16 janv. 2019, 19:33 Merci si une âme charitable peut m'aider
A voir comme cela, ca a l'air correct... Ajouter des print de debug pour afficher dans les log peut aider au debug, ceci dit. Mais sauf erreur de typo sur les états attendus de la variable utilisateur, ce devrait fonctionner.

Qu'est-ce qui mets à jour ces variables?

Pour ma part, j'ai le même type de système mais avec des switch virtuels de présence individuels des membres de la famille et un présence global, qui passe à "On" si au moins un membre de la famille est là (et controle aussi le security panel domoticz utilisé par la fonction alarme).

Mais dans mon cas, c'est le service externe de detection de présence qui gère le switch de présence globale (via l'API HTTP/JSON) de l'extérieur. Ecrit en python, c'est pas transposable.

Re: Aide pour script de présence

Publié : 24 avr. 2019, 10:29
par khouloud
Bonjour
Pouvez vous me donner le script lua qui déclenchera le switch lors de la détection d'une Tag
Merci d'avance