![]() |
|
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Activar mismo Perfil en distintas ubicaciones por red
Buenas foreros.
Os planteo la siguiente consulta porque no se me ocurre manera más eficiente (que seguro que la hay) de aplicarla La idea es que cuando me acerque a determinadas ubicaciones, concretamente Juzgados (que me localizare mediante red de datos) lanzar un perfil de silencio y dejar el móvil en modo vibración. De momento solo lo consigo creando un perfil por cada juzgado ( tengo 12 ya...)lo cual me vale, pero tengo la sensación de que puede hacerse en uno solo pero no soy capaz. Espero que alguno pueda aportar alguna idea y así mejorar mis conocimientos. Gracias |
|
|
|
#2
|
||||
|
||||
|
Hola, te planteo una opción
Yo tengo un perfil que se llama firewall que se activa en mi casa, trabajo y coche. Para activarlo he usado una variable que incremento cuando estoy en alguno de esos sitios y decremento cuando salgo. El perfil lo tengo como estado de variable > 0. Lo tengo así porqué los lugares pueden solaparse, pero sería igualmente válido para tu caso. Tendrías que crear una ubicación por juzgado con la única tarea de incrementar la variable y después el perfil común por estado de variable con lo que quieres hacer... Espero te sirva |
| Gracias de parte de: | ||
|
#3
|
|
Buena e ingeniosa solución, si señor…
|
|
#4
|
|
Pues yo no lo veo chicos.
Imposible utilizar un solo perfil con varias ubicaciones, en eso estamos de acuerdo pero... La solución que propones chua al fin y al cabo sigue utilizando un perfil para cada ubicación pero es que además hay que sumarle el de valor de variable. Yo la alternativa que le veo es 12 perfiles de ubicación. Lo que pasa es que aunque haya 12 contextos no tienen por que utilizar cada uno una tarea, pueden utilizar todos lo misma. Claro que siempre y cuando no quieras tener en cuenta en qué Juzgado estas. La otra alternativa que se me ocurre es usar el plugin de Autolocation que no se si permite utilizar un solo contexto pero con varias ubicaciones. |
|
#5
|
|
Muy buenas
![]() Es mi primera intervención en este subforo, así que mis saludos/agradecimientos a todos los que participan activamente en el mismo. Sobre la consulta de kenernest, tal y como te comenta mlesir, parece que Tasker no permite incluir varias coordenadas como disparador de un perfil. Eso no quiere decir que no se pueda hacer algo al respecto Y sobre lo de usar una misma tarea desde varios perfiles, efectivamente es posible, incluso si necesitas saber desde qué perfil se ha lanzado ![]() Yo suelo utilizar la misma tarea en la entrada y la salida de un perfil, incluso desde varios perfiles diferentes, y me funciona perfectamente. Simplemente tienes que analizar el array local predefinido "caller" que Tasker usa para guardar toda la secuencia de llamadas entre perfiles y tareas. En un caso como el que nos ocupa simplemente tendrías que analizar el valor "caller1" para saber qué perfil ha lanzado la tarea. Supongamos que tienes perfiles de este tipo.. Juzgado-1 Juzgado-2 ... Y desde todos llamas a la tarea... EnJuzgado Si en la tarea necesitas saber si el disparador ha sido la entrada del perfil "Juzgado-1" haz una comprobación de este tipo... %caller1 ~ profile*enter*1 Y para comprobar si es la salida del perfil cambia "enter" por "exit". |
| Gracias de parte de: | ||
|
#6
|
|
Joder Willy pues para ser la primera vez has entrado fuerte.
Es verdad lo que dices no me acordaba de que ahora es posible saber que perfil dispara la tarea. Enhorabuena willy una idea cojonuda. |
|
#7
|
|
Me alegra que te parezca buena idea
![]() Antes he olvidado comentar que cuando se asocia la misma tarea a varios disparadores hay que tener en cuenta que podría lanzarse a la vez desde varios sitios si esos disparadores son concurrentes. Esto, que podría parecer un problema, si se gestiona bien da mucho juego. En los ajustes de la tarea se puede elegir si se aborta la tarea existen, la nueva, o si deja correr ambas a la vez. Este no parece el caso, pero ojo con esas situaciones. PD: Tengo una idea para comprobar varias ubicaciones con un único perfil, pero quiero hacer una prueba antes |
| Gracias de parte de: | ||
|
#8
|
|
No sera utilizar javascript?
|
|
#9
|
|
No necesariamente
Aunque en este caso la esencia de la solución no está en usar JS he podido comprobar que en determinados cálculos se consigue más precisión y se mejora el rendimiento. |
| Gracias de parte de: | ||
|
#10
|
|
Comprobar varias ubicación con un único perfil
Una vez verificados un par de detalles creo que ya tengo una posible solución al problema de "comprobar varias ubicaciones con un único perfil" que planteaba kenernest hace unos días.
Primero analicemos qué hace Tasker con un perfil de ubicación:
Visto que Tasker no permite incluir más que una ubicación en cada perfil este tipo de disparador no nos sirve para nuestro propósito, así que tendremos que "recrear" todo lo que hace Tasker punto por punto y luego aplicar el procedimiento a esa lista de ubicaciones que queremos comprobar. -La lista de coordenadas y radios Las podemos meter en un archivo de texto y cargarlo desde la tarea o meterlas directamente en la tarea. Si el radio es el mismo para todas ellas la cosa se simplifica ligeramente. -El método para obtener la ubicación Con "red de datos", dentro de una ciudad y con el chequeo permanente de wifi de KitKat, se obtiene una precisión razonablemente buena para el caso que nos ocupa (entre 25 y 500 metro según mis pruebas). Tasker obtiene automáticamente esa ubicación y la guarda en la variable global predefinida %LOCN, así que no tenemos que hacer nada más que usarla cuando la necesitemos. -Tiempo de monitoreo Al no usar directamente el disparador de tipo ubicación los ajustes de monitoreo de Tasker no nos vale para nada. Se me pasó por la cabeza usar los cambios automáticos de valor de %LONC como disparador, pero por lo que he podido verificar esos cambios automáticos son muy "impredecibles" y parecen ignorar las preferencias de Tasker. Con la pantalla encendida se producen cada pocos segundos (10 a 30) y con la pantalla apagada cada 10 minutos como poco. -El disparador Vista la forma en que Tasker actualiza la variable %LOCN automáticamente yo no usaría ese evento como disparador. Me parece mejor usar un temporizador al gusto del consumidor (digamos de 5 minutos) que lance la tarea a intervalos regulares. Se podría establecer un periodo de tiempo (el horario laboral). Determinado evento del calendario (laboral/festivo, citas anotadas). La proximidad de antenas cercanas. O la proximidad de una red wifi conocida. -Saber si estamos dentro o fuera del círculo Esto, que suena a "complicado que te cagas", en realidad es sencillo. La cosa es tan simple como calcular la distancia a la que estamos del punto X (repetir para cada punto de la lista) y comprobar si es mayor/menor que el radio R (que podría ser el mismo para todos los puntos). ![]() -Calcular la distancia entre dos ubicaciones Por lo que he visto el tema de "calcular la distancia entre dos ubicaciones" ya se ha tratado varias veces en el foro (Caravantes lo explica aquí, por ejemplo). Casi siempre se propone usar el teorema de Pitágoras (supongo que por su sencillez) pero lamento decir que es una solución incorrecta que ignora algo evidente. La tierra es redonda. El teorema de Pitágoras es aplicable sobre un plano con un sistema de coordenadas formado por líneas paralelas, y ese no es el caso de sistema lat/lon. A cortas distancias y cerca del ecuador eso podría ser una aproximación aceptable, pero a medida que aumente la distancia entre los puntos o te alejes del ecuador el error puede llegar a ser enorme. La forma correcta de medir la distancia entre dos ubicaciones (la distancia ortodrómica) es usando la "Trigonometría Esférica". Suena mucho peor de lo que es y se puede resolver con una ecuación relativamente sencilla. ![]() Mi propuesta sobre este particular es construir una tarea que se comporte como la típica función de los lenguajes de programación. La llamas desde cualquier parte que la necesites pasando como parámetros dos coordenadas, hace su magia, y nos retorna la distancia entre ellas. Ya hace tiempo que me hice una tarea/función de este tipo. Incluso la tengo hecha con Tasker puro y con JavaScript. Esto lo podíamos tratar en otro tema para no seguir engordando este, que ya lleva lo suyo. RESUMIENDO Un ÚNICO disparador por tiempo complementado con horario laboral, calendario, antenas y wifi cercanos. Eso debería garantizar una precisión y eficacia más que aceptable. Una lista de coordenadas (en un archivo o directamente metidas en la tarea). Ubicación propia obtenida de la variable global automática %LOCN. Medición de la distancia entre la ubicación propia y cada una de las ubicaciones de la lista (con una tarea pendiente de explicar, si os interesa). En cuanto una de ellas sea menor que el radio elegido lanzamos la tarea que queramos (el cambio a modo silencioso que propone kenernest). Esto sería el equivalente a la tarea de entrada de un perfil de ubicación típico. Y para terminar, el equivalente a la tarea de salida de un perfil de ubicación. Si una vez recorrida toda la lista de ubicaciones no estamos lo bastante cerca de ninguna lanzamos otra tarea que desactive el modo silencioso. Creo que no me olvido de nada
Última edición por WillyWeb Día 04/06/15 a las 19:58:53 Razón: Añadir un par de aclaraciones más. |
| Los siguientes 3 usuarios han agradecido a WillyWeb su comentario: | ||
|
#11
|
|
Guau! Impresionante. Enhorabuena si señor.
|
|
#12
|
|
Comprobar varias ubicación con un único perfil
Como veo que nadie se lanza, y el autor de la consulta no ha dado señales de vida, me he puesto al tema y esto es lo que he conseguido en diez minutos...
Código:
Perfil: ChkListaLoc (999) Hora: Desde 08:00 cada 5m Hasta 15:00 Entrada: ChkListaLoc (888) A1: Establecer variable [ Nombre:%miloc A:%LOCN ] A2: Establecer variable [ Nombre:%radio A:500 ] A3: Leer Archivo [ Archivo:ChkListaLoc.txt A la variable:%loc ] A4: Establecer variable [ Nombre:%newline A:retorno-de-carro ] A5: Separar variable [ Nombre:%loc Separador:%newline ] A6: For [ Variable:%loc Ítems:%loc() ] A7: Realizar tarea [ Nombre:DistLatLon Prioridad:%priority Parámetro 1 (%par1):%miloc Parámetro 2 (%par2):%loc Devolver Valor de Variable:%dist ] A8: Si (if) [ %dist < %radio ] A9: Anchor <cerca-una> Poner aquí todo lo que se quiera como tarea de entrada A10: Detener [ Con error:Apagado Tarea: ] A11: Fin si (End if) A12: End For A13: Anchor <cerca-ninguna> Poner aquí todo lo que se quiera como tarea de salida Código:
40.411568,-3.694134 40.408170,-3.701343 40.403856,-3.708382 40.395490,-3.711815 40.434438,-3.705807 40.417972,-3.621693 * La tarea DistLatLon está explicada en este artículo. POSIBLES MEJORAS -Controlar si existen líneas en blanco en el archivo de localizaciones -Añadir un radio para cada ubicación en vez de usar uno global -Tener en cuenta la precisión de la ubicación como margen de error Eso es todo amigos ...
Última edición por WillyWeb Día 08/06/15 a las 22:53:26 Razón: Añadido enlace al artículo para calcular la distancia |
| Los siguientes 4 usuarios han agradecido a WillyWeb su comentario: | ||
|
#13
|
||||
|
||||
|
Buenas!! Doy señales de vida!! Es que me he casado y hasta hace 2 días no he vuelto del viaje de novios
En primer lugar agradecer todas las respuestas, ahora me pongo a verlas y comento que me ha salido. A mas de uno contactare por privado porque me interesa actualizar mi bufete intentando que todos los dispositivos (pcs, móviles y tabletas) se sincronicen empleando owncloud como servidor y tasker para automatizar cosas con los dispositivos android. Por supuesto, ni que decir tiene, que eso lleva implícita alguna donación vía PayPal. Alguien interesado?? |
|
#14
|
|
|
Cita:
![]() Ahora en serio, enhorabuena ![]() Y sobre tu proyecto, pues cuenta lo que quieres hacer y lo mismo "alguien" te puede ayudar.
|
| Gracias de parte de: | ||
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 17:11:57 (GMT +1)
HTCMania: líderes desde el 2007












