PDA

Ver la Versión Completa : Widget que indica el gasto de batería (con Minimalistic Text)


malkair
19/09/13, 11:20:28
Hola a tod@s. Estoy probando unos perfiles que he copiado de algún sitio por ahí y que he estado adaptando y corrigiendo un poco. Felicito al autor de estos perfiles y si encuentro la fuente la añadiré aquí.

Consiste en un widget que te indica en cuasi-tiempo real el consumo de batería por hora de uso, el tiempo estimado que te resta de batería y el consumo desde la última puesta a cero de los datos. Esa puesta a cero es automática (cada vez que el teléfono es puesto a cargar o es quitado de la carga) y también puede ser manual.

El widget lo he creado con Minimalistic Text, aunque seguramente se pueda hacer con alguna otra app que muestre texto y variables de Tasker.

Consta de CINCO perfiles y una tarea independiente que seguidamente transcribo y comento:

Tarea: Resetear los datos de la batería
Esta tarea pone a cero las variables y datos. La utilizaremos tanto automática como manualmente. En el widget se mostrará "CALIBRATING" para que no quede feo mientras no tiene datos que mostrar.

MinMalTxt BattReset (185)
A1: Flash [ Texto:Resetting battery stats Largo:Apagado ]
A2: Limpiar variable [ Nombre:%BATTSTART Coincidencia de Patrón:Apagado ]
A3: Limpiar variable [ Nombre:%TIMESTART Coincidencia de Patrón:Apagado ]
A4: Establecer variable [ Nombre:%BATTSTART A:%BATT Calcular:Apagado Añadir:Apagado ]
A5: Establecer variable [ Nombre:%TIMESTART A:%TIMES Calcular:Apagado Añadir:Apagado ]
A6: Minimalistic Text [ Configuración:%BATTDRAIN = Calibrating Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A7: Minimalistic Text [ Configuración:%BATTLEFT = Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A8: Minimalistic Text [ Configuración:%TIMEBATT = Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]



Primer perfil: Resetea los datos de batería en el arranque del teléfono
Simplemente, ejecuta la tarea antes creada para poner a cero los datos.

Perfil: MinMalTxt OnBoot(173)
Evento: Reinicio del dispositivo

Entrada: MinMalTxt BattReset (185)


Segundo perfil: Resetea los datos de batería al ser puesto en carga o al ser quitado de la carga
Tiene una tarea de entrada (al ponerse en carga) y otra de salida (al quitarse de la carga), pero es la misma tarea antes creada: La puesta a cero de los datos.

Perfil: MinMalTxt PluggedIn (175)
Estado: Cargando [ Origen:Cualquiera ]

Entrada: MinMalTxt BattReset (185)

Salida: MinMalTxt BattReset (185)


Tercer perfil: Cálculo de batería mientras está en carga
Estando en carga, comprueba si ha habido variación en el nivel de batería. Si no la ha habido, pasa de todo; si la ha habido, calcula la batería que había antes y en qué momento y la que hay ahora y en qué momento (%TIMES), obteniendo el incremento de batería en ese intervalo de tiempo. Luego extrapolamos ese incremento a incremento/hora y finalmente calculamos cuánto % de batería falta para llegar a 100 y cuánto tiempo nos quedaría para llegar a 100 en función del incremento/hora antes calculado. Todo ello usando horas:minutos.

Perfil: MinMalTxt BattCharging (178)
Evento: Variación batería
Estado: Cargando [ Origen:Cualquiera ]
Entrada: Anon (179)
A1: Si (if) [ %BATT !~ %BATTPREV ]
A2: Establecer variable [ Nombre:%BATTUSED A:(%BATT - %BATTSTART) Calcular:Encendido Añadir:Apagado ]
A3: Establecer variable [ Nombre:%TIMEBATT A:(%TIMES - %TIMESTART)/3600 Calcular:Encendido Añadir:Apagado ]
A4: Sección de Variable [ Nombre:%TIMEBATT Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ]
A5: Separar variable [ Nombre:%TIMEBATT Separador:. Eliminar base:Apagado ]
A6: Establecer variable [ Nombre:%minutostimebatt A:60*(%TIMEBATT2/100) Calcular:Encendido Añadir:Apagado ]
A7: Establecer variable [ Nombre:%minutostimebatt A:0%minutostimebatt Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutostimebatt < 10 ]
A8: Sección de Variable [ Nombre:%minutostimebatt Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en: ]
A9: Establecer variable [ Nombre:%BATTDRAIN A:%BATTUSED/%TIMEBATT Calcular:Encendido Añadir:Apagado ]
A10: Sección de Variable [ Nombre:%BATTDRAIN Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ]
A11: Establecer variable [ Nombre:%BATTLEFT A:(100-%BATT)/%BATTDRAIN Calcular:Encendido Añadir:Apagado ]
A12: Sección de Variable [ Nombre:%BATTLEFT Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ]
A13: Separar variable [ Nombre:%BATTLEFT Separador:. Eliminar base:Apagado ]
A14: Establecer variable [ Nombre:%minutosbattleft A:60*(%BATTLEFT2/100) Calcular:Encendido Añadir:Apagado ]
A15: Establecer variable [ Nombre:%minutosbattleft A:0%minutosbattleft Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutosbattleft < 10 ]
A16: Sección de Variable [ Nombre:%minutosbattleft Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en: ]
A17: Minimalistic Text [ Configuración:%BATTLEFT = Full in: %BATTLEFT1:%minutosbattleft hrs Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A18: Minimalistic Text [ Configuración:%BATTDRAIN = +%BATTDRAIN% /hr Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A19: Minimalistic Text [ Configuración:%TIMEBATT = +%BATTUSED% in %TIMEBATT1:%minutostimebatt Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A20: Fin si (End if)
A21: Establecer variable [ Nombre:%BATTPREV A:%BATT Calcular:Apagado Añadir:Apagado ]


Cuarto perfil: Cálculo de batería mientras NO está en carga
Al igual que el anterior, si ha habido variación en el nivel de batería. Si no la ha habido, pasa de todo; si la ha habido, calcula la batería que había antes y en qué momento y la que hay ahora y en qué momento, obteniendo el gasto de batería en ese intervalo de tiempo. Luego extrapolamos ese gasto a consumo/hora y finalmente calculamos cuánta batería nos queda y cuánto tiempo nos quedaría para agotarla dado el consumo/hora. Todo ello usando horas:minutos.

Perfil: MinMalTxt BattDraining (180)
Evento: Variación batería
Estado: No Cargando [ Origen:Cualquiera ]
Entrada: Anon (181)
A1: Si (if) [ %BATT !~ %BATTPREV ]
A2: Establecer variable [ Nombre:%BATTUSED A:%BATT - %BATTSTART Calcular:Encendido Añadir:Apagado ]
A3: Establecer variable [ Nombre:%TIMEBATT A:(%TIMES - %TIMESTART)/3600 Calcular:Encendido Añadir:Apagado ]
A4: Sección de Variable [ Nombre:%TIMEBATT Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ]
A5: Separar variable [ Nombre:%TIMEBATT Separador:. Eliminar base:Apagado ]
A6: Establecer variable [ Nombre:%minutostimebatt A:60*(%TIMEBATT2/100) Calcular:Encendido Añadir:Apagado ]
A7: Establecer variable [ Nombre:%minutostimebatt A:0%minutostimebatt Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutostimebatt < 10 ]
A8: Sección de Variable [ Nombre:%minutostimebatt Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en: ]
A9: Establecer variable [ Nombre:%BATTDRAIN A:(%BATTUSED/%TIMEBATT)*-1 Calcular:Encendido Añadir:Apagado ]
A10: Sección de Variable [ Nombre:%BATTDRAIN Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ]
A11: Establecer variable [ Nombre:%BATTLEFT A:%BATT/%BATTDRAIN Calcular:Encendido Añadir:Apagado ]
A12: Sección de Variable [ Nombre:%BATTLEFT Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en: ]
A13: Separar variable [ Nombre:%BATTLEFT Separador:. Eliminar base:Apagado ]
A14: Establecer variable [ Nombre:%minutosbattleft A:60*(%BATTLEFT2/100) Calcular:Encendido Añadir:Apagado ]
A15: Establecer variable [ Nombre:%minutosbattleft A:0%minutosbattleft Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutosbattleft < 10 ]
A16: Sección de Variable [ Nombre:%minutosbattleft Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en: ]
A17: Minimalistic Text [ Configuración:%BATTLEFT = Left: %BATTLEFT1:%minutosbattleft hrs Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A18: Minimalistic Text [ Configuración:%BATTDRAIN = -%BATTDRAIN% /hr Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A19: Minimalistic Text [ Configuración:%TIMEBATT = %BATTUSED% in %TIMEBATT1:%minutostimebatt Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]
A20: Fin si (End if)
A21: Establecer variable [ Nombre:%BATTPREV A:%BATT Calcular:Apagado Añadir:Apagado ]


Quinto perfil (opcional): Totalmente cargado
Cuando el teléfono está al 100% de batería y sigue en carga, simplemente no es necesario que muestre el tiempo que falta para llegar al 100%, porque YA está al 100%. Simplemente hago que esa variable muestre que ya está la batería totalmente cargada y a qué hora se llegó al 100% de carga. Las otras variables no las toco, así que seguirán mostrando el % de carga por hora (hasta que llegó al 100%) y el % total que se cargó y en qué tiempo.

Perfil: MinMalTxt Charged100 (186)
Estado: Nivel de batería [ Desde:100 A:100 ]
Estado: Cargando [ Origen:Cualquiera ]
Entrada: Anon (187)
A1: Establecer variable [ Nombre:%horafull A:%TIME Calcular:Apagado Añadir:Apagado ]
A2: Minimalistic Text [ Configuración:%BATTLEFT = Full (%horafull) Paquete:de.devmil.minimaltext Nombre:Minimalistic Text ]


Ya tenemos todo creado. A continuación creamos un widget con Minimalistic Text, con tres filas (se pueden poner más, a gusto del consumidor):
1ª Fila: Otros-Variable local: %BATTDRAIN
2ª Fila: Otros-Variable local: %BATTLEFT
3ª Fila: Otros-Variable local: %TIMEBATT

Y tendremos un flamante widget que luce así:
http://i43.tinypic.com/n6opdk.jpg

Finalmente, decir que cuando se está "calibrando" el consumo, puede tardar algunos minutos en mostrar los datos. No sé muy bien por qué, pero a veces me ha tardado hasta 5 minutos en salir del "Calibrating".

Si véis algún error o algo que se pueda mejorar, por favor, comentad. Debo confesar que he hecho algún cambio mientras escribía este post, aunque en principio no debería ser importante.

EDITO para poner la fuente e identificar al autor original:
http://forum.xda-developers.com/showthread.php?t=1523053 (autor: cazwell220)

Jusss
24/09/13, 16:34:26
Te hago una consulta importe el xml de la página que dejaste pero no se como hacer al crear un widget en minimal text para poner los perfiles de tasker, entiendo que habría que crear un nuevo widget en la pantalla pero dentro del programa hay una opción para importar lo que pusimos en tasker?
Que correcciones le hiciste a la tarea original?. saludosss

malkair
27/09/13, 12:17:40
Hola, para crear el widget debes usar la app Minimalistic Text y en cada fila poner la "Variable local" indicada. Automáticamente, Minimalistic Text mostrará la variable de Tasker que tú le indiques (creo que refresca cada 60 segundos).

La tarea original viene en el enlace de XDA que dejé puesto. Creo recordar que había algún signo + o -erróneamente colocado de forma que mostraba algo como +-13%, y también alguna operación matemática a la que le faltaba un paréntesis.

lfekaiser
28/09/13, 23:51:07
Pero como demonios puedo impotar todo ese codigo que pones? puedes poner los ficheros para bajarlos e importarlos en tasker?
Tiene buena pinta el asunto. Gracias.

malkair
30/09/13, 13:21:11
Hombre, la idea en este foro es poner el código y no los archivos, precisamente para que los usuarios no nos "acomodemos" a importar el perfil o tarea, sino a CREARLO, para aprender y tal.

En todo caso, intentaré subir los archivos cuando tenga un rato.

lfekaiser
30/09/13, 19:40:27
Gracias, a ver si puedes. Estoy intentando hacer un perfil para ahorrar bateria, y necesito monitorizarla de alguna manera. Cuando tenga resultados (estoy probando) pondré el perfil para el que lo quiera. Será generico. Salu2.

lfekaiser
30/09/13, 19:42:07
El minimalistic text ese parece arto complicado...no se yo...:oskitar:

malkair
30/09/13, 19:47:58
No, no es complicado, aunque lo parece. Realmente Tasker parece mucho más complicado que Mininalistic Text X-D

Por otro lado, tengo que decir una cosa: El widget este, sí, te monitoriza el gasto de batería y todo eso, pero... consume MUCHA batería, porque cuando se activa el perfil BattDraining, Tasker está constantemente (cada 30 segundos creo) calculando dicho gasto y pasando el valor de las variables a Minimalistic Text. Comprobado en el registro de ejecución, el teléfono nunca descansa, el pobre.

Solución a esto: Limitar el perfil BattDraining para que no se ejecute durante la noche, añadiendo un contexto de hora (en mi caso, de 00:00 a 08:00 no está activo). Obviamente, durante esas horas no se actualizan las variables, pero en cuanto da la hora de volver a actualizar, te marca al instante el % gastado en las últimas horas, que es realmente lo importante.

Otra opción podría ser que el perfil solo se active una vez cada hora, así solo haría la comprobación de batería descargada una vez. Pensaré en ello.

PD: Mañana intento subir los xml.

malkair
02/10/13, 10:22:18
Lo prometido es deuda; aquí van los perfiles en xml, listos para ser importados.
En el BattDraining tengo un contexto para que solo actualice si el %PERFIL es diferente a %Noche. Habría que eliminar este contexto para un uso pleno o adecuarlo a vuestras necesidades.

Saludos.

lfekaiser
02/10/13, 11:57:10
Ok. Muchas gracias. A probarlo...:platano: