Page 1 sur 1
Condition de temps sur virtuel
Publié : 06 févr. 2018, 09:20
par Wolfen38
Salut à tous,
Je souhaiterai allumer lorsque mon détecteur se déclenche et qu'un inter virtuel est sur off depuis 10 secondes.
Je ne trouve pas comment écrire en lua cette condition avec la durée...
Merci.
Re: Condition de temps sur virtuel
Publié : 06 févr. 2018, 12:32
par Wolfen38
En farfouillant, j'ai écrit ca, vous en pensez quoi ? ca peut fonctionner ?
Code : Tout sélectionner
local sonde = 'Virtuel SDB'
time = os.date("*t")
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
local lastSeen = timedifference(sonde)
if (lastSeen > 10 ) and (otherdevices['Détecteur SDB'] == 'On') then
commandArray['Group:Plafonnier WC']='On'
end
Re: Condition de temps sur virtuel
Publié : 06 févr. 2018, 18:15
par thier
Le plus simple c'est d'essayer!
Tu remplaces commandArray['Group:Plafonnier WC']='On' par print('hiphiphiphourra'). Si tu vois hiphiphiphourra inscrit dans les logs de domo, c'est que ça fonctionne.
Re: Condition de temps sur virtuel
Publié : 06 févr. 2018, 18:36
par Wolfen38
thier a écrit :Le plus simple c'est d'essayer!
Tu remplaces commandArray['Group:Plafonnier WC']='On' par print('hiphiphiphourra'). Si tu vois hiphiphiphourra inscrit dans les logs de domo, c'est que ça fonctionne.
Bon, bah ca fonctionne pas, ca s'allume pas du tout

Re: Condition de temps sur virtuel
Publié : 06 févr. 2018, 18:49
par thier
Pas d'erreur dans les logs?
Tu remplace (lastSeen > 10 ) par timedifference('Virtuel SDB') > 10
Edit: si tu veux l'exécuter sur le changement d'état à On de otherdevices['Détecteur SDB'] == 'On', il faut utiliser la fonction devicechanged ['Détecteur SDB'] =='On' et que ce soit un script de type device.
Tant qu'à faire tu ouvres une parenthése après If que tu referme avant then
Re: Condition de temps sur virtuel
Publié : 07 févr. 2018, 21:05
par Wolfen38
J'en suis la, dans un script time
Code : Tout sélectionner
t1 = os.time()
s = otherdevices_lastupdate['Virtuel SDB']
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)
commandArray = {}
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if (otherdevices['Detecteur SDB'] == 'On' and difference > 10) then
commandArray['Group:Plafonnier WC']='On FOR 3'
end
return commandArray
Le plafonnier s'allume, mais apres un certains temps seulement, parfois 5 sec, parfois 30....
Des idées ?
Re: Condition de temps sur virtuel
Publié : 07 févr. 2018, 21:36
par thier
C'est un script time donc il s'exécute que toutes les minutes.
Si tu veux une réaction quand otherdevices['Detecteur SDB'] == 'On' il faut un scrip_device qui va se lancer à chaque changement de ['Detecteur SDB'].
Pour qu'il fonctionne change otherdevices['Detecteur SDB'] == 'On' par devicechanged ['Detecteur SDB'] == 'On' et enregistre en script_device. A chaque fois que ton détecteur changera d'état à On, si ta condition de temps est vrai, le script s'exécutera.
Re: Condition de temps sur virtuel
Publié : 08 févr. 2018, 07:51
par Wolfen38
Salut, merci de ton aide, ca avance. Je teste et te dit ca.