Aller au contenu

bbox - utilisation API pour un reboot


Messages recommandés

Hello !

 

j'aimerai savoir si qqun a déjà utilisé l'API d'une bbox ?

 

le but étant de faire un reboot de la bbox toutes les nuits.

(le plan B sera un wall plug sur son alim... mais si on peut faire un peu plus en finesse... :D

 

j'ai fouillé sur le net et j'ai trouvé ça

 

https://api.bbox.fr/doc/apirouter/index.html

 

mais je sais pas si c'est à jour, et semble restreint à des développeurs pro :mellow:

J'ai testé quelques URL vite fait (celles sans paramètres)

et j'ai des réponses... Mais elles sont rares...

Et là manière de s'authentifier (password=xxxxxxx) semble assez "simpliste" et bien sûr ne marche pas.

 

j'ai l'impression d'être le seul à vouloir faire ça...

 

si vous avez des idées, je suis preneur :) 

 

merci à vous !!

 

 

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

Vous n'êtes absolument pas le seul à vouloir faire ça. En ce qui me concerne je voulais un peu plus mais en le mettant en place en moins de 3 minutes et sans développement...

J'utilise une prise Keep Connect qui peut être programmée pour relancer la box si il y a une coupure internet ou simplement pour relancer la box sur une base régulière.

Le principe est simple. Un site web (Ex. Google.com) est demandé toutes les X minutes. Si le site ne répond pas un second site est demandé (CNN.com). Si aucun des deux ne répond la prise coupe le courant et relance la box. 

 

La prise Keep Connect n'est pas beaucoup plus chère qu'un wall plug et est extrêmement paramétrable. Je peux par exemple entrer le nombre d'essais avant de relancer la box, combien de temps attendre entre deux essais. Aussi, si ma box met 6 minutes à démarrer je vais indiquer qu'il faut attendre 8 minutes après un reset pour faire un nouvel essai sinon je vais avoir des resets en boucle. Vous recevez par SMS ou Email une notification que votre Keep Connect à procédé à une relance de votre box.

 

Pour plus de raffinement dans les paramètres les pros pourront souscrire à un abonnement mais en toute honnêteté pour un utilisateur lambda les fonctionnalités de base sont largement suffisantes.

Modifié par RHODITIS
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

de ce que je vois cela dépend fortement du cloud.

Y a-t-il une API locale, car si je coupe mon modem par leur cloud, je ne pourrai plus le redémarrer à distance.

Est-il possible de lui dire que de (date & heure) à (date et heure) il ne fasse rien (par exemple parce que j'ai été informé d'une coupure internet, et je ne veux donc pas de reboots intempestifs inutiles) ?

Lien vers le commentaire
Partager sur d’autres sites

Lorsque internet est coupé il n'est plus question de cloud : le module est programmé (en interne) pour couper le courant si les deux sites ne répondent pas.

En ce qui me concerne, ma hantise est qu'il faille rebooter la box pendant une absence, donc pendant cette période je le mets sur un essai par heure. 

Il ne m'est jamais arrivé qu'on me prévienne d'une coupure internet mais si cela devait être le cas je laisserais l'automatisme en indiquant qu'après un essai il faut attendre 6 heures par exemple pour ré-essayer.

 

Maintenant, moyennant abonnement on peut accéder à l'appareil et agir sur lui à distance. Je n'ai pas exploré parce que je n'en ai pas besoin. 

Cela fait l'objet d'une seconde vidéo qui explique ce possibilités.

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

merci @RHODITIS, mais je vais encore creuser un peu côté API...

 

Et j'ai trouvé tout ce qu'il me faut.

  1. https://mabbox.bytel.fr/api/v1/login (pour se loguer sur la bbox)
  2. https://mabbox.bytel.fr/api/v1/device/token (pour récupérer un token)
  3. https://mabbox.bytel.fr/api/v1/device/reboot?btoken=le_token_récupéré_précédement (pour demander le reboot)

J'arrive à faire fonctionner exactement comme je veux avec Postman depuis mon poste de dev (windows) :74: 

 

sauf que quand j'essaye de transposé dans un QA ça bug... et je ne sais pas pourquoi !!

Il semblerait y avoir un soucis de certificat, mais alors pourquoi PAS avec Postman... ???

 

voici avec Postman la requête exécutée qui fonctionne très bien :

 

