Page 1 sur 2
verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 24 mai 2017, 18:03
par revers59
Bonjour à tous,
J'essais de comprendre comment fonctionne les scripts LUA mais j'ai un peu de mal, voici mon exemple qui me retourne une erreur du type :
Code : Tout sélectionner
commandArray = {}
if (devicechanged['Xiaomi Wireless Switch'] == 'Click' and
otherdevices['Xiaomi Door Sensor porte entree'] == 'Closed' and
otherdevices['Xiaomi Door Sensor porte jardin'] == 'Closed' and
otherdevices['Xiaomi Door Sensor salle de bain'] == 'Closed') then
commandArray['Domoticz Security Panel'] = 'Arm Away'
elseif commandArray['SendNotification']='Alerte #Alarme non activée car une porte ou fenetre est ouverte!'
end
end
return commandArray
j'ai aussi un peu de mal à comprendre ou placer des 'end'
Un grand merci d'avance pour vos suggestions
Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 24 mai 2017, 21:38
par papoo
à première vue il y aurait un end de trop
et pas besoin de elseif vu que tu ne donne pas de nouvelle condition
ton code donnerait donc
Code : Tout sélectionner
commandArray = {}
if (devicechanged['Xiaomi Wireless Switch'] == 'Click' and
otherdevices['Xiaomi Door Sensor porte entree'] == 'Closed' and
otherdevices['Xiaomi Door Sensor porte jardin'] == 'Closed' and
otherdevices['Xiaomi Door Sensor salle de bain'] == 'Closed') then
commandArray['Domoticz Security Panel'] = 'Arm Away'
else commandArray['SendNotification']='Alerte #Alarme non activée car une porte ou fenêtre est ouverte!'
end
return commandArray
Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 10 juin 2017, 09:11
par deennoo
Il serait interessant de faire evoluer ce script en envoyant dans la notification quelle porte ou fenetre est ouverte
Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 11 juin 2017, 08:48
par amelyfred
Salut
J'ai créé ce genre de script qui envoie un notification au cas où une porte est ouverte lors de la mise en route de l'alarme.
Code : Tout sélectionner
if (devicechanged['Badge Alarme'] == 'On') and otherdevices['Salon : Porte fenêtre'] == 'Open' then
message = 'Attention la porte fenêtre du salon est ouverte'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
commandArray['Statut Alarme'] = 'Off'
elseif (devicechanged['Badge Alarme'] == 'On') and otherdevices['Salle à manger : Porte fenêtre'] == 'Open' then
message = 'Attention la porte fenêtre de la salle à manger est ouverte'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
commandArray['Statut Alarme'] = 'Off'
elseif (devicechanged['Badge Alarme'] == 'On') and otherdevices['Chambre Parents : Porte fenêtre'] == 'Open' then
message = 'Attention la porte fenêtre de la chambre est ouverte'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
commandArray['Statut Alarme'] = 'Off'
elseif (devicechanged['Badge Alarme'] == 'On') then
commandArray['Statut Alarme'] = 'On'
elseif (devicechanged['Badge Alarme'] == 'Off') then
commandArray['Sirène Alarme'] = 'Off'
commandArray['Statut Alarme'] = 'Off'
end
if (devicechanged['Statut Alarme'] =='Off') then
message = 'Alarme désarmée'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
elseif (devicechanged['Statut Alarme'] =='On') then
message = 'Alarme armée'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
end
Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 12 juin 2017, 13:42
par yanael
Bonjour
Voilà ce que cela donne en blocky ( du moins une partie du blocky) chez moi :

- alarme.jpg (304.43 Kio) Consulté 12124 fois
du coup je vais en profiter pour essayer de comprendre vos lua

