Як я можу відтворювати власний звук, коли акумулятор розряджається?


13

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

Відповіді:


6

Я просто хотів відповісти, оскільки використовував поради на цій сторінці для налаштування власної crontab -eроботи.

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

ТАК .... сценарій та основне пояснення ....

Відповідно до вищезгаданих дописів 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 * * * *

означає "бігати щохвилини".

ЯКЩО / ТОГО / 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 ' { print ( $(NF-2)-0)}'`  -lt "15"

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

ЯКЩО значення батареї менше, ніж 15%, ніж відтворити аудіофайл

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

Удачі!


EDIT

Гаразд ... так виходить, що коли мій ноутбук заряджається, вихід

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

Знову сподіваюся, що хтось допомагає! Удачі та спасибі за прочитане!


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

фео сподіваюся, що сортує це для вас, як це для мене !! (зрештою!)


Це чудове пояснення! На жаль, він також відтворює звук щохвилини і під час зарядки.
OpnSrcFan

5

Ви можете налаштувати роботу 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%, відтворюється наданий звуковий файл!

Сподіваюся, це допомагає!


3
Правильно, тільки класні люди використовують mpg123 :)
Скотт Гудгейм,

3

Один з простих способів зробити це - додати простий чек до свого 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 (літера) та введіть для збереження. Для виходу натисніть клавішу Control-x

Додаткові речі, які ви можете прочитати ...

Ubuntu CronHowto

Посібник з Ubuntu


Тут не працювали: ➜ ~ if [ acpi |awk '{print substr($NF, 0, length($NF)-1)}' -lt "10"]; тоді aplay /home/felipelalli/Music/siren.wav; fi [: ціле вираження очікується: залишається ➜ ~ acpi Акумулятор 0: розрядка, 9%, 00:17:56 залишилось
Феліпе

2

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

Крок 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, додавши наступну команду до кінця файлу, відкриваючи crontrab -eкоманду.

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

(Не забудьте мати порожній рядок після цієї команди)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.