Aller au contenu

Ofwood

Membres confirmés
  • Compteur de contenus

    20
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Ofwood

  1. 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
  2. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    @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
  3. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    @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.
  4. Ofwood

    Lua => Manipulation D'un Json

    regardes aussi le tuto de Steven sur la gestion du chauffage avec des sondes oregon, netatmo... http://www.domotique-fibaro.fr/index.php/topic/841-gestion-chauffage-avec-sondes-oregon-netatmo-json-etc/?view=findpost&p=11865&hl=%2Bsteven+%2Bpellet son module virtuel utilise les données json du panneau de chauffage fibaro. Ca te fait déjà la moitié du boulot si j'ai bien compris ce que tu cherches à faire.
  5. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    merci fab971, bien vu . j'avais pas pensé du tout au mode bloc. je vais modifier le VD en conséquence
  6. Ofwood

    Lua => Manipulation D'un Json

    PITP2, json.decode() retourne une table. Tu ne peux pas passer une table comme ça telle quelle à une fonction qui s'attend à une chaîne de char comme fibaro:debug(). il va falloir que tu navigues dans la table en utilisant des index ou bien avec des boucles récursives. voici un petit exemple qui reprend ton code et 'dump' le contenu de la table json. Peut toujours servir pour du debuguer du code function table.val_to_str ( v ) if "string" == type( v ) then v = string.gsub( v, "\n", "\\n" ) if string.match( string.gsub(v,"[^'\"]",""), '^"+$' ) then return "'" .. v .. "'" end return '"' .. string.gsub(v,'"', '\\"' ) .. '"' else return "table" == type( v ) and table.tostring( v ) or tostring( v ) end end function table.key_to_str ( k ) if "string" == type( k ) and string.match( k, "^[_%a][_%a%d]*$" ) then return k else return "[" .. table.val_to_str( k ) .. "]" end end function table.tostring( tbl ) local result, done = {}, {} for k, v in ipairs( tbl ) do table.insert( result, table.val_to_str( v ) ) done[ k ] = true end for k, v in pairs( tbl ) do if not done[ k ] then table.insert( result, table.key_to_str( k ) .. "=" .. table.val_to_str( v ) ) end end return "{" .. table.concat( result, "," ) .. "}" end -- HC2 = Net.FHttp("192.168.0.6",80) HC2:setBasicAuthentication("admin", "admin") response, status, errorcode = HC2:GET("/api/panels/heating/402") monTableau = json.decode(response) fibaro:debug(table.tostring(monTableau))
  7. Ofwood

    Requêtes Http /get Sur Hcl

    @bechamel1979, il me semble que lorsqu'on veut mettre à jour la valeur d'une variable avec un PUT il faut passer le nom de la variable dans l'url. essayes avec: PUT /api/globalVariables/test HTTP/1.1 Host: 127.0.0.1 {"name":"test","value":"2"}
  8. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    @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)
  9. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    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
  10. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    désolé Wimpy, ce module virtuel est écrit en lua. HC2 requise
  11. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    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 !
  12. Ofwood

    Interfacer La Livebox D'orange Avec La Hc2

    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.
  13. Ofwood

    V4.030 - 06-01-2014

    histoire de mettre du baume au coeur à ceux d'entre nous qui desespèrent devant le 0%; waooohoo chez moi ça vient enfin de passer. 2 heures à 0% et de 1 a 100% en moins de deux minutes. en tout cas c'est sur, ils ont embauchés les gars de Microsoft qui avait codé les progress bars de Windows 95.... ou bien je suis tombé dans une faille spacio temporelle
  14. Ofwood

    Aeon Labs - Zw080 - Siren Gen5

    Idem - pas moyen de la faire marcher tant que j'étais en v4024. Elle était aussi reconnue comme un switch mais impossible de la faire sonner ou d'activer le switch. Aujourd'hui je suis descendu en v3.6 et ca à l'air de mieux marcher. du coup je me suis acharné un peu et suis tombé sur la data sheet. Il n'y avait plus qu'à bricoler une mini template ... Pour changer le type de sonnerie et son volume: edit du module puis Ajouter un paramètre Par defaut je pense que le volume est réglé sur 88db. Le paramètre 37 est un double word et permet de gerer à la fois le type de sonnerie et le volume. les valeurs (dec) possibles sont (volume à 88db / 100db / 105db) Sonnerie 1: 257 / 258 / 259 Sonnerie 2: 513 / 514 / 515 Sonnerie 3: 769 / 770 / 771 Sonnerie 4: 1025 / 1026 / 1027 Sonnerie 5: 1281 / 1282 / 1283 je n'ai pas joué avec les autres param.
  15. Ofwood

    Bonjour Du Sud

    Salut a tous, Je me prénomme Christophe, j'ai la quarantaine passée et réside dans les environs de Nice Après des années de galère domotique, de bricolage en bidouille (X10 principalement) pour arriver à un machin bancale; j'ai jeté l'éponge il y a quelque années (2005)... Fini la domotique j'avais dit ! bref les années passent et puis un jour je tombe sur vous, enfin sur le forum. Je commence à lire et voila que le démon domotique se réveille en moi. Il serait donc possible de faire de la domotique fun et qui marche ?! des exemples à foison, une communauté solide bref tout ce qui m'avait manqué une décennie auparavant. Pouvait pas rater ça quand même...alors oui j'ai craqué et passé commande d'un HC2 et d'un chouette assortiment de modules pour commencer à me faire un peu la main. D'après Colissimo c'est pour demain - l'impatience me dévore; pire qu'un gosse une veille de noà«l. Projets : - Contrôle chauffage électrique (obligé, c'est comme ça que je l'ai vendu à mon épouse.... ;-) - Portage de mes bidouilles Arduino: PH, Hygro et EC pour mes plantes et puis surveillance de la boite à lettre qui est trop loin pour qu'on y aille pour rien :-) - Domotiser le portail voila pour le début d'une nouvelle aventure! a+
×