RaspiSMS ou comment faire un serveur SMS pour son installation domotique

RaspiSMS ou comment faire un serveur SMS pour son installation domotique

2 avril 2020 28 Par Jérôme Ferrari

Salutations à tous!

Aujourd’hui je vous propose de faire un serveur SMS sur une raspberry pi afin de permettre à votre installation domotique de vous prévenir lorsque des choses anormales arrivent dans votre maison.

Pour information, je me suis aidé des sites suivants pour écrire cet article:

https://raspberry-pi.fr/raspisms-raspberry-pi-sms-internet/

https://community.jeedom.com/t/sms-huawei-e3531-sim-free-retour-dexperience/20271

https://github.com/gammu/gammu/issues/490#issuecomment-598063743

https://wammu.eu/docs/manual/project/install.html

https://www.instructables.com/id/Giving-the-Raspberry-Pi-a-Serial-Modem-Using-the-H/

https://raspisms.raspberry-pi.fr/documentation/

Partie 0) Le matériel

  • Une raspiberry pi
  • Une clé Huawei E3531
  • Une carte Sim (pour ma part j’ai pris le forfait 2€ de cher free)

Partie 1) Mise en place de la Raspberry Pi

Si c’est la première fois que vous utiliser une raspberry pi, je vous propose de faire exactement comme pour la partie 1 de l’article pour la préparer.

https://miniprojets.net/index.php/2019/05/13/jeedom-ou-comment-domotiser-sa-maison-en-quelques-clics/

Partie 2) Installation de RaspiSMS

Après avoir installer la carte SIM dans la clé et l’avoir brancher sur un port USB du raspberry pi, nous pouvons démarrer la rapsberry et se connecter à elle.

La première étape, il faut que l’on permette à la raspberry de reconnaitre la clé Huawei comme un modem. Pour cela, il faut configurer l’utilitaire usb_modeswitch qui est normalement préinstallé sur les distributions raspbian.

il faut pour cela, connaitre les identifiants de la clé en faisant la commande

lsusb

Nous retrouvons dans les résultats la ligne suivante:

Bus 001 Device 007: ID 12d1:15e7 Huawei Technologies Co., Ltd.

Donc maintenant nous allons créer le fichier de configuration pour notre clé en tapant la ligne de commande

sudo nano /etc/usb_modeswitch.d/12d1:157d

il faudra copier/coller dans ce fichier les lignes suivantes (au choix, pour info la première a été testée):

TargetVendor=0x12d1
TargetProduct=0x1f01
MessageContent="55534243123456780000000000000011062000000100000000000000000000"

ou

# Huawei E3531
DisableSwitching=1
TargetVendor=0x12d1
TargetProduct=0x1001
MessageContent="55534243123456780000000000000011062000000100000000000000000000"
NoDriverLoading=1

Maintenant faites un ctrl+x pour sauver le fichier puis rebooter la raspberry avec la commande suivante:

sudo reboot

Une fois la raspberry redémarrée, vous pouvez vous reconnecter dessus et taper la commande:

ls /dev

Normalement si tout est ok, vous verrez apparaitre ttyUSB0, ttyUSB1 et ttyUSB2 dans la liste de résultat.

Maintenant que la clé est prête, nous pouvons attaquer l’installation de RaspiSMS à proprement parlé. Pour cela, il faut faire les lignes de commandes suivantes:

wget http://raspisms.raspberry-pi.fr/download/raspisms-2.0.2.deb

Cette première ligne est à adapter en fonction de la version voulue.

Actuellement RaspiSMS change de version et de fonctionnement; j’ai forker pour garder un version « Stable » et que je maitrise donc vous pouvez utiliser cette commande ci-dessous en attendant:

wget http://expe-smarthouse.duckdns.org/raspisms-2.0.2.deb

Maintenant nous pouvons procéder à l’installation de la façon suivante:

sudo apt-get update
sudo dpkg -i ./raspisms-2.0.2.deb
sudo apt-get -f install

Vous aurez plusieurs questions:

Il est possible de configurer automatiquement gammu. Pour cela, le module GSM gérant la carte SIM doit-être connecté à la Raspberry Pi. Voulez-vous le faire ? [y/n]

Tapez Y

