L’article initial étant assez long, on va suivre la mise en oeuvre et les adaptations/évolutions dans ce nouvel article. Partons de la ToDo List initiale :
- Installer et paramétrer l’ensemble du dispositif sur le Domoticz qui va gérer l’alerte : Ok fait
- Configurer les smartphones et tablettes/ordinateurs des destinataires : Ok fait
- Tester l’ensemble à partir d’un bouton unique mobile : Ok
- Installer une caméra et valider son utilisation : Ok
- Commander et installer la boîte à clefs : Commande ok le 24/2 – Installation en semaine 11
- Valider un médaillon et une « montre SOS étanche » (et son récepteur) : Ok fait voir cet article
- Installer une application d’appel d’urgence sur smartphone si l’alerte doit être donnée dans une zone hors de portée du médaillon (jardin par exemple) : Ok fait
- Tests avec IFTTT pour les appels téléphoniques : Ok fait
- Adapter progressivement le mécanisme en fonction des retours : Ok fait
Point 1 :
- Initialisation avec les scripts init1 et init2 – faite
- Installation des scripts lua et dzVents – OK
- Création des canaux pour le compte Pushbullet du lieu de l’alerte – OK
- Abonnement Pushbullet pour les comptes des destinataires – Aucun pb 🙂 : Le déroulement des opérations pour Pushbullet est expliqué dans la galerie ci-dessous. A noter : Comme la vague 2 est un ré-envoi de la vague 1, pour Pushbullet la vague 2 correspond à la vague 3 et la 3 à la 4 ! Peut-être à modifier plus tard pour une meilleure lisibilité/compréhension ?


- Modification de frontpage_settings.js pour Monitor – OK 🙂

