Je viens de sortir un SDK – short edition – sous NodeJS pour la Freebox: node-freebox-sdk.
Actuellement, il n’y a que la gestion du wifi de disponible.
Mon objectif étant de pouvoir activer / désactiver le WiFi de notre domicile à certaines heures.
Sur linuxfr.org – 404 : Copier sur Github : bash-freebox-wifi-manager – , quelqu’un a rendu disponible une solution pour faire cela en utilisant le shell & curl.
Cette solution fonctionne très bien, mais je souhaitais développer un peu avec NodeJS.
Voyons comment mettre en place la solution NodeJS avec une tâche planifiée.
Nous allons commencer par installer le SDK Freebox via npm.
1 | npm install freebox-sdk |
Ensuite, nous allons créer l’application /home/john.doe/freebox-wifi-manager
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | var Freebox = require("freebox-sdk"); var freebox = new Freebox({ password: "", wifiChannel: 11, wifiHtMode: "disabled" //disabled, 20, 40_lower, 40_upper }); var command = process.argv[2]; freebox.on("connect", function() { switch (command) { case "wifi:on" : freebox.wifiOn(function() { console.log("wifi is on"); }); break; case "wifi:off" : freebox.wifiOff(function() { console.log("wifi is off"); }); break; case "wifi:status" : freebox.wifiStatus(function(status) { console.log("wifi is " + (status.active ? "on" : "off")); }); break; default: console.log("command unknown"); } }); freebox.on("error", function(message) { console.log("error: " + message); }); freebox.connect(); |
Vous pouvez tester si cela fonctionne
1 2 3 4 5 | chmod +x /home/john.doe/freebox-wifi-manager node /home/john.doe/freebox-wifi-manager wifi:on node /home/john.doe/freebox-wifi-manager wifi:status node /home/john.doe/freebox-wifi-manager wifi:off node /home/john.doe/freebox-wifi-manager wifi:status |
Pour finir,
Mise en place du crontab qui permet d’allumer le WiFi en semaine de 7h à 9h, de 17h à 00h et le weekend. Le reste du temps, le WiFi sera désactivé.
1 2 3 4 5 | # m h dom mon dow command 0 7 * * 1-6 node /home/john.doe/freebox-wifi-manager on 0 9 * * 1-5 node /home/john.doe/freebox-wifi-manager off 0 17 * * 1-5 node /home/john.doe/freebox-wifi-manager on 0 0 * * 0-5 node /home/john.doe/freebox-wifi-manager off |
Mais tu installes ça sur la freebox ou sur ton serveur unix ?
Pour le coups, je l’ai installé sur mon NAS.
Mais il faut en effet un environnement Linux disponible.
Armetiz.
ah ok … synology ?
Nop, ReadyNAS Ultra 2.
En ce moment, je lutte pour installer VirtualBox dessus..
Armetiz
Merci pourle tuto. Pourrais-je savoir ce qui t’a motivé pour mettre en place cette désactivation automatique du wifi?
P.S: J’ai récemment entendu parler d’expériences cherchant à prouver les effets néfastes des ondes WiFi.
Super post !
Par contre ça implique d’avoir un ordi allumé tout le temps et connecté par cable… :/
“il faut en effet un environnement Linux disponible”
Ah ? pourtant node.js fonctionne très bien sous windows … Ne suffit il pas de remplacer crontab par son équivalent ?
Il suffit en effet d’un environnement NodeJS disponible et d’utiliser un système de planification.
Je m’étais arrêté à “Environnement disponible”.
@rannik J’ai pensé la même chose en lisant le tuto. Merci pour la précision @Thomas et pour le tuto.
Sympatique asutance pour Freenaute
Super tuto !
Grand merci pour votre post.
Super post ! Merci beaucoup c’est très intéressant
Bonjour, j’avais réussi à mettre en place sur mon NAS Synology le script de :
http://linuxfr.org/forums/programmationshell/posts/activerdésactiver-le-wifi-dune-freebox-v6-depuis-le-réseau-local
mais depuis hier (mise à jour firmware), ça ne fonctionne plus…
Y a t’il eu un changement de commande dans la freebox ?
Je ne comprends pas bien comment on installe votre SDK freebox.
Bien cordialement
Yvan
@yvan: Tout pareil ! Et la page est morte
@yvan & @Seb,
Vous trouverez le code Bash sur github : https://github.com/armetiz/bash-freebox-wifi-manager
Armetiz.
bonjour,
j’ai utilise ce script pendant plusieurs mois sans souci. depuis la mise a jour de la fbx de fin janvier, il ne fonctionne plus. pourtant la page pour acceder au wifi sur le serveur, n’a pas changé. quelqu’un saurait quel parametre a changer ?
merci de votre aide
@fredclo, en effet il y avait un soucis.
Depuis une mise à jour, la Freebox envoie un jeton CSRF dans le Header de la réponse lors du “login”.
Il faut réutiliser ce Jeton CSRF lors des appels suivants.
Voici le commit de correction : https://github.com/armetiz/node-freebox-sdk/commit/be7a40e6ffc80483bfc3804f3c3cb459294c0ac9
Bonjour,
merci pour la correction qui fait de nouveau fonctionner le programme. Pourriez-vous svp indiquer quoi changer dans le script, sans avoir à utiliser node.js (j’utilise un dockstar, et je trouve node.js trop lourd). Le script bash me parait plus simple et plus léger.
Pouvez-vous ?
merci
fred
je précise juste que si je vous le demande, c’est que “jeton csrf”…, c’est du chinois pour moi
Bonjour @Fredclo, je regarde début de semaine.
Waw, on l’installe comment sur le NAS
bonjour,
le tuto est super cela fonctionne sur ma machine sous ubuntu.
en revanche, j’ai voulu l’installer sur un raspberry PI qui me sert de serveur (distrib squeezeplug), quand j’arrive à l’étape :
npm install freebox-sdk
j’ai droit à une série d’erreur…
Une idée ? pas compatible ?
merci
@fab, vérifie la version de NodeJS qui est installée sur ton RaspBerry Pi. Pour fonctionner, Freebox-SDK nécessite une version de Node >= 0.8.8
merci thomas, je regardais justement et je voyais que j’avais la dernière version stable… en 0.6..
donc je fouine et trouve une version 0.8.11
je m’y mets !