Clé USB GSM/3G TP-Link MA180 et Jeedom

Voilà bien longtemps que je n’ai écrit d’article sur la domotique. Il se trouve que j’ai récemment troqué ma solution domotique « artisanale » (celle que je vous décrivais dans mes précédents articles) pour une solution plus intégrée et plus « pro », à base de Jeedom, tournant sur une box Smart/ZWave+, un boitier RFXCom, une clé ZiGate et une clé Bluetooth.

J’ai donc plusieurs articles de prévus pour expliquer, détailler, et parfois simplement documenter pour moi même, ce que je bricole avec Jeedom et comment je pilote mes différents actionneurs dans la maison.

Aujourd’hui, je vais commencer par expliquer comment j’ai fait fonctionner ma clé GSM/3G de marque TP-Link, modèle MA180 avec Jeedom, puisqu’elle n’est pas supportée par défaut. Cette clé va permettre à Jeedom d’envoyer des notifications par SMS.

Avant toute chose, comme je l’avais expliqué dans mon précédent article sur comment utiliser cette clé pour envoyer des SMS avec un Raspberry Pi, il faut savoir que je ne l’ai pas branchée directement sur ma box Smart, mais via un hub USB alimenté. J’avais en effet eu quelques déboires lié à la consommation de courant de la clé sur certaines phases (accroche du réseau ou au moment de l’envoi de SMS).

Installation de la clé


Lorsqu’elle est connectée à la box Jeedom, cette clé n’est par défaut pas reconnue comme un modem GSM, mais comme un support de stockage de masse. Il est possible de modifier cela grâce à usb-modeswitch. Il faut donc se connecter en SSH sur sa box Jeedom et suivre les étapes suivantes.

Installation de usb-modeswitch:

jeedom@jeedom:~$ sudo apt-get update && sudo apt-get install usb-modeswitch

Extraction des configuration fournies en standard avec usb-modeswitch:

jeedom@jeedom:~$ cd /usr/share/usb_modeswitch
jeedom@jeedom:/usr/share/usb_modeswitch$ sudo tar -zxf configPack.tar.gz

Édition du fichier de configuration correspondant au code vendeur (0x2357) et produit par défaut (0x0200) pour cette clé USB:

jeedom@jeedom:~$ sudo vi /usr/share/usb_modeswitch/2357:0200

Dans ce fichier, ajouter le bloc suivant:

# TP-Link MA180
DefaultVendor=0x2357
DefaultProduct=0x0200

TargetVendor=0x2357
TargetProduct=0x0201
StandardEject=1

Puis, pour prendre en compte ce changement, forcer un changement (switch) du mode usb:

jeedom@jeedom:~$ sudo usb-modeswitch -c /usr/share/usb_modeswitch/2357:0200

On peut vérifier que tout s’est bien passé avec la commande lsusb, la clé devrait apparaitre:

jeedom@jeedom:~$  lsusb
Bus 001 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Bus 001 Device 017: ID 2357:0201
Bus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

A ce stade, la clé 3G est correctement reconnue par le système, et de nouveaux périphériques sont détectés et disponibles sur le système :

jeedom@jeedom:~$  ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3

Installation du plugin Jeedom « gammu »


Le plugin « Gammu » de Jeedom permet de gérer les communications avec la clé 3G, via le périphérique TTY correspondant. On l’installe donc de façon standard dans Jeedom, via le market. Il faut ensuite configurer le plugin et renseigner deux champs:

  • Clef USB:

    dans la liste déroulante, sélectionner le périphérique TTY qui permet de piloter la clé. Pas de solution miracle pour choisir parmi les trois périphériques qui ont été créé, il faut les tester. Pour moi, et pour cette clé, c’est le port /dev/ttyUSB3 qui fonctionne.

  • PIN:

    on entre ici le pin code de la carte SIM qui est dans votre clé, code utilisé par le démon gammu (gammu-smsd) pour la déverrouiller.

A ce stade là, en théorie tout devrait fonctionner correctement, mais dans les faits, j’ai eu quelques soucis avec le démon « gammu-smsd » qui crashait au démarrage. Je vous indique donc ce qu’il faut faire pour corriger (en tous cas dans la version du plugin que j’ai installée, à un instant ‘t’).

Éditer le fichier /etc/init.d/gammu-smsd, et remplacer la ligne:

USER=gammu

par:

USER=root

Puis redémarrer le service (le démon quoi…):

jeedom@jeedom:~$  sudo service gammu-smsd restart

A partir de là, tout fonctionne correctement, il ne reste plus dans Jeedom qu’à créer un nouvel équipement « Gammu » à partir du menu « Plugins–>Communication–>Gammu ». Cet article n’étant pas sur l’utilisation du plugin « Gammu », qui est par ailleurs très simple et conforme à la logique Jeedom, je ne détaillerai pas ici comment faire.

Affichage de certains caractères dans les SMS


Un dernier point: j’ai eu quelques petits soucis d’affichage dans les SMS envoyés par Jeedom/Gammu, de certains caractères accentués ainsi que certains symboles tel que le degré Celsius  » ° « .

La faute apparemment à la gestion de la locale de langue. Celle-ci  est déclarée à deux endroits:

  1. Dans le fichier de configuration du démon gammu-smsd, /etc/gammu-smsdrc qui contient la ligne suivante:
    GammuLoc = fr_FR.UTF8
  2. Dans un fichier de code du plugin « Gammu »: /var/www/html/plugins/gammu/core/gammu.class.php qui contient la ligne suivante:
    putenv(‘LANG=fr_FR.UTF-8’);

Je ne comprends pas très bien ce qu’il se passe, laquelle est ou devrait être utilisée, ou  même pourquoi cette configuration ne gère pas certains caractères Unicode alors qu’elle le devrait, mais toujours est-il que j’ai réussi à faire afficher correctement mes SMS en modifiant le fichier PHP de code du plugin « Gammu » en remplaçant la ligne ci-dessus par:

putenv(‘LANG=en_US.UTF-8’);

Publicités

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s