Point 2 : Toutes les vagues sont configurées et testées.
Point 3 : Les tests à partir du bouton alerte sont OK.
Point 4 : La caméra est installée et fonctionne à distance.
Point 5 : La boîte à clefs est disponible, elle est installée et la clef est à l’intérieur.
Point 6 : Le médaillon idéal est disponible ainsi que la montre SOS.
Point 7 : Le smartphone est un super médaillon qui fonctionne même dans le fond du jardin ou en rentrant de l’école (lorsqu’il y a du réseau 😉 ). Nous allons utiliser les applis android et ios décrites ici et là. Cela va nous donner des requêtes de type :
- http://domoticz.dns.com:3333/json.htm?username=… si on est hors de portée du wifi domestique, donc en 3G/4G
- http://192.168.1.80:8080/json.htm?username=… si on est très proche de la maison
Ainsi on activera le switch d’alerte Help de type « smartphone » qui sera un simple switch virtuel on/off auquel on attribuera le nom « smartphone » grâce aux variables utilisateurs.
Sur android, on va pouvoir ajouter les 2 icônes d’alerte pour chacun des 2 cas car cette application (gratuite !) est fournie avec un widget paramétrable 🙂 Le lancement d’Alerte sera simple avec uniquement 2 clics.
Point 8 : Pour faire sonner le téléphone du destinataire d’une alerte, il faut créer un compte IFTTT gratuit – If This Then That – (donc avec 5 applets/recettes personnalisées maximum) pour chaque destinataire et ajouter une applet qui lance un appel VoIP sur le téléphone lorsqu’une requête web contenant une valeur pré-définie est reçue sur le compte du destinataire.
Comme IFTTT existe pour Android et iOS, l’ensemble des smartphones est couvert.
Point 9 : Dans la signature des messages d’alerte, ajout de l’adresse d’intervention et du code de la boîte à clefs pour les pompiers ainsi que des coordonnées de la personne à joindre et du lien vers Monitor pour le suivi de l’alerte.
Ajouts à la ToDo List :
Point 10 Ok fait : Le dispositif de l' »homme mort » (ou de contrôle de la perte de verticalité) est assez difficile à trouver en environnement domestique, mais nous allons utiliser une solution approchante en utilisant tous les capteurs de l’installation domotique prévus pour l’alarme. Le principe, c’est de vérifier si aucun capteur n’a été activé pendant une période donnée.
Par exemple, à 9h00, si aucun capteur (boutons On/Off d’alarme Jour ou Nuit, détecteurs de présence ou détecteurs d’ouverture de porte) n’a été déclenché depuis 6h00 du matin et que l’alarme jour n’est pas activée, on peut penser qu’il faut vérifier si tout va bien; car aucune activité pendant 3 heures dans la maison entre 6h00 et 9h00 n’est pas une situation « normale ». Sur ce même principe, on peut décliner le contrôle plusieurs fois dans la journée. La mise en oeuvre initiale prévue dans le script ci-dessous permet un contrôle toutes les heures de l’activité des n heures précédentes (exemple : à 14h00 on vérifie l’activité de 11h00 à 14h00 et à 15h00 celle de 12h00 à 15h00). Les heures de début et de fin du contrôle sont paramétrables ainsi que la période observée grâce à des variables utilisateur à personnaliser en fonction de chaque situation .
En fin de script, les méthodes d’alerte sont à enrichir, pour l’instant seul le mail est opérationnel. Lorsque les tests seront terminés, les autres modes d’alerte seront rajoutés.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
-- Script script_time_helpcontrole.lua qui vérifie si tout va bien -- Contrôle d'activité des divers dispositifs installés -- Toutes les heures entre 9h et 21h à la minute 00 on contrôle s'il y a eu de l'activité pendant les 3 heures écoulées -- (en fonction du paramétrage !) -- Sauf si l'alarme jour est activée -- 26/01/2020 : version initiale commandArray = {} -- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940) dofile('/home/pi/domoticz/scripts/lua/modules.lua') -- Prise en compte des libellés et des valeurs à utiliser -- Adresses mail à utiliser pour l'envoi des mails m1 = uservariables["help_mail_1"] m2 = uservariables["help_mail_2"] m3 = uservariables["help_mail_3"] -- Localisation de l'alerte Help nom = uservariables["help_lieu"] -- Zone zone = "Pas d'activité" -- Texte text = "Problème potentiel : aucune activité dans les 3 dernières heures" -- Période de contrôle en secondes à partir de la variable help_controle_periode (qui est en heures) p = uservariables["help_controle_periode"]*3600 -- Heure de début des contrôles hdeb = uservariables["help_controle_debut"] -- Heure de fin des contrôles hfin = uservariables["help_controle_fin"] if (time.min == 00 and time.hour >= hdeb and time.hour <= hfin) then if ((otherdevices['Alarme jour'] == 'Off') and (timedifference(otherdevices_lastupdate['Bouton jour']) > p) and (timedifference(otherdevices_lastupdate['Bouton nuit']) > p) and (timedifference(otherdevices_lastupdate['detecteur-a']) > p) and (timedifference(otherdevices_lastupdate['detecteur-b']) > p) and (timedifference(otherdevices_lastupdate['detecteur-c']) > p) and (timedifference(otherdevices_lastupdate['sensor-1']) > p) and (timedifference(otherdevices_lastupdate['sensor-2']) > p) and (timedifference(otherdevices_lastupdate['sensor-3']) > p)) then -- Formattage des informations à envoyer par mail -- et valorisation des variables pour l'envoi du mail sujet = "Attention à "..nom.." le "..date_jour.." à "..heure_sms.." " texte = "Le "..date_jour.." à "..heure_sms.." Attention depuis : "..zone.." "..text.." " -- Construction de la liste des adresses mail à utiliser if m1 ~= nil and m1 ~= "" then mail = m1 if m2 ~= nil and m2 ~= "" then mail = mail..';'..m2 if m3 ~= nil and m3 ~= "" then mail = mail..';'..m3 end end end -- Envoi du mail commandArray['SendEmail']=''..sujet..'#'..texte..'#'..mail..'' print ('Attention Bouton jour = '..(timedifference(otherdevices_lastupdate['Bouton jour']))) print ('Attention Bouton nuit = '..(timedifference(otherdevices_lastupdate['Bouton nuit']))) print ('Attention détecteur-a = '..(timedifference(otherdevices_lastupdate['detecteur-a']))) print ('Attention détecteur-b = '..(timedifference(otherdevices_lastupdate['detecteur-b']))) print ('Attention détecteur-c = '..(timedifference(otherdevices_lastupdate['detecteur-c']))) print ('Attention sensor-1 = '..(timedifference(otherdevices_lastupdate['sensor-1']))) print ('Attention sensor-2 = '..(timedifference(otherdevices_lastupdate['sensor-2']))) print ('Attention sensor-3 = '..(timedifference(otherdevices_lastupdate['sensor-3']))) else print ('Alarme jour status = '..otherdevices['Alarme jour']) print ('OK Bouton jour = '..(timedifference(otherdevices_lastupdate['Bouton jour']))) print ('OK Bouton nuit = '..(timedifference(otherdevices_lastupdate['Bouton nuit']))) print ('OK détecteur-a = '..(timedifference(otherdevices_lastupdate['detecteur-a']))) print ('OK détecteur-b = '..(timedifference(otherdevices_lastupdate['detecteur-b']))) print ('OK détecteur-c = '..(timedifference(otherdevices_lastupdate['detecteur-c']))) print ('OK sensor-1 = '..(timedifference(otherdevices_lastupdate['sensor-1']))) print ('OK sensor-2 = '..(timedifference(otherdevices_lastupdate['sensor-2']))) print ('OK sensor-3 = '..(timedifference(otherdevices_lastupdate['sensor-3']))) print ('Heure de début = '..uservariables["help_controle_debut"]) print ('Heure de fin = '..uservariables["help_controle_fin"]) print ('Période de contrôle = '..uservariables["help_controle_periode"]) print ('Période en secondes = '..p) end end return commandArray |
Point 11 (technique) : Il faut aussi rajouter un script pour remettre tous les dispositifs dans la situation initiale lorsque l’alerte est terminé. Le voici :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
-- Script script_device_helpfin.lua qui remet tout le dispositif dans la situation initiale -- Déclenchement en mettant Appel 18 sur Off soit dans Monitor soit dans l'interface de Domoticz -- 27/01/2020 : version initiale commandArray = {} -- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940) dofile('/home/pi/domoticz/scripts/lua/modules.lua') if devicechanged['Appel 18'] == "Off" then print ("Fin d'Alerte : Remise en état initial ") for n=1, 4 do commandArray['help_vague_'..n..'']='Off' idx = otherdevices_idx['help_status_'..n..''] commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=udevice&idx='..idx..'&nvalue=0&svalue=%3Cfont%20color=%22LightGrey%22%3E-%20-%20-%20-%3C/font%3E' } end for n=1, 5 do commandArray['help_'..n..'']='Off' end idx = otherdevices_idx['help_status_18'] commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=udevice&idx='..idx..'&nvalue=0&svalue=%3Cfont%20color=%22LightGrey%22%3E-%20-%20-%20-%3C/font%3E' } end return commandArray |
Ce script sera lancé lorsque l’on appuiera sur Appel 18 dans l’interface Monitor (ou dans l’interface Domoticz) en fin d’alerte.
| Cet article sera enrichi progressivement, un mail sera envoyé aux abonnés de Piblog lorsqu’il sera terminé. |










