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
- Host: GitHub
- URL: https://github.com/bramstroker/homeassistant-powercalc
- Owner: bramstroker
- License: mit
- Created: 2021-06-04T13:10:11.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2026-08-20T18:05:21.000Z (4 days ago)
- Last Synced: 2026-08-20T22:42:39.779Z (4 days ago)
- Topics: consumption, energy-consumption, energy-monitor, energy-monitoring, hacktoberfest, hacs, home-assistant, home-assistant-hacs, homeassistant, iot, metering, power, smart-home, sustainability, virtual-sensors
- Language: Python
- Homepage: https://docs.powercalc.nl
- Size: 116 MB
- Stars: 1,563
- Watchers: 12
- Forks: 404
- Open Issues: 24
- Releases: 441
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Agents: AGENTS.md
README.md
⚡ 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

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:
- Contribute new device profiles
- Share measurements
- Improve accuracy for everyone
See CONTRIBUTING.md to get started, and the Code of Conduct for how we work together.
⭐ Support the project
If PowerCalc helped you:
- ⭐ Star this repository
- ☕ Buy me a coffee
🙌 Powered by
Owner metadata
- Name: Bram Gerritsen
- Login: bramstroker
- Email:
- Kind: user
- Description: Passionate web developer. Like to work on Home automation projects in my spare time.
- Website: https://www.emico.nl
- Location: Rhenen, The Netherlands
- Twitter:
- Company: Emico
- Icon url: https://avatars.githubusercontent.com/u/2345875?u=3bc54d845208b407819688f74e356d9a50d4a38b&v=4
- Repositories: 84
- Last ynced at: 2024-06-11T15:56:48.851Z
- Profile URL: https://github.com/bramstroker
GitHub Events
Total
- Fork event: 69
- Create event: 272
- Commit comment event: 1
- Issues event: 313
- Release event: 45
- Watch event: 237
- Delete event: 266
- Member event: 1
- Issue comment event: 1765
- Push event: 2633
- Pull request review event: 250
- Pull request review comment event: 228
- Pull request event: 1106
Last Year
- Fork event: 69
- Create event: 272
- Commit comment event: 1
- Issues event: 315
- Release event: 45
- Watch event: 237
- Delete event: 266
- Member event: 1
- Issue comment event: 1768
- Push event: 2633
- Pull request review event: 250
- Pull request review comment event: 228
- Pull request event: 1106
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 | 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:
- gmx.net: 3
- bcpearce.com: 2
- me.com: 2
- leap.ac: 1
- currency-one.com: 1
- zapto.de: 1
- business.com: 1
- posteo.de: 1
- gradussen.com: 1
- ausborn.de: 1
- qq.com: 1
- vandalon.nl: 1
- iki.fi: 1
- kabelmail.de: 1
- codechimp.org: 1
- mark.atwood.name: 1
- ichalsroot.de: 1
- roscarraig.com: 1
- vanwerkhoven.org: 1
- dfki.de: 1
- aiven.io: 1
- cafun.nl: 1
- stud.etti.upb.ro: 1
- planet.nl: 1
- emico.nl: 1
- crowdin.com: 1
- invirtus.io: 1
- comcast.net: 1
- philscotty.de: 1
- basecom.de: 1
- naamah.it: 1
- monesi.com: 1
- wheatoncollege.edu: 1
- martinemde.com: 1
- napych.com: 1
- trab.dk: 1
- wouterrutgers.nl: 1
- tom-frenzel.de: 1
- saadeh.dev: 1
- projectcataclysma.com: 1
- knudsvik.com: 1
- sbrandsborg.dk: 1
- ifood.com.br: 1
- fastmail.com: 1
- whi.tw: 1
- uosiu.info: 1
- telenet.be: 1
- malms.aero: 1
- macbookpro.localdomain: 1
- kastarinen.net: 1
- jla3.com: 1
- techtree.co.uk: 1
- fisch3r.net: 1
- koeln.de: 1
- dsander.de: 1
- kleinhans.info: 1
- ikmail.com: 1
- snuzzle.me: 1
- ytterdal.net: 1
- coding4coffee.ch: 1
- microsoft.com: 1
- chrisbreuer.de: 1
- neon1.net: 1
- skarum.net: 1
- cihar.com: 1
- henabytes.com: 1
- nice.net.nz: 1
- triserden.dev: 1
- frenck.dev: 1
- bnck.me: 1
- jhbruhn.de: 1
- pm.me: 1
- fastlikehell.com: 1
- alberg.dk: 1
- takacs.net: 1
- pwnagepeter.net: 1
- sam-dunne.com: 1
- bernards.nl: 1
- illinoisalumni.org: 1
- utwente.nl: 1
- next.gen.nz: 1
- demona.co: 1
- long.id.au: 1
- tigrou.nl: 1
- lommers.org: 1
- nohn.net: 1
- mroliverwine.com: 1
- piio.info: 1
- swiggers.net: 1
- mbks.mbks: 1
- stormshaker.com: 1
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
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
- Total packages: 2
- Total downloads: unknown
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 440
- Total maintainers: 1
nixpkgs-unstable: home-assistant-custom-components.powercalc
Custom Home Assistant component for virtual power sensors
- Homepage: https://github.com/bramstroker/homeassistant-powercalc
- Documentation: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/servers/home-assistant/custom-components/powercalc/package.nix#L51
- Licenses: MIT
- Latest release: 1.20.6 (published 6 months ago)
- Last Synced: 2026-04-19T23:05:55.565Z (4 months ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 0.476%
- Forks count: 0.821%
- Stargazers count: 1.082%
- Maintainers (1)
proxy.golang.org: github.com/bramstroker/homeassistant-powercalc
- Homepage:
- Documentation: https://pkg.go.dev/github.com/bramstroker/homeassistant-powercalc#section-documentation
- Licenses: mit
- Latest release: v1.25.1 (published 3 days ago)
- Last Synced: 2026-08-22T23:56:15.754Z (2 days ago)
- Versions: 437
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.401%
- Average: 5.583%
- Dependent repos count: 5.764%
Dependencies
- 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
- actions/checkout v2 composite
- release-drafter/release-drafter v5 composite
- actions/checkout v2 composite
- home-assistant/actions/helpers/version master composite
- svenstaro/upload-release-action v1-release composite
- actions/checkout v2 composite
- actions/setup-python v1 composite
- coverallsapp/github-action master composite
- actions/checkout v2 composite
- actions/checkout v2 composite
- bramstroker/json-schema-validator master composite
- 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
- actions/stale v8 composite
- actions/labeler v6 composite
- ./.github/workflows/uv-composite-action * composite
- EndBug/add-and-commit v9 composite
- actions/checkout v6 composite
- ./.github/workflows/uv-composite-action * composite
- actions/checkout v6 composite
- actions/github-script v8 composite
- actions/upload-artifact v5 composite
- EndBug/add-and-commit v9 composite
- actions/checkout v6 composite
- actions/setup-python v6 composite
- jakejarvis/cloudflare-purge-action master composite
- actions/checkout v6 composite
- crowdin/github-action v2 composite
- ./.github/workflows/uv-composite-action * composite
- actions/checkout v6 composite
- 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
- actions/checkout v6 composite
- crowdin/github-action v2 composite
- actions/download-artifact v6 composite
- actions/github-script v8 composite
- devicons/public-upload-to-imgur v2 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- actions/setup-python 5fda3b95a4ea91299a34e894583c3862153e4b97 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- astral-sh/setup-uv c771a70e6277c0a99b617c7a806ffedaca235ff9 composite
- actions/github-script 3a2844b7e9c422d3c10d287c895573f7108da1b3 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- actions/dependency-review-action a1d282b36b6f3519aa1f3fc636f609c47dddb294 composite
- actions/github-script 3a2844b7e9c422d3c10d287c895573f7108da1b3 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- zizmorcore/zizmor-action 3dc1ecc9bcb9e94e9b2c709687979e1298497054 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- actions/setup-python 5fda3b95a4ea91299a34e894583c3862153e4b97 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- actions/setup-python 5fda3b95a4ea91299a34e894583c3862153e4b97 composite
- docker/build-push-action 53b7df96c91f9c12dcc8a07bcb9ccacbed38856a composite
- docker/setup-buildx-action bb05f3f5519dd87d3ba754cc423b652a5edd6d2c composite
- docker/setup-qemu-action 96fe6ef7f33517b61c61be40b68a1882f3264fb8 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- ./.github/actions/upsert-pr-comment * composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- actions/download-artifact 3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- hacs/action 1ebf01c408f29afcb6406bd431bc98fd8cbb15aa composite
- home-assistant/actions/hassfest a7c616ce81ccda50150bf1595786c71b1883fabb composite
- ${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
- 194 dependencies
- 261 dependencies
- @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
- homeassistant-api ~=6.0
- jsonschema >=4.0
- pydantic >=2.13
- requests >=2.28
- 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