PowerCalc

Custom component for Home Assistant to estimate the power consumption (as virtual meters) of lights, fans, smart speakers and other devices, which don't have a built-in power meter.
https://github.com/bramstroker/homeassistant-powercalc

Category: Energy Systems
Sub Category: Building Energy Monitoring

Keywords

consumption energy-consumption energy-monitor energy-monitoring hacktoberfest hacs home-assistant home-assistant-hacs homeassistant iot metering power smart-home sustainability virtual-sensors

Keywords from Contributors

hue-lights varta-storage varta climate hacs-integration sensor thermostat tuya lovelace weather

Last synced: about 21 hours ago
JSON representation

Repository metadata

Home Assistant Custom component to calculate estimated power consumption of lights and other appliances

README.md

Version
Downloads
Contributors
hacs_badge
hacs installs
Coverage Status

⚡ Turn any device into an energy monitor, no smart plug required

PowerCalc estimates energy consumption for devices that can't measure it themselves, like lights, fans and media players, with no extra hardware. Instead of measuring power directly, it accurately estimates consumption using smart models based on real measurements, all inside Home Assistant.

On top of power and energy sensors, PowerCalc also creates cost sensors to track spending, utility meters to break usage down by day, week or month, and group sensors to combine devices, rooms or your whole home into a single total.


See it in action

Preview


Why use PowerCalc?

  • 💰 Save money - no need to buy smart plugs for every device
  • 🔍 Full visibility - track energy usage across your entire home
  • Accurate estimates - based on real device measurements
  • 🔌 Works out of the box - huge built-in profile library
  • 🧠 Advanced modeling - brightness, color, fan speed, and more

How it works

PowerCalc creates virtual power sensors in Home Assistant.

For example:

  • 💡 Lights → power based on brightness, color, temperature
  • 🌀 Fans → power based on speed
  • 📺 Other devices → configurable strategies or measured profiles

You get realistic energy data — without physically measuring every device.


Get started


🌍 Community & contributions

PowerCalc is powered by a growing community:

See CONTRIBUTING.md to get started, and the Code of Conduct for how we work together.


⭐ Support the project

If PowerCalc helped you:


🙌 Powered by

JetBrains logo.


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 5 days ago

Total Commits: 6,610
Total Committers: 358
Avg Commits per committer: 18.464
Development Distribution Score (DDS): 0.384

Commits in past year: 2,043
Committers in past year: 101
Avg Commits per committer in past year: 20.228
Development Distribution Score (DDS) in past year: 0.381

Name Email Commits
Bram b****n@e****l 4070
renovate[bot] 2****] 423
pre-commit-ci[bot] 6****] 373
GitHub Actions 4****] 349
CV d****t 90
@RubenKelevra c****d@g****m 74
Crowdin Bot s****t@c****m 53
Michal Bartak m****l@g****m 31
Jarod2801 J****1 26
Alexandre Bertrand a****d@i****o 25
Thorsten1982 T****N@g****m 25
Jort 6****l 20
Maxik933 6****3 19
Linus Nordin l****n@g****m 19
Stefan Gries 1****s 18
Daniel O'Connor d****r@g****m 18
Dr-Seltsam 4****m 18
Marius 3****b 16
dewbot6 d****s@c****t 15
Brian Egge b****e@g****m 15
nepozs 5****s 14
CM000n s****e@g****m 14
philscottydev g****t@p****e 14
Josh Barnard b****e 12
alvinchen1 2****1 12
ltloopy 5****y 12
phoenixxx-1 1****1 12
Jonas Dambacher j****r@b****e 10
LtKowalski 2****i 10
Marcus Voß 4****6 10
and 328 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 2 days ago

Total issues: 423
Total pull requests: 2,378
Average time to close issues: 13 days
Average time to close pull requests: 2 days
Total issue authors: 250
Total pull request authors: 205
Average comments per issue: 4.62
Average comments per pull request: 1.29
Merged pull request: 2,057
Bot issues: 7
Bot pull requests: 799

