Bonjour,
voici un petit utilitaire qui va vous permettre de monitorer les informations suivantes:
ErroredSecs
SeverelyErroredSecs
FECErrors
ATUCFECErrors
HECErrors
ATUCHECErrors
CRCErrors
ATUCCRCErrors
UpstreamNoiseMargin
DownstreamNoiseMargin
UpstreamAttenuation
DownstreamAttenuation
Le programme va lire ces valeurs dans la LiveBox toutes les x secondes et les stocker dans un fichier texte au format CSV (séparateur virgule).
Pour le moment j'ai réglé à 1 lecture toutes les 60 secondes. On verra plus tard si ce n'est pas trop.
Ensuite une fois les données récoltées on peut à tout moment afficher un graphique de l'évolution. Les données sont envoyées à http://www.chartgo.com/ qui nous génère un graphique sous la forme d'une image PNG.
Les données sont stockées dans le dossier data, dans un fichier qui a comme nom l'année/mois/jour.
Les graphiques sont stockés dans le dossier graph avec le nom qui correspond au choix dans le menu déroulant.
Attention, pour les erreurs il s'agit de graphiques avec les valeurs CUMULÉES, telles qu'elles sont stockées dans la LiveBox.
Pour les marges au bruits et atténuations ce sont les valeurs instantanées.
Une fois l'application lancée, il suffit de la laisser tourner, on peut la minimiser dans un coin, ca ne consomme pas de ressources CPU et très peu de mémoire.
Voici à quoi cela ressemble:
Voici un exemple de graphique obtenu:
En abscisse chaque palier représente donc 60 secondes.
Le code source est fourni dans l'archive.
Aucune installation requise, décompressez l'archive, Pensez à mettre votre mot de passe LiveBox dans le fichier config.ini et lancez LBmonitor.exe
Attention: l'application a évolué, la dernière version téléchargeable est ici:
https://www.liveboxinfos.ga/download.html
elle ne correspond plus a ce qui est indiqué dans ce post.
Dernière modification par shdf (20-06-2021 10:23:04)
Hors ligne
Salut,
c'est ce qu'il me fallait
Hors ligne
Par contre je pense qu'il faudrait soit mettre 1min si on veux laisser tourner le logiciel pas longtemps genre 1-2h mais après il faudrait voir plus sur 10 nim si on le laisse tourner 12-24h, non?
Hors ligne
oui je sais, il faut que je fasse un truc pour que l'utilisateur puisse décider de la durée du cycle.
je te compile une version spéciale qui capture les données toutes les 10 minutes et je la poste ici.
EDIT:
http://www.liveboxinfo.tk/download/LBmonitor_10min.zip
il faut donc utiliser LBmonitor_10min.exe pour un cycle de 10 minutes. et ne pas oublier de supprimer le fichier TXT de data précédent avant de le lancer.
EDIT2:
la version normale capture les infos toutes les 60 secondes, et pas 30...me suis trompé.
Dernière modification par shdf (19-09-2015 12:56:27)
Hors ligne
en tout cas c'et nickel, ma marge au bruit varie entre 8.8 et 9.3
Hors ligne
Bonjour,
Merci à toi shdf pour ce nouvel outil.
Serait-il possible d'améliorer l'échelle des temps, car au bout de quelques heures, on ne peut plus décoder grand chose.
Suggestion ( oui, je sais c'est facile à dire ):
au lieu de compter les minutes, l'affichage de l'heure serait un plus appréciable...
Exemple chez moi, je ne sais pas à quelle heure s'est produit le bond entre 2400 et 2600.
http://imgur.com/cl7xf9v
A+
Dernière modification par AlphaZoulou (19-09-2015 16:59:33)
Hors ligne
ben le problème c'est Chartgo.com...si tu trouves le paramétrage qui va bien dis moi parce que je cherche encore...
peut-être qu'il y a un autre service en ligne qui fait mieux ?
Dernière modification par shdf (19-09-2015 17:37:50)
Hors ligne
Ouais, effectivement, c'est pas souple...
A+
Hors ligne
je regarde celui-ci:
http://www.onlinecharttool.com/
Hors ligne
Avec Excel, c'est relativement lisible
Excel
Dernière modification par AlphaZoulou (19-09-2015 18:11:17)
Hors ligne
Bonsoir.
On ne t'arrête plus, shdf ?
Excellente initiative, en tout cas
Hors ligne
shdf a écrit:
ben le problème c'est Chartgo.com...si tu trouves le paramétrage qui va bien dis moi parce que je cherche encore...
peut-être qu'il y a un autre service en ligne qui fait mieux ?
humm...déjà en mettant Label Orientation sur vertical on arrive à lire jusqu'à 100 entrées. J'ai mis à jour le lien.
Dernière modification par shdf (19-09-2015 19:28:32)
Hors ligne
Ce qui me paraissait intéressant était d'avoir la date et l'heure de mesure en abcisse (au lieu de 1, 2, 3 ...x).
Et d'avoir la date dans le titre du graphe ...
Le code ci-dessous correspond à ces modifications :
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=LBMonitor.ico #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_Res_Fileversion=1.0 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include<File.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("LBMonitor", 266, 99, 316, 176) $Combo1 = GUICtrlCreateCombo("", 16, 16, 145, 25) GUICtrlSetData($Combo1, "ErroredSecs|SeverelyErroredSecs|FECErrors|ATUCFECErrors|HECErrors|ATUCHECErrors|CRCErrors|ATUCCRCErrors|UpstreamNoiseMargin|DownstreamNoiseMargin|UpstreamAttenuation|DownstreamAttenuation", "ErroredSecs") $Button1 = GUICtrlCreateButton("Graph", 176, 16, 75, 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 = "" ; 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") auth_livebox() _GetData() AdlibRegister("_GetData",60000) ; execute la fonction _GetData toutes les 60 secondes While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE _Logout() Exit Case $Button1 _GetChart() EndSwitch WEnd Func _GetData() ; 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) $data = @HOUR & ":" & @MIN & "," & _ $ErroredSecs[0] & "," & _ $SeverelyErroredSecs[0] & "," & _ $FECErrors[0] & "," & _ $ATUCFECErrors[0] & "," & _ $HECErrors[0] & "," & _ $ATUCHECErrors[0] & "," & _ $CRCErrors[0] & "," & _ $ATUCCRCErrors[0] & "," & _ $UpstreamNoiseMargin[0] & "," & _ $DownstreamNoiseMargin[0] & "," & _ $UpstreamAttenuation[0] & "," & _ $DownstreamAttenuation[0] $filename = @YEAR & @MON & @MDAY & ".txt" $Filepath = fileopen(@SCRIPTDIR & "\data\" & $filename,9) FileWriteLine($Filepath,$data) Fileclose($Filepath) Endfunc ;==>_GetData Func _GetChart() $link = "http://www.chartgo.com/preview.do?" $params = "&charttype=line&width=900&height=400&chrtbkgndcolor=white&labelorientation=vertical&fonttypetitle=bold&fonttypelabel=normal&gridlines=1&transparency=1&group1=Group+1&viewsource=mainView&language=fr" $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 $title = "&title=" & $choix & " " & @YEAR & "/" & @MON & "/" & @MDAY $filename = @YEAR & @MON & @MDAY & ".txt" $lines = _FileCountLines(@SCRIPTDIR & "\data\" & $filename) $Filepath = fileopen(@SCRIPTDIR & "\data\" & $filename,0) Local $x="&xaxis1=", $y = "&yaxis1=" For $i = 1 to $lines $line = FileReadLine($Filepath) $data = StringSplit($line,",") $x = $x & $data[1] & "%0D%0A" if $c>9 Then ; on affiche les dB correctement $data[$c] = $data[$c] / 10 EndIf $y = $y & $data[$c] & "%0D%0A" Next Fileclose($Filepath) $hDownload = InetGet($link & $title & $ytitle & $x & $y & $params, @ScriptDir & "\graph\" & $choix & ".png", 1) InetClose($hDownload) shellexecute(@ScriptDir & "\graph\" & $choix & ".png") EndFunc ;==>_GetChart Func _Logout() $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
Hors ligne
j'ai changé la méthode pour le graphique, je passe sur une page web en html5 avec le code de http://www.chartjs.org/, Donc on reste en local, plus d'envoi de données sur le net.
Je change de branche et je passe cette mouture en V2:
http://www.liveboxinfo.tk/download/LBmonitor2.zip
Voici le principe:
j'ai un fichier Template.html pré établi, dans lequel j'injecte les datas.
Le titre à la place de TITRE
Les données en abscisse à la place de XXXXXXXX
Les données en ordonnée à la place de YYYYYYYY
Ensuite je sauvegarde dans le dossier le résultat de la page HTML.
@joeker
reste plus qu'a apporter tes modifications dans cette nouvelle version
Dernière modification par shdf (19-09-2015 22:14:33)
Hors ligne
@shdfJe n'obtiens qu'une page html blanche ???Le fichier data est bien renseigné
A+
Oups, le fichier Template.html n'était pas dans le bon dossier !
Dernière modification par AlphaZoulou (19-09-2015 22:40:24)
Hors ligne
Hors ligne
AlphaZoulou a écrit:
@shdf
Je n'obtiens qu'une page html blanche ???
Le fichier data est bien renseigné
A+
Oui, moi également
Je me demande si ça ne tient pas au navigateur ...
Pour moi, Firefox 34.0.5, Adblock Plus désactivé (ou pas, c'est pareil).
[Edit]
Pour citer AlphaZoulou ...
Et mon fichier template est bien au bon endroit ...
[/Edit]
Dernière modification par JoeKer (19-09-2015 22:42:29)
Hors ligne
je viens de mettre en ligne la version avec les modifs de joeker.
Chez moi ca marche avec IE/Chrome et Firefox...
Si vous avez une page blanche regardez le code source de la page générée dans le dossier graph.
les abscisses doivent ressembler a ca:
labels : ["22:29","22:30","22:31","22:32","22:33","22:34","22:37","22:38"],
les ordonnées doivent ressembler a ca:
data : [2622175,2622202,2622205,2622211,2622217,2622232,2622245,2622278]
le fichier Template.html doit afficher une page blanche, c'est normal. c'est quand il est copié dans le dossier graph et avec des données à l'intérieur qu'il fonctionne.
Dernière modification par shdf (19-09-2015 22:49:58)
Hors ligne
Ca marche aussi chez moi.
On pourrait mettre l'heure à la verticale pour gagner de la place ?
Ou aussi n'afficher l'heure que toutes les 10 minutes toujours pour gagner en lisibilité ?
A+
penser à effacer le fichier des datas entre chaque version..
Dernière modification par AlphaZoulou (19-09-2015 23:01:36)
Hors ligne
OK, j'ai trouvé l'erreur ...
J'avais
labels : [22:32,22:33,22:34,22:38]
au lieu de
labels : ["22:29","22:30","22:31","22:32","22:33","22:34","22:37","22:38"]
Pas double quotes autour des heures:minutes ...
Personnellement, je trouvais très bien la version avec le fichier png (pas jpg ) ...
Hors ligne
alors là, nickel
Hors ligne
l'heure passe à la verticale toute seule quand ca commence a serrer dans les abscisses
Hors ligne
On va laisser tourner alors
A+
Hors ligne
@joeker
la version 1 avec l'image en PNG pose problème quand il y a trop de données, regarde l'image postée par AlphaZoulou en #6.
Mais tu peux continuer a faire évoluer la V1, tu maitrises suffisamment autoit
Dernière modification par shdf (19-09-2015 23:07:34)
Hors ligne
heu, question. S'il y a une désynchro, y ce passe quoi?
Hors ligne