[..] Gestion de l'interface Livebox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Utilisateur 3309 supprimé
Status : Hors ligne

[..] Gestion de l'interface Livebox

#1

Message 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
Modifié en dernier par Utilisateur 3309 supprimé le mar. 07 juil. 2015 21:07, modifié 2 fois.
Utilisateur 3309 supprimé
Status : Hors ligne

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

#2

Message 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)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#3

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 3309 supprimé
Status : Hors ligne

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

#4

Message 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
Modifié en dernier par Utilisateur 3309 supprimé le sam. 04 juil. 2015 21:28, modifié 1 fois.
Utilisateur 3309 supprimé
Status : Hors ligne

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

#5

Message par Utilisateur 3309 supprimé »

Merci jguinch, ta proposition est plus courte, donc meilleure. :D
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#6

Message 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 ?)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Utilisateur 3309 supprimé
Status : Hors ligne

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

#7

Message 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/
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#8

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 3309 supprimé
Status : Hors ligne

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

#9

Message 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.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#10

Message 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.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#11

Message 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)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#12

Message par jguinch »

Complètement d'accord mikell
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#13

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

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

#14

Message 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
Modifié en dernier par walkson le mer. 08 juil. 2015 19:55, modifié 1 fois.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#15

Message 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"
 
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#16

Message 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.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 3309 supprimé
Status : Hors ligne

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

#17

Message 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...
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#18

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 3309 supprimé
Status : Hors ligne

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

#19

Message 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é...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#20

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre