ガラケーからスマートホンに乗り換えて暫く経ちますが、最終的にまたガラケーに戻ることにしました。ガラケーに戻るものの、やはりスマホの便利さも捨てがたく、そこで、スマホのデータ通信用回線に So-net モバイルサービスが運営する 0 SIM を契約しました。0 SIM のスゴイところは、毎月 500MB まで月額無料で使えるという点で、ほとんど自宅の WiFi 圏内をウロウロしている身としては 500MB もあれば十分なのです*1。
ただ、ちょっと油断すると足が出てしまうので*2、月額無料を達成するためには、サービスの管理画面にログインして現在の通信量をこまめにチェックしなければなりません。しかし、わざわざブラウザで管理画面を開いて、アカウントとパスワードを入力して目視するのも面倒くさい。
…というわけで、0 SIM の管理画面をスクレイピングして、メール送信してくれる Perl スクリプトを書いてみました。自宅のサーバに仕込んで定期実行されるようにしておき、毎朝、ガラケーに使用量のサマリが届くようにしています。
0 SIM の通信量が 400MB を超えると、So-net から通知メールが届きます。しかしそれ以前に、今日現在の使用状況を細かく把握するには、スマホの通信量モニタを使う方法でも概算できますが、実際の通信量を見るには、サービスの管理画面にログインして確認する以外に方法がありません。
ちなみに、通信量を把握するために、この管理画面を 0 SIM の回線を使って閲覧なんてしてたら笑えませんヨ*3。そもそも、ブラウザを開いて、管理画面にログインして、[ご利用状況確認]ボタンを押して…という手間が面倒くさいです。そこで、これらの操作を自動的に行って、利用状況の表から必要な数値を抜き出し、メールしてくれる Perl スクリプトを書いてみました。実行すると、設定したメールアドレス宛に次のようなメールが届きます。
$VAR1 = { 'Yesterday' => '0', 'ThisMonth' => 171, 'Yesterday2' => '-', 'Today' => '-', 'PaceRatio' => '66.3' };
ThisMonth
Today
Yesterday
Yesterday2
PaceRatio
RestUsable
LimitExceed
Fee
ソースコード内の %config のうち、少なくとも UserName、PassWord、To を設定してください。
### 動作設定 my %config = ( # 会員用ウェブサイトのログイン情報 UserName => '07012345678', PassWord => 'password', # 通知メールの設定 Mail => { To => 'mail@example.com', Subject => '0SIM 通信量', }, # 会員用ウェブサイトから現在値を取得せず、取得済みのダンプを使用する場合に 1 UseDump => 0, # 会員用ウェブサイトの HTML をダンプするファイル名 DumpFile => '0sim_dump.html', );
UserName
PassWord
To
Subject
UseDump
DumpFile
Linux サーバや Windows+ActivePerl などの環境で実行できます。cron
などで定期実行しておくと便利です。
■ 使用量を取得して画面に表示する perl 0sim.cgi ■ 使用量を取得して画面に表示し、メール通知する perl 0sim.cgi --mail
Perl CGI としても動作させられるので、自前の Web サーバなどに設置して使用量の確認とメール通知を行えます。例えば、毎朝定時にメール送信されるようにはしてあるものの、今直近での使用量を確認したい場合などです。外部に公開された Web サーバなど誰にでも見られてしまうとマズイので、Basic 認証などで必ず隠してください。
■ 使用量を取得して画面に表示する http://www.example.com/secret/0sim/0sim.cgi ■ 使用量を取得して画面に表示し、メール通知する http://www.example.com/secret/0sim/0sim.cgi?mail