Allumer son alarme en Home pendant la nuit et désarmer au lever

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 <\>.
samagace
Messages : 2
Inscription : 08 nov. 2017, 19:07

Allumer son alarme en Home pendant la nuit et désarmer au lever

Message par samagace »

Help!
Je tente de créer mon premier script pour agir sur mon alarme: en bref je souhaite qu'elle s'active en Home si plus de mouvements pendant 1h30 et nuit, puis désactiver lorsqu'il y a du mouvement dans les chambres (on attend un peu pour les blagues potaches? hum?)

voici, en toute modestie mon script (qui ne marche pas...) quelqu'un peut m'aider?

------------------------------------------------------------
-- Title: script_device_AlarmHome.lua
-- Date: 19-11-2017
-- nécéssite 2 switch virtuels "présence maison" qui s'allume a tout mouvement et s'étteind après 1h30 et nuit lux qui passe a on si moins de 300 lux sur tous les capteurs.
-- si alarm disarmed et pas de mouvements pendant 1h30 et pas de lumière (nuit) alors armement en alarm home
-- si détecté, alerter et définir le drapeau d'alarme
-- lorsque mouvement détecté dans les chambres ou escalier: désarmer alarme

commandArray = {}
tc=next(devicechanged)

if (devicechanged['présence maison'] == 'OFF') and (devicechanged['nuit lux'] == 'ON') and (devicechanged['Security Panel'] == 'Disarm') then

print("panneau d_alarme Arm HOME")

commandArray ['Security Panel'] = 'Arm Home'
commandArray ['AlarmDetected'] = 'ON'

end



if (devicechanged['PIR_Fenetre chambre parentsBurglar'] == 'ON') then

elseif (devicechanged['PIR_Velux EloBurglar'] == 'ON') then
elseif (devicechanged['PIR_Porte cuisine'] == 'ON') then

print("panneau d_alarme Désarmé")

commandArray ['Security Panel'] = 'Disarm'

commandArray ['AlarmDetected'] = 'OFF'

end



return commandArray
------------------------------------------------------------------

merci d'avance
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

Re: Allumer son alarme en Home pendant la nuit et désarmer au lever

Message par balajol »

Bonsoir (ou Bonjour)
Une Petite question, que ce passe t' il si une personne a besoin de se lever la nuit pour une "envie pressante" ou tout simplement pour boire un verre d'eau ?
J'ai une alarme avec le mode "Home " et il est très simple de prendre l'habitude de l'arrêter au lever :?
Simple avis de ma part ;)
cdt
Bertrand
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Allumer son alarme en Home pendant la nuit et désarmer au lever

Message par landaisbenj »

balajol a écrit :Bonsoir (ou Bonjour)
Une Petite question, que ce passe t' il si une personne a besoin de se lever la nuit pour une "envie pressante" ou tout simplement pour boire un verre d'eau ?
Pour ma part je ferai une détection d'intrusion en cas d'ouverture des portes (à l'aide de capteur de contact). Sur la detection de mouvement il faudrait laisser une temporisation. D'une pour eviter un mouvement temporaire (je vais au toilette je ne passe que 30s devant le capteur) et de deux pour laisser le temps a la personne de "s’authentifier".

samagace peux tu utiliser la balise "code" s'il te plait pour mettre ton code en evidence. Ca fait un peu mal aux yeux.

Ex:

Code : Tout sélectionner

commandArray = {}
tc=next(devicechanged)

1if (devicechanged['présence maison'] == 'OFF') and (devicechanged['nuit lux'] == 'ON') and (devicechanged['Security Panel'] == 'Disarm') then
print("panneau d_alarme Arm HOME")

2	commandArray ['Security Panel'] = 'Arm Home'
	commandArray ['AlarmDetected'] = 'ON'

end

3if (devicechanged['PIR_Fenetre chambre parentsBurglar'] == 'ON') then

4elseif (devicechanged['PIR_Velux EloBurglar'] == 'ON') then
5elseif (devicechanged['PIR_Porte cuisine'] == 'ON') then
print("panneau d_alarme Désarmé")

6	commandArray ['Security Panel'] = 'Disarm'
	commandArray ['AlarmDetected'] = 'OFF'

end

return commandArray

Je traduis les scripts en synthaxe:
1Si 'presence maison' passe a off et en meme temps 'nuit lux' passe a on et en meme temps encore 'security panel' se desarme (au present) alors
2activer arm home
et alarmdetected

3Si 'PIR_Fenetre chambre parentsBurglar' passe a on alors
4sinon si 'PIR_Velux EloBurglar' passe a on alors
5sinon si 'PIR_Porte cuisine' passe a on alors
6désactiver l'alarme
et 'AlarmDetected' a off
En 1 "devicechanged" n'est une condition que pour le changement d'etat du device, pas pour l'etat en cours du device. Du coup tu demande a domoticz d'attendre que les 3 device change d'etat en meme temps ce qui sera a mon avis impossible en terme de temps réel, mais surtout domoticz ne saura pas le faire. Car il prend en compte les device un par un... Donc si jamais un des trois change d'etat, meme si un autre change d'etat en un microardieme de miliseconde en meme temps il ne les traitera qu'a la suite...
Du coup je pense qu'il faudrait que tu dises:
Si l'etat de presence maison est a off, qu'il fait nuit et que mon alarme n'est pas en arm home alors...

Code : Tout sélectionner

if otherdevice['presence maison']=='Off' and otherdevice[nuit lux']=='On' and globalvariables['Security Panel']='Armed Home' then
En 2 je ne sais pas ce qu'est 'AlarmDetecte' mais je pense qu'il s'agisse du fait que tu passe en mode de detection intrusion ?

En 3, 4 et 5 ici je pense qu'il y a un problème de compréhension. Ce ne sont pas plusieurs conditions différentes incompatible. Tu peux l'écrire comme ca:
Si 'PIR_Fenetre chambre parentsBurglar' passe a on ou 'PIR_Velux EloBurglar' passe a on ou 'PIR_Porte cuisine' passe a on alors
Donc en LUA c'est bien d'un changement d'etat dont il s'agit mais une condition pour plusieur changement:

Code : Tout sélectionner

if devicechanged['PIR_Fenetre chambre parentsBurglar'] == 'ON' or devicechanged['PIR_Velux EloBurglar'] == 'ON' or devicechanged['PIR_Porte cuisine'] == 'ON' then
En 6 (j'ai supposé en 3,4 et 5 que tu voulais detecter l'intrusion) tu demandes de desactiver l'alarme. Je pense a mon avis que c'est incompatible. Au contraire tu devrais tout faire sonner... (si quelqu'un ouvre mes porte ou fenetre alors que je suis en alarme je fais tout sonner?) Si il s'agissait de désactiver a l'alarme alors c'est bon.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Répondre