Подія заснована на рівні заряду акумулятора


11

Я ще нічого не знайшов, тому сподівався, що, можливо, хтось тут мав ідею.

Я хочу вивести рівний акумулятор на ноутбуці Apple, який досягає певного рівня заряду, або коли акумулятор повністю заряджений.

Я знаю, що можу періодично щось запустити, перевірити рівень заряду акумулятора та вирішити, що робити, але я вважаю за краще, якщо це можливо.

Відповіді:


5

Менеджер живлення не є безкоштовним, але підтримує активізацію подій на основі рівня заряду батареї (внутрішнього або ДБЖ). Події можуть запускати сценарії, запускати програми або виконувати такі завдання, як вимкнення.

Менеджер живлення керує подіями і не запитує на зміну акумулятора.

Натомість Power Manager підключається до шару IOKit OS X і чекає оновлень обладнання. Події можна викликати, коли ніхто не входить у систему; він не покладається на активного користувача.

Менеджер живлення - запустіть сценарій із залишку акумулятора

Завдання вбудованого помічника розкладу фокусуються на виконанні, коли акумулятор падає на певний рівень, але їх можна налаштувати, щоб перевірити на підвищення процентного вмісту або часу, що залишився.

Ці два повідомлення розповідають про джерела живлення від ДБЖ, але вони легко адаптуються до внутрішнього акумулятора MacBook:

Розкриття інформації: Я інженер програмного забезпечення, що стоїть за Power Manager.


3

Я хочу, щоб це базувалося на ОС, тому мені не потрібне підключення до Інтернету чи відкритий браузер і т. Д. Просто щось, що може статися у фоновому режимі

Найпростіше це зробити за допомогою програми, але ось, як це зробити лише за допомогою вбудованих команд ОС. Я знаю, що ви хочете, щоб це було спричинене подіями, але я не впевнений, як це досягти, тому ось один із способів перевірити рівень акумулятора, а потім зробити щось інше, якщо він вище / нижче порогового значення.

Ви можете розглянути launchdпроцес, це в основному заплановане завдання, яке виконується кожні xхвилини. Вони часто використовуються досвідченими користувачами, але їх не так складно налаштувати. Ви налаштовуєте заплановане завдання, що запускається, з файлом .plist, який ви помістили в цей каталог: Macintosh HD\Library\LaunchDaemonsі так ви структуруєте файл .plist;

<?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>

Якби ви зберегли цей файл як com.me.BatteryInfoу LaunchDaemonsзгаданій вище папці, це створило б заплановане завдання, яке виконується кожні 30 хвилин. Число, 1800безпосередньо вище, </dict>- це час у секундах того, як часто ви хочете виконати завдання. Там, де написано <string>/Users/yourusername/batt.sh</string>, ви вказуєте, який сценарій працює за графіком. Ви повинні залишити <string>і </sting>неушкодженими.

Рядок <string>com.me.BatteryInfo</string>- це унікальна назва запланованого завдання. Якщо ви збираєтеся зробити декілька, переконайтесь, що кожен .plist має унікальне ім'я тут.

Наступне, що вам потрібно зробити - це змінити право власності на .plist на root. Це потрібно як функція захисту (я припускаю, щоб програмне забезпечення / користувачі створювали заплановані шкідливі завдання). Щоб змінити право власності на файл, зробіть sudo chown root \Library\LaunchDaemons\yourtask.plist(замініть yourtask.plist фактичним іменем файлу створеного вами .plist). Це завдання запропонує вам ввести пароль.

Тепер вам потрібно створити сценарій, який буде запускатися періодично. Потрібно створити .sh файл (скрипт bash), щоб сказати комп'ютеру, що робити. Щоб створити .sh файл, відкрийте текстовий редактор програмістів, таких як Sublime Text або Komodo Edit . НЕ використовуйте редагування тексту, оскільки це часто додає текст у ваші файли, що заважатиме вашому сценарію. Редагування тексту насправді не слід використовувати для коду.

Складіть скрипт (.sh-файл) із наступним кодом;

#!/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.'термінальні команди, які ви хочете виконати, коли акумулятор заряджений. open /Applications/Notes.appвідкриє додаток Notes; ви можете змінити каталог, щоб відкрити іншу програму.

$percent > 95Це повідомляє наступному рядку запускатись лише тоді, коли акумулятор більше 95заряджений. Ви можете змінити це на все, що завгодно. Рівень акумулятора тут часто буде дещо відрізнятися від того, що відображається в рядку меню вгорі. Якщо ви хочете "працювати, коли акумулятор повністю заряджений", рекомендую залишити це як> 95 . Якщо ви хочете, щоб завдання було запущено, наприклад, коли ваш акумулятор опуститься нижче 20%, змініть його на$percent < 20

ПРИМІТКА. Оскільки це заплановане завдання, ваш сценарій буде працювати кожну xкількість хвилин. Це означає, що якщо ви помістите open \Applications\Notes.appвсередину свого сценарію, програма Notes буде запускатися щохвилини x(якщо ваш акумулятор заряджений)

Це завдання буде запущено, навіть якщо ніхто не входить у систему.

Я знаю, що ви давно задавали це запитання, але, сподіваємось, це комусь допоможе.


2

Це не специфічно для Mac, але Mozilla Aurora має вбудований API, який містить різноманітні функції, пов'язані з акумулятором. Можна визначити стан акумулятора (заряджений він чи ні), скільки часу знадобиться акумулятору для розряду / заряду та його рівень. Існує простий приклад того, як додати EventListener для виклику функції, коли рівень заряду акумулятора знаходиться в певний момент.


Я хочу, щоб це базувалося на ОС, тому мені не потрібне підключення до Інтернету чи відкритий браузер і т. Д. Просто щось, що може статися у фоновому режимі.
FaultyJuggler
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.