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

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

14
задан 23 May 2014 в 05:04

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) минус ноль от th е значение, поэтому, когда значение представляет собой процент -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

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


BONUS EDIT

Хорошо, я еще немного пощупал, и я также придумал, как установить громкость на 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

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

7
ответ дан 23 May 2014 в 05:04

Вы можете настроить задание 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 | percent"

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

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

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

4
ответ дан 23 May 2014 в 05:04

Один из простых способов сделать это - добавить простую проверку в ваш 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

4
ответ дан 23 May 2014 в 05:04

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

Шаг 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: Сделайте файл исполняемым, используя следующую команду. Шаг 4: Выполните этот файл с помощью cron, добавив следующую команду в конец файла, opend командой crontrab -e.

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

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

2
ответ дан 23 May 2014 в 16:04

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

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