Forum eedomus
https://forum.eedomus.com/

Piloter la NeufBox 4
https://forum.eedomus.com/viewtopic.php?f=15&t=1010
Page 1 sur 1
Auteur:  Drop [ 16 Avr 2013 15:55 ]
Sujet du message:  Piloter la NeufBox 4

Il est possible de piloter la NB4 par la eeDomus

Il faut d'abord ouvrir (rooter) la 9box (cf. : http://www.neufbox4.org/blog/archive/25 ... ll-usb-v16)

Ensuite, démarrer le démon HTTPD de la box et écrire des scripts CGI (activer le mod_cgi) pour commander la box :

"wlan stop" pour arrêter le wifi
"wlan start"
"reboot" pour redémarrer la box
etc
...

Il faut ensuite écrire un actionneurs HTTP qui envoie une requête GET sur la NB4 pour déclencher la commande voulue.

Il est ensuite possible d'écrire des capteurs HTTP pour connaitre l'état du Wifi : il faut écrire un CGI qui renvoie le code XML qui sera exploité par le XPATH de la eeDomus.

Commandes NB4 :
"status show service_wlan_status" qui renvoie "up" ou "down"

Pièces jointes:
photo.JPG
photo.JPG (76.4 Kio) Consulté 14188 fois
Auteur:  Orangina_L [ 16 Avr 2013 20:02 ]
Sujet du message:  Re: Piloter la NeufBox 4

Pas possible de le faire avec la NB5 ?
Auteur:  Drop [ 17 Avr 2013 07:14 ]
Sujet du message:  Re: Piloter la NeufBox 4

Pour la NB5, je ne sais pas trop ce qu'il existe. Il le semble qu'il y a qq chose pour la NB6.
Le mieux est de poster sur le forum neufbox4.org pour poser la question a Efixo ou FXmx86.
Auteur:  Orangina_L [ 17 Avr 2013 14:53 ]
Sujet du message:  Re: Piloter la NeufBox 4

En fait je voulais parler de la NB6 ! je vais donc aller faire un tour sur neufbox4.org, Merci.
Auteur:  sebozorde [ 19 Avr 2013 21:53 ]
Sujet du message:  Re: Piloter la NeufBox 4

Bonjour,

J'utilise l'API REST de la neufbox compatible NB4,NB5,NB6.
La documentation est disponible sur http://dev.efixo.net/doc/api-rest.html.

Par exemple, je récupère la synchro de ma ligne ADSL.
J'ai crée un HTTP capteur :
Unité : Kbps
Type de données : Nombre Décimal
URL : http://192.168.1.1/api/1.0/?method=dsl.getInfo
XPATH : //dsl/@rate_down
Auteur:  dplein [ 20 Avr 2013 07:54 ]
Sujet du message:  Re: Piloter la NeufBox 4

Merci les gars pour les recherches que vous faites !!!

Si vous avez d'autres trucs pour la 9box & l'eedomus, n'hésitez pas à en parler....

Il faut maintenant que je me penche sur le rootage de la 9box...
Auteur:  Drop [ 22 Avr 2013 09:26 ]
Sujet du message:  Re: Piloter la NeufBox 4

Il y a en effet pas mal de fonctions dans l'API REST de la NB4.

Or, seules les API publiques (ne nécessitant pas d'authentification) sont simples à mettre en œuvre.

Pour l'appel des API "privées", je n'ai pas réussi à trouver comment faire pour récupérer le token et le renvoyer (avec le calcul de hash intermédiaire...). Du coup, le plus simple est de se recréer ses propres fonctions cgi sur le serveur http de ob4-usb.
Auteur:  Drop [ 23 Avr 2013 11:04 ]
Sujet du message:  Re: Piloter la NeufBox 4

J'en profite pour publier les scripts que je n'avais pas eu le temps de poster....

Donc :

==> Pour tester l'état du wifi :

wlan_status.cgi :
Code : Tout sélectionner
#!/bin/sh                                                                       
# echo "Content-type: text/html"                                               
# echo ""                                                                       
echo -e "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";                           
echo -e "<rsp stat=\"ok\" version=\"1.0\">";                                   
echo -e "  <wlan status=\"$(status get service_wlan_status)\" />";             
echo -e "</rsp>"; 


La requête pour le capteur HTTP :

http://neufbox/cgi-bin/wlan_status.cgi
Chemin XPATH : /rsp/wlan[1]/@status
Définir en "Liste de valeur"

Les valeurs possibles retournées sont : "up" ou "down"


==> Pour envoyer une commande d'arrêt ou démarrage du wifi :

wlan_cmd.cgi :
Code : Tout sélectionner
#!/bin/sh
case $QUERY_STRING in                                                           
        wlan_stop )     $(wlan stop)                                           
                        $(ledctl mode disable)                                 
        wlan_start )    $(wlan start)                                           
                        $(ledctl mode control)                                 
esac


La requêtes pour l'actionneur HTTP :