Past year issues: 76
Past year pull requests: 356
Past year average time to close issues: 7 days
Past year average time to close pull requests: 2 days
Past year issue authors: 54
Past year pull request authors: 48
Past year average comments per issue: 3.59
Past year average comments per pull request: 1.06
Past year merged pull request: 280
Past year bot issues: 0
Past year bot pull requests: 91

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/bramstroker/homeassistant-powercalc

Top Issue Authors

  • bramstroker (40)
  • michalk-k (21)
  • RubenKelevra (16)
  • Mariusthvdb (16)
  • erkr (11)
  • dagobert (10)
  • rugk (9)
  • bcjmk (6)
  • Largelos (4)
  • Stephan-4711 (4)
  • KlaraJa (4)
  • TheSerapher (3)
  • github-actions[bot] (3)
  • wigster (3)
  • Gloomyeye (3)

Top Pull Request Authors

  • bramstroker (773)
  • renovate[bot] (542)
  • github-actions[bot] (151)
  • pre-commit-ci[bot] (106)
  • RubenKelevra (61)
  • dagobert (60)
  • michalk-k (23)
  • dewbot6 (16)
  • stuartp44 (15)
  • Dr-Seltsam (11)
  • barndawgie (11)
  • CloCkWeRX (11)
  • dxmnkd316 (11)
  • Mariusthvdb (11)
  • brianegge (11)

Top Issue Labels

  • bug (249)
  • enhancement (124)
  • Stale (58)
  • model-library (33)
  • group (33)
  • config-flow (31)
  • question (15)
  • measure-tool (14)
  • autodiscovery (13)
  • lut strategy (9)
  • energy-sensor (9)
  • fixed strategy (5)
  • translations (4)
  • measure-app (4)
  • documentation (4)
  • powerprofile (4)
  • wled strategy (3)
  • multi_switch strategy (3)
  • utility-meter (3)
  • daily-fixed (2)
  • subprofile (2)
  • linear strategy (2)
  • cost-sensor (2)
  • composite strategy (1)
  • security (1)
  • profile-website (1)
  • ha-deprecation (1)
  • workflows (1)
  • dependencies (1)

Top Pull Request Labels

  • powerprofile (574)
  • dependencies (540)
  • bug (402)
  • enhancement (309)
  • measure-tool (174)
  • lightmodel (146)
  • documentation (83)
  • translations (19)
  • Stale (16)
  • skip-changelog (15)
  • config-flow (9)
  • utility-meter (6)
  • model-library (6)
  • release (5)
  • autodiscovery (4)
  • multi_switch strategy (4)
  • group (4)
  • generic-model-id (2)
  • subprofile (2)
  • light-model (2)
  • playbook (2)
  • github-action (2)
  • daily-fixed (2)
  • linear strategy (1)
  • energy-sensor (1)
  • wled strategy (1)
  • cost-sensor (1)
  • measure-app (1)

Package metadata

nixpkgs-unstable: home-assistant-custom-components.powercalc

Custom Home Assistant component for virtual power sensors

proxy.golang.org: github.com/bramstroker/homeassistant-powercalc


Dependencies

.github/workflows/publish-measure-image.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/metadata-action v3 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
  • home-assistant/actions/helpers/version master composite
.github/workflows/release-drafter.yml actions
  • actions/checkout v2 composite
  • release-drafter/release-drafter v5 composite
.github/workflows/release.yml actions
  • actions/checkout v2 composite
  • home-assistant/actions/helpers/version master composite
  • svenstaro/upload-release-action v1-release composite
.github/workflows/test.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • coverallsapp/github-action master composite
.github/workflows/validate-lut-files.yml actions
  • actions/checkout v2 composite
.github/workflows/validate-model-json.yml actions
  • actions/checkout v2 composite
  • bramstroker/json-schema-validator master composite
.github/workflows/lint.yml actions
  • actions/cache v2 composite
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • chartboost/ruff-action v1 composite
  • snok/install-poetry v1 composite
.github/workflows/stale.yml actions
  • actions/stale v8 composite
