Closed jec44 closed 3 years ago
Bonjour,
Il se semble pas y avoir d'authentification sur cette API. 1) Pouvez vous essayer d'exécuter l'appel en dehors des scripts : via le plugin "Postman" dans Chrome par exemple. 2) Est ce que la commande "curl" est bien exécutable par l'utilisateur linux qui exécute le script ? (normalement il doit être ici : /usr/bin/curl)
Le résultat chez moi :
pi@domatique:~ $ ls -l /usr/bin/ | grep curl -rwxr-xr-x 1 root root 157080 nov. 4 2016 curl
Bonjour, J'ai essayé POSTMAN , l'erreur d'authentification est la même ! la commande CURL est bien exécutable, j'ai d'autres script dont le tien pour la Freebox qui fonctionnait très bien !
admin@DSBOX:/tmp$ ls -l /usr/bin/ | grep curl -rwxr-xr-x 1 root root 108352 Nov 10 16:36 curl
Maintenant je suis sur une Livebox, fibre oblige, et j'essaye tant bien que mal a obtenir le même résultat dans Domoticz. J'ai donc copié ton script sans aucune modification (à part les variables) et j'ai cette erreur :
[string "commandArray = {} ..."]:34: bad argument #1 to 'pairs' (table expected, got nil)
Quand je regarde le fichier peripherique.tmp {"status":null,"errors":[{"error":13,"description":"Permission denied","info":"Devices"}]}
Merci de ton aide
Bonjour,
Donc, c'est bien l'API elle même qui a une authentification. Est ce que vous pouvez tester en ajoutant le login/mot de passe Admin de la Livebox en tant qu'authentification BasicAuth dans Postman ?
===
Maintenant je suis sur une Livebox, fibre oblige,
Je vois qu'on a le même parcours :)
Bonjour, sur les livebox4 la requête http://livebox.home/ws/Devices:get nécessite maintenant une authentification fibre oblige j'ai moi aussi abandonné la freebox
Merci pour ces informations. Comme je n'ai pas d'authentication sur la version de Livebox, je ne peux guère vous aiguiller. @jec44 @papo-o Est ce bien avec le compte "admin" que l'API est accessible ? Elle est du type HTTP BasicAuth ?
oui c'est bien le compte admin qui est utilisé c'est la même authentification qui permet la récupération des données DSLStats, MIBs, WANStatus et Device info j'arrive à récupérer les infos Devises via ce script bash auquel j'ai ajouté la requête curl suivante :
getDevices=
curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"Devices\",\"method\":\"get\",\"parameters\":{}}" http://$myLivebox/ws
mais je n'est pas réussi à inclure les curl dans ton script lua
De retour sur Livebox 5 / Fibre, l'authentification a bien changé :
POST
http://livebox/ws
Content-Type
: application/x-sah-ws-4-call+json
Authorization
: X-Sah-Login
{
"service": "sah.Device.Information",
"method": "createContext",
"parameters": {
"applicationName": "so_sdkut",
"username": "admin",
"password": "<Mettre le mot de passe admin>"
}
}
La réponse donne :
{
"status": 0,
"data": {
"contextID": "hT88gPQJZArD0lNK5ZqfEbKjOa8UgMBpcUk3x0GxwOFLbL5IRNDTdU6dNRgSXDLX",
"username": "admin",
"groups": "http,admin"
}
}
Pour utiliser les api, il suffit ensuite d'injecter le ContextId dans les requêtes suivantes :
Exemple pour le Statut WAN
POST
http://livebox/ws
Content-Type
: application/x-sah-ws-4-call+json
X-Context
: <insérer le contextId ci dessus> {
"service": "NMC",
"method": "getWANStatus",
"parameters": { }
}
Bonjour, Pour le script Status Network avec la livebox, j'ai un message "permission denied" quand je lance local commandeurl="curl -s -X POST -H 'Cache-Control: no-cache' -d '' " .. apiLiveBox .. "/sysbus/Devices:get"
Comment résoudre ce problème ? Merci