Gojabako ZoneKei Ito

auでんきの使用量をCSVにする

に公開

省エネ設備の導入検討にあたってまずは今の電気消費を把握しないと設備のグレードが決められないため、その調査をした記録です。

## auでんき

携帯電話とかauひかりで割引が効くのでauでんきを使っています。管理画面で電気の使用量などが確認できます。

使用量のグラフの例#img1
使用量のグラフの例

グラフの元データである30分ごとの使用量の画面はあるのですが、CSV出力のようなものは提供されていないようです。

年間を通しての使用量の傾向が見たいので365日分のデータが必要ですが、画面クリック→コピーを365回やるのは辛いので↓の方法を考えました。

  1. WebDriverの自動操作で取得
  2. Web APIで取得

## WebDriverの自動操作で取得

やることは次の通りです。

  1. selenium-webdriver管理画面を開く
  2. ログインする
  3. 1日分ずつデータを表示して保存する

この実装が https://gitlab.com/gjbkz/au-denki にあります。

上記のコードを動かしているのがこれです。

#yt-WvFvqi_DCOM

## Web APIで取得

WebDriverを試した後に気が付いたのですが管理画面でDeveloper Toolsを見るとデータをJSONで受けているのがわかります。

Web APIのレスポンス#code1
1{2 "list": [3 {4 "contractId": "K000000000",5 "consignmentDate": "20210924",6 "dailyCost": 407,7 "dailyUsage": 13.9,8 "dataType": 0,9 "halfHourlyUsages": [10 { "usage": 0.3, "status": "0" },11 { "usage": 0.1, "status": "0" },12 { "usage": 0.2, "status": "0" },13 "以下略"14 ]15 }16 ]17}

K000000000(マスク済み)はユーザーIDでしょう。エンドポイントは次のような形式でした。

https://mieru.auone.jp/app/api/v1/dailyPowerReports/K000000000
?startDate=20210924
&endDate=20211124
&withHalfHourlyUsages=1

確認できた特徴は次の通りです。

  1. startDateendDateは2ヶ月より幅があるとエラーになる
  2. ヘッダーにx-evass-api:1が必要

したがってJavaScriptコンソールで↓を実行すると効率よくデータをGETできます。

9月と10月のデータをGETするスクリプト#code2
1fetch(2 'https://mieru.auone.jp/app/api/v1/dailyPowerReports/K000000000?startDate=20210901&endDate=20211101&withHalfHourlyUsages=1',3 { headers: { 'x-evass-api': '1' } },4);

WebDriverの方でデータは取得できていたのでここで手を動かすのはやめました。

## データの可視化

取得したデータをGoogleスプレッドシートに貼って条件付き書式のカラースケールで色をつけました。

  1. 横軸が時刻、縦軸が日付です。
  2. 赤色が濃いところが使用量が大きかった時間です。
  3. 左端の黄色は一日分での比較です。
使用量の傾向#img2
使用量の傾向

### 考察

  1. 朝昼晩にピークがある。電子レンジ・トースター・ドライヤーとか?
  2. 冬と夏の使用量が大きい。
  3. 2021年8月15日前後は雨で気温が低く冷房を使わなかったことがわかる
(参考)2021年8月の気温#img3
(参考)2021年8月の気温

画像のソース(気象庁)