Temporiser le changement d'état d'une variable LUA
Temporiser le changement d'état d'une variable LUA
Bonjour à tous
je débute en LUA et je souhaiterai temporiser une sortie en passant obligatoirement par une variable, je compte réutiliser la variable par la suite je ne comprends pas ou est le probleme. C'est bien la variable que je souhaite temporiser et non directement la sortie Piface Q6
Merci d'avance
je débute en LUA et je souhaiterai temporiser une sortie en passant obligatoirement par une variable, je compte réutiliser la variable par la suite je ne comprends pas ou est le probleme. C'est bien la variable que je souhaite temporiser et non directement la sortie Piface Q6
Merci d'avance
- Pièces jointes
-
- Capture.PNG (12.18 Kio) Consulté 4759 fois
Re: Temporiser le changement d'état d'une variable LUA
Enleve ton premier after 10 et remplace ton On par On after 10
PS: utilise les balises code plutot qu'une photo. C'est plus lisible et j'aurai pu écrire la modification.
PS: utilise les balises code plutot qu'une photo. C'est plus lisible et j'aurai pu écrire la modification.
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.
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Temporiser le changement d'état d'une variable LUA
C'est curieux la manière d'utiliser tes variables :
C'est effectivement la syntaxe utilisé pour mettre à jour les variables de Domoticz.
Alors dans ces 2 lignes de code, tu travaille avec des variables locales.
et
Alors le changement d'état de ta variable devrait simplement être
Si tu utilises les variables de domoticz, il faut effectivement les créer au départ, et l'utilisation de l'état d'une variable sera
Ou bien alors je n'ai pas compris le fonctionnement des variables.
Code : Tout sélectionner
commandArray['Variable:Alarme_Activee = '1'']Alors dans ces 2 lignes de code, tu travaille avec des variables locales.
Code : Tout sélectionner
local Alarme_Activée = 0Code : Tout sélectionner
if (Alarme_Activée == 1) thenCode : Tout sélectionner
Alarme_Activee = 1Code : Tout sélectionner
if (uservariables['Alarme_Activée']) == 1 then Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Temporiser le changement d'état d'une variable LUA
C'est ça.
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.
Re: Temporiser le changement d'état d'une variable LUA
Bonjour
Merci pour vos réponses qui m'ont bien aidé, j'ai refondu entièrement mon script. Mon projet consiste à réaliser une alarme activable et désactivable via un lecteur de Tags RFID qui n'est pas étanche et se trouve forcément dans une zone protégée. Il me faut donc une temporisation d'entrée et de sortie pour me laisser le temps d'activer et de désactiver l'alarme avant qu'elle ne s'enclenche.
Aujourd'hui ce script fonctionne (beaucoup grave à vous) mais sans aucune temporisation. J'utilise les uservariables car c'est plus facile pour moi débutant de tester mon script via le tableau des variables utilisateurs que les print variables via le fichier log. De plus à l'avenir je souhaite écrire mes 2 variables ( temporisation entrée et sortie) avec une page de configuration en html.
J'arrive bien à temporiser un "device" du genre commandArray['Piface Q7 Alarme lumineuse'] = 'On AFTER 20'
mais pas une "variable" du genre commandArray['Variable:Alarme_activée']= '1 AFTER 20'
De plus je souhaiterai récupérer la valeur de ces temporisations dans des uservariables (ou éventuellement dans une variable local qui est égale à une uservariables si il faut absolument passer par là) du genre commandArray['Variable:Alarme_activée']= '1 AFTER Variable:Tempo_entrée'
Je débute tout juste en lua et je galère pas mal
merci d'avance
le script :
Merci pour vos réponses qui m'ont bien aidé, j'ai refondu entièrement mon script. Mon projet consiste à réaliser une alarme activable et désactivable via un lecteur de Tags RFID qui n'est pas étanche et se trouve forcément dans une zone protégée. Il me faut donc une temporisation d'entrée et de sortie pour me laisser le temps d'activer et de désactiver l'alarme avant qu'elle ne s'enclenche.
Aujourd'hui ce script fonctionne (beaucoup grave à vous) mais sans aucune temporisation. J'utilise les uservariables car c'est plus facile pour moi débutant de tester mon script via le tableau des variables utilisateurs que les print variables via le fichier log. De plus à l'avenir je souhaite écrire mes 2 variables ( temporisation entrée et sortie) avec une page de configuration en html.
J'arrive bien à temporiser un "device" du genre commandArray['Piface Q7 Alarme lumineuse'] = 'On AFTER 20'
mais pas une "variable" du genre commandArray['Variable:Alarme_activée']= '1 AFTER 20'
De plus je souhaiterai récupérer la valeur de ces temporisations dans des uservariables (ou éventuellement dans une variable local qui est égale à une uservariables si il faut absolument passer par là) du genre commandArray['Variable:Alarme_activée']= '1 AFTER Variable:Tempo_entrée'
Je débute tout juste en lua et je galère pas mal
merci d'avance
le script :
Code : Tout sélectionner
commandArray = {}
--Activation et désactivation de l'alarme
if (devicechanged['Lecteur Tag'] == 'Locked') then
commandArray['Variable:Alarme_activée']= '1'
end
if (devicechanged['Lecteur Tag'] == 'Unlocked') then
commandArray['Variable:Alarme_activée']= '0'
commandArray['Variable:Intrusion_détecteur']= '0'
commandArray['Variable:Intrusion_capteur']= '0'
commandArray['Variable:Alarme']= '0'
end
-- Alarme active et Intrusion par détecteur volumétrique
if (uservariables['Alarme_activée']) == 1 and
((devicechanged['Détecteur Mezzanine'] == 'On') or
(devicechanged['Détecteur bureau'] == 'On') or
(devicechanged['Détecteur entree'] == 'On') or
(devicechanged['Détecteur garage'] == 'On') or
(devicechanged['Détecteur dépendance 1'] == 'On') or
(devicechanged['Détecteur dépendance 2'] == 'On')) then
commandArray['Variable:Intrusion_détecteur']= '1'
end
-- Alarme active et Intrusion par capteur porte
if (uservariables['Alarme_activée']) == 1 and
((devicechanged['Capteur portail garage'] == 'On') or
(devicechanged['Capteur portail dépendance'] == 'On') or
(devicechanged['Capteur porte dépendance'] == 'On') or
(devicechanged['Capteur abris jardin'] == 'On')) then
commandArray['Variable:Intrusion_capteur']= '1'
end
-- Variable alarme
if ((uservariables['Alarme_activée']) == 1 and
(uservariables['Alarme']) == 0) and
((uservariables['Intrusion_détecteur']) == 1 or
(uservariables['Intrusion_capteur']) == 1) then
commandArray['Variable:Alarme']= '1'
end
-- Activation de la sortie Alarme sonore et Alarme Lumineuse
if (uservariables['Alarme']) == 1 then
commandArray['Piface Q6 Alarme sonnore'] = 'On AFTER Variable:Tempo_sortie'
commandArray['Piface Q7 Alarme lumineuse'] = 'On'
end
if (uservariables['Alarme']) == 0 then
commandArray['Piface Q6 Alarme sonnore'] = 'Off'
commandArray['Piface Q7 Alarme lumineuse'] = 'Off'
end
return commandArray
Re: Temporiser le changement d'état d'une variable LUA
Bonjour,Nicoweb56 a écrit : 20 janv. 2019, 14:04 Mon projet consiste à réaliser une alarme activable et désactivable via un lecteur de Tags RFID qui n'est pas étanche et se trouve forcément dans une zone protégée. Il me faut donc une temporisation d'entrée et de sortie pour me laisser le temps d'activer et de désactiver l'alarme avant qu'elle ne s'enclenche.
Pour la temporisation de sortie, pourquoi ne pas profiter de celle liée au security panel de Domoticz? On n'est pas forcé de l'utiliser (c'est pas le meilleur truc, amha, dans Domoticz) mais juste driver ses états via les évènements du lecteur de tag ce qui permet de profiter du délai d'activation.
Ca fait déjà un sens de réglé.
Pour l'autre sens, pour ma part c'est via le bluetooth que les désactivations se font. Normalement, de la rue c'est bon sauf qd je rentre par la porte de garage (métallique). En pareil cas, l'ouverture de la porte déclenche une exception de 30s (suffisant en pratique pour me détecter en cours d'ouverture, insuffisant pour forcer la porte de service garage/buanderie) sur le seul capteur de mouvement interne au garage.
C'est géré directement via le script d'alarme (qui s'inspire pas mal d'idées du wiki alarme, surtout concernant les conventions de nommage qui facilitent bien les extensions ultérieures sans modif des scripts au coeur du système).
Si tu as un portillon par exemple, tu peux ajouter un capteur d'ouverture dessus qui peut déclencher une exception sur un autre capteur de la zone ou est le lecteur de tag: Un voleur passera par dessus sans ouvrir et n'aura pas la tempo. Un usager "normal" l'aura.
A adapter librement en fct des lieux.
Bon courage!