Retrouvez cet article dans : Linux Magazine 86
Rappel
De nombreux téléphones mobiles GSM/GPRS/3G permettent une connexion à un ordinateur. Ainsi, la machine peut prendre le contrôle du téléphone pour " passer des coups de fil " ou utiliser des services d’envoi de SMS ou MMS. Du moins, en théorie, car aucun logiciel ne semble proposer de solution MMS pour l’instant. Des adaptateurs mobiles PCMCIA, comme la carte Vodafone 3G/GPRS, permettent de faire de même, offrant ainsi une solution intégrable facilement dans un ordinateur portable. Il s’agit en fait d’un modem mobile, comme il en existe beaucoup pour l’analogique. La plupart de ces périphériques peuvent être commandés via un jeu de commandes Hayes assez similaire à ceux que l’on trouve pour les modems. D’autres mobiles, comme ceux fabriqués par Nokia, disposent de leur propre langage, mais la popularité de la marque auprès des fournisseurs de téléphonie mobile et des utilisateurs a motivé le développement de solutions. La connexion de l’appareil avec le PC (ou le Mac) peut se faire via plusieurs méthodes en fonction des caractéristiques du téléphone :- Le port série. C’est sans doute la solution la plus simple et la plus économique. Cela exige l’achat ou la confection d’un câble spécifique et, bien sûr, la disponibilité d’un port série sur la machine. Ports qui ont une fâcheuse tendance à disparaître des configurations récentes, mais qui pourront être ajoutés via une carte PCI au besoin. Les data cables se trouvent facilement dans les boutiques de téléphonie proposant coques, façades et accessoires. Ils servent habituellement à personnaliser le téléphone ou à le délocker de manière à ce qu’il accepte d’autres cartes SIM que celle de l’opérateur qui vend le téléphone. Bien entendu, ceci sort du cadre du présent article. Ces câbles ne contiennent que peu d’électronique, mais il ne s’agit pas de simples connexions. Un convertisseur de tension permet habituellement de faire la liaison RS232/téléphone.
- Le port USB. Il ne s’agit souvent que de simples convertisseurs USB/série. C’est le cas, par exemple, des câbles DCU-10 ou DCU-11 pour Sony-Ericsson. Il faudra vous assurer de la prise en charge de ce périphérique USB par Linux avant achat. Ce n’est pas chose aisée, puisque les boutiquiers ont une fâcheuse tendance à ignorer complètement notre cher système d’exploitation au bénéfice d’une certaine plate-forme nommée Windows. Dans le cas du DCU-1x, il s’agit d’une puce pl2303 prise en charge par le module du même nom. Personnellement, après quelques mois d’utilisation de ce câble, je me suis rabattu sur une version série suite à quelques problèmes de fonctionnement avec le module (oups à répétition lors du déchargement du module).
- IrDA. Certains téléphones disposent d’un émetteur/récepteur infrarouge permettant, par exemple, de synchroniser le répertoire téléphonique ou l’agenda intégré au téléphone. Il faut alors disposer d’un adaptateur IrDA sur la machine. S’il s’agit d’un serveur, on évitera, bien sûr, ce type de connexions, puisqu’il vous faudra acquérir, de toute façon, un adaptateur IrDA USB ou série. Je ne parle même pas de la facilité avec laquelle le signal infrarouge peut être parasité ou dont le téléphone peut subitement disparaître. Un téléphone physiquement lié à la machine (fixation sur le boîtier) et communiquant via IrDA aurait, en effet, quelque chose de comique.
- Bluetooth. Disponible avec des téléphones relativement coûteux, le Bluetooth nécessitera l’installation et la configuration d’une pile Bluetooth dans votre système GNU/Linux (voir GLMF 78 – décembre 2005). L’immobilisation d’un téléphone Bluetooth de la sorte ne se fera pas sans une très bonne raison. De plus, les mêmes commentaires ne s’appliquent que pour la solution IrDA.
Gnokii
Gnokii est le nom d’un utilitaire permettant de contrôler le téléphone mobile à peu de frais. Il se configure très simplement, via le fichiersmsd
Gnokii est également la bibliothèquePréparation
Bien qu’il soit possible de n’utiliser qu’un fichier texte, il est fortement conseillé d’utiliser le support d’une base de données. L’accès se fait par l’intermédiaire de plugins placés, avec Debian, dansmysqladmin -uYYYYY -pXXXXX create smsdLe nom de la base n’a aucune importance. Elle sera passée en argument au démon. La création des tables dans la base est facilitée par la mise à disposition d’un fichier SQL. Il suffira alors d’utiliser la commande suivante pour construire le tout :
mysql smsd < /usr/share/doc/\ gnokii-smsd-mysql/sms.tables.mysql.sqlDeux tables sont créées. La première
Intégration Système
-l /usr/share/smsd: le chemin où trouver les bibliothèques plugins permettant la connexion aux bases de donnée.-m mysql: le module de base de données à utiliser ici MySQL.-d smsd: le nom de la base contenant les tables inbox et outbox.-u YYYYY: le nom d’utilisateur pour la connexion à la base.-p XXXXX: le mot de passe correspondant à l’utilisateur.-f /var/log/smsd.log: le fichier journal permettant un suivi des opérations.-b ME: le type de mémoire à utiliser. Ici, celle de l’appareil.
#!/bin/sh set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC=“Gnokii SMS daemon“ NAME=smsd DAEMON=/usr/sbin/$NAME PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME test -x $DAEMON || exit 0Nous définissons ensuite deux fonctions procédant au démarrage et à l’arrêt du démon. Pour nous faciliter la vie, nous nous reposons sur
d_start() {
start-stop-daemon --start --quiet \
-m --pidfile $PIDFILE -b \
--exec $DAEMON -- -u root \
-p viviane -d smsd -m mysql \
-f /var/log/smsd.log -i 30 \
-b ME -l /usr/share/smsd \
|| echo -n “ already running”
}
Il en va de même pour l’arrêt du démon qui est simplissime. L’option d_stop() {
start-stop-daemon --stop \
--quiet --pidfile $PIDFILE \
--name $NAME \
|| echo -n " not running"
}
Il ne nous reste, plus, les éléments de case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo “.”
;;
stop)
echo -n “Stopping $DESC: $NAME”
d_stop
echo “.”
;;
restart|force-reload)
echo -n “Restarting $DESC: $NAME”
d_stop
sleep 1
d_start
echo “.”
;;
*)
echo “Usage: $SCRIPTNAME {start|stop|”\
“restart|force-reload}” >&2
exit 1
;;
esac
exit 0
Il ne nous reste, plus, enfin, qu’à lancer le script pour en vérifier le fonctionnement :
% /etc/init.d/smsd start Starting Gnokii SMS daemon: smsd. % ps x | grep smsd 32149 ? Ssl 0:00 /usr/sbin/smsd -u xxxx -p xxxxxxx -d xxxx -m mysql -f /var/log/smsd.log -i 30 -b ME -l /usr/share/smsd
Utilisation
Une fois le démon en marche, il va régulièrement vérifier le périphérique GSM ainsi que le contenu de la base de données (l’intervalle peut être réglé avec l’option1 Jun 2006 10:26:36: Inserting sms from +3367344XXXX successful.On retrouve ensuite, dans la table
+----+--------------+---------------------+---------------------+--------------+-------+-----------+ | id | number | smsdate | insertdate | text | phone | processed | +----+--------------+---------------------+---------------------+--------------+-------+-----------+ | 0 | +3367344XXXX | 2006-06-01 10:25:09 | 2006-06-01 15:56:58 | Wazaaaaaaaa | NULL | 0 | +----+--------------+---------------------+---------------------+--------------+-------+-----------+ 1 row in set (0.00 sec)On remarquera ici une différence importante entre le contenu de
echo ‘insert into outbox (number,text) value’\ (“0673448035”, “’`uptime`’”);’ \ | mysql -uroot -pviviane smsd

Illus. 1 : Réception de la sortie de la commande uptime sur un Tréo600
Plusieurs téléphones
smsd est capable d’utiliser plusieurs téléphones. C’est la raison d’être du champ phone des tables inbox et outbox. Plusieurs choses sont nécessaires.
Tout d’abord, il faut modifier le fichier de configuration de manière à spécifier les différents appareils à votre disposition dans des sections [phone_n] où n est le numéro du périphérique, par exemple :
[phone_1] port = /dev/ttyS0 model = 6110 initlength = default connection = serial use_locking = no serial_baudrate = 38400Dès lors, en lançant
Retrouvez cet article dans : Linux Magazine 86





J’aime bien le fonctionnement de smsd, gammu implémente il cette solution ?
–> http://www.gammu.org/wiki/index.php?title=Gammu:SMSD
Cool
Humm, disons que comme le futur serveur de sms n’a pas d’interface Bluetooth…
J’aime bien le fonctionnement de smsd, gammu implémente il cette solution ?
Le câble était un câble série mais parfaitement utilisable via un adaptateur USB/série (/dev/ttyUSB*). Notez cependant que depuis la production de l’article, j’ai fait quelques essais avec Gammu qui est bien plus en avance aujourd’hui que Gnokii. Essais via Bluetooth, un bonheur…
Bonjour, merci pour cet article qui demeure très intéressant !
Le câble utilisé dans le test est-il en USB ?
Sinon, quelqu’un connaitrait il un téléphone connecté en USB pour lequel smsd fonctionne ?
Merci.
Merci pour cet article,
reste une question, comment lancer le deamon au boot de la machine,
j’ai essayé « update-rc.d smsd defaults » mais le process ne lance pas.