배터리가 부족할 때 어떻게 커스텀 사운드를 재생할 수 있습니까?


13

배터리가 부족할 때 (예 : 10 %) 컴퓨터에서 사용자 지정 사운드 파일을 재생하려고합니다. 어떻게해야합니까? 감사

답변:


6

이 페이지에서 내 crontab -e작업 을 구성하기위한 조언을 사용하면서 답장하고 싶었 습니다.

나는 Lubuntu (trusty)를 실행 중이며 위의 내용은 나에게는 효과가 없었지만 약간 조정하면 효과가있었습니다. 내 경험 수준은 기본 스크립트와 명령을 상대적으로 읽을 수는 있지만 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

위의 설명

처음에 별표

별표 5 개는 명령을 실행하는 빈도를 나타냅니다.

  • 첫 번째 별 = 분 : 0-59
  • 두번째 별 = 시간 : 0-23
  • 셋째 별 = 월의 일 : 0-31
  • 네 번째 별 = 월 : 0-12
  • 다섯 번째 별 = 요일 : 0-6 (0은 일요일을 의미)

*/1 * * * *

'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"

자, 위의 배터리 상태 출력을 파이핑 하고 위의 예제에서 '74 % '인 두 번째 끝 값 (NF-2)인쇄 합니다 . 그러나 'percentage'- 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)마이너스의 값이기 때문에 경우 퍼센트 값으로부터 제로 -036 '에''36 % 같은에서 변화. 출력 값이 위와 같이 '01 : 04 : 08 '의 시간 출력과 같이 숫자가 아닌 것으로 인식되면 -0반환 값 은'0 '입니다. 내 노트북을 충전 할 때 출력 값은 항상 '0'입니다. 출력 값이 15보다 작을 때 알람을 재생하고 싶을 때 충전 중 1 분마다 꺼지는 배터리 알람으로 변환됩니다!

나는 awk명령 의 출력에 대해 조금 더 읽고 그것을 끝에서 두 번째 값을 읽을 필요가 없다는 것을 알았습니다. 출력의 처음부터 시작하여 앞으로 건너 뛸 수있었습니다. 배터리 상태가 충전 중이거나 배터리 수에 관계없이 매개 변수 수 측면에서 동일하게 시작되므로 훨씬 좋습니다. 즉, 처음부터 네 번째 매개 변수는 항상 백분율 값입니다.

SO ... 네 번째 값을 읽으려면 명령이

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 %로 설정하고 음소거를 해제하는 방법을 알아 냈습니다. ve 음량을 낮게 설정하거나 음소거 하시겠습니까?!

어쨌든 필요한 명령은 다음과 같습니다.

*/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

그것이 나를 위해있는 것처럼 당신을 위해 그것을 분류하는 희망! (결국!)


이것은 훌륭한 설명입니다! 불행히도 충전 할 때마다 1 분마다 소리가납니다.
OpnSrcFan

5

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 % 미만인지 확인 하는 조건)에 넣고이 쉘 스크립트의 경로를 크론 작업에 제공 할 수 있습니다.

5 분마다 (이 간격을 변경할 수 있음) 배터리 상태가 확인되고 배터리가 10 % 미만이면 제공된 사운드 파일이 재생됩니다!

도움이 되었기를 바랍니다!


3
맞습니다, 멋진 사람들 만이 mpg123을 사용합니다 :)
Scott Goodgame

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 (문자)를 누르고 Enter를 눌러 저장하십시오. Control-x를 눌러 종료

읽고 싶은 추가 자료 ...

우분투 크론 하우투

우분투 가이드


여기에서 작동하지 않았습니다 : ➜ ~ 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 남음
Felipe

2

실제로 나는 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

랩톱이 방전 중이고 충전량이 15 % 이하인 경우이 스크립트는 battery_low.mp3를 재생합니다. (AC 전원이 연결되어 있으면 경고하지 않습니다). 이 코드는 또한 요금이 100 % 인 경우 사용자에게 경고합니다. 완전히 충전 된 상태에 대한 경고를 원하지 않으면이 코드에서 else 부분을 제거하십시오.

3 단계 : 다음 명령을 사용하여 파일을 실행 가능하게 만듭니다.

chmod +x ~/bin/battery_alert

4 단계 : 명령으로 연 파일 끝에 다음 명령을 추가하여 cron을 사용하여이 파일을 실행하십시오 crontrab -e.

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

(이 명령 뒤에 빈 줄을 두는 것을 잊지 마십시오)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.