Envoi de SMS

Admin
Administrateur du site
Messages : 99
Enregistré le : Jeu 2 Avr 2015 21:39

Envoi de SMS

Messagepar Admin » Mer 19 Juil 2017 09:43

Avant tout il faut configurer gammu pour qu’il puisse utiliser votre dongle GSM.
Tapez dsmeg pour savoir sur quel port est connectée votre clé 3G et gardez le bien en mémoire. Il sera normalement du type ttyUSB0, ttyUSB1…
# dmesg
Editez le fichier /etc/gammu-smsdrc et dans la partie [gammu] renseignez le port que vous avez retenu tout à l’heure.
Voici l’exemple de mon fichier :
[gammu]
# Please configure this!
port = /dev/ttyUSB0
connection = at19200
# Debugging
# logformat = textall
Comme je suis une grosse quiche sur vi (l’éditeur en ligne de commandes), j’édite mes fichiers avec WinSCP. Si vous avez une méthode plus simple, n’hésitez pas à la proposer dans les commentaires et je mettrai l’article à jour.

Vous pouvez aussi ajouter votre code PIN si vous ne l’avez pas désactivé en ajoutant :
pin = XXXX
N’oubliez pas de démarrer le daemon :
# service gammu-smsd start
Vous pouvez déjà tester l’envoi de SMS avec la commande :
gammu-smsd-inject TEXT NUMERO -text "MESSAGE"
Maintenant, comment faire pour que votre box (ou autre) puisse utiliser votre Raspberry pour envoyer des SMS à partir d’une simple URL ?

Créez le 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'`;
?>
Vous devez maintenant 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) :


Recevoir un SMS et lancer une action avec une URL

Pour déclencher une action à la réception d’un SMS, nous allons utiliser la fonction runonreceive. Celle-ci lancera, à la réception d’un SMS, le script que vous allez spécifier dans la configuration du daemon.

Dans mon exemple, le script récupère le texte du SMS pour l’inscrire, grâce à l’API eedomus, dans un état virtuel.
Exemple : j’envoie le SMS « alarme on ». L’état virtuel de ma box prend donc la valeur « alarme on ». Dans le moteur de règles je programme l’action à lancer à partir de cet état etc.

Tout d’abord, créez le fichier script receivesms.sh et uploadez-le où vous voulez. N’oubliez-pas de vérifier que tous les utilisateurs aient bien tous les droits sur ce script.
#!/bin/sh
PROGRAM=/bin/echo
for i in `seq $SMS_MESSAGES` ; do
wget ­O ­ ­q ­t 1 "http://IPEEDOMUS/api/set?action=periph. ... SMS_1_TEXT" >/dev/null 2>&1
deleteallsms /var/spool/gammu/inbox/
done
Pour une question de sécurité, le script supprime automatiquement tous les SMS reçus.

Maintenant, configurez le daemon pour qu’il lance le script receivesms.sh à la réception d’un SMS en ajoutant à la fin du fichier /etc/gammu-smsdrc :
runonreceive = /dossieroùsetrouvevotrescript/receivesms.sh
Voici l’exemple de mon fichier gammu-smsdrc complet :
# Configuration file for Gammu SMS Daemon

# Gammu library configuration, see gammurc(5)

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

# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
runonreceive = /var/www/receivesms.sh
# Increase for debugging information
debuglevel = 0

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/
Voilà, vous pouvez maintenant envoyer un SMS à votre Raspberry qui exécutera le script receivesms.sh à la réception ! Dans cet exemple on récupère la valeur du texte mais on pourrait aussi récupérer le numéro de l’expéditeur etc.

Pour une question de sécurité, je vous suggère d’ajouter, aux commandes que vous allez enregistrer, un mot de passe. C’est une solution simpliste mais elle aura déjà le mérite d’éviter que n’importe qui, qui trouve le numéro de téléphone de votre Raspberry, puisse désactiver votre alarme avec le simple mot clef « alarme off ».

Vous pouvez donc envoyer un SMS de la forme « motdepasse alarme off ».

Si vous jetez un coup d’œil à la documentation gammu-smsdrc, vous pouvez limiter la réception de SMS à certains numéros de téléphone enregistrés. Avec l’inconvénient de ne plus pouvoir piloter votre installation à partir de n’importe quel téléphone qui vous tomberait sous la main.

Ca y est ! Votre box est autonome en cas de coupure internet (en termes de communication, évidemment). Vous pourrez connaître l’état de votre maison et lancer des commandes, à l’ancienne sur votre 3310 !
Le SMS n’est pas mort. Vive le SMS !

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité