Chcę, aby mój komputer odtwarzał niestandardowy plik dźwiękowy, gdy poziom naładowania baterii jest niski (powiedzmy 10%). W jaki sposób mogę to zrobić? Dzięki
Chcę, aby mój komputer odtwarzał niestandardowy plik dźwiękowy, gdy poziom naładowania baterii jest niski (powiedzmy 10%). W jaki sposób mogę to zrobić? Dzięki
Chciałem tylko odpowiedzieć, ponieważ skorzystałem z porad na tej stronie, aby skonfigurować własne crontab -e
zadanie.
Używam Lubuntu (zaufanego) i powyższe nie działało dla mnie, ale z drobnymi poprawkami to działało. Mój poziom (nie) doświadczenia polega na tym, że jestem stosunkowo zdolny do czytania podstawowych skryptów i poleceń, ale mniej zdolny do pisania ich od zera w Linuksie. Wspominam o tym, ponieważ jeśli potrafię zebrać razem działający alarm baterii, większość z was czytających to również powinna!
SO .... skrypt i podstawowe wyjaśnienie ....
Zgodnie z powyższymi postami Glutanimate i Scott Goodgame (dzięki chłopaki!) W zasadzie zrobiłem następujące:
Aby uzyskać mpg123 i móc odtwarzać dźwięk:
sudo apt-get install acpi mpg123
Plik do otwarcia w celu napisania polecenia:
crontab -e
Polecenie, aby wprowadzić na końcu pliku:
*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Gwiazdki na początku
Pięć gwiazdek oznacza częstotliwość uruchamiania poleceń.
*/1 * * * *
oznacza „uruchom to co minutę”.
IF / THEN / FI:
IF [ stuff inside these brackets ] ; THEN do something ; FI
Wydaje mi się, że większość z was bardzo dobrze zna stwierdzenia IF / THEN. FI na końcu kończy stwierdzenie IF
Odtwarzanie dźwięku:
mpg123 /home/andy/Alarm.mp3
służy to po prostu mpg123
do odtworzenia pliku o nazwie Alarm.mp3
znajdującego się w moim katalogu domowym /home/andy/
.
Informacje o baterii wyjściowej:
acpi -b
to po prostu wyświetla stan baterii. Na moim laptopie daje takie wyniki, jak:
Battery 0: Discharging, 74%, 02:35:18 remaining
Polecenie potok do awk
| awk ' { print ( $(NF-2)-0)}'` -lt "15"
Okej, więc przesyłamy wynik stanu baterii powyżej i wypisujemy drugą wartość od końca (NF-2), która w powyższym przykładzie wynosi „74%”. Musimy jednak usunąć „procent” -0 . Chcemy porównać bieżącą wartość z wartością 15- lt „15” . Podsumowując, w prostym angielskim,
JEŻELI wartość baterii jest NIŻSZA NIŻ 15% NALEŻY odtworzyć plik audio
Rozumiem, że nieco go stłumiłem i być może moje wyjaśnienie mogłoby zostać poprawione, ale mam nadzieję, że pomoże to komuś innemu zrozumieć, jak dodać alarm dla baterii i uniknąć sytuacji, w której ich laptopy nagle się wyłączą!
Powodzenia!
Ok ... więc okazuje się, że kiedy mój laptop się ładuje, moc wyjściowa
acpi -b
jest:
Battery 0: Charging, 35%, 01:04:08 until charged
podczas gdy na baterii jest
Battery 0: Discharging, 36%, 01:22:36 remaining
więc używając parametru wymienionego początkowo z
print ( $(NF-2)-0)
wyprowadza różne wyniki, ponieważ pamiętaj, bit wartości NF określa, ile elementów wstecz od końca wyjścia do wyświetlenia, więc przy wyjściu na baterii
Battery 0: Discharging, 36%, 01:22:36 remaining
$(NF-2)
daje „36%”, podczas gdy laptop jest naładowany,
Battery 0: Charging, 35%, 01:04:08 until charged
$(NF-2)
wyprowadza „00: 50: 12”, tj. czas pozostały do naładowania.
-0
Po $(NF-2)
minusów zero z wartości, więc kiedy wartość jest procent -0
zmienia go z czymś takim '36%”do«36». Gdy wartość wyjściowa jest postrzegana jako nieliczbowa, na przykład wynik czasowy „01: 04: 08” jak powyżej, -0
zwracana jest wartość „0”. Możesz więc zobaczyć mój problem - gdy mój laptop jest naładowany, wartość wyjściowa wynosi zawsze „0”. Ponieważ chcę uruchomić alarm, gdy wartość wyjściowa jest mniejsza niż 15, przekłada się to na alarm baterii, który włącza się co minutę, gdy jest ładowany!
Przeczytałem trochę więcej na wyjściu awk
polecenia i okazało się, że nie musiałem zmuszać go do odczytania drugiej wartości od końca, mogłem zacząć od początku wyjścia i przejść do przodu. Jest to o wiele lepsze, ponieważ stan mojego akumulatora zaczyna się tak samo, niezależnie od tego, czy jest on naładowany, czy akumulatorowy pod względem liczby parametrów, tj. Czwartym parametrem od początku jest zawsze wartość naładowania w procentach.
SO ... aby odczytać czwartą wartość, polecenie zmienia się z
awk ' { print ($(NF-2)-0)}'
do
awk ' { print ($4)-0}'
lub w pełnej krasie:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Znów mam nadzieję, że to komuś pomoże! Powodzenia i dziękuję za przeczytanie!
Okej, więc trochę dodatkowego grzebania wokoło, a także wymyśliłem, jak ustawić głośność na 100% i wyłączyć wyciszenie przed uruchomieniem alarmu - bo spójrzmy prawdzie w oczy, jaki jest sens alarmu baterii, jeśli nie słyszysz, ponieważ „ Czy ustawiłeś poziom głośności na niski lub wyciszony ?!
W każdym razie potrzebne polecenie to:
*/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
jak widać, wszystko, co zrobiłem, to wstawienie ciągu poleceń
pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&
(po &&
prostu wiążą wiele poleceń razem)
Znowu, powodzenia wszystkim!
Okej, więc ... jedna ostatnia (mam nadzieję!) Edycja ... najwyraźniej znak procentowy jest specjalnym znakiem podczas uruchamiania zadań cron. Dlatego musisz „uciec” od znaku procentu, umieszczając \
przed każdym odwrotnym ukośnikiem ( ), %
aby nie był (źle) interpretowany przez powłokę.
Więc w zasadzie zastąp
100%
z
100\%
Dlatego polecenie, które naprawdę NAPRAWDĘ potrzebujesz:
*/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
uff, mam nadzieję, że to dla ciebie tak, jak dla mnie !! (ostatecznie!)
Możesz skonfigurować zadanie CRON, które będzie sprawdzać stan baterii co 5/10 minut, a następnie, w zależności od procentu baterii, odtworzy dźwięk.
Aby odtworzyć dźwięk, którego możesz użyć
mpg123
nazwa_pliku.mp3Aby go zainstalować
sudo apt-get install mpg123
Aby uzyskać status baterii z wiersza poleceń, możesz użyć tego polecenia
upower -i /org/freedesktop/UPower/devices/battery_BAT0
używając
grep
możesz wyodrębnić dokładne informacje w następujący sposóbupower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"
Teraz możesz umieścić wszystkie te rzeczy w skrypcie powłoki (a także
if
warunek, aby sprawdzić, czy stan baterii jest niższy niż 10%) i po prostu podać ścieżkę tego skryptu powłoki do zadania cron.więc po każdych 5 minutach (możesz zmienić ten odstęp) stan baterii będzie sprawdzany, a jeśli poziom naładowania baterii spadnie poniżej 10%, odtworzony zostanie dostarczony plik dźwiękowy!
Mam nadzieję że to pomoże!
źródło
Jednym z łatwych sposobów, aby to zrobić, jest dodanie prostej kontroli do Twojego pliku crontab (cron to system do uruchamiania rzeczy w tle, regularnie przez użytkownika).
Najpierw musisz zainstalować odtwarzacz mp3 z linii poleceń i acpi, aby móc odczytać stan baterii.
Z terminala uruchom następujące polecenie, aby zainstalować pakiety.
Następnie, będąc jeszcze w terminalu, wpisz
crontab -e
i wprowadź następujące informacje na końcu pliku. Wystarczy zmienić użytkownika na nazwę użytkownika i .mp3 na nazwę pliku w katalogu domowym.Naciśnij Control-O (litera) i Enter, aby zapisać. Naciśnij Control-x, aby wyjść
Dodatkowe rzeczy, które możesz chcieć przeczytać ...
Ubuntu CronHowto
Przewodnik Ubuntu
źródło
acpi |awk '{print substr($NF, 0, length($NF)-1)}'
-lt "10"]; następnie graj /home/felipelalli/Music/siren.wav; fi [: oczekiwane wyrażenie na liczbę całkowitą: pozostało ➜ ~ acpi Bateria 0: rozładowanie, 9%, pozostało 00:17:56Właściwie skorzystałem z odpowiedzi Andy'ego Pyne'a, ale to nie zadziałało. Cron wykonał kod, ale nie odtworzył dźwięku. Wreszcie znalazłem rozwiązanie i udostępniłem je tutaj:
Krok 1: Zainstaluj mpg3
Krok 2: Zapisz następujące polecenie w
~/bin/battery_alert
Ten skrypt odtwarza battery_low.mp3, jeśli laptop się rozładowuje, a ładunek jest mniejszy lub równy 15%. (Jeśli podłączone jest zasilanie prądem zmiennym, nie ostrzeże Cię). Ten kod ostrzega również, jeśli opłata wynosi 100%. Jeśli nie chcesz otrzymywać powiadomienia o stanie pełnego naładowania, usuń część else z tego kodu.
Krok 3: Ustaw plik jako wykonywalny za pomocą następującego polecenia.
Krok 4: Wykonaj ten plik za pomocą crona, dodając następującą komendę na końcu pliku
crontrab -e
.(Nie zapomnij mieć pustej linii po tym poleceniu)
źródło