[SMS] Huawei e3531 + SIM Free, retour d'expérience

Bonjour à tous,

Aujourd’hui, retour d’expérience sur la mise en place de communication SMS bidirectionnelle avec Jeedom.

Tout est parti d’un sujet (dispo ici) qui semblait promettre simplicité et efficacité.

Les versions utilisées :

Ubuntu 18 LTS
Jeedom 3.3.39

Commençons par la partie hardware. Le dongle préconisé sur le tuto n’existant plus, je me suis rabattu sur son grand frère le Huawei E3531 (dispo ici). On patiente le temps de recevoir la SIM et le dongle…

Comme indiqué sur le site et lu un peu partout, ces dongles ont la fâcheuse tendance à se faire passer pour un cd-rom et/ou un adaptateur ethernet. Je vous fait gagner du temps, voilà la configuration qui a marché chez moi parmi tout ce que j’ai lu :

créez le fichier /etc/usb_modeswitch.d/12d1:157d avec pour contenu

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

N’oubliez pas de débrancher rebrancher la clé pour voir la différence

lsusb me renvoie le bon device :

Bus 003 Device 040: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem

Je poursuis le tuto (installation du plugin SMS, configuration, envoie d’un SMS de test, YOUHOU ça marche!)

NB : pour ceux qui ne cherchent pas à envoyer de SMS à leur Jeedom, félicitation, vous avez fini et ça marche. Pour les autres :

J’arrive au bout du tuto (mais pas du tunnel!) et je pense avoir terminé. Le temps de monter un scénario rapide, une action ask et en fonction de la réponse un autre SMS de confirmation. Surprise, le scénario ne fonctionne pas… Je reçois bien le 1er SMS, je réponds par l’affirmative, puis timeout. Je ne vois rien dans les logs qui m’aide.

Ne trouvant rien dans les logs, je cherche une alternative au plugin SMS et tombe sur le plugin gammu que j’installe.

Et j’arrive au même point, je peux recevoir des SMS de Jeedom mais pas en envoyer.

J’active les logs de gammu dans le fichier gammu-smsdrc du plugins (chez moi /var/www/jeedom/plugins/gammu/resources/gammu-smsdrc) :

[smsd]
...
logfile = /var/log/gammu-smsd.log
debugLevel = 255
...

Et je ne vois rien qui se passe quand j’envoi un SMS.

Un peu de recherche et je tombe sur ce topic : Gammu can not receive sms qui parle du même dongle GSM.

Je rajoute la modification préconisé dans le fichier gammu-smsdrc du plugins :

[gammu]
...
atgen_setCNMI=2,0,0,2,1
...

Je retente et toujours rien…
Mais en regardant les logs, je constate que la commande CNMI passée est 2,1,0,2.
Nouvelle recherche et je tombe là dessus : atgen_setCNMI not working.
Le support de 5 digits dans le CNMI n’est supporté que depuis le 21 octobre 2019, la dernière release date du 27 septembre.
Nous voilà bon pour une compile des sources.

# 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 libmysqlclient-dev libpq-dev libcurl4-gnutls-dev libusb-1.0-0-dev libdbi0-dev libbluetooth-dev libgudev-1.0-dev libglib2.0-dev unixodbc-dev
# Compilation
cd gammu-master
./configure
make
sudo make install
sudo ldconfig

Il faut modifier le fichier /lib/systemd/system/gammu-smsd.service pour changer l’emplacement du fichier de conf par defaut. Remplacez :

EnvironmentFile=-/etc/sysconfig/gammu-smsd

par

EnvironmentFile=-/etc/gammu-smsdrc

Puis il faut rafraichir le daemon systemd : sudo systemctl daemon-reload

Le daemon est « masqué » par défaut : sudo systemctl unsmask gammu-smsd

Dans le doute on l’active : sudo systemctl enable gammu-smsd

et enfin redémarrer le daemon gammu-smsd : sudo systemctl start gammu-smsd

Ok on retente. On regarde les logs, le CNMI est bon. J’envoie un SMS pour vérifier qu’il y a de la vie et surprise dans les logs:

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

En gros, le dongle a bien reçu le SMS mais n’a pas envoyé les infos nécessaires dedans pour en faire quelque chose avec gammu. On avance!

