Bagaimana saya bisa memainkan suara khusus saat baterai saya hampir habis?


13

Saya ingin komputer saya memutar file suara khusus ketika baterai saya rendah (katakanlah 10%). Bagaimana saya bisa melakukan ini? Terima kasih

Jawaban:


6

Saya hanya ingin membalas karena saya menggunakan saran pada halaman ini untuk mengkonfigurasi crontab -epekerjaan saya sendiri .

Saya menjalankan Lubuntu (tepercaya) dan hal di atas tidak berhasil untuk saya, tetapi dengan sedikit penyesuaian, itu berhasil. Tingkat pengalaman saya (dalam) adalah bahwa saya relatif mampu membaca skrip dan perintah dasar tetapi kurang mampu menulisnya dari awal di disto linux. Saya menyebutkan bahwa karena jika saya dapat menyalakan alarm baterai yang berfungsi dengan baik, sebagian besar dari Anda yang membaca ini juga dapat melakukannya!

JADI .... skrip dan penjelasan dasar ....

Sesuai posting di atas oleh Glutanimate dan Scott Goodgame (terima kasih kawan!), Pada dasarnya saya melakukan hal berikut:

Untuk mendapatkan mpg123 dan dapat memutar audio:

sudo apt-get install acpi mpg123

File yang akan dibuka untuk menulis perintah:

crontab -e

Perintah untuk masuk di akhir file:

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

Penjelasan di atas

Tanda bintang di awal

Kelima tanda bintang mewakili frekuensi untuk menjalankan perintah.

  • Bintang pertama = Menit: 0-59
  • Bintang kedua = Jam: 0-23
  • Bintang ketiga = Hari Bulan: 0 - 31
  • Bintang keempat = Bulan: 0 - 12
  • Bintang kelima = Hari Minggu: 0 - 6 (0 berarti Minggu)

*/1 * * * *

berarti 'jalankan ini setiap menit'.

JIKA / LALU / FI:

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

Sebagian besar dari Anda, saya kira, sangat akrab dengan pernyataan IF / THEN. FI pada akhirnya menyimpulkan pernyataan IF

Memutar audio:

mpg123 /home/andy/Alarm.mp3

ini hanya digunakan mpg123untuk memutar file yang disebut Alarm.mp3terletak di direktori home saya /home/andy/.

Info keluaran baterai:

acpi -b

ini hanya mengeluarkan status baterai. Di laptop saya itu menghasilkan hasil seperti:

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

Perintah pipa ke awk

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

Oke, jadi kami menyalurkan output status baterai di atas dan mencetak nilai kedua-dari-akhir (NF-2) yang dalam contoh di atas adalah '74% '. Namun, kita perlu menghapus 'persentase' -0 . Kami ingin membandingkan nilai saat ini dengan nilai 15 -lt "15" . Jadi untuk meringkasnya dalam bahasa Inggris,

JIKA nilai baterai KURANG DARI 15% KEMUDIAN memutar file audio

Saya menghargai saya telah sedikit membodohi dan mungkin penjelasan saya dapat ditingkatkan, tetapi mudah-mudahan itu akan membantu orang lain memahami cara menambahkan alarm untuk baterai dan menghindari laptop mereka dari hanya mematikan tiba-tiba!

Semoga berhasil!


EDIT

Oke ... ternyata ketika laptop saya sedang diisi, output dari

acpi -b

adalah:

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

sedangkan pada baterai

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

jadi menggunakan parameter yang disebutkan pada awalnya

print ( $(NF-2)-0)

output hasil yang berbeda, karena ingat, bit NF- nilai menentukan berapa banyak item mundur dari akhir output untuk ditampilkan, sehingga dengan output pada baterai

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

$(NF-2) keluaran '36% 'sedangkan dengan laptop yang diisi,

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

$(NF-2) keluaran '00: 50: 12 ', yaitu jumlah waktu yang tersisa hingga terisi.

The -0setelah $(NF-2)minus nol dari nilai, jadi ketika nilai adalah persen -0berubah dari sesuatu seperti '36%' untuk '36'. Ketika nilai output dianggap non numerik, seperti output waktu '01: 04: 08 'seperti di atas, nilai -0pengembaliannya adalah' 0 '. Jadi, Anda dapat melihat masalah saya - saat laptop saya diisi daya, nilai output selalu '0'. Karena saya ingin memutar alarm ketika nilai output kurang dari 15, itu berarti alarm baterai berbunyi setiap satu menit saat diisi ulang!

Saya membaca sedikit lebih lanjut tentang output dari awkperintah dan ternyata saya tidak perlu membuatnya membaca nilai kedua dari akhir, saya bisa mulai dari awal output dan melompat ke depan. Ini jauh lebih baik karena status baterai saya mulai sama apakah baterai sedang diisi atau pada baterai dalam hal jumlah parameter, yaitu parameter keempat dari awal selalu nilai pengisian dalam persen.

SO ... untuk membuatnya membaca nilai keempat, perintah berubah dari

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

untuk

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

atau dalam kemuliaan penuh:

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

