Logo du système RaspiSMS

Envoyer, gérer et recevoir des SMS avec la Raspberry Pi

Mis à jour le 27 octobre 2014 - 235 Commentaires - , , , , , , ,

Une nouvelle version de RaspiSMS et de cet article est disponible ici !


Il y a environ un mois et demi, nous vous disions dans cet article que deux gros tutoriels allaient prochainement sortir. Aujourd’hui voici le plus important des deux, par sa taille, ses implications, etc.

En effet, si aujourd’hui nous allons voir comment envoyer des SMS avec la Raspberry Pi, nous n’allons pas nous arrêter là. Nous allons vous présenter les fruits de plusieurs semaines de travail acharné (enfin sauf les lundis soirs, parce que les lundis soirs, chez Raspbian France, c’est soirées Kebab/Walking Dead).

Nous allons donc vous présenter RaspiSMS !

Petite présentation de RaspiSMS.

Pourquoi avoir créé RaspiSMS ?

Chez Raspbian France nous avions besoin de pouvoir envoyer des SMS avec la Raspberry Pi, et quand nous avons cherché à le faire, nous n’avons pas trouvé un système qui nous convienne vraiment. Par conséquent, nous l’avons fabriqué, et nous vous le présentons aujourd’hui !

Nous voulions un système qui nous permette de créer facilement un SMS depuis n’importe quel PC, au travers d’une interface claire, mais aussi à travers une API. Nous voulions pouvoir choisir à quelle heure envoyer les SMS, et à qui, notamment via la création de contacts et de groupes de contacts.

Par conséquent, face à l’absence d’outil répondant à ces besoins, nous avons décidé de créer une application web sur mesure. Plutôt que de créer rapidement un système répondant seulement à nos besoins, nous avons décidé de créer un système complet, qui puisse se déployer sur toutes les Raspberry Pi, et de le distribuer en libre au plus grand nombre, sous licence GNU/GPL.

RaspiSMS c’est quoi ?

RaspiSMS, c’est un site web destiné à être installé sur une Raspberry Pi. Il vous permettra depuis n’importe quel ordinateur d’accéder à une interface d’administration propre. Depuis cette dernière, vous pourrez envoyer et recevoir des SMS.

RaspiSMS dispose également d’une API, qui vous permettra d’envoyer facilement un SMS depuis n’importe quel script, par exemple pour envoyer un code de confirmation à un utilisateur, prévenir une équipe lors de l’ajout d’un nouveau push git, ou encore pour vous prévenir par SMS lors de la détection d’un mouvement chez vous.

RaspiSMS permet également de lier des commandes à un script à faire exécuter par le serveur lors de la réception d’un SMS au format « [nom commande:arguments supplémentaires][email:email compte RaspiSMS à utiliser][password:mot de passe compte] ».
Vous pouvez trouver plus d’informations sur RaspiSMS sur sa documentation.

Installation de RaspiSMS.

Que faut-il pour envoyer un SMS ?

Au delà de RaspiSMS et de ses dépendances logicielles, pour envoyer un SMS avec vôtre Raspberry Pi il est important de préciser qu’il vous faudra, au niveau matériel, une carte SIM, et un dongle 3G/GSM.
Pour la carte SIM, nous utilisons une carte de chez Free, avec le forfait par 2€/mois. Vous pouvez même l’avoir pour 0€/mois si vous êtes chez Free. Cela marchera tout aussi bien avec une carte de n’importe quel autre opérateur. Il est à noter que certaines cartes demandent à être activées sur internet avant de pouvoir être utilisées. C’est par exemple le cas des cartes Free. Pensez-y.

Vous aurez bien entendu besoin d’une Raspberry Pi et de sa carte SD. Pour le module 3G/GSM, là c’est un peu plus complexe. Il faut que vous soyez sûr qu’il permet l’envoi de SMS, et qu’il soit géré par le logiciel Gammu.
Pour développer RaspiSMS, nous avons utilisé ce dongle 3G/GSM compatible avec la Raspberry Pi. Il ne nous a jamais posé de problème, et nous sommes sûrs qu’il fonctionne. Nous vous le recommandons donc.

Dernier point, les dongles 3G/GSM consommant un petit peu, assurez-vous d’avoir une bonne alimentation pour vôtre Raspberry Pi (au besoin, allez voir ici).

Page d'accueil de RaspiSMS

Petite capture d’écran de la page d’accueil de RaspiSMS, avec la courbe d’envoi et de réception des SMS.

Installer RaspiSMS

Il existe deux façons d’installer RaspiSMS sur un système. Soit en utilisant le paquet Debian. Soit en utilisant l’archive « .tar.gz ».
Dans le cadre d’une installation sur une Raspberry Pi utilisant Raspbian, ou tout autre système utilisant une distribution dérivée de Debian, nous vous conseillons d’employer le paquet Debian. Cependant, pour une distribution de type RedHat par exemple, vous devriez plutôt employer l’archive.

Installation avec le paquet Debian

L’installation via le paquet Debian est très simple. Il suffit de deux commandes pour installer et configurer RaspiSMS.
Pour installer le paquet Debian, nous allons commencer par le télécharger. Pour cela, nous allons simplement utiliser la commande « wget ».

 wget -O raspisms.deb http://raspisms.raspbian-france.fr/download/raspisms-2.0.deb

Une fois le téléchargement terminé, on va mettre à jour la Raspberry Pi.

 sudo aptitude update
 sudo aptitude upgrade

Nous allons maintenant installer RaspiSMS. Cette première installation devrait lever une erreur (que nous corrigerons après), les dépendances n’étant pas installées.
À noter, avant d’installer RaspiSMS, vous avez intérêt à connecter votre dongle 3G/GMS, afin que Gammu et Gammu-smsd soient automatiquement réglés pour l’utiliser (sinon vous devrez vous reporter à la partie correspondante dans l’installation pour l’archive .tar.gz.).

 sudo dpkg -i raspisms.deb

Nous allons maintenant corriger les erreurs précédemment levées. Pour cela, nous allons utiliser la commande suivante :

sudo aptitude install raspisms

Voilà, RaspiSMS est installé et configuré, et vous pouvez y accéder à l’adresse URL « http://<VOTRE_URL>/RaspiSMS/ ».

Installation avec l’archive .tar.gz

L’installation via l’archive .tar.gz est plus complexe que celle par paquet Debian.
En effet, lors de l’installation par paquet Debian, une fois l’installation terminée, le système lance un script qui permet de configurer l’ensemble du système. Lors de l’installation via l’archive .tar.gz nous allons donc devoir effectuer l’ensemble de cette configuration nous même.
Dans un premier temps, nous allons mettre à jour la Raspberry Pi.

 sudo aptitude update
 sudo aptitude upgrade

La Raspberry Pi étant à jour, nous allons maintenant installer les dépendances de RaspiSMS.

 sudo aptitude install apache2 php php-mysql php-mbstring gammu gammu-smsd mysql-server

Maintenant que les dépendances de RaspiSMS sont installées, nous allons pouvoir les configurer.
Dans un premier temps, nous allons configurer Apache, pour activer le module de ré-écriture d’URL.
Pour cela, il suffit d’utiliser la commande suivante :

 sudo a2enmod rewrite
 sudo /etc/init.d/apache2 restart

Il faut également activer les fichiers « .htaccess ». Pour cela, reportez-vous à l’article dédié.
Configurons maintenant Gammu et Gammu-smsd. Pour cela, vous devez au préalable avoir connecté votre dongle 3G/GSM.
Nous allons dans un premier temps générer la configuration de Gammu et l’ajouter aux fichiers de configuration de Gammu et Gammu-smsd. Pour cela, utilisons la commande suivante :

 sudo gammu-detect > /etc/gammurc && sudo gammu-detect > /etc/gammu-smsdrc

Ceci fait, nous allons ajouter dans le fichier de configuration de Gammu-smsd une ligne lui indiquant le script à appeler lors de la réception d’un SMS.
Pour cela éditez le fichier « /etc/gammu-smsdrc » avec l’éditeur de vôtre choix (par exemple nano), et ajoutez la ligne suivante :

 RunOnReceive = /var/www/RaspiSMS/parseSMS.sh

