Page 1 sur 3

[..] Gestion de l'interface Livebox

Posté : sam. 04 juil. 2015 20:58
par Utilisateur 3309 supprimé
Bonjour,

j'ai la chaine de caractères suivante, issue de données JSON de l'interface web de ma Livebox. J'extrais ces données dans un fichier TXT que je lis par la suite.
► Afficher le texte
Je voudrais par exemple récupérer les infos de Manufacturer, dans ma chaine de caractères c'est Sagemcom.
Donc j'ai fait ceci qui évidement ne marche pas:

Code : Tout sélectionner

$Manufacturer = StringRegExp($line, 'Manufacturer","type":"string","attributes":\{"read_only": true\},"state":"ready","value":"(.*)","validator', 3)
Si on me montre un exemple pour celui-ci, je pense pouvoir récupérer le reste des données qui m’intéressent.
Merci pour votre aide

Re: [..] gestion de l'interface Livebox

Posté : sam. 04 juil. 2015 21:19
par Utilisateur 3309 supprimé
j'ai cherché 1/2 heure avant de me résigner à poster mon message, et je trouve la réponse 5 minutes après...
http://stackoverflow.com/questions/2503 ... irst-match
Adding a ? on a quantifier (?, * or +) makes it non-greedy.
il faut donc que j'utilise (.*?) au lieu de (.*).
Maintenant cela fonctionne. 8)

Re: [..] gestion de l'interface Livebox

Posté : sam. 04 juil. 2015 21:21
par jguinch

Code : Tout sélectionner

$Manufacturer = StringRegExp($sJSON, '"name":"Manufacturer".+?"value":"([^"]+)', 1)
MsgBox(0, "", $Manufacturer[0])
Il me semble avoir déjà vu trainer des UDF pour le format JSON

Re: [..] gestion de l'interface Livebox

Posté : sam. 04 juil. 2015 21:24
par Utilisateur 3309 supprimé
D’ailleurs pour ceux que cela intéresse, je suis en train de faire un petit utilitaire qui affiche tout un tas d'infos issues de la Livebox Play ou Livebox 2 d'Orange.
http://www.forum-orange.com/forums/view ... 92#p730692

ImageImage

Re: [..] gestion de l'interface Livebox

Posté : sam. 04 juil. 2015 21:27
par Utilisateur 3309 supprimé
Merci jguinch, ta proposition est plus courte, donc meilleure. :D

Re: [..] gestion de l'interface Livebox  

Posté : dim. 05 juil. 2015 12:58
par mikell
Sympathique ce script Livebox, tu devrais le mettre dans les exemples de script

