LINUX.ORG.RU

Если у тебя есть такие файлы /var/lib/upower/history-*.dat то cat <file> | sed 's/^/echo "/; s/\([0-9]\{10\}\)/`date -d @\1`/; s/$/"/' | bash

Я не разбирался кто их генерит, но gnom’овская статистика заряда/разряда батареи вроде из них берет данные для отображения графиков.

Aber ★★★★ ()
Ответ на: комментарий от darkenshvein
  1. Тестировать
  2. Посмотреть текущий расход, поделить на емкость батареи. Например если монитор показывает 15v * 1A = 15W, значит заряженной 64Wh батареи наверное должно хватить на 4 часа.
Aber ★★★★ ()
Ответ на: комментарий от darkenshvein

Где то в дебрях /sys (не точно) лежат файлы energy_full, energy_now и файл со статусом заряда, не помню точно название. В нем пишется Discharging, Charging. Натрави на него inotify и считай время в любой момент. Я как-то писал скрипт, который в статусбар выводит время работы от батареи, если найду, скину.

anonymous ()
Ответ на: комментарий от anonymous

Я что-то не понимаю ТС’а, чего ему нужно, вот у меня:

cat /var/lib/upower/history-charge-FX70542-67.dat | sed 's/^/echo "/; s/\([0-9]\{10\}\)/`date -d @\1`/; s/$/"/' | bash

Пн дек 30 17:23:00 MSK 2019     48,000  discharging
Пн дек 30 17:27:00 MSK 2019     47,000  discharging
Пн дек 30 17:30:44 MSK 2019     46,000  charging
Пн дек 30 17:32:48 MSK 2019     49,000  charging
...
Пн дек 30 18:38:48 MSK 2019     97,000  charging
Пн дек 30 18:44:48 MSK 2019     98,000  charging
Пн дек 30 18:48:48 MSK 2019     99,000  charging
Пн дек 30 19:02:48 MSK 2019     100,000 fully-charged
Aber ★★★★ ()
Ответ на: комментарий от Aber

Я что-то не понимаю ТС’а, чего ему нужно, вот у меня

Как я понял, ему нужно узнать непрерывное время с момента отключения от электросети. По твоим данным тоже можно, если их распарсить.

anonymous ()

Когда у меня возник такой вопрос, я установил collectd. В комплекте не нашлось готового плагина для батареи, зато там был плагин table, с помощью которого можно отслеживать файлы.

LoadPlugin table
<Plugin table>
	<Table "/sys/class/power_supply/BAT0/alarm">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "alarm"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/capacity">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "capacity"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/charge_full">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "charge_full"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/charge_full_design">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "charge_full_design"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/charge_now">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "charge_now"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/current_now">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "current_now"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/present">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "present"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/voltage_min_design">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "voltage_min_design"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/BAT0/voltage_now">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "voltage_now"
			ValuesFrom 0
		</Result>
	</Table>
	<Table "/sys/class/power_supply/AC/online">
		Instance "battery"
		Separator "="
		<Result>
			Type gauge
			InstancePrefix "AC-online"
			ValuesFrom 0
		</Result>
	</Table>
</Plugin>

Смотреть — с помощью kcollectd.

i-rinat ★★★★★ ()
Ответ на: комментарий от anonymous

ТС хочет чего-то вроде uptime, но только для батареи. А парсить upower/history не желает.

Мне кажется такая лаконичность в вербализации мыслей/намерений как у ТС может быть фатальной, например на опасном производстве или во время войны, например в войне во Вьетнаме у США до 40% погибших были от friendly fire, вот думаю тоже из-за: «… фиг поймешь что там он сказал, наверное в этот сектор нужно направить огонь артиллерии»

Aber ★★★★ ()
Ответ на: комментарий от darkenshvein

это костыль

Тогда надо патчить upower, добавлять какой-нибудь новый флаг (типа -u), потому что из upower -d ты время работы на батарее не вычислишь.

anonymous ()

Простого способа не помню, но можно запилить правило udev, которое будет записывать время отключения шнура или запускать какой-нибудь таймер systemd. Например:

SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/bin/systemctl start battery.timer"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/bin/systemctl stop battery.timer"
rassol ()