Review
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). Si votre requête est bien formulée, vous verrez une réponse du genre :
Bien entendu, c’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.
Si tout c’est bien passé, vous verrez ceci :
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 ;-)
Rejoindre le forum pour en discuter


















Article sympa mais il aurait du s’intituler « piloter sa freebox en http ». Il est bien trop succinct pour être une initiation au protocole :pas d’explication sur la commande GET par ex. Et bien trop détaillé pour faire une bonne introduction a l’API Freebox pour le profane : par ex. pourquoi passer par telnet et pas par un navigateur au moins dans un premier temps.
Ce n’est que mon avis…
Bonjour Denis,
Pour l’initiation au protocole, j’ai un lien vers la page « HTTP made really easy » ; inutile de tout réécrire.
Je passe par telnet, car je veux montrer les mécanismes qu’utilisent les navigateurs web ; il est fréquent de commencer des apprentissages par des exemples qui seront ensuite décortiqués et expliqués. Les commentaires et le forum sont là pour ça.
Après, je cherche à faire faire des choses aux gens, mais je t’avoue qu’il est compliqué d’expliquer facilement ce qui pour moi est simple et coule de source. Mais j’ai prévu par la suite des articles sur les arduinos il faut un minimum d’introduction…
Merci pour tes remarques, je tacherais d’être plus didactique la prochaine fois !
A+
Vincent
Ok que du bon : quelqu’un pourrait me donner un exemple de ligne de code pour que ma zibase allume la freebox puis une ligne pour se mettre dans le menu vidéo ?
A vos plumes! Merci d’avance..
Salut
Je ne connais pas le langage de base de la zybase.
Mais il faut ouvrir un socket TCP, et la ligne de code tu l’as là haut !
Pour le menu je crois que c’est la fonction « home ».
Voir peut-être à remplacer les [entrée] par l’équivalent hexa soit $13$10 (fonction du langage).
A+
Vincent
[...] le pilotage de la FreeBox v6 qui est radio (et non IR) je vous invie à consulter cet article de maison-domotique. "Aimer" ceci :"J'aime"Soyez le premier à aimer ce [...]
salut, j’essaie d’intégrer ca dams mon usine a gaz,
« Il faudra remplacer “12345678″ par l’ID de votre freebox. », qu entends tu par id de la box ?
ca se trouve ou ?
Merci.
Arnaud
Salut
Sur la V5, il faut aller dans le menu « free », puis « paramètres » et « information générales ».
Il y a une info « code telecommande », c’est l’id.
Pour la V6 je n’en ai pas sous la main, désolé.
A+
Vincent
Merci Vincent, j’avais en fait uitilisé cet id. Bon, bin ca ne marche pas si facillement sous linknx….
je te tiens au courant de mes résultats
Arnaud
Salut Arnaud,
On se retrouve ici après Domedia !
Le plus compliqué dans ces histoires est de taper les caractères non imprimables dans un script. En l’occurence, ici, [entrée] correspond à deux caractères qu’il faut écrire la plupart du temps en hexa, en fonction de la syntaxe du langage.
[entrée] vaut « 0x0D 0x0A », soit le caractère ASCII de valeur 13 suivi du caractère de valeur 10 (explicitement, « Carriage Return » -retour charriot- et « Line Feed » -saut de ligne- qui servait d’ordres pour les premières imprimantes). Il faut les écrire explicitement mais ça dépend des langages. En c par exemple ou trouve \r\n. Certains langages demande une notation hexa.
A+
Vincent
oui, et je pense que tu connais jquily qui est passé sur le forum et m’a vendu la centrale russound il y a qqe temps.
je ne le voyais pas comme ca le return !
La prog d imprimante laser fut un de mes premiers sujets de stage, et ca commence a dater !
bon, bin je teste tout ca, sous debian, avec linknx.
Merci
Salut Vincent,
J’espere que tu vas bien.
J’ai enfin fait ma formation niveau 1 CRESTRON et validé.
Je sui en cours de modification de mon système qui est avec une box NEUFBOX évolution actuellement dont je ne trouve pas les codes de pilotage en ip (meme eux ne connaisse pas) cependant je passe sur la freebox V6 prochainement et j’aimerais savoir ou tu trouve les code la concernant ou concernant d’autres ensemble de produits de ce genre (hors produits pro et le site RC).
A bientôt.
Salut Vincent,
Ça va depuis le temps ? Neufbox, pas d'infos sur un possible pilotage.
Pour la freebox, il y a ce que j'ai dans l'article, guère plus.
A+
Vincent
Vu pour la neufbox, de toute façon elle est plus active et est remplacer par la freebox V6 depuis aujourd’hui.
cependant dans mon invite de commande il me dit que la commande telnet n’existe pas????
Si tu as des infos?????
Merci a toi pour toute ces infos.
Salut Vincent,
Sous Windows 7, il faut aller dans le panneau de configuration, « installer des logiciels » et installer le « client telnet » dans les composants Windows.
A+
Vincent
Ca fonctionne également directement sous navigateur web
http://hd1.freebox.fr/pub/remote_control?key=power&code=123456789