Strona 1 z 1

skrypt powiadamiający o odcięciu zasilania

: 01 paź 2013, 23:42
autor: MonaLu
Cześć,

Znalazłam tu http://andyk.pg.gda.pl/skrypty/#Skrypt_ ... _o_poczcie skrypt, za którego pomocą chciałabym wyświetlać powiadomienie o rozłączeniu zasilacza. Bateria jest kompletna dętka i po odłączeniu prądu starcza jej jak raz, aby biegiem podłączyć "zerwany" kabel. W dodatku kłamie, że jest pełna, więc komp nawet nie ma czasu się zahibernować, a inne ustawienia zasilania nie są wystarczająco nachalne no i szkoda mi dysku, żeby tak ciągle pady zaliczał, jak mi dzieć po zasilaczu przejedzie... Aha, no clou wątku, to oczywiście, że ja z tego skryptu nic nie rozumiem, jak mam przetłumaczyć na komputerowe "jak odłączony kabel" i co w tym skrypcie tym zastąpić? :pt36:
Z góry dzięki za wszelką pomoc!

Re: powiadomienie o zasilaniu

: 02 paź 2013, 09:56
autor: spart
Odpowiednie odwołanie do odpięcia kabla znajduje się już w systemie w /etc/acpi/events/battery

Kod: Zaznacz cały

# /etc/acpi/events/battery
# Called when AC power goes away and we switch to battery

event=battery
action=/etc/acpi/power.sh
w skrypcie /etc/acpi/power.sh dodaj linijkę do jakiegoś programu np. speaker-test -t wav -wRear_Right.wav -l5

Kod: Zaznacz cały

#!/bin/sh
speaker-test -t wav -wRear_Right.wav -l5

test -f /usr/share/acpi-support/key-constants || exit 0

. /usr/share/acpi-support/policy-funcs

if [ -z "$*" ] && ( [ `CheckPolicy` = 0 ] || CheckUPowerPolicy ); then
    exit;
fi

pm-powersave $*

Re: powiadomienie o zasilaniu

: 02 paź 2013, 10:44
autor: MonaLu
spart pisze: w skrypcie /etc/acpi/power.sh dodaj linijkę do jakiegoś programu np. speaker-test -t wav -wRear_Right.wav -l5
Dzięki, spart. Nie mogłam sobie poradzić ze speaker-testem, więc wrzuciłam odwołanie do vlc, co jednocześnie da sygnał wizualny. Ale albo trochę przesadziłam, albo czas reakcji nie jest wystarczający (odczekałam tylko 9 sekund, nie wiem dokładnie jak długo bateria wytrzymuje, a nie chciałam go jeszcze wysadzić). Teraz mój power.sh wygląda tak:

Kod: Zaznacz cały

#!/bin/sh

vlc osiol.mp3

test -f /usr/share/acpi-support/key-constants || exit 0

. /usr/share/acpi-support/policy-funcs

if [ -z "$*" ] && ( [ `CheckPolicy` = 0 ] || CheckUPowerPolicy ); then
    exit;
fi

pm-powersave $*
Nie wiem, czy *natychmiastowa* reakcja w ogóle jest możliwa? Hm, w sumie to on natychmiast przechodzi na baterię, a po jakichś 2 sekundach robi takie jakby "pryk", więc vlc te powinien od razu wyskoczyć, nawet z dwusekundowym opóźnieniem na uruchomienie... To co tam nie gra (poza oslem na vlc)?

PS osioł z terminala gra.

Re: skrypt powiadamiający o odcięciu zasilania

: 02 paź 2013, 12:53
autor: ethanak
zacznijmy od tego, że vlc się nie odpali bo nie wie gdzie. teoretycznie można poinformować go że aktualny display to :0, ale nie jestem pewien czy to zadziała.
z drugiej strony jeśli nawet zadziała (czy zmienisz polecenie np. na play który displaya nie wymaga) kochane PA nie pozwoli na odegranie dźwięku przez innego użytkownika niż ten który jest aktualnie zalogowany, czyli w naszym przypadku roota...
jeśli masz tylko jednego użytkownika można to obejść:

Kod: Zaznacz cały

su - nazwausera -c "/usr/bin/play /tam/gdzie/mieszka/osiol.mp3"
(czy jakoś tak, teraz nie sprawdzę)
masz do tego zainstalować sox i format mp3 do soxa.

Re: skrypt powiadamiający o odcięciu zasilania

: 02 paź 2013, 14:16
autor: spart
Bardziej by pasowało cvlc ale tak jak pisze kolega trzeba kombinować.
Moje rozwiązanie działa po rebocie, nie zostawiaj pustego miejsca po #!/bin/sh, po odłączeniu kabla reakcja jest natychmiastowa.

Możesz wrzucić dowolny dzwięk wav i wskazać speaker-test żeby go odtwarzał z tym że musi to być dźwięk jednokanałowy
Użyłem do tego programu SoundConverter, próbkowanie na 48000Hz, zaznaczona opcja “wymuszenie dźwięku jednokanałowego”

Re: skrypt powiadamiający o odcięciu zasilania

: 03 paź 2013, 11:44
autor: MonaLu
Juhuuu, pokombinowałam, zrozumiałam i działa! Nawet przed zalogowaniem! I po wpięciu kabla! ;) Jak rozumiem na końcu oznacza, że dźwięk ma być odtworzony 5 razy? Raz by wystarczył, ale co mi tam, zrobię se dwa! :D Dzięki serdeczne!

Re: [SOLVED]skrypt powiadamiający o odcięciu zasilania

: 03 paź 2013, 12:52
autor: mucha090
ja to na twoim miejscu bym dał polecenie

Kod: Zaznacz cały

