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
[pastacode lang= »markup » manual= »dmesg%20%7C%20grep%20tty%20%7C%20grep%20usb%0A%C2%A0%C2%A0%C2%A0%C2%A0%20%5B%205806.660785%5D%20usb%201-1.5%3A%20GSM%20modem%20(1-port)%20converter%20now%20attached%20to%20ttyUSB0%0A%C2%A0%C2%A0%C2%A0%C2%A0%20%5B%205806.662796%5D%20usb%201-1.5%3A%20GSM%20modem%20(1-port)%20converter%20now%20attached%20to%20ttyUSB1%0A%C2%A0%C2%A0%C2%A0%C2%A0%20%5B%205806.664577%5D%20usb%201-1.5%3A%20GSM%20modem%20(1-port)%20converter%20now%20attached%20to%20ttyUSB2%0A » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »lsusb%20%7C%20grep%20-i%20Huawei%0A%C2%A0%C2%A0%C2%A0%C2%A0%20Bus%20001%20Device%20009%3A%20ID%2012d1%3A1001%20Huawei%20Technologies%20Co.%2C%20Ltd.%20E169%2FE620%2FE800%20HSDPA%20Modem » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »sudo%20apt-get%20update%0Asudo%20apt-get%20upgrade » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »sudo%20apt-get%20install%20gammu » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »gammu-detect » message= » » highlight= » » provider= »manual »/]
Voici le contenu final de mon fichier :
[pastacode lang= »markup » manual= »%5Bgammu%5D%0Adevice%20%3D%20%2Fdev%2FttyUSB0%0Aconnection%20%3D%20at19200%0Aname%20%3D%20Phone%20on%20USB%20serial%20port%20%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%20HUAWEI_Mobile%0Asynchronizetime%20%3D%20yes%0Agammucoding%20%3D%20utf8%0A%0A%5Bgammu1%5D%0Adevice%20%3D%20%2Fdev%2FttyUSB1%0Aconnection%20%3D%20at19200%0Aname%20%3D%20Phone%20on%20USB%20serial%20port%20%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%20HUAWEI_Mobile%0Asynchronizetime%20%3D%20yes%0Agammucoding%20%3D%20utf8%0A%0A%5Bgammu2%5D%0Adevice%20%3D%20%2Fdev%2FttyUSB2%0Aconnection%20%3D%20at19200%0Aname%20%3D%20Phone%20on%20USB%20serial%20port%20%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%C3%BF%20HUAWEI_Mobile%0Asynchronizetime%20%3D%20yes%0Agammucoding%20%3D%20utf8″ message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »gammu%20–identify%0A%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0P%C3%A9riph%C3%A9rique%20%3A%20%2Fdev%2FttyUSB0%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0Fabricant%20%3A%20Huawei%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0Mod%C3%A8le%20%3A%20E169%20(E169)%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0Firmware%20%3A%2011.314.13.51.156%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0IMEI%20%3A%20352835031664512″ message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »gammu%20getsecuritystatus%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0Waiting%20for%20PIN.%0Agammu%20entersecuritycode%20PIN%201234%0Agammu%20getsecuritystatus%0A%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0Nothing%20to%20enter. » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »gammu%20sendsms%20TEXT%2006xxxxxxxx%20-text%20%22Test%20tutoandco%22″ message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »echo%20%22Test%20tutoandco%22%20%7C%20gammu%20–sendsms%20TEXT%2006XXXXXX » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »If%20you%20want%20break%2C%20press%20Ctrl%2BC…%0ASending%20SMS%201%2F1….waiting%20for%20network%20answer..OK%2C%20message%20reference%3D1″ message= » » highlight= » » provider= »manual »/]
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
[pastacode lang= »markup » manual= »sudo%20usermod%20-a%20-G%20dialout%20www-data » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »sudo%20chmod%204755%20%2Fusr%2Fbin%2Fgammu » message= » » highlight= » » provider= »manual »/]
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.
[pastacode lang= »markup » manual= »%3C%3Fphp%0A%0A%24locale%20%3D%20’fr_FR.utf-8’%3B%0Asetlocale(LC_ALL%2C%20%24locale)%3B%0Aputenv(‘LC_ALL%3D’.%24locale)%3B%0A%0Aheader(%22X-Robots-Tag%3A%20noindex%2C%20nofollow%22%2C%20true)%3B%0A%0A%24token%20%3D%20(string)%24_GET%5B’token’%5D%3B%0A%0A%24data%20%3D%20array()%3B%0Aif%20(!%24token%20%7C%7C%20%24token%20!%3D%20’azerty’)%20%7B%0A%24data%20%3D%20array(%0A’error’%20%3D%3E%20%22Not%20authorised%22%2C%0A’error_code’%20%3D%3E%20403%2C%0A’error_description’%20%3D%3E%20%22Not%20authorised%22%2C%0A’resource’%20%3D%3E%20null%0A)%3B%0Aecho%20json_encode(%24data)%3B%0Aheader(‘HTTP%2F1.0%20403%20Forbidden’)%3B%0Aexit%3B%0A%7D%0A%0A%24message%20%3D%20urldecode((string)%24_GET%5B’message’%5D)%3B%0A%24number%20%3D%20(string)%24_GET%5B’number’%5D%3B%0A%24number_array%20%3D%20explode(‘-‘%2C%20%24number)%3B%0A%0Aif%20(!%24message%20%7C%7C%20!%24number_array)%20%7B%0A%24data%20%3D%20array(%0A’error’%20%3D%3E%20%22Missing%20data%22%2C%0A’error_code’%20%3D%3E%20403%2C%0A’error_description’%20%3D%3E%20%22Missing%20data%22%2C%0A’resource’%20%3D%3E%20null%0A)%3B%0Aecho%20json_encode(%24data)%3B%0Aheader(‘HTTP%2F1.0%20403%20Forbidden’)%3B%0Aexit%3B%0A%7D%0A%0Aforeach%20(%24number_array%20as%20%24number)%20%7B%0Aexec(‘echo%20%22′.%24message.’%22%20%7C%20gammu%20–sendsms%20TEXT%20’.%24number.’%20%26′)%3B%0A%7D » message= » » highlight= » » provider= »manual »/]
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.
[pastacode lang= »markup » manual= »sudo%20apt-get%20install%20gammu-smsd » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »sudo%20service%20gammu-smsd%20restart » message= » » highlight= » » provider= »manual »/]
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
[pastacode lang= »markup » manual= »PIN%20%3D%C2%A0xxxxxx » message= » » highlight= » » provider= »manual »/]
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.
[pastacode lang= »markup » manual= »sudo%20chmod%20777%20-R%20%2Fvar%2Fspool%2Fgammu » message= » » highlight= » » provider= »manual »/]
[pastacode lang= »markup » manual= »CommTimeout%3D5″ message= » » highlight= » » provider= »manual »/]
ENVOI DE SMS
Il se fait via l’une des deux commandes suivantes :
[pastacode lang= »markup » manual= »gammu-smsd-inject%20TEXT%2006XXXXXXXX%20-text%20%22Test%20tutoandco%22%0A%0Aou%0A%0Aecho%20%22Test%20tutoandco%22%20%7C%20gammu-smsd-inject%20TEXT%2006XXXXXX%0A » message= » » highlight= » » provider= »manual »/]
Vous trouverez l’ensemble des options pour envoyer des messages sur le site de Gammu
FICHIERS DE CONFIGURATION