Skip to main content

enecoQ Data Fetcher

enecoQ から電力使用量、電力使用料金、CO2 排出量を取得する CLI ツールです。enecoQ は株式会社ファミリーネットジャパンが提供する CYBERHOME サービス内の電力データ管理 Web サービスで、公開 API がないため、このツールは Playwright でブラウザを操作してデータを取得します。今日または今月のデータを JSON かコンソール表示で出力します。

必要要件

  • CYBERHOME(enecoQ)のアカウント
  • Python 3.10 以上

インストール

どの方法でも、初回に Playwright のブラウザ(Chromium)のインストールが必要です。

uvx

インストールせずに直接実行できます。

uvx --from enecoq-data-fetcher playwright install chromium
uvx enecoq-data-fetcher --email your@email.com --password yourpassword

uv tool

uv tool install --with-executables-from playwright enecoq-data-fetcher
playwright install chromium

--with-executables-from playwright を付けると、依存パッケージの playwright コマンドも PATH に入ります。

pipx

pipx install --include-deps enecoq-data-fetcher
playwright install chromium

pip

仮想環境を有効にした状態で実行してください。

pip install enecoq-data-fetcher
playwright install chromium

使用方法

enecoq-data-fetcher --email your@email.com --password yourpassword

uvx の場合は先頭を uvx enecoq-data-fetcher に置き換えてください。

引数 説明 デフォルト値 必須
--email CYBERHOME(enecoQ)のメールアドレス - ✓
--password CYBERHOME(enecoQ)のパスワード - ✓
--period データ取得期間(today または month) month
--format 出力形式(json または console) json
--output JSON 出力先ファイルパス -
--config 設定ファイルパス config.yaml
--log-level ログレベル(DEBUG, INFO, WARNING, ERROR) INFO
--log-file ログファイルパス -
# 今日のデータをコンソールに表示
enecoq-data-fetcher --email your@email.com --password yourpassword --period today --format console

# 今月のデータを JSON ファイルに保存
enecoq-data-fetcher --email your@email.com --password yourpassword --output data/power_data.json

出力形式

JSON

{
  "period": "month",
  "timestamp": "2024-01-15T10:30:00.123456+09:00",
  "usage": 250.5,
  "cost": 7515.0,
  "co2": 125.25
}

JSON には単位が含まれません。usage は kWh、cost は円(JPY)、co2 は kg です。値は期間の開始からの累計です。timestamp は取得した時刻で、実行環境のタイムゾーンのオフセットが付きます。

コンソール

==============================
enecoQ Data
==============================

Period: month
Timestamp: 2024-01-15 10:30:00

Power Usage: 250.5 kWh
Power Cost: 7515.0 JPY
CO2 Emission: 125.25 kg

==============================

ログ

ログは標準ではコンソールにだけ出力されます。--log-file を指定すると、DEBUG レベル以上のログがそのファイルにも記録されます。認証情報はどちらにも記録されません。

enecoq-data-fetcher --email your@email.com --password yourpassword --log-file logs/enecoq.log

設定ファイル

カレントディレクトリの config.yaml(または --config で指定したファイル)でデフォルト設定を変更できます。項目は config.yaml.example を参照してください。

log_level: INFO
log_file: logs/enecoq.log
timeout: 30
max_retries: 3

max_retries は、取得に失敗したときに最初の試行に追加でやり直す回数です(0 でやり直しなし)。--config で指定したファイルが存在しない場合や、値の型が正しくない場合、知らない項目がある場合はエラーになります。

コマンドライン引数と設定ファイルの両方で指定した場合は、コマンドライン引数が優先されます。

他システムとの連携例

cron での定期実行

毎時 42 分にデータを取得してファイルに保存する例です。多くの人が同じ時刻にアクセスすると enecoQ のサーバーに負荷がかかるので、42 は 1〜59 の好きな数字に変えてください。さらに 0〜59 秒のランダムな待機を入れています。$RANDOM は bash の機能なので、SHELL=/bin/bash を指定しています。

