Lorsqu’une personne est seule à son domicile (une personne âgée ou un jeune enfant), il peut être nécessaire de prévenir quelqu’un si une difficulté survient (malaise, chute, agression, …). Je cherche depuis assez longtemps une solution d’alerte basée sur un bouton poussoir unique porté par une personne (on l’appellera « médaillon »), tout en ayant une infrastructure technique légère et économique. D’autres boutons fixes, répartis dans l’habitation, seront aussi utilisables pour lancer l’alerte si le médaillon a été oublié ou s’il n’est pas porté (pendant une douche par exemple).
L’infrastructure qui supporte ce mécanisme est une légère évolution de la solution d’alarme jour/nuit basée sur un Raspberry Pi + Domoticz avec Passerelle ZigBee Xiaomi.
Principe de fonctionnement : Au lancement de l’alerte Help, il y a un envoi de sms vers au maximum 9 destinataires différents, un envoi de mails vers au maximum 9 destinataires différents, un envoi de notifications Pushbullet vers un nombre variable de destinataires (car les destinataires s’abonnent à un canal de diffusion, leur nombre est donc illimité) et le lancement d’appels téléphoniques vers les destinataires des sms (appels téléphoniques VoIP via IFTTT). La multiplication des canaux et des destinataires est destinée à garantir la réception de l’alerte (autant que possible). L’adaptation à plus de destinataires est très facile pour chacun des canaux de diffusion de l’alerte (en adaptant simplement les scripts lua et en ajoutant des variables utilisateur). Les destinataires peuvent être différents selon les canaux, on peut donc avoir un grand nombre de destinataires. Un même destinataire peut recevoir les 4 types d’alerte.
Il est souhaitable que la personne qui lance l’alerte figure parmi les premiers destinataires, en effet, lorsqu’elle entendra la notification (ou le sms) arriver sur son smartphone, elle sera rassurée de savoir que son appel à l’aide a bien été envoyé. Ce sera le cas avec les notifications via PushBullet qui sont systématiquement émises vers le propriétaire du canal de diffusion. Une évolution avec diffusion d’un message vocal sur la gateway (+ une signalisation lumineuse) sera ajouté comme cela est déjà fait pour l’alarme, mais le lieu de lancement de l’alerte ne sera peut-être pas à proximité de la passerelle Xiaomi.
Afin de ne pas alerter systématiquement tous les destinataires et de hiérarchiser les alertes, les envois sont découpé en 4 vagues d’appels. Lors de l’envoi de la première vague d’appels, les alarmes jour ou nuit seront stoppées pour éviter le déclenchement des sirènes à l’arrivée des secours.
Chronologie des opérations : Après l’appui sur le médaillon et l’envoi de la première série de messages d’alerte, la personne qui intervient (soit en se rendant au domicile si elle est proche, soit en appelant les secours) va se connecter sur Domoticz à distance et indiquer qu’elle a pris en charge l’alerte en appuyant simplement sur un icône de l’interface Monitor de Domoticz. Ceci informera les autres destinataires que l’alerte est en cours de traitement (ils n’auront donc pas à intervenir). Cette action stoppera l’émission des messages des autres vagues d’appels. Tant que la prise en charge de l’alerte n’a pas été validée, l’émission des messages va se poursuivre avec une ré émission des premiers messages après un délai de 5 minutes, puis une nouvelle vague de messages vers une seconde série de destinataires après 10 minutes, puis une troisième série de message vers les derniers destinataires. Ce qui donne la chronologie suivante :
| 00:00 | Messages vers les destinataires 1 – 2 – 3 | vague 1 |
| 00:05 | Relance vers les destinataires 1 – 2 – 3 | vague 2 |
| 00:10 | Messages vers les destinataires 4 – 5 – 6 (+ 1 – 2 – 3) | vague 3 |
| 00:20 | Messages vers les destinataires 7 – 8 – 9 (+ 1 – 2 – 3 – 4 – 5 – 6) | vague 4 |
Comme cela est indiqué dans le tableau, à chaque vague d’appels les destinataires des vagues précédentes sont aussi re-contactés. Les délais entre les séries d’appels et les coordonnées des personnes à prévenir sont paramétrables grâce à des variables utilisateurs dans Domoticz.
Lorsqu’un correspondant à pris en charge l’alerte, soit en se déplaçant au domicile, soit en appelant les secours et qu’il a appuyé sur l’icône « Pompier » de l’interface, tous les destinataires sont prévenus du traitement de l’alerte par sms/mail/notification et ils peuvent aussi voir cette information dans l’interface Monitor de Domoticz.
Pour l’appel aux secours, il faut utiliser le 18 quelque soit le département où se trouve l’appelant car c’est le seul numéro qui assure une permanence 24/24 et 7/7, le centre 18 qui reçoit l’appel fera le transfert vers la caserne la plus proche du domicile d’où est parti l’alerte. Les autres numéros sont des numéros administratifs qui n’assurent pas de permanence (validé avec le 18 de Gironde et la caserne de pompiers de St Astier). Il faudra préciser la topologie globale des lieux (accès par l’arrière de la maison par exemple), l’emplacement potentiel de la personne (si un bouton fixe a été utilisé, cette information sera présente dans le message d’alerte) et le code pour ouvrir la boîte à clefs si elle existe.
| Il est bien sûr possible d’utiliser le dispositif en mode réduit avec 1 ou 2 destinataires sans rien modifier dans les scripts. Il suffit de laisser les variables utilisateur à blanc. |
Voici le suivi d’une alerte tel qu’il se présente sur l’interface Monitor de Domoticz.




