Alertes SMS sur détection de mouvement

En voilà un titre qui claque. Enfin je crois 🙂

Après avoir vu dans le précédent article comment envoyer/recevoir des SMS avec un RPi, je vous propose une application concrète. Pour ce faire, on va utiliser une fonctionnalité de plus en plus répandue dans les caméras IP: la détection de mouvement. Ça tombe bien, comme je l’avais exposé dans mon premier article de référence présentant mon environnement, je dispose d’une caméra IP « Foscam FI8910W » qui propose cette fonctionnalité.

Principe


En général, lorsqu’une caméra IP intègre une fonctionnalité de détection de mouvement, elle propose également ce genre d’actions, de manière non exclusive, lorsqu’un mouvement est détecté :

  • Envoyer une alerte e-mail joignant les images ayant déclenché l’alerte
  • Envoyer une série d’images ayant déclenché l’alerte vers un serveur FTP
  • Enregistrer une vidéo pendant x secondes
  • etc.

En tous cas, aucune fonctionnalité d’envoi de SMS, évidemment, sinon je n’écrirai pas cet article. En revanche ce qui nous intéresse et dont on va pouvoir se servir, c’est l’alerte par envoi d’e-mail.

Le principe est relativement simple : on va intercepter cet e-mail, qui fera office de déclencheur pour envoyer un SMS d’alerte, tout en le relayant à sa destination finale.

Comment va-t-on faire ça ?

En temps normal, pour que la caméra IP puisse envoyer des e-mails, on spécifie dans sa configuration le serveur SMTP (serveur d’envoi d’e-mail) de notre fournisseur d’accès à internet (exemple: smtp.free.fr). L’idée est de configurer la caméra IP pour qu’elle utilise le RPi comme serveur SMTP. Rassurez-vous, il ne sera pas nécessaire d’installer et de configurer un véritable serveur STMP sur notre RPi pour du relai d’e-mail, loin de là, il y a beaucoup plus simple.

On va utiliser une fonctionnalité du démon Xinetd (qu’on a déjà vu dans d’autres articles, voir ici comment l’installer) ainsi qu’une fonctionnalité de la bibliothèque « TCP wrapper » , pour à la fois:

  1. Relayer le mail au véritable serveur SMTP, celui de notre fournisseur d’accès
  2. Au passage, déclencher une action de notre choix, en l’occurrence : envoyer un SMS

Configuration de la caméra IP


Je vais montrer ici comment configurer la caméra IP que je possède, à savoir la Foscam FI8910W. Il ne devrait cependant pas être très compliqué d’adapter à un autre modèle de caméra.

Dans l’interface d’administration de la Foscam, en cliquant sur le menu « Mail Service Settings », il est possible de définir :

  • l’adresse e-mail de l’expéditeur : En général, on mettra l’adresse e-mail correspondant à notre FAI puisque son serveur SMTP n’autorisera probablement pas un expéditeur différent.
  • l’adresse e-mail du destinataire : vous pouvez mettre ici l’adresse e-mail de votre choix qui recevra le mail d’alerte.
  • Le serveur SMTP : on met ici l’adresse IP de notre RPi qui va envoyer le SMS (pour moi, le DomoPi)
  • Le port du serveur SMTP : c’est un port arbitraire que j’ai choisi, mais la suite de la configuration utilise le port TCP/8025, j’explique ci-après pourquoi.

Configuration de Xinetd


Toute cette configuration se fait sur le RPi qui peut envoyer des SMS. Chez moi c’est le DomoPi (les lecteurs des précédents articles commencent à le connaitre). Je pars du principe que Xinetd est déjà installé sur le RPi.

Étape 1 :

On va définir un nouveau port TCP pour un nouveau service qu’on appellera arbitrairement « smtpproxy » et auquel on fera correspondre de manière tout aussi arbitraire le port TCP/8025 (25 étant le port standard SMTP). Il faut éditer le fichier /etc/services (sudo nano /etc/services) et y ajouter la ligne suivante :

smtpproxy       8025/tcp                        # SMTP proxy

Étape 2 :

Ensuite, on crée un nouveau fichier de définition de service Xinetd. Il faut créer le fichier /etc/xinetd.d/smtpproxy (sudo nano /etc/xinetd.d/smtpproxy) et y coller les lignes suivantes :

service smtpproxy
{
        disable         = no
        socket_type     = stream
        protocol        = tcp
        user            = pi
        wait            = no
        redirect        = smtp.free.fr 25
}

Cette configuration indique simplement au démon Xinetd de relayer (redirect) toute connexion reçue sur son port smtpproxy (donc TCP/8025 tel que défini dans le fichier /etc/services) vers le véritable serveur STMP de notre FAI (ex: smtp.free.fr 25). En ce sens nous avons construit un simple relai TCP. Vous prendrez soin de remplacer par le serveur SMTP de votre FAI.

Étape 3 :

Relayer cette connexion ne servirait à rien si on en profitait pas au passage pour déclencher notre envoi de SMS. Cette magie s’opère par une action définie au niveau du TCP Wrapper qui sert habituellement à restreindre et contrôler l’accès aux services Xinetd. Derrière ce charabia, rien de bien compliqué, il faut éditer le fichier /etc/hosts.allow (sudo nano /etc/hosts.allow) et y rajouter la ligne suivante :

smtpproxy : 192.168.1.11 : spawn ( /home/pi/Domotique/SMSServices/sendSMS.sh /home/pi/Domotique/SMSServices/motiondetectedsms.txt ) &

Cela mérite quelques explications pour que vous puissiez l’adapter à votre propre environnement :

  • Le 1er paramètre est smtpproxy : c’est simplement le nom que l’on a donné au service écoutant sur le port TCP/8025
  • Le 2nd paramètre est l’adresse IP de la caméra IP : chez moi c’est 192.168.1.11
  • Le 3ème paramètre est l’action qui doit être déclenchée à chaque fois qu’une connexion est reçue sur le port smtpproxy depuis la caméra IP : on appelle le script sendSMS.sh, avec son chemin complet, en lui passant comme paramètre le fichier motiondetectedsms.txt, avec son chemin complet.

A vous d’adapter les chemins d’accès et les IP en fonction de votre environnement. Le script sendSMS.sh est fourni dans mon article sur l’envoi/réception de SMS. Le fichier motiondetectedsms.txt contient le texte du SMS à envoyer (à titre d’exemple, j’ai simplement mis : « ALERT – Motion detected by Webcam »)

Étape 4 :

Maintenant que tout est configuré, il suffit de redémarrer le démon Xinetd pour qu’il prenne en compte toute cette nouvelle configuration :

pi@domopi ~ $ sudo service xinetd restart

Et voilà !

Désormais, à chaque fois que votre caméra IP détectera un mouvement, elle enverra un e-mail, mais également un SMS pour vous prévenir.

Vous aimez cet article ? Faites le savoir avec quelques bitcoins !

Publicités

3 réflexions sur “Alertes SMS sur détection de mouvement

  1. Toto kalonji 26 juin 2017 / 6 h 35 min

    merci pour ces explications. moi je veux faire tout ça sur avec le système windows est-ce possible?

    J'aime

  2. xhark 4 janvier 2016 / 21 h 12 min

    Merci pour ce tuto, je cherche de mon côté à exécuter une action à la réception d’un email, est-ce que tu as une astuce (avec postfix ou autre) ?

    J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s