Ver la Versión Completa : [ CONSULTA ] Activar mismo Perfil en distintas ubicaciones por red
kenernest
28/05/15, 09:26:12
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
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
cace0353
28/05/15, 23:10:51
Buena e ingeniosa solución, si señor…
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.
WillyWeb
03/06/15, 12:48:56
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 :loco:
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".
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.
WillyWeb
03/06/15, 16:02:37
Me alegra que te parezca buena idea :gracias:
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 ;-)
No sera utilizar javascript?
WillyWeb
04/06/15, 00:22:24
No necesariamente :oh: ... ¿por qué lo dices?
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.
WillyWeb
04/06/15, 17:54:40
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:
Definimos unas coordenadas X de tipo lat/lon
Definimos un radio R en metros
Definimos el método M preferido para obtener la ubicación
Cada T segundos (dependiendo de las "preferencias de monitoreo" con pantalla encendida/apagada) Tasker obtiene nuestra ubicación Y usando el método M
Tasker comprueba si esa ubicación Y está dentro/fuera del círculo de radio R con centro en X
Como consecuencia de la comprobación anterior Tasker lanza la tarea de entrada o salida correspondiente
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). :silbando:
-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 (http://www.htcmania.com/showthread.php?p=8699477)). 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. :oh:
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 (http://es.wikipedia.org/wiki/Ortodrómica)) es usando la "Trigonometría Esférica (http://es.wikipedia.org/wiki/Trigonometría_esférica)". Suena mucho peor de lo que es y se puede resolver con una ecuación relativamente sencilla. :silbando:
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 :loco:
Guau! Impresionante. Enhorabuena si señor.
WillyWeb
05/06/15, 21:57:18
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...
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
Y el archivo con las localizaciones que se quiere comprobar tendría esta pinta...
40.411568,-3.694134
40.408170,-3.701343
40.403856,-3.708382
40.395490,-3.711815
40.434438,-3.705807
40.417972,-3.621693
* ¡¡ Ojo !! ... tal y como está la tarea no se deben dejar líneas en blanco
* La tarea DistLatLon está explicada en este artículo (http://www.htcmania.com/showthread.php?t=1026246).
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 ... :cucu:
kenernest
20/06/15, 11:01:34
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??
WillyWeb
20/06/15, 11:48:38
Buenas!! Doy señales de vida!! Es que me he casado y hasta hace 2 días no he vuelto del viaje de novios
¿Y qué haces aquí hombre? ... corre con tu mujer y deja esto para otro momento :risitas:
Ahora en serio, enhorabuena :ok:
Y sobre tu proyecto, pues cuenta lo que quieres hacer y lo mismo "alguien" te puede ayudar. :silbando:
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.