Nouvelle recherche, je tombe la dessus : Huawei E303 and E3531 Ignoring incoming SMS info as not a Status Report in SR memory.

Pas de réponse probante…

Puis sur : Randomly Ignoring incoming SMS info as not a Status Report in SR memory

Pas de réponse du tout…

Je farfouille le web et tombe sur ces documents très interessants : Aide AT V13 ainsi que sur celui-ci AT commands

Pour résumer : la commande CNMI configure le système de notification des SMS (réception + accusé réception).

Une intuition me dit que mon réglage CNMI ne doit pas être bon.

En regardant la documentation et en tatonnant, la configuration CNMI 1,2,0,0,0 est une combinaison gagnante avec le réseau Free.

[gammu]
...
atgen_setCNMI=1,2,0,0,0
...

Je regarde les logs de gammu-smsd et quand j’envoie un SMS :

Received IN20200311_104334_00_+xxxxxxxxxxx_00.txt
gammu-smsd[23342]: Starting run on receive: /var/spool/gammu/SMSDreceive.sh IN20200311_104334_00_+xxxxxxxxxxx_00.txt
gammu-smsd[23342]: Process finished successfully

Et Jeedom me répond qu’il ne comprend pas ma requête. C’est plus qu’un progrès, c’est un début de quelque chose qui marche!

Je retente mon scénario avec l’action ask. Qui ne marche toujours pas mais avec Jeedom me répète qu’il ne comprend pas ce que je lui demande donc il reçoit bien les SMS.

Après recherche, le plugin gammu n’est pas compatible avec l’action ask. Qu’à cela ne tienne, je rajoute la compatibilité sans grosse difficulté.

Au moment de l’écriture de ce post, le pull request pour la compatibilité avec l’action ask a été accepté et mergé sur la branche master.

Si vous voulez en bénéficier avant la prochaine release officielle, il suffit de rajouter le plugin via le dépôt github (https://github.com/lunarok/jeedom_gammu/)

Ca y est, c’est terminé.

Je désactive les logs de gammu dans le fichier gammu-smsdrc du plugins (chez moi /var/www/jeedom/plugins/gammu/resources/gammu-smsdrc) :

[smsd]
...
debugLevel = 0
...

Normalement vous pouvez communiquer avec votre Jeedom via un dongle Huawei E3531 et une SIM Free

Infos complémentaire :

  • Vous pouvez supprimer les dépendances de compilation après avoir installer gammu. Celles-ci ne sont nécessaires que pour la compilation
  • Ne modifiez pas directement le fichier /etc/gammu-smsdrc, le plugin l’écrase après chaque modification de sa configuration
  • N’oubliez pas de remettre les logs en normal, gammu-smsd est très bavard au niveau 255
  • L’installation par les sources de gammu rend obsolète la gestion des dépendances par le plugins. Surtout ne pas tenter de les réinstaller, sinon il va écraser la version compilé par une version obsolète ne supportant pas les 5 digits du CNMI

Pour les modérateurs, désolé si je n’ai pas posté au bon endroit.

Pour les yeux des lecteurs, désolé pour les fautes d’orthographes.

Pour conclure, bon Jeedom à tous!

Edit n°1

Si comme moi vous avez plusieurs contrôleur sur port USB (Dongle GSM + dongle RFX par exemple), il peut être assez énervant que l’ordre des ttyUSB* change, mettant la configuration de Jeedom par terre.

Pour résoudre ce problème avec ce dongle, il suffit de créer un fichier dans le dossier /lib/udev/rules.d/99-usb-custom.rules avec pour contenu :

SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_modem"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_diag"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_pcui"

On recharge et applique les règles :

udevadm control --reload-rules && udevadm trigger

Dans la configuration du plugin dans Jeedom, sélectionnez la clé USB ttyUSB_utps_modem. Celle-ci pointera toujours vers le bon ttyUSB*

Edit n°2

Si vous avez des problèmes d’emission et de réception de SMS, rajouter un n° SMSC dans la configuration de gammu permet de résoudre la plupart des problèmes :

[smsd]
...
SMSC=+33695000695
...

Ce numéro est celui pour free

3 « J'aime »

Je n’en ai pas l’utilité pour l’instant mais beau partage détaillé !

Bonjour,

Une alternative avec Debian et plugin SMS : [Présentation] akenad - #21 par akenad

akenad :slight_smile:

Bonjour @fefux,

Est-ce que ta clé ressemble à celle-ci ? : Plugin SMS - Clé USB 3G Huawai E3531i-2 - #29 par oussama1984

Autrement dit as-tu une marque opérateur sur ta clé ?
Celle ci c’est « O2 prepaid »

akenad:)

