Dernières nouvelles

Piloter sa Freebox Révolution avec sa box domotique

FreeboxEtEedomusLa Freebox Révolution, connue des plus ou moins g33ks d’entre nous est une box évoluée et communicante (comprenez par là qu’elle n’est pas limitée à faire modem/routeur et décodeur TV). Pour ceux qui la possèdent (désolé pour les autres), vous avez pu très certainement utiliser les jeux, les fonctions multimédia ou téléchargement, etc… Quid de la domotique ? Et bien venons-y.

Les plus avertis sur la Freebox Révolution savent certainement qu’une API publique existe (et qui a ainsi permis le développement d’applications pour les terminaux Android et iOS). C’est grâce à cette ouverture de la box que je vous propose aujourd’hui un script PHP permettant de contrôler le boitier Server de cette box sans avoir à passer par sa page de configuration.

Quelle utilité vous allez me dire ? Je vous réponds par des exemples tout simples :

– activer ou désactiver la carte wifi,

– rebooter le boitier,

– connaitre sa bande passante, son adresse IP externe,

– contrôler la luminosité de l’afficheur…

En fait, tout ce que vous pouvez faire depuis les pages de configuration (http://mafreebox.freebox.fr) est normalement reproductible au travers de mon script. Certes, régler la plage DHCP depuis une box domotique ne sera pas très convivial, voire inutile, mais connaitre le dernier appelant ou éteindre le wifi la nuit (n’est-ce pas Mickaël ? ;-)) pourra être effectué très simplement depuis votre box domotique préférée.

Pré-requis :

Tout cela nécessite deux petits pré-requis :

  • Un serveur web avec PHP 5.x interne au réseau de votre Freebox. En effet, pour des raisons de sécurité et de fonctionnalité, il faut absolument que vous hébergiez vous-même ce script. Vous allez voir que la clé wifi ainsi que toute la configuration de la Freebox sont lisibles facilement avec ce script.
  • Il ne faut pas que votre mot de passe de connexion (à la page http://mafreebox.freebox.fr) commence par le symbole arobase (@). Si tel est le cas, il faut modifier votre mot de passe, sinon vous ne pourrez pas exécuter le script. En fait si, vous pourrez toujours l’exécuter, mais la Freebox vous enverra balader car elle ne le comprendra pas.

Configuration initiale :

Maintenant que vous êtes fin prêts, allons-y.

Le script est divisé en 4 fichiers que vous pouvez retrouver dans mon Github : https://github.com/DjMomo/apifreebox

Il y a 2 fichiers à éditer. Le premier est mafreebox.cfg. Il faut y renseigner le mot de passe de votre Freebox Révolution.

<?
$config = array (
    'url'     => "http://mafreebox.freebox.fr",        // URL de connexion à la page de configuration
    'user'    => "freebox",                             // Nom de connexion (toujours "freebox")
    'password' => "votremotdepasse"                    // Votre mot de passe de connexion à la page http://mafreebox.freebox.fr
    );
?>

Le second est le fichier .htaccess. Comme je vous le disais un peu plus haut, avec ce script vous pouvez voir votre clé wifi en clair (et puis globalement toute la configuration de votre box). Aussi, pour éviter les appels au script par des machines autres que celles que vous souhaitez, il faut indiquer dans ce fichier l’adresse de votre réseau local (le temps du développement par exemple), puis affiner après avec uniquement celle correspondant à votre box domotique (il vous faudra alors supprimer la ligne « Allow from 192.168.0.0/255.255.255.0 » et adapter l’IP de l’autre ligne).

Order Deny,Allow
Deny from all
# Pour autoriser toutes les machines du réseau 192.168.0.0 (par exemple)
Allow from 192.168.0.0/255.255.255.0
# Pour autoriser uniquement la box domotique avec l'IP 192.168.0.16 (par exemple)
Allow from 192.168.0.16/255.255.255.255

Et c’est tout. Placez ces 2 fichiers ainsi que freebox.php et freebox.class.php sur votre serveur web, dans un même dossier. Voyons maintenant à travers 2 exemples comment utiliser ce script.

La lecture d’informations :

Ce script permet de récupérer un nombre élevé de données du boitier Server de la Freebox Révolution. De son adresse IP publique au type de formatage du disque interne en passant par le numéro de série (pratique car cela évite d’aller derrière le boitier essayer de le lire surtout quand elle est dans une baie) ou l’état du téléphone (au repos, sonne, décroché…). Toutes ces données sont regroupées dans des méthodes (= des noeuds dans le fichier XML résultant). Chaque méthode représente généralement l’une des pages de configuration (http://mafreebox.freebox.fr).

Par exemple, pour accéder à la partie « NAS » de la page configuration, il faudra lire dans le fichier XML les données associées à la méthode « storage.list », « ftp.get_config » pour la partie FTP, etc.

Ces méthodes possédant un titre assez compréhensible, je vous indique toutefois les pages correspondantes afin de vous y retrouver (certaines pages ne possèdent pas de méthode correspondante, j’y travaille) :

    // Nom de méthode ,         // Page sur mafreebox.freebox.fr correspondante
    "conn.status",                 // Connexion Internet / Status
    "conn.wan_adblock_get",     // Connexion Internet / Configuration / Blocage de la publicité
    "conn.wan_ping_get",        // Connexion Internet / Configuration / Réponse au ping
    "conn.remote_access_get",    // Connexion Internet / Configuration / Accès distant
    "conn.proxy_wol_get",        // Connexion Internet / Configuration / Proxy WOL
    "conn.logs",                // Connexion Internet / Historique
    "lan.ip_address_get",        // Réseau local / Identité / Adresse IP
    "fw.lfilter_config_get",    // Réseau local / Contrôle parental / Etat
    "fw.lfilters_get",            // Réseau local / Contrôle parental / Filtres
    "ipv6.config_get",            // Réseau local / IPv6
    "fw.wan_redirs_get",        // Réseau local / Redirections de ports / Simples
    "fw.wan_range_redirs_get",    // Réseau local / Redirections de ports / Plages
    "fw.dmz_get",                // Réseau local / Redirections de ports / DMZ
    "dhcp.status_get",            // Réseau Local / Serveur DHCP / Configuratiion (état du DHCP)
    "dhcp.config_get",            // Réseau Local / Serveur DHCP / Configuration (configuration du DHCP)
    "dhcp.sleases_get",            // Réseau Local / Serveur DHCP / Baux Statiques
    "dhcp.leases_get",            // Réseau Local / Serveur DHCP / Baux Dynamiques
    "igd.config_get",            // Réseau local / UPnP IGD
    "igd.redirs_get",            // Réseau local / UPnP IGD
    "wifi.status_get",            // Wifi / Etat
    "wifi.config_get",            // Wifi / Configuration + Wifi / Réseau personnel sauf / Wifi / Réseau personnel / Stations
    "wifi.stations_get",        // Wifi / Réseau personnel / Stations
    "storage.list",                // NAS / Périphériques
    "storage.disk_get",            // NAS / Périphériques + données internes Freebox
    "ftp.get_config",            // NAS / FTP
    "share.get_config",            // NAS / Partages Windows
    "phone.status",                // Téléphone / Etat
    "phone.calls",                // Téléphone / Journal d'appels  ------------> A tester
    "lcd.brightness_get",        // Divers / Afficheur
    "system.uptime_get",        // Divers / Systeme
    "system.mac_address_get",    // Divers / Systeme
    "system.serial_get",        // Divers / Systeme
    "system.fw_release_get",    // Divers / Systeme
    "download.list",            // Seedbox / Liste
    "download.config_get"        // Seedbox / Configuration

En appelant la page http://IP_serveur_web/chemin/vers/dossier/freebox.php vous obtenez donc des données au format XML. En voici le début :

<?xml version="1.0" encoding="UTF-8"?>
<!--Donnees de la Freebox Revolution - Boitier Server-->
<mafreebox>
<update>2013-05-26 11:37</update>
<conn.status> 
  <type>rfc2684</type>
  <rate_down>1713</rate_down>
  <bytes_up>547482785</bytes_up>
  <rate_up>1749</rate_up>
  <bandwidth_up>925584</bandwidth_up>
  <bandwidth_down>10499320</bandwidth_down>
  <ip_address>1.2.3.4</ip_address>
  <state>up</state>
  <bytes_down>1265517289</bytes_down>
  <media>adsl</media>
</conn.status>

Ainsi, si vous avez bien compris, pour connaitre l’état de votre connexion Internet, affichée sur la page Connexion Internet / Status (valeur Etat de la connexion), il faudra lire dans les données XML, les balises du noeud « conn.status ». L’état de la connexion étant alors la balise « status » (« up » = « connecté » dans notre exemple).

Appliquons maintenant la théorie par l’exemple : je veux être averti par mon Eedomus quand l’espace libre de mon disque interne devient inférieur à 3Go.

La  page contenant l’état des disques durs est NAS / Périphériques, la méthode correspondante « storage.list ». Je recherche donc dans mon fichier XML le noeud <storage.list></storage.list> et j’obtiens « quelques » données :

<storage.list>
    <smart_supported>1</smart_supported>
    <rotation_rate>5400</rotation_rate>
    <model>ST9250311CS</model>
    <smart_enabled>1</smart_enabled>
    <snumber>S2X483E5</snumber>
    <temp_supported>1</temp_supported>
    <firmware>SC16</firmware>
    <drive_ident/>
    <type>internal</type>
    <total_bytes>250059350016</total_bytes>
    <connector>0</connector>
    <table_type>msdos</table_type>
    <idle>0</idle>
    <state_data/>
    <state>enabled</state>
    <internal_bluray>0</internal_bluray>
    <dev_block_count>486328128</dev_block_count>
    <dev_block_size>512</dev_block_size>
    <label>Disque dur</label>
    <str>235,13 GBytes</str>
    <val>235136405504</val>
    <root_free_bytes/>
    <bdev_major>8</bdev_major>
    <phys_block_size>512</phys_block_size>
    <used_bytes>9955094528</used_bytes>
    <str>249,00 GBytes</str>
    <val>249000001536</val>
    <dev_total_bytes/>
    <bdev_minor>2</bdev_minor>
    <fsck_result>no_run_yet</fsck_result>
    <free_bytes>222686408704</free_bytes>
    <source>/</source>
[...]
</storage.list>

L’espace libre (en octets) sur mon disque interne est indiqué par la balise « <free_bytes> ». Le chemin XPath (pour une Eedomus) sera alors /mafreebox/storage.list/free_bytes.

Créons un capteur HTTP :

Petite astuce pour avoir l’espace libre en Go : divisez le résultat du chemin du XPath par 1000000000 😉

NB : Une fréquence de requête à 60mn est suffisante.

Et voilà, les données arrivent immédiatement :

Et sur la page de configuration de la Freebox pour s’assurer qu’on récupère bien la bonne donnée :

Reste plus qu’à faire la règle qui va bien pour nous avertir quand l’espace disque est inférieur à 3Go :

Voilà comment récupérer les données issues du Freebox Server. Alors certes, chaque balise du fichier XML n’est pas documentée et on ne sait pas forcément à quoi elle correspond au premier coup d’œil, mais en s’aidant de la page à laquelle elle se rapporte, son nom est assez explicite pour en déduire sa fonction.

Ce script étant en version 1, il reste encore quelques petits développements pour extraire les données des pages contenant des tableaux (comme l’historique des appels ou de l’état de la ligne).

La commande de la Freebox par une box domotique :

Cette partie là est la plus simple à exploiter. Il suffit d’appeler le script avec le bon paramètre pour effectuer telle ou telle action. Voilà la liste de celles actuellement disponibles :

  • Eteindre la carte wifi : http://IP/freebox.php?do=wifi_off
  • Allumer la carte wifi : http://IP/freebox.php?do=wifi_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
  • Régler la luminosité de l’afficheur LCD à XX% : http://IP/freebox.php?do=lcd&val=XX

D’autres actions devraient être intégrées prochainement.

Voyons avec un exemple comment éteindre la carte wifi et la rallumer simplement.

Créons un actionneur HTTP (pour ma part, j’y regrouperai à terme toutes les commandes de la Freebox) :

Complétons l’onglet Valeurs avec les 2 commandes de gestion du wifi :

La carte wifi active (canal 3) :

 La carte wifi désactivée par l’Eedomus :

 

Il ne vous reste plus alors qu’à créer 2 règles pour activer/désactiver la carte wifi en fonction de vos besoins (pour l’éteindre la nuit ou quand vous êtes absents par exemple). C’est la partie la plus simple, aussi, je vous laisse chercher un petit peu ;-).

 

A propos de Fabien

Touche à tout dans le domaine de l'électronique et l'informatique tant chez moi qu'à mon boulot (réseaux, télécoms, radio, outils de supervision...), j'ai découvert la domotique en 2011. Ayant débuté avec un RFXCOM et un NAS Synology, j'ai testé la Zibase et la Vera lite avant de jeter mon dévolu sur une Eedomus. J'adore :-D

62 commentaires

  1. Excellent article.

    Merci

  2. Bien joué.

  3. Superbe idée.
    Je suis en train de le mettre sur mon Syno.

    J’ai un petit bug au niveau de la gestion des erreurs. (Ligne 82)
    Je crois que c’est du au fait que j’ai une entrée vide dans le retour.

    Une idée?

  4. Effectivement, en mettant en commentaire la classe « phone.calls » dans le fichier freebox.php, je n’ai plus d’erreur.
    De plus, cette classe est marqué « A tester » dans le fichier.

  5. au temps pour moi j’ai fais le gros boulet dans le fichier de config.

  6. Nickel, c’est de la bombe.

  7. Super boulot !!
    Sais tu si il est possible de connaître l état du boitier TV ??

  8. @alcor : Malheureusement non.

    @lecameleon99 : Je regarde la partie phone.calls, c’est vrai que j’avais pas testé de mon côté avec une ligne/tableau vide.

  9. Super article.

    Ca me donne envie de l’intégrer à mon eedomus…

    Seul problème…Je débute avec mon nas et j’avoue me perdre un peu avec toutes les possibilités de l’engin!

    j’ai un syno ds212( que j’utilise pour le partage fichiers en local) mais je n’ai pas trouvé de tuto pour comment héberger les scripts que tu as fais…

    J’ai regardé sur le forum syno mais je vois pas…

    Si quelqu’un veut bien me filer un peu d’aide? ou un lien 🙂

    Merci d’avance

  10. Merci. Mis en place sur mon syno avec une zipabox.

    Je cherchais cette solution depuis un moment.

    Super.

  11. Bon, je n’arrive pas a le faire fonctionner.

    Erreur 500 sur serveur synology et 403 sur raspberry

    Tu parles de fichier htaccess, mais il n’est pas dispo sur ton github. c’est normal ? J’en ai crée un avec le code que tu as mis plus haut mais je ne sais pas si il est complet

    Merci pour ton aide

  12. @Fabien : Ce qui d’autant plus bizarre, c’est que sur la console Free, j’ai pas une page vide. J’ai des appels entrants, et des appels sortants.

    Si je désactive phone.calls, le script fonctionne sans problème.
    Si je le laisse activé, et que je commente les lignes 82-83 du fichier freebox.class.php, (c’est la que ça plante), j’arrive bien au bout du script, mais avec le champs phonne.calls tout vide.

    Si tu as besoin que je teste/valide quelque chose, n’hésite pas.

  13. Ah, si j’avais une Revolution… :p

  14. @philippe : il suffit de placer (via FTP ou File Station) les fichiers dans un sous-dossier du dossier « web » de ton Syno. Ensuite, il te suffit d’appeler l’URL : http://IP_du_Syno/sous_dossier/freebox.php. IL faut que le serveur web soit aussi activé (DSM, panneau de configuration, services web).

    @alcor : C’est corrigé, le .htaccess est disponible sur Github.

    @lecameleon99: j’ai fait le test vite fait hier et même avec une liste d’appels vide, je n’ai pas d’erreur affichée. A tout hasard, quelles sont tes versions de firmware Freebox et de PHP ?

  15. @fabien :
    Firmware Freebox : 1.1.11
    php : 5.3.21 (sur mon synology)

    Le truc, c’est que « normalement », ma liste n’est pas vide. J’ai des appels entrants/sortants sur la console.

  16. Merci
    Je n’arrive pas a le faire fonctionner
    J’ai toujours une erreur 500
    Je pense avoir bien suivi le tuto …

  17. En fait, la partie commande fonctionne (http://192.168.0.16/mafreebox/freebox.php?do=lcd&val=100)

    Juste pour etre sur, si j’appelle dans mon navigateur l’adresse http://192.168.0.16/mafreebox/freebox.php, je dois pouvoir consulter le xml généré par le script ??

    J’ai regardé les droits sur les dossier, modifié mon mot de passe freebox, j’ai la même erreur 500 sur mon synology et sur mon raspberry.

    Si quelqu’un a une piste ..

  18. @alcor : Quel est ton serveur web ?

  19. C’est le serveur web station du synology donc apache 2.2.23 et Php 5.3.21

  20. Je rencontre exactement le même problème que Alcor 🙁
    Erreur 500 lorque j’essai d’acceder a freebox.php et la regle eedomus ne me remonte aucune valeur pour le HDD.

  21. Problème résolu 😉

    Il suffit de mettre la ligne 82 du fichier freebox.php en commentaire:
    // « phone.calls », // Téléphone / Journal d’appels ————> A tester

  22. @Clems Merci, c’est bien cette ligne qui posait problème
    Merci Fabien pour ton travail

    Reste plus qu’a trouver un moyen de remonter ces infos dans ma Vera.

    Si quelqu’un passe par là et maitrise le Lua …

  23. Super et merci ,

    je viens grâce à cette api de mettre en place le suivi du l’espace disque de ma V6 sur ma zibase 😀 .
    Régulièrement les enfants sature le disque. Je vais pouvoir maintenant les alerter automatiquement de supprimer les films qu’ils ont visionner pour libérer le disque par les notifications dès qu’il ne restera plus que 50gO de libre par exemple .

    J’ai juste dû convertir les octets en GO pour que la Zibase puisse capturer l’espace libre ( dépassement de limite ). La Zibase ne peut capturer que des valeur < 32000 !!!

  24. Je me replonge dans le code pour essayer de voir pourquoi cette erreur 500 que sur certains serveurs…

  25. Merci et bravo ,
    Je sais bien mettre un wifi_OFF le wifi se coupe
    Par contre lors du wifi_on cela ne marche j’ai une erreur 500 dans un navigateur connecté en ethernet.
    je suis obliger de repasser sur l’interface et de reactiver le tout.
    quelq’un aurait une idée …
    merci

  26. Bonjour,
    Savez-vous s’il est possible de faire ce genre de choses avec une BBox ?

  27. @cedric et tous ceux qui ont une erreur 500, je viens de mettre à jour les sources, essayez avec cette nouvelle version.

    @thierry : Désolé, mais je pense qu’il n’existe pas (encore) d’API permettant d’interagir (PHP ou autre) avec la Bbox

  28. Bonjour,

    La convention du script PHP est elle envisageable en script Google ?

  29. @Fabien : Merci pour la maj mais tous le temps la meme erreur lors .do=wifi_on erreur 500 par contre le ?do=wifi_off fonctionne correctement ansi que l’appel d ela page freebox.php il m’affiche le detail des paramétre.
    Quelqu’un a ce souci aussi avec la fonction wifi_on ????
    merci d’avance

  30. @stephane : probable, mais je ne code pas en script Google. Par contre, niveau sécurité, c’est pas tiptop.

    @cedric, je regarde ce problème de wifi_on ce soir.

  31. Cédric, peux-tu appeler le script depuis Internet Explorer (commande wifi_on) en ayant au préalable réglé cette option :
    OUTILS
    OPTIONS INTERNET
    Onglet « Avancés »
    Dans la liste des Paramètres, chercher « Navigation »
    Décocher la case « Affichez des messages d’erreur HTTP simplifiés ».
    cliquez sur APPLIQUER

    Tu devrais avoir un message d’erreur plus explicite.

  32. Un autre test à faire en renommant temporairement le fichier .htaccess.

  33. Bonjour Fabien,

    Super boulot, mais j’ai du mal à faire fonctionner ton script (je ne connais rien en PHP, mais si je comprends, ça peut aller plus vite 😉
    Bref, j’utilise WAMP sur Windows Server 2011.
    J’ai téléchargé tous tes fichiers (dont les 2 dernières mises à jour)
    J’ai modifié le fichier mafreebox.cfg en y remplaçant « votremotdepasse » par « le pot de passe qui me permet de me connecter en local à ma Freebox » – Par contre, le fichier mafreebox.cfg ne ressemble en rien à ton exemple…
    J’ai modifié le fichier .htaccess. (pour les premiers tests) comme celà :

    Order Deny,Allow
    # Deny from all
    # Pour autoriser toutes les machines du réseau 192.168.0.0 (par exemple)
    Allow from 192.168.0.0/255.255.255.0
    # Pour autoriser uniquement la box domotique avec l’IP 192.168.0.16 (par exemple)
    # Allow from 192.168.0.16/255.255.255.255

    J’ai copié les 4 fichiers .htaccess freebox.class.php freebox.php et mafreebox.cfg dans le répertoire www de mon serveur WAMP. J’ai redémarré mon serveur WAMP.

    J’ai créé les capteurs dans le eedomus comme indiqué, mais je n’ai aucune remontée d’info pour le statut de la connexion et ni pour la place libre sur le disque.
    Je dois me tromper quelquepart, mais où ??? Je suis certain que c’est dans les 2 fichiers de config mafreebox.cfg et .htaccess.

    Help ?!
    Merci d’avance.

  34. Bonjour,

    J’ai continué mes tests ce matin…
    J’ai remarqué que le fichier htaccess était précédé d’un point (.)
    J’ai donc renommé le fichier htaccess en .htaccess et là, plus moyen d’avoir accès à mon serveur PHP (erreur 500)
    Je renomme le fichier .htaccess en htaccess et là, le serveur PHP refonctionne ?!
    Bref, c’est la galère 🙁

  35. C’est normal. Le fichier htaccess doit être précédé d’un . pour être utilisé par le serveur.

    Si avec le point tu as une erreur 500 c’est que le problème provient du .htaccess (ce que je me doutais depuis hier).

    Remplace le contenu de ton fichier .htaccess par ces 2 lignes et dis moi ce que ca donne :

    Order Allow,Deny
    Allow from 192.168.0.0/255.255.255.0

  36. Merci de ta réponse.

    J’ai donc créé un autre fichier .htaccess contenant uniquement les lignes :
    Order Allow,Deny
    Allow from 192.168.1.0/255.255.255.0

    (Mon réseau est en 192.168.1.0/24)

    J’ai copié ce fichier dans le répertoire www de WAMP et là : plus de plantage du serveur WAMP 🙂

    En ce qui concerne l’appel du script depuis mon navigateur, à savoir 192.168.1.48\freebox.php
    j’ai bien un fichier XML qui s’affiche (ligne 1 jusqu’à 183).
    Mais toujours rien dans l’eedomus, sauf le message d’erreur suivant :

    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#%2 […]

    N'y a t'il pas une commande html que je puisse lancer pour vérifier que ça fonctionne ou un fichier log à consulter pour voir où ça "merdouille" ?

    Merci.

  37. DomotiFred : La suite sur le forum eedomus http://forum.eedomus.com/viewtopic.php?f=12&t=1077

  38. Bon alors moi j’ai cette erreur à partir de mon Syno :

    Fatal error: Uncaught exception ‘Exception’ with message ‘Pas de cookie retourné !’ in /volume1/web/apifreebox/freebox.class.php:115 Stack trace: #0 /volume1/web/apifreebox/freebox.class.php(29): FreeboxClient->recuperer_cookie() #1 /volume1/web/apifreebox/freebox.php(74): FreeboxClient->__construct(‘http://mafreebo…’, ‘freebox’, ‘Monmotdepasse’) #2 {main} thrown in /volume1/web/apifreebox/freebox.class.php on line 115

    J’ai fait un chown root sur tout les fichiers du script et un chmod 777 pour être sûr mais apparement ce n’est pas un problème de droits.

    Quelqu’un a-t-il une idée s’il vous plait ?

  39. Mes problèmes sont résolus (merci de l’aide précieuse de Fabien).

    Installation du script freebox.php de Fabien dans le cas de l’utilisation sur Windows 2011 64bits SP1 US avec Wamp Server 5.3 disponible ici :
    http://www.wampserver.com/#wampserver-64-bits-php-5-3

    Hypothèses :
    @IP du Serveur php local : 192.168.1.48
    Versions utilisées : Apache 2.2.22 – Mysql 5.5.24 – PHP 5.3.13 XDebug 2.1.2 XDC 1.5 PhpMyadmin 3.4.10.1 SQLBuddy 1.3.3 webGrind 1.0

    Bien s’assurer de télécharger le dernier fichier zippé sur https://github.com/DjMomo/apifreebox/archive/master.zip
    Dézipper master.zip dans le répertoire WAMP\www
    Vous devez avoir les 5 fichiers suivants :
    freebox.php
    freebox.class.php
    mafreebox.cfg
    .htaccess
    README.md

    Modifier les fichiers de config, l’idéal étant d’utiliser Notepad++ pour le faire :
    http://notepad-plus-plus.org/fr/news/no … lease.html

    Dans WAMP, activer l’extension PHP curl (si elle n’est pas déjà activée)

    Il y a une incompatibilité avec une dll livrée de base avec Wamp et l’environnement Windows 7/64b.
    http://www.webmastertoulouse.com/20-dev … erver.html

    Il faut donc remplacer cette dll « php_curl.dll » par celle disponible au téléchargement (php_curl-5.3.13-VC9-x64.zip) sur le lien suivant dans le cas de l’utilisation de la version 5.3 de Wamp :
    http://www.mediafire.com/file/qwgdzgcct … C9-x64.zip

    Arrêter les services Wamp

    Télécharger ce fichier zip de correction de bug WAMP
    Sauvegarder l’ancienne dll \wamp\bin\php\php5.3.13\ext\php_curl.dll en php_curl.sav
    Copier la DLL 5.3 dans le répertoire \wamp\bin\php\php5.3.13\ext
    Relancer les services Wamp et mettre le serveur online
    Lancer le script freebox.php (http:\\192.168.1.48\freebox.php)
    Vous devez voir les infos de la Freebox remonter à l’écran 🙂

    Vous pouvez maintenant créer les capteurs et les actionneurs http qui vont bien dans l’eedomus

  40. Bon j’ai de mon côté avancé un peu aussi, cela fonctionne j’ai bien le retour du xml quand je passe par les fonctions de mon navigateur et j’arrive à éteindre le wifi.

    Le truc maintenant c’est que je voudrais que ce soit le Syno lui-même qui lance la page php avec les bons paramètres si c’est possible.

    Pour le moment j’ai le petit script shell suivant qui s’exécute bien :

    #!/bin/sh

    cd /volume1/web/apifreebox

    php freebox.php

    J’ai le retour du xml dans la console donc ça fonctionne mais ce qui m’intéresse est d’éteindre puis rallumer le module wfi en temps voulu par le Syno.

    Et je n’arrive pas ici à passer le paramètre ?do=wifi_off

    Quelqu’un connait-il la syntaxe s’il vous plaît ?

    Merci en tous les cas pour ce script php c’est top toutes les possibilités disponibles avec et peut-être même bientôt activation/désactivation des femtocells…

  41. sh tonscript.sh do=wifi_off
    Ou sh tonscript.sh do=wifi_on

    Et dans ton script :

    php freebox.php?$1

    Et pour les Femto, ils seront bien activables/desactivables depuis l’interface de gestion, donc depuis mon script, mise à jour la semaine prochaine dès que je l’aurais reçu,

  42. Merci beaucoup pour ta réponse, je viens d’essayer mais dans ce cas de figure il cherche à ouvrir le fichier nommé « freebox.php?do=wifi_of »

    Homeserver> sh wifi_off.sh do=wifi_off
    Could not open input file: freebox.php?do=wifi_off

    Du coup j’ai aussi essayé de modifier le case par défaut comme ceci default:$methode= »wifi_off »; dans ton script et du coup de continuer à appeler le fichier d’origine freebox.php quitte à appeler au final 2 scripts, un pour le ON l’autre pour le OFF mais apparemment il ne le prend pas…

    Je continue mes recherches.

  43. J’ai trouvé mon erreur, dans ton script mets ça :

    php freebox.php — ‘$1’

  44. La commande passe sans erreur de syntaxe, j’ai le xml qui défile dans putty comme si je lançais le freebox.php tout seul.

    On dirait que la commande ?do=wifi_off n’est pas prise en compte.

    Encore merci pour ton aide.

  45. Mise à jour du 27/06 : possibilité d’appeler le script freebox.php au travers d’un script bash avec ou sans arguments.

    « sh script.sh do=wifi_off » par exemple.

    Fichier freebox.php mis à jour.

  46. David, ça devrait fonctionner maintenant si tu télécharges la dernière version du fichier.

  47. Yes ! génial ça fonctionne à merveille ! un GRAND MERCI à toi pour ton implication et ta réactivité !

    Bon et du coup il est où ton paypal pour faire un don bien mérité 😉

  48. Bon la mauvaise news c’est que Free vient de déployer une mise à jour majeure sur la révolution qui à tout cassé RRRrrrrr Free et la portabilité des fois c’est pas ça !

  49. Arf, je regarde ça cet aprem.

  50. « API JSON RESTful, documentée et ouverte  » –> cool, ca va être gérable.

  51. Je rectifie, apparemment tout est fonctionnel, la mise à jour de ma FB Serveur ne devait pas encore être tout à fait terminée ;-s

  52. Bonjour,
    Je voudrais savoir si il y a moyen de le faire sur la zipabox?
    Je te remercie par avance.
    Cordialement

  53. Bonjour,
    Je ne sais pas si c’est dû à la nouvelle version du firmware de la Freebox 6, mais j’ai cette erreur lorsque je lance le freebox.php : Fatal error: Call to undefined function curl_init() in C:\wamp\www\freebox.class.php on line 90

    Une petite idée ?

    Cordialement,
    Marc

  54. bonjour,

    si ca peut faire avancer le schmilblik depuis le changement de firmware, ne se connecte plus à la freebox (via tache CRON sur debian) :
    curl: (7) couldn’t connect to host
    merci
    fred

  55. Je rectifie : j’avais un problème avec nginx. J’ai le même message d’erreur que Marc (on line 90)

  56. bonjour
    Pensez vous que la freebox V7 embarquera des fonctions domotique ? Pouvoir controler du zWave par exemple ?
    Par avance merci
    Martial

  57. Bonjour,

    Je n’ai malheureusement pas le don de voir ce que pensent les personnes, et encore moins X. Niel.
    Donc faudra patienter jusqu’à sa sortie.
    Mais si elle doit rester l’élément central du foyer, elle devra nécessairement intégrer des fonctions de domotique.

  58. Salut,

    Pour ceux qui ont l’erreur « …on line 90 » c’est qu’il manque le packet « php5-curl » à installer pour votre serveur PHP.

    Une petite recherche sur Google : Fix the « call to undefined function curl_init » error in PHP

    Merci pour le script, il fonctionne toujours avec la version firmware d’aujourd’hui sauf quelques méthodes qui ne sont plus bonnes (ou qui ne s’appellent plus pareil), comme l’adblock et deux autres.

    A+
    Ludo

  59. Bonjour Ludo,

    Merci pour ton retour concernant les modifications de quelques méthodes, je vais mettre à jour cela.

  60. bonjour, il me semble que la dernière version 2.1 de la FB bloque la manip…
    Depuis la maj, ma box ne commande plus l’arrêt/marche du wifi ??

  61. En effet, le script ne fonctionne plus depuis la mise à jour
    Une idée des modif à apporter?

  62. Après queques recherche, le nouveau lien GitHub pour ceux que cela intéresse
    https://github.com/DjMomo/ClassePhpFreebox

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*

Revenir en haut de la page