Commander un ordinateur avec un téléphone

Photographie du téléphone SAGEM myX6-2

Aujourd'hui, je m'emmerde ferme à la maison. Pour m'occuper je me lance dans du bricolage : je voudrais utiliser mon téléphone portable pour commander à distance mon ordinateur, en particulier la lecture des vidéos.

J'utilise le matériel suivant :

Ces deux appareils sont équipés de la technologie Bluetooth.

Script telephommande

Télécharger le script

Avant que le script ne détecte votre téléphone, il faut sélectionner dans le menu Connectivité du téléphone le mode actif & visible. Ensuite je vous recommande de vérouiller le clavier du téléphone en pressant trois secondes sur la touche * ; autrement, le clavier du téléphone commandera simultanément l'ordinateur et le téléphone !!!


clarinde ~$telephommande -h
Usage: telephommande [OPTIONS]
Control your computer from a SAGEM myX6-2 phone via Bluetooth.

Use one of the following to specify a phone device: 

    -a, --address=ADDRESS   Connect to the phone at ADDRESS
    -n, --name=NAME         Connect to the phone named NAME

Various
    -d, --debug             Print output of subprocesses
    -h, --help              This help message
clarinde ~$telephommande -n akampana
Device akampana found at address 00:12:37:xx:xx:xx
Connected to akampana
Press Ctrl-C to close connection

Pour connaître les commandes auxquelles correspondent les touches du téléphone, il y a l'option --info (ou -i).

clarinde ~$telephommande -i
Key        Command
-----------------------------------
diaresis   amixer set Master toggle
down       amixer set Master 4dB-
hang-up    totem --quit
left       totem --seek-bwd
left dot   totem --play-pause
right      totem --seek-fwd
right dot  totem --fullscreen
up         amixer set Master 4dB+

Fonctionnement du script

Toutes les expérimentations sont faites sous Bash. Le script ne fait qu'automatiser ce qui suit. Dans les copies d'écrans, tous les caractères saisis apparaissent en gras.

Identification du téléphone

Pour communiquer avec le téléphone via Bluetooth, on a besoin de son adresse.


clarinde ~$sudo hcitool scan
Scanning ...
        00:12:37:xx:xx:xx       akampana

Établir une connexion série

d'après l'article de Wikipédia sur Bluetooth, le protocole SDP (Service Discovery Protocol) permet à un appareil Bluetooth de rechercher d'autres appareils et d'identifier les services disponibles. Dans le même article, il est question d'un service port série (Serial Port Profile) désigné dans les documentations techniques par SP.

Commençons par vérifier que le téléphone SAGEM myX6-2 dispose bien de cette fonctionnalité. Pour ça, je sélectionne dans le menu Connectivité du téléphone le mode actif & visible, puis j'exécute les commandes suivantes.


clarinde ~$sdptool search --bdaddr 00:12:37:xx:xx:xx SP | grep -i channel
    Channel: 20
clarinde ~$sudo rfcomm connect 0 00:12:37:xx:xx:xx 20
Connected /dev/rfcomm0 to 00:12:37:xx:xx:xx on channel 20
Press CTRL-C for hangup

Surveiller l'activité du clavier

Il est possible de modifier la nature de la connexion du côté du téléphone à l'aide des commandes AT. Ces commandes sont décrites dans le document intitulé AT command set for GSM Mobile Equipment distribué par l'ETSI (European Telecommunications Standards Institute). La commande +CMER permet de surveiller l'activité du clavier du téléphone.

Voyons voir comment ça marche. Dans un nouveau terminal, j'exécute les commandes suivantes.


clarinde ~$ls -al /dev/rfcomm*
crw-rw---- 1 root dialout 216, 0 2007-08-15 18:14     /dev/rfcomm0
clarinde ~$minicom -s
Welcome to minicom 2.2
OPTIONS: I18n
Compiled on Mar  7 2007, 15:10:03.
Port /dev/rfcomm0

                 Press CTRL-A Z for help on special keys

AT+CMER=2,1,0,0,0
OK

+CKEV: 94,1
+CKEV: 94,0

+CKEV: 77,1
+CKEV: 77,0

+CKEV: 86,1
+CKEV: 86,0

+CKEV: 67,1
+CKEV: 67,0

+CKEV: 35,1
+CKEV: 35,0

Dans cette copie d'écran, les lignes commençant par +CKEV ont été générées automatiquement en pressant et en relachant une touche du téléphone. Le nombre a deux chiffres qui suit +CKEV permet d'identifier chaque touche ; ici il s'agit des quatre touches de direction (dans l'ordre haut, droite, bas, gauche) et de la touche #.

Conclusion

Le principe est maintenant clair : il suffit d'automatiser la connexion, puis d'analyser les chaînes de caractères commençant par +CKEV pour identifier les touches du téléphone qui sont pressées, et enfin de commander à l'ordinateur d'agir en conséquence. C'est fait dans le script telephommande. Il est écrit en Python. Chacun l'adaptera à ses besoins.

Matthias Meulien
orontee@gmail.com
Valid HTML 4.01! Valid CSS! Valid links!
Dernière modification: $Date: 2007/09/21 07:27:31 $