
- Un matériel conçu et fabriqué en France.
- Une installation et une maintenance effectuée par leurs techniciens.
- Un système régulièrement contrôlé à distance.
- Tout est compris dans l’abonnement (pas d’achat à faire, pas de frais en cas de dépannage d’un technicien).
- C’est un système propriétaire, loué, fermé, et donc par définition non interfaçable avec un système de domotique. Cet inconvénient peut aussi être vu comme un avantage: il s’agit de la protection de l’habitation, et EPS est garant du bon fonctionnement.
- A long terme, cela peut revenir plus cher qu’une alarme achetée.
Sommaire
Prérequis
Ce matériel étant la propriété d’EPS, il n’est pas envisageable de faire un hack hardware. Autrement dit, on ne peut le modifier physiquement pour le relier à Domoticz. En revanche, on peut faire un hack software. En effet, EPS peut vous envoyer un email et/ou un SMS à chaque changement d’état (mise en service, mise hors service). Nous allons détourner cette option. Il faut donc:- Domoticz installé et fonctionnel
- Un modem USB 3G pour que Domoticz puisse recevoir des SMS
Configuration côté EPS
Dans l’espace abonnés, il faut ajouter un mode de notification par SMS pour chaque entrée/sortie, en indiquant le numéro de téléphone de la SIM utilisée pour Domoticz:
Configuration côté Domoticz
Analysons les SMS envoyés par EPS:- Lorsque l’alarme est mise en marche totale, EPS envoie un message de ce type: « Info télésurveillance 13/03/2017 09:54:36 : mise en marche via code Damien du clavier ENTREE (zone 1) »
- Lorsque l’alarme est mise en marche partielle, EPS envoie un message de ce type: « Info télésurveillance 12/03/2017 23:52:08 : mise en marche (mode partiel) via code Damien du clavier ENTREE (zone 1) »
- Lorsque l’alarme est mise à l’arrêt, EPS envoie un message de ce type: « Info télésurveillance 13/03/2017 10:58:50 : mise à l’arret via code Damien du clavier ENTREE (zone 1) »