POST /api/v1/login HTTP/1.1
Host: mabbox.bytel.fr
Content-Type: application/x-www-form-urlencoded
Cookie: BBOX_ID=2.1e.6d42.6633487374b0dc5119495cff.a8442c867218f0341777fe038ca005a8c7d8581a
Content-Length: 24

password=blablabla

 

voici ce que je code dans le QA :

 

function QuickApp:login()
    local adresse = "192.168.0.1"  
    local url = string.format("https://%s/api/v1/login", adresse)       

    self.http:request(url, {
        options={
                headers = {
                    ["Content-Type"] = "application/x-www-form-urlencoded",
                    ["Content-Length"] = "24", 
                    ["Host"] = adresse
                    },
                method = 'POST',
                checkCertificate = false,
                data = "password=blablabla"
        },
        success = function(response) self:debug(response.status, json.encode(response)) end,
        error = function(error) self:warning("error:", error) end,
    })
end

 

avec checkCertificate = true (ou sans le checkCertificate), j'ai la réponse suivante : 

 

error: certificate verify failed

 

avec checkCertificate = false, j'ai la réponse suivante :  err 400 (mais dans le retour success)

 

{"headers":{"Content-Type":"text\/html","Connection":"close","Server":"Lighttpd","Content-Length":"345","Date":"Wed, 03 Jul 2024 14:01:54 GMT"},"status":400,"data":""}

 

C'est vraiment étrange...

en plus je dois changer l'adresse car avec Postman, il connait "mabbox.bytel.fr" mais pas la HC3 (obligé de passer par son IP locale)

J'ai du mal à situer l'erreur...

 

Le Header "Cookie" est géré par postman, j'ai essayé de l'ajouté mais ça change rien du tout.

En plus la valeur change à chaque appel.

 

si qqun a une idée ?

 

merci d'avance !

 

 

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

Il y a 21 heures, Kana-chan a dit :

Bonjour,

Dans le header, il n'est pas utile de mettre Content-Length et Host.

Après, est-ce de la data le password ? ou bien un params plutôt ?

 

si je ne mets pas le host et content-length, j'ai une erreur.

pour le password, dans Postman, il est déclaré dans la section "body".

idem, si je le mets ailleurs j'ai une erreur.

Après est ce que le body = data ?

Lien vers le commentaire
Partager sur d’autres sites

C'est un truc de fou !

J'ai essayé en faisant un batch avec windev (toujours sur avec mon de dev) et j'ai le même comportement qu'avec la HC3

error 400 bad request !

 

qu'est ce que Postman peut bien faire de plus que ce que je fais ?!

Lien vers le commentaire
Partager sur d’autres sites

Je ne sais plus trop en LUA mais request doit avoir plusieurs arguments, il doit être possible de mettre data= (comme body) ou bien params= (pour mettre des ?aa=bb&cc=dd comme sur une URL) ou encore json= (avec du code JSON derrière), comme vous faite le headers=.

Après, il faut trouver la forme de ces arguments, est-ce une chaine de caractères ?

Je ne sais plus.

 

Edit :

Bon je viens de lire la doc de fibaro sur request et dans les options c'est bien headers=, data=, method= et timeout=.

Donc essaie plutôt avec adresse = "mabbox.bytel.fr".

 

Modifié par Kana-chan
Lien vers le commentaire
Partager sur d’autres sites

il y a 12 minutes, Kana-chan a dit :

params= (pour mettre des ?aa=bb&cc=dd comme sur une URL)

 

mais oui biensûr !!  merci @Kana-chan

 

https://mabbox.bytel.fr/api/v1/login?password=blablabla

 

et là ça fonctionne avec windev, mais toujours un problème de certificat avec la HC3 :(

 

 

Lien vers le commentaire
Partager sur d’autres sites

C'est le request implémenté en LUA fibaro qui doit poser problème.

Essayez avec data="password=blabla" pour voir car il n'y a pas params= pour request dans le LUA de fibaro, et adresse = "mabbox.bytel.fr" pour être dans les mêmes conditions.

 

Modifié par Kana-chan
Lien vers le commentaire
Partager sur d’autres sites

j'ai essayé, ça passe pas.

Toujours ce problème de certificat, que je n'ai pas avec windev sous windows...

 

si je n'y arrive pas avec la HC3, je fais un batch avec windev, et je le fais tourner avec le planificateur de tâches...

Mais ce serait dommage...

 

je creuserais encore, mais bon... :(

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...