crontab -e
SHELL=/bin/bash
42 * * * * sleep $((RANDOM \% 60)) && enecoq-data-fetcher --email your@email.com --password yourpassword --output /path/to/enecoq_data.json

Home Assistant

cron で保存した JSON ファイルを command_line センサーで読み込みます。スクレイピングは cron の 1 回だけで済み、3 つのセンサーは同じファイルを読みます。

# configuration.yaml
command_line:
  - sensor:
      name: "enecoQ Power Usage"
      command: "cat /config/data/enecoq_data.json"
      value_template: "{{ value_json.usage }}"
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
      icon: mdi:lightning-bolt
      scan_interval: 300
  - sensor:
      name: "enecoQ Power Cost"
      command: "cat /config/data/enecoq_data.json"
      value_template: "{{ value_json.cost }}"
      unit_of_measurement: "JPY"
      device_class: monetary
      state_class: total
      icon: mdi:cash
      scan_interval: 300
  - sensor:
      name: "enecoQ CO2 Emission"
      command: "cat /config/data/enecoq_data.json"
      value_template: "{{ value_json.co2 }}"
      unit_of_measurement: "kg"
      state_class: total_increasing
      icon: mdi:molecule-co2
      scan_interval: 300

monetary の device class には total しか使えないため、料金センサーだけ state_class が異なります。

Utility Meter で期間ごとの値を出す

このツールの値は累計なので、1 時間ごとや 1 日ごとの値は Utility Meter で計算します。次の例は 1 時間ごとの電力使用量、料金、CO2 排出量のセンサー(sensor.enecoq_power_usage_hourly など)を作ります。

# configuration.yaml
utility_meter:
  enecoq_power_usage_hourly:
    source: sensor.enecoq_power_usage
    cycle: hourly
  enecoq_power_cost_hourly:
    source: sensor.enecoq_power_cost
    cycle: hourly
  enecoq_co2_emission_hourly:
    source: sensor.enecoq_co2_emission
    cycle: hourly

日ごとの値が欲しい場合は、--period month で取得したデータを使い、cycle: daily にします。

開発

uv sync
uv run playwright install chromium
./tests/run_tests.sh
uv build

1 つのテストファイルだけを実行するときは PYTHONPATH=src uv run python tests/test_exporter.py のように実行します。テストの詳細は tests/README.md、コーディング規約やリリース手順は AGENTS.md にあります。

トラブルシューティング

Playwright のブラウザが見つからない

次のようなエラーが出たら、インストールの手順で Chromium をインストールしてください。

Executable doesn't exist at /root/.cache/ms-playwright/chromium_headless_shell-1194/chrome-linux/headless_shell

認証エラーが出る

メールアドレスとパスワードが正しいか、ブラウザから enecoQ に直接ログインできるかを確認してください。

データが取得できない

--log-level DEBUG を付けて実行し、詳細なログを確認してください。--log-file を指定すればログをファイルに残せます。enecoQ 自体が停止していないかも確認してください。

Release files for enecoq-data-fetcher 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for enecoq-data-fetcher 3.0.0
File Size Uploaded
enecoq_data_fetcher-3.0.0.tar.gz 93.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for enecoq-data-fetcher 3.0.0
File Interpreter ABI Platform
enecoq_data_fetcher-3.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 115.4 kB

Release files / enecoq_data_fetcher-3.0.0.tar.gz

Download URL enecoq_data_fetcher-3.0.0.tar.gz
Size 93.9 kB
Tags Source
SHA-256 checksum
How to use checksums
db936f4d82906d0e577138a95c9d3701ade51c3c442a3e507afcf4af4466da16
BLAKE2b-256 checksum
How to use checksums
2db651e3f49c06de272d67d9a9ddf36470aca831ed5456d89b9ed89f95b76e46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / enecoq_data_fetcher-3.0.0-py3-none-any.whl

Download URL enecoq_data_fetcher-3.0.0-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c7cd6bdfa58c2bb6e2d8983f19f08707c896260d408c0c73904c20645f299421
BLAKE2b-256 checksum
How to use checksums
88c8b9b2a09527381129cc1682d6cd9ce9fcaeff3a38fa5f30f1d0e136d9ccbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page