Interrompre execution groupe avec timer

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 <\>.
nicol9
Messages : 20
Inscription : 06 janv. 2018, 18:34

Interrompre execution groupe avec timer

Message par nicol9 »

Bonsoir à tous,

Je sèche un peu sur la gestion de mon alarme.

Lorsque mon Security Panel est armée (Away ou Home) je souhaite que ldés lors qu'une oouverture passe à Open exécuter passer un groupe à ON pour allumer mes lumières en rouges.

L'allumage de la centrale xiaomi en rouge est instantanée, pour prévenir que l'alarme est active, et au bout de 10s les autres lumières et l'alarme se lance.

Or dans ce laps de temps de 10s je souhaiterais que si l'on désactive l'alarme, les lumières ne passent pas en rouge.
Malheureusement je ne sais pas comment faire, car dans les logs je vois bien passer le désarmement et donc le groupe passe à OFF mais le timer n'est pas interrompu et les lumières s'allument en rouge.

Code : Tout sélectionner

-- Si on détecte un mouvement ou une ouverture de porte ou fenetre et que l'alarme est à Arm Away ou Arm Home

commandArray = {}
--local capteurs = {"Sejour - Porte","Cuisine - Porte","Cellier - Porte","Salon - Fenetre","Sejour - Fenetre","Cuisine - Fenêtre","Bureau - Fenetre"} -- <== Tableau réels
local capteurs = {"Sejour - Porte","Cuisine - Porte","Cellier - Porte","Salon - Fenetre","Sejour - Fenetre","Xiaomi Door Sensor test","Cuisine - Fenêtre","Bureau - Fenetre"} -- <== Tableau pour tests avec détecteurs de tests


local messageAlarme = "Intrusion détectée"



-- si un capteur d'ouverture passe à OPEN ou le détecteur de mouvement passe à ON alors on déclenche l'alarme
if (
devicechanged['Sejour - Porte']=="Open" or
devicechanged['Cuisine - Porte']=="Open" or
devicechanged['Cuisine - Fenêtre']=="Open" or
devicechanged['Cellier - Porte']=="Open" or
devicechanged['Salon - Fenetre']=="Open" or
devicechanged['Sejour - Fenetre']=="Open" or
devicechanged['Salon - Mouvement']=="On" or
devicechanged['Cellier - Mouvement']=="On" or
devicechanged['Bureau - Fenetre']=="Open" or
devicechanged['Xiaomi Door Sensor test']=="Open" 
) then



    if otherdevices['PanneauSecurite'] == "Arm Away" or otherdevices['PanneauSecurite'] == "Arm Home" then
        
        --Envoi notification alarme
        commandArray['SendNotification']='Alarme#'..messageAlarme..' #0'
        
        -- Passe le groupe à ON pour allumer les lampes en rouge
        commandArray['Group:DeclencherAlarme']='On'
       
        
        -- Envoyer notification pour savoir où se trouve l'intrusion
        for cle, valeur in ipairs(capteurs) do
            if otherdevices[valeur] == 'Open' then
                messageAlarme = "Intrusion détectée : " ..valeur
                
            end
        end
    
        print (messageAlarme);
       
       
    
        
    end


end 



return commandArray

Et voici le code lors de mon passage, via clavier etiger, de l'alarme en désarmée

Code : Tout sélectionner

-- Gestion de l'alarme en fonction de la saisie sur le clavier


commandArray = {}


-- Armement alarme AWAY
if (devicechanged['AlarmeArmee'] == 'On' )  then


    --if (devicechanged['Xiaomi Door Sensor test'] == 'Open' )  then
    print('################Activation Alarme par clavier')
    commandArray['PanneauSecurite']='Arm Away'
      

end 


--Desactivation de l'alarme et extinction des lumieres
if (devicechanged['AlarmeDesarmee'] == 'Off' )  then
    print('################Desactivation Alarme par clavier')
    commandArray[1]={['PanneauSecurite']='Disarm'}
    commandArray[2]={['Group:DeclencherAlarme']='Off'}
end 


-- Armement alarme HOME
if (devicechanged['AlarmeHome'] == 'On' )  then

    print('################Activation Alarme HOME par clavier')
    commandArray['PanneauSecurite']='Arm Home'
      

end 






return commandArray
Malgré le parcours du forum je n'arrive pas à trouver/comprendre une solution. Merci pour votre aide
nicol9
Messages : 20
Inscription : 06 janv. 2018, 18:34

Re: Interrompre execution groupe avec timer

Message par nicol9 »

Je me réponds.

En mettant un AFTER XX dans le script LUA à la place du timer dans le Groupe ça fonctionne bien.
Répondre