Si votre carte SIM utilise un code PIN, ajoutez également la ligne suivante au fichier « /etc/gammu-smsdrc »

 pin = VOTRE_CODE_PIN

Maintenant que Gammu et Gammu-smsd est configuré, redémarrez les :

 sudo /etc/init.d/gammu-smsd restart

L’ensemble des dépendances de RaspiSMS maintenant installées, nous allons télécharger la dernière version de RaspiSMS sous forme d’archive.

wget -O raspisms.tar.gz http://raspisms.raspbian-france.fr/download/raspisms-2.0.tar.gz

Le téléchargement terminé, nous allons décompresser l’archive.

tar xzvf raspisms.tar.gz

Maintenant que l’archive est décompressée, nous allons déplacer l’ensemble de ces fichiers dans le dossier contenant les sites web.

cp -r ./raspisms/RaspiSMS /var/www

Nous allons maintenant créer la base de données de RaspiSMS. Pour cela, nous allons utiliser le fichier « createDatabase.sql » de RaspiSMS, qui contient l’ensemble des requêtes permettant la création des bases. Il vous suffit donc de lancer la commande suivante et de rentrer le mot de passe root de MySQL.

mysql -u root -p < /var/www/RaspiSMS/createDatabase.sql

Ceci fait, nous allons également devoir créer un premier compte administrateur pour RaspiSMS, afin que nous puissions nous connecter. Pour cela, nous allons lancer la commande suivante :

mysql -u root -p -e "use raspisms;INSERT INTO users(email, password, admin) VALUES('<email_de_lutilisateur>', SHA1('<mot_de_passe_de_lutilisateur>'), 1)"

Nous allons maintenant configurer le fichier permettant à RaspiSMS de se connecter à la base de données. Il s’agit du fichier « /var/www/RaspiSMS/mvc/conn_bdd.php ».
Pour modifier ce fichier, nous allons simplement utiliser la commande sed (remplacez « <VOTRE MOT DE PASSE> » par le mot de passe root de MySQL.

sed -i -e "s/DATABASE_PASSWORD/<VOTRE MOT DE PASSE>/g" /var/www/RaspiSMS/mvc/conn_bdd.php

Nous avons donc maintenant un système RaspiSMS avec sa base de données configurée, les dépendances installées, il ne nous reste plus qu’à mettre en place les droits adaptés sur les fichiers.
Nous allons donc donner l’ensemble du dossier « /var/www/RaspiSMS » à l’utilisateur faisant tourner le serveur web (par défaut « www-data »), en donnant à tous le droit de lire et d’exécuter le contenu du dossier.

chown -R www-data:www-data /var/www/RaspiSMS
chmod -R 755 /var/www/RaspiSMS

Nous allons également donner le dossier « /var/www/RaspiSMS/receiveds » à l’utilisateur faisant tourner « gammu-smsd », à savoir « gammu ».

chown -R gammu:gammu /var/www/RaspiSMS/receiveds

Dernier point, nous devons dire au système de vérifier régulièrement s’il faut envoyer un SMS, ou enregistrer un SMS reçu. Pour cela, nous allons utiliser le démon « cron », qui permet de lancer de façon régulière une commande.

Nous allons donc ajouter deux lignes à la crontab. Cependant, il y a un point important, c’est que le programme doit-être appelé en tant que « root », et c’est donc la crontab de « root » que nous devons modifier.
Pour cela, vous devez donc exécuter la commande suivante pour ouvrir la crontab en édition

sudo crontab -e

Puis y ajouter les deux lignes suivantes.

 * * * * * cd /var/www/RaspiSMS && /var/www/RaspiSMS/console.php -c parseReceivedSMS
 * * * * * cd /var/www/RaspiSMS && /var/www/RaspiSMS/console.php -c sendScheduleds

Voilà, l’installation est terminée, et vous pouvez désormais accéder à RaspiSMS à l’adresse URL « http://<VOTRE_URL>/RaspiSMS/ ».

Conclusion

Vous avez maintenant un superbe système vous permettant d’envoyer des SMS depuis votre Raspberry Pi, d’en recevoir, et même de commander à distance votre Raspberry Pi sans avoir besoin d’internet.
Vous pouvez l’utiliser pour votre tout nouveau projet, ou simplement pour envoyer un SMS à vos amis quand vous êtes en Dordogne (qui rappelons-le est un des rares départements français ayant déjà généralisé la couverture internet, mais toujours pas la couverture réseau).

Nous espérons que RaspiSMS vous sera utile. N’hésitez pas à nous faire des remarques, des propositions, ou à parler de RaspiSMS (et pourquoi pas de Raspbian France;)) autour de vous.
Et si vous souhaitez plus d’informations, par exemple pour utiliser RaspiSMS au sein d’un projet, n’hésitez pas à aller voir la documentation ou à nous poser des questions dans les commentaires ou par mail.