Equipement pour les personnes qui reçoivent les alertes :
- un smartphone, une tablette ou un ordinateur avec accès à internet
- avec la configuration adaptée
- Logiciels :
- Chrome pour l’accès à l’interface de Domoticz
- Pushbullet pour recevoir les notifications
- IFTTT pour gérer les appels VoIP
- Mi Home pour utiliser la caméra Xiaomi distante (optionnel)
- logiciel de Messagerie
- Configuration ad hoc pour l’accès à distant à Domoticz et Monitor
- Logiciels :
Autres équipements à installer :
- une boîte à clefs avec code pour permettre aux pompiers d’accéder facilement à la maison
- quelques caméras avec un canal audio bi-directionnel amplifié pour communiquer avec le domicile et se rendre éventuellement compte de la situation (optionnel)
Contenu du sms : [lieu] jj/mm/aa à hh:mm:ss Alerte depuis : zone Au Secours Je suis en difficulté Merci de venir à la maison ou d’appeler les secours personne
Ce qui donne dans le cas du Domoticz de Neuvic : [Neuvic] 18/01/2021 à 16:53:48 Alerte depuis Médaillon Au Secours Je suis en difficulté Merci de venir à la maison ou d’appeler les secours Josette
Les variables utilisateur personne et zone ont été rajoutées pour personnaliser les alertes. Le texte est personnalisable très simplement (variable utilisateur de Domoticz).
Contenu de la notification Pushbullet et du mail :
Les mots en orange et en rose sont paramétrables dans les variables utilisateur et le mot en rose est attribué automatiquement par le dispositif sur lequel l’alerte a été donnée.
Pour les sms et les mails, il suffit de renseigner les numéros de téléphone et les adresses mail des différents destinataires dans des variables utilisateurs de Domoticz.
Pour les notifications Pushbullet, il faut créer plusieurs canaux (1 par vague) dans le compte Pushbullet de l’installation où doit être activée l’alerte et abonner les destinataires de l’alerte à ce canal. Il doivent bien entendu avoir Pushbullet installé sur leur smartphone.
Voici un descriptif du mécanisme de création d’un canal et d’abonnement :
Pour les appels téléphoniques, on utilise IFTTT qui doit aussi être installé sur les smartphones des destinataires. Il est préférable d’avoir un compte IFTTT dédié à l’alerte. Une applet IFTTT permettra le lancement d’un appel téléphonique en VoIP (Voix sur IP) vers l’utilisateur du smartphone si un sms contenant un mot clef (.Alerte. dans notre cas) est reçu sur le smartphone.
Partie technique
Des scripts lua pour gérer les personnes à appeler et les différentes actions viennent mettre du lien entre les composants et les personnes à prévenir. Cliquer sur le nom du script pour voir le détail de chaque script et le récupérer éventuellement.
Les scripts lua pour le fonctionnement de l’alerte :
2 scripts pour initialiser tous les dispositifs et toutes les variables utilisateur :
|
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
-- Script script_time_help_init1.lua pour créer les dispositifs et les variables utilisateur -- nécessaires pour le mécanisme d'alerte en cas d'urgence -- après sa première exécution ce script peut être supprimé du répertoire lua -- 17/09/2019 : version de référence initiale -- 17/01/2020 : Reprise du projet et ajout de la création automatique des variables utilisateurs -- et des dispositifs nécessaires commandArray = {} -- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940) dofile('/home/pi/domoticz/scripts/lua/modules.lua') -- Recherche de l'IDX d'un matériel de type Dummy pour la création des dispositifs local config = assert(io.popen(curl..'"'.. domoticzURL ..'/json.htm?type=hardware" &')) local blocjson = config:read('*all') config:close() local jsonValeur = json:decode(blocjson) if jsonValeur ~= nil then for Index, Value in pairs( jsonValeur.result ) do if Value.Type == 15 then -- hardware dummy = 15 log("--- --- --- Idx hardware dummy : ".. Value.idx .." ") log("--- --- --- Nom hardware dummy : ".. Value.Name .." ") idx = Value.idx end end end -- Création des dispositifs d'alerte nécessaires pour le script s'ils n'existent pas déjà -- de help_1 à help_5 pour les boutons d'alerte fixes ou pour un médaillon ou une montre - type switch for n=1, 5 do if not otherdevices['help_'..n] then commandArray[#commandArray+1] = { ['OpenURL']=domoticzURL..'/json.htm?type=createvirtualsensor&idx='..idx..'&sensorname=help_'..n..'&sensortype=6&vvalue=off' } log('Création du dispositif help_'..n) end end -- Création des dispositifs permettant le suivi de l'appel vers les secours s'il n'existe pas déjà -- 'Appel 18' est le libellé de ce dispositif mais on peut aussi utilisé un appel vers des voisins proches - type switch -- 'help_status_18' indiquera si l'appel est lancé - type text if not otherdevices['Appel 18'] then commandArray[#commandArray+1] = { ['OpenURL']=domoticzURL..'/json.htm?type=createvirtualsensor&idx='..idx..'&sensorname=Appel%2018&sensortype=6&vvalue=off' } log('Création du dispositif Appel 18') end if not otherdevices['help_status_18'] then commandArray[#commandArray+1] = { ['OpenURL']=domoticzURL..'/json.htm?type=createvirtualsensor&idx='..idx..'&sensorname=help_status_18&sensortype=5' } log('Création du dispositif help_status_18') end -- Création des dispositifs nécessaires au suivi des vagues d'appels s'ils n'existent pas déjà -- de help_vague_1 à help_vague_4 - type switch for n=1, 4 do if not otherdevices['help_vague_'..n] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=createvirtualsensor&idx='..idx..'&sensorname=help_vague_'..n..'&sensortype=6&vvalue=off' } log('Création du dispositif help_vague_'..n) end end -- Création des dispositifs d'information pour le suivi de l'alerte s'ils n'existent pas déjà -- de help_status_1 à help_status_4 - type texte for n=1, 4 do if not otherdevices['help_status_'..n] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=createvirtualsensor&idx='..idx..'&sensorname=help_status_'..n..'&sensortype=5' } log('Création du dispositif help_status_'..n) end end -- Ajout des variables nécessaires pour identifier la zone de l'alerte si elles n'existent pas déjà -- de help_zone_1 à help_zone_5 afin de nommer la zone d'origine de l'alerte for n=1, 5 do if not uservariables['help_zone_'..n] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_zone_'..n..'&vtype=2&vvalue='} log('Création de la variable utilisateur help_zone_'..n) end end -- Ajout des variables nécessaires pour les envois de sms vers les personnes à alerter si elles n'existent pas déjà -- de help_sms_1 à help_sms_9 afin de stocker les numéros de téléphone des personnes à contacter for n=1, 9 do if not uservariables['help_sms_'..n] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_sms_'..n..'&vtype=2&vvalue='} log('Création de la variable utilisateur help_sms_'..n) end end -- Ajout des variables nécessaires pour les envois des mails vers les personnes à alerter si elles n'existent pas déjà -- de help_mail_1 à help_mail_9 afin de connaître les adresses mail des personnes à prévenir for n=1, 9 do if not uservariables['help_mail_'..n] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_mail_'..n..'&vtype=2&vvalue='} log('Création de la variable utilisateur help_mail_'..n) end end -- Ajout des variables nécessaires pour les envois des notifications pushbullet vers les personnes à alerter si elles n'existent pas déjà -- help_push_0 pour la clef à utiliser et de help_push_1 à help_push_3 pour indiquer le tag du channel à utiliser for n=0, 3 do if not uservariables['help_push_'..n] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_push_'..n..'&vtype=2&vvalue='} log('Création de la variable utilisateur help_push_'..n) end end -- Ajout des variables nécessaires pour les appels vers les personnes à alerter si elles n'existent pas déjà -- de help_call_1 à help_call_9 afin de faire sonner le smartphone des personnes à contacter for n=1, 9 do if not uservariables['help_call_'..n] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_call_'..n..'&vtype=2&vvalue='} log('Création de la variable utilisateur help_call_'..n) end end -- Ajout des variables nécessaires pour les appels vers les personnes à alerter si elles n'existent pas déjà -- éléments d'identification de la personne + contenu du message + ... if not uservariables['help_personne'] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_personne&vtype=2&vvalue='} log('Création de la variable utilisateur help_personne') end if not uservariables['help_texte'] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_texte&vtype=2&vvalue='} log('Création de la variable utilisateur help_texte') end if not uservariables['help_lieu'] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_lieu&vtype=2&vvalue='} log('Création de la variable utilisateur help_lieu') end if not uservariables['help_zone'] then commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=adduservariable&vname=help_zone&vtype=2&vvalue='} log('Création de la variable utilisateur help_zone') end -- Fin de la création des dispositifs et des variables utilisateur return commandArray |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
-- Script script_time_help_init2.lua pour mettre à jour les dispositifs de suivi du statut des appels -- pour l'appel aux pompiers et pour les vagues -- 19/01/2020 : version de référence initiale commandArray = {} -- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940) dofile('/home/pi/domoticz/scripts/lua/modules.lua') -- Mise à jour en choisissant le contenu et la couleur d'un dispositif texte -- de help_status_1 à help_status_4 for n=1, 4 do 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' } log('Mise à jour initiale du dispositif help_status_'..n) end -- Mise à jour en choisissant le contenu et la couleur d'un dispositif texte -- pour help_status_18 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' } log('Mise à jour initiale du dispositif help_status_18') return commandArray |
Il faut d’abord installer le premier script, attendre 1 minute, vérifier qu’il a bien installé sans erreur les dispositifs et les variables utilisateur; puis le supprimer et installer le second script, attendre 1 minute, vérifier que les dispositifs de type texte ont bien été remplis avec – – – – et supprimer ce script 2.
4 scripts pour la gestion des vagues :
|
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
-- Script script_device_helpvague1.lua d'alerte en cas d'urgence -- Déclenchement par appui sur le bouton Help (ou les boutons Help ou un médaillon Help) -- Envoi de mail et pushover similaires ainsi que de sms -- Option : Lancement d'appel téléphonique via IFTTT -- Pour Pushover, il faut crééer un channel et faire abonner les destinatairesà ce channel -- 17/09/2019 : version de référence initiale en cours de test -- 17/01/2020 : Reprise du projet et ajout de la création automatique des variables utilisateurs -- et des switchs nécessaires 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"] m4 = uservariables["help_mail_4"] m5 = uservariables["help_mail_5"] m6 = uservariables["help_mail_6"] m7 = uservariables["help_mail_7"] m8 = uservariables["help_mail_8"] m9 = uservariables["help_mail_9"] -- Paramètres pour l'utilisation des canaux d'Alerte Pushbullet p0 = uservariables["help_push_0"] p1 = uservariables["help_push_1"] p2 = uservariables["help_push_2"] p3 = uservariables["help_push_3"] -- Contenu des sms/mail à envoyer text = uservariables["help_texte"] -- Identification de la personne qui active l'alerte Help perso = uservariables["help_personne"] -- Localisation de l'alerte Help nom = uservariables["help_lieu"] -- Clefs IFTTT à utiliser pour les appels téléphoniques -- c1 = uservariables["help_call_1"] -- c2 = uservariables["help_call_2"] -- c3 = uservariables["help_call_3"] -- Activation du script lors de l'appui sur 1 des 5 boutons/médaillons d'alerte -- il y a 4 appuis différents possibles sur chaque boutons (à vérifier pour le médaillon) -- clic - double clic - appui long - appui long + relachement if (((devicechanged['help_1'] == "Click" or devicechanged['help_1'] == "Double Click" or devicechanged['help_1'] == "Long Click" or devicechanged['help_1'] == "Long Click Release")) or ((devicechanged['help_2'] == "Click" or devicechanged['help_2'] == "Double Click" or devicechanged['help_2'] == "Long Click" or devicechanged['help_2'] == "Long Click Release")) or ((devicechanged['help_3'] == "Click" or devicechanged['help_3'] == "Double Click" or devicechanged['help_3'] == "Long Click" or devicechanged['help_3'] == "Long Click Release")) or ((devicechanged['help_4'] == "Click" or devicechanged['help_4'] == "Double Click" or devicechanged['help_4'] == "Long Click" or devicechanged['help_4'] == "Long Click Release")) or ((devicechanged['help_5'] == "Click" or devicechanged['help_5'] == "Double Click" or devicechanged['help_5'] == "Long Click" or devicechanged['help_5'] == "Long Click Release"))) then print ('Alerte : Lancement Vague 1') if ((devicechanged['help_1'] == "Click" or devicechanged['help_1'] == "Double Click" or devicechanged['help_1'] == "Long Click" or devicechanged['help_1'] == "Long Click Release")) then zone = uservariables["help_zone_1"] end if ((devicechanged['help_2'] == "Click" or devicechanged['help_2'] == "Double Click" or devicechanged['help_2'] == "Long Click" or devicechanged['help_2'] == "Long Click Release")) then zone = uservariables["help_zone_2"] end if ((devicechanged['help_3'] == "Click" or devicechanged['help_3'] == "Double Click" or devicechanged['help_3'] == "Long Click" or devicechanged['help_3'] == "Long Click Release")) then zone = uservariables["help_zone_3"] end if ((devicechanged['help_4'] == "Click" or devicechanged['help_4'] == "Double Click" or devicechanged['help_4'] == "Long Click" or devicechanged['help_4'] == "Long Click Release")) then zone = uservariables["help_zone_4"] end if ((devicechanged['help_5'] == "Click" or devicechanged['help_5'] == "Double Click" or devicechanged['help_5'] == "Long Click" or devicechanged['help_5'] == "Long Click Release")) then zone = uservariables["help_zone_5"] end -- Mise en mémoire de la zone d'appel (dans une variable utilisateur) commandArray['Variable:help_zone']= zone -- Arrêt des alarmes avant l'arrivée des secours if otherdevices['Alarme jour'] == 'On' then commandArray['Alarme jour'] = 'Off' end if otherdevices['Alarme nuit'] == 'On' then commandArray['Alarme nuit'] = 'Off' end -- Activation du dispositif de suivi de la vague help_vague_1 commandArray['help_vague_1']='On' -- Mise à jour de help_status_1 en choisissant le contenu et la couleur - dispositif text idx = otherdevices_idx['help_status_1'] commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=udevice&idx='..idx..'&nvalue=0&svalue=%3Cfont%20color=%22OrangeRed%22%3ELancée%3C/font%3E' } -- Préparation du lancement de la vague 2 commandArray['help_vague_2']='On' -- Ajouter le lancement d'un message vocal sur la gateway Xiaomi pour prévenir la personne à secourir du bon lancement des opérations -- Xiaomi son + lumière -- Texte du sms à envoyer positionné dans la variable sms_texte -- Type de traitement indiqué dans la variable sms_traitement -- Mise à On du switch virtuel d'envoi des sms commandArray['Variable:sms_texte']= ' Alerte depuis : '..zone..' '..text..' '..perso..' ' commandArray['Variable:sms_traitement']= 'Help1' switchOn('sms') -- Formattage des informations à envoyer par mail -- et valorisation des variables pour l'envoi du mail sujet = "Alerte "..nom.." le "..date_jour.." à "..heure_sms.." " texte = "Le "..date_jour.." à "..heure_sms.." Alerte depuis : "..zone.." "..text.." "..perso.." " -- 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..'' -- Envoi d'une notification dans un canal de diffusion Pushbullet dédié à l'alerte Help -- Les abonnés au canal de diffusion recoivent l'alerte os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p1..' -vvv') -- os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p2..' -vvv') -- os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p3..' -vvv') -- Lancement des appels vers les personnes à prévenir -- if c1 ~= nil and c1 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c1..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c1 -- if c2 ~= nil and c2 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c2..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c2 -- if c3 ~= nil and c3 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c3..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c3 end return commandArray |
|
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 87 |
-- Script script_device_helpvague2.lua qui relance les appels de la vague 1 -- Déclenchement automatique après un délai d'allumage défini dans le dispositif -- 20/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"] m4 = uservariables["help_mail_4"] m5 = uservariables["help_mail_5"] m6 = uservariables["help_mail_6"] m7 = uservariables["help_mail_7"] m8 = uservariables["help_mail_8"] m9 = uservariables["help_mail_9"] -- Paramètres pour l'utilisation des canaux d'Alerte Pushbullet p0 = uservariables["help_push_0"] p1 = uservariables["help_push_1"] p2 = uservariables["help_push_2"] p3 = uservariables["help_push_3"] -- Contenu des sms/mail à envoyer text = uservariables["help_texte"] -- Identification de la personne qui active l'alerte Help perso = uservariables["help_personne"] -- Localisation de l'alerte Help nom = uservariables["help_lieu"] -- Zone de l'alerte zone = uservariables["help_zone"] -- Clefs IFTTT à utiliser pour les appels téléphoniques -- c1 = uservariables["help_call_1"] -- c2 = uservariables["help_call_2"] -- c3 = uservariables["help_call_3"] if devicechanged['help_vague_2'] == "On" then print ('Alerte : Lancement Vague 2') -- Mise à jour de help_status_2 en choisissant le contenu et la couleur - dispositif text idx = otherdevices_idx['help_status_2'] commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=udevice&idx='..idx..'&nvalue=0&svalue=%3Cfont%20color=%22OrangeRed%22%3ELancée%3C/font%3E' } -- Préparation du lancement de la vague 3 commandArray['help_vague_3']='On' -- Texte du sms à envoyer positionné dans la variable sms_texte -- Type de traitement indiqué dans la variable sms_traitement -- Mise à On du switch virtuel d'envoi des sms commandArray['Variable:sms_texte']= ' Alerte depuis : '..zone..' '..text..' '..perso..' ' commandArray['Variable:sms_traitement']= 'Help1' switchOn('sms') -- Formattage des informations à envoyer par mail -- et valorisation des variables pour l'envoi du mail sujet = "Alerte "..nom.." le "..date_jour.." à "..heure_sms.." " texte = "Le "..date_jour.." à "..heure_sms.." Alerte depuis : "..zone.." "..text.." "..perso.." " -- 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..'' -- Envoi d'une notification dans un canal de diffusion Pushbullet dédié à l'alerte Help -- Les abonnés au canal de diffusion recoivent l'alerte os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p1..' -vvv') -- os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p2..' -vvv') -- os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p3..' -vvv') -- Lancement des appels vers les personnes à prévenir -- if c1 ~= nil and c1 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c1..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c1 -- if c2 ~= nil and c2 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c2..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c2 -- if c3 ~= nil and c3 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c3..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c3 end return commandArray |
|
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 87 88 89 90 91 92 93 94 95 96 97 98 |
-- Script script_device_helpvague3.lua qui lance les appels de la vague 3 -- Déclenchement automatique après un délai d'allumage défini dans le dispositif -- 20/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"] m4 = uservariables["help_mail_4"] m5 = uservariables["help_mail_5"] m6 = uservariables["help_mail_6"] m7 = uservariables["help_mail_7"] m8 = uservariables["help_mail_8"] m9 = uservariables["help_mail_9"] -- Paramètres pour l'utilisation des canaux d'Alerte Pushbullet p0 = uservariables["help_push_0"] p1 = uservariables["help_push_1"] p2 = uservariables["help_push_2"] p3 = uservariables["help_push_3"] -- Contenu des sms/mail à envoyer text = uservariables["help_texte"] -- Identification de la personne qui active l'alerte Help perso = uservariables["help_personne"] -- Localisation de l'alerte Help nom = uservariables["help_lieu"] -- Zone de l'alerte zone = uservariables["help_zone"] -- Clefs IFTTT à utiliser pour les appels téléphoniques -- c1 = uservariables["help_call_1"] -- c2 = uservariables["help_call_2"] -- c3 = uservariables["help_call_3"] if devicechanged['help_vague_3'] == "On" then print ('Alerte : Lancement Vague 3') -- Mise à jour de help_status_3 en choisissant le contenu et la couleur - dispositif text idx = otherdevices_idx['help_status_3'] commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=udevice&idx='..idx..'&nvalue=0&svalue=%3Cfont%20color=%22OrangeRed%22%3ELancée%3C/font%3E' } -- Préparation du lancement de la vague 4 commandArray['help_vague_4']='On' -- Texte du sms à envoyer positionné dans la variable sms_texte -- Type de traitement indiqué dans la variable sms_traitement -- Mise à On du switch virtuel d'envoi des sms des vagues 1 et 2 commandArray['Variable:sms_texte']= ' Alerte depuis : '..zone..' '..text..' '..perso..' ' commandArray['Variable:sms_traitement']= 'Help1' switchOn('sms') commandArray['Variable:sms_traitement']= 'Help2' switchOn('sms') -- Formattage des informations à envoyer par mail -- et valorisation des variables pour l'envoi du mail sujet = "Alerte "..nom.." le "..date_jour.." à "..heure_sms.." " texte = "Le "..date_jour.." à "..heure_sms.." Alerte depuis : "..zone.." "..text.." "..perso.." " -- 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 if m4 ~= nil and m4 ~= "" then mail = mail..';'..m4 if m5 ~= nil and m5 ~= "" then mail = mail..';'..m5 if m6 ~= nil and m6 ~= "" then mail = mail..';'..m6 end end end end end end -- Envoi du mail commandArray['SendEmail']=''..sujet..'#'..texte..'#'..mail..'' -- Envoi d'une notification dans un canal de diffusion Pushbullet dédié à l'alerte Help -- Les abonnés au canal de diffusion recoivent l'alerte os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p1..' -vvv') os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p2..' -vvv') -- os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p3..' -vvv') -- Lancement des appels vers les personnes à prévenir -- if c1 ~= nil and c1 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c1..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c1 -- if c2 ~= nil and c2 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c2..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c2 -- if c3 ~= nil and c3 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c3..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c3 end return commandArray |
|
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
-- Script script_device_helpvague4.lua qui lance les appels de la vague 4 -- Déclenchement automatique après un délai d'allumage défini dans le dispositif -- 20/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"] m4 = uservariables["help_mail_4"] m5 = uservariables["help_mail_5"] m6 = uservariables["help_mail_6"] m7 = uservariables["help_mail_7"] m8 = uservariables["help_mail_8"] m9 = uservariables["help_mail_9"] -- Contenu des sms/mail à envoyer text = uservariables["help_texte"] -- Identification de la personne qui active l'alerte Help perso = uservariables["help_personne"] -- Localisation de l'alerte Help nom = uservariables["help_lieu"] -- Zone de l'alerte zone = uservariables["help_zone"] -- Paramètres pour l'utilisation des canaux d'Alerte Pushbullet p0 = uservariables["help_push_0"] p1 = uservariables["help_push_1"] p2 = uservariables["help_push_2"] p3 = uservariables["help_push_3"] -- Clefs IFTTT à utiliser pour les appels téléphoniques -- c1 = uservariables["help_call_1"] -- c2 = uservariables["help_call_2"] -- c3 = uservariables["help_call_3"] if devicechanged['help_vague_4'] == "On" then print ('Alerte : Lancement Vague 4') -- Mise à jour de help_status_4 en choisissant le contenu et la couleur - dispositif text idx = otherdevices_idx['help_status_4'] commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=udevice&idx='..idx..'&nvalue=0&svalue=%3Cfont%20color=%22OrangeRed%22%3ELancée%3C/font%3E' } -- Texte du sms à envoyer positionné dans la variable sms_texte -- Type de traitement indiqué dans la variable sms_traitement -- Mise à On du switch virtuel d'envoi des sms des vagues 1 à 3 commandArray['Variable:sms_texte']= ' Alerte depuis : '..zone..' '..text..' '..perso..' ' commandArray['Variable:sms_traitement']= 'Help1' switchOn('sms') commandArray['Variable:sms_traitement']= 'Help2' switchOn('sms') commandArray['Variable:sms_traitement']= 'Help3' switchOn('sms') -- Formattage des informations à envoyer par mail -- et valorisation des variables pour l'envoi du mail sujet = "Alerte "..nom.." le "..date_jour.." à "..heure_sms.." " texte = "Le "..date_jour.." à "..heure_sms.." Alerte depuis : "..zone.." "..text.." "..perso.." " -- 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 if m4 ~= nil and m4 ~= "" then mail = mail..';'..m4 if m5 ~= nil and m5 ~= "" then mail = mail..';'..m5 if m6 ~= nil and m6 ~= "" then mail = mail..';'..m6 if m7 ~= nil and m7 ~= "" then mail = mail..';'..m7 if m8 ~= nil and m8 ~= "" then mail = mail..';'..m8 if m9 ~= nil and m9 ~= "" then mail = mail..';'..m9 end end end end end end end end end -- Envoi du mail commandArray['SendEmail']=''..sujet..'#'..texte..'#'..mail..'' -- Envoi d'une notification dans un canal de diffusion Pushbullet dédié à l'alerte Help -- Les abonnés au canal de diffusion recoivent l'alerte os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p1..' -vvv') os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p2..' -vvv') os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p3..' -vvv') -- Lancement des appels vers les personnes à prévenir -- if c1 ~= nil and c1 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c1..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c1 -- if c2 ~= nil and c2 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c2..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c2 -- if c3 ~= nil and c3 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c3..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c3 end return commandArray |
Un script lua et un script dzVents (car le lua ne sait pas gérer l’arrêt des dispositifs en départ différé) pour la fin d’alerte lors de l’appel aux secours :
|
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
-- Script script_device_help18.lua qui indique aux correspondants que les secours ont été contactés -- Déclenchement après l'appui sur le dispositif -- 20/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"] m4 = uservariables["help_mail_4"] m5 = uservariables["help_mail_5"] m6 = uservariables["help_mail_6"] m7 = uservariables["help_mail_7"] m8 = uservariables["help_mail_8"] m9 = uservariables["help_mail_9"] -- Paramètres pour l'utilisation des canaux d'Alerte Pushbullet p0 = uservariables["help_push_0"] p1 = uservariables["help_push_1"] p2 = uservariables["help_push_2"] p3 = uservariables["help_push_3"] -- Localisation de l'alerte Help nom = uservariables["help_lieu"] -- Clefs IFTTT à utiliser pour les appels téléphoniques -- c1 = uservariables["help_call_1"] -- c2 = uservariables["help_call_2"] -- c3 = uservariables["help_call_3"] if devicechanged['Appel 18'] == "On" then print ('Alerte : Secours contactés ') -- Mise à jour de help_status_18 en choisissant le contenu et la couleur - dispositif text idx = otherdevices_idx['help_status_18'] commandArray[#commandArray+1]={['OpenURL']=domoticzURL..'/json.htm?type=command¶m=udevice&idx='..idx..'&nvalue=0&svalue=%3Cfont%20color=%22Red%22%3EFait%3C/font%3E' } -- Texte du sms à envoyer positionné dans la variable sms_texte commandArray['Variable:sms_texte']= "Alerte terminée : Les secours ont été contactés " -- Formattage des informations à envoyer par mail -- et valorisation des variables pour l'envoi du mail sujet = "Fin d'alerte "..nom.." le "..date_jour.." à "..heure_sms.." " texte = "Le "..date_jour.." à "..heure_sms.." Les secours ont été contactés " -- Construction de la liste des adresses mail à utiliser -- Type de traitement indiqué dans la variable sms_traitement -- Mise à On du switch virtuel d'envoi des sms if otherdevices['help_vague_1'] == 'On' then commandArray['Variable:sms_traitement']= 'Help1' switchOn('sms') os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p1..' -vvv') 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 end if otherdevices['help_vague_3'] == 'On' then commandArray['Variable:sms_traitement']= 'Help2' switchOn('sms') os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p2..' -vvv') if m4 ~= nil and m4 ~= "" then mail = mail..';'..m4 if m5 ~= nil and m5 ~= "" then mail = mail..';'..m5 if m6 ~= nil and m6 ~= "" then mail = mail..';'..m6 end end end end if otherdevices['help_vague_4'] == 'On' then commandArray['Variable:sms_traitement']= 'Help3' switchOn('sms') os.execute('curl -u"'..p0..':" "https://api.pushbullet.com/v2/pushes" -d type=note -d title="'..sujet..'" -d body="'..texte..'" -d channel_tag='..p3..' -vvv') if m7 ~= nil and m7 ~= "" then mail = mail..';'..m7 if m8 ~= nil and m8 ~= "" then mail = mail..';'..m8 if m9 ~= nil and m9 ~= "" then mail = mail..';'..m9 end end end end -- Envoi du mail commandArray['SendEmail']=''..sujet..'#'..texte..'#'..mail..'' -- Lancement des appels vers les personnes à prévenir -- if c1 ~= nil and c1 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c1..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c1 -- if c2 ~= nil and c2 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c2..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c2 -- if c3 ~= nil and c3 ~= "" then -- commandArray['OpenURL']='https://maker.ifttt.com/trigger/Help/with/key/'..c3..'?value1='..nom..'&value2='..perso..'&value3='..hhmm_alerte..'' -- end -- if c3 end return commandArray |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
-- dzVents d'arrêt du processus d'alerte pendant le délai d'activation -- lorsque les secours sont contactés -- 20/01/2020 : version de référence initiale return { active = true, -- à basculer à 'false' pour désactiver le lancement de ce script on = { devices = { 'Appel 18' }, }, execute = function(domoticz, device) if (device.name == 'Appel 18' and device.state == 'On') then domoticz.devices('help_vague_2').cancelQueuedCommands() domoticz.devices('help_vague_3').cancelQueuedCommands() domoticz.devices('help_vague_4').cancelQueuedCommands() domoticz.log ('Appel 18 : arrêt des vagues 2/3/4') end end } |
Le script d’envoi des sms a aussi été adapté pour prendre en compte cette nouvelle alerte.
|
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 |
-- Script pour l'envoi d'un sms à un ou plusieurs destinataires -- 10/06/18 : Ajout de plusieurs types de traitement (Alarme/Intrusion jour/Intrusion nuit) -- pour differencier les destinataires -- 17/09/2019 : Ajout d'un traitement de type Help avec 3 destinataires possibles -- 15/05/2020 : Ajout de l'origine dans les sms (nom) commandArray = {} -- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940) dofile('/home/pi/domoticz/scripts/lua/modules.lua') -- Variables locales à utiliser -- Les variables locales sont valorisées grace aux variables utilisateurs -- Adresse IP de la passerelle sms local ip = uservariables["ip_sms_passerelle"] -- Type de traitement à réaliser (Alarme ou Intrusion jour ou Intrusion nuit) local tr = uservariables["sms_traitement"] -- nom de la machine pour identifier l'origine des sms local nom = uservariables["nom"] -- Mise en forme de l'horodatage pour le sms + texte du sms -- Le contenu du sms est stocké dans la variable "sms_texte" horo_sms = '['..nom..'] '..date_jour..' à '..heure_sms..'\n' -- Texte à envoyer texte_sms = uservariables["sms_texte"] reponse = horo_sms..' '..texte_sms if (devicechanged['sms'] == 'On') then print ('sms traitement : '..tr..'') -- Traitement Alarme if tr == 'Alarme' then sms1 = uservariables["sms-1"] sms2 = uservariables["sms-2"] end -- Alarme -- Traitement Anomalie if tr == 'Anomalie' then sms1 = uservariables["sms-1"] -- sms2 = uservariables["sms-2"] end -- Anomalie -- Traitement Intrusion jour if tr == 'Intrusion jour' then sms1 = uservariables["sms-intrusion-jour-1"] sms2 = uservariables["sms-intrusion-jour-2"] end -- Intrusion jour -- Traitement Intrusion nuit if tr == 'Intrusion nuit' then sms1 = uservariables["sms-intrusion-nuit-1"] sms2 = uservariables["sms-intrusion-nuit-2"] end -- Intrusion nuit -- Traitement Help1 : 3 premiers numéros if tr == 'Help1' then sms1 = uservariables["help_sms_1"] sms2 = uservariables["help_sms_2"] sms3 = uservariables["help_sms_3"] end -- Help1 -- Traitement Help2 : numéros 4/5/6 if tr == 'Help2' then sms1 = uservariables["help_sms_4"] sms2 = uservariables["help_sms_5"] sms3 = uservariables["help_sms_6"] end -- Help2 -- Traitement Help3 : numéros 7/8/9 if tr == 'Help3' then sms1 = uservariables["help_sms_7"] sms2 = uservariables["help_sms_8"] sms3 = uservariables["help_sms_9"] end -- Help3 if sms1 ~= nil and sms1 ~= "" then commandArray[1]={['OpenURL']='http://'..ip..'/send.html?smsto='..sms1..'&smsbody='..url_encode(reponse)..'&smstype=sms'} end -- if sms1 if sms2 ~= nil and sms2 ~= "" then commandArray[2]={['OpenURL']='http://'..ip..'/send.html?smsto='..sms2..'&smsbody='..url_encode(reponse)..'&smstype=sms'} end -- if sms2 if sms3 ~= nil and sms3 ~= "" then commandArray[3]={['OpenURL']='http://'..ip..'/send.html?smsto='..sms3..'&smsbody='..url_encode(reponse)..'&smstype=sms'} end -- if sms3 end -- if sms on return commandArray |
ToDo List :
- Installer et paramétrer l’ensemble du dispositif sur le Domoticz de Neuvic
- Configurer les smartphones et tablettes/ordinateurs des destinataires
- Tester l’ensemble à partir d’un bouton unique mobile
- Installer une caméra et valider son utilisation
- Commander et installer la boîte à clefs
- Valider un médaillon SOS (et son récepteur !)
- 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)
- Poursuivre les tests avec IFTTT pour les appels téléphoniques (ou chercher une autre solution)
- Adapter progressivement le mécanisme en fonction des retours
Les suggestions sont bienvenues 🙂









