RaspiSMS ou comment faire un serveur SMS pour son installation domotique
2 avril 2020Salutations à 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.
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
Bonjour
Merci pour se tutoriel qui est vraiment très explicite.
Malheureusement je n’arrive pas a recevoir les sms sur raspisms .
Pourriez vous m’aider car lorsque je fais
sudo apt-get remove gammu gammu-smsd python-gammu
Raspis sms se supprime .
Merci
Bonjour, la ligne sudo apt-get remove gammu gammu-smsd python-gammu est optionnelle. Je vais modifier mon article sous peu.
[…] un petit update de mon ancien post (http://miniprojets.net/index.php/2020/04/02/raspisms-ou-comment-faire-un-serveur-sms-pour-son-instal…😉 avec une clé Huawei […]
Bonjour
je n ai pas apparaitre ttyUSB0, ttyUSB1 et ttyUSB2
l installation semble correcte car quand je vais sur l interface
http://IP/RaspiSMS
j ai bien mon historique d ‘envoi ,mais les sms n ‘arrivent pas je pense que j ‘ai un souci avec le dongle
j ‘ai celui la https://www.amazon.fr/dp/B011YZZ6Q2?tag=raspbianfranc-21&keywords=huawei%20e3531
pouvez vous m ‘aider merci
Bonjour, quand vous faite la commande lsusb qu’est-ce qui apparait?
Bonne journée,
Jérôme Ferrair
Bonjour
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 12d1:14dc Huawei Technologies Co., Ltd. E33372 LTE/UMTS/GSM HiLink Modem/Networkcard
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
cordialement
Bonjour,
pouvez vous essayer de copier/coller le code suivant dans le fichier qui est ouvert lorsque vous faite la commande sudo nano /etc/usb_modeswitch.d/12d1:157d
# Huawei E353 (3.se) and others
TargetVendor=0x12d1
TargetProductList= »14db,14dc »
MessageContent= »55534243123456780000000000000011062000000100000000000000000000″
HuaweiNewMode=1
NoDriverLoading=1
Pour info, Cela vient du site https://blog.seboss666.info/2018/01/modem-4g-huawei-e3372-sous-linux-pas-super-accessible/
Après pour que l’on soit plus efficace, vous pouvez me contacter via Facebook
Bonne journée,
Jérôme
bonjour merci de votre réponse cela ne semble pas fonctionner
je n’ai pas facebook…
cordialement
Ok, il faudrait voir s’il faut pas la reprogrammer comme je l’avais fait dans l’article http://miniprojets.net/index.php/2020/07/06/raspisms-avec-une-cle-huawei-e3372/
OK merci
il faut que j utilise une pince crocodile avec un fil et je n ‘en ai pas je reviens vers vous si besoin en tout cas merci pour tout
cordialement très bonne soirée
… autre question bete au cas ou, il n ‘ya pas d’autre dongle Gsm compatible plus simple?
Cordialement
Désolé pour l’instant à part les 2 modèles que j’ai testé, je n’ai pas d’autre retour.
Jérôme
Bonjour la réponse est la
Pour la E3531 :
créer le fichier /etc/usb_modeswitch.d/12d1:1f01 avec comme contenu :
# Huawei E3531i-2 ou E3531s-2 switch mode vers 12d1:1001 (mode GSM modem, 3 ports)
TargetVendor=0x12d1
Targetproduct=0x1f01
MessageContent= »55534243123456780000000000000011062000000100000000000000000000″
Puis débrancher et rebrancher la clé.
source https://community.jeedom.com/t/presentation-akenad/2440/21
Cordialement bonnes fêtes de fin d’année
Bonjour, super!
Merci du retour.
Bonnes fêtes de fin d’année
Jérôme Ferrari
[…] Jérôme Ferrari on RaspiSMS ou comment faire un serveur SMS pour son installation domotique […]
Merci pour ce tuto !
Ca marche gammu-smsd par contre j’ai une erreur 500 sur RaspiSMS.
Cool. Pour l’erreur 500, il faudrait regarder le fichier de log. Essaye la commande sudo /var/log/syslog
Bonjour, j’ai une petite problématique avec la clé Huawei E3372 – USB Network Adapter (150 Mbps, 4G LTE), White
impossible de la voir avec ls /dev
Avez-vous rencontré cette problématique ?
Bonjour,
Est-ce que vous avez essayé cet article?
https://miniprojets.net/index.php/2020/07/06/raspisms-avec-une-cle-huawei-e3372/
Bonne journée
Jérôme
Bonjour merci pour la réponse rapide,
Oui,
2 erreurs :
la première lors du sudo ./send_sms.sh +3362222222 « Hello world! »
125003
Et ensuite impossible de brancher la masse avec la pin, je n’ai pas de pince croco mais un fil electronique, ce qui devrait faire la même chose.
Merci pour votre réponse
Ps le mode répondre ne doit pas bien fonctionné..
Il faudrait voir de ce côté là :
https://stackoverflow.com/questions/52528240/huawei-hilink-e3372-web-api-delete-sms-returned-error-125003
La pince crocodile sert a garder tout au long de la programmation donc avec un faux contact, cela peut échouer.
Jérôme
comment on procède à l’étape où il faut configurer l’usb_modeswitch si on as une clé 4G D-Link modèle DWM-222 ?
j’ai essayer ta méthode mais ttyUSBn n’apparait pas dans le dossier dev t’as une solution ?
Que donne la commande lsusb?
voici ce qui est indiqué en tapant lsusb (j’ai juste inséré ma clé) :
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 3938:1032
Bus 001 Device 004: ID 2001:ac01 D-Link Corp.
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Il faudrait regarder ce topic qui explique comment remplir le fichier.
https://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?t=2594
J’ai l’impression que la clé n’est pas reconnu comme un clé 4G
Rebonjour sa fait longtemps un peu 🙂
enfaite je comprend pas trop mais j’arrive à lancer des commande AT avec ma clé
en tapant lsusb on remarque que l’id de la clé a changé
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 2001:7e3d D-Link Corp.
Bus 001 Device 003: ID 17ef:608c Lenovo
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
et je soupçonne cette commande de permettre de changer de mode en renseignant direct l’id par défaut de ma D-Link
sudo usb_modeswitch -K -W -v 2001 -p ac01 (si dessous c’est ce qui c’était affiché mais pas pour moi mais sa y ressemblait beaucoup)
Take all parameters from the command line
* usb_modeswitch: handle USB devices with multiple modes
* Version 2.4.0 (C) Josua Dietze 2016
* Based on libusb1/libusbx
! PLEASE REPORT NEW CONFIGURATIONS !
DefaultVendor= 0x2001
DefaultProduct= 0xab00
StandardEject=1
Look for default devices …
found USB ID 2001:ab00
vendor ID matched
product ID matched
found USB ID 1d6b:0002
found USB ID 0e0f:0002
found USB ID 0e0f:0003
found USB ID 1d6b:0001
Found devices in default mode (1)
Access device 002 on bus 001
Get the current device configuration …
Current configuration number is 1
Use interface number 0
Use endpoints 0x01 (out) and 0x81 (in)
USB description data (for identification)
————————-
Manufacturer: Mobile Connect
Product: Mobile Connect
Serial No.: 0a37124719a7
————————-
Sending standard EJECT sequence
Looking for active driver …
OK, driver detached
Set up interface 0
Use endpoint 0x01 for message sending …
Trying to send message 1 to endpoint 0x01 …
OK, message successfully sent
Read the response to message 1 (CSW) …
Response successfully read (13 bytes), status 0
Trying to send message 2 to endpoint 0x01 …
OK, message successfully sent
Read the response to message 2 (CSW) …
Response successfully read (13 bytes), status 0
Trying to send message 3 to endpoint 0x01 …
OK, message successfully sent
Read the response to message 3 (CSW) …
Response successfully read (13 bytes), status 0
Trying to send message 4 to endpoint 0x01 …
OK, message successfully sent
Read the response to message 4 (CSW) …
Response successfully read (13 bytes), status 0
Reset response endpoint 0x81
Reset message endpoint 0x01
-> Run lsusb to note any changes. Bye!
je remarque que dans /dev il y a bien les port USB ttyUSBN qui se sont activé
et avec un programme appellé minicom
je parvient à lancer mes commande AT
mais je sais pas si ce que j’ai fais est propre…mais c’est déjà une bonne nouvelle !!
voilà les commande AT que j’ai envoyé :
pi@raspberrypi:~ $ minicom -D /dev/ttyUSB1
Welcome to minicom 2.7.1
OPTIONS: I18n
Compiled on Aug 13 2017, 15:25:34.
Port /dev/ttyUSB1, 11:56:33
Press CTRL-A Z for help on special keys
OK
AT+CPIN?
+CPIN: READY
OK
AT+CMGF=1
OK
AT+CMGS= »+336XXXXXXXX »
> Hello From Raspberry
+CMGS: 180
OK
sa marche super bien
J’ai testé des dongle Huawei mais je ne pouvais pas envoyer/recevoir. uniquement envoyer ou recevoir en fonction de la solution choisie: gammu-smsc ou raspisms.
J’ai finalement choisir un SIM800c (version HAT) avec gammu-smsc et tout fonctionne après quelques ajustements.
C’est ce qui me semble être la solution la plus moderne et pérenne.