Aide pour script de présence

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 <\>.
pimseb
Messages : 30
Inscription : 04 sept. 2017, 12:46

Aide pour script de présence

Message 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
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Aide pour script de présence

Message 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)
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Aide pour script de présence

Message 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.
khouloud
Messages : 2
Inscription : 24 avr. 2019, 10:04

Re: Aide pour script de présence

Message 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
Répondre