Partager
Newsletter
Auteur :
Raspbian France
Rejoignez la communauté Raspberry Pi
Un ordinateur à 35€ déjà vendu à 10 millions d'exemplaires
ACHETEZ LA NOUVELLE RASPBERRY PI 3
Tutoriels en rapport
Installer un media-center avec OSMC sur votre Raspberry Pi ! RaspiSMS 2.0, envoyer des SMS par internet avec la Raspberry Pi Bien choisir vos accessoires pour les Raspberry Pi 3 et 2 Installer un serveur Minecraft sur votre Raspberry Pi ! Faire de la vidéo-surveillance en ligne avec votre Raspberry Pi et sa caméra !
235 commentaires
Besoin d'aide ? Vous la trouverez plus vite sur notre forum.
  1. Alchy dit :

    Bonjour,

    La solution est hyper intéressante !
    Je souhaite mettre en place un site de mise en relation avec envoi par SMS des messages si les utilisateurs le souhaite.
    Est-il dans ce cas possible que l’utilisateur réponde et que le SMS soit relayé au bon destinataire. En somme, un SMS peut-il avoir un id qui serai inclus dans la réponse (méta-donnée) ?

    Utilisateur A -> Raspberry -> Utilisateur B puis le chemin inverse pour la réponse

    En espérant avoir été clair :/

    Merci beaucoup et bonne aprem !

    1. Salut,
      ça me semble un peu compliquer.
      À la limite, il est possible de transférer tous les message d’un numéro vers un autre, mais c’est tout.
      Si tes utilisateurs peuvent discuter avec plusieurs numéros à la fois ça deviens plus compliquer :/

      Après, la seule solution c’est d’utiliser un format genre « @pseudo » dans le SMS qui déclenche transfert vers le numéro correspondant au pseudo.

      1. Alchy dit :

        Hello !

        Merci pour la réponse.
        Bah c’est un peu fichu pour le coup, tant pis !

  2. moctar dit :

    Bonjour, je suis sur un projet. Je veux envoyer un sms à un utilisateur quand les panneaux solaires ne fonctionnent pas normalement je demande si cela est possible avec le raspberry pi 3 et avec raspiSMS.
    Merci

    1. Salut,
      oui pas de problèmes !

  3. Cardinale César dit :

    Bonjour, j’ai un soucis lorsque je souhaite éxecuter la commande  » sudo gammu-detect > /etc/gammurc && sudo gammu-detect > /etc/gammu-smsdrc » en retour j’ai « -bash: /etc/gammurc: Permission non accordée ».
    Que dois-je faire?

    1. Cardinale César dit :

      Et quand je fais « gammu –identify » j’ai pour réponse « Warning: No configuration file found!
      Avertissement: No configuration read, using builtin defaults!
      Erreur à l’ouverture du périphérique: il n’existe pas. » De l’aide s’il vous plait! 🙁

      1. Salut,
        essaye d’ajouter « sudo » devant ta commande !

  4. nahim dit :

    Bonjour, voici ma problématique, j’ai installé votre solution + Huawei dongle, mais il m’est impossible d’utiliser la solution, car le dongle n’est pas monté…

    1. Salut,
      pourrais-tu nous donner la référence du dongle ?
      Quand il est branché, que te retourne la commande sudo lsusb et la commande sudo gammu-detect ?

      1. Gautier Lawson-Avla dit :

        Bonsoir RaspiFrance,

        Merci pour cet outil. Cependant je souhaiterais avoir une orientation par rapport au dongle. EN fait je souhaite utiliser un dongle connecté 24h/ 24 capable de recevoir des messages en continu afin de lancer un traitement spécifique.

        Dans mon actuel si jutilise un dongle que nous donne notre fournisseur FAI (TogoTélécom) l arrive que le dongle se plante une fois connecté à une machine. Ceci pouvant entraîner la non réception de messages et par conséquent le non traitement.

        Ma question est de savoir si avec votre solution et votre dongle on peut éviter ce hic. aussi le SMS avec le modem est-il assez robuste pour ma solution.

        Merci

        1. Salut,
          normalement le dongle ne devrait pas planter, et du coté de notre solution, tant que le dongle fonctionne, elle ne se déréglera pas.
          Après, je ne peux rien garantir, un système n’est jamais fiable à 100% !

  5. EDOT dit :

    Bonjour.
    Je souhaite mettre en place un système d’envoi automatique de sms avec contenu unique mais destinataires variable issus d’un site internet.
    L’idée serait donc que le site envoi un mail à une boîte unique et que l’api récupère le numéro de téléphone contenu dans le mail pour envoyer le sms.
    Cela vous semble t’il réalisable avec une ubuntu et raspisms?

    1. Salut,
      je pense que le plus simple serait clairement d’effectuer un appel à l’API de RaspiSMS directement depuis le site (avec php-curl par exemple).

  6. Roger dit :

    Bonjour, super projet Raspbian ! Bravo

    Est-il possible aujourd’hui de personnaliser l’émetteur du message ??

    merci d’avance

    1. Bonjour,

      C’est une fonctionnalité sur laquelle nous avons effectué pas mal de recherche car cela nous aurait été utile mais il est impossible de pouvoir changer le numéro en nom de société. Pour les SMS qu’on reçoit avec un nom d’entreprise, cela se passe au niveau des opérateurs et il faut un forfait spécial.

  7. Antoine Foch dit :

    bonjour, le dongle que vous conseillez est indisponible à la vente. est-ce que vous auriez une liste de dongles sous gammu dans laquelle je pourrais faire mon choix ? je dispose d’une raspberry pi 2 et d’une sim Orange mobicarte.

    Merci d’avance !

    1. Bonjour,

      Le lien du dongle a été corrigé

      1. c vandewalle dit :

        Bonjour
        le d’ongle que vous proposez ne supporte plus d’antenne externe.
        auriez vous un autre d’ongle a proposer avec une prise d’antenne comme le E169
        merci pour votre aide

  8. Timothée dit :

    Bonjour, je me posais une petite question : serait-il possible par exemple d’envoyer :
    – des rappels 30 minutes avant un événement dans un calendrier Google
    – un SMS pour chaque membre de la famille chaque matin avec heure + température + bonne journée

    Qu’en pensez-vous ?
    Merci de votre réponse.

    1. Salut,
      oui cela serait possible, regarde sur la documentation de RaspiSMS du coté de la partie API.

  9. Alexandre dit :

    Bonjour,

    Tout d’abord, merci pour cette initiative à haut potentiel. Je débute tout juste avec le Raspberry Pi 2.

    Comment savoir si un dongle GSM est compatible avec Wammu ?
    Celui-ci par exemple :
    https://www.amazon.fr/dp/B011BRKPLE/ref=wl_it_dp_o_pC_nS_ttl?_encoding=UTF8&colid=1DYUEN0YHUJLM&coliid=I2M79XLDKW7HR6

    Merci

    1. Bonjour,

      Celui posté dans l’article est compatible

  10. Fred dit :

    Bonjour à tous,

    J’ai un Raspberry Pi3 monté avec un serveur « Domoticz » et j’en suis ravi.
    Actuellement je reçois les notifications Sms de Domoticz via l’Api de Free-mobile mais je voulais en être quitte (de Free-mobile) et de ce fait j’ai cherché un serveur sms sur Raspberry.
    Là j’ai découvert ce magnifique programme Raspisms. Je félicite au passage les développeurs d’avoir réalisé une telle application, mais il y a un « mais ».
    En effet cela fait des heures, des jours et plus d’un mois que j’essaie de la faire fonctionné mais impossible.
    J’ai toujours le problème de perte de connexion avec le dongle Huawei 169E.
    A chaque reboot pas de problème pour l’envoi et la réception et puis au bout d’un moment silence radio plus aucune connexion possible.
    J’ai tellement essayé de chose ( usb-modeswitch,……) que je ne sais plus quoi faire.
    J’ai même acheté un hub USB avec une alimentation externe pour y mettre le dongle et c’est pire.
    Le dongle est reconnu sur 3 usb avec une partie modem et une autre en stockage de masse.
    Son ID est 12d1:1001.
    Bref le problème est d’avoir une connexion persistante entre le dongle et Raspisms.
    Donc si vous avez une idée elle serait la bienvenue.

    Bonne continuation et bravo pour le travail réalisé.

    Fred

    1. Salut,
      nous avons encore et toujours ce problème qui reviens, et cela semble très variables.
      Chez certain l’utilisation d’une autre dongle règle le problème, chez d’autres le passage à un HUB alimenté mais conserver le même dongle marche bien, d’autres le résolve en modifiant des configs. Bref, c’est un peu le mystère…

  11. Paul dit :

    Bonjour,

    Quel forfait utilisez-vous pour la carte sim ?
    D’après mes recherche ils sont tous limité autour des 200 voir 250 destinataires différent par mois.
    C’est vraiment pas beaucoup.
    J’ai chercher du côté des forfait pro c’est pas mieux.
    Je ne sais pas comment font les services de gateway sms pour envoyer autant de sms.

    1. Pour la plupart ils sont soit opérateurs, soit en contrat avec des opérateurs.

  12. Neile dit :

    Salut à tous,

    Nouveau dans le monde du raspberry pi je m’intéresse pas mal à ce sujet qu’est l’envoie de SMS grâce à cette petite merveille.

    Problème, après l’installation concluante de RaspiSMS, impossible d’envoyer un sms avec le dongle préconisé dans l’article.

    Un petit gammu-detect me renvoie la detection du dongle suivant :
    Qualcomm__Incorporated Qualcomm_CDMA_Technologies_MSM

    Hors impossible de savoir si gammu est compatible avec celui-ci. Pire quand j’envoie une sms directement depuis gammu avec la commande : echo « Tapez ici votre SMS » | gammu –sendsms TEXT 06XXXXXXXX
    le shell me renvoie un sympathique : « Fonctionnalités non supportées par votre téléphone. »

    Pourquoi monde cruel ?! J’ai pourtant bien le même adaptateur que celui présenté dans l’article…

    Avez vous une idée, une piste pour m’aiguiller ?

    Merci d’avance pour toute réponse.

    N.

  13. Tich dit :

    Bonjour, je trouve tout simplement superbe votre système. Je viens de le découvrir et j’aimerais savoir si vous avez utilisé un framework php pour le développer.

    Merci d’être open!!!

    1. Salut,
      oui nous avons utilisé un framework créé par l’un des memnbres de RF, Descarte.
      Tu peux le retrouve ici, https://github.com/RaspbianFrance/descartes. 🙂

  14. Pixrr dit :

    Salut,

    Franchement RaspiSMS est super cool à utiliser ! 🙂

    Du moins j’ai un petit problème, c’est que je ne reçois pas les messages en ayant refait les manips sur crontab et le chown pour gammu alors qu’en testant sur un logiciel windows, il recevait bien les messages.. :/

    Sur le coup, je ne sais pas dans quel endroit où me pencher pour corriger ça, et ça serait super si vous pouvez m’aider là dessus ^^

    Merci !

    1. Salut, et merci pour ton retour.
      Je te conseils de te rendre sur le forum, dans la partie RaspiSMS tu pourras probablement trouver de l’aide ou poser des questions à des personnes habituées à résoudre ce types de problèmes.
      En ce moment nous travaillons à essayer de trouver un module GSM qui bug moins et à le faire fonctionner avec RaspiSMS de façon uniforme, ceci afin de pouvoir créer un fichier de config standard !

Partager
Inscription à la Newsletter
Inscrivez-vous à la Newsletter.
Vous avez aimé cet article ?
Inscrivez-vous et restez informé !