Pil şarj seviyesine göre etkinlik


11

Henüz bir şey bulamadım, bu yüzden belki birisinin bir fikri olduğunu umuyordum.

Bir Apple dizüstü bilgisayarda belirli bir şarj seviyesine ulaşan veya pil tamamen şarj olduğunda eşit bir şekilde başlamak istiyorum.

Bir şeyin periyodik olarak çalışabileceğini, pil seviyesini kontrol edebileceğimi ve ne yapacağımıza karar verebileceğimi biliyorum, ancak mümkünse olayı yönlendirmeyi tercih ederim.

Yanıtlar:


5

Power Manager ücretsiz değildir ancak pil düzeylerine (dahili veya UPS) dayalı tetikleme olaylarını destekler. Olaylar komut dosyalarını çalıştırabilir, uygulamaları başlatabilir veya kapatma gibi görevleri gerçekleştirebilir.

Power Manager olay güdümlüdür ve pil değişiklikleri için anket oluşturmaz.

Bunun yerine Power Manager, OS X'in IOKit katmanına bağlanır ve donanımdan güncellemeleri bekler. Hiç kimse giriş yapmadığında olaylar tetiklenebilir; etkin bir kullanıcıya güvenmez.

Power Manager - Kalan pilde bir komut dosyası çalıştır

Yerleşik Schedule Assistant görevleri, pil belirli bir seviyeye düştüğünde performansa odaklanır, ancak pil yüzdesi veya kalan süre artışlarını kontrol etmek için değiştirilebilirler.

Bu iki gönderi UPS güç kaynakları hakkında konuşuyor, ancak MacBook'unuzun dahili pili için kolayca uyarlanabilirler:

Açıklama: Power Manager'ın arkasında bir yazılım mühendisiyim.


3

Bunun işletim sistemi tabanlı olmasını istiyorum, bu yüzden bir internet bağlantısına veya açık bir tarayıcıya vb. İhtiyacım yok. Sadece arka planda olabilecek bir şey var

Bunu yapmanın en kolay yolu bir uygulama ile olabilir, ancak bunu yalnızca yerleşik OS komutlarıyla nasıl yapacağınız aşağıda açıklanmıştır. Olay odaklı olmasını istediğinizi biliyorum, ancak bunu nasıl yapacağınızdan emin değilim, bu yüzden pil seviyesini kontrol etmenin, ardından bir eşiğin üstünde / altındaysa başka bir şey yapmanın bir yolu.

Bir işlemi düşünebilirsiniz launchd, bu temelde her xdakika çalışan zamanlanmış bir görevdir . Genellikle ileri düzey kullanıcılar tarafından kullanılır, ancak kurulumu çok zor değildir. Bu dizine koyduğunuz bir .plist dosyasıyla bir launchd zamanlanmış görevi yapılandırırsınız: Macintosh HD\Library\LaunchDaemons.plist dosyasını şu şekilde yapılandırırsınız;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<true/>
<key>ExitTimeOut</key>
<integer>120</integer>
<key>Label</key>
<string>com.me.BatteryInfo</string>
<key>ProgramArguments</key>
<array>
    <string>/Users/yourusername/batt.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>

Siz bu dosyayı kaydetmek için olsaydı com.me.BatteryInfoiçinde LaunchDaemonsyukarıda belirtilen klasöre, her 30 dakikada bir çalışır zamanlanmış görev yaratacak. 1800Doğrudan yukarıdaki sayı, </dict>görevin ne sıklıkta çalışmasını istediğinizin saniye cinsinden süresidir. Nerede <string>/Users/yourusername/batt.sh</string>komut dosyası, programda hangi komut dosyasının çalışacağını belirttiğiniz yerdir. Ayrılmalı <string>ve </sting>sağlam olmalısın .

Çizgi <string>com.me.BatteryInfo</string>, zamanlanan görevin benzersiz adıdır. Birden fazla yapacaksanız, her bir .plist'in burada benzersiz bir ada sahip olduğundan emin olun.

Yapmanız gereken bir sonraki şey .plist'in sahipliğini olarak değiştirmek root. Bu bir güvenlik özelliği olarak gereklidir (yazılımın / kullanıcıların zamanlanmış kötü amaçlı görevler oluşturmasını durdurmak için). Dosyanın sahipliğini değiştirmek için şunu yapın sudo chown root \Library\LaunchDaemons\yourtask.plist(göreviniz.plist dosyasını oluşturduğunuz .plist'in gerçek dosya adıyla değiştirin). Bu görev sizden şifre isteyecektir.

Şimdi periyodik olarak çalışacak bir komut dosyası oluşturmanız gerekir. Bilgisayara ne yapacağını söylemek için bir .sh dosyası (bash betiği) oluşturmanız gerekir. Bir .sh dosyası oluşturmak için Sublime Text veya Komodo Edit gibi bir programcı metin düzenleyicisi açın . Metin Düzenleme'yi KULLANMAYIN, çünkü dosyalarınıza genellikle komut dosyasına müdahale eden metinler ekler. Metin Düzenleme gerçekten kod için kullanılmamalıdır.

Aşağıdaki kodla bir komut dosyası (.sh dosyası) oluşturun;

#!/bin/sh

percent=$(ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.3f";max=c["\"MaxCapacity\""];print(max>0?100*c["\"CurrentCapacity\""]/max:"?")}')

if [ $percent > 95 ]
    then
        echo 'charged.'
fi
exit 0

echo 'charged.'Pil şarj edildiğinde çalıştırmak istediğiniz terminal komutlarıyla değiştirin . open /Applications/Notes.appNotes uygulamasını açacak; farklı bir uygulama açmak için dizini değiştirebilirsiniz.

$percent > 95Bu, bir sonraki satıra yalnızca pil 95şarj edilenden fazla olduğunda çalışmasını söyler . Bunu istediğiniz gibi değiştirebilirsiniz. Buradaki pil seviyesi genellikle üstteki menü çubuğunda görüntülenenden biraz farklı olacaktır. 'Pil tamamen şarj olduğunda çalıştırmak' istiyorsanız bunu> 95 olarak bırakmanızı tavsiye ederim . Örneğin, piliniz% 20'nin altına düştüğünde görevin çalışmasını istiyorsanız,$percent < 20

NOT: Bu zamanlanmış bir görev olduğundan, komut dosyanız her xdakika dakikasında çalışır. Bu open \Applications\Notes.app, komut dosyanızın içine koyarsanız , Notes uygulaması her xdakika başlayacaktır (piliniz şarj edilmişse)

Hiç kimse oturum açmamış olsa bile bu görev çalışır.

Bu soruyu bir süre önce sorduğunu biliyorum, ama umarım bu birisine yardım eder.


2

Bu Mac'e özgü değildir, ancak Mozilla Aurora'nın pille ilgili çeşitli işlevler içeren yerleşik bir API'si vardır. Bataryanın durumu (şarj edilip edilmediğine bakılmaksızın), bataryanın boşalması / şarj edilmesi için ne kadar zaman geçeceği ve seviyesi tespit edilebilir. Pil seviyesi belirli bir noktada olduğunda bir işlevi çağırmak için nasıl EventListener ekleyeceğinize dair basit bir örnek vardır.


Bunun işletim sistemi tabanlı olmasını istiyorum, bu yüzden bir internet bağlantısına veya açık bir tarayıcıya vb. İhtiyacım yok. Sadece arka planda olabilecek bir şey.
FaultyJuggler
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.