1 « J'aime »

Bonjour @akenad,

Désolé, je n’ai pas vu ton message plus tôt.
Oui effectivement, c’est bien cette clé par contre elle n’est pas marqué par un opérateur.

bonjour à tous,
j’ai suivi le tuto pour la partie installation, je pense être pas loin du but, mais étant sur VM qui tourne sur mon NAS je n’arrive pas à voir dans la liste le bon port SMS dans le menu déroulant côté plugin SMS…

lsusb:
Bus 001 Device 004: ID 12d1:14dc Huawei Technologies Co., Ltd.

vu que j’ai un rfxcom sur un autre usb, je pense qu’il ne sait pas trouver le bon port

j’ai fait cette modification:
" Edit n°1

Si comme moi vous avez plusieurs contrôleur sur port USB (Dongle GSM + dongle RFX par exemple), il peut être assez énervant que l’ordre des ttyUSB* change, mettant la configuration de Jeedom par terre.

Pour résoudre ce problème avec ce dongle, il suffit de créer un fichier dans le dossier /lib/udev/rules.d/99-usb-custom.rules avec pour contenu :

SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_modem"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_diag"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_pcui"

On recharge et applique les règles :

udevadm control --reload-rules && udevadm trigger

Dans la configuration du plugin dans Jeedom, sélectionnez la clé USB ttyUSB_utps_modem . Celle-ci pointera toujours vers le bon ttyUSB* "

mais cela n’apparait toujours pas dans la liste des ports.

si quelqu’un a une idée…

Bonjour @Taz77RR,

Je vois tout d’abord un problème si tu as une clé Huawei e3531 :
Si ton device est détecté comme 12D1:14DC alors il n’est pas en mode modem GSM.
lsusb devrait te renvoyer :
Bus 003 Device 003: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem

Si tu n’arrives pas à avoir ça, la suite de tuto ne fonctionnera pas

Bon courage

Merci, j’avais même pas tilté alors que je me suis pris la tête dessus depuis le début lol.

bien vu, j’ai créé le fichier 12d1:157d et l’identique en 12d1:14dc , débrancher/rebrancher la clé USB et même problème la clé est toujours vue en 12d1:14dc
c’est bel et bien un e3531 toute neuve.

Ta clé ne doit pas être reconnu en 12d1:157d de base. Peux tu débrancher ta clé, faire

dmesg -w

Rebrancher ta clé et poster ce qui s’est affiché?

ah si c’est bon !

en tapant cette commande:
usb_modeswitch -c /etc/usb_modeswitch.d/12d1:1f01
, j’ai bien eu ça:

Bus 001 Device 010: ID 12d1:14dc Huawei Technologies Co., Ltd. E33372 LTE/UMTS/GSM HiLink Modem/Networkcard

par contre toujours rien côté plugin, pas de port SMS

Je pense que tu es en mode carte réseau (comme une clé 4g).
Quitte a tester, il faut changer

usb:v12D1p1001*

Par

usb:v12D1p14DC*

Dans le fichier /lib/udev/rules.d/99-usb-custom.rules. Mais j’ai un doute que ça marche

je ne vois toujours pas les interfaces

voici ce que me renvoit dmesg:
usb 1-1: USB disconnect, device number 10
[80617.805399] cdc_ether 1-1:1.0 enx001e101f0000: unregister ‹ cdc_ether › usb-0000:00:04.0-1, CDC Ethernet Device
[80631.548898] usb 1-1: new high-speed USB device number 11 using ehci-pci
[80633.003072] usb 1-1: New USB device found, idVendor=12d1, idProduct=14dc
[80633.003077] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[80633.003079] usb 1-1: Product: HUAWEI Mobile
[80633.003081] usb 1-1: Manufacturer: HUAWEI
[80633.155269] cdc_ether 1-1:1.0 eth0: register ‹ cdc_ether › at usb-0000:00:04.0-1, CDC Ethernet Device, 00:1e:10:1f:00:00
[80633.158627] usb-storage 1-1:1.2: USB Mass Storage device detected
[80633.161558] scsi host3: usb-storage 1-1:1.2
[80633.177191] cdc_ether 1-1:1.0 enx001e101f0000: renamed from eth0
[80634.193265] scsi 3:0:0:0: Direct-Access HUAWEI TF CARD Storage 2.31 PQ: 0 ANSI: 2

et le fichier 99-usb-custom.rules :
cat 99-usb-custom.rules
SUBSYSTEMS==« usb », ATTRS{modalias}==« usb:v12D1p14dc* », KERNEL==« ttyUSB* », ATTRS{bInterfaceNumber}==« 00 », ATTRS{bInterfaceProtocol}==« ff », SYMLINK+=« ttyUSB_utps_modem »
SUBSYSTEMS==« usb », ATTRS{modalias}==« usb:v12D1p14dc* », KERNEL==« ttyUSB* », ATTRS{bInterfaceNumber}==« 01 », ATTRS{bInterfaceProtocol}==« ff », SYMLINK+=« ttyUSB_utps_diag »
SUBSYSTEMS==« usb », ATTRS{modalias}==« usb:v12D1p14dc* », KERNEL==« ttyUSB* », ATTRS{bInterfaceNumber}==« 02 », ATTRS{bInterfaceProtocol}==« ff », SYMLINK+=« ttyUSB_utps_pcui »

edit:
je vais essayer ceci:
https://jeedom.github.io/documentation/howtoadvance/fr_FR/gsm.huawei_mode_modem

re edit: bon je ne peux pas car la clé USB n’est pas reconnu en port COM, j’arrive bien a envoyer des sms par contre depuis windows 10.

une idée ? (j’ai vérifier sur la clé j’ai bien une 3531i-2)


bon sur Win 10 j’ai fait les manips pour passer de Hilink vers Stick, je pense avoir réussi vu que j’ai bien les paramètres WAN sur le portail de la clé:
DC - Unlocker 2 Client 1.00.1431

Detecting modem :

selection :
manufacturer - Huawei modems
model - Auto detect (recommended)

Found Applications port COM4

Found modem : E3531
Model : Huawei E3531 / MegaFon M21-4
IMEI : XXXXXXXXXXx
Serial NR. : XXXXXXXXXX
Firmware : 22.521.37.01.35
Hardware ver. : CU1E3131IM
Dashboard version : WEBUI_17.100.18.01.35_HILINK
SIM Lock status : unlocked
Wrong codes entered : 0 (unlock attempts left : 10)

y’a pu qu’à remettre la clé sur mon NAS… et tester.

lsusb:
Bus 001 Device 012: ID 12d1:14dc Huawei Technologies Co., Ltd. E33372 LTE/UMTS/GSM HiLink Modem/Networkcard

après dmesg -w:

[150183.600309] usb 1-1: new high-speed USB device number 13 using ehci-pci
[150185.013514] usb 1-1: New USB device found, idVendor=12d1, idProduct=14dc
[150185.013518] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[150185.013520] usb 1-1: Product: HUAWEI Mobile
[150185.013521] usb 1-1: Manufacturer: HUAWEI
[150185.193663] cdc_ether 1-1:1.0 eth0: register ‹ cdc_ether › at usb-0000:00:04.0-1, CDC Ethernet Device, 00:1e:10:1f:00:00
[150185.195012] usb-storage 1-1:1.2: USB Mass Storage device detected
[150185.195830] scsi host3: usb-storage 1-1:1.2
[150185.209448] cdc_ether 1-1:1.0 enx001e101f0000: renamed from eth0
[150186.212915] scsi 3:0:0:0: Direct-Access HUAWEI TF CARD Storage 2.31 PQ: 0 ANSI: 2
[150186.219717] sd 3:0:0:0: Attached scsi generic sg3 type 0
[150186.249515] sd 3:0:0:0: [sdb] Attached SCSI removable disk

je pense que je ne suis toujours pas en mode stick, mais j’ai bien flashé la clé. tu confirmes ?

Oui tu es toujours en mode clé 4g… quand tu dis patcher la clé, tu as changé le firmware?

Salut,
oui, j’ai suivi ce tuto pour avoir le port COM danse le gestionnaire des périphériques:

si j’ai bien tout compris, il me reste cette partie à faire:

tu confirmes ? ??

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.