-- script_variable_sms.lua -- -- un smartphone connecté au réseau wifi de la maison -- avec l'application 'sms gateway ultimate' installée -- https://play.google.com/store/apps/details?id=com.icecoldapps.smsgatewayultimate -- -- dès qu'un sms est reçu, l'application met à jour une variable utilisateur nommée 'sms' via la requette json suivante -- http://USER:PASS@IP:PORT/json.htm?type=command¶m=updateuservariable&idx=IDX&vname=sms&vtype=2&vvalue=%body%;%from% -- -- dès que la variable 'sms' est modifiée, ce script est exécuté. -- suivant une correspondance avec l'un des messages de la liste ci dessous, -- si la personne y est autorisée, -- l'action associée est lancée -- -- un message de réponse est retourné -- -- la commande 'Help' retourne un SMS contenant la liste -- -------------------------------- ------ Tableau à éditer ------ -------------------------------- -- liste des messages à comprendre et leurs actions associées local liste={} --liste['message'] = "action" liste['Help'] = [[ reponse = 'Je comprend: '..sendAll() ]] -- ne pas toucher cette ligne liste['Ping'] = [[ reponse = 'Pong!' ]] -- liste des utilisateurs autorisés local user={} user['Toto'] = '+336xxxxxxxx' user['Tata'] = '+336yyyyyyyy' -- réponses par défaut local good = 'Ok..' -- réponse en cas de commande correcte local notGood = 'Je ne comprends pas, essayez \'Help\'' -- réponse en cas de commande non comprise local guess = 'Je ne vous connais pas !' -- réponse aux utilisateurs non autorisés -------------------------------- -- Fin du tableau à éditer -- -------------------------------- function spairs(t) local keys = {} for k in pairs(t) do keys[#keys+1] = k end table.sort(keys) local i = 0 return function() i = i + 1 if keys[i] then return keys[i], t[keys[i]] end end end function url_encode(str) if (str) then str = string.gsub (str, "\n", "\r\n") str = string.gsub (str, "([^%w %-%_%.%~])", function (c) return string.format ("%%%02X", string.byte(c)) end) str = string.gsub (str, " ", "+") end return str end function sendAll() for message, action in spairs(liste) do if message ~= 'Help' then if rst == nil then rst = message else rst = rst..'\n'..message end end end return rst end commandArray = {} if(uservariablechanged['sms']) then sms,from = uservariables['sms']:match("([^;]+);([^;]+)") local msg = "print('SMS reçu du N° '..from..' : \"'..sms..'\"')" -- Debut EPS -- if string.find(sms, "du clavier ENTREE") then if string.find(sms, "en marche") then if string.find(sms, "mode partiel") then commandArray['Etat Alarme']='Set Level 10' print ("Alarme partiel") else commandArray['Etat Alarme']='Set Level 20' print ("Alarme total") end elseif string.find(sms, "l'arret") then commandArray['Etat Alarme']='Set Level 0' print ("Alarme arret") end else -- Fin EPS -- for name, number in pairs(user) do reponse = guess if number == from then print('SMS reçu de '..name..' : \"'..sms..'\"') reponse = notGood msg = "print('SMS, commande invalide')" for message, action in pairs(liste) do if sms == message then reponse = good msg = "print('SMS, commande correcte')" load(action)() break end end break end end load(msg)() if (reponse ~= guess) then print('SMS : reponse -> '..reponse) os.execute ('sudo -u gammu gammu-smsd-inject TEXT "'..from..'" -text "'..reponse..'"') else print('SMS : expéditeur inconnu ==> On répond pas') -- Evite de répondre à EPS alors que leur numéro court n'est pas sensé interroger Domoticz end end -- EPS end return commandArrayExplications: si le message reçu contient le texte « du clavier ENTREE », alors en fonction de son contenu on va mettre à jour l’interrupteur virtuel. Et voilà, maintenant cet interrupteur changera d’état à chaque fois que quelqu’un activera ou désactivera l’alarme. Attention toutefois, ceci n’est pas immédiat. En général, il faut environ 15 secondes pour que le SMS arrive après avoir fait une action sur l’alarme. Pour terminer, voici un exemple de script LUA permettant de déclencher des scénarios en fonction des modes d’alarme:
-- script_device_alarme.lua package.path = package.path..";/root/domoticz/scripts/lua/?.lua" require "modules" time = os.date("*t") local day = os.date("*t").wday -- 1 for Sunday, 2 for Monday -- liste des utilisateurs recevant les notifications local user={} user['Toto'] = '+336xxxxxxxx' user['Tata'] = '+336yyyyyyyy' function send_sms(message) horodatage = "["..os.date('%d').."/"..os.date('%m').."/"..os.date('%Y').." @ "..os.date('%H')..":"..os.date('%M').."] " for name, number in pairs(user) do os.execute ('sudo -u gammu gammu-smsd-inject TEXT "'..number..'" -text "'..horodatage..message..'"') end end commandArray = {} if (devicechanged['Etat Alarme'] == 'Total') then -- sms send_sms('Alarme en service total') -- Lumieres switchOff('Lumiere entree') switchOff('Lumiere escalier') elseif ( devicechanged['Etat Alarme'] == 'Partiel' ) then -- sms send_sms('Alarme en service partiel') -- Lumieres commandArray['Mode lumiere salon']='Off' elseif ( devicechanged['Etat Alarme'] == 'Off' ) then -- sms send_sms('Alarme hors service') end return commandArrayA vous de créer vos propres scénarios!
Alarme / télésurveillance EPS: retour d’état dans Domoticz
EPS propose une solution de télésurveillance efficace, indépendante et sûre. Avec quelques astuces, nous pouvons connaître l'état de l'alarme dans Domoticz et déclencher des scénarios en conséquence.
Pros
- Matériel conçu et fabriqué en France
- Installation et maintenance effectuée par leurs techniciens
- Système régulièrement contrôlé à distance
- Tout est compris dans l'abonnement
Cons
- Système propriétaire donc par définition non interfaçable avec un système de domotique
- A long terme, cela peut revenir plus cher qu'une alarme achetée
- Délai entre l'activation ou la désactivation de l'alarme et la réception de l'information