Sekali lagi saya berharap itu membantu seseorang! Semoga sukses dan terima kasih sudah membaca!


BONUS EDIT

Oke, jadi sedikit tambahan mengaduk-aduk dan saya juga mencari cara mengatur volume ke 100% dan mengaktifkan suara sebelum memutar alarm - karena mari kita hadapi itu, apa gunanya alarm baterai jika Anda tidak dapat mendengarnya karena Anda Sudahkah mengatur volume ke rendah atau mematikannya ?!

Bagaimanapun, perintah yang Anda butuhkan adalah:

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

seperti yang Anda lihat, semua yang saya lakukan adalah memasukkan string perintah

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

( &&Hanya mengikat beberapa perintah bersamaan)

Sekali lagi, semoga sukses semuanya!

EDIT TERAKHIR

Oke, Jadi ... satu edit terakhir (semoga!) ... ternyata, tanda persentase adalah tanda khusus ketika menjalankan tugas cron. Oleh karena itu, Anda harus 'lepas' tanda persentase dengan meletakkan backslash ( \) di depan masing-masing %sehingga tidak (salah) ditafsirkan oleh shell.

Jadi pada dasarnya ganti

100%

dengan

100\%

Oleh karena itu, perintah yang Anda BENAR-BENAR butuhkan adalah:

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

Fiuh berharap itu untuk Anda seperti halnya bagi saya !! (akhirnya!)


Ini penjelasan yang bagus! Sayangnya, ia juga memainkan suara setiap menit saat mengisi daya juga.
OpnSrcFan

5

Anda dapat mengatur pekerjaan cron yang akan memeriksa status baterai setelah setiap 5/10 menit dan kemudian tergantung pada persentase baterai itu akan memainkan beberapa suara.

Untuk memutar suara bisa Anda gunakan

mpg123 filename.mp3

Untuk menginstalnya

sudo apt-get install mpg123

Untuk mendapatkan status baterai dari baris perintah, Anda dapat menggunakan perintah ini

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

menggunakan grepAnda dapat mengekstrak info yang tepat sebagai berikut

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

Sekarang Anda dapat meletakkan semua hal ini dalam skrip shell (dan juga ifkondisi untuk memeriksa apakah status baterai lebih rendah dari 10%) dan hanya memberikan path skrip shell ini ke cron job.

jadi setelah setiap 5 menit (Anda dapat mengubah interval ini) status baterai Anda akan diperiksa dan jika baterai lebih rendah dari 10% file suara Anda yang disediakan akan diputar!

Semoga ini membantu!


3
Itu benar, hanya orang-orang keren yang menggunakan mpg123 :)
Scott Goodgame

3

Salah satu cara mudah untuk melakukan ini adalah menambahkan cek sederhana ke crontab Anda (cron adalah sistem untuk menjalankan berbagai hal secara teratur, yang ditetapkan pengguna di latar belakang.)

Pertama, Anda perlu menginstal mp3 player dan acpi baris perintah untuk dapat membaca status baterai.

Dari terminal, jalankan yang berikut untuk menginstal paket.

sudo apt-get install acpi mpg123

Selanjutnya, saat masih di terminal, ketik crontab -edan masukkan berikut ini ke akhir file. Ubah saja pengguna ke nama pengguna Anda dan .mp3 ke nama file Anda di direktori home Anda.

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

Tekan Control-O (huruf) dan Enter untuk menyimpan. Tekan Control-x untuk keluar

Barang ekstra yang mungkin ingin Anda baca ...

Ubuntu CronHowto

Panduan Ubuntu


Tidak berfungsi di sini: ➜ ~ if [ acpi |awk '{print substr($NF, 0, length($NF)-1)}' -lt "10"]; kemudian aplay /home/felipelalli/Music/siren.wav; fi [: ekspresi integer diharapkan: tersisa ➜ ~ acpi Baterai 0: Pengosongan, 9%, 00:17:56 tersisa
Felipe

2

Sebenarnya saya menggunakan jawaban Andy Pyne tetapi tidak berhasil untuk saya. Cron mengeksekusi kode, tetapi tidak memutar suara. Akhirnya saya menemukan solusinya dan membagikannya di sini:

Langkah 1: Instal mpg3

sudo apt-get install acpi mpg123

Langkah 2: Simpan perintah berikut di~/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

Skrip ini memutar battery_low.mp3 jika laptop sedang dipakai dan isi daya kurang dari atau sama dengan 15%. (Jika daya AC terhubung, itu tidak akan mengingatkan Anda). Kode ini juga memberi tahu Anda, jika biayanya 100%. Jika Anda tidak ingin lansiran untuk keadaan terisi penuh, hapus bagian lain dari kode ini.

Langkah 3: Buat file dapat dieksekusi menggunakan perintah berikut.

chmod +x ~/bin/battery_alert

Langkah 4: Jalankan file ini menggunakan cron dengan menambahkan perintah berikut ke akhir file opend by crontrab -ecommand.

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

(Jangan lupa untuk memiliki baris kosong setelah perintah ini)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.