[Çözüldü] ac güç - ekran parlaklığı betiği

Başlatan guopx, 25 Temmuz 2012 - 16:05:06

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

guopx

dizüstü bilgisayar fişe takıldığında ekran parlaklığını otomatik olarak %100 e ayarlayıp fişten çekildiğinde tekrar %30 a ayarlayan bir betik yazmaya çalışıyorum ama bir türlü beceremedim :(
şimdi ekran parlaklığı xbacklight ile ayarlanacak orası tamam
xbacklight -set 30
xbacklight -set 100
fakat ac adaptör takılı mı değil mi nasıl anlayacağız. aklıma bir fikir geldi ama nasıl betiğe dökeceğiz bilmiyorum
/proc/acpi/battery/BAT0/state dosyasındaki 3. satır 'charging state:          charged' olduğunda 'xbacklight -set 100' ,'charging state:          discharging' olduğunda 'xbacklight -set 30' komutlarını nasıl verdirebiliriz?

present:                 yes
capacity state:          ok
charging state:          charged
present rate:            0 mA
remaining capacity:      0 mAh
present voltage:         10776 mV
Sevdiklerine sevdiğini söyle çok geç olmadan.

cagriemer

Eger state dosyasini kontrol edecekseniz betigi ara ara calistirmaniz gerekiyor. O durumu nasil alabileceginize gelince, ornegin cat ile state dosyasini dokturup grep ile charging state'i ararsiniz. gelen ciktidan da awk ya da cut ile ikinci kolonu alirsiniz. Boylece bir degiskene duruma gore charged ya da discharging degeri atanmis olur. Ardindan o degiskeni if ifadesi ile kontrol edip duruma gore aydinlatmayi ayarlayabilirsiniz.

guopx

@cagriemer teşekkür ederim deneyeceğim. yalnız şu betiği ara sıra çalıştırmam konusuna kafam takıldı onu da while do done ile yapabilirim.
bir sorum daha olacak betiğin mesela her 30 sn de bir çalışması değil de sadece ac adaptör takıldığında ve çıkarıldığında çalışması için ne yapmak gerekli. state dosyası dışında bunu kontrol etmenin başka yolları da var mıdır?
Sevdiklerine sevdiğini söyle çok geç olmadan.

sem

Merhabalar bu gün farklı bir arkadaşın daha ihtyacı olmuştu, Python bölümünde idi sanırım.

Linux'da bu işler için select fonksiyonu kullanılıyor. Bir dosyadaki dedğişikliği bu fonksiyon ile dinliyoruz Linux sistemlerde. C ve Pythondaki karşılığı bu. Büyük ihtimalle bu fonksiyon bash'te de bulunuyordur. Araştırmak gerekecektir.

Aritmetik oyun kodlarını inceleyebilirsiniz (forumda aritmetik oyun yazdığınızda çıkacaktır), bash böyle bir imkan sunmuyorsa C ile dosya değişiklikleri dinlenir, dosyada değişiklik olduğu zaman C içerisinden bash betiğini çağırırsınız. gibi...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

furkankalkan

#4
acpi programının diğer çıktılarını sed ile temizleyip charging/discharging durumunu anında görebilirsiniz. Sonra da 2 tane while do döngüsüyle bu çıktıya göre komutunuzu çalıştırırsınız.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 25 Temmuz 2012 - 19:27:40

Bu arada dosya değişikliğini comp (?) komutuyla dinleyebilirsiniz ama sonsuz döngüde sağlıklı çalışmıyor diye biliyorum.
Lover
twitter.com/furkan_kalkan1

guopx

@sem0900 select bash ile de çalışıyor galiba ama google dan nasıl kullanıldığını bulamadım yine de teşekkürler
@dewilman teşekkürler güzel fikir acpi -a işimi görüyor state dosyasına gerek kalmadı.
Sevdiklerine sevdiğini söyle çok geç olmadan.

hitokiri

select   Bağlantıdaki    örnek ve açıklamalara göre sanki başka bir işe yarıyormuş gibi görünüyor,
select x in Abc ABC AbC;do [[ "$x" = "Abc" ]] && break ;done

sem

Bu select dediğin gibi farklı bir amaç için...

biraz bakındığımda bash için bu işlemi yapan inotify araçları varmış

inofity ya da incron şeklinde bazı araçlar ile dosya seviyesinde izleme yapılabiliyor. Ya bu araçlar kullanılabilir ya da Python ile kendi betiğimizi de yazabiliriz.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

guopx

@sem0900 @hitokiri çok teşekkür ederim ilgilendiğiniz için ama daha if 'i bile kullanmayı beceremedim :(
#!/bin/bash
while :
do
acpi -a = SBT | if [ ''$SBT'' = ''Adapter 0: on-line'' ]
then
xbacklight -set 100
fi

sleep 2;
done

terminalde çalıştırınca /home/mnrl/Masaüstü/Başlıksız Belge 1: satır 4: [: çok fazla argüman
diyor neree yanlış yapıyorum
Sevdiklerine sevdiğini söyle çok geç olmadan.

sem

Söyleyeceğim 3 konu olacak;

1- Genel; Programlamada atama işlemleri için sol taraf değerleri ve sağ taraf değerleri kavramlarını inceleyiniz
2- Bash ile ilgili; bash söz dizimini (syntax) gözden geçiriniz. = ifadesinde ya da if koşulunda bırakılan bir boşluk (space karakteri) dahi önem arz ediyor.
3- Programlama yaparken mutlaka, özellikle uygulamanız kararlı şekilde çalışana kadar hata ayıklama şeklinde gidiniz. Örneğin yukarıdaki script çalışmıyor ama neden? fazladan virgül mü var? SBT değişkeninin değeri istediğiniz değeri alıyor mu, aldığı halde mi yanlış çalışıyor yoks daha SBT değişkeninin değerini atarken yapılan bir hata mı var vs gibi bir çok bilinmeyen var;

Scriptteki hatalar;
* Tırnak işareti olarak ya ' kullanılınız (shift +2) bu durumda birer tane yeterli olacaktır; 'sem0900' gibi ya da " kullanınız (bir tuşunun solundaki yani tab tuşunun üstündeki karakter ile yapılan). Bu durumda yine bir kere basmanız yeterli, "sem0900"... Yukarıdaki scriptte iki kere shift + 2 kullanılmış

* SBT'ye değer atarken yapılan hata.

Doğru çalışan script;


#!/bin/bash
while :
do
SBT=$(acpi -a)
echo "SBT Değişkeninin Değeri: $SBT"
if [ "$SBT" = "Adapter 0: on-line" ]
then
    #xbacklight -set 100
    echo "---online işlemleri burada yapılacak---"
else
    echo "---Diğer işlemler burada yapılacak---"
fi

sleep 2;
done



Kolay gelsin.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

guopx

@sem0900 sana ne kadar teşekkür etsem azdır. yanımda olsan sarılıp öperdim valla :D
öğreneceğim çok şey var daha
betiğin son hali
#!/bin/bash
while :
do
SBT=$(acpi -a)
echo "SBT Değişkeninin Değeri: $SBT"
if [ "$SBT" = "Adapter 0: on-line" ]
then
    xbacklight -set 100
    echo "---online işlemleri burada yapılacak---"
else
xbacklight -set 30   
echo "---Diğer işlemler burada yapılacak---"
fi

sleep 2;
done

tekrar hepinize teşekkür ediyorum
Sevdiklerine sevdiğini söyle çok geç olmadan.

sem

Rica ederim @guopx, hep beraber öğreniyoruz...

kolay gelsin hepimize =)...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?