Caravantes
10/11/13, 06:22:10
Este tema procede de otro hilo ( http://www.htcmania.com/showthread.php?t=714519 ) donde surgió como asunto lateral y ha cobrado cierta importancia por lo que he decidido crear un hilo específico y dejar aquél para lo que se creo inicialmente.
Tasker tiene una acción ESPERAR HASTA, en la que se puede especificar un tiempo y una condición. No entiendo cómo funciona. El manual ( http://tasker.dinglisch.net/userguide/es/help/ah_index.html ), dice lo siguiente:Esperar hasta
Detiene la ejecución de la tarea en curso *hasta* que se cumple la condición. Espera el tiempo especificado entre comprobaciones.
Nota: un tiempo muy pequeño de espera puede devorar la batería, tiempos largos son aceptables.
Consejo: si esperas más de 40 segundos, deberías habilitar 'Permanecer despierto' en la pantalla de Propiedades de Tarea para prevenir que Android se duerma antes de que tu tarea se finalice.
Ahora copio los mensajes que hemos cruzado en aquel hilo ya referenciado:
Si te he entendido bien la acción esperar hasta te funciona bien. Esta acción continua:
1 si se consume el tiempo que le has puesto aunque la condición no se cumpla
O si
2 se cumple la condición antes de que se consuma el tiempo. Siempre le tienes que poner un mínimo de tiempo
No había usado nunca la acción ESPERAR HASTA; ni siquiera le había prestado atención hasta ahora, que has picado mi curiosidad. He leido la ayuda de la acción, he hecho algunas pruebas y... Creo que no funciona como dices.
La acción ESPERAR HASTA detiene la ejecución hasta que se cumpla la condición. El tiempo que estableces dentro de esa acción es el periodo de tiempo que Tasker dejará pasar antes de hacer una nueva comprobación de la condición. Si pones un tiempo muy bajo (milisegundos), las comprobaciones serán muy frecuentes y eso devorará la batería. Con tiempos muy largos el problema es que la pantalla pueda llegar a apagarse (la acción tiene una casilla que se puede marcar para evitar eso). Pero la tarea solo continuará cuando Tasker haga una de las comprobaciones y en ese momento se cumpla la condición. En tanto que eso no suceda, la tarea queda detenida en la acción ESPERAR HASTA.
Por cierto, una de las pruebas que he hecho es que se puede utilizar una condición de tiempo al estilo "esperar hasta las 23:30", especificandolo del siguiente modo
%TIME > 23.30
(ojo que ese caracter ">" es una comparación matemática MAYOR-QUE, y funciona bien aunque no sean cantidades sino tiempos)
He especificado que haga la comprobación cada 5 minutos. Luego añado una acción de notificación y compruebo que esa notificación aparece entre las 23:30 y las 23:35. Correcto.
Eso me ha dado una idea. En mi trabajo hay ciertas horas a las que tengo que dejar lo que estoy haciendo para atender a otras tareas concretas que suelen ser breves pero hay que atenderlas en su horario concreto. He pensado que me voy a construir una tarea que tenga varias acciones ESPERAR HASTA (cierta hora), cada una seguida de su correspondiente notificación. De esa forma, la tarea funcionará como una serie de avisadores sucesivos para que yo no me olvide de atender esas tareas que debo hacer en horarios concretos. Por supuesto, puedo programar la tarea para que se inicie automáticamente al llegar al trabajo, es genial.
Gracias por haberme puesto en la pista. Y perdón por el inciso que no tiene mucho que ver con el tema de este hilo.
Caravantes llevas casi toda la razón. La única puntualización es que el tiempo entre comprobaciones al menos usando variables, no funciona así. En el proyecto por ejemplo de darkpro es indiferente que le metas 1 o 20 segundos. En cuanto cambias el valor de la variable deja de esperar. Comprobado. Supongo que a lo mejor funciona con variables que usen un sensor. También lo probé con %WIFI y la espera se acaba inmediatamente aunque le metas 20 seg de comprobación.
Enhorabuena a los dos. Entre Caravantes usando la variable TIMES y darkpro con la idea de cambiar el valor que se le da a la variable con la que se compara TIMES habéis hecho una tarea realmente útil. De hecho ahora si puede funcionar como yo decía que funcionaba.
Hoy hago nuevas comprobaciones que no confirman eso que cuentas, sino lo mismo que yo dije ayer. Quizá dependa del tipo de variable usada. Te muestro la prueba que acabo de hacer. He programado una tarea con las dos siguientes acciones
- Esperar (10 minutos) hasta que %TIME > 22.35
- Notificación sonora.
He activado la tarea a las 22:32.
Según tu teoría, la notificación debería aparecer a las 22:36, justo cuando comienza a cumplirse la condición. Pero la notificación ha aparecido a las 22:42, seis minutos después. ¿Por qué? Creo que al activar la tarea Tasker hizo una primera comprobación (22:32), y vió que no se cumplía la condición. 10 minutos después hizo la siguiente comprobación (22:42), que ahora sí era positiva. Por eso me reafirmo en que el tiempo indicado define el periodo entre comprobaciones.
Añado los detalles técnicos, por si alguien quiere reproducir el experimento o hacerle alguna modificación que quizá nos permita averiguar cómo funciona realmente.
Basura (102)
A1: Esperar hasta [ MS:0 Segundos:0 Minutos:10 Horas:0 Días:0 ] Si (if) [ %TIME > 22.35 ]
A2: Notificación sonora [ Título:Tiempo Texto: Icono:null Número:0 Archivo de sonido: Prioridad:3 ]
404906
Caravantes yo utilizo estas dos tareas :
Gshj (129)
A1: Establecer variable [ Nombre:%Times A:%TIMES+50 Calcular:Encendido Añadir:Apagado ]
A2: Esperar hasta [ MS:0 Segundos:8 Minutos:0 Horas:0 Días:0 ] Si (if) [ %TIMES > %Times ]
A3: Vibrar [ Tiempo:200 ]
Cuando se está ejecutando la primera después ejecutó esta otra:
Kxk (130)
A1: Restar de variable [ Nombre:%Times Valor:55 ]
La vibración es inmediata.
Creo que va a ser cuestión de que tu utilizas TIME y yo TIMES. Probaré tu tarea a ver que pasa.
Continuemos tratando de hacer alguna averiguación más.
He comprobado que las tareas de Mlesir son correctas. Haciendo lo que él dice, la ejecución de la segunda tarea modifica la variable y eso hace que la primera tarea deje de estar retenida en la acción ESPERAR HASTA, y lo hace de forma instantánea, sin el periodo de espera previsto.
He pensado que tal vez la diferencia pueda estar en que Mlesir usa una variable de usuario (%Times) más una variable interna de Tasker (%TIMES), mientras que yo solo usaba una variable interna (%TIME). Para tratar de comprobar esta hipótesis he preparado unas tareas similares a las de Mlesir, pero con una sola variable de usuario, así:
Gshj (99)
A1: Establecer variable [ Nombre:%Alfa A:aa Calcular:Encendido Añadir:Apagado ]
A2: Esperar hasta [ MS:0 Segundos:0 Minutos:1 Horas:0 Días:0 ] Si (if) [ %Alfa !~ aa ]
A3: Notificación sonora [ Título:Alfa Texto: Icono:null Número:0 Archivo de sonido: Prioridad:3 ]
Kxl (100)
A1: Establecer variable [ Nombre:%Alfa A:bbbbbbbbbb Calcular:Apagado Añadir:Apagado ]
La sorpresa es que ni siquiera funciona bien la primera tarea. La acción ESPERAR HASTA no parece trabajar, y lo más curioso es que la NOTIFICACIÓN tampoco aparece, a pesar de que la ejecución finaliza enseguida. Provisionalmente, la única explicación que me parece razonable es que la acción ESPERAR HASTA provoca un error y Tasker aborta la tarea. Agradeceré que algún compañero verifique este problema e informe de sus resultados.
Así pues, parece que de momento tenemos tres escenarios posibles:
- Que la acción haga comprobaciones cada cierto tiempo como yo decía inicialmente.
- Que la acción pase del tiempo de comprobación y funcione instantáneamente como demuestran las pruebas de Mlesir.
- Que todo falle y la acción no funcione, como parece ser que ocurre con el último experimento.
Sugerencia (para otros y para mí): si alguien tiene tiempo que investigue un poco en Google con las palabras "tasker wait until".
Tasker tiene una acción ESPERAR HASTA, en la que se puede especificar un tiempo y una condición. No entiendo cómo funciona. El manual ( http://tasker.dinglisch.net/userguide/es/help/ah_index.html ), dice lo siguiente:Esperar hasta
Detiene la ejecución de la tarea en curso *hasta* que se cumple la condición. Espera el tiempo especificado entre comprobaciones.
Nota: un tiempo muy pequeño de espera puede devorar la batería, tiempos largos son aceptables.
Consejo: si esperas más de 40 segundos, deberías habilitar 'Permanecer despierto' en la pantalla de Propiedades de Tarea para prevenir que Android se duerma antes de que tu tarea se finalice.
Ahora copio los mensajes que hemos cruzado en aquel hilo ya referenciado:
Si te he entendido bien la acción esperar hasta te funciona bien. Esta acción continua:
1 si se consume el tiempo que le has puesto aunque la condición no se cumpla
O si
2 se cumple la condición antes de que se consuma el tiempo. Siempre le tienes que poner un mínimo de tiempo
No había usado nunca la acción ESPERAR HASTA; ni siquiera le había prestado atención hasta ahora, que has picado mi curiosidad. He leido la ayuda de la acción, he hecho algunas pruebas y... Creo que no funciona como dices.
La acción ESPERAR HASTA detiene la ejecución hasta que se cumpla la condición. El tiempo que estableces dentro de esa acción es el periodo de tiempo que Tasker dejará pasar antes de hacer una nueva comprobación de la condición. Si pones un tiempo muy bajo (milisegundos), las comprobaciones serán muy frecuentes y eso devorará la batería. Con tiempos muy largos el problema es que la pantalla pueda llegar a apagarse (la acción tiene una casilla que se puede marcar para evitar eso). Pero la tarea solo continuará cuando Tasker haga una de las comprobaciones y en ese momento se cumpla la condición. En tanto que eso no suceda, la tarea queda detenida en la acción ESPERAR HASTA.
Por cierto, una de las pruebas que he hecho es que se puede utilizar una condición de tiempo al estilo "esperar hasta las 23:30", especificandolo del siguiente modo
%TIME > 23.30
(ojo que ese caracter ">" es una comparación matemática MAYOR-QUE, y funciona bien aunque no sean cantidades sino tiempos)
He especificado que haga la comprobación cada 5 minutos. Luego añado una acción de notificación y compruebo que esa notificación aparece entre las 23:30 y las 23:35. Correcto.
Eso me ha dado una idea. En mi trabajo hay ciertas horas a las que tengo que dejar lo que estoy haciendo para atender a otras tareas concretas que suelen ser breves pero hay que atenderlas en su horario concreto. He pensado que me voy a construir una tarea que tenga varias acciones ESPERAR HASTA (cierta hora), cada una seguida de su correspondiente notificación. De esa forma, la tarea funcionará como una serie de avisadores sucesivos para que yo no me olvide de atender esas tareas que debo hacer en horarios concretos. Por supuesto, puedo programar la tarea para que se inicie automáticamente al llegar al trabajo, es genial.
Gracias por haberme puesto en la pista. Y perdón por el inciso que no tiene mucho que ver con el tema de este hilo.
Caravantes llevas casi toda la razón. La única puntualización es que el tiempo entre comprobaciones al menos usando variables, no funciona así. En el proyecto por ejemplo de darkpro es indiferente que le metas 1 o 20 segundos. En cuanto cambias el valor de la variable deja de esperar. Comprobado. Supongo que a lo mejor funciona con variables que usen un sensor. También lo probé con %WIFI y la espera se acaba inmediatamente aunque le metas 20 seg de comprobación.
Enhorabuena a los dos. Entre Caravantes usando la variable TIMES y darkpro con la idea de cambiar el valor que se le da a la variable con la que se compara TIMES habéis hecho una tarea realmente útil. De hecho ahora si puede funcionar como yo decía que funcionaba.
Hoy hago nuevas comprobaciones que no confirman eso que cuentas, sino lo mismo que yo dije ayer. Quizá dependa del tipo de variable usada. Te muestro la prueba que acabo de hacer. He programado una tarea con las dos siguientes acciones
- Esperar (10 minutos) hasta que %TIME > 22.35
- Notificación sonora.
He activado la tarea a las 22:32.
Según tu teoría, la notificación debería aparecer a las 22:36, justo cuando comienza a cumplirse la condición. Pero la notificación ha aparecido a las 22:42, seis minutos después. ¿Por qué? Creo que al activar la tarea Tasker hizo una primera comprobación (22:32), y vió que no se cumplía la condición. 10 minutos después hizo la siguiente comprobación (22:42), que ahora sí era positiva. Por eso me reafirmo en que el tiempo indicado define el periodo entre comprobaciones.
Añado los detalles técnicos, por si alguien quiere reproducir el experimento o hacerle alguna modificación que quizá nos permita averiguar cómo funciona realmente.
Basura (102)
A1: Esperar hasta [ MS:0 Segundos:0 Minutos:10 Horas:0 Días:0 ] Si (if) [ %TIME > 22.35 ]
A2: Notificación sonora [ Título:Tiempo Texto: Icono:null Número:0 Archivo de sonido: Prioridad:3 ]
404906
Caravantes yo utilizo estas dos tareas :
Gshj (129)
A1: Establecer variable [ Nombre:%Times A:%TIMES+50 Calcular:Encendido Añadir:Apagado ]
A2: Esperar hasta [ MS:0 Segundos:8 Minutos:0 Horas:0 Días:0 ] Si (if) [ %TIMES > %Times ]
A3: Vibrar [ Tiempo:200 ]
Cuando se está ejecutando la primera después ejecutó esta otra:
Kxk (130)
A1: Restar de variable [ Nombre:%Times Valor:55 ]
La vibración es inmediata.
Creo que va a ser cuestión de que tu utilizas TIME y yo TIMES. Probaré tu tarea a ver que pasa.
Continuemos tratando de hacer alguna averiguación más.
He comprobado que las tareas de Mlesir son correctas. Haciendo lo que él dice, la ejecución de la segunda tarea modifica la variable y eso hace que la primera tarea deje de estar retenida en la acción ESPERAR HASTA, y lo hace de forma instantánea, sin el periodo de espera previsto.
He pensado que tal vez la diferencia pueda estar en que Mlesir usa una variable de usuario (%Times) más una variable interna de Tasker (%TIMES), mientras que yo solo usaba una variable interna (%TIME). Para tratar de comprobar esta hipótesis he preparado unas tareas similares a las de Mlesir, pero con una sola variable de usuario, así:
Gshj (99)
A1: Establecer variable [ Nombre:%Alfa A:aa Calcular:Encendido Añadir:Apagado ]
A2: Esperar hasta [ MS:0 Segundos:0 Minutos:1 Horas:0 Días:0 ] Si (if) [ %Alfa !~ aa ]
A3: Notificación sonora [ Título:Alfa Texto: Icono:null Número:0 Archivo de sonido: Prioridad:3 ]
Kxl (100)
A1: Establecer variable [ Nombre:%Alfa A:bbbbbbbbbb Calcular:Apagado Añadir:Apagado ]
La sorpresa es que ni siquiera funciona bien la primera tarea. La acción ESPERAR HASTA no parece trabajar, y lo más curioso es que la NOTIFICACIÓN tampoco aparece, a pesar de que la ejecución finaliza enseguida. Provisionalmente, la única explicación que me parece razonable es que la acción ESPERAR HASTA provoca un error y Tasker aborta la tarea. Agradeceré que algún compañero verifique este problema e informe de sus resultados.
Así pues, parece que de momento tenemos tres escenarios posibles:
- Que la acción haga comprobaciones cada cierto tiempo como yo decía inicialmente.
- Que la acción pase del tiempo de comprobación y funcione instantáneamente como demuestran las pruebas de Mlesir.
- Que todo falle y la acción no funcione, como parece ser que ocurre con el último experimento.
Sugerencia (para otros y para mí): si alguien tiene tiempo que investigue un poco en Google con las palabras "tasker wait until".