pm-suspend

wiesz no lepiej uśpić system i po tym podłączyć kabel zasilania niż martwić się że nagle bateria padnie i cała praca pójdzie na marne

Re: skrypt powiadamiający o odcięciu zasilania

: 03 paź 2013, 15:39
autor: MonaLu
Nie no, bez jaj, na kompie to nie jak w piekarni, mogę się na chwilę oderwać, żeby podłączyć kabel, który znów taki długi nie jest, żebym musiała robić kilometry... Ale notuję na przyszłość, jak już bateria będzie jakby jej nie było! (Choć wtedy pewnie jednak wyskoczę z tych 200-300 stów, a może to już będzie mniej..? ;))

Edit:
Przy okazji się wykryły 2 rzeczy:
1. Jak się mu da "wyłącz", a potem zamiast potwierdzić "anuluj", to komp się restartuje.
2. Osioł ryczy przy uruchamianiu, nawet przy wpiętym kablu... To albo cos nie gra, albo jak zastosuję się do rady mucha090, to komp mi się nigdy nie uruchomi... A tak bez żartów, to też niedobrze, bo czasem faktycznie zapomnę, że rozpięłam, startuję, loguję i on pada. Jak będzie zawsze ryczał na start, to się uodpornię i znów nie będzie działać! :o

Re: skrypt powiadamiający o odcięciu zasilania

: 03 paź 2013, 19:47
autor: spart
Osioł ma ryczeć podczas uruchamiania taki jego urok ;) ale może uda się go wyciszyć, dodaj parametr sleep 30 całość może wyglądać tak

Kod: Zaznacz cały

sleep 30 && speaker-test -t wav -wRear_Right.wav -l5
reakcja będzie opóźniona o 30 sekund

Re: skrypt powiadamiający o odcięciu zasilania

: 04 paź 2013, 09:12
autor: ethanak
To akurat trochę nie tak jak tak...
Nie mam jak sprawdzić (nie mam teraz żadnego lapka w okolicy, ale pokombinuje później bo też mi się przyda) - taki scenariusz:
a) osioł ryczy pod warunkiem, że istnieje plik np. /dev/shm/osiol.enable:

Kod: Zaznacz cały

if [ -f /dev/shm/osiol.enable ] ; then
    osiol ryczy
fi
b) ponieważ w chwili startu systemu /dev/shm jest pusty, osioł będzie trzymać pysk na kłódkę
c) rc.local (albo coś w tym rodzaju) odpala:

Kod: Zaznacz cały

touch /dev/shm/osiol.enable
w każdym razie ważne aby odpalić to w momencie, gdy:
a) komputer jest podłączony do sieci przy starcie
lub
b) komputer przechodzi z baterii na sieć

Dobrze kombinuję czy jak osioł pod górkę?

Re: skrypt powiadamiający o odcięciu zasilania

: 04 paź 2013, 10:07
autor: spart
ha,ha.. eleganckie rozwiązanie milordzie, tylko trzeba usuwać skrypt co uruchomienie systemu
można też stworzyć skrypt w /etc/pm/power.d , tylko nie wiem co podstawić za wait może np.:

Kod: Zaznacz cały

#!/bin/sh
case $1 in
    true) #laptop_mode_battery 
        speaker-test -t wav -wRear_Right.wav -l5 #twoja komenda
	;;
    false) #laptop_mode_ac 
        wait /etc/acpi/power.sh  #twoja komenda  http://www.computerhope.com/unix/uwait.htm  
	;;
    help) help;;
    *) exit $NA ;;
esac
exit 0
https://help.ubuntu.com/community/Power ... ducedPower

Re: skrypt powiadamiający o odcięciu zasilania

: 05 paź 2013, 11:19
autor: MonaLu
Ojej, w sobotę rano osioł ryczy, a baba nie kuma... Osioł ma ryczeć kiedy:
1. Przy starcie zasilanie NIE jest podłączone,
2. Komp przechodzi na baterię.
Jak rozumiem przy uruchamianiu jest sprawdzana obecność baterii, dlatego ryczy? Odwlekanie reakcji na nic się nie zda, bo i tak zaryczy niepotrzebnie, tylko później, a jeśli przy każdym uruchamianiu miałabym usuwać lub znów tworzyć skrypt... to już wolę zerkać na zasilacz! Przynajmniej będę mogła zdjąć z monitora naklejkę "sprawdź kabel!" ;D
1...chyba, że ten skrypt

Kod: Zaznacz cały

    touch /dev/shm/osiol.enable
można wrzucić do autostartu, tak jak kiedyś "TapButton2 i 3"..?
2. ... chyba, że "wait", opóźniając reakcję, jednocześnie by powodował jej anulowanie, jeśli warunek nie jest już spełniony.

Edit after dist-upgrade:
Ku potomności uprzejmie informuję, że w 13.10 skrypt przestał działać, z tej prostej przyczyny, że w /etc/ecpi/events/ nie ma już battery a w katalogu wyżej po power.sh pozostały tylko kopie zapasowe. Jak na osobę z sygnaturki przystało, utworzyłam /etc/ecpi/events/battery, zapisałam prawidłowo power.sh, zresetowałam i.... no nie, nie śmiga właśnie, mam wrażenie, że uruchamia się dłużej i nie ryczy, jak wcześniej, przy wpiętym kablu. Ale ryczy później po wyjęciu kabla... i po wpięciu. Myślicie, ze można te obie akcje dźwiękowo rozróżnić?

Edit 2.:
W sumie to było dobrze jak ryczał na start niezależnie od kabla... bo teraz podczas uruchamiania bez kabla też nie ryczy, przypuszczam, że sprawdza eventy dopiero później, dla mojej baterii za późno...