バッテリー残量が少ないときにカスタムサウンドを再生するにはどうすればよいですか?


13

バッテリー残量が少ないとき(10%など)、コンピューターにカスタムサウンドファイルを再生させたい。これどうやってするの?ありがとう

回答:


6

自分のcrontab -e仕事を設定するためにこのページのアドバイスを使用したので、返信したかっただけです。

私はLubuntu(trusty)を実行していますが、上記はうまくいきませんでしたが、少し調整してみました。私の(経験)レベルは、基本的なスクリプトとコマンドを読むことは比較的可能ですが、Linux distoでは最初からそれらを書くことができないことです。動作中のバッテリーアラームを一緒にまとめることができれば、これを読んでいるほとんどの人も同様にできるはずだからです!

SO ....スクリプトと基本的な説明...

上記の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
  • 2番目の星=時間:0-23
  • 3番目の星=月の日:0-31
  • 4番目の星=月:0-12
  • 5番目の星=曜日: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

Pipe to awkコマンド

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

さて、我々は上記バッテリー状態の出力を配管しているので、印刷から2番目のエンド値INGの(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)値があるときにマイナスの値からゼロなので、%は-0『36「から』 '36%のようなものから、それを変更します。上記の「01:04:08」の時間出力など、出力値が非数値として認識される場合、値-0は「0」になります。だから、私の問題を見ることができます-私のラップトップが充電されているとき、出力値は常に「0」です。出力値が15未満のときにアラームを再生したいので、充電時に1分ごとにオフになるバッテリーアラームに変換されます!

awkコマンドの出力をもう少し読んでみると、最後から2番目の値を読み取る必要はなく、出力の先頭から開始して前方にスキップできることがわかりました。これは、バッテリーの状態がパラメーターの数の点で充電中またはバッテリー上で同じであるため、はるかに優れています。つまり、最初から4番目のパラメーターは常にパーセント単位の充電値です。

SO ... 4番目の値を読み取るには、コマンドが

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

繰り返しますが、それが誰かを助けることを願っています!読んでくれてありがとう!


ボーナス編集

OK音量を低く設定するかミュートしましたか?!

とにかく、必要なコマンドは次のとおりです。

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

(は&&複数のコマンドを結合するだけです)

繰り返しますが、幸運を祈ります!

最後の編集

さて、最後の1つ(できれば!)の編集...明らかに、パーセント記号は、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

5/10分ごとにバッテリーの状態を確認するcronジョブを設定し、バッテリーの割合に応じてサウンドを再生できます。

使用できるサウンドを再生するには

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

これを行う簡単な方法の1つは、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ガイド


ここでは機能しませんでした:acpi |awk '{print substr($NF, 0, length($NF)-1)}' ➜〜if [ -lt "10"]; 次にaplay /home/felipelalli/Music/siren.wav; fi [:整数式が期待されます:残りin〜acpiバッテリー0:放電中、9%、00:17:56残り
フェリペ

2

実際、アンディ・パインの答えを使いましたが、うまくいきませんでした。cronはコードを実行しましたが、サウンドは再生しませんでした。最後に、私は解決策を見つけ、それをここで共有しました:

ステップ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.