Juste 2 remarques
- Faire une gestion d'erreur sur les regex éviterait des éventuels plantages (ex. NumberOfReboots sur LB2)
- mettre un @SW_HIDE sur le 1er runwait (ou alors laisser la fenêtre cmd visible c'est exprès ?)

Re: [..] gestion de l'interface Livebox

Posté : dim. 05 juil. 2015 14:43
par Utilisateur 3309 supprimé
Merci mikell,
oui on m'a remonté le problème du NumberOfRebootssur LiveBox 2, depuis le début la LB2 et la Play étaient identiques en tout points donc je me suis affranchi de faire de tests :oops:
Donc j'en ai rajouté un pour NumberOfReboots avec un isarray, mais il est vrai qu'en cas de modification de l'interface de la LB ca risque de planter dans la mesure je ne fais pas de test pour les autres parametres...Bon on verra ca plus tard :mrgreen:

Pour le @SW_HIDE manquant, bien vu ! c'est un oublie.
J'ai fait une mise à jour du code et j'ai crée un petit site pour faciliter le téléchargement (marre du dl.free.fr) :D
on peut récupérer le code source ici : http://www.liveboxinfo.tk/

Re: [..] gestion de l'interface Livebox

Posté : lun. 06 juil. 2015 00:21
par jguinch
J'ai testé, ça fonctionne très bien : super !
Je savais pas qu'on pouvait interroger la Livebox comme ça; c'est plutôt pas mal...

Désolé si je pollue un peu le post, mais du coup j'ai été un peu curieux et j'ai voulu voir si on pouvait se passer de curl.exe, en utilisant les fonctions WinHttp (donc oui, on peut)
Comme je ne maîtrise pas (du tout) les requêtes WinHttp, je suis parti sur l'UDF WinHttp de trancexx
Ca donne ça (attention, je n'ai mis aucune gestion des erreurs, pas de fichier INI, pas de bouton).
► Afficher le texte
Edit : ajout de la partie DeviceInfo

Re: [..] gestion de l'interface Livebox

Posté : lun. 06 juil. 2015 19:29
par Utilisateur 3309 supprimé
si c'est faisable sans logiciel tiers c'est super, je regarde ca !

Edit:
ta maitrise des regex fait que ton code est 10x plus léger que le mien :lol:
par contre impossible à déchiffrer pour moi comme ça en un coup d'oeil...

Si tu veux pousser plus loin, c'est a dire faire autre chose qu'afficher des infos c'est a dire envoyer des instructions a la livebox, je montre comment faire ici pour simuler le "Relancer la connexion internet".
http://www.forum-orange.com/forums/view ... 24#p731224
En fait avec Firebug il suffit de regarder les instructions envoyées lorsque tu fait un truc sur l'interface. tu récupères les infos du POST et ensuite tu peux les reproduire avec cURL ou winhttp.

Re: [..] gestion de l'interface Livebox

Posté : lun. 06 juil. 2015 20:28
par jguinch
En fait, au début je n'avais pas vu les parties DeviceInfo et Outils.
J'ai donc ajouté simplement DeviceInfo (et après chui allé au lit :D )
J'ai pas le temps ce soir, mais j'essaierai de regarder ça demain.
En attendant, regarde les appels que j'ai utilisé (notamment _WinHttpOpenRequest et _WinHttpSendRequest), ça sera simple à adapter.

Re: [..] gestion de l'interface Livebox

Posté : lun. 06 juil. 2015 21:38
par mikell
Je suggère de modifier le titre du sujet
En effet le "Petit problème de StringRegexp" devient carrément "gestion de l'interface Livebox" ce qui est tout de même - faut bien le reconnaître - nettement plus bandant (et plus significatif en cas de recherche sur le forum)

Re: [..] gestion de l'interface Livebox

Posté : mar. 07 juil. 2015 21:43
par jguinch
Complètement d'accord mikell

Re: [..] gestion de l'interface Livebox

Posté : mar. 07 juil. 2015 23:31
par jguinch
Voilà, donc oui : on peut aussi utiliser WinHttp pour envoyer les commandes de reboot (étant donné que ce sont des requêtes basiques, il n'y a pas de raison que ça ne marche pas).
Du coup, je ne sais pas si ça t'intéresse ou non, mais voilà une version pure AutoIt qui fonctionne pour moi (Livebox FTTH v2).

J'ai effectué quelques modifications/améliorations/détériorations :
- ajout des fonctions Changer IP + reboot + Copier + Screenshot
- l'adresse IP de la Livebox est détectée automatiquement en enregistrée dans le fichier de config (qui peut être modifié lui)
- lors du clic sur "Copier dans le presse-puréepapier", tout est copié à l'identique (mis à part le numéro de série qui reste avec des XXXXXXXX)
- toujours pas de gestion des erreurs (à faire)

Suggestions :
- intégrer un champ login/mdp dans la GUI + enregistrement possible du mot de passe (encodé) dans fichier de config
- rafraichissement automatique possible (case à cocher avec temps de maj par ex)
- possibilité de activer/désactiver le wifi
► Afficher le texte

Re: [..] gestion de l'interface Livebox

Posté : mer. 08 juil. 2015 13:56
par walkson
Bonjour,
Petit retour sur le script de jguinch :
J'ai eu un bug avec le reboot, plus de connections Web et obligé de redémarrer la livebox et le PC pour tout rentrer dans l'ordre. J'ignore d'où vient le problème, le script? la livebox? mon PC? ... (la livebox avait en effet rebooter)
Il y a aussi une erreur sur

Code : Tout sélectionner

UpstreamNoiseMargin   : 110 dB
DownstreamNoiseMargin : 100 dB
UpstreamAttenuation   : 176 dB
DownstreamAttenuation : 306 dB
qui devrait être divisé par 10
Sinon bravo pour le script de Cetipabo.

[Edit]
Je viens de tester via http://192.168.1.1/supportRestart.html et je n'ai pas eu de problème avec le reboot
Au vue du temps mis à se déconnecter et à se reconnecter via l'explorateur, je me demande (simple supposition) si le script n'est pas trop rapide ?
[Edit2]
même problème de reboot avec le script de Cetipabo

Re: [..] gestion de l'interface Livebox

Posté : mer. 08 juil. 2015 14:13
par mikell
Pour les valeurs, les données récupérées sont bonnes donc il faut les diviser par 10 (ce que cetipabo fait aussi dans son code) vers la fin du script

Code : Tout sélectionner

       If StringRegExp($aData[$i], "Noise|Attenuation") Then
            $aData[$i + 1] = $aData[$i + 1]/10 & " dB"
 

Re: [..] Gestion de l'interface Livebox

Posté : mer. 08 juil. 2015 21:39
par jguinch
J'ai édité mon code pour appliquer la modif concernant la division par 10 (j'avais pas fais gaffe à ça)
@walkson : pour le reboot, j'ai cru au début que ça ne marchait pas, mais il faut attendre entre 10 et 20 secondes pour que la Livebox clignote (mais entre temps, la connexion réseau est déjà coupée, d'où ta perte de réseau).

Sinon, petite question pour cetipabo : est-ce que mon machin va te servir ou non ? (c'est juste pour savoir si ça vaut le coup de bosser dessus encore).
Pour ce qui est du parsing des infos, j'ai fais ça assez vite avec les regex, mais je pense que ça serait mieux de coller toutes les attributs souhaités dans des tableaux, parce que les données JSON ne sont pas vraiment faciles à parser. Je n'ai pas encore pris le temps de chercher ce qu'il y avait comme UDF JSON.

Re: [..] Gestion de l'interface Livebox

Posté : mer. 08 juil. 2015 22:25
par Utilisateur 3309 supprimé
Bonsoir,
bien sur que ca va me servir, d’ailleurs ca ne te dérange pas que je reprenne tes optimisation dans mes prochaines versions ?

Edit:
je suis en train d'analyser ton code, il manque un petit StringRegExpReplace pour masquer les 2 derniers octets de l'adresse IP. Moi j'ai fait une tarabistouille avec un stringsplit, avec StringRegExpReplace je vois pas trop comment faire...

Re: [..] Gestion de l'interface Livebox

Posté : mer. 08 juil. 2015 22:53
par jguinch
Non, au contraire, si ça peut servir (pour un coup que c'est pas un truc qui servira uniquement pour le boulot...)

Sinon, j'ai regardé pour la partie téléphonie et devices : si tu veux avoir un truc propre, il va falloir parser convenablement les données JSON, parce que là c'est un peu le foutoir, surtout pour la partie devices (j'ai déjà parsé une partie avec des regex, c'est peut-être suffisant...)
Pour la partie téléphone, je ne sais pas s'il y a un intérêt, mais si c'est le cas il faudra parser ou récupérer uniquement les infos utiles...
Pour le Wifi, je ne sais non plus s'il y a un intérêt de l'activer/désactiver, en tout cas on peut le faire (c'est pas dans le script, mais j'ai récupéré les infos et ça marche)
► Afficher le texte
Edit : j'ai modifié le code pour "flouter" l'adresse IP publique

Re: [..] Gestion de l'interface Livebox

Posté : mer. 08 juil. 2015 23:27
par Utilisateur 3309 supprimé
impec !
l'interface est un peu bizarre chez moi...tu as trafiqué les edit box ?

sinon concernant JSON:
https://www.autoitscript.com/forum/topi ... mn/?page=1
c'est l'udf le plus récent que j'ai trouvé...

Re: [..] Gestion de l'interface Livebox

Posté : ven. 10 juil. 2015 00:01
par mikell
@jguinch
Ya un peu moins lourd, sans include
Exemple sommaire (sans gestion d'erreur) pour récupérer l'IP WAN :
► Afficher le texte