Piloter la NeufBox 4

Capteurs et actionneurs HTTP

Piloter la NeufBox 4

Messagepar Drop » 16 Avr 2013 15:55

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é 9063 fois
Drop
 
Messages : 19
Inscription : 10 Avr 2013

Re: Piloter la NeufBox 4

Messagepar Orangina_L » 16 Avr 2013 20:02

Pas possible de le faire avec la NB5 ?
Orangina_L
 
Messages : 125
Inscription : 08 Avr 2013

Re: Piloter la NeufBox 4

Messagepar Drop » 17 Avr 2013 07:14

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.
Drop
 
Messages : 19
Inscription : 10 Avr 2013

Re: Piloter la NeufBox 4

Messagepar Orangina_L » 17 Avr 2013 14:53

En fait je voulais parler de la NB6 ! je vais donc aller faire un tour sur neufbox4.org, Merci.
Orangina_L
 
Messages : 125
Inscription : 08 Avr 2013

Re: Piloter la NeufBox 4

Messagepar sebozorde » 19 Avr 2013 21:53

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
sebozorde
 
Messages : 3
Inscription : 03 Mars 2013

Re: Piloter la NeufBox 4

Messagepar dplein » 20 Avr 2013 07:54

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...
Irradié.... RAC v2
dplein
 
Messages : 1629
Inscription : 28 Oct 2012
Localisation : Lorraine

Re: Piloter la NeufBox 4

Messagepar Drop » 22 Avr 2013 09:26

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.
Drop
 
Messages : 19
Inscription : 10 Avr 2013

Re: Piloter la NeufBox 4

Messagepar Drop » 23 Avr 2013 11:04

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.
Drop
 
Messages : 19
Inscription : 10 Avr 2013

Re: Piloter la NeufBox 4

Messagepar Drop » 26 Avr 2013 12:46

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))
Drop
 
Messages : 19
Inscription : 10 Avr 2013

Re: Piloter la NeufBox 4

Messagepar stef2cr » 05 Mai 2013 13:09

Bonjour,
Merci Drop pour cette info, mais on le mets où ce code ??? Je suis perdu. :oops:
stef2cr
 
Messages : 56
Inscription : 18 Mai 2012

Re: Piloter la NeufBox 4

Messagepar Drop » 06 Mai 2013 17:30

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.
Drop
 
Messages : 19
Inscription : 10 Avr 2013

Re: Piloter la NeufBox 4

Messagepar Nico33 » 28 Juin 2013 17:15

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
Nico33
 
Messages : 1013
Inscription : 14 Juin 2013

Re: Piloter la NeufBox 4

Messagepar Drop » 02 Juil 2013 14:03

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+
Drop
 
Messages : 19
Inscription : 10 Avr 2013

Re: Piloter la NeufBox 4

Messagepar Nico33 » 02 Juil 2013 17:15

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.
Nico33
 
Messages : 1013
Inscription : 14 Juin 2013


Retour vers Requêtes HTTP

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)