2 votos

Mac OS X - hora del informe de la batería desde la última CA desenchufe pero excluir a la hora de dormir

Hay una aplicación o un comando existente para informar de la duración de la batería desde el portátil fue la última desconectado de AC pero exlude pasar el tiempo durante el sueño de la batería?

Esto puede deducirse de pmset -g log , así que estoy buscando una manera de hacer esto sin el uso de una aplicación que se queda residente para detectar enchufe/desenchufe eventos.

2voto

jamesson Puntos 248

Bueno, me voy a dar una respuesta a mi propia pregunta, probado en Yosemite, pero no mucho. Este es el código bash:

#!/bin/bash
humantime () { printf -v $1 "%dh%02dm%02ds" $(($2/3600)) $((($2/60)%60)) $(($2%60)); }
#unplugged=`pmset -g log | grep 'Summary- \[System: DeclUser.*\] Using Batt' | tail -1 | cut -f1,2 -d' '`
unplugged=`syslog -u -k Sender loginwindow | grep 'magsafeStateChanged state changed old 1 new 2' | tail -n 1 | cut -f1 -dZ`
onbatt=$((`date +%s` - `date -j -f "%Y-%m-%d %H:%M:%S" "$unplugged" +%s`))
slept=`pmset -g log | sed -n "/^$unplugged/,//p" | awk '/Entering Sleep.*[0-9]+ secs/ {n=split($0,a," ");sum+=a[n-1]} END {print sum}'`
[[ -z $slept ]] && slept=0
awake=$((onbatt-slept))
humantime hawake $awake
humantime hslept $slept
printf "Awake on battery for $hawake (%.1f%%)\n" `echo "$awake*100/$onbatt" | bc -l`
printf "Slept on battery for $hslept (%.1f%%)\n" `echo "$slept*100/$onbatt" | bc -l`

No voy a responder por su precisión, pero parece que funciona. Ya no sé de Apple interna (soy nuevo en el MacOSX) que revocó diseñado con un par de ensayo y errores de enchufar y desenchufar el adaptador, tanto durante el sueño, y también mientras se está despierto, para ver cual de las entradas de registro confiable.

Usted notará que he intentado utilizar pmset -g log para detectar cuando el poder estaba desconectado, pero es poco confiable. Después de desconectar el aparato, el registro de entrada es Summary- [System: DeclUser kDisp] Using Batt pero por desgracia, el mismo registro de entrada se produce durante el sueño, mientras está desenchufado por lo que es poco fiable. He recurrido a syslog lugar.

NOTA: Este informe de el tiempo desde la última unplugged evento. Esto puede no ser cuando la batería estaba al 100%.

Problema potencial: El código de arriba lleva la marca de tiempo de syslog y de los partidos contra pmset. Si pmset no tiene una entrada (cualquier entrada) en la misma marca de tiempo, esto no funciona. Eso no debería suceder, pero si lo hace, entonces usted puede convertir las marcas de tiempo a la época de segundos y detectar el más cercano de hora en pmset de esa manera.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X