Как я могу воспроизвести собственный звук при низком заряде батареи?

Я хочу, чтобы мой компьютер воспроизводил пользовательский звуковой файл, когда батарея разряжена (скажем, 10%). Как я могу это сделать? Спасибо

4 ответа

Я просто хотел ответить, поскольку я использовал совет на этой странице для настройки своего собственного crontab -e работа.

Я использую Lubuntu (верный), и вышеописанное не сработало для меня, но с небольшими изменениями это сработало. Мой уровень (не) опыта в том, что я относительно способен читать базовые сценарии и команды, но менее способен писать их с нуля в Linux Disto. Я упоминаю об этом, потому что, если я смогу собрать воедино работающую сигнализацию батареи, большинство из вас, прочитав это, тоже смогут!

ТАК.... сценарий и основные объяснения....

Согласно сообщениям выше от Glutanimate и Scott Goodgame (спасибо, ребята!), Я в основном сделал следующее:

Чтобы получить mpg123 и иметь возможность проигрывать аудио:

sudo apt-get install acpi mpg123

Файл, который нужно открыть, чтобы написать команду:

crontab -e

Команда для ввода в конце файла:

*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'`  -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi

Объяснение вышесказанного

Звездочки на старте

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

  • Первая звезда = минуты: 0-59
  • Вторая звезда = Часы: 0-23
  • Третья звезда = День месяца: 0 - 31
  • Четвертая звезда = месяц: 0 - 12
  • Пятая звезда = День недели: 0 - 6 (0 означает воскресенье)

*/1 * * * *

означает "запустить это каждую минуту".

IF/THEN / FI:

IF [ stuff inside these brackets ] ; THEN do something ; FI

Я думаю, что большинство из вас очень хорошо знакомы с утверждениями IF/THEN. FI в конце завершает утверждение IF

Воспроизведение аудио:

mpg123 /home/andy/Alarm.mp3

это просто использует mpg123 воспроизвести файл с именем Alarm.mp3 находится в моем домашнем каталоге /home/andy/,

Информация о выходе батареи:

acpi -b

это просто выводит состояние батареи. На моем ноутбуке это дает такие результаты, как:

Battery 0: Discharging, 74%, 02:35:18 remaining

Передача в команду awk

 | awk ' { print ( $(NF-2)-0)}'`  -lt "15"

Итак, мы передаем вывод состояния батареи выше и печатаем второе от конца значение (NF-2), которое в приведенном выше примере равно "74%". Однако нам нужно убрать "процент" -0. Мы хотим сравнить текущее значение со значением 15- lt "15". Итак, чтобы подвести итог на простом английском языке,

ЕСЛИ значение батареи меньше 15%, ТО воспроизводите аудиофайл

Я ценю то, что немного обескуражил его, и, возможно, мое объяснение можно улучшить, но, надеюсь, оно поможет кому-то еще понять, как добавить сигнал тревоги для батареи и избежать внезапного отключения питания их ноутбуков!

Удачи!


РЕДАКТИРОВАТЬ

Хорошо... так получается, что когда мой ноутбук заряжается, выход

acpi -b

является:

Battery 0: Charging, 35%, 01:04:08 until charged

тогда как на батарее есть

Battery 0: Discharging, 36%, 01:22:36 remaining

поэтому с помощью параметра, упомянутого изначально

print ( $(NF-2)-0)

выводит разные результаты, потому что помните, битзначения NF указывает, сколько элементов в обратном направлении от конца вывода для отображения, поэтому с выходом на батарее

Battery 0: Discharging, 36%, 01:22:36 remaining

$(NF-2) выводит "36%", тогда как ноутбук на зарядке,

Battery 0: Charging, 35%, 01:04:08 until charged

$(NF-2) выводит "00:50:12", то есть количество времени, оставшегося до зарядки.

-0 после $(NF-2) минус ноль от значения, поэтому, когда значение является процентом -0 меняет его с "36%" на "36". Когда выходное значение воспринимается как нечисловое, например, как время выхода '01:04:08', как указано выше, значение -0 возвращается '0'. Итак, вы можете видеть мою проблему - когда мой ноутбук находится на зарядке, выходное значение всегда равно 0. Поскольку я хочу воспроизвести сигнал тревоги, когда выходное значение меньше 15, он переводится в сигнал тревоги от батареи, который срабатывает каждую минуту при зарядке!

Я прочитал немного больше о выводе awk и получается, что мне не нужно было заставлять его читать второе значение с конца, я мог бы начать с начала вывода и перейти вперед. Это намного лучше, так как состояние моего аккумулятора начинается одинаково, независимо от того, находится ли он на зарядке или на аккумуляторе с точки зрения количества параметров, то есть четвертый параметр с самого начала всегда является значением заряда в процентах.

ТАК... чтобы прочитать четвертое значение, команда меняется с

awk ' { print ($(NF-2)-0)}'

в

awk ' { print ($4)-0}'

или во всей красе

*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'`  -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi

