Condition de temps sur virtuel

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 <\>.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Condition de temps sur virtuel

Message 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.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Condition de temps sur virtuel

Message 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
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Condition de temps sur virtuel

Message 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.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Condition de temps sur virtuel

Message 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 :(
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Condition de temps sur virtuel

Message 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
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Condition de temps sur virtuel

Message 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 ?
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Condition de temps sur virtuel

Message 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.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Condition de temps sur virtuel

Message par Wolfen38 »

Salut, merci de ton aide, ca avance. Je teste et te dit ca.
Répondre