|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Perfil de aviso de RAM baja
Buenas noches,
Veamos, tengo el siguiente perfil: Perfil: Memoria_Baja_Popup (34) Evento: Variación batería Estado: Estado Pantalla [ Está:Si ] Entrada: MemoriaBajaPopup (33) A1: Si (if) [ %Modocoche ~ 0 ] A2: Establecer variable [ Nombre:%Membaja A:%Memf Calcular:Apagado Añadir:Apagado ] A3: Separar variable [ Nombre:%Membaja Separador: Eliminar base:Apagado ] A4: Si (if) [ %Membaja1 < 970 ] A5: Mostrar Escena [ Nombre:MemoriaBajaPopup Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:100 Posición Vertical:100 Animación:Ninguno Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ] A6: Esperar [ MS:0 Segundos:10 Minutos:0 Horas:0 Días:0 ] A7: Destruir Escena [ Nombre:MemoriaBajaPopup ] A8: Fin si (End if) A9: Fin si (End if) (En la escena, prácticamente como un flash, puedo detener la tarea) Bien sencillito, lo se. Tengo un Xperia Z2 (3 Gb RAM). Generalmente me queda libre entre 1,5 Gb de RAM y 1,1 Gb de RAM. Pero en ocasiones la memoria libre baja a 900, y en segun que casos se nota algo esa bajada. Se que soy muuu delicao, porque es una gilipollez. Pero bueno, no me importa en esos casos ejecutar el All-In-One Toolbox Pro... Uno que es un maniatico ![]() Pues bien, lo que quisiera saber cual es vuestra opinión sobretodo acerca del consumo de este perfil (me mosquea el contexto). Y por otro lado me gustaría que lo pusierais a parir si es merecedor de ello... me gustan las críticas constructivas porque son eso mismo; contructivas. Nota: Obvio, pero %Memf viene de %MEMF de otro perfil. Para luego buscar y reemplazar, por ejemplo, 1000MB por 1000 MB. Separar MB del número. Ya sabeis. Última edición por emiegna Día 19/06/15 a las 13:35:01. |
|
|
|
#2
|
||||
|
||||
|
Bueno, acabo de notar un detalle "feo" en el perfil. Estoy por ejemplo con un 80% de batería. Le doy caña al movil antes de que varie el porcentaje de batería. Baja la RAM por debajo de los 970. No me muestra la escena. Obvio, aun no ha existido variación del nivel de la batería. Solo lo hace al bajar al 79%. Claro.
Y es que "encima" mi movil consume poca batería... No me convence el contexto. ¿No? Edito: Killo, me estoy obsesionando Me acuesto, que es tela de tarde. Ofú...
|
|
#3
|
||||
|
||||
|
Muy buenas
![]() Asociar los cambios de nivel de batería con la gestión de la RAM no tiene mucho sentido. Si tanto te preocupa la cantidad de RAM libre deberías usar directamente como contexto los cambios de la variable %MEMF, pero eso tiene dos pegas:
Yo comprobaría periódicamente el valor de %MEMF con algo de este tipo ![]() Tarea MemLibre -Copia el valor de %MEMF en %ram -Limpia %ram buscando y reemplazando el texto MB por nada -Calcula un valor redondo de %ram ... floor(%ram/10)*10 -Sólo si ese valor "local" de %ram es diferente del valor "global" de %MemLibre se lo asignas a la variable global Ejecuta esa tarea cada pocos segundos con un contexto de tipo hora. Crea otro contexto para monitorizar el valor de %MemLibre (<970 + evento de cambio de valor) y le asignas la tarea que muestra tu escena. Ya me contarás
Última edición por WillyWeb Día 18/06/15 a las 13:25:11. Razón: Aclarar ideas |
| Gracias de parte de: | ||
|
#4
|
||||
|
||||
|
Gracias WillyWeb.
Te explico. Yo de matemáticas en Tasker estoy muy, muy pez. A ver, de matemáticas en cualquier entorno Se me ha ocurrido (pensando un poco, y con mis limitaciones) el siguiente perfil siguiendo parte de tus recomendaciones y mis excasos conocimientos. He seguido el registro de ejecución, y creo que funciona correcto (¿?). Aun no confio en absoluto en el... Cada dos minutos se ejecuta la tarea, si la pantalla está encendida y no está en "modo coche". Y obviamente no se ejecuta la tarea completamente sino baja de una cantidad de RAM determinada... pero se ejecuta cada dos minutos si la pantalla está encendida sin "modo coche". Y yo que se. Es un perfil creado por aprender. Sin importancia. A ver, es cierto. Es un movil con un procesador que no está mal, y buena RAM. Vamos, por crear cosas. Por eso es. Por curiosidad y satisfacción. Se acabó el "tocho" (cuando sea mas viejo no me voy aguantar ni yo)Ahí va el perfil con los cambios. Creo que funciona bien, aunque es cierto que le he dedicado poco tiempo para comprobar que trabaja correctamente al cien por cien. O quizás no tan poco... Yo que sé Perfil: Memoria_Baja_Popup (34) Hora: Desde 00:00 cada 2m Hasta 23:59 Estado: Estado Pantalla [ Está:Si ] Entrada: MemoriaBajaPopup (33) A1: Si (if) [ %Modocoche ~ 0 ] A2: Establecer variable [ Nombre:%Memb A:%MEMF Calcular:Apagado Añadir:Apagado ] A3: Buscar y Reemplazar Contenido de Variable [ Variable:%Memb Buscar:MB Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En: Reemplazar Coincidencias:Encendido Reemplazar Con: MB ] A4: Separar variable [ Nombre:%Memb Separador: Eliminar base:Apagado ] A5: Si (if) [ %Memb1 < 1200 ] A6: Mostrar Escena [ Nombre:MemoriaBajaPopup Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:100 Posición Vertical:100 Animación:Ninguno Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ] A7: Esperar [ MS:0 Segundos:10 Minutos:0 Horas:0 Días:0 ] A8: Destruir Escena [ Nombre:MemoriaBajaPopup ] A9: Limpiar variable [ Nombre:%Memb Coincidencia de Patrón:Apagado ] A10: Limpiar variable [ Nombre:%Memb1 Coincidencia de Patrón:Apagado ] A11: Fin si (End if) A12: Fin si (End if) Nota: Lo he puesto provisionalmente a 1200 y el mínimo tiempo en contexto (2 minutos) para hacer pruebas mas rápidas. ¿Segundos me decias? Nunca usé el contexto de hora. Me acabo de desvirgar... A la vejez |
| Gracias de parte de: | ||
|
#5
|
||||
|
||||
|
Antes de nada debo disculparme por mi torpeza. He dado por supuesto que se entendían mis intenciones con lo que proponía, y ahora veo que era necesario explicarlo un poco mejor. Y además te he recomendado usar un contexto de tipo hora para repetir algo cada pocos segundos y siempre me olvido de que la repetición de ese tipo de contexto está limitada a 2 minutos
![]() Veamos si soy capaz de arreglarlo... ![]() Lo de "Calcula un valor redondo de %ram ... floor(%ram/10)*10" no es tan complicado como te puede parecer. Mi intención era conseguir que los cambios de valor de la memoria libre se cuenten de 10 en 10 en lugar de 1 en 1. La función "floor(x)" devuelve la parte entera del valor que pongas entre los paréntesis. Supongamos que %ram vale 973. Si ese valor "x" es "%ram/10" (%ram dividido entre 10, es decir, 973/10) entonces "x" vale 97.3 que tras ser procesado por la función "floor" se quedará en 97. Si acto seguido multiplicas eso por 10 tendrás 970. Y ese será el resultado para cualquier valor de %ram entre 970 y 979 (por cierto, recuerda poner la marca en "Calcular"). Espero que ahora tengas un poco más clara la parte matemática... ![]() Vamos ahora con tu tarea... En el contexto de hora puedes quitar las marcas de las horas de inicio y fin. Te lo digo porque veo que has puesto como periodo todo el día. Si añades al perfil la comprobación de "%Modocoche ~ 0" te ahorrarás las acciones A1 y A12. Lo de "Limpia %ram buscando y reemplazando el texto MB por nada" lo has implementado en tu acción A3, pero te sobra el "MB" que has puesto en "Reemplazar con:". Una vez que lo quites esa acción quitará las letras "MB" y te dejará solamente los números. Si lo haces de esa manera te ahorrarás todo lo que hagas para separar las letras de los números, la acción A4 y las referencias a %Memb1 de tu tarea. Las acciones A9 y A10 creo que no son necesarias, y de paso te comento otra cosa. Veo que has usado nombres de variable con letras en mayúscula. Si haces eso Tasker convierte esa variable en "global", guarda su valor para futuros usos y la hace accesible desde cualquier otra tarea. Por tus acciones A9 y A10 parece que no tienes intención de conservar esos valores para nada, así que te sugiero que los cambies por nombre escritos completamente en minúsculas. De esa formas las variables son "locales", viven sólo mientras se ejecuta la tarea y no te tienes que preocupar de ellas una vez terminada. Aplicando estos consejos tu proyecto podría quedar así... Perfil: Memoria_Baja_Popup (34) Hora: Cada 2m Estado: Estado Pantalla [ Está:Si ] Estado: Valor de variable [ %Modocoche ~ 0 ] Entrada: MemoriaBajaPopup (33) A1: Establecer variable [ Nombre:%ram A:%MEMF Calcular:Apagado Añadir:Apagado ] A2: Buscar y Reemplazar Contenido de Variable [ Variable:%ram Buscar:MB Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En: Reemplazar Coincidencias:Encendido Reemplazar Con: ] A3: Si (if) [ %ram < 1200 ] A4: Mostrar Escena [ Nombre:MemoriaBajaPopup Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:100 Posición Vertical:100 Animación:Ninguno Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ] A5: Esperar [ MS:0 Segundos:10 Minutos:0 Horas:0 Días:0 ] A6: Destruir Escena [ Nombre:MemoriaBajaPopup ] A7: Fin si (End if) Lo de comprobar algo cada pocos segundos también se puede hacer, pero no con un contexto de tipo hora (mis disculpas de nuevo). No te quiero complicar la vida innecesariamente, así que si te interesa intentaré explicarte cómo se puede hacer. Ya me contarás.
|
| Gracias de parte de: | ||
|
#6
|
||||
|
||||
|
Pues muchísimas gracias, WillyWeb.
Te has explicado perfectamente. Lo he puesto en práctica y obviamente funciona perfecto. Pero antes de dar por solucionado el asunto, quisiera preguntarte. A ver, ¿Que ventaja se obtiene sustituyendo el if %Modocoche y el End if por el valor de variable? Lo de las variables locales si lo se. Y tienes toda la razon. Sobra en ese caso las acciones de limpiar variables. El error lo he cometido porque en otras tareas suelo usar las variables en escenas, y es por ello que las creo globales. Pero en este caso es innecesario, ya que no sale de la propia tarea para nada. Lo de buscar y reemplazar lo desconocia. Siempre pensé que era necesario indicar algo en el campo correspondiente. Sobre el contexto de hora no se ni que decirte Sencillamente, no tenía ni pajolera idea de la no necesidad de poner un intervalo de tiempo. Eso me pasa por no estudiar lo suficiente y por ir corriendo sin curiosear un poco. Y por último, la comprobación por debajo de los dos minutos creo que se puede hacer en la propia tarea con dos acciones: "Espera" de x segundos y la acción de la categoria de Tareas "Ir a acción". No sé si querias referirte a esto en último lugar. Ah, y gracias por la lección de matemáticas para Tasker. Creo haberlo entendido perfectamente. Intentaré sacar partido de ello
|
| Gracias de parte de: | ||
|
#7
|
||||
|
||||
|
Tasker es muy eficiente (sobre todo en términos de consumo de batería) en la comprobación de contextos. El programador de Tasker recomienda hacer uso de ese sistema simplemente por eso.
Cuando he visto que usabas una variable global he pensado que tal vez las utilizabas en tu escena, pero al ver que luego la limpiabas me ha surgido la duda, por eso te lo he comentado. Veo que mi bola de cristal está bien sintonizada Lo de los valores opcionales aparece en muchas acciones de Tasker. Si te fijas verás que pone "Opcional" en un color tenue en las casillas en las que eso está permitido. Sobre el contexto de hora... ya sabes algo nuevo. Ahora te toca hacer experimentos para sacarle partido. Y sobre la repetición por debajo de los dos minutos del contexto de hora. La verdad es que mi propuesta estaba justo en esa línea. ![]() Supongo que no te costaría mucho hacer las comprobaciones cada 5 segundos en vez de cada 2 minutos. Sólo por deporte. Sin presiones.
|
| Gracias de parte de: | ||
|
#8
|
||||
|
||||
|
Genial, WillyWeb
Tampoco sabia de la eficiencia de Tasker en la comprobación de contextos. Me pondré a repasar los perfiles por si puedo implementarlo y asi mejorar algo el consumo. Y sí, lo de "opcional" lo se. Lo que pasa es que uno anda siempre mirando lo que no tiene porque mirar, y no mirando lo que debe mirar. Y a veces es que ni lo veo aunque esté delante de mis narices Bueno, lo dicho; muchas gracias WillyWeb Nota: Por cierto, lo he bajado a 850 porque la escenita ya estaba dando un poco ya por el que dijimos...
|
| Gracias de parte de: | ||
![]() |
Estás aquí
|
||||||
|
||||||