Journal remotefreebox : contrôlez votre Freebox depuis votre PC

Posté par (page perso) . Licence CC by-sa
Tags :
70
3
jan.
2016

L'histoire

Tout a commencé en août 2014 lorsque Free a mis à jour le firmware de sa Freebox et a supprimé l'API HTTP de télécommande réseau (cette API étant obsolète depuis 2012). Malheureusement, la plupart des télécommandes existantes utilisent l'API HTTP qui a l'avantage d'être beaucoup plus simple à mettre en œuvre.

Je décide à ce moment là d'implémenter le protocole en Python en me basant fortement sur le code source fourni par Free en C. J'y passe une journée, je commence à pouvoir communiquer avec la freebox mais je n'envoie pas encore de données utiles. Finalement je m'arrête là car je pars en vacances, sans internet, ni même ordinateur. Et le jour de mon départ j'apprends que Free a fait marche arrière et a réactivé son ancienne API. Autant dire qu'à mon retour je n'y ai pas retouché…

La semaine dernière je tombe par hasard sur un article de blog d'un type (Frozax) qui a forké mon code sur Github pour lui permettre de contrôler sa Freebox depuis… Minecraft ! Je vous laisse lire l'article ici : http://www.frozax.com/blog/2015/04/commander-sa-freebox-dans-minecraft-inutile-donc-indispensable/ . Alors que je m'étais occupé des couches basses de communication, Frozax a ajouté l'envoie des codes des touches.

J'ai donc décidé de me replonger un peu dans le projet et d'en parler sur LinuxFr au cas où certains voudraient à leur tour s'en servir pour faire un truc cool avec.

remotefreebox : module Python

remotefreebox est un module Python3 qui permet de faire télécommande réseau pour Freebox v6. Par exemple, cela permet de changer de chaîne, de monter le volume ou encore allumer/éteindre la TV.

En pratique, son utilisation est très simple :

from remotefreebox import FreeboxController

fbx = FreeboxController()
fbx.press("Chan+")

Pour l'installer, il suffit de taper :

pip3 install remotefreebox

Le code source est ici : https://github.com/MaximeCheramy/remotefreebox et la liste des commandes disponible se trouve dans ce fichier : https://github.com/MaximeCheramy/remotefreebox/blob/master/remotefreebox/fbx_descriptor.py

C'est fonctionnel mais c'est améliorable. Du coup, n'hésitez pas à forker, la première fois, cela a bien marché :)

remotefreebox-gui : simple télécommande

Cet après-midi, j'ai construit ma propre télécommande en Python + PyQt. La code ne fait que 50 lignes, le gros du travail étant de l'interface fait avec Qt Designer.

Voici à quoi cela ressemble (sans grande originalité) :

remotefreebox-gui

Le code se trouve ici : https://github.com/MaximeCheramy/remotefreebox-gui

Cette télécommande est très basique et ne fait pas encore le poids face à greemote par exemple (pas de liste de chaînes ni guide des programmes). Mais s'il y a des gens motivés pour en faire quelque chose de bien, lancez-vous. Je filerai volontiers un petit coup de main.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.