Piloter sa Freebox Révolution avec sa box domotique – Acte 2 : FreeboxOS

Suite à la mise à jour de nos Freebox Révolution survenue il y a quelques semaines, je vous propose aujourd’hui une mise à jour de la classe PHP que je vous avais proposé peu avant le passage sous Freebox OS (vous pouvez retrouver mon article ici) et qui vous permettait de faire communiquer vos box domotique et internet.

La mise à jour proposée par les développeurs de chez Free, en plus d’amener une nouvelle interface graphique, des applis Androïd et Apple ainsi que de nouvelles fonctionnalités, intègre l’ajout d’un serveur REST API permettant de développer sa propre application s’interfaçant avec sa Freebox. La création de cette API officielle va rendre obsolète le script PHP que je vous avais proposé il y a peu.

L’API Freebox OS :

Ce qu’il faut savoir tout d’abord, c’est qu’une documentation officielle pour développeurs est disponible ici  pour pouvoir dialoguer avec la Freebox facilitant ainsi les développements locaux.

Cette API rend disponibles de nombreuses actions / informations du boitier Server et cela en par fonctions classées en différents groupes : Téléchargements, Système de fichiers, Air Media, RRD, Appels / Contacts, Configuration, Stockage, Filtre parental, etc…

Elle fait aussi appel à une authentification différente. En effet, il n’est plus nécessaire de renseigner son mot de passe Freebox pour pouvoir utiliser l’application. Il vous faudra l’autoriser directement depuis la face avant de votre Server, en cliquant sur la flèche droite (= Oui) lorsque le message s’affichera.

NB : par défaut, l’accès aux parties Configuration et Contrôle parental de l’API n’est pas autorisé. Il faudra les aussi les valider via mafreeebox.freebox.fr -> Paramètres de la Freebox -> Gestion des accès.

Enfin, l’authentification se fait via un système de jetons (tokens). Si l’authentification ne fonctionne plus, je vous invite à supprimer le fichier « token » qui a été créé dans le même dossier que les fichiers de la classe PHP et de retenter une authentification.

La classe PHP Freebox :

Cette classe PHP (téléchargeable ici) permet d’accéder à tout ce que propose l’API Freebox OS. Chaque groupe de l’API Freebox OS est traité dans une sous-classe PHP dédiée. Ainsi, pour avoir accès aux fonctions de la partie « Configuration » de l’API Freebox OS, on fera appel (on va voir comment un peu plus bas) à la sous-classe « Configuration » stockée dans le fichier « Configuration » du dossier API.

Afin de faciliter le développement PHP, j’ai repris les mêmes noms de fonctions de l’API Freebox OS. Ainsi, pour connaitre l’état de la connexion Internet, on va utiliser la fonction « Get the current Connection Status » de l’API Freebox OS, fonction du groupe Configuration. En PHP, on fera alors appel à la fonction « GetConnnectionStatus() » de la classe PHP « Configuration ».

 

Dans la classe PHP que je vous propose, vous retrouvez, en plus des fichiers de classe, un fichier freebox.php qui reprend les mêmes exemples que lors de mon précédent article. Seuls les chemins Xpath ont été amenés à changer.

Ainsi, pour accéder à l’état de sa connexion internet, le chemin Xpath sera désormais :

/freeboxOS/Configuration/GetConnnectionStatus/state

Pour connaitre l’espace disque disponible, il vous faudra patienter quelques jours le temps que j’inclue le module « Storage » de l’API Freebox OS dans cette classe PHP.

Toutefois, dès aujourd’hui, il vous est possible de consulter la liste des appels (entrants, sortants, manqués). Le chemin Xpath sera (pour le dernier appel) :

/freeboxOS/Calls_Contacts/GetCallsList/id-0

Pour lancer une commande sur la Freebox, rien de plus facile, il vous suffit de reprendre les mêmes commandes que précédemment, légèrement modifiées :

  • Eteindre la carte wifi : http://IP/freebox.php?do=wifi&val=off
  • Allumer la carte wifi : http://IP/freebox.php?do=wifi&val=on
  • Rebooter la box : http://IP/freebox.php?do=reboot
  • Rebooter la box après XX secondes : http://IP/freebox.php?do=reboot&val=XX  -> Cette commande n’est plus disponible
  • Régler la luminosité de l’afficheur LCD à XX% : http://IP/freebox.php?do=lcd_brightness&val=XX