Rentrez le code PIN de votre carte SIM. (Laissez vide si elle n'a pas de code PIN)

Mettez le code PIN de votre carte SIM à la deuxième (logique tout cela!!!)

Vous aurez aussi les lignes suivantes

Le fichier de configuration /etc/gammu-smsdrcrc a été généré correctement.
La base de données de RaspiSMS va être déployée.
Création de l'utilisateur MySQL ''raspisms''
raspisms password = SXXXXXXXXXXXXXXXXXXXXD
L'utilisateur MySQL 'raspisms' a bien été créé. Vous pouvez retrouver son mot de passe dans le fichier '/var/www/html/RaspiSMS/mvc/constants.php'.
La base de données a été correctement déployée.
La connexion a la base de données pour RaspiSMS va être configurée avec le compte root

Copier la bien en cas de problème, cela peut-être utile. Vous aurez ensuite la question suivante:

Le compte administrateur pour RaspiSMS va être créé. Choisissez une adresse e-mail et un mot de passe pour ce compte

Remplissez correctement les champs demandés en retenant bien (sinon vous serez coincé….)

Partie 3: Adaptation pour résoudre certains problèmes

Une fois l’installation faite, nous devons faire d’autres manipulations avant de pouvoir utiliser RaspiSMS correctement car en l’état, nous aurons des erreurs sur la réception des SMS. Ils seront la plupart du temps comme retour dans le debuggage de Gammu sous la forme:

Ignoring incoming SMS info as not a Status Report in SR memory.

donc nous allons devoir faire les lignes de commandes suivantes:

# stop deamon gammu
sudo systemctl stop gammu-smsd
# Suppression de la version installé par le plugin gammu
sudo apt-get remove gammu gammu-smsd python-gammu
# clone de repo officiel
git clone https://github.com/gammu/gammu.git
# installation des dependances
Sudo apt-get install cmake python-dev pkg-config libpq-dev  libcurl4-gnutls-dev libusb-1.0-0-dev libdbi0-dev libbluetooth-dev  libgudev-1.0-dev libglib2.0-dev unixodbc-dev  libmariadb-dev-compat libmariadb-dev
# Compilation
cd gammu-master
./configure
make
sudo make install
sudo ldconfig

Une fois l’installation faite, il faudra juste remettre la bonne variable dans le fichier de service de Gammu. Pour cela, on fait la commande suivante:

sudo nano /lib/systemd/system/gammu-smsd.service

et on change l’emplacement du fichier de conf en remplaçant:

EnvironmentFile=-/etc/sysconfig/gammu-smsd

par

EnvironmentFile=-/etc/gammu-smsdrc

Faites ctrl+x pour sauvegarder

il faut maintenant modifier le fichier de configuration de Gammu. Pour cela, il faut éditer le fichier /etc/gammu-smsdrc

sudo nano /etc/gammu-smsdrc

rajouter atgen_setCNMI=1,2,0,0,0 à la configuration des [gammu]. Cela doit donner un fichier qui ressemble à la configuration ci-dessous:

; Configuration file generated by gammu-detect.
; Please check The Gammu Manual for more information.

[gammu]
GammuCoding = utf8
GammuLoc = fr_FR.UTF8
device = /dev/ttyUSB0
name = Phone on USB serial port HUAWEI HUAWEI_Mobile
connection = at
atgen_setCNMI=1,2,0,0,0

[gammu1]
GammuCoding = utf8
GammuLoc = fr_FR.UTF8
device = /dev/ttyUSB1
name = Phone on USB serial port HUAWEI HUAWEI_Mobile
connection = at
atgen_setCNMI=1,2,0,0,0

[gammu2]
GammuCoding = utf8
GammuLoc = fr_FR.UTF8
device = /dev/ttyUSB2
name = Phone on USB serial port HUAWEI HUAWEI_Mobile
connection = at
atgen_setCNMI=1,2,0,0,0

# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
# Increase for debugging information
debuglevel = 0
RunOnReceive = /var/www/html/RaspiSMS/parseSMS.sh
# 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/

Sauvegardez en faisant ctrl+X.

Maintenant, on redemarre le daemon

sudo systemctl daemon-reload
sudo systemctl start gammu-smsd

Normalement tout doit fonctionner, cependant j’ai du faire une modification de droit sur le fichier parseSMS.sh (!!!cette opération est risquée!!!! car je donne full accès sur ce fichier!!!!!)

On commence par faire:

sudo -i

pour être en root puis:

chmod 666 /var/www/html/RaspiSMS/parseSMS.sh
chmod +x /var/www/html/RaspiSMS/parseSMS.sh
exit

Je sais cela n’est pas propre mais je n’ai pas trouvé l’origine du problème initial.

Là maintenant tout est OK!!!!

Partie 4) Utilisation de RaspiSMS

Pour utiliser RaspiSMS, il y a 2 moyens:

Le premier est de se connecter directement sur l’interface web de RaspiSMS avec l’adresse suivante:

http://IP:DE:VOTRE:RASPBERRY/RaspiSMS 

(exemple 192.168.1.13/RaspiSMS)

et la seconde est lui envoyer des requêtes sur l’API comme par exemple:

curl http://IPDEVOTRERASPBERRY/RaspiSMS/smsAPI/?email=EMAILDUCOMPTE\&password=PASSWORDDUCOMPTE\&contacts=Jerome\&date=2020-03-29%2020:38\&text=Texte%20du%20SMS%20à%20envoyer

Pour ma part j’utilise la première méthode pour faire du monitoring des SMS envoyé où reçu (mais il y a plein d’autres possibilités) et la deuxième méthode pour l’inclure directement dans Jeedom pour faire de la notification.

Par contre, je vous conseille de ne l’utiliser que dans votre réseau informatique directement et de ne pas l’ouvrir vers l’extérieur car l’application est encore en développement.

Voilà!!!! Vous avez tout ce qu’il faut pour faire un serveur SMS pour que Jeedom ou autres puissent vous envoyer des SMS sur des événements!

Bonne continuation et amusez vous bien!

Jérôme Ferrari