Как получить уведомление, когда компьютер не заряжается?

Мой аккумулятор для ноутбука сосет и служит до 5 минут без зарядки. Иногда зарядное устройство выпадает без меня знание, делая компьютер отключенным неожиданно.

Существует ли способ получить уведомление момент, мое зарядное устройство выпадает? не то, когда батарея должна быть заряжена как Ubuntu, используется, чтобы сделать (Поскольку это не работает на мой ноутбук, и я бросил ту идею),

4
задан 5 October 2014 в 05:20

2 ответа

Простая линейная команда:

[[ $(acpi -b | grep -o "Discharging") ]] && notify-send "Alert" "Battery is not charging.\n Please plug your AC adapter!"

От man acpi мы имеем:

NAME
       acpi - Shows battery status and other ACPI information    
SYNOPSIS
       acpi [options]    
DESCRIPTION
       acpi Shows information from the /proc or the /sys filesystem, such as battery status or thermal information.    
OPTIONS
       -b | --battery
                 show battery information

Если Вы работаете acpi -b и Вы, батарея заряжает режим, Вы получите этот результат этого:

Battery 0: Charging, 88%, 00:38:17 until charged

И если бы Ваша батарея не заряжается затем, результат был бы похож на это:

Battery 0: Discharging, 87%, 03:46:06 remaining

Затем Мы выглядим "Разряжающимися" в результате с этой командой:

acpi -b | grep -o "Discharging"

Если батарея не была в зарядке результата, будет, "Разряжаясь".

И наконец мы отправляем предупреждение в уведомление, если мы получили "Разряд" от вышеупомянутой команды:

[[ $(acpi -b | grep -o "Discharging") ]] && notify-send "Alert" "Battery is not charging.\n Please plug your AC adapter!"

Примечание: [[ Something ]] всегда верный и [[ ! Something ]] всегда ложь.

Теперь это - самый легкий способ, которым мы выполняем его в фоновом режиме, внутри некоторое время цикл. Затем я поместил команду в некоторое время цикл, и я проверяю состояние батареи между X интервалами времени. Как это:

while true
 do
    # Our command
    sleep [number of seconds] # check the status every [number of seconds] seconds
 done

И если бы Вы хотите запустить скрипт на запуске и каждые 5 минут, таким образом, конструкция была бы:

  • Сохраните сценарий (я назвал его ChkCharge.sh в моем корневом каталоге)
  • Включите строку /etc/rc.local назвать Ваш сценарий (Ваш ChkCharge.sh) + "и" заставить его выйти. как bash /home/USERNAME/ChkCharge.sh &.

Заключительный сценарий

#!/bin/bash
while true
do
    [[ $(acpi -b | grep -o "Discharging") ]] && notify-send "Alert" "Battery is not charging.\n Please plug your AC adapter!"
    sleep 300 # 300 seconds or 5 minutes
done

Конец. Перезагрузка и видит волшебство ;)

5
ответ дан 17 November 2019 в 13:59

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

# sh script.sh

script.sh содержание:

#! /bin/bash

power=$(cat /sys/class/power_supply/BAT1/status)

while true; do
  actual=$(cat /sys/class/power_supply/BAT1/status)

  if [ $actual != $power ]; then
     power=$actual
     notify-send $actual
  fi
done

В основном, я читаю файл в sysfs, который имеет информацию о Вашей батарее, существует больше информации там, которая могла быть интересной. Файл status содержит флаг, указывающий, на самом деле ли Ваше устройство Зарядка или Разряд . Надежда, которая помогает Вам.

3
ответ дан 17 November 2019 в 13:59

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

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