X-Display V2 : conception d'un système d'alarme simple
| |||
---|---|---|---|
Nom | ACCÈS ET INTRUSION | ||
Famille | IPX800 V5 | ||
Wiki créé le | 11/11/2024 | ||
Wiki mis à jour le | 11/11/2024 | ||
Auteur | fgtoul |
Introduction
Depuis la version 3.1 du X-Display V2, nous pouvons saisir des codes d'accès sur un clavier virtuel avec une IPX800 V5 en version 5.5.8 ou supérieure.
Conception simple d'un système d'alarme.
Pour ce tutoriel, nous utiliserons uniquement des capteurs d'ouverture de type Contact Reed Normalement Ouvert. Ces capteurs sont ouverts en l'absence de champ magnétique (porte ouverte) et fermés en présence d'un champ magnétique (porte fermée).
Ce type de capteur permet également de détecter les tentatives de vandalisme sur le câble, car l'entrée digitale de l'ipx800 change d'état de ON à OFF en cas de coupure.
La sirène sera connectée au relais 1.
Remarque :
le schéma présente l'utilisation d'un buzzer piezoélectrique actif qui peut produire un son unique lorsqu'il est alimenté. Le réglage du volume se fera comme écrit plus haut avec une résistance en série permettant de limiter le courant entrant ou avec un morceau d'adhésif posé sur l'orifice afin de diminuer la pression acoustique.
Si vous souhaitez pouvoir émettre des sons différents en fonction des événements (moduler le son en fréquence), il faudra mettre un piezo passif avec un petit circuit de commande externe, souvent un signal PWM (modulation de largeur d'impulsion), pour produire un son. Il est plus flexible d'utilisation car il peut produire une gamme de sons différents en fonction du signal de commande. Il existe des petits modules à base de NE555. En mode astable, vous pouvez ajuster la fréquence et le rapport cyclique (duty cycle) du signal de sortie en modifiant les valeurs des résistances (potentiomètre) et du condensateur variable connectés au NE555.
Certains buzzers piézoélectriques ont une fréquence de résonance spécifique où ils produisent le son le plus fort. En modifiant légèrement la fréquence du signal d'entrée, vous pouvez réduire le volume sonore.
Vous pouvez également utiliser une carte de diffusion de messages sonores du type DY-HV20T.
Ces cartes permettent de diffuser des messages vocaux préenregistrés (mp3, OGG, Wave), vous trouverez mon tutoriel ici
Exemple de schéma de branchement :
Fonctionnalités du système :
- Avant armement de la partition, l'ipx800 vérifie l'état de tous les capteurs groupés en partition exemple : partition jour : capteurs de fenêtres et portes / partition absence : capteurs sur volets Vous pourrez armer la partition 1 en allant au travail et laisser les volets ouverts, en cas de départ pour les congés ou un WE d'absence, vous pouvez armer les 2 partitions après avoir fermé les volets.
- Chaque capteur peut être activé/inhibé (capteur en panne par exemple)
- Liveview : - gestion des capteurs, - armement/désarmement partition - consultation dernier événement
Mise en œuvre
Nous n'utiliserons pour notre exemple qu'une seule partition regroupant nos 11 capteurs.
Les capteurs
Pour chaque capteur,
- nommez l'entrée digitale concernée sur l'ipx800 ou son extension
- créez une IO nommée STATUT puis liez la directement à l'entrée digitale.
Si le capteur est de type NF (Normalement Fermé), créez le lien en NOT. Si le capteur est de type NO (Normalement Ouvert), créez un lien typé LINK.
Cette variable "STATUT" représente donc l'état du capteur quel que soit son type. Elle est ON si le capteur est prêt (porte ou fenêtre bien fermée).
Elle simplifie l''emploi de capteurs NO ou NF, permettant une programmation plus simple. Le remplacement d'un capteur NO par un NF ne nécessitera ni la modification du programme, ni la reconfiguration des widgets. Vous devrez seulement modifier le type de lien entre la variable et l'entrée digitale.
- créez un objet bascule RS. Il s'activera par scénario lors d'une alarme sur le capteur pendant l'activation de la partition. Sa sortie sera désactivée manuellement à partir du liveview (prise en compte des événements).
- créez une IO que vous nommez inhibe. En cas de défaut du capteur, cette variable sera activée pour permettre l'exclusion de ce capteur et permettre malgré tout l'activation de la partition. Le pilotage se fera par le Liveview.
- créez une variable de type Analogique 32 bits, le programme y renseignera l'heure du déclenchement de l'alarme sur ce capteur par recopie de l'heure de l'ipx800 (Timestamp).
Le moteur de scénarios
- Créez une scène que vous nommez Capteurs.
- Dans cette scène, créez une règle pour chaque capteur. Vous constituerez la clause événement en déposant les tuiles correspondant à l'IO "Statut X" et "INHIBE X". Le résultat de chaque règle sera utilisé ultérieurement pour déterminer l'état de la partition entière. Nommez chaque règle de manière à identifier le capteur qu'elle représente.
- Créez une règle pour chaque capteur, qui permettra d'enregistrer un état d'alarme sur un capteur. Vous remarquerez l'utilisation de la tuile [Règle.result] de chaque capteur. Si la partition est armée et que l'état logique du capteur passe à OFF (non prêt), l'heure de l'ipx800 est injectée dans la variable A32, la variables Intrusion est activée, l'entrée SET de la bascule RS propre au capteur est activée. Une fois la première alarme enregistrée, le capteur se met en attente de la réinitialisation de son état. Dans le cas d'un défaut intermittent et répétitif (ouverture qui bat au vent, faux contact), cela permet de n'enregistrer que la première survenance, ce qui permettra par la suite une meilleure analyse de la chronologie des événements ayant généré l'alarme. La condition [NON] [RS LATCH x].Output permet de n'enregistrer que le premier événement ayant enclenché l'état d'alarme sur le capteur. Vous utiliserez pour chaque capteur la bascule RS associée.
- Créez la règle qui remettra la sortie de chaque bascule RS à l'état OFF (prise en compte des événements) Comme écrit précédemment, le bouton Reset du liveview est lié à l'entrée start d'une petite tempo pour simuler un bouton poussoir.
- Créez une scène que vous nommez Partition.
- Créez les règles qui vérifient que tous les capteurs sont soit prêts, soit inhibés. Dans ce cas, la partition sera alors prête pour armement. Pour ce faire, combinez chaque tuile result des règles déterminant l'état des capteurs que vous avez créées précédemment.
Le résultat de la règle "P1a" est combiné en P1b, puis le résultat de "P1b" est combiné dans "Partition 1 Ready" afin d'obtenir un résultat final. De cette manière la dernière règle représente l'état de toute la partition. Si son résultat est ON (Partition prête), alors nous pourrons armer la partition.
Si au moins un capteur n'est pas prêt, un message nous invitant à vérifier les capteurs s'affiche pendant quelques secondes, la partition ne s'arme pas. L'utilisateur doit donc remettre le capteur en état, ou l'inhiber (exclure) pour permettre l'armement.
- Créez une scène ALARME
- Créez une règle pour intercepter la saisie d'un code pendant que la partition est armée (cas du désarmement). Comme écrit précédemment, la saisie d'un code valide active la sortie du contrôle. Il suffit donc de vérifier l'état de cette sortie. Pour désarmer la partition, nous vérifierons la saisie d'un code correct pendant que la partition est armée. Vu que nous pouvons aussi l'armer via le liveview, nous utilisons également la tuile tempo (ou double click) qui est rattachée au bouton poussoir Armer/Désarmer. Le désarmement de la partition consiste simplement à mettre l'IO "Partition 1 Armée" à l'état OFF. Pour que la saisie d'un code correct ne soit pas prise en compte dans les règles qui suivent, nous repassons immédiatement la sortie du contrôle d'accès à l'état OFF, idem pour les autres commandes.
- Créez la règle interceptant la saisie d'un code, partition prête mais non armée. Pour vérifier l'état de la partition nous utilisons la tuile "Result" de la règle "Partition 1 Ready".L'activation de la partition consiste à activer l'IO "Partition 1 armée", puis à remettre les commandes à l'état OFF. L'IO "Clone Partition 1 armée" permet l'affichage de l'io sur le x-display. Cependant, l'écran tactile ne peut être désactivé, il est donc important de ne pas y afficher la vraie variable "partition 1 armée" qui pourrait être modifiée accidentellement et perturber ainsi le bon fonctionnement du système d'alarme. Nous verrons sa gestion ultérieurement.
- Créez la règle interceptant la saisie d'un code alors que la partition n'est pas prête. Nous nous contentons alors d'activer une tempo qui permet d'afficher sur le liveview une invitation à vérifier les capteurs et d'afficher temporairement l'état de la partition sur le Display. Nous repassons les commandes à OFF comme précédemment.
- Créez les règles qui affichent temporairement l'état de la partition non prête sur le x-display lors de la saisie d'un code.
- Créez une règle qui historise la demande d'armement au changement d'état de l'IO "Partition 1 armée"
L'enregistrement consiste à injecter la valeur de l'horloge IPX dans la variable a32 "Heure Armement".
Nous demandons de plus au X-Display d'afficher l'état de la partition (écran Home lié à l'IO "Clone Partition 1 Armée") puis pour terminer nous enregistrons le type 1 en dernière action (1=armement) pour affichage sur le liveview.
- Créez la règle historisant le désarmement lors du changement d'état de l'IO "Partition 1 armée"
Nous renseignons l'horodatage de la demande, puis nous demandons au X-Display d'afficher l'état de la partition désarmée pour confirmation. Nous enregistrons le type 0 en dernière action (0=désarmement) pour affichage sur le liveview.
- Créez la règle traitant l'entrée d'un code erroné. La tuile IoFault permet l'interception de la saisie erronée. Dans ce cas, nous historisons l'événement et enregistrons le type 9 (9=code erroné) en dernière action. Nous rétablissons les commandes à OFF.
- Créez la règle d'activation des sirènes (temporisation 3 minutes) Sirène + notification mail + sms ?
- Créez les règles d'entrée/sortie avec temporisation avant alarme (buzzer sur clignotant)
Capteurs sur entrée temporisée
Certains capteurs, tel celui de la porte d'entrée, ne doit pas enclencher les sirènes immédiatement si le désarmement de l'alarme ne peut se faire que de l'intérieur.
C'est notre cas dans cet exemple. Le désarmement ne peut se faire que depuis le X-Display qui est installé derrière la porte d'entrée du domicile.
Une temporisation de 60 secondes est démarrée, permettant à la personne entrante de saisir le code de désarmement avant mise en marche des sirènes.
- Créez une tempo nommée tempo entrée
- Modifiez la règle alarme du capteur concerné (C5 dans notre exemple) et ajoutez le démarrage de la tempo en résultat.
Faites de même sur chaque capteur sur porte d'entrée si nécessaire.
- Modifiez la règle qui permet d'intercepter le code de désarmement en ajoutant les 3 tuiles dans le champ résultat derrière la commande OFF. La saisie d'un code de désarmement mettra fin désormais à la tempo d'entrée, supprimera l'état d'alarme et inhibera ainsi l'enclenchement des sirènes.
- Créez le Clignotant qui pilotera le buzzer d'entrée. Pour ma part, je choisis un rythme d'une seconde (1/10e de beep, 9/10e de silence)
- Créez une scène que vous nommerez Buzzer et Sirenes.
- Créez une règle qui permet de démarrer le buzzer d'entrée lorsque la "tempo Entrée" est activée.
Le clignotant pilote la sortie à collecteur ouvert sur laquelle est branché le buzzer type Piezo actif.
Créez pour finir la règle qui met la temporisation des sirènes en marche.
La temporisation pilote le relais sur lequel est connecté la sirène.
Le liveview
Placez un widget ICÔNE lié à chaque règle CAPTEUR READY. Dans cet exemple, ces widgets sont positionnés sur les ouvertures du plan pour représenter l’état logique en temps réel des capteurs.
Ajoutez un widget Bouton pour chaque variable “Inhibe X”
un widget ICONE lié à l'entrée digitale sur laquelle est connecté le capteur, afin de signaler visuellement l'état réel du capteur.
et un widget ICONE lié à la sortie de chaque bascule RS afin de signaler visuellement un éventuel déclenchement d'alarme sur chaque capteur.
Associez la variable Analogique 32 à un widget Afficheur de temps qui affichera la date et l’heure de l’alarme (la source étant sous forme de Timestamp).
J’ai personnellement organisé ces variables en tableau.
Un bouton Reset, relié à l’entrée Start d’une temporisation courte (500ms), permettra de réinitialiser par scénario l’état des sorties des bascules RS à OFF, supprimant ainsi l’alarme sur tous les capteurs.
Personnellement, j’ai ajouté un widget Image ON/OFF sur chaque date d’alarme, lié à la sortie de la bascule RS correspondante. De cette manière, la date est masquée lorsque le capteur n’est plus en alarme. L'URL de l'image OFF est en fait un encodage Base 64 de quelques pixels ayant la même couleur que le fond du Liveview.
Le message popup qui invite à revoir l'état des capteurs avant réarmement de la partition est créé à l'aide un widget TEXT ON/OFF
Vous pouvez ajouter un widget Icône pour signaler l'état des sirène et de l'intrusion
Pour terminer, vous pouvez indiquer l'état de la temporisation d'entrée près de la porte
Astuce : Si vous utilisez un écran tactile et souhaitez éviter l'appui accidentel sur les boutons du liveview, vous pouvez rattacher chacun d'eux à l'entrée d'un objet Double click au lieu d'une entrée Start de temporisation. Il faudra programmer la désactivation de la sortie de chacun de ces objets Double click par scénario, après traitement de l'action.
Remarque :
L'exemple précédent est un cas simplifié, visant à montrer comment mettre en œuvre un clavier virtuel sur IPX800 V5.
J'ai supposé l'équipement sirène branché sur la sortie Relais 1 pour simplifier l'exemple. De même, les temporisations d'entrées/sorties sont mises en place sur le capteur 5 (porte d'entrée sur le synoptique).
Ces temporisations sont arbitrairement de 60 secondes. Vous pourrez ajouter un widget type curseur sur un dashboard pour les rendre modifiables.
Dans le cadre de la programmation d'une alarme, vous pouvez bien sûr enrichir les fonctionnalités (temps ajustable des temporisations, répétition des sirènes seront règlementation locale, ...).
Attention : Renseignez vous avant de poser une sirène extérieure.
la pose d'une sirène extérieure, faute de cadre légal, est souvent soumise à la règlementation locale (préfecture, mairie) et doit parfois faire l'objet d'une déclaration.
La mairie est susceptible de vérifier la conformité du matériel, son fonctionnement (durée de déclenchement) et son emplacement pour le bien-être du voisinage.
Généralement, la durée maximale de la sirène ne peut excéder 3 minutes, mais des dispositions locales peuvent modifier cette limite.
Pour une sirène intérieure, pas de règlementation, mais faites attention de mettre du matériel conforme aux normes CE ou NF (105dB max, ...) pour votre bien-être et votre santé auditive.