Annulation des évenements

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 <\>.
nalbarel
Messages : 16
Inscription : 25 nov. 2016, 15:07

Annulation des évenements

Message par nalbarel »

Bonjour,

Je commence à me battre sérieusement avec l'exécution des évènements Domoticz.
J'ai un script de déclenchement d'alarme qui crée des évènements avec tempo e.g. "Ouvre les volets après 20 sec.".
J'aimerais annuler cet évènement en cas de désactivation de l'alarme (dans les 20 sec imparties). Comment faire ?

PS : je ne peux pas arrêter mes sirènes ("Sirène = 'Off' ne marche pas) donc il est important que je puisse annuler l'évènement.

Nicolas
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Annulation des évenements

Message par Neutrino »

je dirais (pas testé) en lui renvoyant l'état dans lequel il est déjà.
Ex :
Volets à Open dans 20s.
20s plus tard, les volets passe à open.

Volets à Open dans 20s.
~10 s plus tard
Envoie de l'ordre Volets à close (ou off suivant son état) ce qui a pour effet d'écraser l'ancien ordre.
~10s plus tard , les volets ne bougent pas.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
agadoc
Messages : 10
Inscription : 03 avr. 2017, 14:49

Re: Annulation des évenements

Message par agadoc »

Gérer du time avec domoticz c'est pas la gloire. Par contre en s'amusant un dummy virtuel et une variable utilisateur ca devrait pouvoir le faire..
J'aurais tendance à faire comme ca :

Tu crées un dummy virtuel virtual_alarm et une variable utilisateur annul_alarm de type entier que tu positionnes a 0

Code : Tout sélectionner

if security_status = alarm away and detecteur = on do
   set virtual_alarm = on for 20 seconds
   set annul_alarm = 1
end if
ici on détecte l'intrusion mais avant de tout déclencher on passe le virtuel sur on afin de te laisser le temps de la désactiver :

Code : Tout sélectionner

if security_status = disarm and virtual_alarm = on do 
   set virtual_alarm = off 
   set annul_alarm = 0
else if security_status = alarm away and virtual_alarm = off do
       if annul_alarm = 1 do
              ton script d'ouverture de volets
              set annul_alarm = 0
       end if
end if
- Dans la 1ere condition, le changement d'état de ton alarme (en passant d'arm away a disarm) déclenchera le script et si tu le fais pendant les 20s (le virtual sera tjs sur on), tu désactiveras le virtual et la condition étant respectée tu sortira de la condition. Fin de l'histoire.
- Si ce n'est pas le cas, et que tu ne désarme pas ton alarme, alors tu déclancheras quand meme le script quand ton virtual repassera a off et à ce moment tu rentreras dans la 2eme condition et feras tout ce qu'il faut (sirene, sms etc..)
- La variable utilisateur sert uniquement a vérifier que tu n'est pas en train d'activer ton alarme, en effet lorsque tu armeras ton alarme, ces 2 conditions seront également réunies et tu risque de déclencher ton alarme lorsque tu l'armeras. Cette condition te permettra d'éviter ca.

Voilà j'ai peut être oublier quelque chose, mais dans l'idée c'est ca.

Reste plus qu'a savoir si le " set xxx = xxx for xx seconds " fonctionne, la dernière fois que j'ai essayé ca n'a pas fonctionné.
nalbarel
Messages : 16
Inscription : 25 nov. 2016, 15:07

Re: Annulation des évenements

Message par nalbarel »

Merci pour ces idées.

Pour être plus précis, j'ai, dans mon script d'alarme :

Code : Tout sélectionner

 commandArray[1]={[Volets]='On AFTER 20'}
 commandArray[2]={[Volets]='Off AFTER 1000'}
Si j'envoies, via un autre script,

Code : Tout sélectionner

commandArray['Volets']='On'
, la commande

Code : Tout sélectionner

 'Off AFTER 1000' 
s'exécute quand même '(i.e. n'est pas écrasée).

Je pense que l'approche la plus fiable est l'utilisation d'une variable (ou, à défaut, interrupteur) comme l'a décrit agadoc.

Nicolas
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Annulation des évenements

Message par vil1driver »

ça devrait pourtant fonctionner :|

et sans le AFTER 20 ? (juste On)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
nalbarel
Messages : 16
Inscription : 25 nov. 2016, 15:07

Re: Annulation des évenements

Message par nalbarel »

vil1driver a écrit :ça devrait pourtant fonctionner :|
Effectivement ça fonctionne sur mon script de test. J'avais fait un malencontreux copier-coller sur une condition.
Reste plus qu'à trouver pourquoi cela ne marche pas sur mon script d'alarme mais je crois savoir pourquoi.
Merci bcp.

Nicolas
Répondre