Bonjour
je possède des interrupteurs Xiaomi zigbee que je contrôle avec une zigate. Sur domoticz ce sont des "switch selectors" avec des niveaux 0, 10, 20 et 30 nommés respectivement "One click" "Two clicks" etc
Je souhaiterai déclencher un script après une séquence de clics donnés sur un temps limité.
Par exemple lorsque l'interrupteur passe au niveau 30 si dans les 5 secondes qui suivent il passe au niveau 0 puis 10 l'action se déclenche. Il ne se déclenche pas si les 5 secondes sont dépassées.
Ce système permettrait d'associer une infinité d'action à un seul interrupteur avec une sorte de code de séquence connu seulement par les parents. Ainsi les clics intempestifs des enfants n'auront plus de conséquence sur le déclenchement des scripts !
J'ai essayé de lire la documentation dzvents sur la gestion du temps et des variables globales pour naviguer entre deux scripts mais je ne m'en sors pas du tout !
Quelqu'un a t'il une idée ?
Merci pour votre aide
Sequence de clics sur un interrupteur
-
Pierrot Jack
- Messages : 10
- Inscription : 29 août 2019, 15:45
-
Pierrot Jack
- Messages : 10
- Inscription : 29 août 2019, 15:45
Re: Sequence de clics sur un interrupteur
J'ai trouvé une solution un peu bricolée mais qui fonctionne pour une séquence de quatre clics puis trois clics si ils sont réalisés dans les 5 secondes après les quatre clics.
Etape 1 est un interrupteur virtuel qui ne sert que de minuteur, Etape 2 lance le script que je souhaite rendre moins accessible.
Etape 1 est un interrupteur virtuel qui ne sert que de minuteur, Etape 2 lance le script que je souhaite rendre moins accessible.
Code : Tout sélectionner
if (device.state == 'Tree clicks') then
if (domoticz.devices('Etape1').state == 'Off') then
if (domoticz.devices('Lampe3').state == 'On') then
domoticz.devices('Lampe3').switchOff()
else
domoticz.devices('Lampe3').switchOn()
end
else
domoticz.devices('Etape2').switchOn().forSec(5).checkFirst()
end
end
if (device.state == 'Four+ clicks') then
domoticz.devices('Etape1').switchOn().forSec(5).checkFirst()