[TUTORIEL] Envoi de SMS via Gladys

Bonjour ! :slight_smile:

Je vous fais ce petit tuto pour vous montrer une des possibilités pour envoyer des SMS depuis Gladys.

Pourquoi envoyer des SMS depuis Gladys ?

Gladys c’est super et quand on est pas devant l’écran on aime avoir des notifications pour surveiller certaines choses, mais il y a un hic !
Gladys est dépendant d’internet pour les notifications à distance !

Un petit problème que l’on peut régler grâce aux SMS :smiley:

========
Prérequis

  • PC / VM avec une distribution Linux (Debian buster (10) sera le plus simple pour l’installation)
  • Raspisms: Un logiciel libre et gratuit autrefois créer pour les Raspberry mais maintenant compatible avec la plupart des distributions linux.
  • Une clé USB GSM compatible avec Gammu (Liste des compatibilités Base de connaissances Gammu)
    J’utilise personnellement la « Huawei E8372 »
  • Une carte SIM évidemment: Celle que vous voulez tant qu’elle peut envoyer des SMS et rentrer dans la clé GSM choisis.

Raspisms possède une version payante hébergé dans le cloud qui vous dispense d’une clé GSM et de l’installation en local, mais vous rend dépendant d’une connexion internet.

PC / VM

Vous pouvez avoir soit un PC / Mini PC dédié à votre serveur SMS, soit utiliser ce qui vous sert à faire tourner Gladys.
*/!* Pour les VM, il faudra être capable de connecter un périphérique USB sur la VM (je ne montre pas cette partie dans le tuto)

Raspisms

C’est le logiciel qui va nous servir d’interface web pour utiliser notre téléphone virtuel, gérer des contacts, créer des sms planifié etc…
Nous utiliserons surtout l’API intégré pour permettre à Gladys de donner les instructions à la clé GSM.

Gammu

C’est le logiciel qui permet de configurer la clé GSM et l’utiliser dans Raspisms.
La configuration peut varier d’une clé GSM à l’autre, dans le tuto sera utilisé la « Huawei E8372 ».

========
Installation

Maintenant nous allons procéder à l’installation de tout le nécessaire !

On commence par Raspisms, vous trouverez toutes les informations d’installation sur le site officiel RaspiSMS | Téléchargement

La documentation comprend l’installation de Gammu aussi

/!\ Par défaut Raspisms se configure sur le port 80, si il est déjà utilisé sur votre machine vous aurez une erreur à la fin de l’installation mais pas de panique !

Il vous faudra changer le port d’écoute de Apache:
nano /etc/apache2/ports.conf

Vous remplacez le port 80 par un de libre, j’ai mis 8080 par exemple et vous sauvegardez.
Vous pouvez relancer Apache et on sera bon.
systemctl start apache2.service

========
Configuration clé GSM

L’installation étant terminée, nous allons configurer notre clé GSM pour communiquer avec elle.

Pour commencer on branche la clé GSM sur un de nos ports USB :smiley:

Dans votre terminal vous faites la commande: lsusb
Vous verrez vos périphériques USB:

root@Gladys:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 31b2:0010
Bus 001 Device 004: ID 8087:0a2a Intel Corp.
Bus 001 Device 003: ID 12d1:155e Huawei Technologies Co., Ltd.
Bus 001 Device 002: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Ma clé est là
Bus 001 Device 003: ID 12d1:155e Huawei Technologies Co., Ltd.

Si vous avez la même que moi vous n’aurez pas le même nom au début car par défaut la clé est en configuration « Web Use » (Façon de dire qu’il faut l’activer via une interface web pour l’utiliser) ce qui nous pose problème sans interface graphique.

On doit donc passer cette clé en mode « Switch » avec la commande:
usb_modeswitch -v 12d1 -p 155e --huawei-alt-mode
« -v » correspond à la première partie de l’ID de votre clé et « -p » à la deuxième partie (l’ID apparaiit sur le résultat de la commande lsusb)

Une fois que c’est fait vous devriez voir que le nom de la clé qui apparait dans la commande « lsusb » est légèrement différent, pour ceux qui ont la même que moi: « Huawei Technologies Co., Ltd. »

Si vous faites la commande:

ls /dev/ttyUSB*

Vous devriez avoir une liste de ports USB, le problème c’est qu’on ne sait pas lequel utiliser et ils risquent de changer en redémarrant le PC ou en changeant de port la clé.

Nous allons maintenant fixer le nom du port de notre clé GSM !

On va dans le dossier: /etc/udev/rules.d/

cd /etc/udev/rules.d/

Puis on crée un fichier qui va exécuter la commande pour fixer le nom que l’on veut:

nano 70-huawei_e8372.rules

Vous mettez le nom que vous voulez en finissant par .rules

Dans ce fichier nous mettons:

SUBSYSTEM==« tty », ATTRS{idVendor}==« 12d1 », ATTRS{idProduct}==« 155e », ENV{ID_USB_INTERFACE_NUM}==« 00 », SYMLINK+=« sms », RUN+=« /usr/bin/killall -SIGHUP gammu-smsd »

  • ATTRS{idVendor}== (Première partie de l’ID de votre clé)
  • ATTRS{idProduct}== (Deuxième partie de l’ID de votre clé)
  • SYMLINK+= (Nom du port que vous souhaitez avoir, « sms » dans mon cas)

Une fois que c’est fait, il faut redémarrer votre PC

