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
Labels
Comments
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. |
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
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):
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 :)
The text was updated successfully, but these errors were encountered: