Аккумулятор ноутбука высокий / низкий сигнал тревоги

Батарея моего ноутбука работала не так долго, как я надеялся, и это внутренняя батарея. То есть заменить его очень неудобно. Я бы хотел, чтобы моя запасная батарея работала как можно дольше, и после прочтения, похоже, что лучший способ сделать это - дать ей возможность регулярно заряжаться и разряжаться. Поэтому я искал программу или приложение в программном центре Ubuntu, которые могли бы напомнить мне о необходимости отключить или подключить устройство, и ничего не нашли, а индикатор батареи по умолчанию недостаточен, потому что он не заботится о здоровье батареи.

Итак, есть ли приложение, которое делает это? Если нет, есть ли API, которым я могу воспользоваться, чтобы я мог написать свой собственный?

Редактировать: простой поиск в Google показал, что я могу искать информацию об аккумуляторе с помощью команды upower -i /org/freedesktop/UPower/devices/battery_BAT0. Было бы неплохо, чтобы индикатор состояния сделал это для меня (и, возможно, вел учет циклов зарядки / разрядки).

1
задан 6 April 2016 в 23:46

2 ответа

Можно попытаться использовать этот сценарий.

Это повышает уведомление и звук игры (с pulseaudio), когда уровень заряда батареи достигает выбранного значения. Это не отслеживает циклы заряда/выброса, но с некоторым редактированием можно добавить эту опцию.

#! /bin/bash

# read battery percentage value
OUT=`upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage`

# select only the int value
IFS=':' read -ra P <<< "$OUT"
PERCENTAGE="%"
BATTERY_VALUE=${P[1]%$PERCENTAGE}

# send a notification and play sound if battery level is under 10%
if (( $BATTERY_VALUE  < "10")); then
  notify-send "Battery Low level! You need to plug your PC!"

# command to play sound - you can select your preferred sound if this doesn't work
  paplay /usr/share/sounds/freedesktop/stereo/complete.oga
fi

# send a notification and play sound if battery level is equal to 100%
if (( $BATTERY_VALUE  >= "100")); then
  notify-send "Battery charged! You can now unplug your PC!"
  paplay /usr/share/sounds/freedesktop/stereo/complete.oga
fi

Скопируйте этот сценарий в файл удара и переместите его в локальную папку мусорного ведра:

sudo mv <script_file> /usr/local/bin/

Где script_file является именем (или путь) Вашего сценария. Затем можно использовать cron демон для выполнения его каждые 5 минут для проверки уровня заряда батареи. Так редактирование cron:

crontab -e

Select предпочел редактора, и добавьте в конце файла эту строку:

*/5 * * * * /usr/local/bin/<script_file>

Измените script_file со своим названием сценария.

Теперь это должно работать. Проверьте его после системной перезагрузки.

Я надеюсь быть полезным.

2
ответ дан 7 April 2016 в 09:46
  • 1
    Да! Уверенный:) Я похож на кого-то, который укушенный Скорпионом и боятся к укушенному снова. Еще раз спасибо. – SirSaleh 20 August 2017 в 11:55

Вы можете использовать этот скрипт, так как сегодня я застрял на той же проблеме.

Вы можете думать об этом сценарии как об обновлении сценария, предоставленного @Danibix. Сценарий ниже использует службу systemd для перезапуска, даже если процесс был убит.

#!/bin/bash

# Run this script as a cronjob every 5 minutes or so, to get notifications when
# battery percentage goes below 30% or above 80%. Also you can create a systemd service.
# Cronjob line example:
# */5 * * * * /bin/bash /path/to/battery_health_notifications.sh

export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session | head -n 1)/environ | tr '\0' '\n')
export XDG_RUNTIME_DIR="/run/user/1000"

while ((1)) ; do
    BATTERY_PATH=$(upower -e | grep battery)
    LINE_POWER_PATH=$(upower -e | grep line_power)
    BATTERY_PERCENTAGE=$(upower -i $BATTERY_PATH | grep 'percentage:' | awk '{ print $2 }' | sed 's/%//')
    CABLE_PLUGGED=$(upower -i $LINE_POWER_PATH | grep -A2 'line-power' | grep online | awk '{ print $2 }')

    if [[ $CABLE_PLUGGED == 'yes' ]]; then

        if [[ $BATTERY_PERCENTAGE -gt 75 ]]; then
        notify-send --hint=int:transient:1 --urgency=critical "Battery optimization" "Battery reached 75%, unplug the power cable to optimize battery life."

        #Using my own alarm file. You can choose your desired alarm file.
        /bin/paplay /home/ali/.local/alarm.wav
        fi

    else

        if [[ $BATTERY_PERCENTAGE -lt 30 ]]; then
        notify-send --hint=int:transient:1 --urgency=critical "Battery optimization" "Battery is below 30%, plug in the power cable to optimize battery life."

        #Using my own alarm file. You can choose your desired alarm file.
        /bin/paplay /home/ali/.local/alarm.wav
        fi

    fi
    sleep 2
done

Поместите приведенный выше скрипт в любое место в вашей домашней папке как battery_health_notifications.sh

После этого создайте служебный файл как battery_alarm.service и скопируйте в него приведенный ниже текст. Убедитесь, что вы прочитали комментарии в сервисном файле ниже, чтобы настроить его в соответствии с вашей системой.

[Unit]
#just what it does
Description= Battery alarm notifies the user about charge and discharge cycle of battery

[Service]
#not run by root, but by me. Change User to your username
User=ali
#we assume the full service as active one the script was started
Type=simple
#where to find the executable 
ExecStart=/home/ali/.local/battery_health_notifications.sh
#what you want: make sure it always is running
Restart=always

[Install]
#which service wants this to run - default.target is just it is loaded by default
WantedBy=default.target

Откройте терминал, где находится ваш battery_alarm.service, и скопируйте приведенные ниже команды на свой терминал.

sudo mv battery_alarm.service /etc/systemd/system/
systemctl enable battery_alarm.service
systemctl start battery_alarm.service

Настройка сигнала тревоги батареи завершена. Чтобы проверить, работает ли он или нет, введите приведенную ниже команду в свой терминал.

systemctl status battery_alarm.service 

Вы получите что-то вроде этого.

● battery_alarm.service - Battery alarm notifies user about charge discharge cycle of battery
     Loaded: loaded (/etc/systemd/system/battery_alarm.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-05-16 20:26:34 PKT; 23min ago
   Main PID: 166450 (battery_health_)
      Tasks: 2 (limit: 12979)
     Memory: 2.6M
     CGroup: /system.slice/battery_alarm.service
             ├─166450 /bin/bash /home/ali/.local/battery_health_notifications.sh
             └─183382 sleep 2

May 16 20:26:34 pop-os systemd[1]: Started Battery alarm notifies the user about charge-discharge cycle of the battery.
1
ответ дан 16 May 2020 в 15:58

Другие вопросы по тегам:

Похожие вопросы: