Page 2 sur 3

Re: Tempo sur NUT

Publié : 17 nov. 2016, 18:35
par djam
Non il ne fonctionne pas , le premier que tu mas gentiment filer (d’ailleurs très bon exemple ;) ) ne fonctionnai pas, j’avais une erreur .
Et par la suite rien du tout ...
J'ai repris la lecture et les tests mais RIEN. Je sais que la réponse est sous mon nez en plus :evil:

J'ai surement une mauvaise approche du déroulement des choses a effectuer.

Re: Tempo sur NUT

Publié : 17 nov. 2016, 18:50
par thier
fait la modifcation suivante:
print('test1')
if (uservariables['NUT_dz'] == 'AWAY' and lastSeen > 120) then
print('test2')
commandArray['Presence-DZ']='Off'

Ton script_time va se lancer toutes les minutes et comme il doit au moins t'écrire 'test1' tu verras dans tes log qu'il se lance.
Si un script se lance mais ne fait rien il n’apparaît pas dans les log.
le print2 te permettra de valider la ligne 'if (uservariables['NUT_dz'] == 'AWAY' and lastSeen > 120) then'
poste ton erreur et on verra.
enregistre en script_time.

Re: Tempo sur NUT

Publié : 17 nov. 2016, 19:14
par djam
Je reprend parcque je m'exprime très mal :)

Le code que tu ma filer

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
en l’état me retourne l'erreur :
lua:9: bad argument #1 to 'sub' (string expected, got nil)
Ensuite en remplacant la ligne n°8

Code : Tout sélectionner

s = otherdevices_lastupdate[d] 
par

Code : Tout sélectionner

 s = uservariables_lastupdate['NUT_dz'] 
et en nommant le script, "script_time_..." celui ci fonctionne mais en boucle, puisque le NUT est bien éloigne pendant plus de deux minutes...

Re: Tempo sur NUT

Publié : 17 nov. 2016, 19:21
par thier
lua 9 ton erreur doit être ligne 9. c'est quoi la ligne9?

Re: Tempo sur NUT

Publié : 17 nov. 2016, 19:31
par djam
J'ai repris ton code pour être sur et toujours la même erreur
Voici l'erreur exact :
EventSystem: in /home/pi/domoticz/scripts/lua/script_time_nut.lua: /home/pi/domoticz/scripts/lua/script_time_nut.lua:5: bad argument #1 to 'sub' (string expected, got nil)
et la ligne 5 est celle ci :

Code : Tout sélectionner

 year = string.sub(s, 1, 4) 
Je ne voit pas l'erreur .

Re: Tempo sur NUT

Publié : 17 nov. 2016, 19:42
par thier
J'ai déja eu cette erreur. Si je me souviens bien c'est que le device auquel tu veux calculer timedifference est mal défini. string expected, got nil veut dire qu'il cherche une chaine de caractèere et il ne trouve rien
Dans ton cas il s'agirait de local presence = uservariables["NUT_dz"]. problème de thypographie? essai local presence = uservariables['NUT_dz']. Sinon essai de remplacer local presence = uservariables['NUT_dz'] par local presence = 'le nom de ton device qui gère ta variable NUT-dz'

Re: Tempo sur NUT

Publié : 17 nov. 2016, 19:50
par thier
Maintenant c'est sport je reviens en fin de soirée. Post ton avancement.

Re: Tempo sur NUT

Publié : 17 nov. 2016, 20:20
par djam
Merci thier pour tes explications :idea:

En changeant la typo comme conseillé j'ai toujours le même code d'erreur.
Et pour
Sinon essai de remplacer local presence = uservariables['NUT_dz'] par local presence = 'le nom de ton device qui gère ta variable NUT-dz'
la variable NUT_dz est géré par le script "check_beacon_presence.py" (https://easydomoticz.com/detection-de-p ... -partie-2/)qui passe cette variable de "HOME" à "AWAY" ou vice versa quand détection du tracker NUT.

Encore merci thier
BON SPORT surtout en tout cas ;)

Re: Tempo sur NUT

Publié : 17 nov. 2016, 22:33
par thier
donc je mettrais comme toi
s = uservariables_lastupdate['NUT_dz']
local presence = uservariables["NUT_dz"]
et pour éviter que le script tourne en boucle je changerais
if (uservariables['NUT_dz'] == 'AWAY' and lastSeen > 120) then
par if (otherdevices [Presence-DZ]=='On' and uservariables['NUT_dz'] == 'AWAY' and lastSeen > 120) then

Quand à l'erreur que j'avais eue le message n'était pas le même. voir ici viewtopic.php?f=8&t=1818&p=16106#p16106

Re: Tempo sur NUT

Publié : 18 nov. 2016, 15:08
par djam
Salut à tous

Yess ! effectivement comme ça c 'est parfait, un ÉNORME merci a toi thier ;)
Avec tes explications et les changements apportés je comprend beaucoup mieux la logique de traitement, et comment ce "déroule" le code .

En espérant que cela puisse servir ...

Encore MERCI :)