Installer Gammu et Gammu-smsd pour envoyer des SMS depuis un Raspberry

Dans cet article, je vais vous expliquer comment installer Gammu sur un Rasperry Pi par exemple. Gammu permet d’envoyer des SMS depuis un Raspberry, un PC sur lequel est tourne une plateforme Linux ou même Windows. Gammu vous permettra de transformer votre Rasperry en passerrelle SMS ou gateway SMS. Il faut bien entendu acheter une clé 3G compatible. J’ai acheté la clé suivante :  Huawei E169 disponible sur Amazon ou sur Aliexpress

Il est possible aussi d’installer le deamon de gammu, afin de recevoir des SMS, et de lancer un script à chaque reception d’un message.
Le tuto qui suit permet donc de déployer l’outil sur une distribution Raspbian

INSTALLER GAMMU

Vérifier si la clé est bien détectée par le système et compatible

Voici le contenu final de mon fichier :

echo "Test tutoandco" | gammu --sendsms TEXT 06XXXXXX

J’utilise un script PHP pour envoyer des SMS depuis le web. Il se peut que vous rencontrez des soucis de droit lors de l’appel via un exec. Il faut que l’utilisateur apache puisse avoir accès à  /dev/ttyUSB0 Il faut rajouter l’utilisateur www-data au groupe dialout

Voici mon script php, j’ai fait un truc très simple, il suffira de l’appeler de cette façon :
http://monsite/script.php?message=mon%20message%20de%20test&number=0000000000&token=azerty

J’ai rajouté un token de sécurité pour ne pas recevoir des messages indésirables.

<?php

$locale = 'fr_FR.utf-8';
setlocale(LC_ALL, $locale);
putenv('LC_ALL='.$locale);

header("X-Robots-Tag: noindex, nofollow", true);

$token = (string)$_GET['token'];

$data = array();
if (!$token || $token != 'azerty') {
$data = array(
'error' => "Not authorised",
'error_code' => 403,
'error_description' => "Not authorised",
'resource' => null
);
echo json_encode($data);
header('HTTP/1.0 403 Forbidden');
exit;
}

$message = urldecode((string)$_GET['message']);
$number = (string)$_GET['number'];
$number_array = explode('-', $number);

if (!$message || !$number_array) {
$data = array(
'error' => "Missing data",
'error_code' => 403,
'error_description' => "Missing data",
'resource' => null
);
echo json_encode($data);
header('HTTP/1.0 403 Forbidden');
exit;
}

foreach ($number_array as $number) {
exec('echo "'.$message.'" | gammu --sendsms TEXT '.$number.' &');
}

INSTALLER LE DAEMON GAMMU

Suite à une investigation et aux commentaires, je me suis aperçu que la mise en place du daemon permettait de résoudre deux problème :

  • Il n’est plus nécessaire de renseigner le code PIN à chaque reboot du serveur
  • Il est possible d’envoyer des SMS à la chaîne sans perte.

Il est également intéressant à installer si vous souhaiter par exemple  jouer un script à la réception de nouveaux messages.

OPTIONS DU DAEMON GAMMU

Quelques spécificités concernant ce fichier. Il y a un nouveau « bloc » [smsd], qui contient la configuration du daemon de Gammu. Vous avez la possibilité de renseigner votre code PIN

Le dossier /var/spool/gammu appartient à root, tandis que l’ensemble des sous dossiers a pour propriétaire gammu, pour envoyer vos messages via votre site web il faut changer les droits du dossier.

ENVOI DE SMS

Il se fait via l’une des deux commandes suivantes :

Vous trouverez l’ensemble des options pour envoyer des messages sur le site de Gammu

FICHIERS DE CONFIGURATION

gammu-smsdrc et gammurc

 

Sources

Laisser un commentaire