Envoyer des SMS depuis votre Raspberry Pi

Presque toutes les box et solutions logicielles de domotique proposent l'envoi de mails en cas d'alerte spécifique, de détection de mouvement ou d'intrusion, ... selon des scénarios que vous aurez définis. Mais cette fonction nécessite une connexion internet active. Que faire en cas de coupure de courant ou coupure de votre connexion Internet ?

La solution alternative est l'envoi d'une alerte par SMS !

Pour mettre en place votre solution d'alerte par SMS, vous aurez besoin de plusieurs équipements :

  • un Raspberry Pi (normalement vous l'avez déjà)
  • un serveur php (déjà présent si vous utilisez Domoticz ou Jeedom)
  • un dongle GSM (désimlocké) (le Huawei E220 fonctionne bien pour moi)
  • une carte SIM (avec le code PIN désactivé, ça simplifie l'utilisation)

Pour la mise en place, commencez par connecter le dongle GSM à votre Raspberry Pi et allumez ce dernier. Connectez-vous dessus avec un terminal et mettez à jour la liste des paquets.

sudo apt-get update

sudo apt-get -y install gammu gammu-smsd

Si vous n'avez pas de serveur web, voici la commande pour en installer un prenant peu de place et de ressources :

sudo apt-get -y install lighttpd

sudo apt-get -y install php5-common php5-cgi php5

sudo lighty-enable-mod fastcgi-php

sudo service lighttpd force-reload

Maintenant, passons à la configuration de Gammu, qui vous permettra d'envoyer et de recevoir des SMS sur votre Raspberry Pi à l'aide du dongle GSM. La première information dont on va avoir besoin, c'est le port USB sur lequel est connecté le dongle GSM.

La commande dmesg devrait vous retourner le port sur lequel est branché le dongle, du type ttyUSB0, ttyUSB1...

Il faut ensuite indiquer à Gammu quel port USB utiliser en éditant le fichier /etc/gammu-smsdrc :

[gammu]
#Please configure this!
port = /dev/ttyUSB0
connection = at19200
# Debugging
#logformat = textall

Si vous n'avez pas désactivé le code PIN, vous devrez rajouter la ligne suivante :

pin = XXXX

Il faut bien entendu démarrer le service pour la prise en compte des paramètres modifiés :

sudo service gammu-smsd start

Vous pouvez maintenant tester l'envoi de SMS avec la commande :

gammu-smsd-inject TEXT NUMERO -text "MESSAGE"

Il est ensuite tout à fait possible d'envoyer des SMS à partir d'un script ou d'une URL. Pour cela, créez un fichier sendsms.php et placez-le sur votre serveur web.

<?php

$numero = $_GET['numero'];

$texte = $_GET['texte'];

echo sudo gammu-smsd-inject TEXT '$numero' -text '$texte';
?>

Maintenant, vous devez autoriser votre serveur web à exécuter le script gammu-smsd-inject en éditant le fichier sudoers. Pour cela, tapez visudo et ajoutez à la fin :

www-data ALL=(ALL) NOPASSWD: /usr/bin/gammu-smsd-inject

Ça y est, vous pouvez envoyer des SMS à partir de l’URL (en vérifiant bien le chemin vers votre fichier sendsms.php) :

http://IP-RASPBERRY/sendsms.php?numero=06xxxxxxxx&texte=votremessage

Merci à milillicuti pour son tutorial.