Rédaction : Fin de l’été 2020
Partons du principe que vous avez bien mis en place votre gestion de présence qui est très utile pour la gestion des thermostats, confort et donc savoir si votre maison est vide ou non. Comment ça ! Vous ne l’avez pas lu, il faut donc déjà le mettre en place. En résumé, je définis :
- les personnes présentes à la maison et donc sait si la maison est vide ou non,
- je garde la possibilité de forcer une absence ou non.
L’un des piliers de mon installation est sur les produits Xiaomi, passerelles et différents capteurs : mouvement, porte/fenêtre, détecteur incendie, vibration et eau . En parallèle, j’utilise mes caméras avec détection de mouvement sous forme d’une pré-alarme qui me prévient si quelqu’un rôde autour de la maison. Là encore, je ne peux que vous conseiller de lire l’article en question qui pour moi est la base de la domotique conjugué à l’alarme.
Cet article s’appuie donc sur des capteurs Aqara de chez Xiaomi (mais vous pouvez utiliser des capteurs Zwave ou RFXCOM) sur les principes suivants :
- 3 alarmes différentes : fuite d’eau, sécurité, incendie.
- l’utilisation des cordons lumineux des passerelles (3 ou 4 dans la maison, plus pratique pour donner une tendance).
- le TTS par la passerelle n’étant plus possible (un bug étant apparu faisant perdre tout audio à la passerelle), j’utilise le TTS des mes tablettes Android (je n’ai plus de TTS par Raspberry ou avec SNIPS) avec une gestion de priorité et des horaires en fonction des mouvements dans la maison.
- la notification par SMS, télégram en priorisant le SMS en cas de coupure internet, merci JPI.
Capteurs de porte fenêtre Aqara Xiaomi
Capteurs mouvement Aqara Xiaomi
Capteurs vibration Aqara Xiaomi
Un excellent kit tout en 1 par Xiaomi pour démarrer
De là, plusieurs plugins sont nécessaires… non ! Qu’un seul. Celui de l’alarme. Pas la peine de réinventer la roue, il est complet et suffisamment pratique. Par contre, il faut comprendre son principe. La documentation a évolué depuis 4 ans et a attaché enfin une importance à la notion d’immédiat :
- une porte s’ouvre par exemple et l’alarme est activée. Elle envoie ou parle pour dire que vous avez 2 minutes pour désactiver l’alarme = notion d’action immédiate. Au bout de 2 minutes, elle activera la sirène = notion d’action.
- vous avez des zones qui peuvent être “géographiques” et des modes qui vont embarquer certaines zones. Pour ma part, j’ai fait simple, les zones sont les modes. Comme ça, pas de problème.
- vous avez des notions de l’état de l’alarme, pour vous notifier d’un problème d’activation, d’un déclenchement etc.
Dans cet article, je traite uniquement de l’alarme de sécurité car l’alarme incendie ou d’eau est une version ultra simplifiée. Nul doute qu’une fois que vous aurez mis en place cette alarme, aucune difficulté à mettre les 2 autres en place.
Quelques règles que vous commencez à connaître si vous travaillez avec mon blog comme source d’inspiration :
- j’utilise un virtuel qui pilote le plugin pour me simplifier sa gestion ou son évolution dans le temps et éviter de casser tous mes designs.
- je passe par des scénarios qui travaillent sur l’état de la maison ou de l’alarme et qui ne sont pas lancés par le plugin.
- comme vous l’avez vu sur la gestion de présence, j’utilise l’état de l’alarme pour ouvrir certains ouvrants.
- je ne suis pas trop fan des capteurs volumétriques même si j’en possède plusieurs, j’aimerai bien le factuel et je ne m’appuie que sur des capteurs d’ouvrants. J’utilise la partie pré-alarme pour gérer tout ce qui est mouvement par la détection de mouvement extérieure ou intérieure ou vibratoire. En aucun cas pour valider une activation de l’alarme !
- pour ma part, après 2 ans avec une alarme “classique”, nous avons eu le temps de murir notre utilisation, j’y reviens après.
- j’aime bien faire de beaux designs donc j’intégrerai tout cela.
Au delà de la configuration de l’alarme, nous allons la compléter !
Création de votre alarme
On fait simple, après avoir intégré le plugin “Alarme”, il est disponible dans l’onglet Sécurité.
Ajoutez votre alarme, ici “Contrôle Alarme” et réfléchissons… pour ma part :
- j’ai 3 modes différents : un partiel (si je laisse certaines fenêtres ouvertes, à grille de sécurité), un total (si tout est fermé), un nuit pour quand on dort et que certains ouvrants sont ouverts. A ce stade, définissez vos ouvrants, vos zones à chaque fois.
- pour ma part, je ne veux pas de délai d’activation ou de désactivation. Je veux que ce soit immédiat. L’alarme étant gérée sur notre présence, elle est donc fiable comme notre présence à la maison.
- je veux pouvoir désactiver l’alarme en cas de problème ou tout simplement le matin au réveil par un digicode adapté (merci à Djul pour ce virtuel et widget associé en V3).
- en cas de problème, je souhaite être notifié de ce qui ne va pas : problème d’activation ou autre.
- je veux pouvoir piloter mes caméras intérieures (tablettes), enregistrer. La base est déjà disponible sur le fil de MotionEye et de la vidéosurveillance mais je ferai une mise à jour pour l’intégration des tablettes car le flux est différent et nécessite de passer par Jeedom.
- et comme je sais qui est chez nous, je veux que ce soit fun et WAF ! Donc on parlera aux personnes qui arrivent et repartent !
Vous avez réfléchi à votre configuration, nous sommes partis !
Pour ma part, je ne souhaite pas que l’alarme soit tout le temps active, je l’active par ma gestion automatique ou manuellement au moment de dormir. Aussi, son réarmement ne doit pas automatique, je préfère l’activer moi-même. Voici donc mon onglet Equipement :
Création des zones et modes associés
3 zones, partiel, total, nuit. Je montre l’exemple du “partiel” … à vous de compléter en fonction de vos besoins. Je n’ai pour ma part aucune action immédiate ou action ici, uniquement que des déclencheurs. Aussi, comme je veux de l’immédiat, tout est à 0. L’onglet Modes est “on ne peut plus simple” car je ne fais qu’activer la zone du même nom que le mode. Vous pouvez sinon créer plus zone géographique – 1er étage, garage etc – pour ma part je n’arriverai pas à faire simple avec 3 zones car il m’en aurait fallu beaucoup plus. Du coup, j’ai simplifié ! J’historise l’état de mes déclencheurs, voir l’article correspondant.
Cas de l’activation de l’alarme “parfaite”
Si l’alarme est activée, je lance un scénario dédié, c’est tout !
Si l’alarme s’active correctement que l’on soit là ou non, éclairage rouge pour dire qu’il y a une alarme bien armée et j’active la pré-alarme (pour rappel voir l’article de la détection de mouvement).
Je vous donne un exemple du scénario d’allumage rouge, vous aurez les autres pour la suite hein ! Je commence par les éteindre au cas où puis je les allume :
C’est tout ? Sérieux, il nous a écrit un article juste pour ça ? Oui, mais non ! Je fais plein de choses en dehors… Rappelez-vous les scénarios annexes.
Et là on commence à faire quelque chose de sympa ! Comme vous avez mis en place votre gestion de présence, vous savez qui était à la maison ou qui est arrivé. Alors… servez-vous en !
Ce premier scénario qui gère l’alarme quand elle est activée se déclenche sur l’information “actif” de votre alarme, ici :
#[Sécurité][Contrôle Alarme][Actif]#
Le principe est de déterminer depuis combien de temps chaque personne est partie puis d’en déduire le dernier parti. Cas particulier pour l’alarme de nuit puisque nous sommes “présents”. Cela lancera un scénario dédié “scénario de coucher”, voir plus bas sur ce même chapitre.
Dans le cas où la maison est vide, il faut donc calculer depuis combien de temps chaque personne est partie par un test sur la présence à 0 (absent) :
lastChangeStateDuration(#[Personnes][Personne 1][Présence]#,0)
Faire de même pour toutes les personnes présentes. Par sécurité, il m’est arrivé que Jeedom me renvoie un négatif notamment sur les personnes non revenues depuis longtemps (problème d’historisation)… j’ai donc limité cela par un test (d’ailleurs on pourrait faire un ternaire plus facile !).
Puis il faut déterminer qui est le dernier parti par la variable minimale de toutes les personnes susceptibles d’être parties :
min(variable(personne1_left),variable(personne2_left),variable(personne3_left),variable(personne4_left),variable(personne5_left))
Au cours de la mise au point de cette alarme, je me suis rendu compte que le fait de vouloir être “précis” sur les temps de départ ou d’arrivée me causait de nombreuses erreurs d’interprétation à 1 ou 2 secondes près. Donc j’ai ajouté un intervalle pour simplifier la “détection”. Notamment car il peut se passer 1 seconde entre la gestion de la présence par les scénarios et celui de l’alarme…
Derrière ce n’est qu’une succession de SI, ALORS, SINON SI, ALORS etc puisque si une personne est détectée comme la dernière partie la suite est fausse… dans le principe, je teste que la maison est vide ET que la personne est bien absente ET qu’elle est bien dans le laps de temps autorisé inter_min < variable < inter_max :
#[Personnes][Maison][Presence]# == 0 AND #[Personnes][Personne1][Présence]# == 0 AND (variable(lastperson_left_min) < variable(personne1_left)) AND (variable(personne1_left) < variable(lastperson_left_max))
Je préviens les personnes de leur départ et de l’activation de l’alarme en fonction du mode de l’alarme. Je nous préviens aussi, pratique quand nous ne sommes pas à la maison.
Le dernier ELSE ne fait que dire que l’alarme a été activée manuelle puisque si personne n’est détectée, c’est donc une activation manuelle ! J’utilise mon scénario de notifications en TTS ou télégram/SMS.
En fin de scénario, j’éteins les tablettes… Notez que le SI de l’état d’activation de l’alarme est non-répétitif pour éviter les lancements intempestifs.
Cela donne donc ça :
Dans le cas de l’alarme de NUIT, je lance un scénario dédié car nous sommes à la maison. L’intérêt est donc de piloter les tablettes, de parler, de fermer le volet (si ce n’est pas déjà le cas par l’automatisme dédié) et d’éteindre les éclairages d’ambiance extérieurs. J’allume les tablettes, affiche le design digicode (voir en fin d’article) et je passe les tablettes en luminosité de nuit. Pour cela, JPI et son plugin JPI Plugin fait très bien le travail.
Concernant la partie JPI, je partage mon utilisation… et comment piloter la luminosité. Je mettrai à jour l’article sur JPI avec mes dernières modifications.
Cas d’une activation KO de l’alarme
Si l’alarme est activée et que vous avez un problème d’activation (par exemple, une porte ou fenêtre ouverte alors qu’elle fait partie de la zone), pas de panique ! L’alarme s’active bien mais ne le notifie pas. Faisons-le. Je vous montre un exemple sur le mode/zone partiel mais vous aurez compris le principe. Je lance un scénario en fonction du mode, pratique ! Dire qu’à l’époque tout cela n’existait pas et dans ma V1 j’étais obligé de tout tester…
Je vous donne le principe pour un mode, mais vous aurez compris comment faire les suivants. Le principe est simple, il faut enchaîner les SI sur les ouvrants qui sont dans le mode en question et construire le message final qui sera envoyé par SMS.
Pour résumer :
- j’initie une variable que je vais construire au fur et à mesure du parcours du scénario, idem sur le nombre d’ouvrants “ouverts” pour une gestion de la langue française !
- par sécurité, je rafraichis l’état des capteurs,
- et ensuite ce n’est qu’un enchaînement de SI/ALORS,
- le message se construit par concaténation de la variable précédente et l’ajout de l’ouvrant testé comme ouvert et j’incrémente le nombre d’ouvrants ouverts,
- à la fin, si la maison n’est pas vide, j’utilise mon scénario de notifications TTS pour indiquer le problème,
- ou à défaut, j’envoie par SMS la cause de l’activation KO.
- notez que si je n’ai qu’un ouvrant, je ne mets pas de “s” !
A vous de faire de même sur vos autres modes…
Cas d’un déclenchement de l’alarme
Par principe, je ne peux que vous recommander d’avoir une bonne sirène bien puissante. Cela fait partie des choses que je veux mettre en place à terme. Mais j’avoue que le prix prohibitif des sirènes me fait réfléchir à en construire une…
J’ai testé de nombreux petits modèles comme ceux que l’on met sur les motos ou voitures. Mais la fiabilité au bout d’un ou deux ans n’est pas des meilleures…
Un fil qui m’a servi pour construire la mienne. En parallèle, j’utilise les sons sur les gateways Xiaomi.
Pour ma part, je recommande :
- une sirène en 220v directement ou alors avec un système de pilotage par relais (cela fait plus de matériel à prévoir comme une raspberry PI sous Jeedouino ou une commande de relais type ZK1PA en 433MHz).
- la sirène en 220V peut s’appuyer sur un module SONOFF que vous aurez relié à votre onduleur par exemple de manière à ce que cette dernière soit toujours alimentée.
- un exemple de sirène en 220V avec signal lumineux et puissante (c’est peu de le dire !). On peut ne pas aimer l’esthétique mais elle est puissante, lumineuse…
- un autre exemple à adapter en suivant le fil plus haut. L’avantage c’est qu’elle a une batterie.
Revenons à nos moutons… en cas de déclenchement, que fais-je ?
- je lance l’enregistrement sur les caméras (qui lancera le streaming sur les caméras intérieures avant),
- j’éclairage mes gateways en rouge (vous aviez le principe plus haut sur les couleurs),
- je lance le scénario de sonnerie sur mes gateways (une boucle qui boucle sur le même scénario de sons),
- j’active un virtuel d’intrusion (voir plus bas),
- et j’envoie un message par Telegram pour rappeler comment voir ce qu’il se passe à la maison (voir MotionEye).
Détaillons un peu tout cela.
Le scénario des caméras est “simple”… rien de transcendant. Je me base sur le travail déjà fait avec les caméras par le plugin du même nom. Je ne fais que lancer l’enregistrement des flux vidéos côté Jeedom.
Mais, encore faut-il que le streaming des caméras intérieures soit lancé ! D’où la première commande qui bascule un simple interrupteur qui autorise le streaming (voir cet article pour faire cet interrupteur). Remarque, je remonte cet interrupteur par Domowidget pour jeter un coup d’oeil quand je ne suis pas là si problème…
Un scénario bascule le streaming des caméras… relisez l’article de JPI et de la vidéo-surveillance pour savoir comment intégrer des caméras de tablette ou téléphone !
Nous le verrons sur le widget de gestion de l’alarme, j’utilise un indicateur d’intrusion qui n’est qu’un OU des 2 types d’intrusion pour être fiable.
#[Sécurité][Contrôle Alarme][Statut]# OU #[Sécurité][Contrôle Alarme][Immédiat]#
Nous aborderons le scénario d’arrêt dans la partie réinitialisation qui n’est qu’un arrêt différêt de l’enregistrement par principe… autant filmer après la réinitialisation, sait-on jamais !
Côté sirène, il vous suffit de piloter votre module qui activera votre sirène ou vos gateways. Je vous montre le principe, soit un simple basculement d’interrupteur. Je complexifie ici en utilisant mes gateways en boucle “infinie”.
Adaptez le sleep pour que la passerelle ait le temps de jouer tout le son… ce n’est pas le même sur une raspberry qui rame et une VM d’un NUC ! (approuvé :D) !
Le scénario de notifications, par exemple pour le mode nuit, ne fait que lire un message enregistré (utilisé la fonction enregistrement dans MiHome sous Ios ou sous Android), puis envoie un SMS au cas où… et surtout envoie une notification TTS !
Cas d’une désactivation de l’alarme
Ici, on va reprendre le principe inverse de l’activation de l’alarme… dans cet onglet, on ne lance qu’un scénario…
Dans le principe, l’inverse de l’activation de l’alarme :
- on stoppe la pré-alarme (voir ici pour plus de détails),
- je traite au cas où le cas d’une intrusion en utilisant (vous comprenez l’interrupteur précédent) avec un éclairage orange ou vert pour dire que tout se passe bien ! Notez que j’ai deux scénarios différents pour la couleur verte car je n’allume pas toutes les gateways de la maison s’il s’agit de l’alarme de nuit (par exemple si quelqu’un dort encore dans une chambre),
- et quelques minutes après, j’éteins les gateways.
Comme pour l’activation, j’ai un scénario en parallèle qui réalise la partie information de la désactivation de l’alarme. Il se déclenche sur l’information “actif” de l’alarme comme pour l’activation :
#[Sécurité][Contrôle Alarme][Actif]#
Comme plus haut, j’utilise des fonctions :
- pour déterminer qui est le premier arrivé :
MIN(lastChangeStateDuration(#[Personnes][Personne 1][Présence]#,1),lastChangeStateDuration(#[Personnes][Personne 2][Présence]#,1),lastChangeStateDuration(#[Personnes][Personne 3][Présence]#,1),lastChangeStateDuration(#[Personnes][Personne 4][Présence]#,1),lastChangeStateDuration(#[Personnes][Personne 5][Présence]#,1))
- depuis quand chaque personne est présente :
lastChangeStateDuration(#[Personnes][Personne 1][Présence]#,1)
- de même un intervalle est nécessaire pour être fiable et permet de voir plusieurs personnes qui arrivent en même temps…
variable(firstperson)-10
variable(firstperson)+10
- s’en suit une succession de conditions basées sur la présence d’une personne et son arrivée dans l’intervalle détectée :
#[Personnes][Personne 1][Présence]# == 1 AND (variable(firstperson_min) < variable(first_personne1)) AND (variable(first_personne1) < variable(firstperson_max))
- aussi, comme je sais s’il y a du courrier, tant qu’à faire notifions-le !
- aussi, si personne n’est détectée, c’est une désactivation manuelle ou une désactivation du mode “nuit” … je le notifie par TTS. J’ai un scénario
- rappelez-vous que si la maison n’est plus vide, j’ai un scénario d’arrivée qui me donne quelques informations… voir l’article de la gestion de présence.
Dans le cas à part du réveil matinal, je lance un scénario dédié qui me notifie de tout… un peu long car je donne tout un ensemble de résultats des consommations de la veille à la hausse ou à la baisse, la météo, s’il pleut d’ici 24h (désolé, motard et je n’aime pas la flotte !). Dans le principe, j’attends d’arriver dans la cuisine pour lancer l’ouverture du volet et la suite de notifications TTS (la génération correcte volume/tablette se fait logiquement dans le scénario dédié). Dans le principe, ce partage est plus pour vous motiver à faire un truc sympa au réveil ! Notez que je gère la luminosité, les designs à afficher etc comme je l’indique sur JPI.
Cas d’une réinitialisation suite à une alarme activée
Si intrusion il y a eu, il convient de stopper dans le cas d’une réinitialisation :
- le scénario de boucle,
- le scénario d’enregistrement des caméras, qui est un DANS X minutes, stop…,
- je le notifie…
N’oubliez pas de stopper votre streaming sur les caméras JPI…
Quelques ajouts de ma part
Voilà, dans le principe vous avez tout ! Je vous ajoute quelques compléments correspondants à mon installation.
Commençons par l’automatisation ! Pour simplifier le mode d’alarme TOTAL ou PARTIEL, je passe par un interrupteur que je règle sur mes tablettes ou nos téléphones. Avec le recul, nous utilisons que très peu ce mode notamment depuis la présence de climatisation dans la maison. Un conseil, ne le faites que si vos fenêtres sont grillées !
Pour rappel, rendez-vous ici pour faire cet interrupteur.
Voici le code du widget HiverEte que j’utilise pour notifier la saison ou le mode de l’alarme PARTIEL (fenêtre ouverte) ou TOTAL (cadenas fermé), info/binary :
<div style="width:30px;min-height:20px;" class="cmd #history# tooltips cmd-widget" data-type="info" data-subtype="binary" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
<center>
<div style="font-weight: bold;font-size : 12px;#hideCmdName#">#name_display#</div>
<span style="font-size: 2.5em;font-weight: bold;position:relative;top:-6px" class="iconCmd"></span>
</center>
<script>
jeedom.cmd.update['#id#'] =function(_options){
$('.cmd[data-cmd_id=#id#]').attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate)
if (_options.display_value == '1') {
$('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="icon font-awesome-lock" style="font-size:30px;color:black"></i>');
}else {
$('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="icon jeedom-fenetre-ouverte" style="font-size:30px;color:black"></i>');
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Pour gérer au mieux l’alarme de manière automatique, un simple scénario se déclenche quand la maison est vide ! Mais comment sais-je cela ? Il se déclenche sur l’information suivante :
#[Personnes][Maison][Presence]#
Les conditions pour une désactivation de l’alarme sont que quelqu’un soit à la maison, que l’alarme soit active et que l’on ne soit pas en mode Nuit !
#[Personnes][Maison][Presence]# == 1 AND #[Sécurité][Contrôle Alarme][Actif]# == 1 AND #[Sécurité][Gestion Alarme][Mode]# != "Alarme mode Nuit"
De même les conditions pour une activation de l’alarme de manière automatique sont que la maison soit vide et que l’alarme n’y soit pas déjà ! En fonction de la saison/mode sélectionné, j’active le bon mode que l’on a choisi par l’interrupteur précédent.
#[Personnes][Maison][Presence]# == 0 AND #[Sécurité][Contrôle Alarme][Actif]# == 0
De même, je veux pouvoir piloter l’alarme depuis nos téléphones par Domowidget. Un simple virtuel avec un bouton “action” nommé manu passe à 1 une information et sera remis à 0 au bout d’une minute.
La configuration de la commande “manu” permet de lancer le scénario qui activera l’alarme à distance :
Là encore, je pense que vous avez compris le principe pour activer l’alarme :
Pour désactiver l’alarme à distance, je ne fais que pousser le bouton “Bonjour” qui désactive l’alarme. Mais je crois ne l’avoir jamais utilisé !
Si vous suivez mon blog, vous savez que j’aime passer par un virtuel pour gérer au mieux quelque chose… voyons le passage par un virtuel pour faire un joli design !
Dans le même esprit que le virtuel du confort ou de la présence !
Dans la majorité des cas, je ne fais que recopier les informations ou commandes déjà disponibles dans le plugin Alarme et l’alarme créée.
Je me attarde de nouveau sur le passage de l’information pour savoir depuis quand l’alarme est mise, déjà expliqué dans les articles précédentes :
variable(SetModeAlarme)
variable(SetStateAlarme)
Ensuite, il suffit sur les 4 commandes de ce virtuel, dans les actions après exécution de la commande de mettre à jour les variables (comme sur la présence !) :
Faites de même pour tous vos boutons d’activation…
A vous ensuite d’utilisez les virtuels, commandes et informations que vous souhaitez sur vos tablettes et designs…
Enfin, pour savoir quel ouvrant est couvert par quel mode, j’ai ajouté un petit scénario qui me l’indique sur le design…
Je m’appuie sur la “petite lumière” que j’utilisais dans cet article.
Un simple virtuel avec les commandes associées :
Il faut créer à chaque fois, une commande ON, une commande OFF … soyez méthodique si vous en avez beaucoup ! Notez que j’ai même un capteur sur la trappe du toit !
Si vous avez utilisé l’article de la surveillance des équipements, voici le widget info/binary que j’utilise (LED rouge clignotante, LED bleue) :
<div style="padding:0;width:40px;min-height:20px;" class="cmd #history# tooltips cmd-widget container-fluid" data-type="info" data-subtype="binary" data-cmd_id="#id#" data-cmd_uid="#uid#" title="#collectDate#">
<div class="row">
<div class="center-block col-xs-12 iconCmd#uid#"></div>
</div>
<!-- Ne Pas Supprimer -->
<script class="createWidgetInfo" type="text/javascript">//<![CDATA[{"type":"1","version":"1","image1":"Led_rouge.gif","image2":"Led_bleue.png"}]]></script>
<!-- Ne Pas Supprimer -->
<script>
jeedom.cmd.update['#id#'] = function(_options){
$(".iconCmd#uid#").empty();
if (parseInt(_options.display_value) == 1) {
$(".iconCmd#uid#").append('<img src="/plugins/widget/core/template/dashboard/cmd.info.numeric.Batterie_Led/Led_rouge.png" width="30"/>');
} else {
$(".iconCmd#uid#").append('<img src="/plugins/widget/core/template/dashboard/cmd.info.numeric.Batterie_Led/Led_bleue.png" width="30"/>');
}
$('.cmd[data-cmd_id=#id#]').attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate);
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
A vous un design sous surveillance ! Il reste le scénario qui gère les basculements ! Ce scénario s’active sur l’information d’activation de l’alarme :
#[Sécurité][Contrôle Alarme][Actif]#
Le scénario est simple, sur condition non-répétitive, en fonction du mode de l’alarme, j’enclenche l’ouvrant ou non !
Je vous ai parlé d’un digicode non !? Merci @djul pour ce widget. Ne me demandez pas comment l’utiliser en V4, je suis en V3 !
J’ai un peu modifié le CSS pour ma part. Voici le widget :
<head>
<link href='https://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>
</head>
<style>
center {
padding: 0 !important;
}
</style>
<div class="cmd tooltips cmd-widget" data-type="action" data-subtype="message" data-cmd_id="#id#"></div>
<script type="text/javascript">
$.include([ 'plugins/widget/core/template/dashboard/cmd.action.message.dJuL_DIGICODE/digicode.css',
'plugins/widget/core/template/dashboard/cmd.action.message.dJuL_DIGICODE/digicode.js'
],
function() {
$('div.cmd[data-cmd_id="#id#"]').digicode(function(code) {
jeedom.cmd.execute({
id: '#id#',
value: { title : '', message: code }
});
}, 4);
}
);
</script>
Le css est le suivant, à positionner par votre client SSH/SFTP ou le plugin “Gestionnaire de fichiers” :
.digicode {
/**font-family: 'HelveticaNeue-UltraLight', 'HelveticaNeue-Light', 'HelveticaNeue', 'Helvetica', 'Arial', sans-serif;**/
font-family:Montserrat, Arial;
font-weight: 400;
line-height: 1.42857;
color: #fff;
margin: 5px;
}
.digicode ul {
list-style: none;
margin: 0;
padding: 0;
text-align: center;
font-size: 0em;
}
.digicode ul.digiEvent {
margin: 5px 0;
}
.digicode .digiEvent li {
display: inline-block;
margin: 3px;
border: 2px solid rgba(0, 0, 0, 0.85);
height: 12px;
width: 12px;
border-radius: 75px;
-moz-border-radius: 75px;
-webkit-border-radius: 75px;
}
.digicode .digiEvent li.digiFilled {
background-color: #333333;
/**#368EFF;**/
border: 1px solid rgba(255, 255, 255, 0.60);
}
.digicode .digiEvent li.digiFilledOK {
background-color: #F89406;
}
.digicode .digicodePanel li {
background: #333;
cursor: pointer;
display: inline-block;
padding-top: 7px;
margin: 5px;
border: 2px solid rgba(255, 255, 255, 0.45);
height: 47px;
width: 47px;
border-radius: 75px;
-moz-border-radius: 75px;
-webkit-border-radius: 75px;
text-align: center;
font-size: 20px;
}
.digicode .digicodePanel li.digiSel {
background: #777;
border: 2px solid rgba(255, 255, 255, 0.25);
color: #6699ff;
}
.digicode .digicodePanel li.digiReset {
background: #dd0530;
border: 2px solid rgba(51, 9, 9, 0.41);
}
Pour le reste, je vous renvoie sur son fil ! Et récupérer les fichiers. Il y a aussi un plugin maintenant…
Créez un virtuel avec la valeur du code (type autre) et l’action de sauvegarde du code. Associez à l’action le widget digicode précédemment créé et masquez l’information de la valeur :
L’action “message” va donc lancer le scénario de traitement de la valeur value_digicode par une action après exécution de la commande :
Notez que votre code à 4 chiffres doit se terminer par A, le X permettant d’effacer. Soit je notifie par TTS, soit je désactive l’alarme si tout est OK !
L’utilisation d’un design “particulier” quand l’alarme est activée (déjà abordé dans JPI par exemple) me permet alors de l’utiliser le matin au réveil ou si quelqu’un entre et connait le code ! Une zone de clic “cachée” me permet de basculer sur le design classique :
Avant dernier point… la notification avant de partir ! Petit rituel du matin, dans le stress du départ au travail ou à l’école… où on peut oublier une fenêtre ou une porte !
Connaissant les habitudes de la maison, je ne gère ce scénario que si nous sommes en mode travail. Je lance ce scénario de manière répétitive avant notre départ quotidien …
J’utilise le même type de condition que pour la gestion du confort et des habitudes :
!(#[Usages][Today_Domogeek][Week-End]# === "Oui" OU #[Usages][Today_Domogeek][Férié]# === "Jour de l'an" OU #[Usages][Today_Domogeek][Férié]# === "Dimanche de Paques" OU #[Usages][Today_Domogeek][Férié]# === "Lundi de Paques" OU #[Usages][Today_Domogeek][Férié]# === "Fete du travail" OU #[Usages][Today_Domogeek][Férié]# === "Victoire des allies 1945" OU #[Usages][Today_Domogeek][Férié]# === "Jeudi de l'Ascension" OU #[Usages][Today_Domogeek][Férié]# === "Dimanche de Pentecote" OU #[Usages][Today_Domogeek][Férié]# === "Lundi de Pentecote" OU #[Usages][Today_Domogeek][Férié]# === "Fete Nationale" OU #[Usages][Today_Domogeek][Férié]# === "Assomption" OU #[Usages][Today_Domogeek][Férié]# === "Toussaint" OU #[Usages][Today_Domogeek][Férié]# === "Armistice 1918" OU #[Usages][Today_Domogeek][Férié]# === "Jour de Noel")
J’attends d’avoir un mouvement dans la zone de couverture des tablettes et des capteurs de mouvement associés :
#[Interfaces][Détection Mouvement Interfaces][Tablette RDC]# == 1 OU #[Capteurs et Actionneurs][Mouvement Entrée][Mouvement]# == 1 OU #[Capteurs et Actionneurs][Porte Entrée][Etat]# == 1 OU #[Interfaces][Détection Mouvement Interfaces][Tablette Cuisine]# == 1 OU #[Capteurs et Actionneurs][Mouvement Bureau][Mouvement]# == 1 OU #[Capteurs et Actionneurs][Mouvement Cuisine][Mouvement]# == 1 OU #[Interfaces][Détection Mouvement Interfaces][Tablette Couloir]# == 1 OU #[Capteurs et Actionneurs][Mouvement S2B][Mouvement]# == 1
Je lance un scénario qui construit le message à lire comme nous l’avons vu précédemment … Utilisez-le en le copiant et en le modifiant. Notez qu’en fonction de qui est présent, je passe par le tag qui.
Un des piliers de la domotique. Une alarme fiable et intelligente. Mais tout cela par l’utilisation des éléments de présence ou des habitudes. La gestion de la présence et des personnes ! Cet article vous permettra de mettre en place une alarme ainsi que toute la partie de traitement vous permettant des informations ou un affichage digne de vos designs ! Cette version est éprouvée par 3 ans d’utilisation ! Bonne implémentation.
La conclusion
Si vous avez aimé cet article, remerciez-moi en considérant une petite donation financière par Paypal. Inutile de vous dire que pour arriver à cette alarme, j’ai passé beaucoup de temps – je ne pense pas me tromper en disant près d’un an facilement. Et je n’y touche plus car cela tourne ! C’est certainement la chose la plus appréciable et WAF que madame apprécie. Aussi, cela prend du temps de rédiger et de partager ce contenu, sans publicité ! La récente augmentation de la base de données pour stocker toutes ces copies d’écran n’est pas gratuite! Tant mieux, si vous avez l’impression de gagner du temps pour votre installation et payez-nous un coup à boire ! Santé !
Merci !