Làm cách nào để phát âm thanh tùy chỉnh khi pin yếu?


13

Tôi muốn máy tính của mình phát tệp âm thanh tùy chỉnh khi pin yếu (10%). Tôi có thể làm cái này như thế nào? Cảm ơn

Câu trả lời:


6

Tôi chỉ muốn trả lời khi tôi sử dụng lời khuyên trên trang này để định cấu hình crontab -ecông việc của riêng tôi .

Tôi đang chạy LubFi (đáng tin cậy) và những thứ trên không hoạt động với tôi, nhưng với một chút tinh chỉnh thì nó đã hoạt động. Mức độ kinh nghiệm (trong) của tôi là tôi tương đối có khả năng đọc các tập lệnh và lệnh cơ bản nhưng ít có khả năng viết chúng từ đầu trong linux disto. Tôi đề cập đến điều đó bởi vì nếu tôi có thể lắp ráp một báo động pin hoạt động, hầu hết các bạn đọc nó cũng có thể như vậy!

VẬY .... kịch bản và một lời giải thích cơ bản ....

Theo các bài viết ở trên của Glutanimate và Scott Goodgame (cảm ơn các bạn!), Về cơ bản tôi đã làm như sau:

Để có được mpg123 và có thể phát âm thanh:

sudo apt-get install acpi mpg123

Tập tin để mở để viết lệnh:

crontab -e

Lệnh nhập vào cuối tập tin:

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

Giải thích về những điều trên

Dấu hoa thị khi bắt đầu

Năm dấu sao biểu thị tần số để chạy các lệnh.

  • Ngôi sao đầu tiên = Phút: 0-59
  • Ngôi sao thứ hai = Giờ: 0-23
  • Ngôi sao thứ ba = Ngày trong tháng: 0 - 31
  • Ngôi sao thứ tư = Tháng: 0 - 12
  • Ngôi sao thứ năm = Ngày trong tuần: 0 - 6 (0 có nghĩa là Chủ nhật)

*/1 * * * *

có nghĩa là 'chạy cái này mỗi phút'.

NẾU / THEN / FI:

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

Hầu hết các bạn, tôi tưởng tượng, rất quen thuộc với các câu lệnh IF / THEN. FI ở cuối kết luận câu lệnh IF

Phát âm thanh:

mpg123 /home/andy/Alarm.mp3

điều này chỉ đơn giản là sử dụng mpg123để phát một tập tin được gọi Alarm.mp3trong thư mục nhà của tôi /home/andy/.

Thông tin về pin đầu ra:

acpi -b

Điều này chỉ đơn giản là đầu ra trạng thái pin. Trên máy tính xách tay của tôi, nó mang lại kết quả như:

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

Lệnh ống để awk

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

Được rồi, vì vậy, chúng tôi dẫn đầu ra của trạng thái pin ở trên và in giá trị thứ hai từ đầu đến cuối (NF-2) mà trong ví dụ trên là '74% '. Tuy nhiên, chúng ta cần xóa 'phần trăm' -0 . Chúng tôi muốn so sánh giá trị hiện tại với giá trị 15 -lt "15" . Vì vậy, để tóm tắt bằng tiếng Anh đơn giản,

NẾU giá trị của pin là ÍT HƠN 15% THÌ phát một tệp âm thanh

Tôi đánh giá cao tôi đã giảm bớt phần nào và có lẽ lời giải thích của tôi có thể được cải thiện, nhưng hy vọng nó sẽ giúp người khác hiểu cách thêm báo thức cho pin và tránh máy tính xách tay của họ đột ngột tắt nguồn!

Chúc may mắn!


BIÊN TẬP

Được rồi ... vậy hóa ra khi laptop của tôi đang sạc, đầu ra của

acpi -b

Là:

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

trong khi trên pin là

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

vì vậy sử dụng tham số được đề cập ban đầu của

print ( $(NF-2)-0)

bởi vì hãy nhớ rằng, bit giá trị NF chỉ định có bao nhiêu mục ngược từ cuối đầu ra để hiển thị, do đó, với đầu ra trên pin của

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

$(NF-2) xuất ra '36% 'trong khi với máy tính xách tay đang sạc,

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

$(NF-2) đầu ra '00: 50: 12 ', tức là lượng thời gian còn lại cho đến khi được sạc.

Giá trị -0sau trừ $(NF-2)0 từ giá trị, vì vậy khi giá trị là phần trăm -0thay đổi từ giá trị '36% 'thành' 36 '. Khi giá trị đầu ra được coi là không bằng số, chẳng hạn như đầu ra thời gian là '01: 04: 08 'như trên, giá trị -0trả về là' 0 '. Vì vậy, bạn có thể thấy vấn đề của tôi - khi máy tính xách tay của tôi đang sạc, giá trị đầu ra luôn là '0'. Vì tôi muốn phát báo thức khi giá trị đầu ra nhỏ hơn 15, nó chuyển thành báo thức pin sẽ tắt sau mỗi một phút khi sạc!

Tôi đọc thêm một chút về đầu ra của awklệnh và hóa ra tôi không cần phải làm cho nó đọc giá trị thứ hai từ cuối, tôi có thể bắt đầu từ đầu đầu ra và bỏ qua. Điều này tốt hơn nhiều vì trạng thái pin của tôi bắt đầu giống nhau cho dù là sạc hay pin về số lượng tham số, tức là tham số thứ tư từ đầu luôn luôn là giá trị tính theo phần trăm.

VÌ ... để làm cho nó đọc giá trị thứ tư, lệnh thay đổi từ

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

đến

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