Maintenant que le PC a reboot vous devriez avoir votre clé GSM apparaitre sous le nom « sms » dans la liste de vos périphériques via la commande:

ls /dev/

On a terminé la configuration de la clé GSM, oui c’était un peu long ^^’

========
Configuration Gammu

On va maintenant configurer Gammu pour communiquer avec notre clé GSM

Vous pouvez soit créer le fichier de conf à la main, soit utiliser la commande:

gammu-config

Vous choisissez l’emplacement où sera enregistré le fichier puis on arrive sur cette interface
gammu

Port: Le port que l’on a créé pour notre clé GSM
Connection: Vous pouvez trouver l’information dans la doc Gammu Base de connaissances Gammu ou y aller en tâtonnant ^^
Log file: Si vous souhaitez enregistrer les logs quelque part
Log format: Les types de logs que vous souhaitez enregistrer dans le fichier de log

Une fois fini vous faites « Ok » pour valider !

Tester la clé GSM

Pour tester si notre fichier de configuration est bon nous allons faire la commande:
gammu --identify

Si vous avez les informations de votre clé qui remonte correctement c’est parfait:

root@Gladys:~# gammu --identify
Périphérique       : /dev/sms
Fabricant            : Huawei
Modèle              : unknown (E8372h-320)
Firmware             : 11.0.2.1(H697SP2C983)
IMEI                 : 8621470XXXXXXXX
SIM IMSI             : 2081501XXXXXXXX

Par contre si les informations ne remontent pas c’est que le type de connexion dans le fichier de conf n’est pas le bon pour votre clé.

Refaite la commande « gammu-config » et essayez un autre type de « Connection ».

Maintenant que notre clé est reconnue nous allons essayer d’envoyer notre premier SMS !

echo "Message de Test" | gammu --sendsms TEXT +33770XXXXXX
(Mettez bien votre numéro après TEXT)

Si vous recevez le SMS après avoir exécuté la commande nous avons fini la configuration de Gammu.
Si ça ne fonctionne pas, il faudra regarder les logs dans le fichier indiqué dans la config créé précédemment.

========
Configuration Raspisms

C’est partie pour relier Raspisms et notre clé GSM :smiley:
On se retrouve sur la page Web de Raspisms via l’URL

http://192.168.1.102:8080/raspisms/

Vous remplacez bien sûr l’IP par la vôtre.

Pour vous connecter vous aurez besoin des logins :wink:
Vous faites la commande:

cat /usr/share/raspisms/.credentials

Et vous aurez vos logins :stuck_out_tongue:

Une fois connecter, vous allez dans « Téléphones »

Cliquez sur « Ajouter un téléphone »

Nom du téléphone: Ce que vous voulez
Type de téléphone: Gammu
Fichier de configuration: Le fichier gammu créé à l’étape « Configuration Gammu »
Code PIN: Le code PIN de votre carte SIM si elle en a un. Si l’envoi de SMS ne fonctionne pas par la suite, essayer la configuration sans code PIN

Puis « Enregistrer le téléphone »

Maintenant que le téléphone est déclaré dans Raspisms on va essayer d’envoyer un SMS depuis Raspisms

Puis « Créer un nouveau SMS »
Il vous suffit ensuite de mettre votre texte dans « Texte du SMS » et indiquer votre numéro de téléphone dans « Numéros cibles ».
Pour finir → Enregistrer le SMS

Si vous le recevez c’est parfait :slight_smile:

========
Configuration Gladys

Nous arrivons à la dernière étape et celle qui nous intéresse le plus !
Nous allons à travers une scène Gladys, envoyer des SMS

Il faut créer une action « Requête HTTP »

Méthode: POST
URL: http://127.0.0.1:8080/raspisms/api/scheduled/ (Remplacez l’IP et le port par vos informations)
Headers: NOM: X-Api-Key et VALEUR: Votre clé API

Récupérer la clé API: Sur Raspisms, en haut à droite, cliquez sur votre compte puis « Profil ».
Dans « Mes données » cliquez sur « Cliquez pour afficher la clef API »

Body: Il est composé de 2 variables (text et numbers qui sont séparé par un &)
text=Ceci est un message de test
numbers=+330770XXXXXX

Ce qui nous donne:

text=Ceci est un message de test&numbers=%2B33770058702

Vous remarquerez que le « + » du numéro est devenu un « %2B », il est conseillé d’encoder les caractères spéciaux au format URL.
Vous pouvez utiliser ce site pour ça: https://www.urlencoder.org/

Voilà nous avons enfin terminé le tuto !!! :smiley:
Bravo à vous :wink:

Bonus: Documentation de l’API Raspisms pour plus de fonctionnalités Utiliser l’API HTTP

5 « J'aime »

Top, merci pour le tuto qui me semble bien complet !
Je me tâte à prendre une SIM dédiée pour pouvoir recevoir des messages de Gladys même en cas de coupure de courant (onduleur) ou d’internet.
Sinon mon plan B c’est d’approfondir ce que propose Twillio avec son API pour envoyer des SMS :

L’avantage d’avoir une carte SIM dédiée c’est que tu es indépendant d’internet, dans le cas d’utilisation d’API externe si tu perds internet tu perds aussi les notifications SMS.

Mon but à moi était d’être indépendant électriquement (onduleur) et indépendant d’internet grace aux SMS :slight_smile:

Après il faut comparer aussi le prix que coutera les API externes ou la clé GSM + carte SIM.
Je pense que sur le long terme, l’API externe reviendra plus chère si tu as pas mal de notification.

1 « J'aime »