Message populaire Ofwood Posté(e) le 13 janvier 2015 Message populaire Signaler Posté(e) le 13 janvier 2015 Bonjour Pour mon premier tuto, je vous propose un Module Virtuel pour interfacer la Livebox d'Orange et je vais vous détailler la mise en Å“uvre de l'intégration avec la HC2. Le module rassemble les informations importantes sur l'état des interfaces, le débit, les statistiques et les différents compteurs d'erreurs. Il permet aussi d'exécuter des commandes simples comme l'activation du Wifi ou le redémarrage de la Livebox. Prérequis Une Livebox 2 (Sagem) DSL note: pas pu tester la fibre. J'aimerais bien mais dans moin coin c'est pas avant 2022 ). Une HC2 (code lua testé avec v3.600 et v4.031) Installation Télécharger et ajouter le VD (lien en bas de post) Sur la page de configuration du module, saisir l'adresse ip et le port (80) de la Livebox Ensuite, il faut paramtètrer le VD, editez le code en debut de page (pour chaque bouttons): -- Nom d'utilisateur et mot de passe de la livebox local USER ="admin" local PASSWORD = "admin" Le VD retourne trois états possibles: Inconnu, OK et Not OK. Editez les variables pour adapter l'ID des icones: -- ID des icônes icon_ok = 1004 icon_nok = 1005 icon_unknown = 1006 Par défault, l'execution du module toutes les 5 minutes est confié à la mainloop du VD qui simule un appui sur le bouton Rafraichir. Simple, mais pour plus de fléxibilité et surtout de plus stabilté je recommande d'utiliser l'excellent GEA avec la ligne ci-dessous (à adapter). Dans ce cas, noubliez pas de supprimer le code dans le mainloop du VD. -- Mise à jour état connexion Internet GEA.add(true , 5*60, "",{{"VirtualDevice", id["VD_LIVEBOX"], "1"},{"VirtualDevice", id["VD_LIVEBOX"], "7"},{"Repeat"}}) Le VD n'utilise pas de Variable Globale car je n'ai pas de scénario qui necessite un retour sur l'état de la connexion internet mais c'est juste une ligne de code à ajouter: fibaro:setGlobal('test', Livebox.WANStatus.LinkState) Comment ca marche ? c'est la section pour les geeks. Je partage ici le resultat de mes bidouilles (et saut d'humeur) à propos de l'API Livebox Fonctionnement de l'API Orange/Sagem: En regardant d'un peu plus près les paquets échangés dans une session d'admin avec la livebox on peut voir des réponses de POST en json . à‡a commence plutôt pas mal, la livebox a donc une API ! Comme souvent avec Orange, ça commence bien, c'est après que les choses se gâtent ! Impossible de mettre la main sur une doc publique de l'API. En fouillant un peu sur les forums d'Orange j'ai trouvé quelques pistes mais mes vrais amis ont été Wireshark et les dev tools InternetExplorer ou Chrome (F12) pour comprendre un peu comment l'appli mobile d'Orange (version IOS) utilisait l'API… En inspectant le déroulé d'un login, je manque de m'étrangler en constatant que le nom d'utilisateur et le mot de passe sont balancés en clair; ben voyons les gars faut pas se gêner hein… la requête login retourne un "ContextID" qui est utilisé comme identifiant pour les appels aux fonctions de l'API (X-Context dans les headers). Donc au menu nous avons des custom headers et une authentification super basique, fastoche! où est le problème? Bah ça marche pô! - > "permission denied" le voilà le problème Bah surement qu'ils ont été pris de remords chez Orange avec cette authentification de mickey avec password en clair et histoire de faire bonne figure (et pas se faire défoncer tous les mercredi par des pré-ados qui voudraient passer outre le contrôle parental) ils ont semble-t-il cherché à compliquer un peu les choses… mais en faisant du gros n'importe quoi! Pour aller à l'enssentiel, en plus d'un ContextID, le Login renvoie une autre clé mais planquée dans un cookie cette fois. La sécurité n'y a pas gagné grand chose mais en revanche c'est une vraie prise de tête à intégrer sur la hc2. Hmm.. Net.FHttp avec des custom headers et un cookie, ça va pas le faire… Pour contourner le problème et récupérer le cookie, je me suis servi du génialissime ToolKit v1.0.4 de Krikroff. Une toute petite modif de 4 lignes dans httpClient:request et nous voila prêts à nous goinfrer de cookies. J'ai modifié (à l'arrache, sorry Krikroff) la fonction request(...) dans le fichier Toolkit.net.lua (commence ligne 165). on cherche la chaine "cookie" dans les response headers renvoyés par le serveur et le cas échéant on extrait avec un string.sub() en partant du douzième char. la fonction retourne le cookie en plus des classiques response, status et err. request = (function(self, method, uri, headers, body) ... for k, v in pairs(__headers) do --Toolkit.Net.__trace("raw #"..k..":"..v) if (string.find(string.lower( v or ""), "chunked")) then self.__isChunked = true; Toolkit.Net.__trace("%s.%s::receive > Transfer-Encoding: chunked", Toolkit.Net.__header, Toolkit.Net.__Http.__header, string.len(result)); -- Modification pour récupérer le cookie. Ofwood Janvier 2015 elseif (string.find(string.lower( v or ""), "cookie")) then cookie = string.sub(v, 12) Toolkit.Net.__trace("%s.%s::receive > Cookie: %s", Toolkit.Net.__header, Toolkit.Net.__Http.__header, cookie); end end ... -- return budy response & cookie return response, status, err, cookie; Voyons maintenant avec un exemple comment tirer profit de cette modification et mangeons des cookies! La fonction login() authentifie l'utilisateur et retourne le contextID (dans la réponse json) et le cookie associé. function login() local httpClient = Toolkit.Net.HttpRequest(ip, port) httpClient:setReadTimeout(Livebox.commandTimeOut) local uri = string.format("/authenticate?username=%s&password=%s", utilisateur, mot_de_passe) local response, status, errorCode, cookie = httpClient:request("POST", uri, {"User-Agent: FibaroHC2/1.0", "Content-Type: application/json"}, "" ) if (errorCode == 0) and tonumber(status) == 200 then local jsonTable = json.decode(response); ContextID = jsonTable.data.contextID; return ContextID, cookie end end l'exemple suivant utilise le contextID et notre cookie pour une requête (l'état de l'interface WAN sur la LiveBox) function getWANStatus(contextID, cookie) local httpClient = Toolkit.Net.HttpRequest(ip, port) httpClient:setReadTimeout(Livebox.commandTimeOut) local uri = "/sysbus/NMC:getWANStatus" local params = [[ {"parameters":{}} ]]; -- Injection de X-Context et du Cookie dans les headers local response, status, errorCode, cookie = httpClient:request("POST", uri, {"User-Agent: FibaroHC2/1.0", "Content-Type: application/json", "X-Context: "..contextID, "Cookie: "..cookie }, params); if (errorCode == 0) and (status == 200) then local jsonTable = json.decode(response) Return jsonTable.result.data end end Voici la liste des fonctions implémentées dans la version 1.0 du module. Il en existe d'autres, je n'ai pas encore tout recensé. Livebox.login() Authentification session utilisateur Livebox.logout() Fermeture session Livebox.listTrunks() Information téléphonie IP Livebox.getIPTVStatus() Etat IP TV Livebox.getDSLStats() Stats DSL (Erreurs) Livebox.getMIBs() Information lien dsl Livebox.getWifiMIBs() Information Wifi Livebox.getWANStatus() Etat de la connexion WAN Livebox.reboot() Redémarrage la livebox Livebox.setwifi(mode) Active/désactive le Wifi Livebox.filtreMAC(flag) Active/Désactive filtrage MAC address Livebox.getWificomStatus() Information Wifi public Orange Voilà , ça donne l'idée générale et Orange n'ayant pas le monopole sur les APIs bien pourries, je me suis dit que ça pourrait peut-être en aider d'autres qui se prennent la tête sur des intégrations nécessitant le support des cookies. Enjoy! merci pour vos retours (et votre indulgence) Historique 13/01/2015 - v1.0 : version initiale Livebox_VD.zip 1 13
Allan2b Posté(e) le 13 janvier 2015 Signaler Posté(e) le 13 janvier 2015 Je viens de tester ca fonctionne très bien sur un livebox play merci 1
seth1er Posté(e) le 13 janvier 2015 Signaler Posté(e) le 13 janvier 2015 les plugins re fonctionnent?
fab971 Posté(e) le 13 janvier 2015 Signaler Posté(e) le 13 janvier 2015 C'est un VD et non un plugin. Dès que j'ai un peu de temps je le teste.
fab971 Posté(e) le 13 janvier 2015 Signaler Posté(e) le 13 janvier 2015 Comment trouver les ID des icones?
Ofwood Posté(e) le 13 janvier 2015 Auteur Signaler Posté(e) le 13 janvier 2015 il doit y avoir un moyen plus académique mais un truc tout simple que j'utilise : - Télécharger les icones (avec le boutton change icon) sur la page de config du VD - quand tes icones sont visibles dans la liste: MS IE: click-droit sur l'icone> Propriété. regarde à la ligne (URL). tu devrais voir un truc dans le genre: http://192.168.1.21/fibaro/n_vicons/User1011.png Google Chrome: click-droit sur l'icone> inspecter element : l'url de l'icon devrait être surlignée. un truc genre: <img class="ChooseIcon" src="/fibaro/n_vicons/User1011.png"> il est facile d'en déduire l'id. Dans mon example il s'agit de l'iD 1011.
Krikroff Posté(e) le 13 janvier 2015 Signaler Posté(e) le 13 janvier 2015 Quoi tu as utilisé mon framework lua pour le HC2 Whouaaa ! Tu dois être bien tordu toi Bien joué
fab971 Posté(e) le 14 janvier 2015 Signaler Posté(e) le 14 janvier 2015 ça fonctionne. Merci @Ofwood. Je crains qu'il n'y ai plus beaucoup de Livebox sur ce forum àpart ceux qui n'ont pas le choix
Ofwood Posté(e) le 14 janvier 2015 Auteur Signaler Posté(e) le 14 janvier 2015 les livebox c'est comme les Koalas; c'est pas parce qu'il n'en reste plus beaucoup qu'il faut plus s'y intéresser @Krikroff, trop cool ton Toolkit. je ne peux plus m'en passer ! 2
Steven Posté(e) le 14 janvier 2015 Signaler Posté(e) le 14 janvier 2015 Nickel ... adopté. Le seul défaut, c'est que cela embarque le code de Krikroff ... mais bon, on fera avec Plus sérieusement, le Wifi On/Off est une chose que je cherchais depuis longtemps alors merci beaucoup. +1 1
wimpy Posté(e) le 14 janvier 2015 Signaler Posté(e) le 14 janvier 2015 Bonjour, Savez-vous si cela fonctionne avec une HCL ? J'ai procédé à sa mise en place mais tout reste vide.. pas d'IP pas de débit affiché.. nada En vous remerciant
Ofwood Posté(e) le 14 janvier 2015 Auteur Signaler Posté(e) le 14 janvier 2015 désolé Wimpy, ce module virtuel est écrit en lua. HC2 requise
wimpy Posté(e) le 14 janvier 2015 Signaler Posté(e) le 14 janvier 2015 On doit pouvoir faire la même chose je m'en vais donc chercher comment !! Si quelqu'un à une piste n'hésitez pas Merci pour la réponse rapide.
bateaujfp Posté(e) le 15 janvier 2015 Signaler Posté(e) le 15 janvier 2015 C'est top je vais tester dans pas longtemps.... Par contre à votre avis est il possible de faire la meme chose avec le décodeur TV orange? bravo encore
Steven Posté(e) le 15 janvier 2015 Signaler Posté(e) le 15 janvier 2015 Petit retour : dans mon cas, le Wifi OFF/ON ne fonctionne pas ... mais attention, j'ai une Livebox Play ce qui peux complètement changer la donne. Dommage pour moi M'en fait rebrancher ma veille Livebox
Ofwood Posté(e) le 15 janvier 2015 Auteur Signaler Posté(e) le 15 janvier 2015 Steven, à‡a ne doit pas être grand-chose, probablement une histoire de paramètres pour la fonction wl0:setWLANConfig qui diffèrent avec la Livebox Play. qu'est ce qu'il dit le debug du bouton , tu peux me faire une copie? Livebox.debug = true
Ofwood Posté(e) le 15 janvier 2015 Auteur Signaler Posté(e) le 15 janvier 2015 @bateaujfp, je ne sais pas trop te répondre car je n'ai pas la TV orange. Sais tu s'il existe une app web ou mobile pour contrôler le décodeur? si c'est le cas, on pourrait alors tracer les échanges entre l'app et le déco et piger l'API et les commandes. (je peux t'aider pour ça)
fab971 Posté(e) le 15 janvier 2015 Signaler Posté(e) le 15 janvier 2015 J'ai une livebox v2 et je peux utiliser sans problème le ON/OFF Wifi. Par contre, pour te faire un petit retour sur l'utilisation, voici les points que j'ai remarqué: - "Configuration en cours" dépasse de l'interface (ce n'est que du cosmétique ) - on ne peut pas utiliser le VD dans les scènes en bloc. Par ex, si on veut désactiver le WIFI, on n'a pas le choix ON/OFF dans la scène en bloc. - Les noms qui apparaissent dans la scène en bloc c'est ID et non l'étiquette. On se retrouve avec button41 par ex.
Ofwood Posté(e) le 16 janvier 2015 Auteur Signaler Posté(e) le 16 janvier 2015 merci fab971, bien vu . j'avais pas pensé du tout au mode bloc. je vais modifier le VD en conséquence
erdremy Posté(e) le 18 janvier 2015 Signaler Posté(e) le 18 janvier 2015 Petit retour : dans mon cas, le Wifi OFF/ON ne fonctionne pas ... mais attention, j'ai une Livebox Play ce qui peux complètement changer la donne. Dommage pour moi M'en fait rebrancher ma veille Livebox bonjour steven, j'ai une livebox play et aucun problème pour le wifi ON/OFF, le module fonctionne bien chez moi
Invité Posté(e) le 20 janvier 2015 Signaler Posté(e) le 20 janvier 2015 Merci beaucoup Ofwood, ça marche super sur ma Livebox Play, et le bouton Wifi est d'enfer ! Par contre petite question: j'ai voulu personaliser les icônes, juste pour le fun, et je me retrouve avec plein d'icône dans la liste de ceux disponibles pour ce VD.Comment fait on pour effacer un de ces icônes ? J'ai bien cliqué sur "enlever le dernier élément", mais rien ne ce passe. En fait je souhaiterai me débarasser du carré 3D bleu, mais je n'y arrive pas ... Est-ce un bug, ou est-ce moi ? (je pense plus pour la deuxième option). Merci d'avance
cyssou Posté(e) le 25 janvier 2015 Signaler Posté(e) le 25 janvier 2015 Bonjour Ofwood Je viens de tester ton sympatique "virtual device", avec ma livebox play connectée sur la fibre. Résultat, seul l'IP apparait. Débit up et down rien. Wifi aucun changement. Il semble que le jeu d'instruction différe pour la fibre. Je suis prés à tester si tu as une nouvelle version compatible. J'ai aussi remarqué une petite étourderie sur "Intérogation Livebox..." au lieu de "Interrogation Livebox..." Merci encore pour ton partage.
Ofwood Posté(e) le 26 janvier 2015 Auteur Signaler Posté(e) le 26 janvier 2015 @MrGoose, je ne crois pas qu'il soit possible d'effacer l'icone d'origine pour les VD (le carré 3D bleu). Le code du VD se charge de changer la miniature en fonction du retour de l'état Livebox, il faut juste que tu ajustes les variables icon_ok, icon_nok et icon_unknown avec les IDs de tes icones En revanche, lorsque tu cliques sur un bouton dans un VD, l'icone carré bleu 3D apparait par défaut. Pour éviter ça, il faut que tu affectes aussi une icone pour chacun des boutons car ce n'est pas géré par le code de mon VD. Perso j'ai mis la miniature correspondant à l'état 'unknown' sur tous les boutons, comme ça quand je cliques, la miniature passe en 'grisé' le temps de l'execution de la commande.
Ofwood Posté(e) le 26 janvier 2015 Auteur Signaler Posté(e) le 26 janvier 2015 @cyssou, merci pour ton retour. Tu as raison 'intérogation" ça pique un peu les yeux! au moins ta livebox renvoie une IP publique. C'est déjà un bon début et ne devrait pas présenter de difficultés pour adapter le VD à la fibre Par contre il va falloir creuser un peu pour trouver la fonction ou les paramètres pour taper dans les info MIBs. n'ayant pas de livebox fibre sous la main (c'est bien dommage) Il va falloir que tu m'aides et que tu me dises ce que tu vois quand tu manages ta livebox au travers de son interface web. On va jouer avec les dev tools de ton navigateur internet. tu utilises firefox, internet Explorer, chrome ou safari? en gros il va falloir se connecter à la livebox, aller dans l’onglet Assistance > Information Systeme et regarder le contenu des échanges pour les tab pages "general" et "dsl" (ou son équivalent avec la fibre). Les dev tools des navigateurs s'activent avec la touche F12 Rechercher dans la liste les appels API et la réponse de la livebox. Par exemple, pour les stats de connexion adsl, c'est l'appel API /sysbus/NeMo/intf/data:getMIBs. Voici une capture d'écran faite sous Google Chrome: J'aurais besoin du contenu de la page Headers et de la page Response pour adapter le VD. merci
Invité Posté(e) le 28 janvier 2015 Signaler Posté(e) le 28 janvier 2015 @Ofwood : merci pour le retour sur les icones. Donc si je comprend bien pour l'instant, je ne peux pas supprimer tous les icones que j'ai mis en trop. Pas grâve, maintenant que je le sais, je vais me débrouiller avec ça ;-)
Messages recommandés