S’il existe une fonctionnalité que je souhaite mettre en place depuis bien longtemps autour de mon serveur sans me ruiner, c’est la possibilité de pouvoir envoyer de manière automatisée des SMS de notifications aux numéros de mon choix. Et accessoirement, de pouvoir en recevoir aussi.
Cela ouvre en effet un large éventail de possibilités supplémentaires : couplage avec le système domotique, diversification des moyens de notification, diversification des moyens de déclenchement d’actions, ou pourquoi pas moyens complémentaires de validation d’une session, comme le font la plupart des banques à l’heure actuelle lorsqu’un particulier demande une transaction d’une certaine importance.
Il y a quelques mois, ceci n’aurait été réalisable pour un montant raisonnable à faible volumétrie, lorsqu’on table comme moi sur une vingtaine de SMS par an à tout casser, qu’en passant par des API développées par des prestataires tiers, du type smsbox.net. Mais pour ma part, j’aime l’idée de garder le contrôle de mon architecture amateur sur le plus grand périmètre possible, et ce type de service facture une valeur ajoutée par rapport au coût du SMS simple que je souhaite pouvoir économiser. Avec l’arrivée l’an dernier de l’opérateur béni des dieux Free Mobile sur le marché, les opérateurs de téléphonie mobile ont tous subitement attrapé « comme par hasard » la fièvre humaniste/altruiste et ont décidé à la quasi-unanimité de revoir à la baisse leurs tarifs exorbitants. D’autres encore se sont diversifiés, à l’instar de B&You, proposant une carte pré-payée sans durée limite de validité, pour peu que le client s’affranchisse d’au moins un acte tarifé (communication, SMS, data…) par an.
C’est cette nouvelle offre qui m’a fait sauter le pas, à 5 centimes par an le coût d’envoi du SMS de ping permettant de maintenir la ligne, il serait dommage de se priver.
Avant d’investir dans du matériel plus évolué, j’ai tout d’abord cherché à réutiliser ce qui trainait dans mes vieilles affaires. Pour cette maquette, j’ai donc utilisé :
- Un serveur Linux, dans mon cas un clone de ma Debian sur VM, qui fera office de machine d’émission de SMS.
- Un téléphone quelconque avec une carte SIM valide, dans mon cas mon Nokia C7-00 (ne vous moquez pas S.V.P, je n’ai pas les moyens de claquer ma fortune dans un Galaxy S3), qui sera l’appareil destiné à la réception.
- Un vieux Nokia 3310 de récup’, le téléphone star que les moins de vingt ans ne peuvent pas connaitre, qui faisait de vous à l’époque le personnage le plus hype des utilisateurs de mobile, car on pouvait jouer à Snake et composer ses propres sonneries (moi j’avais composé Ecuador de Sash! et pour ça j’inspirais le respect à mes semblables).
- Une carte SIM B&You, 4.99€, réglée avec Eurocard Mastercard.
- Un câble de communication 3310 USB, 5€ sur eBay, réglé avec Eurocard Mastercard.
- Le plaisir de monter sa propre plate-forme d’envoi de SMS, ça n’a pas de prix.
Pour commencer, on insère la carte SIM B&You dans le mobile et on connecte le câble de communication sur celui-ci. Notez que comme il s’agit d’un modèle du début des années 2000, époque où les téléphones mobiles étaient relativement peu conçus pour permettre à leurs utilisateurs de les connecter avec du matériel informatique, il faut démonter la partie arrière de la coque pour pouvoir brancher le câble de comm’.
On branche ensuite l’autre extrémité du câble sur le port USB du serveur, la VM pour moi dans le cadre de cette maquette. On allume le mobile et on le déverrouille en entrant le code PIN. On en profite pour changer le logo par défaut, parce que ça permet de se la péter quand on poste la photo sur un blog de geek.
Le câble est basé sur un chip PL2303, qui est automatiquement reconnu par le système pour peu qu’on ait embarqué le support pl2303 dans le kernel ou en tant que module.
dhalsim:/$ lsusb Bus 003 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Ensuite la magie opère grâce à gnokii, un soft en ligne de commande spécialisé dans la communication FBUS utilisée par les vieux Nokia, mais qui peut aussi communiquer en commandes AT comme le font la plupart des téléphones actuels. Le wiki de gnokki indique que le 3310 utilise le driver Nk6100, ce que j’indique dans le fichier de configuration en même temps que le device sur lequel le câble data USB est connecté. J’ai modifié uniquement 3 lignes du fichier de configuration par défaut :
[global] model = 6110 port = /dev/ttyS0 connection = serial
On demande à gnokii d’envoyer un SMS de test, grâce à une commande simplissime. Par sécurité, j’ai indiqué le n° destination au format international. J’imagine que l’utilisation des n° au format national est possible aussi.
On admire enfin la réception du SMS sur le mobile destinataire. On peut alors savourer la victoire avec un bon Dry Martini comme le ferait James Bond après une mission accomplie avec classe.
Voila, c’est tout simple ! J’ai fait une mini-vidéo du processus complet d’envoi-réception, dans laquelle j’envoie simplement la date et l’heure système par SMS, au lieu du message de test ci-dessus. C’est un peu flou, filmé et monté à l’arrache, et il a fallu compresser à outrance pour conserver un fichier de taille raisonnable, mais il faut savoir que je subis des pressions fortes d’une partie de mon entourage professionnel et en même temps unique lectorat pour que je mette en ligne l’article accompagné de la vidéo sans attendre les calendes grecques. Ces gens s’acharnent sur la touche F5 de leur clavier toutes les 10 secondes, me mettant par effet de bord sous la menace d’une attaque DDOS, je ne peux me permettre de ruiner leur productivité plus longtemps 🙂
Prochaine étape de ce projet : seconde maquette avec l’utilisation d’un « vrai » modem GSM et des commandes AT. À moins qu’une connerie ne vienne s’intercaler dans le programme…
Bien joué 😉
Petite question, peux-t-on avoir un détail du branchement du cable s’il te plait? J’ai beau chercher, je n’ai rien trouvé, et je souhaiterais aussi jouer avec les sms et mon vieux 3310 =D
Merci 🙂
C’est très simple, le câble côté téléphone est constitué d’un grand connecteur plat dans lequel la batterie vient se clipser. Pour le brancher, retirer la coque arrière du téléphone, retirer la batterie, la clipser sur le connecteur, et venir clipser l’ensemble dans l’emplacement batterie du téléphone. Ainsi seule la partie haute de la batterie (là où se trouvent les contacts) est intégralement clipsée dans son emplacement, au niveau de la partie basse, le connecteur USB est intercalé (il y a des petits contacts sous la partie basse de la batterie dans le téléphone).
A noter que l’on ne peut pas remettre la coque arrière tant que le câble USB est connecté au téléphone.
Salut et bravo pour cet article !
J’aurai une question, comment modifier le fichier de configuration de gnokii ? Je ne le trouve pas !
Merci =)
C’est vrai qu’il est difficile à trouver. Sous Debian Wheezy, pour une raison que j’ignore, il existe une version dans /etc/xdg/gnokii/config
Mais il me semble que le fichier attendu au lancement de l’application est ${HOME}/.config/gnokii/config
Comme je ne m’en souviens jamais, j’ai créé des liens symboliques :
ln -s /etc/xdg/gnokii/config /etc/gnokii.conf
ln -s /etc/xdg/gnokii/config ${HOME}/.config/gnokii/config
Ok merci j’ai trouvé !
[…] mon premier article sur le sujet, j’avais promis que la suite de l’aventure se déroulerait sur une seconde […]
[…] terminé les enfantillages. Envoyer des SMS en ligne de commande à des gens avec un nom rigolo, c’est très amusant, mais ça montre rapidement ses limites. […]
… Et bien je ne sais pas comment tu as réussi à trouver un câble à 5 !
Si tu as un tuyau, je prends ! 🙂
Slt! je suis actuellement entrain de réaliser un module de télécommande par téléphone autour d’un PIC 16F628A, ce projet consiste à activer un relais lié à la sortie du microcontroleur PIC16F628A via l’envoi d’un SMS. En effet j’utilise un téléphone NOKIA 3310 et ce téléphone semble ne pas comprendre les commandes AT que le microcontroleur lui envoi, s’il vous plait j’aimerais savoir:
si le NOKIA 3310 comprend les commandes AT d’envoi d’SMS?
si oui, quelle est la démarche à suivre?
si la commande AT+CPIN est absolument nécessaire et pourquoi?
Je vous remercie!
Ça ressemble à un projet pour faire exploser une bombe artisanale à distance dans un centre commercial bondé à la veille de Noël, comme dans les films ! Je ne voudrais pas devenir complice de terrorisme 🙂
Pour répondre à vos questions :
Le Nokia 3310 ne comprend pas les commandes AT, uniquement les commandes FBUS.
Pour un téléphone comprenant les commandes AT, la commande AT+CPIN sert à connaitre l’état du verrouillage de la SIM, et par extension à lui communiquer le code PIN si la SIM est verrouillée.
Merci Alphak.
Tu n’as pas à t’inquiéter loin du térrorisme, je suis juste passionné des nouvelles technologies de télécoms :).
J’ ai en ma disposition un téléphone Siemens A55 pour mon projet et un editeur de programmation CCS 5 compiler s’il vous plait, j’aimerais savoir si:
Le telephone Siemens A55 est bien adapté à ce type de commandes?
Si oui quelle commande pourrais-je utiliser pour tester la détection du téléphone , de l’arrivé d’un SMS?
Merci!
Pour le support des commandes AT par le A55, il faut fouiller sur le net. D’autres possesseurs se sont probablement déjà posé la question. N.B.: une téléphone qui communique en AT ne veut pas dire qu’il supportera forcément toutes les commandes, là encore il faut fouiller ou expérimenter…
Pour la lecture de SMS directement par les commandes AT, le mieux est probablement de suivre les conseils de ce site, que j’avais référencé dans un article précédent. Ce chapitre correspond précisément à ce que tu recherches.