Re: RE: Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 14 juin 2017, 23:22
par deennoo
amelyfred a écrit :Salut
J'ai créé ce genre de script qui envoie un notification au cas où une porte est ouverte lors de la mise en route de l'alarme.
Code : Tout sélectionner
if (devicechanged['Badge Alarme'] == 'On') and otherdevices['Salon : Porte fenêtre'] == 'Open' then
message = 'Attention la porte fenêtre du salon est ouverte'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
commandArray['Statut Alarme'] = 'Off'
elseif (devicechanged['Badge Alarme'] == 'On') and otherdevices['Salle à manger : Porte fenêtre'] == 'Open' then
message = 'Attention la porte fenêtre de la salle à manger est ouverte'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
commandArray['Statut Alarme'] = 'Off'
elseif (devicechanged['Badge Alarme'] == 'On') and otherdevices['Chambre Parents : Porte fenêtre'] == 'Open' then
message = 'Attention la porte fenêtre de la chambre est ouverte'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
commandArray['Statut Alarme'] = 'Off'
elseif (devicechanged['Badge Alarme'] == 'On') then
commandArray['Statut Alarme'] = 'On'
elseif (devicechanged['Badge Alarme'] == 'Off') then
commandArray['Sirène Alarme'] = 'Off'
commandArray['Statut Alarme'] = 'Off'
end
if (devicechanged['Statut Alarme'] =='Off') then
message = 'Alarme désarmée'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
elseif (devicechanged['Statut Alarme'] =='On') then
message = 'Alarme armée'
os.execute('/home/pi/domoticz/scripts/shell/envoi_sms_fred.sh "'..message..'"')
end
Merci.
Simple et efficace.
Il doit y avoir plus simple facile.
Dans mon script alarme j'ai une formule qui regarde tout les detecteurs qui ont un nom commençant par PIR si l'un d'eux change d'etat alors que l'alarme est activé cela sonne.
Il doit y avoir moyen de reutiliser cette formule pour :
Savoir qu'elle porte/fenetre empeche la mise en route de l'alarme et laquelle active l'alarme...je vais chercher
Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 16 juin 2017, 10:57
par revers59
Moi j'en suis là maintenant avec mes 3 switchs planqués
le script qui permet de voir si tous les accès sont fermés avant l'activation de l'alarme
Code : Tout sélectionner
commandArray = {}
if (devicechanged['Xiaomi Wireless Switch'] == 'Click'
or devicechanged['Xiaomi Wireless Switch etage'] == 'Click'
or devicechanged['Xiaomi Wireless Switch garage'] == 'Click')
and (otherdevices['Xiaomi Door Sensor porte entree'] == 'Closed'
and otherdevices['Xiaomi Door Sensor porte jardin'] == 'Closed'
and otherdevices['Xiaomi Door Sensor salle de bain'] == 'Closed'
and otherdevices['Xiaomi Door Sensor Cuisine'] == 'Closed'
and otherdevices['Xiaomi Door Sensor Salon'] == 'Closed') then
print('AlarmPanel Arm Away')
commandArray['Domoticz Security Panel'] = 'Arm Away'
commandArray['SendNotification']='Alerte #Alarme armee en absence!'
commandArray['Xiaomi Wireless Switch'] = 'Off'
commandArray['Xiaomi Wireless Switch etage'] = 'Off'
commandArray['Xiaomi Wireless Switch garage'] = 'Off'
elseif
(devicechanged['Xiaomi Wireless Switch'] == 'Click'
or devicechanged['Xiaomi Wireless Switch etage'] == 'Click'
or devicechanged['Xiaomi Wireless Switch garage'] == 'Click') then
commandArray['Xiaomi Wireless Switch'] = 'Off'
commandArray['Xiaomi Wireless Switch etage'] = 'Off'
commandArray['Xiaomi Wireless Switch garage'] = 'Off'
commandArray['SendNotification']='Alerte #Alarme non activée car une porte ou fenêtre est ouverte!'
end
return commandArray
le script qui permet d'éteindre l'alarme
Code : Tout sélectionner
commandArray = {}
if (devicechanged['Xiaomi Wireless Switch'] == 'Double Click'
or devicechanged['Xiaomi Wireless Switch etage'] == 'Double Click'
or devicechanged['Xiaomi Wireless Switch garage'] == 'Double Click') then
commandArray['Domoticz Security Panel'] = 'Disarm'
commandArray['SendNotification']='Alerte #Alarme desarmee!'
commandArray['Xiaomi Wireless Switch'] = 'Off'
commandArray['Xiaomi Wireless Switch etage'] = 'Off'
commandArray['Xiaomi Wireless Switch garage'] = 'Off'
commandArray['Xiaomi Gateway Alarm Ringtone'] = 'Off'
end
return commandArray
le script blocky pour être informé d'une intrusion en cas d'abscence
Comme l'alarme xiaomi sonne que quelques secondes j'ai opté pour ça pour la faire sonner plus longtemps :
dans une scene :
et une scene temporise en ARM away uniquement pour pouvoir rentrer chez soi