Je vous invite à jeter un coup d’oeil dans le code PHP du fichier freebox.php pour avoir la liste de toutes les commandes actuellement disponibles, et dans la documentation de l’API Freebox pour toutes celles nouvellement possibles.

Pour les développeurs, ne travaillez que sur un seul fichier PHP, sinon il y aura autant de demandes d’accès à l’API (et donc d’appli différentes  vu de la Freebox) que de fichier différents que vous appelez.

Tutoriaux à venir :

Cette API Freebox OS étant plus développée que celle qui était utilisée jusqu’alors, je vais vous proposer au travers de quelques articles à paraitre ces prochains jours, des petits tutoriels très simples pour exploiter à fond cette nouvelle classe PHP.

A propos Fabien

J'ai découvert la domotique un peu par hasard en 2011. J'ai eu l'occasion de tester diverses solutions grand public ou home made. Aujourd'hui ma domotique est basée sur une eedomus avec quelques scripts développés localement.

A voir aussi

Redémarrer automatiquement sa box jeedup

Redémarrer une Jeedup automatiquement après une coupure de courant

Vous avez été nombreux à nous demander comment redémarrer votre Jeedup, fonctionnant sous jeedom, automatiquement …

5 commentaires

  1. Salut,

    merci pour cette MAJ que je vais faire dès ce we. Vivement les prochains tutoriaux, car n’y connaissant rien en php, j’ai hâte d’avoir des exemples à copier/coller sur ma debian pour faire des scripts intéressants (wifi on/off étant pour moi très intéressant mais mouvementé ces derniers mois à cause des changements de free – je parle aussi des token apparus il y a des mois).

    Je sais pas si cette classe php (et l’api à l’origine) le permet, mais un des trucs que je voudrais faire, c’est pouvoir programmer un enregistrement : si je ne suis pas là (ping freeplayer=null) à une certaine heure (via un crontab), alors enregistre ce programme. Aujourd’hui, je le fais via script en allumant la tv et player (via prise commandée), et avec curl j’envoie les touches (puis extinction en suite). Ca marche, mais je préfèrerais éviter d’allumer la TV puis l’éteindre ensuite. C’est plus pro si prg directement la fbx server. Mais je pense que ce n’est pas possible, et qu’il faut passer par le net (et quelqu’un avait fait en php un truc, mais qui ne fonctionne plus aujourd’hui j’ai l’impression).
    Alors possible ou pas ?
    D’ailleurs j’avais demander à free (bugtracker-évolution) s’ils pouvaient ajouter une condition dans la programmation (une case à cocher : si player allumé), mais j’ai pas eu de suite. Et une programmation récurrente alors qu’un enregistrement est nécessaire 1 fois sur 10, fait marcher le disque dur inutilement et il faut effacer les enregistrement ensuite.
    merci

  2. Bonjour,
    voilà, j’ai installé mais le token pose problème : voilà le message
    Accès au token token interditAccès au token token interditAccès au token token interditRequest access unknown !
    et mon problème c’est le fichier token ne se créé pas dans le répertoire. Pouvez-vous m’aiguiller svp ?
    par ailleurs je n’ai pas de message sur la freebox pour autoriser l’accès. Est-ce normal ?
    merci

  3. Alors, ce que peut faire cette API, c’est à 99% ce que tu peux faire depuis mafreebox.freebox.fr, pas plus. Donc pour tes enregistrements, impossible de les programmer avec.

    Concernant le token, s’il n’y a rien affiché sur la Freebox et que l’accès n’est pas autorisé, le token ne sera pas créé. Il faut s’assurer qu’il n’y a aucun fichier token présent dans le dossier d’installation du script et que l’appli est inexistante dans la liste des accès autorisés sur mafreebox.freebox.fr
    Si le token est existant et l’accès inexistant ou l’inverse, il faut repartir de zéro en supprimant token et accès depuis mafreebox.freebox.fr

  4. Bonjour
    merci pour la réponse. Dans mon répertoire www/freebox/ il n’y aucun fichier token.
    Sur mafreebox, la seule appli autorisée est freebox compagnion (pour mon android).
    Et toujours ce message. Comprend pas
    merci

  5. Bonjour, ou puis je trouver le fichier xml ?

    merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *