Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

internal/battery module calculates power consumption incorrectly #928

Closed
MatthewLavine opened this issue Dec 29, 2017 · 1 comment · Fixed by #958
Closed

internal/battery module calculates power consumption incorrectly #928

MatthewLavine opened this issue Dec 29, 2017 · 1 comment · Fixed by #958
Labels

Comments

@MatthewLavine
Copy link

I was comparing the functionality of i3status and polybar and noticed that the battery consumption wattage calculation was wildly different between the applications.

See here (i3status on top, polybar underneath):
battery

Based on these numbers I believe that i3status is showing the correct output and polybar is incorrect.

Checking into the module sources, here is where polybar attempts to get the current battery power usage: https://github.com/jaagr/polybar/blob/master/src/modules/battery.cpp#L61

Note that it sets m_frate to "current_now" or "power_now", whichever exists. The problem is that these two files can contain different units. As outlined in i3status's battery module, "on some systems POWER_SUPPLY_POWER_NOW does not exist, but actually it is the same as POWER_SUPPLY_CURRENT_NOW but with μWh as unit instead of μAh"

https://github.com/i3/i3status/blob/master/src/print_battery_info.c#L152

Based on this I think polybar's module needs some extra complicated logic to perform the necessary conversions. If power_now exists, then it's value can be used (with an order of magnitude conversion) instead of calculating current usage based on (incorrect) voltage and current.

I'm a Go programmer myself otherwise I'd send a PR; but I can take a crack at it if no one else has any cycles :)

@MatthewLavine
Copy link
Author

Attached is a small naive patch that produces correct output on my machine. This patch assumes m_frate is power_now; a proper patch for this should take into account if m_frate is current_now or power_now and perform the relevant calculations if necessary.

batfix.patch.txt

patrick96 added a commit that referenced this issue Jul 23, 2018
Breaking Changes:

* `0 < label-NAME-maxlen < 3` will now throw an exception and disable the containing module, if ellipsis is enabled for that label. (#1198)

Changelog:

Deprecations:
* `internal/volume` is now called `internal/alsa` (#967)
* temperature: The `%temperature%` is deprecated in favor of `%temperature-c%`(#897)
* mpd: `icon-repeatone` is deprecated in favor of `icon-single` (#1295), see #1279

Features:
* feat(mpd): Add support for icon-consume (#861)
* feat(bspwm): Add workspace separator (#942) 
* feat(i3): Add workspace separator (#938), see #929
* feat(build): Make polybar build on FreeBSD (#931, polybar/xpp#8), see #239
* feat(volume): Add pulseaudio backend (#779)
* feat(script): Add %pid% token for tail commands (#934)
* feat(temp): Add temperature tokens without unit (#897)
* feat(memory): Add memory used/free ramp (#1038), see #1037
* feat(memory): Add swap tokens (#1018) 
* feat(net): Add unknown-as-up option (#1077), see #457
* feat(config): Support fractional size and offset (#972), see #953
* feat(xwindow): Add label-empty (#1136)
* feat(battery): Add animation-discharging (analog to animation-charging) (#1190)
* feat(config): Support pixel offset for bar size and offset values (#1224)
* feat(mpd): Add `%album-artist%` token (#1263)
* feat(net): Add local_ip6 token (#1239), see #1234
* feat(net): Add nl80211 support (#1009), see #277

Fixes:
* fix(mpd): Wrong elapsed time when after standby (#921), see #915
* fix(config): Wrong min, maxlen when using the same token multiple times (#974), see #971
* fix(battery): use power_now correctly (#958), see #928
* fix(mpd): Crash when mpd isn't running (#983), see #979
* fix(xworkspaces): Respect 'enable-scroll' (#1002)
* fix(xbacklight): Respect 'enable-scroll' (#1014)
* fix(build): support xcb-proto >=1.13 (polybar/xpp#11), see #973
* fix(mpd): Respect MPD_HOST env variable (#1025), see #1007
* fix(i3): Reconnect i3 IPC socket on restart/error (#1099), see #762
* fix(cursor): Occasional crash on mouseover (#1124), see #1117
* fix(net): Mark 'not connected' on querying failure (#1171), see #1163
* fix(gcc): Fix -Wstringop-truncation warning (#1216, polybar/i3ipcpp#7), see #1215
* fix(builder): Don't truncate colors with same channels (#1217), see #1183
* fix(bspwm): Consistent behavior when scrolling through multiple desktops (#986), see #981
* fix(builder): Respect label-ellipsis option (#1198), see #1194
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants