Annuler une action décalée dans le temps
Annuler une action décalée dans le temps
Bonjour,
Y a-t-il un moyen d'annuler une action retardée, déclenché par un "On After XX" dans un script LUA ?
J'ai le souci suivant : je détecte un badge RFID (via un boitier EM4100 en USB) sur mon raspberry pi 2, afin de gérer l'activation/désactivation de mon alarme.
Pour l'activation, le badge fait que l'alarme est activée au bout de 30 secondes (pour laisser le temps de sortir), via un commandArray['setaway']="On AFTER 30" (setaway étant un device custom)
J'aimerais aussi pouvoir annuler l'activation retardée si je rebadge dans les 30 secondes. J'ai pour l'instant ajouté un garde fou via une variable utilisateur, mais ça ne traite pas tous les cas... la solution la plus propre serait d'annuler le "On AFTER"
Une idée sur une solution à mettre en oeuvre ?
--
Bruno
Y a-t-il un moyen d'annuler une action retardée, déclenché par un "On After XX" dans un script LUA ?
J'ai le souci suivant : je détecte un badge RFID (via un boitier EM4100 en USB) sur mon raspberry pi 2, afin de gérer l'activation/désactivation de mon alarme.
Pour l'activation, le badge fait que l'alarme est activée au bout de 30 secondes (pour laisser le temps de sortir), via un commandArray['setaway']="On AFTER 30" (setaway étant un device custom)
J'aimerais aussi pouvoir annuler l'activation retardée si je rebadge dans les 30 secondes. J'ai pour l'instant ajouté un garde fou via une variable utilisateur, mais ça ne traite pas tous les cas... la solution la plus propre serait d'annuler le "On AFTER"
Une idée sur une solution à mettre en oeuvre ?
--
Bruno
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Annuler une action décalée dans le temps
Salut,
Il me semble que ce n'est pas possible,
Par contre il y a surement possibilité de jouer avec le panneau de sécurité qui possède une tempo d'activation propre et paramétrable dans les préférences.
Sa tempo peut être stoppée.
En gros faire un script qui va si tu badges activer ce panneau (qui ne sera réellement activé qu'après le délai réglé)
Et qui va si tu rebadges le désactiver.
Tu te sers en suite de l'état du panneau de sécurité pour tes autres actions dans un script_security_xxxx.lua script qui réagit exclusivement aux changements d'état du panneau de sécurité.. Ou autres..
N'ésites pas à demander plus d'infos si ce n'est pas clair.
Bien venu
Il me semble que ce n'est pas possible,
Par contre il y a surement possibilité de jouer avec le panneau de sécurité qui possède une tempo d'activation propre et paramétrable dans les préférences.
Sa tempo peut être stoppée.
En gros faire un script qui va si tu badges activer ce panneau (qui ne sera réellement activé qu'après le délai réglé)
Et qui va si tu rebadges le désactiver.
Tu te sers en suite de l'état du panneau de sécurité pour tes autres actions dans un script_security_xxxx.lua script qui réagit exclusivement aux changements d'état du panneau de sécurité.. Ou autres..
N'ésites pas à demander plus d'infos si ce n'est pas clair.
Bien venu
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Annuler une action décalée dans le temps
Bonjour
On peut aussi envisager qq chose avec les interrupteurs qui ont un délai allumage/extinction dans leurs propriétés
Du style delai allumage 15 sec et si tu rebadge ca passe a off avec un délai extinction à 0
On peut aussi envisager qq chose avec les interrupteurs qui ont un délai allumage/extinction dans leurs propriétés
Du style delai allumage 15 sec et si tu rebadge ca passe a off avec un délai extinction à 0
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Objectif : WAF > 1
Re: Annuler une action décalée dans le temps
Merci pour vos réponses, je regarde cela ce soir. J'aime bien l'approche avec les interrupteurs avec délai d'allumage 
Sinon j'ai une approche un peu plus "bidouille" : je déclenche un device "text", en y positionnant comme valeur l'heure courante (ou toute autre valeur unique), et en la positionnant aussi dans une variable. A la détection du déclenchement de ce device, je compare la valeur du device à la valeur de la variable, et ne déclenche le traitement que si elles sont égales. Et si je rebadge, je passe la variable utilisateur à 0.
Je vous tiens au courant dès que je m'y colle, encore merci pour vos suggestions
Sinon j'ai une approche un peu plus "bidouille" : je déclenche un device "text", en y positionnant comme valeur l'heure courante (ou toute autre valeur unique), et en la positionnant aussi dans une variable. A la détection du déclenchement de ce device, je compare la valeur du device à la valeur de la variable, et ne déclenche le traitement que si elles sont égales. Et si je rebadge, je passe la variable utilisateur à 0.
Je vous tiens au courant dès que je m'y colle, encore merci pour vos suggestions
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Annuler une action décalée dans le temps
patrice a écrit :Bonjour
On peut aussi envisager qq chose avec les interrupteurs qui ont un délai allumage/extinction dans leurs propriétés
Du style delai allumage 15 sec et si tu rebadge ca passe a off avec un délai extinction à 0
oui c'est sympa
mais... on est exactement dans la problématique de stopper un On AFTER
désolé ça ne fonctionne pas
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Annuler une action décalée dans le temps
Ah, le c.. il attend ces 15 sec pour considérer qu"il est à ON c'est ça ?
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Objectif : WAF > 1
Re: Annuler une action décalée dans le temps
Bonjour,
Pour stopper un On AFTER, je renvoie son propre état à l'interrupteur.
Je pense que le fait d'envoyer un nouvel ordre à l'interrupteur, "écrase" l'ordre différé avec un ordre immédiat.
Pour stopper un On AFTER, je renvoie son propre état à l'interrupteur.
Code : Tout sélectionner
commandArray['Tempo'] = otherdevices['Tempo']-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Annuler une action décalée dans le temps
c'est ce que vient de proposer Patrice en somme ?
je ne comprends plus, c'est fonctionnel chez toi ?
si ton switch est à Off, tu le passes à On (avec delai de 15s) il ne passera à On que dans 15s
et tu as beau lui envoyer d'autres ordres (même son propre état, donc à l'instant t c'est toujours Off), il sait que de toute façon dans 15s il faut qu'il exécute l'ordre On.. et ici c'est bien ce qu'il se passe
je ne comprends plus, c'est fonctionnel chez toi ?
si ton switch est à Off, tu le passes à On (avec delai de 15s) il ne passera à On que dans 15s
et tu as beau lui envoyer d'autres ordres (même son propre état, donc à l'instant t c'est toujours Off), il sait que de toute façon dans 15s il faut qu'il exécute l'ordre On.. et ici c'est bien ce qu'il se passe
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Annuler une action décalée dans le temps
Bon, je viens de tester en le forçant à OFFpar Lua et le fait de passer l'ordre inhibe bien le déclenchement prévu dans 15 sec.
commandArray = {}
commandArray['Tempo'] = 'Off'
return commandArray
commandArray = {}
commandArray['Tempo'] = 'Off'
return commandArray
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Objectif : WAF > 1
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Annuler une action décalée dans le temps
ce que je propose plus en détail,
avoir un switch virtuel commuté (cf. JSON toggle) par le passage du badge,
on le nommera pour l'exemple 'badge'
faire un petit script réagissant à son changement d'état, donc de type Device
donc le but sera d'activer ou désactiver le panneau de sécurité (nommé 'SecPanel' pour l'exemple)
puis un autre qui va agir suivant l'activation/désactivation du panneau de sécurité (de type Security cette fois ci)
avoir un switch virtuel commuté (cf. JSON toggle) par le passage du badge,
on le nommera pour l'exemple 'badge'
faire un petit script réagissant à son changement d'état, donc de type Device
donc le but sera d'activer ou désactiver le panneau de sécurité (nommé 'SecPanel' pour l'exemple)
Code : Tout sélectionner
commandArray = {}
if(devicechanged['mpd_rock'] == 'On') then
commandArray['SecPanel'] = "Arm Away"
print('activation de l'alarme dans 15 secondes')
elseif(devicechanged['mpd_fun'] == 'Off) then
commandArray['SecPanel'] = "Disarm"
print('désactivation alarme')
end
return commandArray
Code : Tout sélectionner
commandArray = {}
if globalvariables['Security'] == 'Armed Away' then
print('alarme activée')
-- autres actions ici
elseif globalvariables['Security'] == 'Disarmed' then
print('alarme désactivée')
-- autres actions ici
end
return commandArray
Dernière modification par vil1driver le 05 janv. 2016, 14:42, modifié 1 fois.
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien