mardi 12 janvier 2021

Domotique : Utiliser la clé HUAWEI LTE USB Stick E3372-320 - Pour envoyer des SMS par Jeedom !

En fait, je voulais pouvoir notifier ma famille par SMS...

Donc j'ai regardé rapidement les dongles compatibles sur la doc du plug-in SMS jeedom ici : 

Et j'ai acheté ce modèle : Huawei E3372



J'ai ensuite installé le plug-in SMS de jeedom


Mais malheureusement, en Auto dans la configuration du plug-in, il ne semblait pas être bien détecté....


Le plug-in n'arrive pas à se lancer même avec les dépendances installés :


je le voyais bien en USB connecté sur le système (sur mon Pi qui me sert de "gateway" jeedom et déjà centralise mes dongles comme pour le bluetooh et le zwave) :

pi@Jeedom2:/ $ lsusb
Bus 001 Device 009: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 001 Device 013: ID 12d1:14db Huawei Technologies Co., Ltd. E353/E3131
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Donc j'ai pensé qu'il fallait mettre à jour les drivers comme expliqué ici pour activer le mode modem : https://lecrabeinfo.net/huawei-e3372-modem-usb-lte-4g-installer-firmware-hilink-routeur-firmware-stick-modem.html 

Mais finalement, le modèle que j'ai est un e3372h-320 qui pose problème... et c'est ce que l'on trouve beaucoup maintenant sur les boutiques en ligne en ce moment.

On ne peut pas le passer en mode factory donc on ne peut pas le mettre à jour avec un firmware compatible. J'ai testé sur Windows 10, il marche à merveille en routeur 4G mais sous linux, il n'est pas forcement détecté comme on le souhaite dans le cas de jeedom pour l'envoi de SMS !

Voici le firmware qui pose problème dans mon cas (confirmé par plusieurs personnes sur internet), le screenshot vient de l'outil DC - Unlocker 2 qui est expliqué dans l'url de tuto juste au dessus:


Donc il a fallu, prendre le plan B... appelé directement l'API de la clé 3G... sans utiliser le plugin SMS de jeedom malheureusement :-(

Même si les documentations sont limités sur cette API, j'ai reussi à trouver des infos :

En fait, on peux accéder, via une url: http://192.168.8.1/api/sms/send-sms

Et pour le contenu du SMS et la destination, on soumets un XML de ce format :

<?xml version='1.0' encoding='UTF-8'?>
<request>
<Index>-1</Index>
<Phones><Phone>+336123456</Phone></Phones><Sca></Sca>
<Content>Hello world</Content>
<Length>-1</Length>
<Reserved>1</Reserved>
<Date>-1</Date>
</request> 

J'ai donc pu faire le script send_sms.sh pour l'instant mais on voit qu'il faut aussi gérer la session:

#!/bin/bash
DATA=`curl http://192.168.8.1/api/webserver/SesTokInfo`
SESSION_ID=`echo "$DATA" | grep -oP '(?<=SesInfo>)[^<]+'`
TOKEN=`echo "$DATA" | grep -oP '(?<=TokInfo>)[^<]+'`
echo $DATA
echo $TOKEN
echo $SESSION_ID
curl http://192.168.8.1/api/sms/send-sms -H "Cookie: $SESSION_ID" -H "__RequestVerificationToken: $TOKEN" --data "<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>$1</Phone></Phones><Sca></Sca><Content>$2</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>"


Je peux donc envoyer un sms ainsi: 

et à terme pour le mettre dans mes scenarios :

Voilà, j'espère que cela pourra vous aider.

Enjoy !

P.S: pour la réception de SMS, c'est une autre paire de manche... un autre article peut être par la suite... demandez moi si vous le voulez dans les commentaires, pour l'instant, j'en ai pas le besoin mais cela viendra sûrement ;-)



7 commentaires :

  1. Bonjour sympas votre article.
    Je suis dans le même cas comme beaucoup de personne à avoir une clé E3372h-320.
    Comme vous j'ai passé du temps à tester différentes méthodes que l'on retrouve sur le net.

    Où as tu trouvé les infos sur l'API? Effectivement pouvoir réceptionner des SMS serait top pour faire des interactions. c'est mon objectif.

    Cordialement
    Stephane

    RépondreSupprimer
    Réponses
    1. En fait, pour l’api, j’ai juste lancé sur pc en windows 10 et regardé dans le code de la page web d’envoi de sms de leur serveur qui est dans la clé elle-même ;-) je ne crois pas avoir vu de page ou doc sur une api officielle mais elle existe peut-être ? A voir !

      Supprimer
    2. As-tu réussi à recevoir les SMS? J'ai essayé différents script mais ne fonctionne pas ou peut être mal utiliser. Effectivement j'ai aussi parcouru les codes sources des pages du serveur.
      Il faudrait arriver à récupérer le HTML de la page SMS. Et de récupérer le contenu de la balise sms_contract_list_item_content..

      Supprimer
    3. Non, désolé, je n’ai pas encore regardé en détail, en fait, si j’y arrive, je ferais un article (je le ferais en même temps, ce blog est en fait un wiki pour moi ;-)

      Supprimer
  2. j'ai testé ton code mais ca ne fonctionne pas, tu as quoi comme configuration materiel, et quelle version de Jeedom?

    RépondreSupprimer
  3. Bonjour,
    c'est bon l'envoi de sms fonctionne comme vous l'indiqué.
    :-)


    RépondreSupprimer
    Réponses
    1. Bonjour, Ok super, désolé si j’ai pas pu répondre avant et content de voir que cet article peut en aider d’autre... c’est le but ;-)

      Supprimer