• Forums
  •  » Logiciel
  •  »  [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

#76 23-09-2015 20:48:33

AlphaZoulou
Avant FONO j'avais une vie
Date d'inscription: 17-03-2011
Messages: 2879

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Encore merci JoeKer,

c'est génial une fois remplacé false par true sur la ligne précédente

chartCursor: {
                    fullWidth:true,
                    categoryBalloonEnabled: true,
                    categoryBalloonDateFormat: 'JJ:NN:SS',
                    cursorAlpha:0.1
                },

A+

En ligne

 

#77 23-09-2015 21:31:54

AlphaZoulou
Avant FONO j'avais une vie
Date d'inscription: 17-03-2011
Messages: 2879

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Euh.... j'ai l'heure dans la fenêtre du haut et du bas, c'est pas faisable de garder la date en haut et l'heure en bas ?

Oui, je sais, je suis fromage ET dessert big_smile

A+

Edit
Je viens de comprendre mon erreur
Le true active la fenêtre du bas, mais avec les mêmes infos que celle du haut

Dernière modification par AlphaZoulou (23-09-2015 21:41:46)

En ligne

 

#78 23-09-2015 21:53:49

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Je suppose que, quand tu parles "du haut et du bas", tu parles des "bulles" qui suivent la souris ...

Hélas, à ma connaissance, non, ce n'est pas séparable (mais je n'ai pas lu toute la doc !) hmm
Je n'ai modifié que la ligne en cause, et ça met à jour les deux "bulles".

La date, on la connaît, elle est dans le titre, et comme on ne prend (sauf "bidouille") que la journée, ça n'apporterait pas grand chose de l'avoir ...

Et l'heure en haut correspond au "ruban de zoom", en bas, c'est fonction de ce que tu as "zoomé".

Perso, en laissant "categoryBalloonEnabled: false", je trouve que c'est pas mal, mais ce n'est que mon point de vue ...
Ca permet de faire la relation avec un "incident" à la seconde près dans la maison, par exemple.

[Edit]
Croisement de réponses ...
[/Edit]

Dernière modification par JoeKer (23-09-2015 21:56:04)


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#79 23-09-2015 22:34:21

AlphaZoulou
Avant FONO j'avais une vie
Date d'inscription: 17-03-2011
Messages: 2879

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Oui, tu as raison pour la date, puisqu'on a un fichier par jour.

J'étais resté avec mon fichier horodaté de l'heure du lancement et pouvant être à cheval sur un changement de jour.

A+

En ligne

 

#80 23-09-2015 22:54:35

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Pour ce cas là, il y a une possibilité (et même plusieurs smile) :

Essaye avec "categoryBalloonDateFormat: 'YYYY/MM/DD JJ:NN:SS',"
Ca te mettra, dans la dite "bulle",  la date sous la forme "2015/09/23 22:54:47" ...


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#81 23-09-2015 23:18:57

Denys03
Membre
Date d'inscription: 26-07-2015
Messages: 30

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonjour à tous,

Je viens d'essayer la dernière version de ce bel outils . J'ai une anomalie sur l'heure qui est en avance de 2 heures, je suis déjà demain....mais la date sur le titre est bien du 23 .
C'est pas si souvent que je suis en avance !

Hors ligne

 

#82 23-09-2015 23:35:05

AlphaZoulou
Avant FONO j'avais une vie
Date d'inscription: 17-03-2011
Messages: 2879

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

JoeKer a écrit:

Essaye avec "categoryBalloonDateFormat: 'YYYY/MM/DD JJ:NN:SS',"

Oui, effectivement c'est une alternative, Merci


@Denys03

Vérifie le fuseau horaire dans la Livebox

A+

En ligne

 

#83 23-09-2015 23:43:59

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonsoir Denys.

Si tu es sous Chrome, le problème est connu smile

@AlphaZoulou : C'est la seule alternative que j'ai pu trouver smile
Ceci dit, Amcharts est vraiment très puissant (il faut fouiller la doc sur leur site pour s'en rendre compte ...) clin_oeil_up

Ce qui serait top, maintenant, c'est d'envoyer plusieurs infos (CRCErrors et DownstreamAttenuation et DownstreamMaxRate, par exemple wink) pour pouvoir faire des corrélations entre les données.

L'idéal serait de pouvoir prendre toutes les données en entrée, et les désélectionner sur le graphique, mais ça, je crains fort que ça ne soit pas possible hmm


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#84 24-09-2015 00:26:20

AlphaZoulou
Avant FONO j'avais une vie
Date d'inscription: 17-03-2011
Messages: 2879

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

De la lecture en perspective...

A+

En ligne

 

#85 24-09-2015 10:11:19

Denys03
Membre
Date d'inscription: 26-07-2015
Messages: 30

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonjour à tous,

La box est bien réglée sur Paris (j'ignorais qu'il y avait un reglage fuseau horiare)
J'utilise IE9, Vista oblige pas de version plus recente .

Ceci dit ca reste sans consequence puisque je connais le decalage, ca reste un bel outils, je suis avec plaisir vos échanges .

Hors ligne

 

#86 24-09-2015 12:50:11

shdf
Avant FONO j'avais une vie
Lieu: Maldives
Date d'inscription: 26-03-2012
Messages: 3372
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Moi j'ai testé avec IE11 et Firefox 40 et 41, aucun souci.

Je vous conseille de trouver une alternative a IE9, si ce n'est rien que pour la sécurité...Firefox devrait faire l'affaire.

J'ai vraiment un doute concernant ce problème d'incompatibilité entre les navigateurs, car avec les samples fournis j'ai l'impression que tout fonctionne...je me demande si le format date/heure qu'on envoie est bien le bon, je n'en suis pas convaincu pour le moment.

Je pense que la solution au problème se trouve la dedans:
http://www.amcharts.com/tutorials/formatting-dates/
http://docs.amcharts.com/3/javascriptcharts/AmCharts

Dernière modification par shdf (24-09-2015 13:04:43)


Fibre RED FTTH ↓ 1Gbps | ↑ 1Gbps - nPerf

Hors ligne

 

#87 24-09-2015 14:12:17

Denys03
Membre
Date d'inscription: 26-07-2015
Messages: 30

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

IE9 et Chrome même erreur, par contre Firefox
http://www.cjoint.com/c/EIymiDTIaet
Ca marche

Jamais sans ce logiciel je n'aurais cru à autant de variations, pas fameuse la ligne !

Dernière modification par Denys03 (24-09-2015 14:12:55)

Hors ligne

 

#88 24-09-2015 19:32:35

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonsoir.

Un petit bug :
Si on fait un échantillonnage à 30 minutes, par exemple, la session ouverte par le logiciel sur la LiveBox est "expirée" à la mesure suivante, et le programme se plante avec un joli message d'erreur (correspondant à un manque de données).

Dans la boucle "while", on a :

auth_livebox() ; connexion à  la LiveBox
            _GetData() ; On récupère les données

En déplaçant "auth_livebox() ; connexion à  la LiveBox" au début de la fonction "_GetData", on résout le problème (ce n'est pas forcément la méthode la plus propre, mais elle a le mérite de fonctionner avec peu de modifications smile)

Dernière modification par JoeKer (24-09-2015 19:37:05)


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#89 24-09-2015 20:07:13

shdf
Avant FONO j'avais une vie
Lieu: Maldives
Date d'inscription: 26-03-2012
Messages: 3372
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

C'est exactement ce qu'il fallait faire et c'est tout à fait propre de le faire comme ça wink
Mise à jour effectuée.

PS:
le bon lien à mettre dans le Template.html pour le stylesheet c'est :

<link rel="stylesheet" href="../amcharts/samples/style.css" type="text/css">

C'est à jour dans le ZIP de la 2.3

Dernière modification par shdf (24-09-2015 20:10:26)


Fibre RED FTTH ↓ 1Gbps | ↑ 1Gbps - nPerf

Hors ligne

 

#90 24-09-2015 23:03:41

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Pour faire plus propre, il faudrait fermer la session après chaque récupération de données, je ne sais pas ce que ça peut donner à la longue (même si le timer de session n'est pas très long).
Exemple, on décide d'interroger la LiveBox toutes les 5 secondes, et le timer de session est de 10 minutes.
A raison de 12 sessions par minute, ça va faire 120 sessions potentiellement actives au bout de 10 minutes (et je ne suis pas certain que la LiveBox nettoie bien ses données périmées).

En ouvrant la session à chaque interrogation, et en la fermant à la fin de la récupération, on peut espérer que la box "souffrira" moins smile


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#91 25-09-2015 08:26:40

AlphaZoulou
Avant FONO j'avais une vie
Date d'inscription: 17-03-2011
Messages: 2879

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonjour,

Tout à fait d'accord avec toi JoeKer sur le principe d'ouverture/fermeture.

Mais dans le cas de mesures très courtes, par exemple toutes les secondes, vu le temps de réaction de la box, n'y a t-il pas un risque qu'elle perde les pédales ?

Lors de mes essais, une mesure toutes les 5 minutes sur 24h passait sans perte de la connexion.

Pour ne pas trop perturber la box, on pourrait, par exemple, dire de 0 à 5 mn une ouverture permanente, et au delà une ouverture/fermeture par lecture.

A+

En ligne

 

#92 25-09-2015 23:29:17

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonsoir.

Ta remarque est justifiée, quoiqu'il n'est pas possible de descendre en dessous de la minute sans modification du code (il faudrait échantillonner sur un multiple de secondes au lieu de minutes).

J'ai donc adapté le code de la dernière version pour fermer la session si l'échantillonnage est proche de 10 minutes (j'ai mis 595 secondes - 595000 ms - , mais rien n'empêche de descendre cette valeur à 300000 ms (5 minutes).

Ca donne le code qui suit :

Code:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=LBMonitor.ico
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Fileversion=2.3
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include<File.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("LBMonitor V2.3", 268, 129, 316, 176)
$Combo1 = GUICtrlCreateCombo("", 16, 88, 145, 25)
GUICtrlSetData(-1, "ErroredSecs|SeverelyErroredSecs|FECErrors|ATUCFECErrors|HECErrors|ATUCHECErrors|CRCErrors|ATUCCRCErrors|UpstreamNoiseMargin|DownstreamNoiseMargin|UpstreamAttenuation|DownstreamAttenuation","ErroredSecs")
$Button1 = GUICtrlCreateButton("Graph", 176, 88, 67, 22)
$Input1 = GUICtrlCreateInput("1", 16, 24, 65, 21, $ES_NUMBER) ; on autorise que les chiffres
$Label1 = GUICtrlCreateLabel("Cycle de lecture des données en Minutes:", 16, 8, 202, 16)
$Button2 = GUICtrlCreateButton("Lancer", 96, 24, 67, 22)
$Button3 = GUICtrlCreateButton("Arrêter", 176, 24, 67, 22)
    GUICtrlSetState($Button3,$GUI_DISABLE)
$Input2 = GUICtrlCreateInput("", 16, 56, 145, 21)
    GUICtrlSetState($Input2,$GUI_DISABLE)
$Button4 = GUICtrlCreateButton("Fichier", 176, 56, 67, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###



Opt("TrayIconHide", 1) ;0=show, 1=hide tray icon

Global $USER = "admin"
Global $LIVEBOX = "livebox"
Global $sContextID = ""
Global $PASSWORD = ""
Global $bDisconnect = False


; On vérifie que le fichier INI est bien présent
$sFilePath = @scriptDir & "\config.ini"
$iFileExists = FileExists($sFilePath)
if $iFileExists Then
    Global $LIVEBOX = IniRead (@scriptDir & "\config.ini","setting","LiveboxIP","192.168.1.1")
    Global $PASSWORD = IniRead (@scriptDir & "\config.ini","setting","password","")
Else
    $Filepath = @ScriptDir & "\config.ini"
    FileOpen($Filepath, 1)
    FileWriteLine($Filepath,"[setting]")
    FileWriteLine($Filepath,"LiveboxIP=192.168.1.1")
    FileWriteLine($Filepath,"password=XXXXXXXX")
    msgbox(48,"ERREUR","Veuillez indiquer votre mot de passe Livebox dans le fichier CONFIG.INI")
    Exit
EndIf

; On vérifie que les étourdis ont bien mis leur mot de passe
if ($PASSWORD ="" or $PASSWORD="XXXXXXXX") Then
    msgbox(48,"ERREUR","Veuillez indiquer votre mot de passe Livebox dans le fichier CONFIG.INI")
    Exit
EndIf

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE ; Fermeture application
            _Logout()
            Exit

        Case $Button1 ; Affichage du Graph
            _GetChart()

        Case $Button2 ; Execution du cycle de lecture des données

            GUICtrlSetState($Button3,$GUI_ENABLE)  ; on active le bouton ARRETER
            GUICtrlSetState($Button2,$GUI_DISABLE) ; on désactive le bouton LANCER

            $cycle = GUICtrlRead($Input1)

            _GetData() ; On récupère les données

            $cycle = $cycle * 60000 ; conversion en minutes

            If $cycle > 595000 Then
              $bDisconnect = True
            Else
              $bDisconnect = False
            EndIf

            AdlibRegister("_GetData",$cycle) ; execute la fonction _GetData toutes les x minutes

        Case $Button3 ; ARRET de l'execution du cycle de lecture des données

            GUICtrlSetState($Button2,$GUI_ENABLE)  ; on active le bouton LANCER
            GUICtrlSetState($Button3,$GUI_DISABLE) ; on désactive le bouton ARRETER
            AdlibUnRegister("_GetData") ; on arrete le cycle de lecture

        Case $Button4
            Local $sFileOpenDialog = FileOpenDialog("Choisir un fichier de données", @ScriptDir & "\data", "TXT (*.txt)", $FD_FILEMUSTEXIST)
            if $sFileOpenDialog <>"" then
                guictrlsetdata($input2,$sFileOpenDialog)
            EndIf

    EndSwitch
WEnd


Func _GetData()
If $bDisconnect = True or $cycle < 1000 Then
   auth_livebox() ; connexion à la LiveBox
EndIf
; Recuperation des donnees DSLStats
$oHTTP.Open("POST", "http://" & $LIVEBOX & "/sysbus/NeMo/Intf/dsl0:getDSLStats", False)
$oHTTP.SetRequestHeader("X-Context", $sContextID)
$oHTTP.Send('{"parameters":{}}')
$getDSLStats = $oHTTP.ResponseText

; Recuperation des donnees MIBs
$oHTTP.Open("POST", "http://" & $LIVEBOX & "/sysbus/NeMo/Intf/data:getMIBs", False)
$oHTTP.SetRequestHeader("X-Context", $sContextID)
$oHTTP.Send('{"parameters":{"mibs":"dsl","flag":"","traverse":"down"}}')
$getMIBs = $oHTTP.ResponseText

$ErroredSecs = StringRegExp($getDSLStats, 'ErroredSecs":(.*),"SeverelyErroredSecs', 3)
$SeverelyErroredSecs = StringRegExp($getDSLStats, 'SeverelyErroredSecs":(.*),"FECErrors', 3)
$FECErrors = StringRegExp($getDSLStats, 'FECErrors":(.*),"ATUCFECErrors', 3)
$ATUCFECErrors = StringRegExp($getDSLStats, 'ATUCFECErrors":(.*),"HECErrors', 3)
$HECErrors = StringRegExp($getDSLStats, 'HECErrors":(.*),"ATUCHECErrors', 3)
$ATUCHECErrors = StringRegExp($getDSLStats, 'ATUCHECErrors":(.*),"CRCErrors', 3)
$CRCErrors = StringRegExp($getDSLStats, 'CRCErrors":(.*),"ATUCCRCErrors', 3)
$ATUCCRCErrors = StringRegExp($getDSLStats, 'ATUCCRCErrors":(.*)}}', 3)

$UpstreamNoiseMargin = StringRegExp($getMIBs, 'UpstreamNoiseMargin":(.*),"DownstreamNoiseMargin', 3)
$DownstreamNoiseMargin = StringRegExp($getMIBs, 'DownstreamNoiseMargin":(.*),"UpstreamAttenuation', 3)
$UpstreamAttenuation = StringRegExp($getMIBs, 'UpstreamAttenuation":(.*),"DownstreamAttenuation', 3)
$DownstreamAttenuation = StringRegExp($getMIBs, 'DownstreamAttenuation":(.*),"UpstreamPower', 3)

; format date = 2015-08-22T18:29:44
$data = @YEAR & "-" & @MON & "-" & @MDAY & "T" & @HOUR & ":" & @MIN & ":" & @SEC & "," & _
$ErroredSecs[0] & "," & _
$SeverelyErroredSecs[0] & "," & _
$FECErrors[0] & "," & _
$ATUCFECErrors[0] & "," & _
$HECErrors[0] & "," & _
$ATUCHECErrors[0] & "," & _
$CRCErrors[0] & "," & _
$ATUCCRCErrors[0] & "," & _
$UpstreamNoiseMargin[0] & "," & _
$DownstreamNoiseMargin[0] & "," & _
$UpstreamAttenuation[0] & "," & _
$DownstreamAttenuation[0]

$date = @YEAR & @MON & @MDAY
$filename = $date & ".txt"
$Filepath = fileopen(@SCRIPTDIR & "\data\" & $filename,9)

FileWriteLine($Filepath,$data)
Fileclose($Filepath)

guictrlsetdata($input2, @ScriptDir & "\data\" & $filename)
If $bDisconnect = True Then
  _Logout()
EndIf

Endfunc ;==>_GetData

Func _GetChart()
    $fichierdata = GUICtrlRead($input2)
    $choix = GUICtrlRead($Combo1)
    select
        Case $choix = "ErroredSecs"
            Local $c=2, $ytitle="&ytitle=Erreurs"
        Case $choix = "SeverelyErroredSecs"
            Local $c=3, $ytitle="&ytitle=Erreurs"
        Case $choix = "FECErrors"
            Local $c=4, $ytitle="&ytitle=Erreurs"
        Case $choix = "ATUCFECErrors"
            Local $c=5, $ytitle="&ytitle=Erreurs"
        Case $choix = "HECErrors"
            Local $c=6, $ytitle="&ytitle=Erreurs"
        Case $choix = "ATUCHECErrors"
            Local $c=7, $ytitle="&ytitle=Erreurs"
        Case $choix = "CRCErrors"
            Local $c=8, $ytitle="&ytitle=Erreurs"
        Case $choix = "ATUCCRCErrors"
            Local $c=9, $ytitle="&ytitle=Erreurs"
        Case $choix = "UpstreamNoiseMargin"
            Local $c=10, $ytitle="&ytitle=dB"
        Case $choix = "DownstreamNoiseMargin"
            Local $c=11, $ytitle="&ytitle=dB"
        Case $choix = "UpstreamAttenuation"
            Local $c=12, $ytitle="&ytitle=dB"
        Case $choix = "DownstreamAttenuation"
            Local $c=13, $ytitle="&ytitle=dB"
    EndSelect

    if $fichierdata = "" Then
        $filename = @SCRIPTDIR & "\data\" & @YEAR & @MON & @MDAY & ".txt"
    else
        $filename = $fichierdata
    EndIf

    $lines = _FileCountLines($filename)
    $Filepath = fileopen($filename,0)

    Local $x="", $y = ""

    For $i = 1 to $lines
        $line = FileReadLine($Filepath)
        $data = StringSplit($line,",")

        if $c>9 Then ; on affiche les dB correctement
            $data[$c] = $data[$c] / 10
        EndIf

        if $i = $lines Then ; on ne met pas de "," après la dernière valeur
            $x = $x & '{"date":"' & $data[1] & '","visits":' & $data[$c] & '}'
        Else
            $x = $x & '{"date":"' & $data[1] & '","visits":' & $data[$c] & '},'
        Endif

    Next
    Fileclose($Filepath)

    ;récupération de la date du fichier...Bonjour l'usine a gaz !
    $g = StringSplit($filename,"\")
    $h = ubound($g) - 1
    $i = StringSplit($g[$h],".")
    $year = StringLeft($i[1],4) ; l'année c'est les 4 caractères de gauche du fichier txt
    $day = stringright($i[1],2) ; le jour: les 2 de droite
    $mon = StringMid($i[1],5,2) ; et le mois: les 2 caractères à partir du 5eme de la gauche...


    $template = fileopen(@SCRIPTDIR & "\" & "template.html",0)
    $html = fileread($template)
    $html = stringreplace($html,"XXXXXXXX",$x)
    $html = stringreplace($html,"TITRE",$choix & " - " & $day & "-" & $mon & "-" & $year)

    $graph = fileopen(@SCRIPTDIR & "\graph\" & $choix & ".html",10)
    FileWrite($graph, $html)

    fileclose($graph)
    fileclose($template)

    shellexecute(@ScriptDir & "\graph\" & $choix & ".html")

EndFunc   ;==>_GetChart


Func _Logout()
    $oHTTP.Open("POST", "http://" & $LIVEBOX & "/logout", False)
    ; $oHTTP.Open("POST", "http://" & $LIVEBOX, False)
    $oHTTP.Send()
    ;$oHTTP = 0
EndFunc   ;==>_Logout


Func auth_livebox()
    $str = "/authenticate?username=" & $USER & "&password=" & $PASSWORD
    $oHTTP.Open("POST", "http://" & $LIVEBOX & $str, False)
    $oHTTP.SetRequestHeader("Content-Type", "application/json")
    $oHTTP.Send()
    $oReceived = $oHTTP.ResponseText
    $sContextID = StringRegExp($oReceived, 'contextID":"([^"]+)"|()$', 1)[0]
    If $sContextID = "" Then
        MsgBox(48, "ERREUR", " Mot de passe incorrect : ")
        Return "NOLOGIN"
    EndIf
EndFunc   ;==>auth_livebox

J'ai modifié aussi l'URL de "logout" pour la mettre en conformité avec ce qui est fait lors d'une session normale.

Dans la fonction "_logout", il faut absolument supprimer (commenter) la ligne "$oHttp = 0" qui détruit le canal de communication avec la LiveBox.

Pour le reste, j'ai un peu feinté pour déterminer s'il faut ou pas fermer la session.
A l'initialisation, avant le premier "_getData", le cycle est à la valeur tapée, et après il est à sa valeur précédente  multipliée par 60000 (millisecondes), donc, si on a une valeur inférieure à 60000, on suppose que c'est avant multiplication, et qu'il faut donc ouvrir la connexion.
Ce n'est pas strictement bon, dans la mesure où on pourrait mettre la périodicité de mesure à 59999 secondes (juste en dessous de 1000 minutes), mais avec une telle périodicité, ça n'a pas beaucoup d'intérêt d'aller analyser les stats de la LiveBox smile

Après le premier "_getData" on change le flag "$bDisconnect" si la périodicité est proche de 10 minutes ou plus, et on fermera la connexion après chaque mesure si le flag est positionné (et on la rouvrira à chaque appel à "_getData").
Il y aura donc une session "fantôme" au second cycle, car la première n'aura pas été fermée (on pourrait faire un "_logout()" lorsqu'on passe ce flag à "True" pour être puriste).

Comme toujours, il y a certainement d'autres solutions plus propres, j'ai voulu minimiser les modifications sur le code original ...


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#93 26-09-2015 10:08:31

shdf
Avant FONO j'avais une vie
Lieu: Maldives
Date d'inscription: 26-03-2012
Messages: 3372
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

@joeker
attention tu as un problème avec l'éditeur Scite, tes caractères accentués sont corompus.
Dans le fichier SciTEUser.properties ajoute ces lignes:

NewFileEncoding=UTF8
utf8.auto.check=4

Ensuite va dans FILE>ENCODING> et choisi UTF-8
Puis sauve ton fichier au3


Fibre RED FTTH ↓ 1Gbps | ↑ 1Gbps - nPerf

Hors ligne

 

#94 26-09-2015 12:34:07

Maxou2600
On est bien ici
Date d'inscription: 16-04-2012
Messages: 219

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Salut shdf, Petite Info, quand on va sur ton site et qu'on clique pour télécharger, c'est l'ancienne version qui se télécharge, tu as du oublier de modifier le lien ^^


https://forum-orange.com/img/signature-universorange//WbNy9eCOB-AqK9wqi2pVuDM1VEw.png

Hors ligne

 

#95 26-09-2015 14:09:30

shdf
Avant FONO j'avais une vie
Lieu: Maldives
Date d'inscription: 26-03-2012
Messages: 3372
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Merci, c'est rectifié wink


Fibre RED FTTH ↓ 1Gbps | ↑ 1Gbps - nPerf

Hors ligne

 

#96 26-09-2015 18:50:52

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonsoir.

shdf a écrit:

@joeker
attention tu as un problème avec l'éditeur Scite, tes caractères accentués sont corompus.
Dans le fichier SciTEUser.properties ajoute ces lignes:

NewFileEncoding=UTF8
utf8.auto.check=4

Ensuite va dans FILE>ENCODING> et choisi UTF-8
Puis sauve ton fichier au3

Oui, j'ai vu après avoir posté, et rectifié ...
C'est peut-être un peu idiot de s'imposer de l'UTF-8 alors que c'est pas l'encodage par défaut sous Windows, non ?

J'ai retravaillé un petit peu sur le script, de façon à ce que le changement de périodicité soit pris en dynamique (à la prochaine lecture de compteurs), ça évite d'arrêter et lancer pour changer la valeur.

Ca donne donc ce qui suit :

Code:

 #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=LBMonitor.ico
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Fileversion=2.3f
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include<File.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("LBMonitor V2.3f", 268, 129, 316, 176)
$Combo1 = GUICtrlCreateCombo("", 16, 88, 145, 25)
GUICtrlSetData(-1, "ErroredSecs|SeverelyErroredSecs|FECErrors|ATUCFECErrors|HECErrors|ATUCHECErrors|CRCErrors|ATUCCRCErrors|UpstreamNoiseMargin|DownstreamNoiseMargin|UpstreamAttenuation|DownstreamAttenuation","ErroredSecs")
$Button1 = GUICtrlCreateButton("Graph", 176, 88, 67, 22)
$Input1 = GUICtrlCreateInput("1", 16, 24, 65, 21, $ES_NUMBER) ; on autorise que les chiffres
$Label1 = GUICtrlCreateLabel("Cycle de lecture des données en Minutes:", 16, 8, 202, 16)
$Button2 = GUICtrlCreateButton("Lancer", 96, 24, 67, 22)
$Button3 = GUICtrlCreateButton("Arrêter", 176, 24, 67, 22)
    GUICtrlSetState($Button3,$GUI_DISABLE)
$Input2 = GUICtrlCreateInput("", 16, 56, 145, 21)
    GUICtrlSetState($Input2,$GUI_DISABLE)
$Button4 = GUICtrlCreateButton("Fichier", 176, 56, 67, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###



Opt("TrayIconHide", 1) ;0=show, 1=hide tray icon

Global $USER = "admin"
Global $LIVEBOX = "livebox"
Global $sContextID = ""
Global $PASSWORD = ""
Global $bDisconnect = False


; On vérifie que le fichier INI est bien présent
$sFilePath = @scriptDir & "\config.ini"
$iFileExists = FileExists($sFilePath)
if $iFileExists Then
    Global $LIVEBOX = IniRead (@scriptDir & "\config.ini","setting","LiveboxIP","192.168.1.1")
    Global $PASSWORD = IniRead (@scriptDir & "\config.ini","setting","password","")
Else
    $Filepath = @ScriptDir & "\config.ini"
    FileOpen($Filepath, 1)
    FileWriteLine($Filepath,"[setting]")
    FileWriteLine($Filepath,"LiveboxIP=192.168.1.1")
    FileWriteLine($Filepath,"password=XXXXXXXX")
    msgbox(48,"ERREUR","Veuillez indiquer votre mot de passe Livebox dans le fichier CONFIG.INI")
    Exit
EndIf

; On vérifie que les étourdis ont bien mis leur mot de passe
if ($PASSWORD ="" or $PASSWORD="XXXXXXXX") Then
    msgbox(48,"ERREUR","Veuillez indiquer votre mot de passe Livebox dans le fichier CONFIG.INI")
    Exit
EndIf

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE ; Fermeture application
            _Logout()
            Exit

        Case $Button1 ; Affichage du Graph
            _GetChart()

        Case $Button2 ; Execution du cycle de lecture des données

            GUICtrlSetState($Button3,$GUI_ENABLE)  ; on active le bouton ARRETER
            GUICtrlSetState($Button2,$GUI_DISABLE) ; on désactive le bouton LANCER

            $cycle = 1

            _GetData() ; On récupère les données

        Case $Button3 ; ARRET de l'execution du cycle de lecture des données

            GUICtrlSetState($Button2,$GUI_ENABLE)  ; on active le bouton LANCER
            GUICtrlSetState($Button3,$GUI_DISABLE) ; on désactive le bouton ARRETER
            AdlibUnRegister("_GetData") ; on arrete le cycle de lecture

        Case $Button4
            Local $sFileOpenDialog = FileOpenDialog("Choisir un fichier de données", @ScriptDir & "\data", "TXT (*.txt)", $FD_FILEMUSTEXIST)
            if $sFileOpenDialog <>"" then
                guictrlsetdata($input2,$sFileOpenDialog)
            EndIf

    EndSwitch
WEnd


Func _GetData()
If $bDisconnect = True or $cycle < 1000 Then
   auth_livebox() ; connexion à la LiveBox
EndIf
            $oldcycle = $cycle
            $cycle = GUICtrlRead($Input1)
            $cycle = $cycle * 60000 ; conversion en minutes

            If $cycle > 595000 Then
              $bDisconnect = True
            Else
              $bDisconnect = False
            EndIf

; Recuperation des donnees DSLStats
$oHTTP.Open("POST", "http://" & $LIVEBOX & "/sysbus/NeMo/Intf/dsl0:getDSLStats", False)
$oHTTP.SetRequestHeader("X-Context", $sContextID)
$oHTTP.Send('{"parameters":{}}')
$getDSLStats = $oHTTP.ResponseText

; Recuperation des donnees MIBs
$oHTTP.Open("POST", "http://" & $LIVEBOX & "/sysbus/NeMo/Intf/data:getMIBs", False)
$oHTTP.SetRequestHeader("X-Context", $sContextID)
$oHTTP.Send('{"parameters":{"mibs":"dsl","flag":"","traverse":"down"}}')
$getMIBs = $oHTTP.ResponseText

$ErroredSecs = StringRegExp($getDSLStats, 'ErroredSecs":(.*),"SeverelyErroredSecs', 3)
$SeverelyErroredSecs = StringRegExp($getDSLStats, 'SeverelyErroredSecs":(.*),"FECErrors', 3)
$FECErrors = StringRegExp($getDSLStats, 'FECErrors":(.*),"ATUCFECErrors', 3)
$ATUCFECErrors = StringRegExp($getDSLStats, 'ATUCFECErrors":(.*),"HECErrors', 3)
$HECErrors = StringRegExp($getDSLStats, 'HECErrors":(.*),"ATUCHECErrors', 3)
$ATUCHECErrors = StringRegExp($getDSLStats, 'ATUCHECErrors":(.*),"CRCErrors', 3)
$CRCErrors = StringRegExp($getDSLStats, 'CRCErrors":(.*),"ATUCCRCErrors', 3)
$ATUCCRCErrors = StringRegExp($getDSLStats, 'ATUCCRCErrors":(.*)}}', 3)

$UpstreamNoiseMargin = StringRegExp($getMIBs, 'UpstreamNoiseMargin":(.*),"DownstreamNoiseMargin', 3)
$DownstreamNoiseMargin = StringRegExp($getMIBs, 'DownstreamNoiseMargin":(.*),"UpstreamAttenuation', 3)
$UpstreamAttenuation = StringRegExp($getMIBs, 'UpstreamAttenuation":(.*),"DownstreamAttenuation', 3)
$DownstreamAttenuation = StringRegExp($getMIBs, 'DownstreamAttenuation":(.*),"UpstreamPower', 3)

; format date = 2015-08-22T18:29:44
$data = @YEAR & "-" & @MON & "-" & @MDAY & "T" & @HOUR & ":" & @MIN & ":" & @SEC & "," & _
$ErroredSecs[0] & "," & _
$SeverelyErroredSecs[0] & "," & _
$FECErrors[0] & "," & _
$ATUCFECErrors[0] & "," & _
$HECErrors[0] & "," & _
$ATUCHECErrors[0] & "," & _
$CRCErrors[0] & "," & _
$ATUCCRCErrors[0] & "," & _
$UpstreamNoiseMargin[0] & "," & _
$DownstreamNoiseMargin[0] & "," & _
$UpstreamAttenuation[0] & "," & _
$DownstreamAttenuation[0]

$date = @YEAR & @MON & @MDAY
$filename = $date & ".txt"
$Filepath = fileopen(@SCRIPTDIR & "\data\" & $filename,9)

FileWriteLine($Filepath,$data)
Fileclose($Filepath)

guictrlsetdata($input2, @ScriptDir & "\data\" & $filename)

If $oldcycle <> $cycle Then
      AdlibRegister("_GetData",$cycle) ; execute la fonction _GetData toutes les x minutes
   EndIf

If $bDisconnect = True Then
  _Logout()
EndIf

Endfunc ;==>_GetData

Func _GetChart()
    $fichierdata = GUICtrlRead($input2)
    $choix = GUICtrlRead($Combo1)
    select
        Case $choix = "ErroredSecs"
            Local $c=2, $ytitle="&ytitle=Erreurs"
        Case $choix = "SeverelyErroredSecs"
            Local $c=3, $ytitle="&ytitle=Erreurs"
        Case $choix = "FECErrors"
            Local $c=4, $ytitle="&ytitle=Erreurs"
        Case $choix = "ATUCFECErrors"
            Local $c=5, $ytitle="&ytitle=Erreurs"
        Case $choix = "HECErrors"
            Local $c=6, $ytitle="&ytitle=Erreurs"
        Case $choix = "ATUCHECErrors"
            Local $c=7, $ytitle="&ytitle=Erreurs"
        Case $choix = "CRCErrors"
            Local $c=8, $ytitle="&ytitle=Erreurs"
        Case $choix = "ATUCCRCErrors"
            Local $c=9, $ytitle="&ytitle=Erreurs"
        Case $choix = "UpstreamNoiseMargin"
            Local $c=10, $ytitle="&ytitle=dB"
        Case $choix = "DownstreamNoiseMargin"
            Local $c=11, $ytitle="&ytitle=dB"
        Case $choix = "UpstreamAttenuation"
            Local $c=12, $ytitle="&ytitle=dB"
        Case $choix = "DownstreamAttenuation"
            Local $c=13, $ytitle="&ytitle=dB"
    EndSelect

    if $fichierdata = "" Then
        $filename = @SCRIPTDIR & "\data\" & @YEAR & @MON & @MDAY & ".txt"
    else
        $filename = $fichierdata
    EndIf

    $lines = _FileCountLines($filename)
    $Filepath = fileopen($filename,0)

    Local $x="", $y = ""

    For $i = 1 to $lines
        $line = FileReadLine($Filepath)
        $data = StringSplit($line,",")

        if $c>9 Then ; on affiche les dB correctement
            $data[$c] = $data[$c] / 10
        EndIf

        if $i = $lines Then ; on ne met pas de "," après la dernière valeur
            $x = $x & '{"date":"' & $data[1] & '","visits":' & $data[$c] & '}'
        Else
            $x = $x & '{"date":"' & $data[1] & '","visits":' & $data[$c] & '},'
        Endif

    Next
    Fileclose($Filepath)

    ;récupération de la date du fichier...Bonjour l'usine a gaz !
    $g = StringSplit($filename,"\")
    $h = ubound($g) - 1
    $i = StringSplit($g[$h],".")
    $year = StringLeft($i[1],4) ; l'année c'est les 4 caractères de gauche du fichier txt
    $day = stringright($i[1],2) ; le jour: les 2 de droite
    $mon = StringMid($i[1],5,2) ; et le mois: les 2 caractères à partir du 5eme de la gauche...


    $template = fileopen(@SCRIPTDIR & "\" & "template.html",0)
    $html = fileread($template)
    $html = stringreplace($html,"XXXXXXXX",$x)
    $html = stringreplace($html,"TITRE",$choix & " - " & $day & "-" & $mon & "-" & $year)

    $graph = fileopen(@SCRIPTDIR & "\graph\" & $choix & ".html",10)
    FileWrite($graph, $html)

    fileclose($graph)
    fileclose($template)

    shellexecute(@ScriptDir & "\graph\" & $choix & ".html")

EndFunc   ;==>_GetChart


Func _Logout()
    $oHTTP.Open("POST", "http://" & $LIVEBOX & "/logout", False)
    $oHTTP.Send()
EndFunc   ;==>_Logout


Func auth_livebox()
    $str = "/authenticate?username=" & $USER & "&password=" & $PASSWORD
    $oHTTP.Open("POST", "http://" & $LIVEBOX & $str, False)
    $oHTTP.SetRequestHeader("Content-Type", "application/json")
    $oHTTP.Send()
    $oReceived = $oHTTP.ResponseText
    $sContextID = StringRegExp($oReceived, 'contextID":"([^"]+)"|()$', 1)[0]
    If $sContextID = "" Then
        MsgBox(48, "ERREUR", " Mot de passe incorrect : ")
        Return "NOLOGIN"
    EndIf
EndFunc   ;==>auth_livebox

J'ai également ajouté une lettre à l'indice de version (2.3f au lieu de 2.3), ça évitera peut-être de se mélanger les pinceaux dans les versions ...


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#97 27-09-2015 23:58:35

JoeKer
MER
Lieu: Dans le désert ...
Date d'inscription: 26-03-2008
Messages: 40232
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonsoir.

JoeKer a écrit:

Dans une phase ultérieure, il sera peut-être intéressant (voire utile) de faire cohabiter sur le même graphique deux ou plusieurs données ... wink

Ghizmo38 a écrit:

Bonjour,

Super boulot que tu fais là, shdf... clin_oeil_up

Des données qu'il serait aussi intéressant de monitorer, ce sont les débits atteignables, up et down.

J'ai commencé à regarder, sur la base de ta remarque (message #67), et des miennes (cf message #49) pour d'une part inclure les données de débit max (up et down), et surtout, pour afficher plusieurs courbes en même temps.

J'ai déjà une mouture qui sait afficher les débits par famille (Erreurs, Debit, Attenuation, Up, Down), mais ce qui serait intéressant, si on part sur des profils de données, serait d'afficher des données qui peuvent être liées dans un même profil.

Dans cette version, on peut changer la périodicité de "capture" des compteurs à la volée (modification prise en compte à la lecture suivante).

Il reste maintenant, a mon avis :
- Pourquoi pas, envisager de récupérer les compteurs à une fréquence plus haute que la minute (par exemple toutes les 5 secondes).
- A trouver les familles de compteurs à afficher simultanément.
- A adapter les échelles (par la gauche et par la droite, par exemple), pour visualiser correctement les variations.
Exemple : Si le compteur d'erreur(s) est à 4000, il ne fera qu'augmenter, pas la peine d'afficher ce qui est en-dessous, mais parallèlement, la marge au bruit peut augmenter ou diminuer (et la valeur va varier entre quelques dB et quelques dizaines de dB au maximum). Il faut donc que l'ensemble soit cohérent ...


On a déjà vu des choses qui ne sont jamais arrivées ...
Suite à un vieux désaccord avec les admins du forum, cette signature indiquera qu'ils n'ont toujours pas remédié à leurs carences.

Hors ligne

 

#98 28-09-2015 00:55:48

sambapati
Avant FONO j'avais une vie
Date d'inscription: 12-03-2015
Messages: 1739

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonsoir à tous,

Pour les compteurs d'erreurs, je trouve visuellement très bien le delta (l'augmentation du compteur) par échantillon (entre deux échantillons successifs) et par minute (voire par heure), par exemple CRC/échantillon (ou ES/échantillon ou par min ou par heure). Cela devrait limiter le max sur l'axe Y à ~1000 pour les CRC (voire moins, normalement je roule à 10-20 comme max), si Vous allez à une fréquence de l'ordre de 1 échantillon tous les 10 secondes. Pour les ES et SES ce sera moins. Penser aussi à une option pour changer le max sur l'axe Y si nécessaire.

En cas de forte perturbation qui fait chuter la synchro on peut avoir des centaines de CRC en 10 secondes.

Cela donnerait une séquence de pics au lieu d'une montée en "escalier". Plus facile à voir, à mon avis.

Penser aussi à une option pour changer le max Y et/ou passer l'axe Y en échelle Log10 si le max est si haut que l'on ne verrait plus les autre pics plus petits.

Bonne nuit.

Hors ligne

 

#99 28-09-2015 01:33:36

AlphaZoulou
Avant FONO j'avais une vie
Date d'inscription: 17-03-2011
Messages: 2879

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Bonjour,

@JoeKer

Il y a une erreur ligne 222 pour l'affichage des infos Down :

La bulle affiche UpstreamAttenuation au lieu de DownstreamNoiseMargin, la valeur est bonne

Local $refs = '"visits11":' & $data[11] & ',"visits13":' & $data[13] & ',"visits16":' & $data[15]/10; & ',"visits17":' & $data[17]/10

doit être
Local $refs = '"visits11":' & $data[11] & ',"visits13":' & $data[13] & ',"visits15":' & $data[15]/10; & ',"visits17":' & $data[17]/10

A+

Dernière modification par AlphaZoulou (28-09-2015 01:36:02)

En ligne

 

#100 28-09-2015 12:27:59

shdf
Avant FONO j'avais une vie
Lieu: Maldives
Date d'inscription: 26-03-2012
Messages: 3372
Site web

Re: [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

moi j'ai décroché... après avoir tenté un système de visualisation combiné des courbes, je laisse joeker mener la barque. wink


Fibre RED FTTH ↓ 1Gbps | ↑ 1Gbps - nPerf

Hors ligne

 
  • Forums
  •  » Logiciel
  •  »  [Autoit] Monitorer les erreurs et la marge au bruit de sa LiveBox

Powered by PunBB
© Copyright 2002–2008 PunBB