http://neufbox/cgi-bin/wlan_cmd.cgi
Paramètre d'arrêt wifi : ?wlan_stop
Paramètre de démarrage wifi : ?wlan_start

J'ai ajouté également l'extinction de la LED de service à l'arrêt du wifi.
Auteur:  Drop [ 26 Avr 2013 12:46 ]
Sujet du message:  Re: Piloter la NeufBox 4

Ci-dessous, un petit script qui peut être appelé par un capteur HTTP et qui retourne :

-> le dernier numéro de téléphone recu sur la NB4 (caller=entrant)
-> le dernier numéro composé par la NB4 (dialer=sortant)

Ceci pourra permettre par exemple de déclencher une action sur réception d'un appel en provenance d'un numéro particulier.


Code : Tout sélectionner
#!/bin/sh
# echo "Content-type: text/html"
# echo ""
echo -e "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
echo -e "<rsp stat=\"ok\" version=\"1.0\">";
echo -e "  <caller date=\"$(cat /var/log/voip_events.log | grep caller | tail -1 |  awk  '{print $1,$2,$3}')\" number=\"$(cat /var/log/voip_events.log | grep caller | tail -1 |  awk  '{print substr($10,14,10)}')\" />";
echo -e "  <dialer date=\"$(cat /var/log/voip_events.log | grep DialString | tail -1 |  awk  '{print $1,$2,$3}')\" number=\"$(cat /var/log/voip_events.log | grep DialString | tail -1 |  awk  '{print $7}')\" />";
echo -e "</rsp>";



Pour les XPATH à utiliser :

Dialer :
Code : Tout sélectionner
concat(/rsp/dialer/@date,' : ',substring(/rsp/dialer/@number,1,2),' ',substring(/rsp/dialer/@number,3,2),' ',substring(/rsp/dialer/@number,5,2),' ',substring(/rsp/dialer/@number,7,2),' ',substring(/rsp/dialer/@number,9,2))


Caller :
Code : Tout sélectionner
concat(/rsp/caller/@date,' : ',substring(/rsp/caller/@number,1,2),' ',substring(/rsp/caller/@number,3,2),' ',substring(/rsp/caller/@number,5,2),' ',substring(/rsp/caller/@number,7,2),' ',substring(/rsp/caller/@number,9,2))
Auteur:  stef2cr [ 05 Mai 2013 13:09 ]
Sujet du message:  Re: Piloter la NeufBox 4

Bonjour,
Merci Drop pour cette info, mais on le mets où ce code ??? Je suis perdu. :oops:
Auteur:  Drop [ 06 Mai 2013 17:30 ]
Sujet du message:  Re: Piloter la NeufBox 4

Salut,
Pour faire exécuter des scripts sur la NB4, il faut que le démon httpd soit demaré et accessible.
Il faut également activer les CGI (cf. forum neufbox.org).
On place alors les scripts dans le répertoire cgi du serveur http.
Auteur:  Nico33 [ 28 Juin 2013 17:15 ]
Sujet du message:  Re: Piloter la NeufBox 4

Salut,
Je tente de modifier des paramètres avec l'API REST mais je n'arrive pas à faire fonctionner les POST avec ma eedomus.
J'arrive à faire les GET publics ou privés.
Il me retourne : method inconnue.
Quelle est la syntaxe avec le token à saisir pour le ddns.forceUpdate par ex ?

Merci d'avance.

Nico33
Auteur:  Drop [ 02 Juil 2013 14:03 ]
Sujet du message:  Re: Piloter la NeufBox 4

Salut !
Malheureusement, je ne suis jamais arrivé à envoyer une requête REST privée. Je n'ai pas compris comment récupérer un token pour pouvoir le présenter comme authentifiant dans les requêtes suivantes.
Si tu as qq infos sur les requêtes que tu as faites qui marchent et celles qui ne marchent pas, je suis preneur, je regarderai en détail.

a+
Auteur:  Nico33 [ 02 Juil 2013 17:15 ]
Sujet du message:  Re: Piloter la NeufBox 4

Alors j'arrive bien entendu à récupérer tout ce qui est public comme montré plus haut par sebozorde.
Pour ce qui est privé, j'obtiens mon token facilement car je n'ai pas de hash à faire vu que j'ai désactivé l'auth sur la nb4. Même si ce n'est pas complètement automatisé ... :?
Pour obtenir un token :
Url : http://192.168.1.1/api/1.0/?method=auth.getToken
Xpath : //auth/@token

Je récupère le token et je fais un check token avec :
Url : http://192.168.1.1/api/1.0/?method=auth ... 1bef068631 (donné par la commande précédente)

A partir de là, je peux interroger avec des commandes privées comme :
Url : http://192.168.1.1/api/1.0/?method=voip ... 1bef068631

etc ...
Par contre, je n'arrive pas à faire de POST, il me répond method inconnue.
Page 1 sur 1 Le fuseau horaire est UTC+1 heure