PDA

Ver la Versión Completa : [ ARTICULO ] Modo Noche desactivando perfiles


mpiero
04/11/13, 11:38:14
Os pongo aquí mi perfil de noche, supongo que habrá muchos por el foro, pero este tiene la caraterística que desactiva todos los perfiles (menos el de noche claro), de esta manera se minimizan los wackelocks durante la noche.
(Gracias a Caravantes (http://www.htcmania.com/member.php?u=437088) por sus ideas).
Al principio dejaba solo activo el perfil de Nombre Modo Noche, pero como bien me ha sugerido Caravantes, he optado por dejar activos aquellos que finalizen en determinada cadena en mi caso es entre paréntesis N, es decir (N), por ejemplo Modo Noche (N), así si algún dia creo un perfil que me interese que quede activo por la noche no tengo más que añadirle (N) al final.

El proceso consite en en usar %PENABLED para almacenar lo procesos activos para luego ponder recorrer esa cadena y volver a activarlos.

El perfil:

Perfil: Modo Noche (N) (14)
Priority: 1 CoolDown: 0
Hora: Desde 00:00 Hasta 08:30Hora de inicio y fin del perfil
Entrada: Inicio Noche (23) Tarea de entrada del perfil
A1: Establec. Icono Tasker [ Icono:cust_icon_gingerbread ] Esto es opcional, cambio el icono del tasker (reloj, rayo negro,... al gusto vamos), así al encender el movil se si esta en modo noche o no
A2: Realizar tarea [ Nombre Deshabilita Perfiles Parar:Apagado Prioridad:5 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: ] Tarea que deshabilita los perfiles
A3: Realizar tarea [ Nombre Datos Wifi Sync OFF Parar:Apagado Prioridad:5 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: ] Tarea que desactiva los datos
A4: Hibernar ahora [ Configuración:All greenified apps Paquete:com.oasisfeng.greenify Nombre:Hibernar ahora Cuenta atrás (segundos):0 Continuar Tarea Tras Error:Encendido ] Tengo greenify y fuerzo a que hiberne apliaciones
A5: Detener Ubicación [ Origen:Cualquiera ] Detengo la ubicación
Salida: Noche Fin (24) Tarea de salida del perfil
A1: Establec. Icono Tasker [ Icono:cust_icon_donut ] Restablezco el icono del tasker para saber que ya no estoy en modo noche.
A2: Realizar tarea [ Nombre:Habilita Perfiles Parar:Apagado Prioridad:5 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: ] Tarea que habilita los perfiles de nuevo.

Tareas adicionales:

Deshabilita Perfiles (28) Tarea que guarda y deshabilita los perfiles
A1: Detener [ Con error:Apagado Tarea: ] Si (if) [ %Perfiles(3) Ajuste ] Esto es para prevenir que si ya se ha ejecutado la tarea se detenga, ya que sino crearía una lista de perfiles vacios al estar ya detenidas.
A2: Establecer variable [ Nombre:%Perfiles A:%PENABLED Calcular:Apagado Añadir:Apagado ] Si (if) [ %PENABLED Ajuste ] Guardo en %Perfiles los perfiles activos
A3: Separar variable [ Nombre:%Perfiles Separador:, Eliminar base:Encendido ] Creo un array %Perfiles() a partir de la variable %Perfiles (lista de perfiles activos separados por comas)
A4: For [ Variable:%perfil Ítems:%Perfiles(2:) ] Si (if) [ %Perfiles2 Ajuste ] Recorro la lista salvo que solo haya un perfil (en este caso no tiene sentido la funcion)
A5: Si (if) [ %PENABLED ~ *%perfil* ] Si el perfiel esta activo
A6: Estado del perfil [ Nombre:%perfil Establecer:Apagado ] Si (if) [ %perfil !~ *(N) ] Lo desactivo siempre y cuando no acabe en (N)
A7: Fin si (End if)
A8: End For

Habilita Perfiles (29)
A1: For [ Variable:%perfil Ítems:%Perfiles(2:) ] Si (if) [ %Perfiles(3) Ajuste ] Recorro la lista de perfiles guardados desde el segundo (el primero esta vacio). Siempre y cuando haya al menos 2 perfiles en la lista.
A2: Si (if) [ %perfil !~ %* ] Si perfil no esta vacio.
A3: Estado del perfil [ Nombre:%perfil Establecer:Encendido ] Si (if) [ %perfil !~ *(N) ] Reactivo el perfil salvo que acabe en (N)
A4: Fin si (End if)
A5: End For
A6: Array Clear [ Nombre:%Perfiles ] Limpio el array de pefiles
A7: Limpiar variable [ Nombre:%Perfiles Coincidencia de Patrón:Apagado ] Limpio variable %Perfiles

* En noche fin se podría llamar a una tarea de sincronizar durante x tiempo, o hacer los pasos directamente en dicha tarea yo en mi caso no lo pongo porque tengo una tarea que al reactivarse ya lo hace.

* Solo me quedaría la tarea Datos Wifi Sync OFF, que se ejecuta al iniciar el perfil de nochepero este ya ni lo pongo porque lo úmico que hace es desactivar DATOS Y WIFI (opcionalmente se podría activar el modo avion).

Caravantes
04/11/13, 12:40:30
Gracias por esas tareas, son muy interesantes las que deshabilitan y habilitan perfiles, buen trabajo. Te hago algún comentario sobre la tarea que deshabilita.

A4: For [ Variable:%perfil Ítems:%Perfiles(2:) ] Si (if) [ %Perfiles2 Ajuste ]

Supongo que con ese (2:) pretendes evitar que se procese al primer elemento de la matriz, que siempre estará vacío, es muy buena idea. Lo malo de esa estrategia es que no descartas al último elemento, que también estará vacío. Más abajo te hago una sugerencia para este problema.
Por otro lado, respecto a la condición de %Perfiles2 ajustado... Me parece que %Perfiles2 siempre va a estar ajustado porque siempre hay al menos un perfil activo (el de Noche, que ha lanzado la tarea en ejecución) y ese primer-perfil-activo -sea el que sea- siempre va a caer en la posición 2 (%Perfiles2) de la matriz %Perfiles(). O sea que la condición se cumple siempre y por tanto no sirve de nada ponerla, creo. Tendría más sentido si chequeases %Perfiles3-ajustado, como has hecho en la tarea de re-habilitar perfiles, eso tiene más lógica.

A5: Si (if) [ %PENABLED ~ *%perfil* ] Si el perfiel esta activo

Siempre va a ocurrir que el perfil está activo, porque su nombre lo has cogido de %PENABLED. O sea que esa acción A5 no vale para nada, creo, y sugiero sustituirla por otra que descarte los elementos nulos o vacíos que hay en los extremos de la matriz (el primero ya lo descartaste pero el último no):
A5: Si (if) [ %perfil !~ %* ]
Eso mismo ya lo tienes bien puesto en la tarea de re-habilitar perfiles, que para mi gusto está perfecta.

Rinoo
04/11/13, 14:29:47
A1: Detener [ Con error:Apagado Tarea: ] Si (if) [ %Perfiles(3) Ajuste ] [I]


Buenas. interesante este tema.
Una pregunta, cuando pones "Si (if) [ %Perfiles(3) Ajuste ]" a que te refieres? %Perfiles(3)=Ajuste ? %Perfiles=(3) ?

mpiero
04/11/13, 18:19:19
Supongo que con ese (2:) pretendes evitar que se procese al primer elemento de la matriz, que siempre estará vacío, es muy buena idea. Lo malo de esa estrategia es que no descartas al último elemento, que también estará vacío. Más abajo te hago una sugerencia para este problema.
De esta forma me salto el primer perfil que siempre estará vacio, y luego con:
A5: Si (if) [ %PENABLED ~ *%perfil* ] Si el perfil esta activo
evito que se procesen los elementos vacios. No obstante sustiyendo A5 por lo que tu dices:
A5: Si (if) [ %perfil !~ %* ] y quitando esa condición del For tienes razón que es más simple e igual de efectivo.

[quote=Caravantes;10959804]
Por otro lado, respecto a la condición de %Perfiles2 ajustado... Me parece que %Perfiles2 siempre va a estar ajustado porque siempre hay al menos un perfil activo (el de Noche, que ha lanzado la tarea en ejecución) y ese primer-perfil-activo -sea el que sea- siempre va a caer en la posición 2 (%Perfiles2) de la matriz %Perfiles(). O sea que la condición se cumple siempre y por tanto no sirve de nada ponerla, creo. Tendría más sentido si chequeases %Perfiles3-ajustado, como has hecho en la tarea de re-habilitar perfiles, eso tiene más lógica.

Siempre va a ocurrir que el perfil está activo, porque su nombre lo has cogido de %PENABLED. O sea que esa acción A5 no vale para nada, creo, y sugiero sustituirla por otra que descarte los elementos nulos o vacíos que hay en los extremos de la matriz (el primero ya lo descartaste pero el último no):
A5: Si (if) [ %perfil !~ %* ]
Eso mismo ya lo tienes bien puesto en la tarea de re-habilitar perfiles, que para mi gusto está perfecta.
Pues sí, mejor sería chequear %Perfiles3 ajustado.

Buenas. interesante este tema.
Una pregunta, cuando pones "Si (if) [ %Perfiles(3) Ajuste ]" a que te refieres? %Perfiles(3)=Ajuste ? %Perfiles=(3) ?
Me refiero si está establecido/ajustado el elemento Perfiles(3), es decir si el elemento 3 del array existe es que ya se ha hecho el proceso. La idea es que si realizamos la tarea y nos crea la lista de perfiles y los deshabilita, luego si volvieramos a ejecutarla por error como en %PENABLED (perfiles activos), solo estaría el de noche (o alguno más que acabe en (N) ), nos macharía la lista de perfiles desactivados. También se podría hacer mirando la longitud del array y si es mayor de 1 detener.

x Caravantes, anoto tus consejos.

leon2996
11/11/13, 10:41:10
Compi y esto no hay alguna forma de crear un archivo y no se que, para poder pasármelo y yo metérselo a mi móvil con tasker ?

Es que lo leo y no hay forma de enterarme.