Le protocole HTTP par l’exemple : piloter sa Freebox

Aujourd’hui, un article un peu plus technique pour vous expliquer la manière dont communiquent certains équipements en utilisant les standards du web. Comme par exemple le pilotage d’iTunes en HTTP présenté par Julian dans cet article.

I. Notion de protocole

En langage informatique, un protocole est la description d’une méthode permettant de communiquer avec un appareil ou un logiciel donné. Un protocole définira la façon de se connecter ainsi qu’une liste de mot-clés et d’arguments répondant à une syntaxe précise. Par exemple, vous trouverez la description complète du protocole HTTP ici. Inutile de tout lire, vous trouverez un résumé intéressant et suffisant de ce protocole sur cette page.

Le protocole HTTP (Hyper Text Transfer Protocol) est un des plus utilisés sur Internet aujourd’hui. Il est conçu pour formuler des requêtes à un serveur qui va vous renvoyer une page web. Basé sur du texte avec des mots clés anglais, il est compréhensible par les êtres humains. Il est parfois détourné de son usage initial pour piloter des équipements, comme par exemple, le boitier TV des Freebox (V5 ou V6).

II. Première approche

Essayons de nous connecter à un serveur web, sans passer par un navigateur, par exemple Google. Il faut établir une connexion TCP/IP, sur le port 80. Pour cela, Windows vous fourni un outil en ligne de commande : telnet. Telnet permet d’établir une connexion TCP/IP sur un serveur.

Première chose à faire, lancez un terminal en ligne de commande, et tapez :

telnet www.google.com 80 [entrée]”  (l’argument “80” permet de changer le port par défaut de telnet qui est 23).

 

Vous devriez normalement vous retrouver avec un terminal totalement noir avec juste un curseur qui clignote. Vous êtes connectés à Google !

Le serveur attend maintenant que vous lui formuliez une requète, si possible en HTTP (il n’attendra pas indéfiniment, il se peut que la connexion se coupe au bout de quelques secondes).

Tapez donc ceci tant que la connexion est active :

GET / HTTP/1.1[entrée] Host : www.google.fr[entrée] [entrée]“.

(Vous ne verrez rien s’afficher lors de la saisie, juste le curseur se déplacer; c’est normal, Google à affaire d’ordinaire à des navigateurs web plutôt qu’à des êtres humains, il n’affiche donc pas en écho les caractères envoyés).

Bien entendu, la réponse est incompréhensible, car telnet n’est pas conçu pour interpréter une page web, à la différence de Firefox, Internet Explorer ou Safari. Il ne vous affiche donc que le code source de la page -certains diront qu’il manque de puissance pour afficher les données de la matrice…- de manière brute, quand votre navigateur l’aurait interprété pour afficher ladite page.

III. Pilotage de la Freebox

Maintenant que nous savons faire une requête à un serveur web, regardons comment piloter la Freebox TV. La Freebox TV dispose d’un serveur web embarqué, et elle utilise le protocole HTTP, non pas pour vous fournir des informations, mais pour émuler la télécommande ! Comment ? En appelant une page spéciale et en fournissant deux paramètres : l’ID de votre Freebox, et la touche de la télécommande à émuler.

L’ID est un numéro unique, qui vous permet de piloter votre Freebox TV et pas celle du voisin. Ce numéro est disponible dans les informations sur la Freebox que vous pouvez consulter sur votre TV.

Ensuite, il nous faut l’adresse de la Freebox. Free nous simplifie la vie avec les urls suivantes : hd1.freebox.fr et hd2.freebox.fr, respectivement pour le premier et le second boitier TV (si vous en disposez).

On va donc se connecter au serveur en question :

telnet hd1.freebox.fr 80 [entrée]“.

et taper la requête suivante :

“GET /pub/remote_control?key=power&code=12345678 HTTP/1.1[entrée][entrée]”

Il faudra remplacer “12345678” par l’ID de votre freebox.

Et normalement, votre Freebox s’est soit allumée, soit éteinte, selon son état précédent !

Voilà, vous avez compris la base du contrôle d’équipement en HTTP ! Pour aller plus loin, voici la liste des commandes de la Freebox TV :

    ‘1’
    ‘2’
    ‘3’
    ‘4’
    ‘5’
    ‘6’
    ‘7’
    ‘8’
    ‘9’
    ‘0’
    ‘prgm_inc’
    ‘prgm_dec’
    ‘vol_inc’
    ‘vol_dec’
    ‘yellow’
    ‘blue’
    ‘green’
    ‘blue’
    ‘up’
    ‘down’
    ‘left’
    ‘right’
    ‘ok’
    ‘home’
    ‘play’
    ‘stop’
    ‘prev’
    ‘next’
    ‘bwd’
    ‘fwd’
    ‘rec’
    ‘back’
    ‘swap’
    ‘info’
    ‘mail’
    ‘help’
    ‘epg’
    ‘media’
    ‘options’
    ‘power’

Tous les logiciels permettant de piloter la Freebox TV (avec votre smartphone par exemple) utilisent ce protocole et cette liste de commande.

Sachant que de nombreux équipements aujourd’hui sont contrôlables via des requêtes de ce genre (certains modèles de TV, des amplificateurs Home Cinéma, etc…), vous comprendrez que le protocole HTTP est un protocole à connaitre si on souhaite explorer de nouvelles possibilités en domotique ;-)


14 Commentaires

      Laisser un commentaire

      Ne ratez plus aucune news !

      Inscrivez vous à notre newsletter, et recevez chaque mois toute l'actualité du blog pour ne plus rien louper: actualité, guides, tutoriaux, concours !

      Merci pour votre inscription !