Celle ci n'est pas utilisée dans mon Arm Home
Reste à faire :
j'a aussi un petit raspberry pi qui gère les video et la musique sous la TV relié à un ampli, il faut que je trouve le moyen de reproduire wles action d'alimentation de l'appli Yatse qui fait du CEC : veille et CEC: Activation pour pouvoir allumer l'ampli si une porte ou une fenêtre s'ouvre en mon absence car l'alarme xiaomi seule ne me convient pas forcement.
Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 25 juin 2017, 22:24
par chaosgreg
Salut, je te propose une partie de ma fonction, qui permet de vérifier si mes portes sont ouverte ou fermer et me le notifie par sms (seulement les portes ouvertes).
Il te suffit de mettre les capteurs à vérifier dans la variable
Code : Tout sélectionner
--===========================================================--
--============= Liste des capteurs à vérifier ===============--
--===========================================================--
local capteurs = { "Porte entrée/couloir", "Porte terrasse" }
--===========================================================--
--===========================================================--
--===========================================================--
local message
function verifcapteur()
local capteurp = ' '
local dooropen = 0
print("Vérification des capteurs...")
for cle, valeur in ipairs(capteurs) do
if otherdevices[valeur] == 'Open' then
capteurp = capteurp..' -> '..valeur..' '
dooropen = dooropen + 1
end
end
if (dooropen == 1) then
message = "Attention ! La porte :"..capteurp.."est ouverte"
return true
elseif (dooropen >= 2) then
message ="Attention ! Les portes :"..capteurp.."sont ouvertes"
return true
else
message = "Aucune portes ouvertes détecté"
return false
end
print(message)
end
Tu peux mettre un "return message" à la fin pour que la fonction retourne le message de la variable directement ou un if avec un "return true ou false" selon l'état.
[Edit]
J'ai modifier le code en ajoutant un return, la fonction retourne "true" si au moins une porte est ouverte et "false" si tout est fermé. Tu peux également récupéré le message dans la variable "message".
Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 10 nov. 2017, 09:38
par Wolfen38
revers59 a écrit :
dans une scene :
et une scene temporise en ARM away uniquement pour pouvoir rentrer chez soi

Celle ci n'est pas utilisée dans mon Arm Home
Salut,
j'ai le problème de durée de sonnerie avec mon gateway, il sonne 10secondes puis s'arrete.
Je commence juste en domoticz et je ne sais pas comment faire, entre autre utiliser les scenes.
Tu pourrais m'expliquer stp ?
Pour le moment j'ai juste ce scenario :

Re: verifier si les portes et fenêtres sont fermées avant activation de l'alarme.
Publié : 12 nov. 2017, 22:40
par Jeff
Merci pour la fonction @chaosgreg, je cherchais depuis un bon moment à faire ce type de script, j'avais utilisé blocky mais je préfère le lua.
J'ai rajouté une condition de plus pour mes capteurs de porte qui sont ceux de mon alarme avec des états différents (Etat : Normal / Alarm)
Je partage à mon tour pour aider.
Code : Tout sélectionner
-- script_device_ouvrants.lua
--
-- ce script permet de tester si une porte ou fenetre est ouverte en actionnant l'alarme
-- chargement des modules
package.path = package.path..";/home/jeff/domoticz/scripts/lua/?.lua"
require "modules"
--------------------------------
------ Tableau à éditer ------
--------------------------------
local capteurs = {"Fenetre Parents","Fenetre Alexi","Fenetre Ch.Bleue", "Fenetre Leane", "Porte entree","Porte service","Porte garage"}
local Escalier2 = 'Escalier2' -- sert à tester, à remplacer par le device "Alarm"
local ouvrant = 'Ouvrant'
local message
local etat
--------------------------------
-- Fin du tableau à éditer --
--------------------------------
--------------------------------
------ Début fonction ------
--------------------------------
function verifcapteur()
local capteurp = ' '
local ouvrantopen = 0
print("Vérification des capteurs ...")
for cle, valeur in ipairs(capteurs) do
if otherdevices[valeur] == 'Open' or otherdevices[valeur] == 'Alarm' then
capteurp = capteurp..' -> '..valeur..' '
ouvrantopen = ouvrantopen + 1
end
end
if (ouvrantopen == 1) then
message = "Attention ! L'ouvrant :"..capteurp.."est ouvert"
--return true
etat = true
return message
elseif (ouvrantopen >= 2) then
message ="Attention ! Les ouvrants :"..capteurp.."sont ouverts"
etat = true
return message
else
message = "Aucun ouvrant ouvert détecté"
etat = false
return message
end
--print(message)
end
--------------------------------
------ Fin de fonction ------
--------------------------------
commandArray = {}
-- condition test, à remplacer par Alarm == 'Away'
if devicechanged[Escalier2] == 'On' or devicechanged[Escalier2] == 'Off' then
verifcapteur()
if (etat == true) then
print(message)
--commandArray[ouvrant]='On'
switchOn(ouvrant)
print('Ouvrant ouvert')
elseif (etat == false) then
print(message)
switchOff(ouvrant)
print('Ouvrant fermé')
end
end
return commandArray