hoặc trong vinh quang đầy đủ của nó:

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

Một lần nữa tôi hy vọng điều đó sẽ giúp được ai đó! Chúc may mắn và cảm ơn đã đọc!


TIỀN THƯỞNG

Được rồi, vì vậy hãy thêm một chút nữa và tôi cũng đã tìm ra cách đặt âm lượng thành 100% và tắt tiếng trước khi phát báo thức - bởi vì hãy đối mặt với nó, điểm báo động của pin là gì nếu bạn không nghe thấy vì bạn ' Bạn đã đặt âm lượng ở mức thấp hoặc tắt tiếng?!

Dù sao, lệnh bạn cần là:

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

như bạn có thể thấy, tất cả những gì tôi đã làm được chèn chuỗi lệnh

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

( &&chỉ liên kết nhiều lệnh với nhau)

Một lần nữa, chúc may mắn tất cả!

EDIT CUỐI

Được rồi, vì vậy ... một bản chỉnh sửa cuối cùng (hy vọng!) ... rõ ràng, dấu phần trăm là một dấu hiệu đặc biệt khi chạy các tác vụ cron. Do đó, bạn phải 'thoát' ký hiệu tỷ lệ phần trăm bằng cách đặt dấu gạch chéo ngược ( \) trước mỗi dấu %sao cho nó không (mis) được giải thích bởi trình bao.

Vì vậy, về cơ bản thay thế

100%

với

100\%

Do đó, lệnh bạn thực sự cần là:

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

phew hy vọng rằng nó sắp xếp nó cho bạn như nó đã dành cho tôi !! (cuối cùng!)


Đây là một lời giải thích tuyệt vời! Thật không may, nó cũng phát ra âm thanh mỗi phút khi sạc quá.
OpnSrcFan

5

Bạn có thể thiết lập một công việc định kỳ sẽ kiểm tra trạng thái pin sau mỗi 5/10 phút và sau đó tùy thuộc vào phần trăm pin, nó sẽ phát một số âm thanh.

Để phát âm thanh, bạn có thể sử dụng

mpg123 tên tệp.mp3

Để cài đặt nó

sudo apt-get install mpg123

Để có được trạng thái pin từ dòng lệnh, bạn có thể sử dụng lệnh này

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

sử dụng grepbạn có thể trích xuất thông tin chính xác như sau

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

Bây giờ bạn có thể đặt tất cả những thứ này vào tập lệnh shell (và cũng là ifđiều kiện để kiểm tra xem trạng thái pin có thấp hơn 10% không) và chỉ cần đưa đường dẫn của tập lệnh shell này vào công việc định kỳ.

vì vậy cứ sau 5 phút (Bạn có thể thay đổi khoảng thời gian này), trạng thái pin của bạn sẽ được kiểm tra và nếu pin thấp hơn 10%, tệp âm thanh được cung cấp của bạn sẽ được phát!

Hi vọng điêu nay co ich!


3
Đúng vậy, chỉ những người tuyệt vời mới sử dụng mpg123 :)
Scott Goodgame

3

Một cách dễ dàng để làm điều này là thêm một kiểm tra đơn giản vào crontab của bạn (cron là một hệ thống để chạy mọi thứ trên cơ sở thường xuyên, do người dùng xác định trong nền.)

Trước tiên, bạn cần cài đặt một máy nghe nhạc mp3 dòng lệnh và acpi để có thể đọc trạng thái pin.

Từ một thiết bị đầu cuối chạy sau đây để cài đặt các gói.

sudo apt-get install acpi mpg123

Tiếp theo, trong khi vẫn ở trong thiết bị đầu cuối, nhập crontab -evà nhập phần sau vào cuối tệp. Chỉ cần thay đổi người dùng thành tên người dùng của bạn và .mp3 thành tên tệp của bạn trong thư mục chính của bạn.

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

Nhấn Control-O (chữ cái) và Enter để lưu. Nhấn Control-x để thoát

Thêm những thứ bạn có thể muốn đọc ...

Ubuntu CronHowto

Hướng dẫn Ubuntu


Không hoạt động ở đây: ~ if [ acpi |awk '{print substr($NF, 0, length($NF)-1)}' -lt "10"]; sau đó aplay /home/felipelalli/Music/siren.wav; fi [: biểu thức số nguyên dự kiến: vẫn còn ~ acpi Pin 0: Xả, 9%, 00:17:56 còn lại
Felipe

2

Thật ra tôi đã sử dụng câu trả lời của Andy Pyne nhưng nó không hiệu quả với tôi. Cron thực thi mã, nhưng nó không phát âm thanh. Cuối cùng tôi đã tìm ra giải pháp và chia sẻ nó ở đây:

Bước 1: Cài đặt mpg3

sudo apt-get install acpi mpg123

Bước 2: Lưu lệnh sau vào~/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

Kịch bản này phát pin_low.mp3 nếu máy tính xách tay đang xả và sạc ít hơn hoặc bằng 15%. (Nếu nguồn AC được kết nối, nó sẽ không cảnh báo bạn). Mã này cũng thông báo cho bạn, nếu khoản phí là 100%. Nếu bạn không muốn cảnh báo về trạng thái được sạc đầy, hãy xóa phần khác khỏi mã này.

Bước 3: Tạo tập tin thực thi bằng lệnh sau.

chmod +x ~/bin/battery_alert

Bước 4: Thực thi tệp này bằng cron bằng cách thêm lệnh sau vào cuối tệp opend bằng crontrab -elệnh.

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

(Đừng quên có một dòng trống sau lệnh này)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.