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 weather lovelace
Last synced: about 20 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 (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2026-05-25T12:57:53.000Z (9 days ago)
- Last Synced: 2026-05-25T14:32:47.353Z (8 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: 65.2 MB
- Stars: 1,487
- Watchers: 12
- Forks: 382
- Open Issues: 3
- Releases: 430
-
Metadata Files:
- Readme: README.md
- Funding: FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
- Agents: AGENTS.md
README.md
β‘ Turn any device into an energy monitor, no smart plug required
PowerCalc brings energy monitoring to devices that normally donβt support it.
- Lights, fans, media devices, and more
- No extra hardware needed
- Works seamlessly inside Home Assistant
Instead of measuring power directly, PowerCalc accurately estimates consumption using smart models based on real measurements.
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
- π Quick Start Guide
- π Full Documentation
- π Device Profile Library
π Community & contributions
PowerCalc is powered by a growing community:
- Contribute new device profiles
- Share measurements
- Improve accuracy for everyone
β 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: 6 days ago
Total Commits: 5,987
Total Committers: 338
Avg Commits per committer: 17.713
Development Distribution Score (DDS): 0.393
Commits in past year: 1,602
Committers in past year: 86
Avg Commits per committer in past year: 18.628
Development Distribution Score (DDS) in past year: 0.428
| Name | Commits | |
|---|---|---|
| Bram | b****n@e****l | 3633 |
| pre-commit-ci[bot] | 6****] | 373 |
| renovate[bot] | 2****] | 351 |
| GitHub Actions | 4****] | 340 |
| CV | d****t | 90 |
| @RubenKelevra | c****d@g****m | 74 |
| Crowdin Bot | s****t@c****m | 48 |
| Michal Bartak | m****l@g****m | 31 |
| Jarod2801 | J****1 | 26 |
| Thorsten1982 | T****N@g****m | 25 |
| Alexandre Bertrand | a****d@i****o | 25 |
| Jort | 6****l | 20 |
| 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 |
| CM000n | s****e@g****m | 14 |
| nepozs | 5****s | 14 |
| Brian Egge | b****e@g****m | 14 |
| Josh Barnard | b****e | 12 |
| alvinchen1 | 2****1 | 12 |
| ltloopy | 5****y | 12 |
| LtKowalski | 2****i | 10 |
| Marcus VoΓ | 4****6 | 10 |
| Miguel | m****2 | 10 |
| misa1515 | 6****5 | 10 |
| Jonas Dambacher | j****r@b****e | 10 |
| Tim | 7****l | 9 |
| and 308 more... | ||
Committer domains:
- me.com: 2
- gmx.net: 2
- uosiu.info: 1
- zapto.de: 1
- posteo.de: 1
- bcpearce.com: 1
- gradussen.com: 1
- ausborn.de: 1
- qq.com: 1
- vandalon.nl: 1
- codechimp.org: 1
- kabelmail.de: 1
- mark.atwood.name: 1
- iki.fi: 1
- vanwerkhoven.org: 1
- roscarraig.com: 1
- aiven.io: 1
- frenck.dev: 1
- cafun.nl: 1
- planet.nl: 1
- bnck.me: 1
- jhbruhn.de: 1
- emico.nl: 1
- crowdin.com: 1
- invirtus.io: 1
- comcast.net: 1
- basecom.de: 1
- naamah.it: 1
- monesi.com: 1
- trab.dk: 1
- wouterrutgers.nl: 1
- napych.com: 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
- leap.ac: 1
- currency-one.com: 1
- malms.aero: 1
- macbookpro.localdomain: 1
- jla3.com: 1
- chrisbreuer.de: 1
- techtree.co.uk: 1
- fisch3r.net: 1
- koeln.de: 1
- dsander.de: 1
- kleinhans.info: 1
- ikmail.com: 1
- ytterdal.net: 1
- snuzzle.me: 1
- coding4coffee.ch: 1
- microsoft.com: 1
- neon1.net: 1
- skarum.net: 1
- cihar.com: 1
- henabytes.com: 1
- nice.net.nz: 1
- triserden.dev: 1
- stormshaker.com: 1
- alberg.dk: 1
- fastlikehell.com: 1
- pm.me: 1
- pwnagepeter.net: 1
- dfki.de: 1
- takacs.net: 1
- illinoisalumni.org: 1
- utwente.nl: 1
- next.gen.nz: 1
- demona.co: 1
- long.id.au: 1
- tigrou.nl: 1
- lommers.org: 1
- sam-dunne.com: 1
- bernards.nl: 1
- nohn.net: 1
- piio.info: 1
- swiggers.net: 1
- kastarinen.net: 1
- mbks.mbks: 1
- telenet.be: 1
Issue and Pull Request metadata
Last synced: 6 days ago
Total issues: 385
Total pull requests: 2,157
Average time to close issues: 14 days
Average time to close pull requests: 3 days
Total issue authors: 231
Total pull request authors: 188
Average comments per issue: 4.73
Average comments per pull request: 1.32
Merged pull request: 1,857
Bot issues: 7
Bot pull requests: 755
Past year issues: 54
Past year pull requests: 251
Past year average time to close issues: 9 days
Past year average time to close pull requests: 4 days
Past year issue authors: 42
Past year pull request authors: 37
Past year average comments per issue: 3.44
Past year average comments per pull request: 0.96
Past year merged pull request: 161
Past year bot issues: 0
Past year bot pull requests: 108
Top Issue Authors
- bramstroker (35)
- michalk-k (21)
- RubenKelevra (16)
- Mariusthvdb (16)
- dagobert (10)
- erkr (10)
- bcjmk (6)
- Stephan-4711 (4)
- Largelos (4)
- KlaraJa (4)
- puetsch (3)
- TheSerapher (3)
- AlexKusnezov (3)
- Gloomyeye (3)
- github-actions[bot] (3)
Top Pull Request Authors
- bramstroker (642)
- renovate[bot] (507)
- github-actions[bot] (142)
- pre-commit-ci[bot] (106)
- RubenKelevra (61)
- dagobert (60)
- michalk-k (23)
- dewbot6 (16)
- stuartp44 (15)
- brianegge (11)
- CloCkWeRX (11)
- Dr-Seltsam (11)
- Mariusthvdb (11)
- dxmnkd316 (11)
- barndawgie (11)
Top Issue Labels
- bug (233)
- enhancement (108)
- Stale (54)
- group (32)
- config-flow (31)
- model-library (25)
- question (15)
- autodiscovery (13)
- measure-tool (9)
- energy-sensor (8)
- lut strategy (8)
- fixed strategy (5)
- powerprofile (4)
- documentation (3)
- multi_switch strategy (3)
- translations (3)
- utility-meter (3)
- linear strategy (2)
- daily-fixed (2)
- wled strategy (2)
- subprofile (2)
- dependencies (1)
- profile-website (1)
- ha-deprecation (1)
- composite strategy (1)
- workflows (1)
Top Pull Request Labels
- powerprofile (516)
- dependencies (505)
- bug (340)
- enhancement (256)
- lightmodel (146)
- measure-tool (87)
- documentation (58)
- Stale (16)
- config-flow (9)
- translations (7)
- model-library (6)
- utility-meter (6)
- release (5)
- multi_switch strategy (4)
- autodiscovery (4)
- group (3)
- light-model (2)
- daily-fixed (2)
- github-action (2)
- playbook (2)
- skip-changelog (2)
- generic-model-id (2)
- subprofile (2)
- linear strategy (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: 428
- 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 3 months ago)
- Last Synced: 2026-04-19T23:05:55.565Z (about 1 month 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.20.14 (published about 1 month ago)
- Last Synced: 2026-05-28T04:25:16.608Z (6 days ago)
- Versions: 425
- 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
- hacs/action main composite
- home-assistant/actions/hassfest master composite
- 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
- python 3.10-slim-buster build
- @hapi/hoek 6.2.4
- @hapi/hoek 8.5.1
- @hapi/joi 14.5.0
- @hapi/marker 1.0.0
- @hapi/topo 3.1.6
- chalk 5.0.1
- commander 3.0.2
- csval 1.1.1
- enjoi 6.0.2
- isemail 3.2.0
- node-gzip 1.1.2
- papaparse 5.3.1
- picomatch 2.3.0
- punycode 2.1.1
- readdirp 3.6.0
- chalk ^5.0.1
- csval ^1.1.1
- node-gzip ^1.1.2
- readdirp ^3.6.0
- 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
- homeassistant *
- python ^3.11
- aiofiles ==25.1.0
- gitpython ==3.1.45
- pytablewriter ==1.2.1
- 177 dependencies
- actions/labeler v6 composite
- colour-science ==0.4.6
- contourpy >=1.0
- cycler >=0.11
- fonttools >=4.38
- imageio >=2.25
- kiwisolver >=1.4
- matplotlib >=3.6
- numpy *
- packaging >=22.0
- pandas >=2.2
- pillow >=11.0
- plotly >=6.0.0
- pyparsing >=3.0
- python-dateutil >=2.8
- pytz ==2025.2
- scipy >=1.12
- seaborn >=0.13.2
- six >=1.16
- typing-extensions >=4.5
- ./.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/cache v4 composite
- actions/setup-python v6 composite
- cfgv 3.4.0
- colour-science 0.4.6
- contourpy 1.3.2
- cycler 0.12.1
- distlib 0.4.0
- filelock 3.19.1
- fonttools 4.59.0
- identify 2.6.14
- imageio 2.37.0
- kiwisolver 1.4.8
- matplotlib 3.10.3
- mypy 1.18.2
- mypy-extensions 1.1.0
- narwhals 1.48.0
- nodeenv 1.9.1
- numpy 2.3.1
- packaging 25.0
- pandas 2.3.1
- pathspec 0.12.1
- pillow 11.3.0
- platformdirs 4.4.0
- plotly 6.2.0
- powercalc-visualize 0.1.0
- pre-commit 4.3.0
- pyparsing 3.2.3
- python-dateutil 2.9.0.post0
- pytz 2025.2
- pyyaml 6.0.2
- ruff 0.12.12
- scipy 1.16.0
- seaborn 0.13.2
- six 1.17.0
- typing-extensions 4.14.1
- tzdata 2025.2
- virtualenv 20.34.0
- bramgerritsen/powercalc-download-proxy latest
- prom/prometheus latest
- 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
- pytablewriter ==1.2.1
- Pillow ==12.0.0
- numpy ==2.3.5
- opencv-python ==4.12.0.88
- packaging ==25.0
- pyparsing ==3.2.5
- pytesseract ==0.3.13
- node 20.10.0-alpine3.17 build
- aiohappyeyeballs 2.6.1
- aiohttp 3.12.14
- aiohttp-client-cache 0.13.0
- aiosignal 1.4.0
- annotated-types 0.7.0
- ansicon 1.89.0
- anyio 4.9.0
- appdirs 1.4.4
- asyncclick 8.1.8
- attrs 25.3.0
- blessed 1.21.0
- cattrs 25.1.1
- certifi 2025.7.14
- cffi 1.17.1
- chardet 5.2.0
- charset-normalizer 3.4.2
- colorama 0.4.6
- coverage 7.9.2
- cryptography 45.0.5
- editor 1.6.6
- frozenlist 1.7.0
- homeassistant-api 5.0.0
- idna 3.10
- iniconfig 2.1.0
- inquirer 3.4.0
- itsdangerous 2.2.0
- jinxed 1.3.0
- mashumaro 3.16
- measure 0.1.0
- multidict 6.6.3
- numpy 2.3.1
- opencv-python 4.11.0.86
- packaging 25.0
- phue 1.2
- pillow 11.3.0
- pluggy 1.6.0
- propcache 0.3.2
- pycparser 2.22
- pycryptodome 3.23.0
- pydantic 2.8.2
- pydantic-core 2.20.1
- pygments 2.19.2
- pytesseract 0.3.13
- pytest 8.4.1
- pytest-cov 6.2.1
- python-decouple 3.8
- python-kasa 0.10.2
- readchar 4.2.1
- requests 2.32.4
- requests-cache 0.9.8
- ruff 0.12.4
- runs 1.2.2
- simplejson 3.20.1
- sniffio 1.3.1
- tinytuya 1.17.2
- tuyapower 0.2.0
- typing-extensions 4.14.1
- tzdata 2025.2
- url-normalize 2.2.1
- urllib3 2.5.0
- wcwidth 0.2.13
- websockets 14.2
- xmod 1.8.1
- yarl 1.20.1
- actions/download-artifact v6 composite
- actions/github-script v8 composite
- devicons/public-upload-to-imgur v2 composite
- 178 dependencies
- @types/apicache ^1.6.6 development
- @types/cors ^2.8.17 development
- @types/express ^5.0.0 development
- @types/node ^22.0.0 development
- nodemon ^3.1.0 development
- ts-node ^10.9.2 development
- typescript ^5.4.3 development
- @octokit/rest ^22.0.0
- apicache ^1.6.3
- cors ^2.8.5
- dotenv ^17.0.0
- express ^5.0.0
- express-prom-bundle ^8.0.0
- pino ^10.0.0
- pino-pretty ^13.0.0
- prom-client ^15.1.1
Score: 13.129577294422525