|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
¿Fallan las tareas programadas?
Hola, primero un poco de presentación. Aunque con este nick es el primer mensaje, ya me di de alta allá por el 2012. Pero he perdido la contraseña, y cuando pido que me la devuelvan, me contesta la página que el correo no está dado de alta. Da igual, como no es algo que le tenga demasiado aprecio, creo cuenta nueva... y al lío
A lo interesante. Resulta que en mi empresa han implantado (por imperativo legal) un sistema de fichaje basado en una aplicación de android. Cada usuario, en su momento, abre la aplicación, y pulsa uno de los cuatro botones (Entrar, Pausa - puede ser para almorzar, comer...-, Reanudar y Salir). Bueno, resulta que cuando me meto en mi trabajo, me ensimismo tanto en el, que se me olvida casi siempre fichar, con lo cual, ya me he llevado unas cuantas regañinas, así que decidí automatizar el proceso. Primero intenté con el Autoinput, es decir, que a las 8:30 que me fiche a la entrada, a las 10:00 fiche para almorzar ... etc. Funciona todo perfecto... mientras el movil no esté bloqueado. He googleado bastante, que si activar la pantalla antes, que si prueba esto, que si prueba quello, total, que el AutoInput es aparentemente incapaz de (estando el terminal bloqueado) abrir la aplicación y simular la pulsación. Así que busqué una segunda alternativa que funciona CASI a la perfección. Resulta que la aplicación tiene una API, para integrar el sistema de fichajes con el de la empresa. Esta API está basada en comandos HTML send y post. Por ejemplo: (EN EL EJEMPLO HE SUSTITUIDO EL NOMBRE DE LA EMPRESA POR XXXXXX, mas que nada por no dar publicidad de momento) (el usuario y la contraseña también son ficticios) USER LOGIN POST "https://newapi.XXXXXXXX.es/api/user/login" \ HEADERS Accept: application/vnd.apiXXXXXX.v1+json Content-Type: application/x-www-form-urlencoded; charset:utf8 BODY urlencoded user: [email protected] pin: 1234 Pues resulta que con el plugin RESTask puedo hacer sin ningún tipo de problema estas llamadas. Así que tengo una tarea que me hace un LOGIN, otra que me ficha como entrada (FicharEntrada), otra que inicia una pausa (FicharPausa), otra que me reanuda (FicharResume), y otra para terminar (FicharFin). Las cuatro tareas funcionan perfectamente, así que solo me falta que se ejecuten a una hora determinada. Así que he creado 6 perfiles. Fichar por la mañana Desde 8:30 -> FicharEntrada Comienza Almuerzo Desde 10:00 -> FicharPausa Fin Almuerzo Desde 10:15 -> FicharResume Salir a comer Desde 14:15 -> FicharPausa Fin comida Desde 15:00 -> FicharResume Fichar Salir Desde 17:30 -> FicharFin. De esta forma, da igual si el teléfono está bloqueado o no. Si estoy despistado despistado o atento. El teléfono ficha por mi. Aunque hay un pero... Algunas veces, de forma aleatoria, los eventos se desencadenan ellos solos, y el otro día, a las 11:00 salí y entré del trabajo como 15 veces (en un par de segundos), y ahora, mientras estaba escribiendo este hilo, he visto que el movil me ha fichado como entrada, pausa, salir.... es decir, a las 23:30 ha ejecutado todas las tareas programadas. Como el jefe de personal, ya vino a preguntarme que había pasado con lo de los fichajes, le dije que por error mío, había dejado el programa activo y el teléfono sin bloquear por error en el bolsillo, y sin querer, con la "chorra" le habría dado varias veces a los botones. Varias risas, Varios hastaluegos, y se marchó. Pero no me gustaría tener que sacar de nuevo la carta de la "chorra pulsadora". ¿Alguna idea de porqué me está pasando eso de que se desencadenen los eventos cuando le sale de la "chorra" al tasker?
|
| Gracias de parte de: | ||
|
|
|
#2
|
||||
|
||||
|
Mientras estaba escribiendo este hilo, también estaba googleando y revisando la ayuda, y es posible que la solución sea sencilla.
Mañana lo pruebo. Pero cualquier ayuda o orientación será bien recibida. Al parecer, cuando quieres que una tarea se ejecute de forma puntual, el parámetro Desde (hora) y Hasta (hora) deben de tener el mismo valor. Yo solo había programado el valor Desde. ¿Es eso así? Supongo que esa información me la habré saltado de los tutoriales por culpa de hacer una lectura demasiado rápida de los mismos. |
| Gracias de parte de: | ||
|
#3
|
||||
|
||||
|
Hola.
Está genial que hayas encontrado el método para que las tareas se comuniquen con la API y realicen su cometido... has hecho la parte más difícil. Pero ... uf, creo que te has embalado/entusiasmado demasiado al darle a Tasker la responsabilidad de fichar sin haber probado los perfiles. Todavía te sugiero que des un paso atrás. En cada una de las tareas puedes insertar al comienzo dos acciones: 1. NOTIFICACIÓN. Para que te salga una notificación avisando de que debes fichar de una u otra forma concreta (entrada, pausa, etc). 2 DETENER TAREA. Luego dejas el resto de las acciones (las que ya tienes) que no serán ejecutadas mientras pruebas los perfiles. De esta forma podrás comprobar si las tareas se ejecutan en los momentos oportunos, y solo en esos momentos. En el texto de la notificación, añade %TIME para que quede escrita la hora. De esta forma sabrás cuando ha saltado la notificación incluso si la ves un rato más tarde. Además de la notificación escrita, yo haría que sonase una melodía, sonido o canción (MP3) para asegurarme de que la notificación no pase desapercibida. Una vez que hayan transcurrido unos días (incluyendo un fin de semana) y compruebes que todo funciona bien... A) Quitas la acción DETENER TAREA. B) Cambias la acción de NOTIFICACIÓN al final de la tarea, para que la tarea ejecute el fichaje y luego te salga el aviso de que ese fichaje ha ocurrido correctamente a tal hora. Pero yo no pondría DESDE y HASTA en la misma hora. Lo haría de otra forma: En primer lugar añadiría un contexto de ubicación para que solo se hagan los fichajes si estoy en la empresa. Si un día me pongo enfermo y no voy a trabajar, mejor que el smartphone no fiche automáticamente porque eso también acabaría mosqueando al jefe de personal. Voy a seguir hablando de "ubicación" pero si tu empresa tiene Wifi sería mejor cambiar la ubicación por la conexión Wifi de la empresa, que tiene un radio de acción más preciso. En segundo lugar, yo utilizaría una variable global (%Fichaje) que podrá tener varios valores: %Fichaje=0 cuando no estoy trabajando.De este modo, el equema queda así: Fichar por la mañana + Desde 8:30 a 09:45 + Y estoy en el lugar de trabajo (ubicación/wifi) + Y tengo la variable %Fichaje en 0 (no estoy trabajando) -> FicharEntrada (la tarea pone la variable %Fichaje en 1, trabajando) Haber introducido un rango horario más amplio sirve para que el perfil se active automáticamente si algún día llegas un poco tarde. Y la ubicación/wifi hará que el perfil se active justo cuando llegues a la empresa. Comienza Almuerzo + Desde 10:00 a 10:10 + Y estoy en el lugar de trabajo (ubicación/wifi) + Y tengo la variable %Fichaje en 1 (trabajando) -> FicharPausa (la tarea pone la variable %Fichaje en 2, pausa) Fin Almuerzo + Desde 10:15 a 10:16 + Y estoy en el lugar de trabajo (ubicación/wifi) + Y tengo la variable %Fichaje en 2 (pausa) -> FicharResume (la tarea pone la variable %Fichaje en 1, trabajando) Salir a comer + Desde 14:15 a 14:20 + Y estoy en el lugar de trabajo (ubicación/wifi) + Y tengo la variable %Fichaje en 1 (trabajando) -> FicharPausa (la tarea pone la variable %Fichaje en 2, pausa) Fin comida + Desde 15:00 a 15:15 + Y estoy en el lugar de trabajo (ubicación/wifi) + Y tengo la variable %Fichaje en 2 (pausa) -> FicharResume (la tarea pone la variable %Fichaje en 1, trabajando) Fichar Salir + Desde 17:30 a 17:35 + Y estoy en el lugar de trabajo (ubicación/wifi) + Y tengo la variable %Fichaje en 1 (trabajando) -> FicharFin (la tarea pone la variable %Fichaje en 0, no trabajando) Con este sistema, cada perfil solo se inicia si estamos en el rango horario y además la variable %Fichaje indica que estamos en la situación previa. Puesto que la tarea cambia el valor de esa variable %Fichaje, la tarea no va a ejecutarse varias veces seguidas. El perfil de ubicación (o wifi) puede dar problemas laterales. Por ejemplo, puede ocurrir que pierda la ubicación (o la conexión Wifi) y la recupere un segundo después. Eso conllevaría que el perfil se desactivaría y se volvería a activar muy seguido. Ocurre algunas veces. Para solucionar este inconveniente, hay dos estrategias. Yo te recomiendo que utilices ambas: 1 En las tareas puedes cambiar una propiedad llamada MANEJO DE INCOMPATIBILIDADES para asegurar que si la tarea que ya está en ejecución no pueda comenzar a ejecutarse en una segunda instancia (esto podría ocurrir si el perfil se activa, se desactiva y se vuelve a activar cuando la primera tarea todavía no ha terminado). 2 Puedes cambiar una propiedad del perfil llamada TIEMPO DE ENFRIAMIENTO. De esta forma te garantizas que el perfil no se active dos veces muy seguidas. Yo pondría varios minutos. Espero haber ayudado. Todo esto solo es un enfoque del problema, el que se me ha ocurrido a mí. Puede haber otras soluciones igual de buenas, o mejores. Y supongo que también se podrá seguir el mismo enfoque pero mejorando algún detalle. Digo todo esto para animar a otros compañeros para que aporten sus ideas.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Última edición por Caravantes Día 02/10/19 a las 05:28:36. |
| Gracias de parte de: | ||
|
#4
|
||||
|
||||
|
Hice pruebas en casa, y parecía que funcionaba bien. Así que me envalentoné. Algunas veces, tirarse a las piscina es otra forma de saber si contiene agua. No es la mejor. pero ahí está. No obstante, ahora las pruebas las estoy haciendo utilizando un periodo de prueba de 1 mes que ofrece la aplicación, así que he creado una "empresa ficticia", y así estoy comprobando como realiza las acciones. Esta idea me parece genial. La voy a poner en práctica. 1 En las tareas puedes cambiar una propiedad llamada MANEJO DE INCOMPATIBILIDADES para asegurar que si la tarea que ya está en ejecución no pueda comenzar a ejecutarse en una segunda instancia (esto podría ocurrir si el perfil se activa, se desactiva y se vuelve a activar cuando la primera tarea todavía no ha terminado).
2 Puedes cambiar una propiedad del perfil llamada TIEMPO DE ENFRIAMIENTO. De esta forma te garantizas que el perfil no se active dos veces muy seguidas. Yo pondría varios minutos. ![]() Porsupuesto que lo has hecho. Esta tarde-noche, cuando llegue a casa lo pongo en práctica. Otra vez: Muchas gracias por la rápida respuesta. Informaré de como andan los avances. |
| Los siguientes 2 usuarios han agradecido a vilavellero su comentario: | ||
|
#5
|
||||
|
||||
![]() Y a tu pregunta ... Sí. Eso es lo que dice la guía del usuario. https://tasker.joaoapps.com/userguid...mecontext.html to specify a precise time, set From and To times the same. In that case, the context is treated as an instant event, it it only active for a fraction of a second, so no setting restoration is done.Tal como te ha comentado Caravantes, de la forma en que has configurado tus perfiles al final del día todos estarán activos porque van desde la hora "Desde" hasta las 23:59 ... y supongo que no es eso lo que querías. ![]() Puedes hacer que esos perfiles se comporten como un evento poniendo la misma hora en Desde y Hasta. De esa forma tus seis perfiles se dispararán "una única vez" a la hora elegida y listo. Y si quieres más seguridad puedes jugar con el tiempo de enfriamiento, que también te ha comentado Caravantes, y que está pensado justo para evitar ese tipo de"rebotes" en la activación de un perfil. Hasta aquí lo "evidente", pero un profesional de Tasker (y por lo que veo tú ya juegas en esa liga) le daría una vuelta más al asunto ... ![]() Has hecho seis perfiles de hora, pero en realidad solo tienes tres "acontecimientos" que registrar; ir a trabajar, ir a almorzar e ir a comer, cada uno de ellos con una hora de inicio y fin. Al traducir eso a perfiles/contextos/tareas te encontrarás con que a cada uno de esos tres perfiles le puedes asignar una tarea de entrada y una de salida, quedando la cosa más o menos así... Trabajando Desde: 8.30 Hasta: 17.30 Tarea de entrada: FicharEntrada Tarea de salida: FicharFin Almorzando Desde: 10.00 Hasta: 10.15 Tarea de entrada: FicharPausa Tarea de salida: FicharResume Comiendo Desde: 14.15 Hasta 15.00 Tarea de entrada: FicharPausa Tarea de salida: FicharResume Mucho más claro y fácil de mantener, ¿no? ![]() El tema de evitar fichar siempre a la misma hora no debería ser complicado. Una variable aleatoria para sumar/restar unos minutos a las horas establecidas y tema resuelto ... ¿fácil, verdad? ... bueno ... ![]() Y una cosa más. Creo que puedes prescindir del plugin perfectamente. La nueva acción "HTTP Request" es tan potente, o más, que RESTask. ¿Cómo lo ves?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) Última edición por WillyWeb Día 03/10/19 a las 08:37:23. |
| Los siguientes 2 usuarios han agradecido a WillyWeb su comentario: | ||
![]() |
Estás aquí
|
||||||
|
||||||