.github/workflows/labeler.yml actions
  • actions/labeler v6 composite
.github/workflows/generate-plots.yml actions
  • ./.github/workflows/uv-composite-action * composite
  • EndBug/add-and-commit v9 composite
  • actions/checkout v6 composite
.github/workflows/pr-comment-generate-plots.yml actions
  • ./.github/workflows/uv-composite-action * composite
  • actions/checkout v6 composite
  • actions/github-script v8 composite
  • actions/upload-artifact v5 composite
.github/workflows/update-profile-library.yml actions
  • EndBug/add-and-commit v9 composite
  • actions/checkout v6 composite
  • actions/setup-python v6 composite
  • jakejarvis/cloudflare-purge-action master composite
.github/workflows/crowdin-upload.yml actions
  • actions/checkout v6 composite
  • crowdin/github-action v2 composite
.github/workflows/test-measure.yml actions
  • ./.github/workflows/uv-composite-action * composite
  • actions/checkout v6 composite
.github/workflows/docs.yml actions
  • actions/checkout v6 composite
  • actions/configure-pages v5 composite
  • actions/deploy-pages v4 composite
  • actions/setup-python v6 composite
  • actions/upload-pages-artifact v4 composite
.github/workflows/crowdin-download.yml actions
  • actions/checkout v6 composite
  • crowdin/github-action v2 composite
.github/workflows/pr-comment-upload-and-comment.yml actions
  • actions/download-artifact v6 composite
  • actions/github-script v8 composite
  • devicons/public-upload-to-imgur v2 composite
.github/workflows/validate-translations.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • actions/setup-python 5fda3b95a4ea91299a34e894583c3862153e4b97 composite
.github/workflows/prepare-measure-release.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • astral-sh/setup-uv c771a70e6277c0a99b617c7a806ffedaca235ff9 composite
.github/workflows/auto-assign-issues.yml actions
  • actions/github-script 3a2844b7e9c422d3c10d287c895573f7108da1b3 composite
.github/workflows/dependency-review.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • actions/dependency-review-action a1d282b36b6f3519aa1f3fc636f609c47dddb294 composite
.github/actions/upsert-pr-comment/action.yml actions
  • actions/github-script 3a2844b7e9c422d3c10d287c895573f7108da1b3 composite
.github/workflows/osv-scanner.yml actions
.github/workflows/zizmor.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • zizmorcore/zizmor-action 3dc1ecc9bcb9e94e9b2c709687979e1298497054 composite
.github/workflows/dev-release.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • actions/setup-python 5fda3b95a4ea91299a34e894583c3862153e4b97 composite
.github/workflows/measure-release.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • actions/setup-python 5fda3b95a4ea91299a34e894583c3862153e4b97 composite
.github/actions/build-measure-docker/action.yml actions
  • docker/build-push-action 53b7df96c91f9c12dcc8a07bcb9ccacbed38856a composite
  • docker/setup-buildx-action bb05f3f5519dd87d3ba754cc423b652a5edd6d2c composite
  • docker/setup-qemu-action 96fe6ef7f33517b61c61be40b68a1882f3264fb8 composite
.github/workflows/deploy-website.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
.github/workflows/validate-model-json-comment.yml actions
  • ./.github/actions/upsert-pr-comment * composite
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • actions/download-artifact 3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c composite
.github/workflows/validate-hacs.yml actions
  • actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
  • hacs/action 1ebf01c408f29afcb6406bd431bc98fd8cbb15aa composite
  • home-assistant/actions/hassfest a7c616ce81ccda50150bf1595786c71b1883fabb composite
utils/measure/Dockerfile docker
  • ${FINAL_STAGE} latest build
  • cli-dependencies latest build
  • ha-app-dependencies latest build
  • node 24-alpine build
  • python 3.14-slim build
  • python-runtime latest build
uv.lock pypi
  • 194 dependencies
utils/measure/frontend/package-lock.json npm
  • 261 dependencies