Я снова надеюсь, что это поможет кому-то! Удачи и спасибо за чтение!


БОНУС РЕДАКТИРОВАТЬ

Ладно, еще немного поковырялся, и я также решил, как установить громкость на 100% и включить звук перед включением будильника - потому что давайте посмотрим правде в глаза, какой смысл в сигнале батареи, если вы его не слышите, потому что вы Вы установили громкость на низкую или отключили звук?!

В любом случае, вам нужна команда:

*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'`  -lt "15" ] ; then pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi

как вы видите, все, что я сделал, это вставил командную строку

pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&

(&&свяжите несколько команд вместе)

Опять всем удачи!

ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ

Хорошо, итак... одно окончательное (надеюсь!) Редактирование... очевидно, знак процента - это особый знак при запуске задач cron. Следовательно, вы должны "избежать" знака процента, поставив обратную косую черту (\) перед каждым % так что это не (неправильно) интерпретируется оболочкой.

Так что в основном заменить

100%

с

100\%

Таким образом, команда, которая вам действительно нужна:

*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'`  -lt "15" ] ; then pactl set-sink-volume 0 100\% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi

фу надеюсь, что это для вас так же, как и для меня! (в конце концов!)

Вы можете настроить работу cron, которая будет проверять состояние батареи через каждые 5/10 минут, а затем, в зависимости от процента батареи, будет воспроизводиться звук.

Для воспроизведения звука вы можете использовать

mpg123 filename.mp3

Чтобы установить это

sudo apt-get install mpg123

Чтобы получить статус батареи из командной строки, вы можете использовать эту команду

upower -i /org/freedesktop/UPower/devices/battery_BAT0

с помощью grep Вы можете извлечь точную информацию следующим образом

upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"

Теперь вы можете поместить все эти вещи в сценарий оболочки (а также if условие, чтобы проверить, если статус батареи ниже, чем 10%) и просто дать путь этого сценария оболочки к заданию cron.

поэтому через каждые 5 минут (вы можете изменить этот интервал) будет проверяться состояние вашей батареи, и если батарея будет ниже 10%, будет воспроизводиться ваш предоставленный звуковой файл!

Надеюсь это поможет!

Один из простых способов сделать это - добавить простую проверку в ваш crontab (cron - это система для регулярного выполнения заданий в фоновом режиме).

Сначала вам нужно установить mp3-плеер с командной строкой и acpi, чтобы иметь возможность считывать состояние батареи.

Из терминала запустите следующее, чтобы установить пакеты.

sudo apt-get install acpi mpg123

Далее, пока еще в терминале, введите crontab -e и введите следующее в конец файла. Просто измените пользователя на ваше имя пользователя и.mp3 на ваше имя файла в вашем домашнем каталоге.

*5 * * * * if [ `acpi |awk '{print substr($NF, 0, length($NF)-1)}'`  -lt "10" ] ; then mpg123 /home/user/SuperCoolSound.mp3   ;fi

Нажмите Control-O (буква) и Enter, чтобы сохранить. Нажмите Control-x, чтобы выйти

Дополнительные вещи, которые вы можете прочитать...

Ubuntu CronHowto

Руководство по Ubuntu

На самом деле я использовал ответ Энди Пайна, но он не сработал для меня. Крон выполнил код, но не воспроизводил звук. Наконец я нашел решение и поделился им здесь:

Шаг 1: Установите mpg3

sudo apt-get install acpi mpg123

Шаг 2. Сохраните следующую команду в ~/bin/battery_alert

#!/bin/bash
PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
if [ `acpi -b | awk ' { print ($3)}'`  == "Discharging," ] ; then
    # Discharging
    # Monitor for low battery
    if [ `acpi -b | awk ' { print ($4)-0}'`  -le "15" ] ; then
        pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_low.mp3 ;
    fi
else
    # Charging
    if [ `acpi -b | awk ' { print ($4)-0}'`  -eq "100" ] ; then
        # Fully charged
        pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_full.mp3 ;
    fi
fi

Этот скрипт воспроизводит battery_low.mp3, если ноутбук разряжается, а заряд меньше или равен 15%. (Если подключено питание переменного тока, оно не предупредит вас). Этот код также предупреждает вас, если заряд составляет 100%. Если вы не хотите получать оповещения о полностью заряженном состоянии, удалите остальную часть из этого кода.

Шаг 3: Сделайте файл исполняемым с помощью следующей команды.

chmod +x ~/bin/battery_alert

Шаг 4: Запустите этот файл с помощью cron, добавив следующую команду в конец файла. Opend by crontrab -e команда.

*/5 * * * * /home/user/bin/battery_alert

(Не забывайте иметь пустую строку после этой команды)

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