背景
2017年現在、WiMAXでは3日で10GB以上使用した場合、通信速度を遅くする制約がある。
cf. WiMAX2+サービス ネットワーク混雑回避のための速度制限について
通信量自体はWiMAX端末や管理サイトで確認すれば済むことだが、
その方法では過去に発生した通信量を見ることができない。
過去分の通信量も記録していった方が、何かと便利そうだと思い、csvに集計するまでを自動化してみた。
使用する上での前提条件
-> 当スクリプトを使用するにあたって使用者は365日PCを起動することを前提とする。(私がそうなので)
-> また、その日最初のWiMAXの通信はPC以外のケースでは発生しないものとする。
-> WiMAX端末はHUAWEI製品であることを前提とするため、管理サイトは http://speedwifi-next.home を使用する。
※NECプラットフォームズ製品は所持していないため開発できなかった。
-> 通信量は小数点第2までの精度しか取得できないため、
もしかしたら誤差が多少あると思われる。が対策はしない。
実装する上での留意事項
Windows PowerShell 5.0
-> 外部モジュール(Selenium)はクラス構文内では使用できないので、今回は一箇所も使っていない。残念。
cf. https://github.com/PowerShell/PowerShell/issues/2074
-> Web-APIとかないので、SelemiunのWebDriverを使用し、XPathでHTMLを辿りながら値を取得する方法を取っている。
-> ps1ファイルを分割させて書いているが、これは部品化を狙ったというよりも、
PowerShell独特の不安定な挙動をこうすれば直るという経験則からあえて分割している。(根拠なし)
-> 端末はSpeed Wi-Fi NEXT W03(Huawei製品)を使用。
cf. http://www.uqwimax.jp/products/wimax/w03/
利用方法
1, GitHubからコードをzipでダウンロードし、解凍します。
→ https://github.com/nimzo6689/wimax-meter
2, Selenium公式サイトからC#用のドライバ(WebDriver.dll)とchromedriver.exeをダウンロードします。
3, _Settings.ps1に設定値を入力します。(以下、サンプルです。)
[PSCustomObject]@{
Selenium = [PSCustomObject]@{
# Path of WebDriver.dll
WebDriver = "C:\Tools\Selenium\net40\WebDriver.dll"
# Path of chromedriver.exe
ChromeDriver = "C:\Tools\Selenium\driver\chromedriver.exe"
}
Auth = [PSCustomObject]@{
UserType = "admin"
# [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($password))
EncodedPass = "cGFzc3dvcmQ="
}
# Path of wimax_yyyyMMdd.csv
CsvDir = "C:\Users\nimzo6689\Documents\wimax-meter"
}
4, タスクスケジューラにStart.ps1を登録する。
$SchedulerParams = @{
# $(AbsolutePath)には適切な絶対パスに書き換えてください。
Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "$(AbsolutePath)\Start.ps1"
Trigger = New-ScheduledTaskTrigger -DaysInterval 1 -Daily -At "00:00 AM"
Settings = New-ScheduledTaskSettingsSet -Hidden -StartWhenAvailable
}
Register-ScheduledTask -TaskPath \ -TaskName WiMAX-Meta @SchedulerParams -Force
使ってみた感想
あいにく、まだ実装して数日しか使っていないので、何とも言えないです。
1ヵ月以上計測してみて、Excelでいい感じのグラフができるようになれば、
またこの記事を更新していきたいと思います。