utils/measure/frontend/package.json npm
  • @babel/core ^8.0.1 development
  • @babel/eslint-parser ^8.0.1 development
  • @babel/plugin-proposal-decorators ^8.0.2 development
  • @babel/preset-typescript ^8.0.1 development
  • @eslint/js ^10.0.1 development
  • @playwright/test ^1.62.1 development
  • eslint ^10.8.1 development
  • eslint-plugin-lit ^2.3.1 development
  • eslint-plugin-wc ^3.1.0 development
  • globals ^17.11.0 development
  • jsdom ^30.0.0 development
  • typescript ^7.0.0 development
  • vite ^8.0.0 development
  • vitest ^4.0.0 development
  • lit ^3.3.1
pyproject.toml pypi
utils/measure/pyproject.toml pypi
  • homeassistant-api ~=6.0
  • jsonschema >=4.0
  • pydantic >=2.13
  • requests >=2.28
utils/measure/uv.lock pypi
  • aiohappyeyeballs 2.7.1
  • aiohttp 3.14.3
  • aiohue 4.9.0
  • aiosignal 1.4.0
  • annotated-doc 0.0.5
  • annotated-types 0.8.0
  • ansicon 1.89.0
  • anyio 4.14.2
  • ast-serialize 0.8.0
  • asyncclick 8.4.2.1
  • asyncio-throttle 1.0.2
  • attrs 26.1.0
  • awesomeversion 25.8.0
  • blessed 1.48.0
  • certifi 2026.7.22
  • cffi 2.1.1
  • charset-normalizer 3.5.1
  • click 8.4.2
  • colorama 0.4.6
  • contourpy 1.3.3
  • coverage 7.15.4
  • cryptography 50.0.0
  • cycler 0.12.1
  • editor 1.8.0
  • fastapi 0.141.1
  • fonttools 4.63.0
  • frozenlist 1.8.0
  • h11 0.16.0
  • homeassistant-api 6.0.1
  • httpcore2 2.10.0
  • httpx2 2.10.0
  • httpx2-jsfetch 1.0
  • idna 3.18
  • iniconfig 2.3.0
  • inquirer 3.4.1
  • jh2 5.0.13
  • jinxed 2.1.0
  • jsonschema 4.26.0
  • jsonschema-specifications 2025.9.1
  • kiwisolver 1.5.0
  • librt 0.15.0
  • mashumaro 3.22
  • matplotlib 3.11.1
  • measure 0.1.0
  • multidict 6.7.1
  • mypy 2.3.1
  • mypy-extensions 1.1.0
  • niquests 3.21.0
  • numpy 2.5.2
  • opencv-python-headless 5.0.0.93
  • packaging 26.3
  • pathspec 1.1.1
  • pillow 12.3.0
  • pluggy 1.6.0
  • propcache 0.5.2
  • pycparser 3.0
  • pycryptodome 3.23.0
  • pydantic 2.14.0b1
  • pydantic-core 2.48.0
  • pygments 2.21.0
  • pyparsing 3.3.2
  • pytesseract 0.3.13
  • pytest 9.1.1
  • pytest-cov 7.1.0
  • python-dateutil 2.9.0.post0
  • python-decouple 3.8
  • python-kasa 0.10.2
  • qh3 1.9.4
  • readchar 4.2.2
  • referencing 0.37.0
  • requests 2.34.2
  • rpds-py 2026.6.3
  • ruff 0.16.3
  • runs 1.3.0
  • simplejson 3.20.2
  • six 1.17.0
  • starlette 1.6.0
  • tinytuya 1.20.0
  • truststore 0.10.4
  • tuyapower 0.2.0
  • typing-extensions 4.16.0
  • typing-inspection 0.4.4
  • tzdata 2026.3
  • urllib3 2.7.0
  • urllib3-future 2.24.901
  • uvicorn 0.52.3
  • wassima 2.1.3
  • wcwidth 0.8.2
  • wsproto 1.3.2
  • xmod 1.10.0
  • yarl 1.24.5

Score: 13.250133706927109