Page 1 sur 3

Tempo sur NUT

Publié : 02 nov. 2016, 11:21
par djam
Bonjour à toutes et à tous

Je me suis équipé du tracker NUT détecté via Domoticz, cependant parfois il y a de très courtes déconnexion du dispositif.
Pour remédier à cela je souhaiterai une tempo sur le traitement de la variable quand celle ci passe sur "AWAY".

J'ai bidouillé et essayé plusieurs code, aucun n'a voulu prendre en compte la tempo donné (ici 2min).

Code : Tout sélectionner

time = os.date("*t")
t1 = os.time()
s = uservariables_lastupdate['NUT_dz']
-- Retourne la date au format --> 2016-10-11 17:23:12

year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))

commandArray = {}

-- Detection NUT ---> Si variable "AWAY" pendant 2 minute
if (uservariables['NUT_dz'] == 'AWAY' and difference > 120) then
	commandArray['Presence-DZ']='Off'
end
return commandArray
Merci de votre aide par avance.

Re: Tempo sur NUT

Publié : 16 nov. 2016, 11:16
par djam
Salut à tous,

Je sèche complétement sur ce sujet. J'essaie toujours de "fiabiliser" le tracker suite a de micro coupure du BT.
J'ai essayé avec une tempo : rien a faire.

Je voudrai l'associer avec mon capteur de la porte d’entrée mais je ne vois pas comment mettre tout ça en LUA ni dans quel ordre ??
Si quelqu'un peut m'aiguiller ?

Merci d'avance ....

Re: Tempo sur NUT

Publié : 16 nov. 2016, 16:21
par patrice
Bonjour
Pour debugger le script fait des print de difference et de nut_dz pour voir si ça contient bien ce que tu attends.


Envoyé de mon PULP 4G en utilisant Tapatalk

Re: Tempo sur NUT

Publié : 16 nov. 2016, 17:46
par Matt2cv
djam a écrit :Salut à tous,

Je sèche complétement sur ce sujet. J'essaie toujours de "fiabiliser" le tracker suite a de micro coupure du BT.
J'ai essayé avec une tempo : rien a faire.

Je voudrai l'associer avec mon capteur de la porte d’entrée mais je ne vois pas comment mettre tout ça en LUA ni dans quel ordre ??
Si quelqu'un peut m'aiguiller ?

Merci d'avance ....
Salut,

Je suis dans le même cas que toi. Je pense que la temporisation ne servira à rien. Elle va éviter d'avoir plusieurs notifications.
Je suis en train de chercher à comparer 2 valeurs. Est-ce qu'il faut passer par les uservariables pour mémoriser le status précédent ?

Re: Tempo sur NUT

Publié : 16 nov. 2016, 18:50
par thier
Et avec un code dans ce genre ça le fait?

Code : Tout sélectionner

time = os.date("*t") 
local presence = uservariables["NUT_dz"]
function timedifference(d)
   s = otherdevices_lastupdate[d]
   year = string.sub(s, 1, 4)
   month = string.sub(s, 6, 7)
   day = string.sub(s, 9, 10)
   hour = string.sub(s, 12, 13)
   minutes = string.sub(s, 15, 16)
   seconds = string.sub(s, 18, 19)
   t1 = os.time()
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = os.difftime (t1, t2)
   return difference
end

-- date la dernière relève
local lastSeen = timedifference(presence)
commandArray = {}

-- Detection NUT ---> Si variable "AWAY" pendant 2 minute
if (uservariables['NUT_dz'] == 'AWAY' and lastSeen > 120) then
   commandArray['Presence-DZ']='Off'
end
return commandArray


Re: Tempo sur NUT

Publié : 17 nov. 2016, 08:33
par djam
Salut à tous

Merci pour vos précieux conseils ...
Et avec un code dans ce genre ça le fait?

Déja merci thier pour le code ;)

En faisant des tests avec ce code j'obtient une erreur :
lua:9: bad argument #1 to 'sub' (string expected, got nil)
Je pense a la ligne 8 ?

Code : Tout sélectionner

 s = otherdevices_lastupdate[d] 
?

Je ne suis pas bon en code, encore pire lorsqu'il est question de gérer le "temps".

Re: Tempo sur NUT

Publié : 17 nov. 2016, 12:13
par djam
En remplaçant le

Code : Tout sélectionner

 s = otherdevices_lastupdate[d] 
par

Code : Tout sélectionner

 s = uservariables_lastupdate['NUT_dz'] 
cela fonctionne en appelant le script : "script_time_...", mais celui ci s’exécute toutes les deux minutes, ce que je comprend puisque "script_time_..."
par contre en l'appelant "script_variable_..." cela ne fonctionne pas du tout .

Je suis vraiment perdue avec cette notion de gestion du temps. :|

Re: Tempo sur NUT

Publié : 17 nov. 2016, 17:37
par thier
Script_time s’exécute toutes les minutes et ce n'est pas autrement possible. Par contre tu pourrais mettre dans un script des conditions pour n'exécuter le script que toutes les X minutes. ça ne change pas, ton script_time sera lancé toutes les minutes, par contre il ne s'exécutera que toutes les X minutes en fonction de ta condition.
Un script_device repère un changement d'état de quelque chose. Pour le faire il a besoin de 'si mon device change' ce qui donne en script 'If (devicechanged['mon device']== 'On') Etc...
Les script_device, c'est pareil, ils sont tous lancé par contre n'agit que celui qui correspond au device qui a changé.
Un script_variable c'est comme un srcipt_device sauf qu'il surveille le changement d'état des uservariable. Normal que ça ne fonctionne pas pour toi puisque mon script ne surveille pas de variable.
Tu peux lire les script_demo qui sont dans domoticz/script/lua ils sont explicitent.

Re: Tempo sur NUT

Publié : 17 nov. 2016, 18:01
par djam
Merci à toi thier de repasser par la ...

J'ai bien compris le principe des scripts avec leurs différences, mais j'ai du mal à bien appliquer tout cela .
Surtout lorsqu'il est question de gestion du "temps".
Je me suis justement servie des scripts démo pour tout mes autres scripts, et c'est nickel.

Mais la gestion de la variable en question et du "temps" c'est franchement compliquer.

Merci quand même

Re: Tempo sur NUT

Publié : 17 nov. 2016, 18:16
par thier
Ton script fonctionne?