Ver la Versión Completa : Memorizar una ubicación para luego volver a ella. 2 tareas.
Caravantes
07/02/13, 19:40:26
Cuando voy a una ciudad que no conozco, utilizo Tasker para memoriza el lugar en el que he aparcado el coche o el lugar del hotel en que me he alojado. Más tarde, desde cualquier otro sitio de la ciudad, el smartphone me ayuda a regresar hasta el vehículo o al hotel.
Lo he planteado como dos tareas que no tengo asociadas a ningún perfil sino a dos widgets. Uso el primer widget para memorizar la posición cuando aparco el coche o cuando salgo del hotel. Uso el segundo widget cuando quiero regresar y no se cómo hacerlo porque no conozco la zona. Quien tenga el típico perfil Bluetooth-coche podrá hacer que la primera tarea sea iniciada automáticamente cada vez que deja el coche. Pero en ese caso también recomiendo mantener el widget, para otros casos como el del hotel.
Tarea A, llamada Posición-guardar.
1 Decir "Iniciando para guardar posición"
2 Establecer variable %gpsorigen a %GPS (memorizo si el GPS estaba encenido o apagado)
3 GPS, establecer encendido.
4 Establecer variable %Sitio a 0 (cero).
5 Obtener ubicación, fuente Red datos, cuenta atrás de 30 segundos.
6 Establecer variable %Sitio a %LOCN (%LOCN es la variable de ubicación obtenida por red de datos).
7 Obtener ubicación, fuente GPS, cuenta atrás de 120 segundos.
8 Establecer variable %Sitio a %LOC (%LOC es la variable de ubicación obtenida por GPS).
9 GPS, establecer apagado, si gpsorigen = apagado
10 Decir "posición guardada", si %Sitio |~ 0 (%Sitio No-coincide con cero)
11 Decir "No se ha podido guardar la posición", si %Sitio = 0
Esta primera tarea usa el GPS para obtener la ubicación; Las acciones 2 y 9 sirven para que la tarea, al terminar, deje el GPS igual que estuviera el principio (encendido o apagado). Si el GPS fuera incapaz de dar una ubicación, la acción 5 permite -en algunos casos, obtener una ubicación en función de la otra opción posible, supongo que deduciéndola de las antenas cercanas. Si ambos sistemas de ubicación funcionasen, se tomaría en cuenta el resultado del GPS.
Tarea B, llamada Posición-volver
1 Si %Sitio=0
. 2 Decir "No se ha guardado ninguna posición"
3 Else
. 4 GPS, establecer encendido
. 5 Abrir mapa, modo Navegar a, Latitud-Longitud %Sitio [Ojo, mirar más abajo una actualización (1)]
6 Fin si
Poco que comentar en esta tarea. Si había una ubicación memorizada se activará el GPS y se abrirá el maps-navegador para guiarnos hasta ese lugar.
(1) Actualización: En mensajes posteriores de este mismo hilo, el compañero Sowed se ha dado cuenta de que el navegador que nos lleva de regreso nos guía en "modo coche", lo cual es poco adecuando porque queremos regresar caminando, y ambas rutas pueden ser muy distintas. Y lo mejor de todo es que ha encontrado la solución: es posible hacer que Tasker abra el navegador en modo peatón, y Sowed nos muestra con todo detalle su versión de la tarea en el siguiente mensaje http://www.htcmania.com/showthread.php?p=10621991 . Resumiendo, lo esencial de su mejora es lo siguiente:
. 5 Establecer variable %Sitio1 A %Sitio+&mode=w
. 6 Abrir mapa, modo Navegar a, Latitud-Longitud %Sitio1
7 Fin si
Se agradecen comentarios, sugerencias de mejora y críticas. Saludos.
Muy bueno tío!! Como me lo puedo descargar para usarlo en mi mobil??
Gracias de antemano, eres un crack, vaya máquinas de programar estáis hechos!!!
hakamin
08/02/13, 12:53:25
Muy bueno tío!! Como me lo puedo descargar para usarlo en mi mobil??
Gracias de antemano, eres un crack, vaya máquinas de programar estáis hechos!!!
Tambien puedes hacerlo.... Ya sabes como se hace solo es cuestion de un par de minutos......
Yo no lo veo tan sencillo, pero lo intentaré...
Gracias de nuevo!!
ATaskREADOS
20/02/13, 19:18:44
:campeon: Te lo he subido al recopilatorio, sección perfiles.:aplausos:
Firmado: mlesir
Doker H1
27/06/13, 10:26:19
10 Decir "posición guardada", si %Sitio <> 0 (%Sitio distinto de cero)
La opcion "distinto" como tal no me sale, pongo los signos <> o como debe de hacerse?
. 5 Abrir mapa, modo Navegar a, Latitud-Longitud %Sitio
.
Este paso quedaria asi no?
Que Caravantes me corrija si me equivoco pero lo que se busca aquí es saber si %Sitio está vacío o se ha guardado algo en la variable.
Así que puedes utilizar la opción matemáticamente distinto de 0 (! =) o yo para ver si una variable esta vacía prefiero utilizar IF ! ~ %* (o sea no coincide con %*) Si está vacía evidentemente va a empezar por % y poniéndole el asterisco le dices que no importa lo que venga después, basta con que empiece por %. Si le pusieras el asterisco al principio le dirías sin importar lo que haya antes o sea que al final tenga %. Y si se lo pones en los dos (*%*) le dices que con que haya un % sin importar donde.
Por cierto lo de las imágenes! Con lo fácil que es copiar un perfil o tarea! Mirate el hilo de recomendaciones Weigher "please".
Caravantes
28/06/13, 00:42:28
Hola Weigher, Creo que no te he visto antes por aquí. Bienvenido al foro de Tasker. Si todavía no lo has hecho, te sugiero la lectura de las "Recomendaciones para participar"
http://www.htcmania.com/showthread.php?p=8982303
La opcion "distinto" como tal no me sale, pongo los signos <> o como debe de hacerse?
Perdón. Sin ser riguroso, escribí %Sitio <> 0 (%Sitio distinto de cero) pero lo correcto es %Sitio |~ 0 (%Sitio No-coincide con cero). Ya lo he corregido
La interpretación del compañero Mlesir no es del todo acertada. La variable %Sitio es una variable global: cuando se usa la tarea PosiciónGuardar, esa variable guarda las coordenadas de la ubicación en la que nos encontramos; cuando luego se usa la tarea PosiciónVolver esa variable es utilizada como destino para regresar al lugar. Cada vez que se vuelve a usar de nuevo la tarea PosiciónGuardar hay que empezar borrando lo que esa variable tuviera guardado de un uso anterior. Por ese motivo, la acción 4 "inicialilza" esa variable poniéndola a cero. A continuación se intenta obtener unas coordenadas que se guardan en la misma variable, si el proceso de ubicación funciona. Si no se consigue la ubicación, la variable %Sitio seguirá teniendo el valor cero. De esta forma, chequeando el valor cero podemos saber si ha funcionado la ubicación. Esa era la idea.
5 Abrir mapa, modo Navegar a, Latitud-Longitud %Sitio
Este paso quedaria asi no?
Sí, parece que lo tienes bien.
Ahora que hemos aprendido a exportar la definición de las tareas (Weigher, te recomiendo esta lectura: http://www.htcmania.com/showthread.php?p=8852245 ), se me ha ocurrido añadir aquí las tareas exportadas de esa forma para evitar este tipo de dudas o malentendidos.
Pero veo que desde entonces, las tareas han engordado bastante porque les he añadido más funciones, quizá demasiadas. Por ejemplo, además de las coordenadas de ubicación, obtienen el nombre del lugar correspondiente (calle, localidad, etc) y vocalizan esa información del lugar para que quede claro el lugar en el que tomaste la referencia o el lugar al que quieres llegar. Quien quiera más información sobre estos procedimientos que convierten unas coordenadas de ubicación en una dirección postal, que lea los mensajes que hay en la URL siguiente:
http://www.htcmania.com/showthread.php?p=8133110
Además, la tarea Volver, calcula la distancia que falta para llegar al objetivo y cada cierto tiempo me dice esa distancia y también me dice sii me voy acercando o alejando del objetivo. Más información sobre distancias entre dos ubicaciones, en el mensaje siguiente http://www.htcmania.com/showthread.php?p=8699477
Todos esos añadidos hacen que ahora no tenga mucho sentido exportar las tareas tal como las tengo, son demasiado complejas y necesitaría acompañarlas de amplias explicaciones para que resultasen comprensibles. Quizá en otro momento me anime a hacerlo.
Entretanto recomiendo seguir como hasta ahora, interpretando las dos tareas tal como están expuestas. Intentaré seguir aclarando las dudas que pueda haber. Weigher, tú sí puedes exportar la tarea, si no te gunciona bien, para que veamos cómo la tienes en detalle.
AbejoSid
28/06/13, 01:11:33
Consulta, cuando uno tiene pagado el WiFi y abre el maps pide activar el WiFi, pensé que era solo un capricho del programa, pero el otro dia me sale en el Google Now, que por mas que no este conectado a ninguna red mejora la posición tener habilitado el WiFi, alguien sabe algo al respecto? como puede mejorar la ubicación si no estoy conectado a ningún lado? salvo que si detecta alguna red abierta trate de conectarse para mejorar el posicionamiento :pensando:
En caso de ser correcto esto, no convendría activar el WiFi ademas del GPS?
Caravantes
28/06/13, 02:32:59
Consulta, cuando uno tiene pagado el WiFi y abre el maps pide activar el WiFi
Si tienes el Wifi activado, el aparato sabe cuáles son los nombres de las redes Wifi que hay en la zona que estás, y eso es indistinto de que estés conectado a una red Wifi o a ninguna. A través de Internet puede consultar DÓNDE están realmente ubicadas esas redes Wifi del entorno. Y de esa forma puede calcular bastante bien tu posición, o mejorar el cálculo obtenido por otros procedimientos.
Si quieres saber más sobre los distintos métodos de ubicación, su precisión y su consumo energético, leete el siguiente mensaje:
http://www.htcmania.com/showthread.php?p=8723599
AbejoSid
28/06/13, 05:45:36
Si tienes el Wifi activado, el aparato sabe cuáles son los nombres de las redes Wifi que hay en la zona que estás, y eso es indistinto de que estés conectado a una red Wifi o a ninguna. A través de Internet puede consultar DÓNDE están realmente ubicadas esas redes Wifi del entorno. Y de esa forma puede calcular bastante bien tu posición, o mejorar el cálculo obtenido por otros procedimientos.
Si quieres saber más sobre los distintos métodos de ubicación, su precisión y su consumo energético, leete el siguiente mensaje:
http://www.htcmania.com/showthread.php?p=8723599
mmmmmm, no creo que tome el SSID como lugar de posición, pensa que puede haber mas de un router con el mismo SSID, suponiendo que use el MAC (que seria lo mas acertado), seria muy impreciso, ya que un router hoy puede estar en un lado y al dia siguiente en otro, tendría que haber un mapeo de routers en forma continua sobre toda la ciudad para que un sistema asi sea eficaz, yo creo que lo que hace es tratar de conectarse a alguna red como para poder hacer una pre ubicación por la IP que recibe el router al que se conectaría o descargar el archivo con la ubicación de los satélites
Caravantes
28/06/13, 22:34:58
suponiendo que use el MAC (que seria lo mas acertado)
Tienes razón, Abejo. Me equivoqué en ese detalle: realmente no se hace con la ISSD, se hace con la dirección MAC, pero la idea es la misma.
seria muy impreciso
Según la siguiente página, "la geolocalización es casi exacta. Incluso te dicen la calle y el número de tu casa!"; "Lo hemos probado en varios routers con diferentes ubicaciones y ha clavado el resultado".
http://www.redeszone.net/2011/01/02/geolocalizacion-mediante-la-mac-address-inalambrica-direccion-mac-de-los-routers/
Puedes probar poninendo la dirección MAC de tu router en la siguiente página:
http://samy.pl/mapxss/
Quien quiera saber más puede mirar las siguientes páginas, incluyendo los comentarios que otras personas han hecho en esas páginas, son muy interesantes.
Los coches de Google Street View recopilan la dirección MAC de las WiFi domésticas
http://bandaancha.eu/articulos/coches-google-street-view-recopilan-7223
Geolocalización mediante la MAC address inalámbrica (dirección MAC de los routers)
http://www.redeszone.net/2011/01/02/geolocalizacion-mediante-la-mac-address-inalambrica-direccion-mac-de-los-routers/
AbejoSid
28/06/13, 23:25:14
Puedes probar poninendo la dirección MAC de tu router en la siguiente página:
http://samy.pl/mapxss/
Pongo la MAC y me tira error de pagina no encontrada, a lo que voy es, como puede ser preciso un método de ubicación, sobre dispositivos que pueden variar su ubicación, por ejemplo aca en Argentina los routers WiFI que entrega Fibertel, o Telecentro hay que devolverlos si uno le da de baja al servicio, y esos van a otras ubicaciones, o por ejemplo cualquier router si uno le modifica la MAC, no me termina de cerrar esa idea.....
Volviendo al post original, estaba tratando de habilitar o deshabilitar la GPS desde Tasker y no me deja, me decía que solo con CM podía hacer esto, después de probar un par de veces me dejo ponerlo dentro de la tarea, pero ni me la activa ni desactiva
¿Es necesario esperar 120 segundos para que el gps tome la ubicación? ¿no habría manera de que fuera relativamente instantáneo? Partimos de la base de que el gps ya estaba activado previamente y me tenía localizado ya antes de lanzar la tarea.
¿Es necesario esperar 120 segundos para que el gps tome la ubicación? ¿no habría manera de que fuera relativamente instantáneo? Partimos de la base de que el gps ya estaba activado previamente y me tenía localizado ya antes de lanzar la tarea.
El GPS puede estar activado, pero no necesariamente en uso. Si no hay ninguna aplicación que lo esté utilizando, permanece apagado. Si lleva un tiempo sin ser utilizado, puede tardar más tiempo en fijar la posición. También depende del dispositivo, el GPS de algunos móviles es más "vago" que otros.
Caravantes
12/08/13, 14:11:02
¿Es necesario esperar 120 segundos para que el gps tome la ubicación? ¿no habría manera de que fuera relativamente instantáneo? Partimos de la base de que el gps ya estaba activado previamente y me tenía localizado ya antes de lanzar la tarea.
Los 120 segundos que he puesto... son el tiempo máximo que le concedo a esa acción. Eso quiere decir que si en 120 segundos no ha conseguido la ubicación, yo creo que es mejor pasar página porque probablemente sea imposible conseguirla (por ejemplo, eso ocurre si estás en un garaje subterráneo). Puedes poner otro plazo de tiempo distinto, a tu gusto. Pero ten en cuenta que... Si el GPS estaba previamente activado y te tenía localizado y además estás en una zona con cobertura, logrará la ubicación en un tiempo más breve (muy pocos segundos) y la tarea continuará sin esperar a que se agote el tiempo establecido.
En tu caso, que usas la tarea para ubicar dónde dejas el coche y además tienes un perfil de bluetooth, puedes añadir otra cosa: Mientras tienes el bluetooth del coche, una tarea independiente puede ir tomando la ubicación cada x minutos, aunque no guardes el dato ni hagas nada con él; eso hará que la ubicación definitiva sea mucho más rápida, como has dicho: puesto que Android ya tiene información muy reciente sobre los satélites GPS y además tiene una "ubicación muy reciente", todo eso ayudará a mejorar la rapidez y la precisión de una nueva y definitiva ubicación.
Hoy he hecho una prueba en marcha configurado los dos a 120 igual que tu. En el momento de pulsar tenia el gps encendido y en uso, ya que car home me dice mediante gps la velocidad, adjunto captura :
http://img.tapatalk.com/d/13/08/13/yranu7e8.jpg
He pulsado el botón que lanza la tarea grabar posición donde indico en la captura de abajo, cuando ha dicho posición guardada me he fijado donde estaba y resulta que la que ha grabado ha sido esa, o sea, que hasta que no ha pasado todo el tiempo no ha grabado la posición.
http://img.tapatalk.com/d/13/08/13/te5yry7y.jpg
Ahora estoy algo confuso, creo que volveré a poner el tiempo al mínimo, ya que si lo uso es porque no conozco la zona y llevaría el gps activo.
Caravantes cual version de google maps usas para esta tarea?
no se porque desde tasker la opcion "navegar a" no me funciona, se carga el navigation a la pantalla de inicio y automáticamente se sale no me pasa si la opcion es "punto".
Pude entrar una vez de 20 que probé una asi que debe ser algo de mi cel con el navigation, no se :(
Actualisacion: Ya lo solucione al parecer era por tener el modo que no se apague la pantalla en el google maps con el App lock prtector aun asi tenia que tocar dos veces la tarea para que se abriera lo solcuione duplicando el "navegar a"en Tasker
Caravantes
01/09/13, 23:19:24
Caravantes cual version de google maps usas para esta tarea?
Ahora mismo tengo Maps versión 7.1.0 y (con Android 4.2) funciona directamente, teniendo en cuenta un detalle: puesto que el GPS y el Wifi son usados para detectar la ubicación, si alguno de ellos no estuviera activado previamente, me pide que lo active antes de ponerse a trazar la ruta. Con otras versiones anteriores de Maps/Android también funcionaba perfectamente.
¿Has comprobado que tengas correctamente escrito el nombre de la variable y que esa variable tenga las coordenadas del lugar al que te quieres dirigir?
Haz la siguiente prueba. Crea una tarea nueva con una sola acción del tipo siguiente en la que lanzas el maps-navegador hacia unas coordenadas fijas, sin variable:
- Abrir mapa [ Modo:Navegar a Dirección: Lat, Long:39.471475,-0.374344 Zoom:1 Etiqueta: Continuar Tarea Tras Error:Encendido]
Ejecuta esta tarea. Debería funcionar.
En caso afirmativo, propongo otra prueba: Añade una instrucción previa que establezca el valor de una variable, y luego la acción de navegar hacia esa variable, así:
- Establecer variable [ Nombre:%Sitio A:39.471475,-0.374344 Calcular:Apagado Añadir:Apagado ]
- Abrir mapa [ Modo:Navegar a Dirección: Lat, Long:%Sitio Zoom:1 Etiqueta: Continuar Tarea Tras Error:Encendido]
Ejecuta la tarea. Debería funcionar. En caso afirmativo no hay ningún problema con el Maps, el problema estará en otro punto de tu tarea o en el uso de la variable que estás manejando. En todo caso, podremos asesorarte mejor si nos muestras la tarea que te da problemas.
Si Caravantes me funciona las dos formas que pusiste perfecto, gracias por la molestia de tu extensa respuesta,
lo que no se abria el navigation se soluciono solo, lo que me pasaba despues era que a veces me salta "no hemos podido encontrar ninguna ruta hasta tu destino" y creo que era porque tocaba la tarea de "guardar" y el de "guiar" en el mismo cuarto y lugar al parecer asi no sabe como calcular lo que debe tener sentido por el area reducida. (podria ayudar darle unos segundos entre que se active el gps y se abra el maps?)
En el ejemplo que me pusiste tildaste: Continuar Tarea Tras Error:Encendido] en "abrir el mapa" eso para que es? ya que cuando copie tu tarea no lo tilde, es nesesario? ¿habria alguna forma que el navigator lo calcule directamente como peaton y no como auto cuando se lanza la tarea? y por ultimo
Cuando te aparece "no hemos podido encontrar ninguna ruta hasta tu destino" habra alguna forma de que si no consigue ubicar se lance la tarea snuevamente??
Saludos , y gracias
Caravantes
02/09/13, 00:30:03
"no hemos podido encontrar ninguna ruta hasta tu destino"
Eso suele ocurrir cuando estás queriendo ir hasta otro continente, y eso no puede hacerse ni en modo peatón ni tampoco conduciendo un coche. Te puse como destino una ciudad española (y de la península ibérica). Prueba con unas coordenadas que estén en tu continente.
Lo de Continuar Tarea Tras Error:Encendido sirve para que la tarea continúe si se produce algún problema como el descrito antes (continente equivocado) u otro. Tal vez prefieras que un error de ese tipo de errores detengan totalmente la tarea, tú decides.
Que yo sepa, no hay forma para que trace el camino de peatón, siempre lo hace para automóvil. Ya me había dado cuenta de este problema, pero no conozco forma de resolverlo.
[quote=Caravantes;10073625] Te puse como destino una ciudad española (y de la península ibérica). Prueba con unas coordenadas que estén en tu continente.
Si, en el ejemplo que me pasaste cambie las cordenadas por una de aca me di cuenta de ese detalle cuando intente ir de Bs As a España en auto jaja y cambie por una de aca y me funcionaron los dos perfecto.
lo que te decia que a veces me tira (muy pocas) "no hemos podido encontrar ninguna ruta hasta tu destino"es tras tocar primero "guardar posicion" y despues "posicion volver" (la puse en dos widgets), debe ser que a veces la resepcion del gps es mala y no llega a calcular porque al tocar otra vez la tarea "posicion volver" lo consigue. te pasa a veces?
Caravantes
02/09/13, 17:16:38
debe ser que a veces la resepcion del gps es mala y no llega a calcular porque al tocar otra vez la tarea "posicion volver" lo consigue. te pasa a veces?
Creo que no me ha pasado, pero coincido en tu hipótesis: lo más probable es que la primera vez no haya sido capaz de calcular la ubicación actual del aparato, y al repetir sí lo consigue.
Caravantes tuve que hacer la tarea otra vez porque sin querer se me borro y con esta nueva me pasa que el gps no me lo desactiva al terminar no entiendo que puede estar mal el punto 2 y 9 es el que guarda la variable de cómo está al inicio y lo copie igual que la anterior vez que me funciono, pongo la descripción por si alguien le encuentra dónde está el error Posición Guardar (167)
A1: Decir [ Texto:Iniciando para guardar posición Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Continuar tarea inmediatamente:Apagado ]
A2: Establecer variable [ Nombre:%gpsorigen A:%GPS Calcular:Apagado Añadir:Apagado ]
A3: Secure Settings [ Configuración:GPS Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A4: Establecer variable [ Nombre:%Sitio A:0 Calcular:Apagado Añadir:Apagado ]
A5: Obtener ubicación [ Origen:Red datos Cuenta atrás (segundos):30 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ]
A6: Establecer variable [ Nombre:%Sitio A:%LOCN Calcular:Apagado Añadir:Apagado ]
A7: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):120 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ]
A8: Establecer variable [ Nombre:%Sitio A:%LOC Calcular:Apagado Añadir:Apagado ]
A9: Secure Settings [ Configuración:GPS Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ] Si (if) [ %gpsorigen = apagado ]
A10: Decir [ Texto:Posición guardada Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Continuar tarea inmediatamente:Apagado ] Si (if) [ %Sitio !~ 0 ]
A11: Decir [ Texto:No se a podido guardar la posición Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Continuar tarea inmediatamente:Apagado ] Si (if) [ %Sitio = 0 ]
Caravantes
28/09/13, 07:31:39
A9: Secure Settings [ Configuración:GPS Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ] Si (if) [ %gpsorigen = apagado ]
Supongo que el error está en esa acción 9, concretamente en la palabra "apagado", que no es la correcta.
Justo antes de esa acción 9, inserta una acción del tipo
Notificación %gpsorigen
y así verás realmente lo que hay en esa variable %gpsorigen, que sospecho que será algo como "off" o similar.
Justo antes de esa acción 9, inserta una acción del tipo
Notificación %gpsorigen
Puse la notificación, si previamente esta el gps Apagado dice off y encendido dicen on, cambie la palabra Apagado a off pero igual sigue sin apagarlo la terminar no entiendo porque antes si me funcionaba
Gracias por la configuración... intenté hacer esto mismo pero no lograba abrir el mapa...
Tengo una duda: cuando se abre el mapa se pone en modo navegador en coche, ¿se podría poner para que te guíe directamente andando? es lo más lógico si buscas tu coche :D
yo lo uso con mi configuración de "modo coche" on y off, lanzadas al conectar/desconectar el movil al cargador o con una etiqueta NFC.
por si le sirve a alguien, cuando me meto en el coche:
al conectar el cargador (o pasar por la etiqueta NFC)
1 activa modo coche
2 dice "modo coche activado" (para confirmarme que está funcionando)
3 activa el GPS
4 abre radardroid (cada día hay más radares incluso en ciudad) :-(
al desconectar el cargador (o pasar por la etiqueta NFC)
1 dice "saliendo del modo coche"
2 desconecta el modo coche
3 - 9 guarda la variable %Sitio con la tarea de este tema
10 apaga radardroid
11 apaga el GPS
Así automáticamente cuando salgo del coche guarda la posición
Luego en el DashClock llevo un widget con la tarea "ir al coche" de este mismo tema.
Genial.
Muchas gracias y a ver si se puede hacer lo de ir andando, que realmente no cuesta nada hacerlo a mano, pero sería redondo :D
Caravantes
11/10/13, 00:07:32
cuando se abre el mapa se pone en modo navegador en coche, ¿se podría poner para que te guíe directamente andando? es lo más lógico si buscas tu coche
Eso es lo idóneo pero yo no he sido capaz de resolverlo. Incluso he mirado la configuración del MAPS, por si se pudiese dar prioridad al modo PEATÓN, para que ese sea el modo por defecto... pero no encuentro la forma de configurar eso. Y desde Tasker tampoco veo manera de especificarlo.
Eso es lo idóneo pero yo no he sido capaz de resolverlo. Incluso he mirado la configuración del MAPS, por si se pudiese dar prioridad al modo PEATÓN, para que ese sea el modo por defecto... pero no encuentro la forma de configurar eso. Y desde Tasker tampoco veo manera de especificarlo.
SOLUCIONADO!!!!
en la tarea de buscar el coche, justo antes de abrir el mapa (después de comprobar que %Sitio es distinto de 0) creas una nueva variable que (por ejemplo %Sitio1) que quede así:
%Sitio1
A
%Sitio+&mode=w
luego en vez de abrir el mapa apuntando a la variable %Sitio lo hacemos con la variable %Sitio1 y nos abre la navegación en modo "Walking" o sea a pata :platano:
"made in me" X-D
por desgracia no he encontrado como hacerlo (si a una direccion "calle,poblacion" pero no por coordenadas) tras darle vueltas lo he conseguido :besito:
Si te parece bien, puedes comprobar si te funciona y añadirlo en la tarea al primer post.
Caravantes
11/10/13, 01:22:33
%Sitio1 A %Sitio+&mode=w
He probado pero no me funciona, me da el siguiente error
Abrir mapa: LatLong incorrectas: %Sitio1
Por favor, si a tí te funciona, copia la tarea tal como la tienes, utilizando el procedimiento de exportación descrito en la página siguiente
http://www.htcmania.com/showthread.php?p=8852245
De esa forma podremos copiarla paso por paso para asegurar que lo estemos haciendo bien. Gracias.
A mi me funciona la variable que te úbica a pie es genial, la puse tal cual "establecer variable" "sitio1" A "%Sitio+&mode=w", después en abrir mapa lo remplaze a "Sitio1", gracias sowed. Aunque todavía en la tarea de buscar el gps sigue sin apagarse después de hacerlo :( ya probé con Apagado y con off y sigue igual.
EDITO: Caravante, me funciono que se apague el gps solo tuve que cambiar el "=" por el "coincide" y "apagar" por "off" podrías agregarlo en el tuto de las dos maneras
Ir al coche (20)
A1: Secure Settings [ Configuración:GPS Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings Cuenta atrás (segundos):0 ]
A2: Si (if) [ %Sitio = 0 ]
A3: Decir [ Texto:No se ha guardado posición Motor: Voz:default:default Stream:1 Tono:5 Velocidad:5 Continuar tarea inmediatamente:Apagado ]
A4: Else
A5: Establecer variable [ Nombre:%Sitio1 A:%Sitio+&mode=w Calcular:Apagado Añadir:Apagado ]
A6: Abrir mapa [ Modo:Navegar a Dirección: Lat, Long:%Sitio1 Zoom:1 Etiqueta: ]
A7: Fin si (End if)
Caravantes
22/10/13, 00:36:04
Si te parece bien, puedes comprobar si te funciona y añadirlo en la tarea al primer post.
Por fin, hoy he retomado esta tarea pendiente y he conseguido que me funcione el modo peatón, muchas gracias. Hace varios días ya había actualizado el primer post añadiendo esa mejora de forma destacada.
Caravantes
20/12/13, 01:35:46
Las tareas que publiqué al comienzo del hilo (hace bastantes meses) han evolucionado porque les he ido añadiendo mejoras y complementos. Incluso les he cambiado el nombre. Ahora tengo un proyecto llamado Ubicación que contiene un conjunto de tareas (relacionadas con la ubicación) y el nombre de todas esas tareas comienza por Ubic). Del mismo modo, las variables Globales implicadas también comienzan por %Ubic. Así es más fácil seguir la pista a las tareas y a las variables [antes me encontraba con una variable %TiempoAnterior y podía ocurrir que no me acordaba de cuál tarea la generaba ni a cual proyecto correspondía; por eso he decidido renombrar las tareas y también las variables: ahora los nombres son más largos pero lo tengo todo mejor organizado y siempre es fácil saber a qué se refiere cada cosa].
Comenzaré haciendo una descripción general de estas tareas. Las dos principales siguien siendo PosicionGuardar y PosicionVolver, pero hay otras tres tareas auxiliares que realmente funcionan como subtareas. Veamos.
UbicPosicionGuardar. Similar a la que publiqué al comienzo del hilo. Sirve para memorizar la posición en la que estamos, con el fin de regresar luego a ese punto. La mejora más relevante es que ahora nos dice el nombre del lugar (calle, número, ciudad, etc). La ubicación no se obtiene directamente sino que se hace por medio de una subtarea específica denominada UbicPosicionObtener que viene explicada más abajo.
Igualmente, para obtener el nombre del lugar se utiliza otra subtarea denominada UbicNombreSitio, también explicada luego. Ahí va la descripción.
UbicPosicionGuardar (34)
<Esta tarea obtiene la ubicación actual y la memoriza en la variable icPosi1 . Luego se podrá usar otra tarea para regresar a esta posición. La variable %test se puede poner a uno para depurar y corregir la tarea. En tal caso nos mostrará notificaciones con los datos que va obteniendo la tarea.>
A1: Establecer variable [ Nombre:%test A:0 Calcular:Apagado Añadir:Apagado ]
A2: Decir [ Texto:Iniciando para guardar posición. Motor: Voz:com.svox.pico:spa-ESP Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
A3: Establecer variable [ Nombre:icPosi1 A:0 Calcular:Apagado Añadir:Apagado ]
<Obtener la ubicación>
A4: Realizar tarea [ Nombre:UbicPosicionObtener Parar:Apagado Prioridad:10 Parámetro 1 (%par1):60 Parámetro 2 (%par2): Devolver Valor de Variable:icPosi1 ]
A5: Notificación [ Título:UbicPosi1 icPosi1 Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Comprobar si el dato obtenido parece correcto>
A6: Si (if) [ icPosi1 ~ *,* ]
<Obtener el nombre del lugar: calle, municipio, etc>
A7: Realizar tarea [ Nombre:UbicNombreSitio Parar:Apagado Prioridad:10 Parámetro 1 (%par1):icPosi1 Parámetro 2 (%par2): Devolver Valor de Variable:%nombresitio ]
A8: Decir [ Texto:Posición guardada. Motor: Voz:com.svox.pico:spa-ESP Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
<Comprobar si se ha obtenido el nombre del sitio>
A9: Si (if) [ %nombresitio !~ %* ]
A10: Notificación [ Título:Posición guardada Texto:%nombresitio
icPosi1 Icono:null Número:0 Permanente:Apagado Prioridad:3 ]
A11: Establecer variable [ Nombre:%informe A:%nombresitio
icPosi1
https://maps.google.com/maps?q=icPosi1 Calcular:Apagado Añadir:Apagado ]
A12: Decir [ Texto:%nombresitio Motor: Voz:com.svox.pico:spa-ESP Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
A13: Establecer variable [ Nombre:%informe A:%nombresitio
%informe Calcular:Apagado Añadir:Apagado ]
<Si no se ha obtenido el nombre del sitio>
A14: Else
A15: Notificación [ Título:Posición guardada Texto:icPosi1 Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %nombresitio ~ %* ]
A16: Establecer variable [ Nombre:%informe A:icPosi1
https://maps.google.com/maps?q=icPosi1 Calcular:Apagado Añadir:Apagado ]
A17: Fin si (End if)
<Utilizar el informe>
A18: Establecer variable [ Nombre:%AAinformePosicionGuardar A:%informe Calcular:Apagado Añadir:Apagado ]
<Ubicación incorrecta. coordenada incorrecta>
A19: Else
A20: Decir [ Texto:No se ha podido guardar la posición. Motor: Voz:com.svox.pico:spa-ESP Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
A21: Notificación [ Título:Posición NO guardada Texto:No se ha podido guardar la posición. Icono:null Número:0 Permanente:Apagado Prioridad:3 ]
A22: Fin si (End if)
En la acción 18 se establece el valor de una variable Global %AAinformePosicionGuardar que contendrá la información del lugar. Mientras hacéis pruebas podéis consultar eso en la pestaña de variables, pero luego es preferible eliminar esa acción y/o sustituirla por otra que haga algo más útil con esa información.
UbicPosicionVolver. Similar a la que publiqué al comienzo del hilo, sirve para regresar a la posición que habíamos guardado mediante la tarea anterior. Como mejoras interesantes, desde el primer momento nos dice el nombre del lugar al que queremos llegar (calle, número, nombre del municipio, etc), información que también es obtenida usando la subtarea UbicNombreSitio.
Para regresar, la tarea abre el navegador de Google Maps, en modo peatón para que nos vaya guiando hacia el destino. Lo del "modo peatón" es un excelente aporte del compañero Sowed (http://www.htcmania.com/showthread.php?p=10621991).
La tarea añade una floritura que ha dejado de ser práctica, y consiste en decirnos cada pocos minutos cuánta distancia nos queda para llegar al destino. Esa distancia se mide en línea recta y es poco práctica desde que Sowed descubrió el "modo peatón", que nos da indicaciones mucho mejores: nos dice con precisión razonable cuánto tiempo tardaremos en llegar (caminando) al objetivo. El cálculo de distancia entre la posición actual y la posición del destino se realiza también por medio de otra subtarea llamada UbicDistancia.
Como he dicho, en la tarea principal UbicPosicionVolver, ese cálculo de distancia se repite cada pocos minutos, y la tarea incluso nos dice si nos vamos acercando o alejando del destino. La tarea finaliza al llegar al destino o tras 30 minutos aunque no hallamos llegado.
También es posible finalizar la tarea "manualmente", y la forma de hacerlo es tan sencilla como volver a ejecutar la tarea (por ejemplo pulsando el widget otra vez): hay una variable icVolviendo que funciona como booleana (cero o uno) alternando en cada ejecución y que sirve para abortar el proceso si se la tarea es iniciada cuando ya estaba en marcha. Para que esto funcione, en las propiedades de la tarea hay que establecer "Abortar tarea existente" en el Manejo de incompatibilides.
Repito que todo esto es un poco estúpido desde que tenemos el navegador en modo peatón, que resulta más que suficiente. Por tanto podríamos prescindir de todas las acciones posteriores a la 14, que es la última realmente interesante porque nos dice el nombre del lugar al que nos dirigimos. La acción 15 y siguientes pueden ser eliminadas sin contemplaciones, y de momento las dejo como mero ejercicio de tarea Tasker. Quien quiera simplificar y elimine las acciones posteriores a la 14 también puede (luego) eliminar las acciones 8 y 9 que sirven para interrumpir el proceso cíclico. Voy a poner en color naranja todas estas acciones que ahora considero muy prescindibles, que ya no veo necesarias y que las construí antes de tener el "modo peatón".
UbicPosicionVolver (33)
Abortar Tarea Existente
<Esta tarea nos ayuda a regresar caminando hasta la ubicación memorizada en la variable icPosi1 . La variable %test se puede poner a uno para depurar y corregir la tarea. En tal caso nos mostrará notificaciones con los datos que va obteniendo la tarea>
A1: Establecer variable [ Nombre:%test A:0 Calcular:Apagado Añadir:Apagado ]
<Comprobar si NO se había memorizado una posición, a la cual regresar>
A2: Si (if) [ icPosi1 !~ *,* ]
A3: Notificación [ Título:Tarea Posicion Volver. IMPOSIBLE Texto:No se tiene ninguna posición guardada Icono:cust_warning Número:0 Permanente:Apagado Prioridad:3 ]
A4: Decir [ Texto:No podemos regresar porque no se guardó ninguna posición de referencia. Motor: Voz:com.svox.pico:spa-ESP Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
A5: Detener [ Con error:Apagado Tarea: ]
A6: Fin si (End if)
A7: Notificación [ Título:UbicPosi1 icPosi1 Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<La variable icVolviendo es boleana, puede valer 1 ó 0 alternativamente, y se utiliza para detener la tarea cuando el widget lanza la tarea por segunda vez. Esto funciona porque en las propiedades de la tarea se ha establecido el manejo de incompatibilidades para abortar la tarea existente>
A8: Establecer variable [ Nombre:icVolviendo A:1-icVolviendo Calcular:Encendido Añadir:Apagado ]
A9: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:FIN ] Si (if) [ icVolviendo = 0 ]
<Preparando para abrir el navegador de google maps con destino a la ubicación memorizada y en modo peatón>
A10: Establecer variable [ Nombre:%posi1 A:icPosi1+&mode=w Calcular:Apagado Añadir:Apagado ]
A11: Abrir mapa [ Modo:Navegar a Dirección: Lat, Long:%posi1 Zoom:1 Etiqueta: Continuar Tarea Tras Error:Encendido ]
A12: Decir [ Texto:Iniciando Tarea Posición Volver Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
<Obtener el nombre del sitio al que nos dirigimos>
A13: Realizar tarea [ Nombre:UbicNombreSitio Parar:Apagado Prioridad:10 Parámetro 1 (%par1):icPosi1 Parámetro 2 (%par2): Devolver Valor de Variable:%nombresitio ]
A14: Decir [ Texto:El objetivo está en %nombresitio. Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ] Si (if) [ %nombresitio !~ %* ]
<Guardamos el momento en el que iniciamos la tarea para controlar que la tarea no se eternice demasiado>
A15: Establecer variable [ Nombre:%crono A:%TIMES Calcular:Apagado Añadir:Apagado ]
<Ponemos a cero esta variable que luego servirá para la distancia del ciclo anterior>
A16: Establecer variable [ Nombre:%distaant A:0 Calcular:Apagado Añadir:Apagado ]
<INICIOBUCLE>
A17: Destino (de goto)
<La variable %posi2 contendrá la ubicación actual>
A18: Establecer variable [ Nombre:%posi2 A:0 Calcular:Apagado Añadir:Apagado ]
A19: Realizar tarea [ Nombre:UbicPosicionObtener Parar:Apagado Prioridad:10 Parámetro 1 (%par1):60 Parámetro 2 (%par2): Devolver Valor de Variable:%posi2 ]
A20: Notificación [ Título:posi2 %posi2 Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Comprobar si hemos obtenido una ubicación incorrecta>
A21: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:FINBUCLE ] Si (if) [ %posi2 !~ *,* ]
<Antes de calcular la distancia entre los dos puntos guardo la distancia anterior %distaant que hubiese calculado en el ciclo previo>
A22: Establecer variable [ Nombre:%distaant A:%dista Calcular:Apagado Añadir:Apagado ]
<Obtener la distancia entre la ubicación actual y la ubicación a la que nos dirigimos>
A23: Realizar tarea [ Nombre:UbicDistancia Parar:Apagado Prioridad:10 Parámetro 1 (%par1):icPosi1 Parámetro 2 (%par2):%posi2 Devolver Valor de Variable:%dista ]
A24: Notificación [ Título:dista %dista Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Comprobar si no hemos obtenido la distancia>
A25: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:FIN ] Si (if) [ %dista ~ %* ]
<Comprobar es si ya estamos muy cerca del destino>
A26: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:ACABADO ] Si (if) [ %dista < 25 ]
<si la distancia es superior a 2000 metros, sera enunciada en kilómetros.>
A27: Si (if) [ %dista > 2000 ]
A28: Establecer variable [ Nombre:%kms A:floor(%dista/1000) Calcular:Encendido Añadir:Apagado ]
A29: Decir [ Texto:Objetivo a mas de %kms kilometros. Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado Continuar Tarea Tras Error:Encendido ]
<Enunciar la distancia en metros>
A30: Else
A31: Decir [ Texto:Objetivo a %dista metros. Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado Continuar Tarea Tras Error:Encendido ]
A32: Fin si (End if)
<si tenemos una medición de distancia anterior (y también una nueva), calculamos la modificación de esa distancia en %distamod>
A33: Si (if) [ %distaant > 0 ]
A34: Establecer variable [ Nombre:%distamod A:%distaant-%dista Calcular:Encendido Añadir:Apagado ]
A35: Notificación [ Título:distamod %distamod Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<la tarea dirá si nos hemos acercado o alejado significativamente (mas de 10 metros)>
A36: Si (if) [ %distamod > 0 ]
A37: Establecer variable [ Nombre:%distamod A:0 Calcular:Encendido Añadir:Apagado ] Si (if) [ %distamod < 10 ]
A38: Decir [ Texto:Nos hemos acercado %distamod metros. Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado Continuar Tarea Tras Error:Encendido ] Si (if) [ %distamod > 0 ]
A39: Fin si (End if)
A40: Si (if) [ %distamod < 0 ]
A41: Establecer variable [ Nombre:%distamod A:0 Calcular:Encendido Añadir:Apagado ] Si (if) [ %distamod > -10 ]
A42: Decir [ Texto:Nos hemos alejado -%distamod metros. Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado Continuar Tarea Tras Error:Encendido ] Si (if) [ %distamod < 0 ]
A43: Fin si (End if)
A44: Decir [ Texto:Seguimos igual, mas o menos Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado Continuar Tarea Tras Error:Encendido ] Si (if) [ %distamod = 0 ]
A45: Fin si (End if)
<FINBUCLE>
A46: Destino (de goto)
<Comprobar si todavía estamos lejos del destino>
A47: Si (if) [ %dista > 50 ]
<si ha pasado demasiado tiempo (30 minutos) desde que comenzó la tarea, procede finalizar la tarea>
A48: Si (if) [ %TIMES-%crono > 60*30 ]
A49: Decir [ Texto:Tarea Posicion Volver. Abortando la búsqueda por agotamiento de tiempo. Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
A50: Notificación sonora [ Título:Abortando Tarea Posic. Volver. Texto:Abortando la búsqueda por agotamiento de tiempo. Icono:null Número:0 Archivo de sonido: Prioridad:3 ]
A51: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:FIN ]
A52: Fin si (End if)
<esperar un poco antes de volver a ubicar y recalcular>
A53: Esperar [ MS:0 Segundos:0 Minutos:2 Horas:0 Días:0 ]
A54: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:INICIOBUCLE ]
A55: Fin si (End if)
<ACABADO>
A56: Destino (de goto)
<Se supone que ya estamos muy muy cerca del destino>
A57: Decir [ Texto:Tarea Posicion Volver. Ya estamos muy cerca, a unos %dista metros. Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
<FIN>
A58: Destino (de goto)
<Acciones finales para rematar la tarea>
A59: Matar aplicación [ Aplicación:Maps Usar Root:Encendido Continuar Tarea Tras Error:Encendido ]
A60: Establecer variable [ Nombre:icVolviendo A:0 Calcular:Encendido Añadir:Apagado ]
A61: Decir [ Texto:Tarea Posición Volver finalizada Motor: Voz:default:default Stream:3 Tono:5 Velocidad:5 Respect Audio Focus:Apagado Continuar tarea inmediatamente:Apagado ]
Lo que queda son las tres subtareas auxiliares.
Ya he explicado las ventajas de utilizar subtareas en este otro post: http://www.htcmania.com/showthread.php?t=703855
Además os digo que podéis utilizar las subtareas aunque no utilicéis las dos tareas principales de este post: las subtareas os pueden servir para otras cosas.
Dos de estas subtareas las podéis desargar en el siguiente post: http://www.htcmania.com/showpost.php?p=11622033
La subtarea UbicPosiciónObtener sirve para obtener la ubicación acual, del punto en el que estemos en ese momento. Para realizarla me he basado en trabajos previos de los compañeros Vitorino (http://www.htcmania.com/showpost.php?p=3053413) y Malkair (http://www.htcmania.com/showpost.php?p=10623478). Tiene de particular que trata de obtener la ubicación por GPS y también por RED, y luego elige el mejor dato de esos dos.
UbicPosicionObtener (122)
<Esta tarea obtiene la ubicación y recibe como parametro el tiempo (en segundos) que se empleara en ello. Para hacer pruebas, se puede utilizar la tarea directamente sin parámetro y en tal caso se utilizará un tiempo prefijado.>
A1: Si (if) [ %par1 ~ %* ]
A2: Establecer variable [ Nombre:%tiempoubicacion A:60 Calcular:Encendido Añadir:Apagado ]
<Esta variable se utiliza para mostrar el resultado cuando la tarea se usa directamente y no como una subtarea>
A3: Establecer variable [ Nombre:%test A:1 Calcular:Apagado Añadir:Apagado ]
A4: Fin si (End if)
A5: Establecer variable [ Nombre:%tiempoubicacion A:%par1 Calcular:Encendido Añadir:Apagado ] Si (if) [ %par1 > 1 ]
A6: Notificación [ Título:Tiempoubicacion %tiempoubicacion Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Iniciamos el proceso para obtener la ubicación y la precisión de gps>
A7: Establecer variable [ Nombre:%gpsinicial A:%GPS Calcular:Apagado Añadir:Apagado ]
A8: GPS [ Establecer:Encendido ] Si (if) [ %GPS ~ off ]
<Comprobamos si el gps está encendido>
A9: Si (if) [ %GPS ~ on ]
<Si se va a usar el GPS hay que dividir el tiempo por 2 y usar cada mitad en un sistema de ubicación: GPS /Red>
A10: Establecer variable [ Nombre:%tiempoubicacion A:%tiempoubicacion /2 Calcular:Encendido Añadir:Apagado ]
A11: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):%tiempoubicacion Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ]
A12: Establecer variable [ Nombre:%posiciongps A:%LOC Calcular:Apagado Añadir:Apagado ]
<Comprobamos si hemos obtenido una posición válida: dos coordenadas separadas por una coma>
A13: Si (if) [ %posiciongps ~ *,* ]
A14: Establecer variable [ Nombre:%precisiongps A:%LOCACC Calcular:Apagado Añadir:Apagado ]
A15: Else
A16: Establecer variable [ Nombre:%posiciongps A:0 Calcular:Apagado Añadir:Apagado ]
A17: Fin si (End if)
A18: GPS [ Establecer:Apagado ] Si (if) [ %gpsinicial ~ off ]
<GPS no se ha encendido>
A19: Else
A20: Establecer variable [ Nombre:%posiciongps A:0 Calcular:Apagado Añadir:Apagado ]
A21: Fin si (End if)
<Si la posición obtenida no ha sido validada bajamos la precisión al mínimo>
A22: Establecer variable [ Nombre:%precisiongps A:99999 Calcular:Encendido Añadir:Apagado ] Si (if) [ %posiciongps ~ 0 ]
A23: Notificación [ Título:posiciongps %posiciongps Texto:precisiongps %precisiongps Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Iniciamos el proceso para obtener la ubicación y la precisión por red>
A24: Obtener ubicación [ Origen:Red datos Cuenta atrás (segundos):%tiempoubicacion Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ]
A25: Establecer variable [ Nombre:%posicionred A:%LOCN Calcular:Apagado Añadir:Apagado ]
<Comprobamos si hemos obtenido una posición válida: dos coordenadas separadas por una coma>
A26: Si (if) [ %posicionred ~ *,* ]
A27: Establecer variable [ Nombre:%precisionred A:%LOCNACC Calcular:Apagado Añadir:Apagado ]
A28: Else
A29: Establecer variable [ Nombre:%posicionred A:0 Calcular:Apagado Añadir:Apagado ]
A30: Establecer variable [ Nombre:%precisionred A:99999 Calcular:Encendido Añadir:Apagado ]
A31: Fin si (End if)
A32: Notificación [ Título:posicionred %posicionred Texto:precisionred %precisionred Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Comprobando las variables de precisión sabremos cuál método de ubicación ha sido más eficaz y guardaremos la posicion obtenida con ese método en la variable %posición>
A33: Si (if) [ %precisiongps < %precisionred ]
A34: Establecer variable [ Nombre:%posicion A:%posiciongps Calcular:Apagado Añadir:Apagado ]
A35: Else
A36: Establecer variable [ Nombre:%posicion A:%posicionred Calcular:Apagado Añadir:Apagado ]
A37: Fin si (End if)
<Si hemos obtenido una posición válida devolvemos ese valor a la tarea principal>
A38: Si (if) [ %posicion !~ 0 ]
A39: Devolver [ Valor:%posicion Parar:Apagado ]
A40: Notificación [ Título:Ubicacion %posicion Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
A41: Else
A42: Notificación [ Título:Fallo Total. Texto:No se ha podido obtener la posición por ninguno de los dos métodos Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
A43: Flash [ Texto:Ubicacion %posicion Largo:Encendido ] Si (if) [ %test ~ 1 ]
A44: Fin si (End if)
La subtarea UbicNombreSitio utiliza una base de datos de Google para obtener el nombre de un lugar, en función de sus coordenadas de ubicación (que pueden haberse obtenido -por ejemplo- utilizando la subtarea anterior). La información indica el nombre de la calle, municipio, código postal, etc,. Esta tarea ya la publiqué hace un par de meses en http://www.htcmania.com/showthread.php?t=703855.
UbicNombreSitio (29)
<Esta tarea obtiene el nombre de un lugar a partir de las coordenadas geográficas que son recibidas como parámetro. Para hacer pruebas, se puede utilizar la tarea directamente sin parámetro y en tal caso se utilizarán unas coordenadas de Madrid>
A1: Si (if) [ %par1 !~ *,* ]
A2: Establecer variable [ Nombre:%test A:1 Calcular:Apagado Añadir:Apagado ]
A3: Establecer variable [ Nombre:%par1 A:40.45,-3.70 Calcular:Apagado Añadir:Apagado ]
A4: Fin si (End if)
<Consultamos la base de datos de google>
A5: HTTP Get [ Servidor:Puerto:maps.google.com/maps/api/geocode/xml?sensor=true&latlng=%par1 Ruta: Atributos: Cookies: Cuenta atrás:10 Tipo Mime:text/xml Archivo de salida: Continuar Tarea Tras Error:Encendido ]
A6: Establecer variable [ Nombre:%nombresitio A:%HTTPD Calcular:Apagado Añadir:Apagado ]
<Comprobamos el dato obtenido>
A7: Si (if) [ %nombresitio ~ */formatted_address* ]
<Ajustamos el dato obtenido>
A8: Separar variable [ Nombre:%nombresitio Separador:</formatted_address> Eliminar base:Apagado ]
A9: Separar variable [ Nombre:%nombresitio1 Separador:<formatted_address> Eliminar base:Apagado ]
A10: Establecer variable [ Nombre:%nombresitio A:%nombresitio12 Calcular:Apagado Añadir:Apagado ]
A11: Else
<Dato inválido>
A12: Limpiar variable [ Nombre:%nombresitio Coincidencia de Patrón:Apagado ]
A13: Fin si (End if)
A14: Devolver [ Valor:%nombresitio Parar:Apagado ]
<Se muestra el resultado en un flash pero sólo si estamos haciendo pruebas>
A15: Flash [ Texto:%nombresitio Largo:Encendido ] Si (if) [ %test ~ 1 ]
La subtarea UbicDistancia recibe como parámetros dos ubicaciones (coordenadas obtenidas por GPS o similar) y calcula la distancia en metros que las separa en línea recta.
UbicDistancia (67)
<Esta tarea obtiene la distancia en metros que separa dos ubicaciones que son recibidas como parámetros. Para hacer pruebas, se puede utilizar la tarea directamente sin parámetros y en tal caso se utilizarán dos ubicaciones de Madrid>
A1: Destino (de goto)
<Para hacer pruebas, se puede utilizar la tarea directamente sin parámetros y en tal caso se utilizarán dos ubicaciones de Madrid>
A2: Si (if) [ %par1 !~ *,* ]
<Población de Barajas, Madrid>
A3: Establecer variable [ Nombre:%par1 A:40.4653,-3.5948 Calcular:Apagado Añadir:Apagado ]
<Población de Getafe, Madrid. A unos 23400 metros de Barajas>
A4: Establecer variable [ Nombre:%par2 A:40.3052,-3.7317 Calcular:Apagado Añadir:Apagado ]
<Esta variable se utiliza para mostrar el resultado cuando la tarea se usa directamente y no como una subtarea>
A5: Establecer variable [ Nombre:%test A:1 Calcular:Apagado Añadir:Apagado ]
A6: Fin si (End if)
<Las coordenadas de ubicación vienen en grados. Convertiremos la latitud y la longitud (que viene grados) a metros, multiplicando por este factor de conversión.>
A7: Establecer variable [ Nombre:%conversion A:111111 Calcular:Encendido Añadir:Apagado ]
<Separamos en dos variables la latitud y la longitud del primer punto y las convertimos a metros>
A8: Separar variable [ Nombre:%par1 Separador:, Eliminar base:Apagado ]
A9: Establecer variable [ Nombre:%lat1 A:floor(%par11*%conversion) Calcular:Encendido Añadir:Apagado ]
A10: Establecer variable [ Nombre:%lon1 A:floor(%par12*%conversion) Calcular:Encendido Añadir:Apagado ]
<Separamos en dos variables la latitud y la longitud del segundo punto y las convertimos a metros>
A11: Separar variable [ Nombre:%par2 Separador:, Eliminar base:Apagado ]
A12: Establecer variable [ Nombre:%lat2 A:floor(%par21*%conversion) Calcular:Encendido Añadir:Apagado ]
A13: Establecer variable [ Nombre:%lon2 A:floor(%par22*%conversion) Calcular:Encendido Añadir:Apagado ]
<Calculamos la diferencia de latitudes qué es la separación vertical que veríamos en un mapa>
A14: Establecer variable [ Nombre:%distalat A:%lat1-%lat2 Calcular:Encendido Añadir:Apagado ]
<Calculamos la diferencia de longitud es que sería la separación horizontal que veríamos en un mapa>
A15: Establecer variable [ Nombre:%distalon A:%lon1-%lon2 Calcular:Encendido Añadir:Apagado ]
<Utilizamos el teorema de Pitágoras para obtener la distancia real entre los dos puntos, en metros>
A16: Establecer variable [ Nombre:%dista A:floor(sqrt(%distalat*%distalat +%distalon*%distalon)) Calcular:Encendido Añadir:Apagado ]
<Devolvemos el valor obtenido a la tarea principal>
A17: Devolver [ Valor:%dista Parar:Apagado ]
<Se muestra el resultado en un flash pero sólo si estamos haciendo pruebas>
A18: Flash [ Texto:%dista metros Largo:Encendido ] Si (if) [ %test ~ 1 ]
Probe la nueva viersion y funciona perfecto los únicos problemas que tuve fue primero darme cuenta que en la tarea que baje en xml "ubicación obtener" no usabas el segure setting para encender el gps, y lo segundo es que no se porque tuve que pone en "ubicación obtener" una acción de tiempo después de encender el gps (con 100 milésimas alcanza) sino tras encender el gps tomaba como que el gps estaba apagado y sólo ejecutaba toda la parte de obtener ubicación por red y no por gps. Pero todo solucionado
Caravantes otra pregunta estoy usando tu tarea "posición guardar" para que me diga la úbicacion con las llamadas, la tengo puesto que se ejecute "posición guardar" en las tareas de entrada de llamada Entrante y saliente y en salida inserto "%UbicPosi1" y "nombresitio" en el calendario mi pregunta es si uno llama 10 segundos y corta hasta que no se termina la tarea de entrada no se ejecuta las de salida? Mi miedo es cortar antes que ubique la posición y que ya lo meta en el calendario incompleto, y la otra cuestión es "nombresitio" no es una variable global para que funcione en otra tarea debería cambiar a mayúscula en alguna acción de "posición guardar,", no?
EDITO: creo que encontré a solución usando" %AainformePosicionGuardar" esa variable contiene tanto "UbicPosi1" como "nombresitio"??
Caravantes
25/12/13, 18:42:08
hasta que no se termina la tarea de entrada no se ejecuta las de salida?
No, eso no es así. La tarea de entrada y la de salida pueden estar funcionando al mismo tiempo sin ningún problema y por eso hay muchos perfiles (sobre todo los que añaden una espera o demora) en los cuales la tarea de entrada comienza deteniendo la tarea de salida y la tarea de salida comienza deteniendo la tarea de entrada.
Para ese problema que comentas es más relevante haber establecido bien las prioridades de las tareas. Tasker siempre ejecuta primero cualquier tarea que tiene mayor prioridad (todas sus acciones) y mientras tanto mantiene en espera las tareas con prioridad inferior, dando igual que sean tareas principales o subtareas. Si hubiera varias tareas con la misma prioridad, las ejecuta en paralelo, alternando una acción de cada una, por turnos. Es por eso que hay que ser cuidadoso a la hora de asignrar prioridades.
Por ejemplo, si entiendo bien el equema que tienes, la tarea principal (perfil telefónico) probablemente tenga una prioridad 5 (establecida en las propiedades del perfil); esa tarea puede incluir una acción EJECUTAR-TAREA que invoca a una subtarea (Posición-Guardar) y en esa acción se debe de otorgar a la subtarea una prioridad mayor (6) para que la tarea principal permanezca a la espera mientras se ejecuta la subtarea. A su vez, la tarea invocada (Posición-Guardar) puede invocar a otra subtarea de segundo nivel (Obtener-Posición) a la que le debe otorgar prioridad mayor (7) para que esta subtarea de segundo nivel sea la primera en completarse.
EDITO: creo que encontré a solución usando" %AainformePosicionGuardar" esa variable contiene tanto "UbicPosi1" como "nombresitio"??
No creo que eso sea buena idea. Si no has organizado bien las prioridades de las tareas es muy posible que las tareas principales acaben antes de que termien las subtareas y entonces obtendrán de las las variables globales (%AainformePosicionGuardar y UbicPosi1) valores desactualizados, generados en ejecuciones anteriores de las subtareas. Resumiendo: aunque utilices variables globales es importante asegurarse de que las subtareas han actualizado las variables globables, y eso solo se consigue manejando las prioridades. Pero si manejas correctamente las prioridades creo que ya no vas a necesitar variables globales.
Último comentario: la variable %AainformePosicionGuardar solo la añadí para que vosotros pudierais ver (en la solapa de variables) el resultado del proceso, sobre todo cuando estamos probando la tarea aisladamente, sin enlazarla con otras. Una vez que habéis comprobado que la tarea funciona bien, y la habéis encadenado, entonces es preferible eliminar esa variable y también la acción de la tarea que la genera.
Entre las tareas y subtareas que he publicado por aquí recientemente, la única variable global verdaderamente necesaria es icPosi1, que está generada por la tarea POSICIÓN-GURDAR. El motivo de que esta variable sea Global es que hay que mantenerla memorizada (guardada) para volver a esa ubicación cuando se utilice la tarea POSICIÓN-VOLVER, tarea cuyo objetivo es únicamente regresar a la ubicación en la que estábamos cuando usamos la tarea POSICION-GUARDAR.
Deduzco que estás utilizando la tarea POSICIÓN-GUARDAR para memorizar la ubicación del punto en el que recibes llamadas telefónicas. Ten en cuenta que si sales del hotel o del coche y usas la tarea POSICIÓN GUARDAR para memorizar esa ubicación, cuando recibas una llamada telefónica habrás perdido la referencia del lugar (hotel/coche) y ya no podrás volver a ese sitio, pues acabarás volviendo al lugar en el que recibiste la llamada telefónica.
Creo que deberías hacerte otra tarea distinta para ubicar las llamadas. Puede ser una tarea muy similar a POSICIÓN GUARDAR, pero lo más importante es que no utilice la misma variable global icPosi1; de hecho yo te sugiero que esa nueva tarea no use ninguna variable global y devuelva la información de ubicación mediante el procedimiento habitual por el que las subtareas devuelven información a las tareas principales.
Ahí en las tareas de entrada de llamada Entrante y saliente hice una tarea similar a "ubicación guardar" solo que cambie todas las variables %UbicPosi1 por otra variable %llamadaPosi1 y le aumente la prioridad, pero sigo teniendo problemas intentando insertar %nombresitio al calendario,(la tarea de calendario está en tarea de salida) si lo pongo así en minúscula queda %nombresitio en el calendario, pero no me pasa con %llamadaPosi1 que si queda las coordenadas, estoy con tantas subtareas que ya me perdí y no se que poner para que quede además de las coordenadas el nombre de la calle en la tarea de insertar calendario. Otra duda es las variables con minúsculas sirven solo para la misma tarea, ya sea de entrada y salida o solo de una de ellas? Pongamos le qué armó la variable %hola en entrada si la uso en salida funcionaria?
ruco1980
26/12/13, 09:55:53
Ahí en las tareas de entrada de llamada Entrante y saliente hice una tarea similar a "ubicación guardar" solo que cambie todas las variables %UbicPosi1 por otra variable %llamadaPosi1 y le aumente la prioridad, pero sigo teniendo problemas intentando insertar %nombresitio al calendario,(la tarea de calendario está en tarea de salida) si lo pongo así en minúscula queda %nombresitio en el calendario, pero no me pasa con %llamadaPosi1 que si queda las coordenadas, estoy con tantas subtareas que ya me perdí y no se que poner para que quede además de las coordenadas el nombre de la calle en la tarea de insertar calendario. Otra duda es las variables con minúsculas sirven solo para la misma tarea, ya sea de entrada y salida o solo de una de ellas? Pongamos le qué armó la variable %hola en entrada si la uso en salida funcionaria?
Hola!! Yo tengo más o menos las mismas dudas...a mi sí que me introduce la variable %nombresitio en el calendario, porque la tengo como una tarea de entrada...no sé como añadir una tarea de salida en los perfiles de la llamda, sólo he conseguido hacerlo en el perfil de contexto de estado, llamada saliente...donde la tarea de entrada realiza las subtareas UbicPosicionObtener y UbicNombreSitio...después la tarea de salida me realiza las acciones de insertar en calendario y enviar un mail a mi cuneta de evernote...
Pero en los perfiles de llamada perdida (perfil de evento) y en el de entrante (perfil de evento de teléfono descolgado + estado de llamada entrante) no soy capaz de añadir una tarea de salida y no comprendo por qué....ahí lo que hago es realizar todas las acciones seguidas en la tarea de entrada y no tengo problemas...
A mi también se me plantean las dudas de las variables locales en minúsculas..
Yo cuandoutilizo el plugin de email me pro, nosé si es que hay algo que tengo mal configurado, pero si en el cuerpo del mensaje pongo las variables %posicion o %nombresitio no me las reproduce...en cambio si, enlas tareas principales añado la acción establecer variable %Posicion A %posicion péj. (igual con%nombresitio), entonces en el cuerpo del mensaje a enviar añado la variable global con la letra mayúscula y me envía los datos sin problemas...
Como bien expresa Caravantes, hay que huir de las variables globales, para no tener un lío de variables, pero esta es la única manera que yo he encontrado de que me envíe los datos correctamente...quizás tengo algo mal configurado en el plugin de email me pro...también me pasa con la tarea de informe meteorológico....la variable %result no me aparece...pero la golbal %AaInformeMeteorlogico no tengo problemas... A ver si Caravantes nos despeja las dudas porque seguro que es alguna tontería que estamos haciendo mal....
Yo ya he modificado laprioridad de las tareas...pero sigo teniendo elproblema con la subtarea de ubicar el nombre del sitio según las coordenadas...no sé si es que a veces no obtiene de manera correcta las coordenadas ni por gps ni por red...y entonces utiliza la posición que tiene memorizada anteriormente en la variable...lo he probado incluso limpinado la variable y nada...llevo varios días peleando con esto jejej y lo único que me falta es que las tareas de obtener la posición por coordenadas y luego el nombre del sitio con ellas me funcionen correctamente, ya que casi siempre me da la posición obtenida anteoriomente...
Creo que hay conceptos de parámetro1, etc....que se me escapan y no comprendo y por eso me salen mal las tareas...
Pej...yo hago lo siguiente:
Registrar llamadas entrantes (84)
<Al realizar esta subtarea nos calcula la ubicación por GPS o red y se obtienen las coordenadas más precisas de ambos métodos>
A1: Realizar tarea [ Nombre:UbicPosicionObtener Parar:Apagado Prioridad:10 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable:%posicion ]
<Esta tarea obtiene el nombre de un lugar a partir de las coordenadas geográficas que son recibidas como parámetro. >
A2: Realizar tarea [ Nombre:UbicNombreSitio Parar:Apagado Prioridad:9 Parámetro 1 (%par1):%posicion Parámetro 2 (%par2): Devolver Valor de Variable:%nombresitio ]
<Insertamos todos los datos del Rgto. de la llamada en el calendario de gmail como un evento.>
A3: Insertar en calendario [ En / Durante (minutos): Calendario:Google:
[email protected] Título:Llamada entrante de %CNAME Descripción:Número %CNUM Ubicación:%nombresitio Disponible:Apagado Todo el día:Apagado Continuar Tarea Tras Error:Encendido ]
A4: Realizar tarea [ Nombre:EmailEvernote llamadas ENTRANTES Parar:Apagado Prioridad:7 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: ]
Yo realizo la primera tarea con prioridad 10 y le dgo que devuelva el valor de la variable %posicion (las coordenadas del lugar)...y luego en la siguiente acción le digo que utilice como valor de %par1 ese valor de %posicion y me devuelva el valor de la variable %nombresitio (el nombre del lugar)...estos pasos son los que desconozco si están correctamente...
Realizándolo así la ubicación %nombresitio se me reproduce bien en el calendario (salvando los problemas que he comentado antes de que me da el resultado de la ubicación memorizada y no la correcta), pero sí que me da un valor y no %nombresitio sin transcribirse...
En la última tarea de enviar el mail a evernote se me reproduce porque en la tarea principal UbicNombreSitio tengo una última acción de establecer variable %Posicion A %posicion para convertirla a variable global y en email me pro pongo en el cuerpo del mensaje %Posicion...si pongo %posicion no me transcribe los datos....vamos que igual la estoy liando parda con tanta variable global...por eso me interesa mucho la opinión de Caravantes de todo esto.....
No es que me interese mucho todo este registro de llamadas en calendario y en evernote etc....pero me parecen ejercicios intersantes para transcribir las tareas y aprender más sobre las variables, etc...y es la única forma que tengo de ir aprendiendo....pero es que llevo días peleando con UbicPosicionObtener y UbicNombreSitio de las tareas que colgó Caravantes jejej
Al hilo de todo esto, y este último comentario va para Caravantes...la tarea de UbicNombreSitio que hay colgada para descargar consta de 15 acciones...y la de este post consta de una acción más al final antes de devolver el valor de la variable %nombresitio que se trata de la acción "Buscar y Reemplazar Contenido de Variable", %nombresitio Buscar:, Spain....que entiendo que es para que busque el valor que hemos obtenido nuevo, si pertenece a una dirección en España y que lo reemplace por el anterior que teníamos?
Perdón por el rollazo pero es que ya no sé qué más probar...
1 saludo a todos!
Caravantes
27/12/13, 01:19:05
estoy con tantas subtareas que ya me perdí
Eso no es admisible. Yo manejo bien las tareas y las subtareas y las pongo por si a otras personas les sirven para aprender. Pero si hay alguien que es incapaz de mantener eso organizado y bien entendido, entonces sería mejor que esa persona no use tales tareas y subtareas porque solo le está ocasionando confusión.
Si te has perdido y quieres recuperar el control puedes hacerte un esquema. Por ejemplo, para cada tarea principal que use alguna subtarea, cojes un papel y le pones el encabezado de la tarea principal, y más abajo vas añadiendo los nombres de las subtareas correspondientes situandolas un poco más a la derecha (), y añade también los nombres de las subtareas de las subtareas (todavía más a la derecha), especificando cuáles datos recibe cada subtarea (como parámetros) y cuál dato devuelve, y añadiendo también si esa subtarea establece alguna variable Global. Algo así:
- UbicPosiciónVolver (tarea principal)
- UbicNombreSitio (Recibe la ubicación Posi1 y devuelve el nombre de ese sitio)
- UbicPosicionObtener (No recibe nada, devuelve las coordenadas de ubicación actual)
- Delta (no recibe ni devuelve nada, establece la variable global %FechaUno, esta subtarea es un ejemplo de subtarea de segundo nivel, no es real)
- UbicDistancia (recibe dos coordenadas de lugares y devuelve la distancia que las separa, en metros)
De esta forma puedes controlar la tarea principal porque tienes a la vista todas su subtareas y el orden en que se ejecutan esas subtareas, y también puedes ver el flujo de datos entre unas y otras.
sigo teniendo problemas intentando insertar %nombresitio al calendario,(la tarea de calendario está en tarea de salida) si lo pongo así en minúscula queda %nombresitio en el calendario, pero no me pasa con %llamadaPosi1 que si queda las coordenadas
Creo que %llamadaPosi1 te funciona solo porque le has puesto una letra mayúscula y eso convierte esa variable en Global, que es como matar moscas a cañonazos. Puedes aplicar ese mismo truco a %Nombresitio (ponerle una letra mayúscula en todas las apariciones de esa variable, en todas la tareas), aunque esa no es la forma correcta de resolver el problema. Lo idóneo es que las tareas y subtareas se transmitan información de ida y vuelta, como se simula en el esquema que he puesto antes. Y si eso está bien planteado la subtarea NombreSitio debe devolver el nombre a la tarea principal, que debe recogerlo en la variable correspondiente (%nombresitio, por ejemplo). Todo eso se hace con la acción REALIZAR TAREA y con la acción DEVOLVER, tal y como he explicado detalladamente en este otro post:
Subtareas y tareas principales. Coordinación entre ellas. http://www.htcmania.com/showthread.php?t=744076
Pongamos le qué armó la variable %hola en entrada si la uso en salida funcionaria?
No, no funcionaría. Las variables locales solo funcionan dentro de SU PROPIA TAREA. Ni tarea de entrada ni subtarea ni nada. Solo SU PROPIA TAREA.
Juss, esa pregunta me parece un poquito descarada. Casi tardas menos en probarlo por ti mismo que lo que tardamos tu y yo en escribir la pregunta y la respuesta. Además es una pregunta muy elemental que debería tener clara cualquier persona que haya leído la lección 2 http://www.htcmania.com/showthread.php?p=7990372
Si andamos armando subtareas deberíamos tener sobradamente claras esas ideas básicas de las primeras lecciones. No entender bien esos conceptos básicos fácilmente provocará que una estructura compleja funcione mal, como parece que te está sucediendo. Así pues te sugiero afianzar esos conocimientos básicos para tratar de minimizar los tropiezos.
P.S.: Algunas cosas de este post también pueden servir al compañero Ruco, al que contestaré de forma más amplia y concreta mañana (o cuando pueda) hoy no tengo más tiempo, lo siento.
Caravantes
27/12/13, 17:43:20
en los perfiles de llamada perdida (perfil de evento) y en el de entrante (perfil de evento de teléfono descolgado + estado de llamada entrante) no soy capaz de añadir una tarea de salida y no comprendo por qué
Los perfiles que combinan un contexto de evento con un contexto (o varios) de estado... se comportan como perfiles de evento. Esto significa que el perfil se activa únicamente durante un instante, el momento en el que se produce el evento del contexto (siempre que en ese instante estén activados los otros contextos de estado que pueda tener ese perfil). Puesto que el perfil de evento se activa solo durante un instante, no hay caso para poner una tarea de salida porque no tiene sentido que las tareas de entrada y salida se inicien casi en simultáneo (la tarea de salida comenzaría a ejecutarse incluso antes de que la tarea de entrada haya finalizado). Todo esto está ampliamente explicado y detallado en la lección 1
http://www.htcmania.com/showthread.php?p=9017575
Y repito el consejo de ayer: si no domináis estos conceptos básicos es normal que vuestras tareas y perfiles fallen; eso es tolerable y comprensible para alguien que solo necesita dos perfiles muy sencillos; pero no es aceptable para quien está armando estructuras complejas como las que habéis mencionado (Juss y Ruco). Los que hacéis prácticas de tercer grado deberíais de repasaros las lecciones básicas porque esos conceptos son imprescindibles para lo que estáis haciendo...
El perfil de llamada perdida está claro que no necesita tarea de salida. Y respecto al perfil de llamada entrante recibida... precisamente fue Jusss quien publicó una buena estrategia con dos perfiles que logra resolver ese problema.
http://www.htcmania.com/showthread.php?p=11656802
cuandoutilizo el plugin de email me pro, nosé si es que hay algo que tengo mal configurado, pero si en el cuerpo del mensaje pongo las variables %posicion o %nombresitio no me las reproduce
Ahí va un consejo que también hago extensible para Jusss. Si utilizas una variable y ves que no tiene nada (pues aparece el nombre de la propia variable, como %nombresitio), lo que a mí me parece adecuado es algo como lo siguiente:
Insertar una acción anterior para hacer una notificación que muestre el contenido de esa variable, añadiendo algunas señales para que luego puedas saber a qué corresponde esa notificación. Yo pondría lo siguiente, por ejemplo:
- Notificación "TpLLentrante. PrevioEMP. %TIME"; "nombresitio %nombresitio"
Eso viene a significar lo siguiente. En la cabecera de la notificación: TareaprincipaldeLLamadaentrante. Esta notificación es previa a la acción EmailMePro. En el cuerpo añado el nombre de la variable y que muestre su contenido.
Luego hay que ir a la parte previa de la (misma) tarea donde se ha establecido o modificado esa variable. Si esa información ha sido generada por una subtarea, busca la acción REALIZAR TAREA y tras ella añades otra
- Notificación "TpLLentrante. PostRT. %TIME"; "nombresitio %nombresitio" (Post Realizar Tarea).
Luego abres la subtarea que genera esa información, vas a la parte del final, por ahí debería de haber una acción DEVOLVER que devuelve la información a la tarea principal; justo antes de esa acción procede añadir
- Notificación "StUns. PrevioDevolver. %TIME"; "resultado %resultado" (Subtarea UbicanciónNombreSitio. Previo a la acción Devolver). Hay que cuidar de poner el nombre de la variable en la subtarea, puede que no sea el mismo nombre de variable que en la tarea principal.
Sales de Tasker y vuelves a entrar para que la tarea principal pueda usar la subtarea actualizada (en http://www.htcmania.com/showthread.php?p=11710616 se explica el motivo).
Lanzas la tarea y miras las notificaciones para ver dónde falla. Si la subtarea trabaja bien y la tarea principal no recibe la información, vuelve a comprobar la configuración de las acciones DEVOLVER y REALIZAR TAREA que son las encargadas de devolver y recoger esa información, quizá escribiste mal los nombres de variables. Si los nombres están bien puede que el problema sea con las prioridades de las tareas, dale a la subtarea una prioridad máxima en REALIZAR TAREA, y vuelve a probar. Ya no se me ocurren más posibles problemas, así que...
Si todavía no funciona, haz en el foro una nueva consulta explicando el problema y copiando las descripciones exportadas de las tareas.
En esa página que habla sobre subtareas (http://www.htcmania.com/showthread.php?p=11710616) hay un ejemplo muy sencillo de tarea principal y subtarea, con 5 acciones en total. Tomaros la molestia de construirlo en vuestro dispositivo para aseguraros de que entendéis cómo debe viajar la información (de ida y vuelta) sin usar variables Globales.
Ruco, en ese ejercicio, en la tarea principal añade una cuarta acción que envíe el resultado por correo electrónico con el subject %uno y con el cuerpo del mensaje %dos. Si no te funciona consulta en ese mismo hilo y veremos qué estás haciendo mal. Si eso te funciona, trata de aplicar los mismos planteamientos a tus otras tareas.
Yo realizo la primera tarea con prioridad 10 y le dgo que devuelva el valor de la variable %posicion (las coordenadas del lugar)...y luego en la siguiente acción le digo que utilice como valor de %par1 ese valor de %posicion y me devuelva el valor de la variable %nombresitio (el nombre del lugar)...estos pasos son los que desconozco si están correctamente...
Eso está bien planteado. Yo pondría prioridad 10 en la segunda acción, en lugar de 9 mira este post que acabo de escribir http://www.htcmania.com/showthread.php?p=11796544).
Luego, mientras haces pruebas añadiría un par de acciones más. Tras la primera acción REALIZAR TAREA yo añadiría una notificacion para ver el contenido de la variable %posicion. Tras la segunda acción REALIZAR TAREA, añadiría otra notificación para ver el contenido de %nombresitio . Otra posibilidad es usar variables Globales (%Posicion y %Nombresitio) mientras hago las pruebas, porque de esa forma puedo consultar sus valores en la pestaña de variables (tras cada ejecución). Luego, cuando la tarea ya esté probada y funcione, cambias las minúsculas por mayúsculas y vas a la pestaña de variables para borrar las variables globales que ya no necesitas vigilar.
Vaya, no me había fijado de que la tarea que copié aquí tenía una acción más. Estoy actualizando mis tareas continuamente, añadiendo pequeñas mejoras. En los últimos días añadí esa acción A14-Buscar-y-Reemplazar. El motivo es muy prosaico y simple: no necesito que la dirección incluya la coletilla "Spain" porque yo no viajo nunca fuera de España; esa acción nueva A14 quita esa palabra dejando el resto en la variable. Reemplazar "Spain" por "" (nada). Bueno, para que no haya incoherencias he quitado esa acción del post de este hilo, aunque es un detalle poco relevante. Gracias por avisar.
luigi__77
27/12/13, 20:09:01
ok ok ok.. solo una pregunta..
xq a %sitio se le asignan dos tipos de ubicaciones?, osea, xq primero la de red y luego la de gps? para asegurar que aunqsea guarde la de red, y luego si es posible la de gps? es x eso?
pues xq sino simplemente se le puede asignar de una la direecion que te suelta el gps, y nos ahorramos una "linea de codigo" (que seria la de la red), pues solo quiero saber el proposito de las dos direeciones, xq por exactitud no creo veo que sea, pues la variable igual esta siendo sobreescrita cuando le asignas la direccion del gps.
y disculpe, la verdad esq apenas estoy trabajando con tasker y no se muy bien cuales son sus variables, ni cual contenido o tipo de dato van guardando (hablo de las vbariables que te vienen por defecto)
luigi__77
27/12/13, 20:10:45
ok ok ok.. solo una pregunta..
xq a %sitio se le asignan dos tipos de ubicaciones?, osea, xq primero la de red y luego la de gps? para asegurar que aunqsea guarde la de red, y luego si es posible la de gps? es x eso?
pues xq sino simplemente se le puede asignar de una la direecion que te suelta el gps, y nos ahorramos una "linea de codigo" (que seria la de la red), pues solo quiero saber el proposito de las dos direeciones, xq por exactitud no creo veo que sea, pues la variable igual esta siendo sobreescrita cuando le asignas la direccion del gps.
y disculpe, la verdad esq apenas estoy trabajando con tasker y no se muy bien cuales son sus variables, ni cual contenido o tipo de dato van guardando (hablo de las vbariables que te vienen por defecto)
Caravantes
28/12/13, 01:05:39
xq a %sitio se le asignan dos tipos de ubicaciones?, osea, xq primero la de red y luego la de gps? para asegurar que aunqsea guarde la de red, y luego si es posible la de gps? es x eso?...
...xq por exactitud no creo veo que sea...
Pues creo que sí es por exactitud.
Supongo que te refieres a la tarea UbicPosiciónObtener que sirve para obtener la ubicación acual, del punto en el que estemos en ese momento. Esa tarea trata de obtener la ubicación por GPS, memorizando esa ubicación en la variable %posiciongps y su precisión en la variable %precisiongps. Luego trata de obtener la ubicación por RED, guardando la ubicación en la variable %posicionred y la precisión en %precisionred. Finalmente compara las dos precisiones para ver cuál es mejor (la que tiene menos metros de error), y elegir la ubicación correspondiente, ya sea de GPS (%posiciongps) o RED (%posicionred); ese dato de posición (el mejor) será el definitivo devuelto por la tarea.
Este planteamiento no es una idea original mía, está "copiada" de trabajos previos de los compañeros Vitorino (http://www.htcmania.com/showpost.php?p=3053413) y Malkair (http://www.htcmania.com/showpost.php?p=10623478).
Caravantes estuve investigando un poco más sobre las sub tareas eh hice el perfil de ejemplo y ya tengo todo mal claro, gracias por contestar. Al final convertí en global las variables cambie prioridades y me funcióna. Tengo una duda con tu perfil de posición de llamada, creo haber leído que al igual que yo ejecutas la posición de llamada en la tarea de entrada (ya que es la única forma que calcule el tiempo de llamada) y mandas un mail a Evernote en la tarea de salida, deduzco entonces que usas variables globales? O hay otra forma para prescindir de ellas?
Caravantes
28/12/13, 12:42:35
creo haber leído que al igual que yo ejecutas la posición de llamada en la tarea de entrada (ya que es la única forma que calcule el tiempo de llamada) y mandas un mail a Evernote en la tarea de salida, deduzco entonces que usas variables globales? O hay otra forma para prescindir de ellas?
Sí uso una variable global para medir la duración de la llamada, pero en esos perfiles de llamadas telefónicas no uso nada de ubicación, ni posición de llamada ni nada parecido.
Las ubicaciones las controlo por otro lado: tengo un registro independiente con apuntes de cuándo salgo de casa, cuando regreso, cuándo cojo el coche, dónde suelto el coche, etc. En el registro de llamadas telefónicas solo anoto la hora de la llamada, su duración y con quién he hablado, no me parece necesario anotar el lugar en el que me encuentro durante la llamada.
Lo de la variable global para medir el tiempo está explicado en http://www.htcmania.com/showthread.php?p=11663649
No se porque me dejo de funcionar de repente, cada vez que lo ejecuto me dice "no se a podido guardar la posicion"; queria saber si los que tienen la nueva actualización de tasker les funciona o sera algun error de mi telefono
No se porque me dejo de funcionar de repente, cada vez que lo ejecuto me dice "no se a podido guardar la posicion"; queria saber si los que tienen la nueva actualización de tasker les funciona o sera algun error de mi telefono
Cambie de room y me funciona genial debió ser algún error de la anterior.
SacalmM
20/02/15, 15:55:36
Impresionante. Hace poco que utilicé tasker para una chorrada (que me apagara el Hotspot a cierta hora) y lo que he visto que se puede llegar a hacer.
Sin duda voy a comprar la app cuando se terminen los 7 días de prueba.
Gracias por estos magníficos tutoriales
Un saludo
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.