Evento basato sul livello di carica della batteria


11

Non ho ancora trovato nulla, quindi speravo che qualcuno qui avesse avuto un'idea.

Voglio dare il via anche alla batteria di un laptop Apple che raggiunge un certo livello di carica o quando la batteria è completamente carica.

So che posso far funzionare periodicamente qualcosa, controllare il livello della batteria e decidere cosa fare, ma preferisco un evento guidato se possibile.

Risposte:


5

Power Manager non è gratuito ma supporta l'attivazione di eventi in base al livello della batteria (interna o UPS). Gli eventi possono eseguire script, avviare applicazioni o eseguire attività come lo spegnimento.

Power Manager è guidato da eventi e non esegue il polling per i cambi di batteria.

Invece Power Manager si aggancia al livello IOKit di OS X e attende aggiornamenti dall'hardware. Gli eventi possono essere attivati ​​quando nessuno è connesso; non si basa su un utente attivo.

Power Manager: esegue uno script sulla batteria rimanente

Le attività di Schedule Assistant integrate si concentrano sull'esecuzione quando la batteria scende a un determinato livello, ma possono essere modificate per verificare gli aumenti della percentuale della batteria o il tempo rimanente.

Questi due post parlano delle fonti di energia dell'UPS, ma sono facilmente adattabili alla batteria interna del tuo MacBook:

Informativa: sono un ingegnere informatico dietro Power Manager.


3

Voglio che questo sia basato su SO, quindi non ho bisogno di una connessione Internet o di un browser aperto ecc. Solo qualcosa che può accadere in background

Il modo più semplice per farlo sarebbe con un'applicazione, ma ecco come farlo solo con comandi OS integrati. So che vuoi che sia guidato dagli eventi, ma non sono sicuro di come farlo, quindi ecco un modo per controllare il livello della batteria, quindi fare qualcos'altro se è sopra / sotto una soglia.

Puoi considerare un launchdprocesso, questa è fondamentalmente un'attività pianificata che viene eseguita ogni xminuto. Sono spesso utilizzati da utenti esperti, ma non sono troppo difficili da configurare. Si configura un'attività pianificata di avvio con un file .plist che si inserisce in questa directory: Macintosh HD\Library\LaunchDaemonsed è così che si struttura il file .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>

Se si salvasse quel file come com.me.BatteryInfonella LaunchDaemonscartella sopra menzionata, si creerebbe un'attività pianificata che viene eseguita ogni 30 minuti. Il numero, 1800direttamente sopra </dict>è il tempo in secondi della frequenza con cui si desidera eseguire l'attività. Dove dice <string>/Users/yourusername/batt.sh</string>è dove si specifica quale script viene eseguito nei tempi previsti. Devi lasciare <string>e </sting>intatto.

La linea <string>com.me.BatteryInfo</string>è il nome univoco dell'attività pianificata. Se hai intenzione di crearne più di uno, assicurati che ogni .plist abbia un nome univoco qui.

La prossima cosa che devi fare è cambiare la proprietà del .plist in root. Ciò è necessario come funzionalità di sicurezza (per impedire che software / utenti creino attività dannose pianificate, suppongo). Per modificare la proprietà del file, eseguire sudo chown root \Library\LaunchDaemons\yourtask.plist(sostituire yourtask.plist con il nome file effettivo del .plist creato). Questa attività richiederà una password.

Ora devi creare lo script che verrà eseguito periodicamente. Devi creare un file .sh (uno script bash) per dire al computer cosa fare. Per creare un file .sh, apri un editor di testo per programmatori, come Sublime Text o Komodo Edit . NON utilizzare Modifica testo, poiché spesso aggiunge testo ai file che interferirebbe con lo script. La modifica del testo non dovrebbe davvero essere utilizzata per il codice.

Crea uno script (file .sh) con il seguente codice;

#!/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

Sostituire echo 'charged.'con i comandi del terminale che si desidera eseguire quando la batteria è carica. open /Applications/Notes.appaprirà l'applicazione Notes; puoi cambiare la directory per aprire un'altra applicazione.

$percent > 95Questo dice alla riga successiva di funzionare solo quando la batteria è più che 95carica. Puoi cambiarlo come preferisci. Il livello della batteria qui sarà spesso leggermente diverso da quello che viene visualizzato nella barra dei menu in alto. Se si desidera "eseguire quando la batteria è completamente carica", si consiglia di lasciare questo valore> 95 . Se si desidera eseguire l'attività quando la batteria scende al di sotto del 20%, ad esempio, cambiarla in$percent < 20

NOTA: poiché si tratta di un'attività pianificata, lo script verrà eseguito ogni xnumero di minuti. Ciò significa che se inserisci lo open \Applications\Notes.appscript, l'applicazione Note verrà avviata ogni xminuto (se la batteria è carica)

Questa attività verrà eseguita anche se nessuno ha effettuato l'accesso.

So che hai fatto questa domanda qualche tempo fa, ma spero che questo possa aiutare qualcuno.


2

Questo non è specifico per Mac, ma Mozilla Aurora ha un'API integrata che contiene una varietà di funzioni relative alla batteria. Si può rilevare lo stato della batteria (che si stia caricando o meno), quanto tempo ci vorrà per scaricare / caricare la batteria e il suo livello. C'è un semplice esempio di come aggiungere un EventListener per chiamare una funzione quando il livello della batteria è a un certo punto.


Voglio che questo sia basato su SO, quindi non ho bisogno di una connessione Internet o di un browser aperto ecc. Solo qualcosa che può accadere in background.
Faulty Juggler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.