Ver la Versión Completa : [ TUTORIAL ] Tasker para principiantes: Lección 2. Variables
Lukevalci
18/03/13, 13:42:53
Buenas a todos,
Os dejo la lección 2 de la guía que estamos formalizando entre varios de nosotros.
Agradecer en primer lugar a Andreas Ødegård, autor del artículo, a Klim, pionero de la iniciativa de traducción de los artículos y a Caravantes y mlesir, gestores del foro y que han pulido ciertos puntos de la traducción que no quedaban demasiado claros
-------------------------------------------------
Guía de Tasker para principiantes: Lección 2. Variables
Traducido del artículo original publicado en Pocketables:
Beginner’s guide to Tasker, part 2: Variables (http://www.pocketables.com/2012/08/beginners-guide-to-tasker-part-2-variables.html)
http://www.pocketables.com/2012/08/beginners-guide-to-tasker-part-2-variables.html
Andreas Ødegård. August 25, 2012.
259178
En la primera parte de esta guía traté los aspectos básicos de Tasker, y mencioné que profundizaría en variables y en las escenas más adelante. Ambas son características que requieren un poco más de explicación que los otros aspectos en general, así que me voy a dedicar un artículo a cada uno de estos temas. El primero, las variables.
¿Qué es una variable?
Las variables son parte de muchos lenguajes de programación, y Tasker es, en muchos sentidos, un lenguaje de programación. Las matemáticas también utilizan variables y en muchos casos funcionan de la misma manera.
Una variable es esencialmente un archivo de texto virtual. Imagina un archivo de texto llamado variable.txt que contiene el texto "Hola Mundo". Sin embargo, en lugar de que sea un archivo físico, puede moverse, existe dentro de Tasker, y en vez de ser llamado variable.txt se llama %variable. El símbolo de porcentaje siempre está presente al comienzo del nombre de una variable y es la forma en que Tasker sepa que algo es una variable (Igual que la extensión del archivo txt permite que los equipos sepan que es un archivo de texto). El nombre que sigue al símbolo de porcentaje es en cierto modo el nombre del archivo. Al igual que un archivo de texto una variable puede contener texto, pero únicamente el texto, no imágenes. Este texto puede ser un único símbolo, un número, una URL, un párrafo de un artículo (cualquier texto, en otras palabras).
Cuando se utiliza una variable en cualquier lugar de Tasker, el programa sustituirá la variable por el valor (contenido) que la misma tenga en el momento de ejecutarse. Digamos que tienes una variable %hola que contiene "Hola Mundo". A continuación, haz que Tasker cree una notificación con el texto %hola. Cuando Tasker vaya a crear la notificación, se comprobará el valor de la variable y lo usará en lugar de utilizar el nombre de la variable. Así la notificación final creada por Tasker no leerá "%hola". En cambio el mensaje será "Hola Mundo".
¿Por qué utilizar variables?
El propósito de las variables es tener una manera de almacenar información de forma dinámica. Esto permite no sólo la transferencia de información entre las diferentes partes de Tasker, sino también controlar los ajustes y el texto de Tasker de forma remota, sin tener que entrar en cada contexto/tarea y modificarla manualmente.
Para entender completamente el propósito de la utilización de variables, lo primero que tienes que saber son las diferentes maneras en que usted puede cambiar el valor (contenido) de una variable. Algunos ejemplos son:
• Establecer el valor de una variable mediante una acción. Este valor puede ser utilizado como un contexto para un perfil completamente diferente o como parte de otras acciones.
• Convertir el contenido de un archivo de texto real en el valor de una variable.
• Operar matemáticamente las variables. Por ejemplo, puedes sumar +1 a una variable cada vez que se ejecuta una acción. El valor de la variable se incrementaría en valor numérico las veces que se ejecute la acción, actuando como un contador
• Muchos ajustes del sistema y eventos existen en Tasker en forma variable. El valor de la variable %TIME es siempre la hora actual, %DATE es siempre la fecha, %BATT es siempre el nivel de la batería y así sucesivamente. La Lista completa de las llamadas variables incorporadas se encuentran en la ayuda de Tasker, y saber cómo utilizarlas es una de las lecciones más importantes de Tasker.
En resumen, hay muchas maneras de cambiar el valor de una variable. La idea es crear una biblioteca de información a las que las diferentes partes de Tasker tengan acceso, en lugar de tener la información almacenada como texto estático que sólo es utilizable donde está escrito. De hecho, las variables comparten un montón de ventajas con internet:
• La información se puede compartir fácilmente entre los participantes conectados
• La información/colaboración es posible teniendo a varios participantes trabajando en la misma información
• La información puede ser actualizada en su sitio una vez y aún así llegar a varios participantes sin tener que actualizarlos cada uno de ellos directamente.
Con Internet los participantes son usuarios de Internet. Con Tasker y variables, los participantes son diferentes acciones, contextos, y así sucesivamente dentro de Tasker.
Creación de variables
Los nombres de las variables en realidad cambian (e indican) qué tipo de variable es. Hay tres tipos de variables: globales, locales e incorporada. Para crear variables de un tipo determinado (sólo las variables globales y locales pueden ser creadas por el usuario en Tasker), sólo tienes que utilizar el formato correspondiente. Por otra parte, las variables globales se muestran en la pestaña Variables de Tasker (ver imagen de la derecha), sin embargo ni las variables locales ni las incorporadas se muestran en esta pestaña.
• Las variables locales se escriben en minúsculas y sólo están disponibles para el perfil/tarea que las crea. Si tiene una tarea de "Casa" que crea una variable %casa (ojo, todo en minúscula), esa variable no estará disponible para otras tareas. Otra tarea "ajena" no debería ser capaz de utilizar esa variable.
• Las variables globales se muestran en la pestaña Variables y estarán visibles y utilizables por todas las partes del Tasker. Estas variables deben comenzar con una letra mayúscula. Si su tarea "casa" crea una variable %Casa (primera con mayúscula), cualquier tarea "ajena" será capaz de verla, modificarla y usarla.
• Las variables incorporadas siempre se escriben en mayúsculas. Estas son las variables que hablé anteriormente que están integrados en Tasker y que toman los valores de información del sistema. %TIME, %DATE, y %BATT son los ejemplos que he usado anteriormente. Estos pueden ser leídos por cualquier parte de Tasker, pero no se muestran en la pestaña Variables. Además, no puede ser cambiado por el usuario, ya que, por definición, muestran una parte de información generada por el sistema. La única manera de cambiar %BATT es cambiar el nivel de la batería actual mediante la carga o descarga de la batería.
Excepciones
No hay reglas sin excepciones. Hay algunas variables que toman la forma de variables locales pero en realidad son variables incorporadas. Un ejemplo es %new_val, que lo veremos al hablar de la creación en escena. Por el momento se puede hacer caso omiso de estos en aras de evitar una confusión innecesaria.
Variables para el intercambio de información y de texto dinámico
Las variables se pueden utilizar para compartir información entre las partes de Tasker, e incluso entre los plugins y Tasker. Para utilizar el símil de internet de arriba, las variables permiten que una parte de Tasker envíe información a otra parte, al igual que un usuario de Internet envía un email a otro.
El concepto de texto dinámico es como la colaboración de documentos en Google Docs u otros editores de documentos en línea. En lugar de ser una creación de texto estático, partes de ella se pueden cambiar por diferentes fuentes independientes.
Ejemplo 1: Mi mensaje de la mañana
Tengo una elaborada configuración de “modo de reposo” que uso todas las noches. Cuando me despierto por la mañana uso una acción Tasker que se llama “Decir” (que se encuentra en la categoría Misc), que es una conversión de texto a voz. Esta acción tiene un campo de texto en el que yo escribo el texto que quiero decir y entonces el teléfono lee el mensaje en voz alta. En la actualidad, este campo de texto se lee:
“Buenos días. Has dormido durante %Smduration horas. %Lazy. El Pronóstico del tiempo para hoy es %Norweather. %Todomorningnot.”
Como puedes ver este mensaje contiene 4 variables. Antes de que la acción decir comience, decenas de otras acciones ocurren, recogen y procesan los datos, y almacenar los resultados finales en estas cuatro variables.
• %Smduration es la duración, en horas, durante el cual el modo reposo estuvo activo. Si se activó a 23:00 y se desactiva a 07:00, entonces el valor de %Smduration sería de 8.
• El valor de %Lazy depende del valor de %Smduration. Si %Smduration es por lo menos 9, El valor de %Lazy es "bastardo perezoso". Si %Smduration es inferior a 9, no es nada.
• %Norweather es el resultado de una tarea que hice para recoger datos meteorológicos noruegos. Su valor es una descripción muy breve del pronóstico del tiempo para ese día, como "sol" o "lluvia".
• %Todomorningnot es parte de mi sistema Tasker basado en lista de tareas. Si tengo elementos TODO en la lista marcados como "mañana", su valor es "Tiene elementos que debían presentarse en su lista de tareas." Si no tenemos estos artículos, su valor no es nada.
Mediante el uso de estas cuatro variables el mensaje de teléfono varía en función de éstas y habla por la mañana (y esta es la razón para el nombre de "variable").
Si me levanto después de 8,5 horas, en un día lluvioso que no tengo nada que hacer, el teléfono dirá el siguiente mensaje:
“Buenos días. Has dormido durante 8,5 horas. Pronóstico del tiempo para hoy es lluvia.”
Si me levanto después de 10,2 horas en un día soleado en el que tengo artículos en mi lista de tareas, el teléfono dirá el siguiente mensaje:
“Buenos días. Has dormido durante 10,2 horas. Bastardo perezoso. Pronóstico del tiempo para hoy es soleado. Usted tiene cosas en su lista de tareas”
Utilizando aquí las variables de esta manera, me da dos opciones muy importantes:
• Mi mensaje de la mañana es dinámico. A pesar de que nunca entro y cambio manualmente el campo de texto de la acción Decir, el mensaje sigue los cambios.
• Puedo transferir información de una parte a otra de Tasker. Las cuatro variables en el mensaje son cada una el resultado del trabajo realizado por otras tareas y acciones, y el uso de variables me permite transmitir dicha información a donde lo necesito.
Ejemplo 2: AutoRemote
AutoRemote es un plug-in de Tasker del que estoy especialmente encariñado. Permite que los diferentes dispositivos se comuniquen uno con el otro mediante el envío de mensajes entre sí que no son visibles para el usuario. Permite hablar a Tasker en un dispositivo, con Tasker en otro dispositivo, sin necesidad de utilizar un método de comunicación que sea para otra cosa - como SMS o correo electrónico.
Los mensajes entrantes a través de AutoRemote se pueden utilizar de dos maneras: como disparadores, o como fuentes de información. Si se utiliza como disparador, se puede por ejemplo configurar un perfil Tasker que se activa si un mensaje que dice "hola" es recibido a través de AutoRemote. Esto podría servir, por ejemplo como una característica "encontrar mi tableta", donde el envío de un mensaje con un "hola" desde el teléfono a la tableta activa una tarea que hace la tableta pitar.
Si el mensaje se utiliza como una fuente de información, el contenido real del mensaje se puede transferir a una variable Tasker. Digamos que usted quiere que su tableta sea capaz de decirle a su teléfono el estado de la batería. Su tablet podría enviar el siguiente mensaje a su teléfono:
“Nivel de batería de la Tablet es %BATT por ciento”
Donde %BATT es una variable incorporada. Cuando la tableta envía este mensaje, reemplazará %BATT por el nivel de batería propia. Así el mensaje que llega al teléfono contendrá el nivel de batería de la tableta.
El teléfono se puede configurar para buscar un mensaje que contenga "nivel de batería Tablet". AutoRemote tiene una opción para que sea una coincidencia exacta, que en este caso no queremos. Este filtro de mensajes actuaría como el contexto para el perfil, lo que significa que el perfil se activará cuando un mensaje con "nivel de batería Tablet" fuese recibido.
Esto es similar al ejemplo anterior "encontrar mi tablet", pero queremos ir un paso más allá aquí - en realidad usando el contenido del mensaje también, no sólo el uso del mensaje en sí mismo como un disparador.
Para ello debe configurar AutoRemote para convertir el mensaje en una variable - digamos %tabletbattery. Esa variable podría ser utilizado en una notificación, acción “Decir” o similar. Basta con crear una acción “Decir” con %tabletbattery como texto y utilizarla en el perfil que se activa por mensaje entrante, para que entonces su teléfono leyera el estado de la batería de la tableta en voz alta cuando recibe un mensaje de ella.
Ya que %tabletbattery es una variable local, sólo estaría disponible dentro de ese perfil, pero fácilmente se podría utilizar la acción “Establecer Variable” en la categoría de Variable para crear una variable global. Esto se hace mediante el establecimiento de la acción “Establecer Variable” para crear una variable con una capitalización de variable global, como %Tabletbattery, y estableciendo su valor a %tabletbattery. Luego en realidad estas creando una copia global de la variable local.
En este ejemplo de AutoRemote, el valor de una variable incorporada en la tablet es enviado a otro dispositivo a través de un plug-in, donde se convirtió en una variable que se puede usar en ese dispositivo. Este es sólo otro ejemplo de transferencia de información a través de las variables, pero uno más avanzado, ya que transfiere información entre dispositivos.
Ejemplo 3: Minimalistic Text y Make Your Clock Widget
Minimalistic Text y Make Your Clock Widget son dos apps independientes de Android para creación de widgets que ambos tienen la capacidad de recibir información de Tasker. Ambos interactúan con Tasker de forma muy similar, utilizando una acción que transfiere información desde Tasker (ya sea texto estático o el valor de una variable) en variables de las aplicaciones propias.
Yo uso ambas aplicaciones y las dos con Tasker. Uso Minimalistic Text para mi lista de compras, al tener un widget en la pantalla de bloqueo en el que Tasker puede escribir información. El widget sólo muestra algo si estoy fuera y tengo artículos en mi lista de la compra, de lo contrario está en blanco. La lista de la compra está manejada por mi propio sistema basado en Tasker.
La imagen de la pantalla de configuración de abajo muestra cómo está configurada la acción que hace de puente entre Tasker y Minimalistic Text. Se transfiere el valor de la variable de Tasker %Todoshopping en la variable de Minimalistic Text TODO, la cual es una variable en una aplicación completamente diferente y, como tal, no utiliza el símbolo % para indicar que es una variable. Una vez que esta tarea se ejecuta, en cualquier lugar donde se utilice la variable en TODO en Minimalistic Text (entonces se mostrará el valor de %Todoshopping. Cada vez que %Todoshopping cambie en Tasker, la acción de puente tiene que ser ejecutado con el fin de transferir esa información a Minimalistic Text.
259168
Variables como ajustes
Las variables tienen otro uso que es quizás menos aparente, pero sigue siendo muy importante a tener en cuenta: se pueden utilizar como ajustes. Esto se realiza mediante la asignación de valores a variables que entonces se utilizan como referencias más adelante. Si tienes un perfil para cuando estás en casa, puede utilizar la acción “Establecer variable” para establecer un variable %Hogar a "on" cuando se activa (tarea de entrada), y en "off" cuando se desactiva (tarea de salida). Cualquier otra parte de Tasker entonces será capaz de comprobar el valor de %Hogar y, a su vez, saber si estás en casa.
Si lo piensas bien es así como funcionan los ajustes fuera de Tasker también. Si usted entra en la configuración del sistema y apaga el WiFi, básicamente estás estableciendo una variable WiFi en "off" - es sólo una forma más visual de hacerlo. Si está conectado a una red WiFi llamado McDonald, es como tener una variable para la red Wi-Fi con un valor de "McDonalds".
Hacer referencia a las variables: contextos
Cuando digo que otras partes de Tasker pueden comprobar el valor de las variables y actuar en consecuencia, hay muchas maneras de hacer esto. Por contextos el valor de una variable es su contexto propio. Se encuentra ubicado en la sección Estado, categoría Variable, contexto Valor de Variable.
La pantalla que se obtiene al seleccionar este contexto pide un nombre, Operador y Valor. Nombre es el nombre de la variable, como %Casa. El nombre de la variable que se pone aquí es simplemente el nombre de la variable que contiene la información que desea que el perfil tenga en cuenta y reaccione.
259169
Op es un poco más complicado. Significa Operador, y se refiere al método que Tasker utiliza para comprobar el valor de las variables, usando una versión simplificada de las expresiones regulares. Se puede configurar para cosas como coincide, no coincide, matemáticas: Menor que, y así sucesivamente. En resumen, el operador se refiere a la relación entre el tercer campo del valor y el valor real de la variable.
A modo de ejemplo, digamos que usted quiere un perfil que se activa cuando %Casa está establecido en "on" y se desactiva cuando está en "off". Luego usaría %Casa como el nombre, coincide como el Operador , y "on" (sin las comillas) como el valor. El contexto resultante se puede leer así:
“Active el perfil si el valor de la variable %Casa coincide con "on"
Por poner otro ejemplo, piense en el ejemplo anterior del mensaje de la mañana. La variable %Lazy tiene un valor diferente dependiendo de si %Smduration es menor que o mayor que 9. Si desea crear un perfil que reaccione de la misma manera, el nombre sería %Smduration, Operador sería mayor que, y el valor sería de 9. El contexto resultante se puede leer así:
“Activar el perfil si el valor de %Smduration es de al menos 9”
Para terminar con un ejemplo del mundo real, utilizo este sistema para los perfiles de ubicación. Tengo tres perfiles que son mutuamente excluyentes y que utilizan diferentes contextos. Mi perfil Casa se activa cuando estoy conectado a mi WIFI de casa, el perfil Escuela se activa cuando hay una entrada de calendario en mi calendario escolar, y mi perfil exterior se activa cuando los otros dos no están activos.
Para asegurarse de que todos los perfiles son mutuamente excluyentes, uso mis propias variables como parámetros. Tanto los perfiles Escuela como Casa tienen ajustes de variables tanto en la tarea de entrada como en la de salida. Cuando el perfil Casa está activo, se establece la variable %Casa a 1, y cuando se desactiva, se establece en 0 (tarea de salida). El perfil de la escuela hace lo mismo para la %Escuela.
El perfil exterior tiene entonces dos contextos Valor de Variable: %Escuela coincide a 0, y %Casa coincide a 0. En otras palabras, sólo se activa si ambas variables se establecen en 0 (que a su vez sólo ocurre cuando los otros dos perfiles están inactivos). El perfil de la escuela también tiene dos contextos Valor de Variable, %Casa coincide a 0 y %Caminoalaescuela coincide a 0. El primero hace que el perfil de la escuela no está activo cuando estoy en casa (lo que podría suceder si terminamos temprano), mientras que esta última variable se ajusta mediante un botón en una escena que tengo. Voy a tratar las escenas en el próximo artículo, pero para hacer boca, presiono un botón que dice "Desactivar escuela" y desactiva el perfil de la escuela. Esto es para situaciones en las que termine pronto, pero no vayas directamente a casa, lo que me permite activar manualmente el perfil exterior (desactivando el perfil de la escuela) para aquellas raras ocasiones.
Hacer referencia a las variables: acciones
No sólo los contextos pueden ser controlados por variables; las acciones también. Una de las imágenes en mi primer artículo señala la casilla de verificación “Si” en una pantalla de configuración de la acción. Esta casilla de verificación está presente en la mayoría de las acciones, y te permite controlar la acción en función de las condiciones del “si”. Una condición “Si” es simplemente una condición que debe cumplirse para que la acción se ejecute.
Para todos los supuestos y propósitos, las condiciones “Si” y los contextos de “Valor de Variable” funcionan de la misma manera. Tienes un nombre de variable, un operador y un valor que se ha de comparar con el valor de la variable. En la sección anterior, expliqué cómo el contexto Valor de Variable trabaja usando la configuración %Smduration superior a 9 como ejemplo. Eso sucede en mi perfil de “modo de reposo”, pero en realidad no es utilizado como un contexto en ese perfil: se utiliza para limitar una acción con una condición “SI”. La imagen de la derecha muestra cómo se configura.
Como se puede ver la casilla de verificación “si” está activa; %Smduration se introduce en el primer campo, 9 en el segundo, y el operador >, que es el símbolo de mayor que. Con la acción configurada de esta forma, la acción sólo se ejecutará si el valor de Smduration% es mayor que 9. Si no lo es, la tarea simplemente se salta esa acción.
259170
Puedo usar el mismo sistema para limitar las acciones individuales basadas en la variable %Casa creado por mi perfil Casa. Si quiero una acción que se ejecute sólo cuando estoy en casa, lo único que tienes que hacer es marcar la casilla “si”, escribir %Casa en el primer cuadro, seleccione = (coincide) como operador y escriba 1 en el segundo cuadro. De esta forma sólo se ejecutará cuando el valor de la %Casa es de 1, lo que sólo ocurre cuando estoy realmente en casa.
Ten en cuenta que la decisión de establecer %Casa / %Escuela a 1 o 0 en lugar de on o off es una opción personal. Tú decides cómo deben ser los diferentes estados de un ajuste, y si tuvieras que crear tu propio perfil Casa con una variable %Casa, no hay absolutamente nada que nos impida usar tanto el valor "Cachivache" como "on" y "huracán" como "off". Simplemente significa que tendrías que establecer el contexto / condición Si de %Casa coincide "Cachivache".
También es posible agrupar varias acciones en la misma condición “Si”. Para ello utilizas la acción “Si” que se encuentra en la sección Tarea; configúralo como lo harías con un sistema integrado de condición “Si” y luego se coloca antes de la primera acción que deseas en la agrupación. Cualquier acción que siga a la acción “Si” se anida debajo de él y sigue su condición. Se cierra el grupo mediante la inserción de una acción “Fin Si”. Esto es simplemente un método más sencillo para la aplicación de la misma condición “Si” para múltiples acciones
Por último, hay una acción en la misma categoría llamada “Else”. Esta es una acción opcional que puedes utilizar entre una condición “Si” y un “Fin Si” para crear un nuevo grupo de acciones (anidadas bajo la acción “Else”) que se ejecutará si la condición “Si” no se cumple, pero sólo si no se cumplen. La ilustración de arriba muestra esto con uno de mis perfiles, donde he insertado una acción “Else” para la demostración.
La forma de leer esta configuración es como sigue:
“Si la condición SI se cumple, ejecute la acción 3 (Notifíqueme de sonido) y 4 (Minimalistic Text)
Si no (Else), ejecute la acción 6 (Stop)”
La acción “Else” es opcional, y realmente sólo te ahorra añadir un segundo grupo “Si” que sea exactamente lo contrario del primero.
Escribí un artículo sobre el control de perfiles utilizando variables, que se puede encontrar aquí. Gran parte de ese artículo es lo mismo que lo que has leído aquí, pero fue escrito para usuarios avanzados de Tasker, no para principiantes.
Los caracteres especiales
Cuando se realiza la coincidencia de patrones utilizando este método, es importante ser consciente de la tres caracteres especiales *, / y +.
* Es un comodín, lo que significa que se puede utilizar para que coincida con una parte de un fragmento de texto. Si escribes Android en el campo de valor y coincide como operador, sólo coincidirá el texto exacto de Android. *Android* por otro lado coincidirá con cualquier uso de la palabra Android, como “me gusta Android mucho”. *Android coincidirá con “me gusta Android” pero no con “me gusta Android mucho”, ya que el comodín está sólo delante de la palabra, no detrás de ella. En algunos casos es mejor utilizar *ndroid* en lugar de *Android*, porque el primero captura tanto Android y android.
Actualizado: Sean señala en los comentarios que se pueden utilizar todas las letras minúsculas en concordancia con el modelo y funcionará con todo. Por ejemplo, *ndroid* aquí no es necesario porque *android* coincidiría tanto con Android como con android. Sin embargo no funciona al revés, por lo que *Android* no va a coincidir con los dos. Yo no era consciente de ello, y es más cómodo cuando se trata de mayúsculas y minúsculas.
/ Actúa como O, lo que significa que permite la inserción de varios valores en un solo campo. Introduciendo 1/2/3 en el campo de valor y utilizando coincide como operador, captaría los valores de variables de 1, 2, y 3. Esto es muy útil, ya que permite crear contextos y condiciones “Si” que reaccionan a varios valores de variables diferentes.
+ Significa "al menos un carácter" Se puede ver el uso de esta en el “Si / Else / Fin si” de la captura del apartado anterior, en la primera acción, en el caso de la acción se configura como %Todoshopping coincida ++. Tasker lee esta condición como "Si %Todoshopping contiene al menos dos caracteres, no importa los que sean"
Las variables vacías
Las variables vacías no se sustituyen por espacios en blanco, sino que mantendrán su nombre de variable completo de referencia. Si se crea una notificación con %Variable como texto y esa variable no contiene nada, entonces la notificación literalmente dirá %Variable. Para hacer que aparezca un espacio en blanco en su lugar, creamos una acción “Establecer Variable” de esa variable y establecerla a un espacio.
Utilice una condición “Si” con la variable en cuestión como la variable, coincide como operador, y *nombre variable sin símbolo %* como el valor (ver la imagen de abajo para ver lo que quiero decir con esto).
Ejemplo para la variable %Home:
259171
Esto escribe un espacio como valor de la variable si está vacía, que se detecta por ver si el valor de la variable es el nombre de la variable. Tenga en cuenta que usted debe insertar el espacio en el último campo de texto y guarde inmediatamente sin seleccionar nada más. De lo contrario, probablemente obtendrá un mensaje de error diciendo que el campo no puede estar vacío.
Procesamiento de datos utilizando variables
Hasta ahora he hablado sobre todo acerca de las formas simples de usar variables para transferir las acciones de información y control y contextos, pero eso es sólo la mitad de la historia. Para aquellos que han leído mis artículos mayores acerca de Tasker, probablemente habrás visto algunos artículos que procesan datos internamente en Tasker. Los ejemplos son un locutor de pronóstico del tiempo (http://www.pocketables.com/2012/07/tasker-task-that-speaks-the-weather-forecast-download.html) y locutor de evento del calendario (http://www.pocketables.com/2012/07/tasker-google-calendar-event-announcer-task-download.html). Lo que tienen en común es que procesan la información después de que se haya importado en Tasker, esencialmente tomando una sola variable llena de información y cortándola en trozos pequeños que se pueden utilizar como valores o como texto dinámico.
Para ello, se utilizan muchas de las herramientas disponibles en la categoría de variables en la lista de acciones. “Separar Variable” es una de las más poderosas, pero también encontrarás “Sección de Variable”, “Variable Buscar y reemplazar”, y otros. Saber utilizar estas te da la posibilidad de que Tasker haga prácticamente cualquier cosa, ya que más o menos cualquier fuente de información basada en texto, online u offline, se puede utilizar con Tasker.
Desafortunadamente este es un tema enorme, y ya estoy pasando de 4000 palabras en esta explicación "sencilla" de las variables. Por lo tanto, quiero dedicar un artículo entero a este tema, más adelante en la guía, después de que algunas otras cosas básicas estén aclaradas por el camino. He querido mencionarlo brevemente aquí para no dar la impresión de que falta algo.
Nelly se basa en variables de coincidencia de patrones
Para terminar esta parte de la guía, quiero mencionar que mi asistente DIY Tasker basado en voz, Nelly, está construido (más o menos) enteramente en el concepto de variables y comparación de patrones. Puede ser una buena idea leer este artículo (antiguo) (http://www.pocketables.com/2012/05/building-nelly-my-diy-voice-assistant-for-android.html) después de esta parte de la guía, para ver cómo se aplica en la práctica y en una escala tan grande.
Respecto de las variables y con todas las precauciones creo que puedo decir que:
Si realizas una acción separar variable y esta variable esta vacía va a dar error y es un error que detiene todo.
Para evitar esto se puede utilizar poner un if si la variable no está ajustada. Pero hay un problema: que pasa si la variable ha sido igualada a una variable que esta vacía? Pues que tasker considera que esta ajustada asi que lo mejor es utilizar lo de comprobar que la variable no contenga "%". Aunque yo usaría en la comparación :
If %Var ~ %*
O sea que no empiece por %, asi por ejemplo :
Si %Var equivale a: hola% no pensaría que esta vacía y se podría utilizar el símbolo %pero no al principio.
Otra cosa. La utilización de una variable que esta vacía no siempre tiene que mostrar la variable. En las escenas, en los menús por ejemplo si la variable esta vacía directamente no la muestra.
Enviado desde mi GT-N7000 usando Tapatalk 2
ATaskREADOS
18/04/13, 17:53:29
Bueno pues resulta que no lo habíamos subido al recopilatorio. Subido.
:campeon:
Date un beso y un I love you Lukevalci
FDO: Mlesir
Lukevalci
19/04/13, 00:09:50
Jeje, la verdad que al verlo achinchetado tampoco caí yo en eso. Thanks, mate! !
KchoPrro
24/05/13, 17:00:18
Hola Amigos, abro esta consulta para intentar resolver algunas dudas que tengo (y las que vengan) sobre el manejo de variables (por supuesto, todo el que quiera añadir las suyas....).
Me he leído los tutoriales y, seguro que a base de tiempo (escaso el que tengo, por cierto), terminaré aprendiendo.
He empezado con el uso de las variables y me surgen algunas dudas, genéricas que voy solucionando como buenamente puedo. Os cuento algunas, por si alguien me echa un poco de lúmenes :ok:
-1- ¿Qué tengo que hacer para que una variable que se cumpla, realice varias acciones?. Ahora mismo lo que hago es lo siguiente. Supongamos que una variable cumple una condición y quiero que, encienda la pantalla, vuelva al inicio, reproduzca un archivo y abra un flash (es solo un ejemplo). Lo primero que pensé era poner 4 acciones, consecutivas en la tarea. En cada una de ellas la variable de condición. Luego pensé que esto era un poco engorroso, así que decidí crear una subtarea con las 4 acciones (sin variables) y una tarea principal que sea abrir tarea (la subtarea creada), con solo una condición.
¿Esto se puede hacer de otra manera más sencilla o el uso de las variables, generalmente es de esta forma?
-2- Otra cosa que quiero aprender a realizar es dos acciones para una misma condición, pero éstas contrarias. Es decir, creo una tarea con una acción y una condición. Si se cumple realiza la acción, si no se cumple, realiza otra distinta. Mi lógica me dice que cree dos acciones, a la primera le creo la condición, si se cumple se realiza, si no se cumple debería seguir con la tarea a la siguiente acción (en este caso, la condición sería la inversa de la anterior, es decir, si el resultado de la variable es diferente al valor que ponga).
¿Voy bien encaminado?
KchoPrro.
Enviado desde mi Samsung Galaxy S3 Usando TapaTalk 2
Al lio: pues lo de la subtarea es muy ingenioso, enhorabuena pero no es la forma "correcta", una cosa no quita la otra.
Las condiciones las podemos emplear en:
1 acciones individuales: marcando la casilla IF.
2 Utilizando la acción IF, que está dentro de la categoría Acciones de Tarea. Funciona igual que lo anterior, si se cumple lo anterior tasker "baja" o "entra" a realizar las acciones que siguen a esta. Esta acción tiene la peculiaridad de que tiene otras dos acciones asociadas con las que "interactua": FIN IF y ELSE.
FIN le indica a Tasker que las acciones que se hacen solo si se cumple la condición han acabado y a partir de ahí vuelve a realizarlas de manera normal, es decir realizar las tareas se cumpla o no la condición.
ELSE( traducido seria:" si no" o "de otra manera") lo que le indica a Tasker es lo que debe hacer en caso de que no se cumpla la condición que le hemos puesto en el IF. Esta acción responde a tu segunda pregunta.
Lo mejor para verlo y comprenderlo in situ es hacer esto:
(esta parte ha sido transcrita usando: pulsar largo en tarea / exportar /copiar descripción al portapaeles. Es una maravilla esta opción!)
COMO FUNCIONAL EL IF (719)
<Aquí le vamos a dar un valor a %aaa Esta en minúsculas todo pq solo la vamos a usar en esta tarea y por eso no importa q Tasker no la guarde.>
A1: Consulta de Variable [ Título: Variable:%Aaa Tipo de entrada:Texto Normal Por Defecto: Imagen de fondo: Disposición:Variable Query Cuenta atrás (segundos):20 Show Over Keyguard:Encendido ]
<Ojo aquí a como escribimos. Tiene que ser exacto.>
A2: Si (if) [ %aaa ~ Verde ]
A3: Vibrar [ Tiempo:200 ]
A4: Pop-Up [ Título: Texto:%aaa y Verde coinciden Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):10 Show Over Keyguard:Encendido ]
A5: Else
A6: Vibrar con un patrón [ Patrón:0,500,100,400,100,300,100,200,100,100 ]
A7: Pop-Up [ Título: Texto:%aaa y Verde NO coinciden Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):10 Show Over Keyguard:Encendido ]
A8: Fin si (End if)
A9: Vibrar [ Tiempo:990 ] Si (if) [ %aaa ~ Verde ]
A10: Pop-Up [ Título: Texto:Ahora hago el resto normalmente se cumpla o no Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):10 Show Over Keyguard:Encendido ]
(una vez tengas la tarea escrita para ejecutarla dale al botón play que esta abajo a la derecha, al menos e la versión antigua)
Lo de vibrar esta puesto para que compruebes que se pueden hacer más de una acción.
Os he puesto el último vibrar con una condiciones para que se vea más clara la diferencia entre un tipo de if y otro. Como veréis el último pop up lo pone SIEMPRE independientemente de la condición del vibrar en A9.
Por último decir :
1 Puedes anidar varios IF. Anidar significa meter dentro. O sea algo asi como :
A1 IF.....
A2 ACCIONES que queremos que haga si se cumple la primera condicion
A2 IF......
A3 ACCIONES que queremos que haga si se cumple la segunda ( Y se ha cumplido la primera claro, si no nada)
A4 FIN IF
A5 FIN IF
2 En el if puedes usar varios operadores, los puedes elegir pulsando el icono en medio de los dos términos de la comparacion. Aquí hemos utilizado ~ (significa coincidir). Hay más, igual, menor que, etc. Ojo que coincidir no es lo mismo que igual matemáticamente.
Uno muy útil que si os voy a mencionar es este:
IF %aaa ~ *erd*
Los asteriscos significan para explicarlo de una manera que se quede:
El primero: (*erd) no importa lo que valga %aaa antes de erd.
El segundo: (erd*) no importa lo que valga %aaa después se erd.
Puestos los dos significa que no importa lo que valga no antes ni después.
Lo mejor es que lo probéis en la tarea que os he dejado para ver exactamente como funciona. En la consulta de variables darle a aaa valores como: verde, Verde, verdea, gjhverde, etc y probar.
KchoPrro
26/05/13, 16:55:28
Gracias, lo he pillado casi todo, te has explicado muy bien, aunque he preferido hacer las pruebas con mi propio perfil que estaba montando, el de los auriculares.
he hecho lo mismo pero en vez de hacerlo con subtareas lo hecho como Dios Manda. Sin embargo, parece más lioso hacerlo "bien", generas unas tareas muy largas aunque tengo que decir que parece que el perfil se ejecuta mejor, más rápido (al menos es mi impresión).
Una duda más con las variables END IF y ELSE. Entiendo perfectamente cómo usarlo pero ¿cómo tendría que hacerlo para hacer estas acciones?:
(A-Realizar una acción)
IF %VOICE ~ música
(Acciones)
End IF
(B-Realizar otra acción).
IF %VOICE ~ radio
(Acciones)
End IF
Si %VOICE no es ~ ni "música", ni "radio" hacer una 3ª Acción. No se si me explico. Quiero hacer la tarea para que se realice una acción cuando una varible sea diferente a dos valores. Quería hacerlo con ELSE pero parece que solo puede ponerse un ELSE por cada IF. Por tanto, si lo pongo en la primera condición (ELSE), la segunda opción sería condición también de ELSE puesto que no sería la primera.
Me gustaría dar más pistas pero mi Samsung Galaxy S3 acaba de morir, definitivamente :cry::cry::cry: (parece que es un fallo conocido en una serie de unidades, entre las cuales me ha tocado a mí y lo desconocía). Estaré un mes o algo más en el banquillo pero prometo volver. :ok:
Saludos!
KchoPrro :gracias:
No me jodas Kchoprro!!! La muerte subita?? Joder que mala suerte no sabes cuanto lo siento!
Bueno espero que por lo menos con el ordenador estes al tanto del subforo. Sobre todo te pediria que nos dieses tu opinión sobre el hilo de recomendaciones.
Lo del IF que preguntas:
1- puedes seguir utilizando la acción Realizar Tarea:
- If %VOICE ~ musica
- Realizar Tarea Música
- FIN SI
2 También puedes hacer esto:
- If %VOICE ~ musica
- (otras acciones antes de la tarea)
- Realizar Tarea Música
- (otras acciones despues de la tarea)
- FIN SI
3 Creo que lo has entendido: evidentemente el IF con el ELSE funciona bien sólo si SOLO hay dos posibilidades. Si hay más ya tendrás seguramente que utilizar tres o más IF.
4 Lo explique en el hilo sobre CHATI el asistente de voz. Esto creo que te va a molar.
En la accion Realizar Una Tarea puedes meterle una variable. De esta manera la tarea que realiza no es un nombre es una variable. Asi que por seguir tu ejemplo:
- GET VOICE ( el resultado lo metemos en la variable %Resultadodevoz.
- REALIZAR TAREA: Nombre: %Resultadodevoz
Con dos acciones lo tienes todo montado. Te va a hacer la tarea que directamente le digas. Aunque tengas 20 tareas lo resuelves con dos acciones. Esto quiza necesite más desarrollo, sobre todo por el tema de que qué pasa si el get voice ofrece como resultado un nombre erroneo como mulica, o muzica. Pero creo que asi te puedes dar cuenta de todas las posibilidades.
5 Otra posibilidad es:
- GET VOICE ( el resultado lo metemos en la variable %Resultadodevoz.
- ESTABLECER VARIABLE: %Tareaarealizar A %Resultadodevoz
Casilla IF (MARCADA) IF %Resultadodevoz ~ MUSICA
- ESTABLECER VARIABLE: %Tareaarealizar A %Resultadodevoz
Casilla IF (MARCADA) IF %Resultadodevoz ~ RADIO
- REALIZAR TAREA: Nombre: %Resultadodevoz
Si te interesa esto último mucho lo desarrollamos más. Se podría emplear lo mismo pero con un FOR y un FOR END, con una varible array, donde meterias todas las tareas que quieres comparar con el resultado de la voz. Pero creo que lo adecuado es hacerlo en el hilo del asistente de voz. ( te voy a tener de un lado para otro jeje).
Suerte y vuelve cuanto antes.
Caravantes
26/05/13, 20:49:24
Si %VOICE no es ~ ni "música", ni "radio" hacer una 3ª Acción. No se si me explico. Quiero hacer la tarea para que se realice una acción cuando una varible sea diferente a dos valores.
Hola Perro.
Tienes varias maneras de plantear tareas con ese tipo de elecciones.
1 Anidando varias condiciones Si(if), unas dentro de otras. Te copio el esquema de una tarea en la que se ejecutan acciones específicas para cada una de las opciones (música y radio; opciónA y opciónB) y también otras acciones específicas para cuando no se cumple ninguna de las dos opciones previstas.
Si(if) %variable ~ opciónA (la variable coincide con la opciónA)
Acción1 correspondiente a la opciónA
Acción2 correspondiente a la opciónA
Else (else de opciónA, o sea cuando no se cumple la opciónA)
Si(if) %variable ~ opciónB (la variable coincide con la opciónB)
Acción1 correspondiente a la opciónB
Acción2 correspondiente a la opciónB
Else (else de opciónB, o sea cuando no coincide con la opciónA ni tampoco con la opciónB)
Acción1 correspondiente a OTRA opción
Acción2 correspondiente a OTRA opción
Fin si (endif) (respecto a la opciónB)
Fin si (endif) (respecto a la opciónA)
Se pueden hacer más de dos niveles de anidamiento, no hay límite en este aspecto.
2 Por otro lado, si te interesan un mismo conjunto de acciones para cualquiera de dos opciones, puedes hacerlo así:
Si(if) %variable ~ opciónA/opciónB (la variable coincide con la opciónA o bien con la opción B)
Acción1 correspondiente a cualquiera de las dos opciones A/B
Acción2 correspondiente a cualquiera de las dos opciones A/B
Else (else de opciónA y de opción B, o sea cuando no se cumple ninguna)
Acción1 correspondiente a cualquier otra opción distinta de A/B
Acción2 correspondiente a cualquier otra opción distinta de A/B
Fin si (endif) (respecto a opciónA/opciónB)
El esquema expueto también es extensible a situaciones en las que tengamos muchas opciones: opciónA/opciónB/opciónC/opciónD... Por otro lado, también se podría haber suprimido la parte ELSE (y las dos acciones siguientes).
3 Te puede interesar solo el caso inverso, cuando no se cumplen ninguna de las dos opciones previstas:
Si(if) %variable !~ opciónA/opciónB (la variable NO coincide con la opciónA ni con la opción B)
Acción1 correspondiente a cualquier otra opción distinta de A/B
Acción2 correspondiente a cualquier otra opción distinta de A/B
Fin si (endif) (respecto a NO coincidencia con opciónA/opciónB)
he hecho lo mismo pero en vez de hacerlo con subtareas lo hecho como Dios Manda.
Una aclaración: lo de las subtareas es totalmente correcto, igual que este otros método al que voy a llamar método directo. En el ejemplo, yo he puesto DOS acciones en cada grupo de acciones (Acción1 y Acción2). Cuando tienes pocas acciones en el grupo, suele ser preferible este método directo, para no complicarse añadiendo más tareas independientes. Cuando un grupo tiene muchas acciones puede ser más lógico separarlas en una subtarea para que la tarea principal no se haga excesivamente larga y compleja de manejar (compleja para nosotros, Tasker no tiene ningún problema con tareas de muchas acciones). Las subtareas son especialmente adecuadas cuando tienes un grupo de acciones que van a ser ejecutadas desde distintas tareas.
Perro, lamentamos la muerte de tu SGS3. Supongo que Samsung asumirá el problema como suyo y te dará otro aparato. Tennos informados, solo por curiosidad (y por saber si nos conviene evitar compras de aparatos Samsung). Gracias.
KchoPrro
27/05/13, 09:02:33
No me jodas Kchoprro!!! La muerte subita?? Joder que mala suerte no sabes cuanto lo siento!
Sí, veo que conoces de qué va el tema, normal teniendo un Note: Muerte súbita, leía un whatsapp y se quedó con el logo de Samsung bloqueado. Pensé que era un reinicio pero no hacía nada. Tras quitar la batería varias veces y ver que hacía lo mismo, se quedaba con el logo de Samsung, decidí investigar y encontré el hilo: http://www.htcmania.com/showthread.php?t=598903
En cuanto a la cuestión, debéis perdonarme porque lo que buscaba no era tanto cómo resolver el perfil (efectivamente, eso lo habría seguido en el hilo que tengo abierto a tal efecto) si no entender como funciona ELSE cuando quiero ejecutar una acción cuando NO se cumplen cualquiera de las dos condiciones.
Por lo que indicas, parece que no puede hacerse algo así, por el contrario Caravantes lo consigue.
En cualquier caso, aparco el tema hasta recuperar mi S3 (Diossss, mis datos, mis contactos, mis.... ) ya que no puedo probar nada, de momento.
Un saludote!
KchoPrro
maid450
27/05/13, 10:48:41
Por lo que indicas, parece que no puede hacerse algo así, por el contrario Caravantes lo consigue.
Si que se puede hacer, como indica Caravantes, lo que quería decir mlesir es que no se puede con 1 solo IF, cada IF es para Si x -> haz esto, si no haz lo otro, pero anidandolos uns dentro de otros puedes hacer logicas muy complejas.
Por otro lado te voy a mostrar otra forma de hacer esto concreto que para mi gusto es más limpio y legible que empezar a meter IFs dentro uno de otros y sirve para este caso:
Si %VOICE ~ música:
acciones musica
parar
Fin Si
Si %VOICE ~ radio:
acciones radio
parar
Fin Si
Si %VOICE ~ otra:
acciones otra
parar
Fin Si
acciones en caso de cualquier otro comando
Basicamente sería al final de cada IF parar la tarea, de forma que una vez ha ejecutado las acciones de un comando ya para, mientras tanto sigue avanzando, y si llega al final del todo es que no ha entrado en ningún IF (un comando desconocido o no lo ha entendido bien o algo asi)
Lo malo que tiene este metodo es que si por ejemplo hay una serie de acciones comunes que quieres ejecutar al final de todas las acciones (por ejemplo reactivar las notificaciones) tendrías que duplicar esas cacciones dentro de cada IF antes de parar.
Alto! Hay una solucion para evitar esto! ;-)
Vamos a reescribir ligeramente lo de arriba para hacerlo un poco más flexible:
Si %VOICE ~ música:
acciones musica
ir a accion: etiqueta "Fin"
Fin Si
Si %VOICE ~ radio:
acciones radio
ir a accion: etiqueta "Fin"
Fin Si
Si %VOICE ~ otra:
acciones otra
ir a accion: etiqueta "Fin"
Fin Si
acciones en caso de cualquier otro comando
etiqueta "Fin"
acciones comunes al realizar siempre al final
Así podemos hacer uso de los saltos en vez de abortar la ejecución de la tarea.
En cuanto se cumple un IF (que %VOICE sea "música", "radio", etc...) hace lo que tenga que hacer y salta al final a las acciones comunes.
Si por el contrario no entra en ninguno, llega a las "acciones en caso de cualquier otro comando" (la unica forma de que llegue aquí es no haber entrado en ningún IF anterior y por tanto no haber saltado al final) y acto seguido realiza las acciones comunes.
Espero que haya quedado claras las explicaciones y que te ayuden a entender un poco mejor los condicionales, variables y demas cosas más "marcianas" para gente sin conocimientos de programación
En cualquier caso, aparco el tema hasta recuperar mi S3 (Diossss, mis datos, mis contactos, mis.... ) ya que no puedo probar nada, de momento.
Lo dicho, como es más teoría que otra cosa lo dejo escrito para que lo analizes y ya cuando recuperes tu telefono (menuda putada... lo siento, tío) y puedas lo pruebes y trastees para aplicarlo a tus necesidades.
Aquí os dejo una cosa que he encontrado en la guía (en inglés claro pq en la española no viene) :
Escaping Variable Names
If you want to prevent a variable name being replaced, put a \ in front of it e.g.
Variable Set, %new, \%old
Will set the value of %new to %old, not the value of %old. (es decir q %new si luego miras en la lista de variables equivaldrá a %old no al valor que le hayas dado a %old)
In order to precede a variable name with a \ you can escape the backslash e.g.
Variable Set, %new, \\%old
Will set the value of %new to \ followed by the value of %old.
Sinceramente no le veo la utilidad pero quizás vosotros si.
EDITO: creo que para lo que puede valer es para si luego %old va tomando otros valores. Entonces %new mostrará el último valor de %old. Comprobado eso es. Cualquier cambio en %old se reflejará en %new.
Caravantes
08/06/13, 17:27:05
Escaping Variable Names
Gracias por compartir descubrimientos.
Haré un intento de traducción/interpretación (con la help de Google translate). El texto tiene dos partes bien diferenciadas. La primera es fácil:
Si desea evitar que un nombre de variable sea reemplazado por su contenido, ponga un \ delante de él por ejemplo,
Establecer Variable, %nuevo, \%viejo
Eso pondrá en la variable %nuevo la expresión "%viejo", no el valor de la variable %viejo.
Ahora vamos con la segunda parte, que se me hace incomprensible, quizá porque el sr. Translate y yo tenemos el mismo nivel de inglés. ;-)
Para preceder un nombre de variable con un \ se puede repetir la barra invertida, por ejemplo
Establecer Variable, %nuevo, \\%viejo
Eso pondrá en %nuevo un carácter \ seguido por el contenido de la variable %viejo.
creo que para lo que puede valer es para si luego %old va tomando otros valores. Entonces %new mostrará el último valor de %old. Comprobado eso es. Cualquier cambio en %old se reflejará en %new.
Vaya habilidad que tienes interpetando textos raros. Vete a Egipto a mirar jeroglíficos que te puedes ganar un buen dinero.
El caso es que tienes razón, he probado tu teoría y puedo confirmarla.
Establecer Variable, %nuevo, \\%viejo
Hace que la variable %nuevo se convierta en una especie de acceso directo al contenido de la variable %viejo. Si la variable %viejo va cambiando, esos cambios son igualmente reflejados en la variable %nuevo.
Todo lo cual es muy interesante... pero ahora mismo no se me ocurre cuál pueda ser la utilidad de este truco.
Jeje, el único mérito que tengo si tengo alguno es la paciencia. En realidad no lo entendía hasta que me he puesto a probarlo con dos tareas. He probado todas las opciones hasta que he visto lo que hacía. Suele ser lo que hago con tasker, ya que el manual deja mucho que desear.
alesga5
25/10/13, 00:03:52
hola, llevo un tiempo en esto de tasker pero deje de usarlo ademas de que se hacer muy poca cosa
quiero tener un perfil de "Casa" en el cual haya una variable %Casa que como tarea de entrada tenga el valor de 1 y tarea de salida un valor de 0
Esto lo quiero para tener otro perfil "Calle" en el cual quiero que se active cuando el valor de "Casa" sea 0
pero no se que hago mal ya que no me sale aqui os dejo los dos perfiles para ver si vostros encontrais el fallo:
Aqui el de casa:
Perfil: Casa (5)
Estado: Antena cercana [ Antena / Última señal:GSM:33301.43183 / 7
GSM:33301.43184 / 3
GSM:33301.43182 / 4
GSM:33301.43183 / 0 Ignorar Antenas:* ]
Ubicación: **.******/ -*****/ **m
Entrada: Anon (6)
A1: Establecer variable [ Nombre:%Casa A:on Calcular:Apagado Añadir:Apagado ]
A2: Red móvil [ Establecer:Apagado ]
A3: WiFi [ Establecer:Encendido ]
A4: Secure Settings [ Configuración:Pattern Lock Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
Salida: Anon (14)
A1: Establecer variable [ Nombre:%Casa A:off Calcular:Apagado Añadir:Apagado ]
A2: WiFi [ Establecer:Apagado ]
A3: Red móvil [ Establecer:Encendido ]
A4: Decir [ Texto:Fins després!! Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:10 Velocidad:7 Continuar tarea inmediatamente:Apagado ]
A5: Secure Settings [ Configuración:Pattern Lock Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
Aqui el de calle:
Perfil: Carrer (16)
Estado: Valor de variable [ Nombre:%Casa Operador:Coincide Valor:off ]
Entrada: Carrer (17)
A1: Volumen del sistema [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A2: Volumen de notificación [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A3: Volumen del timbre [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A4: Vibrar al sonar timbre [ Establecer:Encendido ]
Una vez hiciera funcionar estos dos pondria uno tercero que seria para cuando estuviera en clase.
Creo que esto que quiero se puede poner de la forma: Perfil activo no coincide con *Casa*
pero me gustaria hacerlo usando variables para aprender ademas de que tarde o temprano las voy a necesitar
Muchisimas gracias cracks!! teneis un nivel envidiable
Caravantes
25/10/13, 01:41:53
llevo un tiempo en esto de tasker pero deje de usarlo ademas de que se hacer muy poca cosa quiero tener un perfil de "Casa" en el cual haya una variable %Casa que como tarea de entrada tenga el valor de 1 y tarea de salida un valor de 0 Esto lo quiero para tener otro perfil "Calle" en el cual quiero que se active cuando el valor de "Casa" sea 0
Se me ocurren varias cosas que comentarte.
La primera es que no necesitas activar/desactivar los datos de Red móvil. Cuando hay conexión Wifi, Android ignora (nunca usa) la Red móvil. Cuando no hay conexión Wifi, Andoid usa la Red móvil. Por tanto es innecesario que tú te ocupes de ese detalle, no vas a mejorar nada.
En el párrafo introductorio que has hecho, dices que vas a usar una variable %Casa con valores 1 y 0. Pero luego parece (no se ve muy bien) que usas ON y OFF. Creo preferible usar realmente 1 y 0 (uno y cero), porque los números no permiten errores con las mayúsculas o con los acentos.
Por otro lado... mientras solo tengas dos situaciones (Casa y Calle, situaciones mutuamente excluyentes) es innecesario tener tres tareas, te basta con dos tareas. Hay dos formas de hacerlo: Puedes tener un solo perfil (casa) con tareas de entrada y de salida. El cambio de calle a casa implica una serie de acciones y todas ellas pueden ponerse en la tarea de entrada del perfil Casa. El cambio de casa a calle implica otras acciones y todas ellas pueden ponerse en la tarea de salida del perfil Casa. La otra forma es usar dos perfiles, cada uno con tarea de entrada (y sin ninguna tarea de salida). El cambio de calle a casa implica una serie de acciones y todas ellas pueden ponerse en la tarea de entrada del perfil Casa. El cambio de casa a calle a casa implica otra serie de acciones y todas ellas pueden ponerse en la tarea de entrada del perfil Calle. Ambos planteamientos son igual de válidos, y tienen la ventaja de que reduces de tres tareas a dos, lo cual hace que sea más sencillo y más eficiente.
Ahora bien, cuando tengas más situaciones (Casa/Calle/Clase, situaciones excluyentes, solo una en cada momento) te enfrentarás a otro escenario. Al tener TRES situaciones no puedes usar el planteamiento que has propuesto inicialmente ("Perfil activo no coincide con *Casa*", eso has escrito) porque eso puede suceder en cualquiera de las otras dos situaciones (Clase o Calle). En este escenario de tres situaciones sí te conviene tener tres perfiles, cada uno con su tarea de entrada (y quizá en alguno necesites una tarea de salida, ahora que hay tres situaciones es muy probable que sí necesites tareas de salida, aunque solo sea para manejar variables).
En cuanto a variables, hay dos formas de controlar estos tinglados. El primer modelo sería tener tres variables (%Casa, %Calle, %Clase) y cada una de ellas pueda tener valores 1 y 0. La otra forma es tener una sola variable (que puede llamarse %Situacion) y que pueda adoptar tres valores: Casa/Clase/Calle. Este método de una sola variable suele dar mejores resultados. El esquema podría ser el siguiente:
Casa. Tarea de entrada. Establecer variable %Situacion a Casa. (añade otras acciones que se necesiten al llegar a casa)
Casa. Tarea de salida. Establecer variable %Situacion a Calle.
Clase. Tarea de entrada. Establecer variable %Situacion a Clase. (añade otras acciones que se necesiten al llegar a clase)
Clase. Tarea de salida. Establecer variable %Situacion a Calle.
A partir de eso puedes crearte un perfil Calle cuyo contexto sea %Situacion ~ Calle. En la tarea de entrada pon las acciones que se necesiten al "entrar" en la situación de calle (al salir de casa o de Clase). Este perfil no necesita tarea de salida porque coincide con la entrada de Casa o de Clase.
Por último, creo que es muy poco preciso que consideres estar en Casa cuando se cumple el contexto de antena cercana. Está bien que tengas un perfil (llamado CercaDeCasa, o algo así) con contexto de Antena-Cercana que sirve para encender el Wifi en la tarea de entrada y para apagar el Wifi en la tarea de salida (sin más acciones en ese perfil). Luego podrías tener un perfil CASA con contexto de Conectado-a-mi-wifi en el que ya añades las otras acciones porque ahí ya tienes una certeza de estar en casa (o una aproximación muy buena).
alesga5
25/10/13, 16:40:06
Se me ocurren varias cosas que comentarte.
De acuerdo, muchisimas gracias. :aplausos: Me ha quedado todo mas claro y mucho mas facil, ya he arreglado los errores que me dijiste y creo que ahora estaria todo bien excepto un pequeño detalle. Primero te expongo los 3 perfiles para que me digas si esta todo correcto:
Perfil: Carrer (16)
Estado: Valor de variable [ Nombre:%Situacion Operador:Coincide Valor:Carrer ]
Entrada: Tarea Carrer (17)
A1: Red móvil [ Establecer:Encendido ]
A2: Volumen del sistema [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A3: Volumen de notificación [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A4: Volumen del timbre [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A5: Vibrar al sonar timbre [ Establecer:Encendido ]
Perfil: Casa (5)
Estado: Wifi cercana [ SSID:FaPiRoAl2 MAC:* Capacidades:* Nivel mín. de señal para activación:0 Canal:0 Alternar Wifi:Apagado ]
Entrada: Anon (6)
A1: Establecer variable [ Nombre:%Situacion A:Casa Calcular:Apagado Añadir:Apagado ]
A2: Secure Settings [ Configuración:Pattern Lock Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: WiFi [ Establecer:Encendido ]
Salida: Anon (13)
A1: Establecer variable [ Nombre:%Situacion A:Carrer Calcular:Apagado Añadir:Apagado ]
Perfil: Insti (22)
Ubicación: 39.988556 / -0.040122 / 100.0m
Entrada: Anon (26)
A1: Establecer variable [ Nombre:%Situacion A:Insti Calcular:Apagado Añadir:Apagado ]
A2: Modo silencioso [ Modo:Vibrar ]
A3: Red móvil [ Establecer:Apagado ]
A4: WiFi [ Establecer:Apagado ]
A5: Volumen del timbre [ Nivel:0 Mostrar:Apagado Sonido:Apagado ]
A6: Volumen de notificación [ Nivel:0 Mostrar:Apagado Sonido:Apagado ]
Salida: Anon (25)
A1: Establecer variable [ Nombre:%Situacion A:Carrer Calcular:Apagado Añadir:Apagado ]
Creo que asi esta todo correcto.
El detalle al que me refiero es que tengo 2 routers en mi casa ya que tiene diferentes plantas pero a la hora de poner wifi cercano o conectado a wifi solo puedo elegir uno, no me deja elegir los dos wifis aunque ponga: nombre primera red/ nombre segunda red ya que "/" segun pone en el tutorial de aqui arriba hace la funcion de "o".
Se me ocurre una solucion que si no me equivoco podria ser crear otros dos perfiles:
Un perfil que sea: conectado a wifi y uno de los routers y otro igual pero con el otro router y con una variable %Wifi para el primero valor 1 y para el otro 3 por ejemplo para poder usar despues en el perfil de Casa la variable %Wifi Matem: es impar
de esta manera creo que funcionaria pero ya habria que tener otros 2 perfiles mas y me pregunto si habria otra opcion mas sencilla.
Se me ha olvidado decir que cambiare el contexto de "insti" que ahora esta en ubicacion por: antenas cercanas
ya que no voy siempre con el mismo horario ahora en un rato tengo clase asi que aprovechare para cambiarlo
:gracias:
Caravantes
25/10/13, 23:27:05
Primero te expongo los 3 perfiles para que me digas si esta todo correcto:
Ahora lo veo mucho mejor. Todavía te comento algunas cosas más (como es lógico, me parecerá muy bien que no me hagas caso en todo/parte/nada).
Creo que no te va a funcioanr el perfil Casa. Se activa cuando tienes una Wifi cercana, pero el smartphone seguramente no podrá detectar eso si tiene la transmisión Wifi apagada (en la tarea de entrada enciendes la Wifi, y deduzco que eso es porque previamente estaba apagada).
En la versión más reciente de Android (4.3), el sistema sí es capaz de detectar redes Wifi incluso con la transmisión Wifi apagada (siempre y cuando hayas activado la casilla de Ubicar-Siempre-Por-Wifi, en los ajustes de Android). Pero creo que eso no va a funcionar con tu Jiayu g3s, que probablemente tenga una versión anterior de Android. Por consiguiente... o bien cambias el contexto del perfil Casa o bien haces que la Wifi esté activada previamente. Yo te recomiendo esto último, y te explico cómo.
Te sugiero hacer otro perfil llamado CercaDeCasa, con contexto de AntenaCercana, cuya tarea de entrada solo tenga una acción para encender la Wifi, y cuya tarea de salida solo tenga una acción para apagar la Wifi. Así, cuando te acerques a casa se encenderá la Wifi y eso perfitirá que el contexto de Wifi-Cercana funcione correctamente cuando llegues a casa. Del mismo modo, cuando te alejas de casa se apaga la Wifi para ahorrar batería.
Respecto a los dos routers, no entiendo cuál es la dificultad. Si pones (a mano) los nombres de las dos SSID, separados por una barra de dividir... eso debería funcionar. ¿Acaso no funciona? ¿Acaso no eres capaz de escribir los dos nombres de red? ¿Cuál es el problema, exactamente?
Bueno, sea cual sea el problema, hay otra solución:
Utiliza un perfil Casa1 con el contexto del primer router, y con las tareas que ya tienes. Utiliza un perfil Casa2 con el contexto del segundo router, y asigna a ese segundo perfil las mismas tareas que ya tienes asignadas al primer perfil. Tienes un perfil más pero tienes el mismo número de tareas, por lo que la complicación es mínima.
En este escenario de Casa1 y Casa2, creo preferible prescindir de la variable %Situacion. En lugar de eso es más adecuado utilizar %PACTIVE, una variable de Tasker que siempre contiene la lista de perfiles activos (separados por comas). De esa forma, si el perfil Casa1 está activado, %PACTIVE coincidirá con *,Casa1,* (un asterisco representa cualquier carácter o conjunto de caracteres); si el perfil Casa2 está activado, %PACTIVE coincidirá con *,Casa2,*; si cualquier perfil de Casa está activado, %PACTIVE coincidirá con *,Casa* (he omitido la coma del final para que el asterisco también cubra el dígito final, ya sea Casa1 o Casa2); esta condición %PACTIVE ~ *,Casa* puedes utilizarla en cualquier tarea o contexto para saber si estas en tu casa, cerca de cualquiera de los dos routers. Sigamos: si el perfil Insti está activado, %PACTIVE coincidirá con *,Insti,*. Una vez entendido todo esto, podemos hacer el perfil Carrer (Calle) con el contexto de que %PACTIVE coincida con *,Casa*/*,Insti,*, y activando (debajo) la casilla de invertir para que el perfil Carrer se active cuando esa codición NO se cumpla (o sea, cuando no hay activado ningún perfil que se llame Casa* ni Insti).
Este sistema (prescindir de la variable %Situacion y usar %PACTIVE) creo que es preferible a lo que te sugerí ayer, o sea que lo veo mejor aunque seas capaz de construir un único perfil Casa. La ventaja más evidente es que prescindes de la variable %Situacion y por tanto también puedes prescindir de las tareas de salida en los perfiles Casa e Insti. Te quedas solo con las tareas de entrada: es un planteamiento más simple y con menos posibilidades de error.
alesga5
26/10/13, 01:39:42
Ahora lo veo mucho mejor. Todavía te comento algunas cosas más
Bueno, ahora parece que si que si :D
Otra vez mil gracias por tu ayuda asi si que se aprende!!
Te dejo aqui mis perfiles. Decir que el perfil antena cercana activar/desactivar wifi esta creado y que ahora si que parece funcionar clrrectamente los dos routers con la "/" no se exactamente que debi de poner mal antes.
Perfil: Casa (5)
Estado: Conectado a Wifi [ SSID:FaPiRoAl/FaPiRoAl2 MAC:* IP:* ]
Estado: Valor de variable [ Nombre:%PACTIVE Operador:Coincide Valor:*,Casa,* ]
Entrada: Anon (6)
A1: Secure Settings [ Configuración:Pattern Lock Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A2: WiFi [ Establecer:Encendido ]
A3: Brillo de pantalla [ Nivel:0 Deshabilitar 'Safeguard':Apagado Ignorar nivel actual:Apagado Efecto inmediato:Encendido ]
A4: Decir [ Texto:Benvingut a casa! Motor: Voz:com.ivona.tts:spa-ESP Stream:2 Tono:10 Velocidad:7 Continuar tarea inmediatamente:Apagado ]
Perfil: Insti (22)
Estado: Antena cercana [ Antena / Última señal:GSM:38001.12610 / 7
GSM:38001.12615 / 6
GSM:38001.11286 / 4
GSM:38001.11283 / 2
GSM:38001.12614 / 7 Ignorar Antenas:* ]
Estado: Valor de variable [ Nombre:%PACTIVE Operador:Coincide Valor:*,Insti,* ]
Entrada: Anon (26)
A1: Modo silencioso [ Modo:Vibrar ]
A2: Red móvil [ Establecer:Apagado ]
A3: WiFi [ Establecer:Apagado ]
A4: Volumen del timbre [ Nivel:0 Mostrar:Apagado Sonido:Apagado ]
A5: Volumen de notificación [ Nivel:0 Mostrar:Apagado Sonido:Apagado ]
Perfil: Carrer (16)
Estado: No Valor de variable [ Nombre:%PACTIVE Operador:Coincide Valor:*,Casa,*/*,Insti,* ]
Entrada: Tarea Carrer (17)
A1: Red móvil [ Establecer:Encendido ]
A2: Secure Settings [ Configuración:Pattern Lock Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: Volumen del sistema [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A4: Volumen de notificación [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A5: Volumen del timbre [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A6: Vibrar al sonar timbre [ Establecer:Encendido ]
A7: Brillo de pantalla [ Nivel:187 Deshabilitar 'Safeguard':Apagado Ignorar nivel actual:Apagado Efecto inmediato:Encendido ]
No podre asegurar que funcionen bien todos hasta el lunes que tengo clase pero parece que si
Y una duda, cuando pones por ejemplo *,Casa,* la funcion de las comas es decir que tiene que coincidir exactamente con Casa no? Por eso cuando propones dos perfiles (Casa1 y Casa2) por si no me funcionaba bien con uno pones *,Casa* no?
Edito: tengo un perfil noche que se activa si son entre las 23h y las 12h y ademas se esta cargando con el cargador y me he encontrado con un conflicto con el perfil calle ya que el de noche apaga wifi y entonces se pone el de calle. Cual seria la manera de que el de noche predominara sobre el otro?
Perdona si soy muy torpe...
Gracias por todo crack!!
Caravantes
26/10/13, 05:50:49
el perfil antena cercana activar/desactivar wifi esta creado
Entonces deberías quitar del perfil Casa la acción A2: WiFi Establecer:Encendido y también deberías de quitar del perfil Insti la acción A3: WiFi Establecer:Apagado . Deja que sea la AntenaCercanaDeCasa la que controle el estado del Wifi, y no mezcles en eso a los otros perfiles, no lo necesitas.
Además, en el perfil Casa tienes un contexto de Estado: Valor de variable %PACTIVE Coincide *,Casa,*. Ese contexto está mal, hay que quitarlo. La variable %PACTIVE coincidirá con *,Casa,* como consecuencia de que el perfil se active, no como condición para que eso ocurra. Si dejas ese contexto... cuando vengas de la calle y entres en casa el perfil no se activará nunca porque en principio la variable %PACTIVE no coincide con *,Casa,* y mientras eso siga siendo así... eso mismo impide la activación del perfil (porque tú lo has convertido en un contexto). Espero haberme explicado.
Lo mismo para el perfil INSTI, con su contexto Estado: Valor de variable %PACTIVE Coincide *,Insti,*. Hay que quitarlo, por idénticos motivos. Cada uno de esos perfiles debe quedarse con un único contexto.
El que tienes bien es el perfil de calle/Carrer: ahí sí que hay que usar %PACTIVE como contexto porque la única forma que tienes de "identificar" la calle es por exclusión, cuando no estás en casa ni en el insti. Esa parte sí que la has entendido y ejecutado correctamente.
Lo de los asteriscos (*,Casa,* y *,Casa*) creo que también lo has entendido perfectamente. Los asteriscos se pueden usar al chequear cualquier variable (no solo %PACTIVE, sino cualquier otra); Y no siempre hay que poner asteriscos al comienzo y al final, pueden estar en cualquier parte. Tienes una explicación un poco más detallada en http://www.htcmania.com/showpost.php?p=4929878
Y respecto al perfil NOCHE que recarga la batería y apaga el wifi... ¿Por qué quieres que ese perfil nocturno apague el Wifi? Por ahorrar batería no puede ser puesto que está enchufado y recargando. Si me lo explicas tal vez encontremos una solución. Pero mi primera idea vuelve a ser lo que ya he dicho: que el encendido/apagado del Wifi se haga solo en el perfil de AntenaCercanaDeCasa, y que el resto de perfiles no se inmiscuyan en ese tema pues solo van a complicar y sabotear el conjunto.
alesga5
26/10/13, 11:29:55
Entonces deberías quitar del perfil Casa la acción A2: WiFi Establecer:Encendido y también deberías de quitar del perfil Insti la acción [B]A3: WiFi
Ya he quitado los dos de encender y apagar wifi del perfil casa e insti.
Tambien he quitado los %PACTIVE como contextos y no he puesto nada ya que he entiendo que no hace faltaecir que la variable tome valor de Casa o Insti ya que de por si los toma al activarse asi quw he dejado solo lo del perfil Calle
Aqui estan:
Perfil: Casa (5)
Estado: Conectado a Wifi [ SSID:FaPiRoAl/FaPiRoAl2 MAC:* IP:* ]
Entrada: Anon (6)
A1: Secure Settings [ Configuración:Pattern Lock Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A2: Decir [ Texto:Benvingut a casa! Motor: Voz:com.ivona.tts:spa-ESP Stream:2 Tono:10 Velocidad:7 Continuar tarea inmediatamente:Apagado ]
A3: Brillo de pantalla [ Nivel:0 Deshabilitar 'Safeguard':Apagado Ignorar nivel actual:Apagado Efecto inmediato:Encendido ]
Perfil: Insti (22)
Estado: Antena cercana [ Antena / Última señal:GSM:38001.12610 / 7
GSM:38001.12615 / 6
GSM:38001.11286 / 4
GSM:38001.11283 / 2
GSM:38001.12614 / 7 Ignorar Antenas:* ]
Entrada: Anon (26)
A1: Modo silencioso [ Modo:Vibrar ]
A2: Red móvil [ Establecer:Apagado ]
A3: Volumen del timbre [ Nivel:0 Mostrar:Apagado Sonido:Apagado ]
A4: Volumen de notificación [ Nivel:0 Mostrar:Apagado Sonido:Apagado ]
Perfil: Carrer (16)
Estado: No Valor de variable [ Nombre:%PACTIVE Operador:Coincide Valor:*,Casa,*/*,Insti,* ]
Entrada: Tarea Carrer (17)
A1: Red móvil [ Establecer:Encendido ]
A2: Secure Settings [ Configuración:Pattern Lock Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: Volumen del sistema [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A4: Volumen de notificación [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A5: Volumen del timbre [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
A6: Vibrar al sonar timbre [ Establecer:Encendido ]
A7: Brillo de pantalla [ Nivel:187 Deshabilitar 'Safeguard':Apagado Ignorar nivel actual:Apagado Efecto inmediato:Encendido ]
Luego el perfil noche es este:
Perfil: Nit (4)
Hora: Desde 23:00 Hasta 12:15
Estado: Cargando [ Origen:Cargador ]
Entrada: Tarea Nit (8)
A1: Modo silencioso [ Modo:Vibrar ]
A2: Red móvil [ Establecer:Apagado ]
A3: WiFi [ Establecer:Apagado ]
El objetivo de apagar el wifi es para que no me toquen las narices con la vibracion de los whatsapps pero sino quitare la vibracion al activar el perfil noche que supongo que se podra y ya esta.
Tambien soy consciente de que el perfil noche esta mal montado ya que tal y como esta puesto ahi ese contexto una vez lleguen las 12:15 se desactivara si o si pero esque tampoco se como se pone para que sea a partir de las 23h hasta las 9 por ejemplo pero que a las 9 no se desactive. Pero bueno, esto ya es otro tema que no son variables
Caravantes
26/10/13, 23:23:12
El objetivo de apagar el wifi es para que no me toquen las narices con la vibracion de los whatsapps pero sino quitare la vibracion al activar el perfil noche
Efectivamente. Lo lógico es que mientras duermes el smartphone no te moleste con los whatsapp, pero lo adecuado en ese caso es silenciar el teléfono y dejarlo incluso sin vibración. Desactivar el Wifi es como matar moscas a cañonazos, y lo peor es que tiene efectos secundarios porque impide que funcionen bien otros perfiles como el de casa, que usan un contexto de Wifi.
Aunque no lo has dicho explícitamente, deduzco que pones el smartphone a cargar batería cuando te vas a dormir, y lo desenchufas cuando te levantas.
Respecto al horario de ese perfil noche... (efectivamente se sale del hilo inicial pero creo que es oportuno continuar ya que estamos en faena; gracias por tu consideración al respecto). Te sugiero otro planteamiento, con dos perfiles. Ahora mismo tienes un perfil Noche con dos tareas (supongo que tienes tarea de entrada y tarea de salida, aunque esta última no la has puesto). Lo malo es que ambas tareas van vinculadas al mismo perfil y por tanto al mismo conjunto de contextos. Usar dos perfiles te permite ajustar de forma independiente los contextos que disparan cada una de esas tareas, la de inicio (de la noche) y la de final (de la noche). Igualmente tiendrás las mismas dos tareas, solo que no son tarea de entrada y salida del mismo perfil, sino que serán dos tareas en dos perfiles distintos. Veamos la propuesta de esos perfiles:
Primer perfil que podría llamarse InicioNoche o Durmiendo o Silencio.
Contexto1 Hora: Desde 23:00 Hasta 09:00
Contexto2: Estado: Cargando
Tarea de entrada: Poner silencio y desactivar vibración (no necesitas desactivar el Wifi ni la Red móvil). Segunda acción: Estado del Perfil FinalNoche, Encendido (esto habilita el otro perfil).
Segundo perfil que podría llamarse FinalNoche o Despertando o ConVolumen o Normal.
Contexto: Estado: Cargando, pero activando la casilla de Invertir (o sea: NO cargando)
Tarea de entrada: Quitar silencio (Activar volumen, activar vibración). Segunda acción: Estado del Perfil FinalNoche, Apagado (esto deshabilita el propio perfil).
Entiende que la tarea de este segundo perfil se va a ejecutar en cualquier momento en que desenchufes el cargador, pero solo cuando previamente se haya activado el otro perfil. Por ejemplo, si a media tarde pones el cargador durante cinco minutos y a continuación lo quitas.... en ese momento no se va a ejecutar la tarea porque el perfil permanece deshabilitado (desactivado) desde que desenchufaste el cargador por la mañana. Entiende también que cuando este segundo perfil se activa... solo permanece activado durante un segundo, porque su propia tarea lo desactiva o deshabilita.
Puedes ver que este sistema de dos perfiles independiza los contextos de las dos tareas, y así tienes más flexibilidad para elegir qué contexto(s) debe(n) desencadenar la primera tarea y qué otro(s) contexto(s) debe(n) desencadenar la segunda tarea. Aún así, con las acciones de habilitar/deshabilitar hemos sido capaces de "encadenar" los dos perfiles para que se ejecuten siempre en cierto orden.
Ahora bien, si inicialmente no tenías tarea de salida en ese prefil Noche, entonces bien puedes prescindir del segundo perfil que te he propuesto... pero en tal caso no entiendo bien por qué te preocupa que el perfil se desactive a las 9 o a las 12:15.
alesga5
27/10/13, 18:41:31
Efectivamente. Lo lógico es que mientras duermes el smartphone no te moleste con los whatsapp, pero lo adecuado en ese caso es silenciar el teléfono y dejarlo incluso sin vibración.
Finalmente muchisimas gracias por tu pedazo ayuda eres un crack!! :thumbup:
Ya funciona todo correctamente
Seguire por aqui pensando en nuevos perfiles que sean utiles y preguntando si tengo dudas para algun dia llegar a ser un crack en esto como tu ;)
Ademas me has demostrado que las cosas se pueden hacer facilmente y que somos nosotros los que las complicamos con tareas de salidas o intentando meterlo todo en un mismo perfil
Gracias!!
Quake004
23/11/13, 16:31:26
Hola, no entiendo por qué se pone *,Casa,* en lugar de directamente Casa en el valor de la variable %PACTIVE.
También me gustaría mejorar mi perfil "Facultad" para que se active con la ubicación, pero no sé si es mejor que utilice la wifi de la facultad, la antena o el gps. El problema del wifi es que no llega a todos lados dentro del edificio, que mide 250*50 metros, y no me gustaría que me suene el móvil. Luego, el gps es más preciso y le puedo dar un radio grande para asegurarme, pero consumiría bastante batería. Me gustaría gastar poca batería por lo que tendría que usar la antena pero no sé exactamente la seguridad que me daría, no se si le puedo poner un radio grande para asegurarme igual que con el gps. ¿Qué seguridad me daría pasearme con la bici por fuera de la facultad con el móvil en el bolsillo escaneando las antenas a las que se conecta y luego seleccionar esas antenas como contexto? Aquí dejo los perfiles, a ver si me podéis recomendar algo para mejorarlos:
Perfil: Facultad (24)
Día: Lun, Mar, Mié, Jue o Vie
Hora: Desde 08:00 Hasta 15:30
Entrada: Clase (19)
A1: Modo silencioso [ Modo:Encendido ]
Perfil: Casa (4)
Priority: 5 CoolDown: 3600
Estado: Wifi cercana [ SSID:Orange-7918/VodafoneC6E7 MAC:* Capacidades:* Nivel mín. de señal para activación:0 Canal:0 Alternar Wifi:Apagado ]
Entrada: Casa (6)
A1: Secure Settings [ Configuración:Pattern Lock Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A2: Secure Settings [ Configuración:Keyguard Disabled/BG Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A4: Volumen del sistema [ Nivel:7 Mostrar:Apagado Sonido:Apagado ]
A5: Volumen multimedia [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
Perfil: Calle (8)
Estado: No Valor de variable [ Nombre:%PACTIVE Operador:Coincide Valor:*,Casa,*/*,Clase,* ]
Entrada: Calle (11)
A1: Secure Settings [ Configuración:Pattern Lock Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A2: Secure Settings [ Configuración:Keyguard Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: Modo silencioso [ Modo:Apagado ]
A4: Modo silencioso [ Modo:Vibrar ]
Muchas gracias, a ver si aprendo a usar tasker tan bien como vosotros ^^
Caravantes
23/11/13, 17:13:30
no entiendo por qué se pone *,Casa,* en lugar de directamente Casa en el valor de la variable %PACTIVE.
Lee los mensajes anteriores de este mismo hilo, que lo explican en frases como la siguiente:
es más adecuado utilizar %PACTIVE, una variable de Tasker que siempre contiene la lista de perfiles activos (separados por comas). De esa forma, si el perfil Casa1 está activado, %PACTIVE coincidirá con *,Casa1,* (un asterisco representa cualquier carácter o conjunto de caracteres); si el perfil Casa2 está activado, %PACTIVE coincidirá con *,Casa2,*; si cualquier perfil de Casa está activado, %PACTIVE coincidirá con *,Casa* (he omitido la coma del final para que el asterisco también cubra el dígito final, ya sea Casa1 o Casa2); esta condición %PACTIVE ~ *,Casa* puedes utilizarla en cualquier tarea o contexto para saber si estas en tu casa, cerca de cualquiera de los dos routers.
¿Qué seguridad me daría pasearme con la bici por fuera de la facultad con el móvil en el bolsillo escaneando las antenas a las que se conecta y luego seleccionar esas antenas como contexto?
Los contextos de antena cercana pueden dar problemas. Por un lado la señal de la antena puede no ser continua, a veces tiene cortes y eso provoca que el perfil se desactive; aunque eso no pasa siempre, quizá a tí no te pase, pruebalo poniéndote una notificación en la tarea de salida. Por otro lado, el contexto de antena puede dar positivo en una zona demasiado amplia, como de un kilómetro de radio o así, aunque eso puede ser el problema menor si no se solapa con otras zonas en las que sueles estar (con el sonido activado), también te conviene comprobarlo en la práctica.
Lukevalci
23/11/13, 17:45:39
Buenas,
la variable PACTIVE contiene todos los perfiles activos en el momento separados por coma, por tanto si tienes activos los perfiles Casa y Facultad, el valor de la variable PACTIVE será ",Casa,Facultad,". Si por el contrario tienes activo sólo el perfil Casa, la variable PACTIVE toma el valor ",Casa,". Por este motivo hay que poner los asteriscos (*), que funcionan como comodines, e indican que no importa lo que haya por delante o por detrás del texto que acompañan.
Si comparas "Casa" para el valor de PACTIVE NUNCA se va a cumplir la condición ya que, como hemos visto antes, si sólo el perfil Casa está activo, PACTIVE vale ",Casa,". Te faltarían las comas de delante y detrás. Por eso hay que poner los comodines por delante y detrás
Tu perfil de facultad por día y hora es correcto y el más certero pero tiene el inconveniente que si por ejemplo sales de la facultad para ir a otro sitio, seguirá estando activo el perfil Facultad en los días y horas que ajustaste.
Puedes hacerte un perfil que sea "Cerca de facultad" con contexto por antenas para que se te active la wifi. Una vez encendida la wifi que se conecte a la red de tu facultad y que se active el perfil Facultad (con contexto "conectado a wifi"). El inconveniente de esto es lo que tú ya comentas, que no tienes suficiente cobertura wifi en toda tu universidad, con lo que estarás entrando y saliendo del perfil según dónde te encuentres de tu campus universitario.
Por tanto lo mejor es que si no te mueves de tu facultad durante los días y horas que mencionas, dejes el perfil como lo tienes, con contexto de día y hora.
Si te mueves y sales de tu campus yo haría que el perfil se lance con contexto de antena (mejor y menos gasto de batería que por GPS), haciendo un doble perfil como te indiqué antes o un único perfil que sea Facultad con contexto por antenas.
Nota: Existe un interesante artículo de Caravantes que trata de los perfiles con tareas de entrada y salida con demora. Puede que te sea de utilidad para el caso que decidas hacer un doble perfil (activar wifi + conexión wifi de tu facultad).
Quake004
24/11/13, 10:07:02
Hola, muchas gracias a los dos por responder tan rápido.
Acabo de comprobar el valor de la variable PACTIVE y efectivamente aparece como me has dicho Lukevalci, se me podría haber ocurrido mirarlo antes pero no caí.
Por lo de la facultad, si me ubico con antenas, como vivo a un kilómetro de la facultad, quizás me encontraría con que tengo el sonido apagado en mi casa. Pero la verdad que el JuiceDefender tiene mucha precisión para activar la wifi, aunque tiene un proceso de entrenamiento que no sé si podré hacer con tasker. Yo me preocupo mucho por el gasto de batería porque hay veces que no me dura ni un día, pero he visto que el precio del kWh es de unos 15 céntimos por lo que teniendo en cuenta que para cargar 1 Wh se gastan 8 Wh en la red eléctrica y que mi batería es de 8 Wh, me gastaría 3,5 € al año en cargar el móvil, lo que con dos baterías sería 7 € y además la mayoría de los días lo cargo en la facultad, así que me voy a comprar otra batería. Así podré dejar el wifi encendido todo el día o sino hacer un perfil para que se active por las antenas en cada una de las wifis que se conecta ahora mismo con el JuiceDefender. Y, como si se desconecta de la wifi de la universidad lo más que va a hacer es vibrar pues no pasa nada. Aunque para tener el wifi encendido siempre me tendré que desinstalar el JuiceDefender, pero ya no lo necesitaré de todas formas para ahorrar batería, o puedo dejar el JuiceDefender para que se conecte a las wifis y que no me apague el wifi al apagar la pantalla. Ahora mismo en el JuiceDefender tengo tres wifis con radios, precisión media y algo que no sé de: 126 m, 89 m, 1APs (¿son las antenas?); 131 m, 97 m, 1 APs; 300 m, 300 m, 2 APs. No sé si se puede lograr esta precisión con tasker. Anda me acabo de dar cuenta de que con el juice defender tenía mal pensados mis perfiles, porque iba a estar en el perfil Calle siempre que el móvil tuviese la pantalla apagada.
Quake004
26/11/13, 15:23:58
Hola, voy a hacer un perfil para que se me conecte el wifi por contexto de antena cercana. Para empezar he hecho un perfil que me notifican si estoy cerca de la antena o no. Quiero que al salir del perfil se guarde la antena a la que se haya conectado y me guarde la ubicación en la que se ha salido del perfil para que cuando mire el móvil pueda ver si tengo que agregar esa antena al contexto o queda lejos de mi facultad. Y, si es posible, que al salirse otra vez, al conectarse a una antena diferente a la anterior, me guarde la antena en otra variable. Estos son mis perfiles:
Perfil: Facultad (24)
Estado: Wifi cercana [ SSID:alumnos MAC:* Capacidades:* Nivel mín. de señal para activación:0 Canal:0 Alternar Wifi:Apagado ]
Entrada: Clase (19)
A1: Modo silencioso [ Modo:Encendido ]
Perfil: Cerca De Facultad (12)
Estado: Antena cercana [ Antena / Última señal:GSM:5002.36720191 / 4
GSM:5002.36719783 / 6
GSM:5002.36720194 / 5
GSM:5002.36720193 / 5
GSM:5002.20037 / 7 (tel:5002.20037%20%2F%207)
GSM:5002.36719803 / 5
GSM:5002.36720311 / 5 Ignorar Antenas:* ]
Entrada: Anon (13)
A1: Notificación [ Título:Facu Cercana Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ]
Salida: Anon (14)
A1: Notificación [ Título:Fuera De Facu Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ]
A2: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):10 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ]
A3: Establecer variable [ Nombre:%Fueraderangofacu A:%LOC Calcular:Apagado Añadir:Apagado ]
A4: Abrir mapa [ Modo:Punto Dirección:%Fueraderangofacu Lat, Long: Zoom:1 Etiqueta: ]
A5: Establecer variable [ Nombre:%Antenafacu A:%CELLID Calcular:Apagado Añadir:Apagado ]
Hoy he hecho este perfil y el mapa se me abría cada dos por tres y buscaba %LOC en lugar de buscarme la ubicación en la que se me había desconectado el perfil. Supongo que será porque la acción establecer variable no sirve para guardar la ubicación de %LOC en otra variable como yo creía. La variable Antenafacu coge un valor 5002.36720193, por ejemplo, pero yo creo que le falta "/ 5" y no se si puedo agregar ese valor sin "/ 5" al contexto.
Perfil: Noche (10)
Estado: Valor de variable [ Nombre:%PACTIVE Operador:Coincide Valor:*Casa* ]
Hora: Desde 22:00 Hasta 08:00
Entrada: Noche (2)
A1: Rotación de pantalla [ Establecer:Apagado ]
A2: Volumen de notificación [ Nivel:0 Mostrar:Apagado Sonido:Apagado ]
A3: WiFi [ Establecer:Apagado ]
A4: Red móvil [ Establecer:Apagado ]
El perfil noche lo he puesto también porque tal y como está ahora no me funciona porque al apagar el WiFi el perfil Casa deja de estar activo y por tanto el Noche también. ¿Qué me recomendáis?
Muchas gracias
Caravantes
27/11/13, 00:22:53
Quiero que al salir del perfil se guarde la antena a la que se haya conectado y me guarde la ubicación en la que se ha salido del perfil para que cuando mire el móvil pueda ver si tengo que agregar esa antena al contexto o queda lejos de mi facultad.
Por tu forma de explicarlo da la impresión de que tienes una idea en mente: cuando se desactiva el perfil es porque ya estoy enlazado a otra antena distinta a las que figuran en el contexto; dicho de otra forma: al cambiar la cobertura a otra antena distinta a las que figuran en el contexto es cuando ese contexto deja de cumplirse. Pero la verdad es que no tenemos ninguna certeza de que eso sea así. Mira el siguiente gráfico
416862
Supongamos que estás en el punto X construyendo un contexto de Antena Cercana y tienes "cobertura" de tres antenas (A, B, C). El contexto memorizará las referencias de las tres antenas. La duda es si el perfil se desactiva al salir de la zona roja o al salir de la zona azul. Esto ha generado algunos debates como el que puedes ver en el enlace siguiente:
http://www.htcmania.com/showthread.php?p=10682028
Pero la prueba que tú mismo has hecho es una buena pista para resolver esa duda: en el perfil "cerca de la facu", tienes un contexto de antenas que incluye la antena cuyo identificativo es "5002.36720193", y resulta que esa es la antena a la que estabas conectado diez segundos después de que se desactivara el perfil porque la tarea de salida lo ha comprobado en la variable %CELLID. Eso parece apoyar la idea de que el contexto es la zona roja y no la zona azul, puesto que sigues conectado a una de las antenas "azules" pero el contexto (rojo) ha dejado de cumplirse.
[Para ser "científicos" y tener certeza habría que repetir esa prueba en más circunstancias, sin la demora de los 10 segundos y verificando que el perfil no se haya reactivado mientras se ejecuta la tarea de salida].
Por lo ya explicado, carece de sentido añadir esa antena al contexto, puesto que esa antena ya estaba en el contexto.
Pero además, en mi opnión, es una "temeridad" añadir antenas -manualmente- a un contexto, pues sospecho que eso solo va a conseguir que dicho contexto funcione peor. Cuando estas en un punto (X) y creas un contexto de Antena-Cercana, Tasker ya pone en ese contexto todas las antenas de las que se recibe algún tipo de señal (A, B y C). Supongamos otra antena nueva (representada con la letra D en el segundo gráfico) que por tanto no se capta en el lugar original en el que se creó el contexto.
416886
Al añadir esa antena D estamos intentando ampliar la "zona azul" del contexto, pero al mismo tiempo estáremos disminuyendo (o incluso haciendo desaparecer) la "zona roja" común a todas las antenas referenciadas en el contexto. ¿Estás seguro de que el contexto funciona con la zona azul y no con la roja? Yo sigo opinando que funciona con la roja, y creo que por ese motivo añadir antenas manualemente nunca va a funcionar bien.
Otra cosa: en el contexto se memorizan informaciones de diferentes antenas, cada una en una línea que incluye una barra de dividir "/". A la izquierda de la barra va el identificativo de la antena (su "nombre") y a la derecha de la barra va un dígito que representa la intensidad de señal recibida de esa antena. Tasker usa esos valores de intensidad de señal para delimitar la zona con más precisión. Ahora bien, la variable %CELLID solo contiene el identificativo de la antena a la que se está conectado, y no incluye ninguna indicación sobre la intensidad de la señal recibida de esa antena.
El perfil noche lo he puesto también porque tal y como está ahora no me funciona porque al apagar el WiFi el perfil Casa deja de estar activo y por tanto el Noche también. ¿Qué me recomendáis?
Pues ya has visto que lo has planteado de una forma en que unos perfiles son icompatibles con otros. Tienes varias alternativas, todas evidentes:
- Que el perfil de "casa" use otro contexto distinto a la conexión Wifi.
- Que el perfil de noche no desactive el Wifi. Yo te recomiendo ésta opción. En lugar de desactivar la wifi, solo activa el modo silencio para que el aparato no te moleste.
Quake004
27/11/13, 10:08:42
Hola, muchas gracias por la explicación. Yo soy de la opinión de que al añadir antenas se amplía el radio de acción del perfil porque cuando escaneo las antenas quieto solo coge una pero al moverme se empiezan a coger más antenas por lo que creo que se aumenta la zona en la que el perfil está activo. De todas formas probaré a añadir todas las antenas que consiga a ver si así deja de funcionar el perfil o funciona mejor. Por cierto, ¿no hay alguna variable interna que diga la intensidad de la antena? Y otra cosa, ¿por qué al abrirse el mapa me busca %LOC en vez de buscar la ubicación guardada en esa variable?
Caravantes
27/11/13, 22:55:22
¿por qué al abrirse el mapa me busca %LOC en vez de buscar la ubicación guardada en esa variable?
A4: Abrir mapa [ Modo:Punto Dirección:%Fueraderangofacu Lat, Long: Zoom:1 Etiqueta: ]
Creo que has cometido un error. La variable %LOC devuelve las coordenadas (latitud y longitud) del punto, y eso es lo que guardas en la variable %Fueraderangofacu. Pero luego le dices que abra el mapa en la dirección %Fueraderangofacu, y se hace un lío porque ahí no tienes una dirección postal (nombre de calle y número) sino que contiene unas coordenadas. Supongo que puedes poner el nombre de la variable %Fueraderangofacu en el sitio adeucado y funcionará correctamente:
A4: Abrir mapa [ Modo:Punto Dirección: Lat, Long: %Fueraderangofacu Zoom:1 Etiqueta: ]
Quake004
29/11/13, 19:17:46
Ayer agregué todas las antenas que pude junto con su intensidad y hoy el perfil no se me ha apagado ninguna vez mientras que estaba en la facultad y se me ha apagado a medio camino al volver a mi casa. Pero ahora he visto el tema Activacion Wifi a traves de señal antena (http://www.htcmania.com/showthread.php?t=683069) y me ha parecido mejor el método de la activación con wifi cercana. Así que solo me falta saber cómo puedo apagar la wifi cuando hayan pasado unos minutos sin señal.
Perfil: Facultad (24)
Estado: Wifi cercana [ SSID:alumnos MAC:* Capacidades:* Nivel mín. de señal para activación:0 Canal:0 Alternar Wifi:Apagado ]
Entrada: Clase (19)
A1: WiFi [ Establecer:Encendido ]
A2: Secure Settings [ Configuración:Pattern Lock Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: Secure Settings [ Configuración:Keyguard Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A4: Modo silencioso [ Modo:Encendido ]
Salida: Apagar Wifi (20)
A1: WiFi [ Establecer:Apagado ]
Perfil: Casa (4)
Priority: 5 CoolDown: 3600
Estado: Wifi cercana [ SSID:Orange-7918/VodafoneC6E7 MAC:* Capacidades:* Nivel mín. de señal para activación:0 Canal:0 Alternar Wifi:Apagado ]
Entrada: Casa (6)
A1: WiFi [ Establecer:Encendido ]
A2: Secure Settings [ Configuración:Pattern Lock Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: Secure Settings [ Configuración:Keyguard Disabled/BG Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A4: Volumen del sistema [ Nivel:7 Mostrar:Apagado Sonido:Apagado ]
A5: Volumen multimedia [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
Salida: Apagar Wifi (20)
A1: WiFi [ Establecer:Apagado ]
Perfil: Calle (8)
Estado: No Valor de variable [ Nombre:%PACTIVE Operador:Coincide Valor:*,Casa,*/*,Clase,* ]
Entrada: Calle (11)
A1: Secure Settings [ Configuración:Pattern Lock Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A2: Secure Settings [ Configuración:Keyguard Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: Modo silencioso [ Modo:Apagado ]
A4: Modo silencioso [ Modo:Vibrar ]
Caravantes
29/11/13, 22:59:23
he visto el tema Activacion Wifi a traves de señal antena y me ha parecido mejor el método de la activación con wifi cercana. Así que solo me falta saber cómo puedo apagar la wifi cuando hayan pasado unos minutos sin señal.
A) ¿Tienes Android 4.3 o superior? En caso afirmativo...
B) ¿Tienes activado el ajuste Wifi que viene a ser algo así como "usar la detección de redes Wifi para mejorar la ubicación, incluso con el Wifi apagado?
Si ambas respuestas son positivas podrás resolver el problema fácilmente.
Quake004
29/11/13, 23:17:17
Sí, tengo esas dos cosas pero aun así no tengo claro como debo apagar la Wifi. Este es mi intento:
Perfil: Casa (4)
Priority: 5 CoolDown: 3600
Estado: Wifi cercana [ SSID:Orange-7918/VodafoneC6E7 MAC:* Capacidades:* Nivel mín. de señal para activación:0 Canal:0 Alternar Wifi:Apagado ]
Entrada: Casa (6)
A1: WiFi [ Establecer:Encendido ]
A2: Secure Settings [ Configuración:Pattern Lock Disabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A3: Secure Settings [ Configuración:Keyguard Disabled/BG Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings ]
A4: Volumen del sistema [ Nivel:7 Mostrar:Apagado Sonido:Apagado ]
A5: Volumen multimedia [ Nivel:15 Mostrar:Apagado Sonido:Apagado ]
Salida: Apagar Wifi (20)
A1: Si (if) [ %WIFII !~ *VodafoneC6E7*/*Orange-7918* ]
A2: WiFi [ Establecer:Apagado ]
Por cierto, ¿qué es CoolDown: 3600?
Caravantes
30/11/13, 02:31:14
Sí, tengo esas dos cosas pero aun así no tengo claro como debo apagar la Wifi. Este es mi intento:
Pues yo diría que lo has hecho bien. En la tarea de salida apagas el Wifi, como querías, y supongo que eso no te va a suponer ningún problema porque tu Android (y el ajuste ese de buscar redes Wifi) permite -supongo- que el contexto de Antena Cercana siga funcionando aunque hayas apagado el Wifi. No obstante, te sugiero que lo compruebes: te alejas de casa unos metros, hasta que el perfil se haya desactivado y se haya apagado el Wifi, y luego vuelve a acercarte para verificar que el contexto vuelve a activar el perfil y el Wifi.
En realidad, con ese ajuste que escanea contínuamente las redes del entorno, que tú tengas el Wifi apagado no mejora nada, ni siquiera ahorra batería. Yo tengo Android 4.2 y por tanto no puedo usar ese ajuste, solo tengo Wifi encendido o apagado. Ahora veamos la comparación entre tu situación y la mía: Cuando estamos en casa (con "cobertura" Wifi) ambos tenemos el Wifi encendido y la conexión funcionando, y en esa situación gastamos igual. Cuando tú te vas de casa tienes el Wifi apagado pero está apagado solo a medias porque en realidad tu smartphone sigue escaneando las redes del entorno. Y de hecho, cuando vuelves a casa tienes de nuevo el Wifi funcionando con conexión. Cuando yo me voy de casa tengo el Wifi encendido al ciento por ciento, pero mi smartphone con el Wifi encendido gasta lo mismo que el tuyo "apagado": ambos smartphones escanean las redes wifi que pueda haber en el entorno y si no hay ninguna red conocida pues no se conectan y gastan igual. Cuando yo regreso a casa mi smartphone se conecta al router, igual que el tuyo. Mi teoría es que ese ajuste es un "engañabobos" para hacernos creer que gasta menos batería pero la realidad es que gasta igual que si dejas el Wifi encendido todo el tiempo.
CoolDown es el tiempo de enfriamiento, lo puedes ajustar en las propiedades del perfil. Supongo que el valor 3600 se refire a segundos. Después de que el perfil se activa una vez, durante ese tiempo no se vuelve a activar aunque el contexto vuelva a ser positivo. Es para evitar que se desactive y reactive de forma muy seguida.
Quake004
30/11/13, 11:20:06
Vale gracias. Lo he comprobado y sí que se enciende el wifi pero ahora no sé si dejar el wifi encendido siempre y olvidarme de apagarlo o volver al perfil de antenas que me funcionaba bien.
Quake004
02/12/13, 09:36:10
Se me apaga el wifi mientras estoy en la facultad así que volveré al de antenas.
sergiotas
18/12/13, 18:41:37
Saludos buenas tardes, me he leido toda la info de este hilo, pero me gustaría hacer algo más con las variables y por el momento no soy capaz de hacer algo tan facil, ¿me podeis echar un cable?
Entiendo como poner un valor a una variable pero no soy capaz de programar lo que sería tan facil en aquel BASIC de hace 30 y pico años, jeje, un INPUT de entrada de texto que me lance el teclado y se muestre lo que escribes, y que ese texto se quede memorizado en una variable, tan facil como eso. Lo mío es la ingeniería , y lo que estoy intentando es a partir de varias preguntas, montar luego una variable para hacer cálculos con fórmulas complejas, por ejemplo estoy preparando buscar una ficha del SIGPAC para ver parcelas agrícolas, es facilísimo pero necesito programar unas preguntas para preguntar al usuario, datos de entrada como POLIGONO, PARCELA, ETC.... gracias.
maid450
19/12/13, 08:26:39
Entiendo como poner un valor a una variable pero no soy capaz de programar lo que sería tan facil en aquel BASIC de hace 30 y pico años, jeje, un INPUT de entrada de texto que me lance el teclado y se muestre lo que escribes, y que ese texto se quede memorizado en una variable, tan facil como eso.
Pues tienes varias opciones.
La más rápida y sencilla es la acción Variables -> Consulta de variable que te permite eso, mostrar una ventana con un titulo personalizable y un campo para escribir un valor con botones aceptar y cancelar, si aceptas el valor se guarda en la variable que digas. También te permite definir el tipo de dato que se puede introducir (numero decimal, entero, contraseña, texto...).
Si como dices tienes que preguntar varios valores pienso que te podría interesar más hacerte una "escena", básicamente puedes diseñar tu propio formulario con campos de entrada de texto, botones, etc y puedes por ejemplo poner eventos para que cada vez que rellenas un campo de texto se guarde el valor en una variable y poner un botón aceptar que al clicarlo haga otras cosas teniendo ya los valores introducidos en el formulario...
Por el foro tienes más información sobre las escenas, y si te salen más dudas respecto a ese proyecto concreto que quieres hacer puedes abrir un nuevo hilo al respecto para comentarlo ahí
Sergiotas tu también has tenido el spectrum 48k con sus infernales combos y teclas de goma?
sergiotas
20/12/13, 11:07:02
Si si si y el amstrad , msx, y ahora el móvil en la Palma de mi mano y veo las posibilidades infinitas. Gracias Maid50 por la pista ya estoy haciendo cosillas.
Buenas a todos,
Os dejo la lección 2 de la guía que estamos formalizando entre varios de nosotros.
Agradecer en primer lugar a Andreas Ødegård, autor del artículo, a Klim, pionero de la iniciativa de traducción de los artículos y a Caravantes y mlesir, gestores del foro y que han pulido ciertos puntos de la traducción que no quedaban demasiado claros
-------------------------------------------------
Guía de Tasker para principiantes: Lección 2. Variables
Traducido del artículo original publicado en Pocketables:
Beginner’s guide to Tasker, part 2: Variables (http://www.pocketables.com/2012/08/beginners-guide-to-tasker-part-2-variables.html)
http://www.pocketables.com/2012/08/beginners-guide-to-tasker-part-2-variables.html
Andreas Ødegård. August 25, 2012.
259178
En la primera parte de esta guía traté los aspectos básicos de Tasker, y mencioné que profundizaría en variables y en las escenas más adelante. Ambas son características que requieren un poco más de explicación que los otros aspectos en general, así que me voy a dedicar un artículo a cada uno de estos temas. El primero, las variables.
¿Qué es una variable?
Las variables son parte de muchos lenguajes de programación, y Tasker es, en muchos sentidos, un lenguaje de programación. Las matemáticas también utilizan variables y en muchos casos funcionan de la misma manera.
Una variable es esencialmente un archivo de texto virtual. Imagina un archivo de texto llamado variable.txt que contiene el texto "Hola Mundo". Sin embargo, en lugar de que sea un archivo físico, puede moverse, existe dentro de Tasker, y en vez de ser llamado variable.txt se llama %variable. El símbolo de porcentaje siempre está presente al comienzo del nombre de una variable y es la forma en que Tasker sepa que algo es una variable (Igual que la extensión del archivo txt permite que los equipos sepan que es un archivo de texto). El nombre que sigue al símbolo de porcentaje es en cierto modo el nombre del archivo. Al igual que un archivo de texto una variable puede contener texto, pero únicamente el texto, no imágenes. Este texto puede ser un único símbolo, un número, una URL, un párrafo de un artículo (cualquier texto, en otras palabras).
Cuando se utiliza una variable en cualquier lugar de Tasker, el programa sustituirá la variable por el valor (contenido) que la misma tenga en el momento de ejecutarse. Digamos que tienes una variable %hola que contiene "Hola Mundo". A continuación, haz que Tasker cree una notificación con el texto %hola. Cuando Tasker vaya a crear la notificación, se comprobará el valor de la variable y lo usará en lugar de utilizar el nombre de la variable. Así la notificación final creada por Tasker no leerá "%hola". En cambio el mensaje será "Hola Mundo".
¿Por qué utilizar variables?
El propósito de las variables es tener una manera de almacenar información de forma dinámica. Esto permite no sólo la transferencia de información entre las diferentes partes de Tasker, sino también controlar los ajustes y el texto de Tasker de forma remota, sin tener que entrar en cada contexto/tarea y modificarla manualmente.
Para entender completamente el propósito de la utilización de variables, lo primero que tienes que saber son las diferentes maneras en que usted puede cambiar el valor (contenido) de una variable. Algunos ejemplos son:
• Establecer el valor de una variable mediante una acción. Este valor puede ser utilizado como un contexto para un perfil completamente diferente o como parte de otras acciones.
• Convertir el contenido de un archivo de texto real en el valor de una variable.
• Operar matemáticamente las variables. Por ejemplo, puedes sumar +1 a una variable cada vez que se ejecuta una acción. El valor de la variable se incrementaría en valor numérico las veces que se ejecute la acción, actuando como un contador
• Muchos ajustes del sistema y eventos existen en Tasker en forma variable. El valor de la variable %TIME es siempre la hora actual, %DATE es siempre la fecha, %BATT es siempre el nivel de la batería y así sucesivamente. La Lista completa de las llamadas variables incorporadas se encuentran en la ayuda de Tasker, y saber cómo utilizarlas es una de las lecciones más importantes de Tasker.
En resumen, hay muchas maneras de cambiar el valor de una variable. La idea es crear una biblioteca de información a las que las diferentes partes de Tasker tengan acceso, en lugar de tener la información almacenada como texto estático que sólo es utilizable donde está escrito. De hecho, las variables comparten un montón de ventajas con internet:
• La información se puede compartir fácilmente entre los participantes conectados
• La información/colaboración es posible teniendo a varios participantes trabajando en la misma información
• La información puede ser actualizada en su sitio una vez y aún así llegar a varios participantes sin tener que actualizarlos cada uno de ellos directamente.
Con Internet los participantes son usuarios de Internet. Con Tasker y variables, los participantes son diferentes acciones, contextos, y así sucesivamente dentro de Tasker.
Creación de variables
Los nombres de las variables en realidad cambian (e indican) qué tipo de variable es. Hay tres tipos de variables: globales, locales e incorporada. Para crear variables de un tipo determinado (sólo las variables globales y locales pueden ser creadas por el usuario en Tasker), sólo tienes que utilizar el formato correspondiente. Por otra parte, las variables globales se muestran en la pestaña Variables de Tasker (ver imagen de la derecha), sin embargo ni las variables locales ni las incorporadas se muestran en esta pestaña.
• Las variables locales se escriben en minúsculas y sólo están disponibles para el perfil/tarea que las crea. Si tiene una tarea de "Casa" que crea una variable %casa (ojo, todo en minúscula), esa variable no estará disponible para otras tareas. Otra tarea "ajena" no debería ser capaz de utilizar esa variable.
• Las variables globales se muestran en la pestaña Variables y estarán visibles y utilizables por todas las partes del Tasker. Estas variables deben comenzar con una letra mayúscula. Si su tarea "casa" crea una variable %Casa (primera con mayúscula), cualquier tarea "ajena" será capaz de verla, modificarla y usarla.
• Las variables incorporadas siempre se escriben en mayúsculas. Estas son las variables que hablé anteriormente que están integrados en Tasker y que toman los valores de información del sistema. %TIME, %DATE, y %BATT son los ejemplos que he usado anteriormente. Estos pueden ser leídos por cualquier parte de Tasker, pero no se muestran en la pestaña Variables. Además, no puede ser cambiado por el usuario, ya que, por definición, muestran una parte de información generada por el sistema. La única manera de cambiar %BATT es cambiar el nivel de la batería actual mediante la carga o descarga de la batería.
Excepciones
No hay reglas sin excepciones. Hay algunas variables que toman la forma de variables locales pero en realidad son variables incorporadas. Un ejemplo es %new_val, que lo veremos al hablar de la creación en escena. Por el momento se puede hacer caso omiso de estos en aras de evitar una confusión innecesaria.
Variables para el intercambio de información y de texto dinámico
Las variables se pueden utilizar para compartir información entre las partes de Tasker, e incluso entre los plugins y Tasker. Para utilizar el símil de internet de arriba, las variables permiten que una parte de Tasker envíe información a otra parte, al igual que un usuario de Internet envía un email a otro.
El concepto de texto dinámico es como la colaboración de documentos en Google Docs u otros editores de documentos en línea. En lugar de ser una creación de texto estático, partes de ella se pueden cambiar por diferentes fuentes independientes.
Ejemplo 1: Mi mensaje de la mañana
Tengo una elaborada configuración de “modo de reposo” que uso todas las noches. Cuando me despierto por la mañana uso una acción Tasker que se llama “Decir” (que se encuentra en la categoría Misc), que es una conversión de texto a voz. Esta acción tiene un campo de texto en el que yo escribo el texto que quiero decir y entonces el teléfono lee el mensaje en voz alta. En la actualidad, este campo de texto se lee:
“Buenos días. Has dormido durante %Smduration horas. %Lazy. El Pronóstico del tiempo para hoy es %Norweather. %Todomorningnot.”
Como puedes ver este mensaje contiene 4 variables. Antes de que la acción decir comience, decenas de otras acciones ocurren, recogen y procesan los datos, y almacenar los resultados finales en estas cuatro variables.
• %Smduration es la duración, en horas, durante el cual el modo reposo estuvo activo. Si se activó a 23:00 y se desactiva a 07:00, entonces el valor de %Smduration sería de 8.
• El valor de %Lazy depende del valor de %Smduration. Si %Smduration es por lo menos 9, El valor de %Lazy es "bastardo perezoso". Si %Smduration es inferior a 9, no es nada.
• %Norweather es el resultado de una tarea que hice para recoger datos meteorológicos noruegos. Su valor es una descripción muy breve del pronóstico del tiempo para ese día, como "sol" o "lluvia".
• %Todomorningnot es parte de mi sistema Tasker basado en lista de tareas. Si tengo elementos TODO en la lista marcados como "mañana", su valor es "Tiene elementos que debían presentarse en su lista de tareas." Si no tenemos estos artículos, su valor no es nada.
Mediante el uso de estas cuatro variables el mensaje de teléfono varía en función de éstas y habla por la mañana (y esta es la razón para el nombre de "variable").
Si me levanto después de 8,5 horas, en un día lluvioso que no tengo nada que hacer, el teléfono dirá el siguiente mensaje:
“Buenos días. Has dormido durante 8,5 horas. Pronóstico del tiempo para hoy es lluvia.”
Si me levanto después de 10,2 horas en un día soleado en el que tengo artículos en mi lista de tareas, el teléfono dirá el siguiente mensaje:
“Buenos días. Has dormido durante 10,2 horas. Bastardo perezoso. Pronóstico del tiempo para hoy es soleado. Usted tiene cosas en su lista de tareas”
Utilizando aquí las variables de esta manera, me da dos opciones muy importantes:
• Mi mensaje de la mañana es dinámico. A pesar de que nunca entro y cambio manualmente el campo de texto de la acción Decir, el mensaje sigue los cambios.
• Puedo transferir información de una parte a otra de Tasker. Las cuatro variables en el mensaje son cada una el resultado del trabajo realizado por otras tareas y acciones, y el uso de variables me permite transmitir dicha información a donde lo necesito.
Ejemplo 2: AutoRemote
AutoRemote es un plug-in de Tasker del que estoy especialmente encariñado. Permite que los diferentes dispositivos se comuniquen uno con el otro mediante el envío de mensajes entre sí que no son visibles para el usuario. Permite hablar a Tasker en un dispositivo, con Tasker en otro dispositivo, sin necesidad de utilizar un método de comunicación que sea para otra cosa - como SMS o correo electrónico.
Los mensajes entrantes a través de AutoRemote se pueden utilizar de dos maneras: como disparadores, o como fuentes de información. Si se utiliza como disparador, se puede por ejemplo configurar un perfil Tasker que se activa si un mensaje que dice "hola" es recibido a través de AutoRemote. Esto podría servir, por ejemplo como una característica "encontrar mi tableta", donde el envío de un mensaje con un "hola" desde el teléfono a la tableta activa una tarea que hace la tableta pitar.
Si el mensaje se utiliza como una fuente de información, el contenido real del mensaje se puede transferir a una variable Tasker. Digamos que usted quiere que su tableta sea capaz de decirle a su teléfono el estado de la batería. Su tablet podría enviar el siguiente mensaje a su teléfono:
“Nivel de batería de la Tablet es %BATT por ciento”
Donde %BATT es una variable incorporada. Cuando la tableta envía este mensaje, reemplazará %BATT por el nivel de batería propia. Así el mensaje que llega al teléfono contendrá el nivel de batería de la tableta.
El teléfono se puede configurar para buscar un mensaje que contenga "nivel de batería Tablet". AutoRemote tiene una opción para que sea una coincidencia exacta, que en este caso no queremos. Este filtro de mensajes actuaría como el contexto para el perfil, lo que significa que el perfil se activará cuando un mensaje con "nivel de batería Tablet" fuese recibido.
Esto es similar al ejemplo anterior "encontrar mi tablet", pero queremos ir un paso más allá aquí - en realidad usando el contenido del mensaje también, no sólo el uso del mensaje en sí mismo como un disparador.
Para ello debe configurar AutoRemote para convertir el mensaje en una variable - digamos %tabletbattery. Esa variable podría ser utilizado en una notificación, acción “Decir” o similar. Basta con crear una acción “Decir” con %tabletbattery como texto y utilizarla en el perfil que se activa por mensaje entrante, para que entonces su teléfono leyera el estado de la batería de la tableta en voz alta cuando recibe un mensaje de ella.
Ya que %tabletbattery es una variable local, sólo estaría disponible dentro de ese perfil, pero fácilmente se podría utilizar la acción “Establecer Variable” en la categoría de Variable para crear una variable global. Esto se hace mediante el establecimiento de la acción “Establecer Variable” para crear una variable con una capitalización de variable global, como %Tabletbattery, y estableciendo su valor a %tabletbattery. Luego en realidad estas creando una copia global de la variable local.
En este ejemplo de AutoRemote, el valor de una variable incorporada en la tablet es enviado a otro dispositivo a través de un plug-in, donde se convirtió en una variable que se puede usar en ese dispositivo. Este es sólo otro ejemplo de transferencia de información a través de las variables, pero uno más avanzado, ya que transfiere información entre dispositivos.
Ejemplo 3: Minimalistic Text y Make Your Clock Widget
Minimalistic Text y Make Your Clock Widget son dos apps independientes de Android para creación de widgets que ambos tienen la capacidad de recibir información de Tasker. Ambos interactúan con Tasker de forma muy similar, utilizando una acción que transfiere información desde Tasker (ya sea texto estático o el valor de una variable) en variables de las aplicaciones propias.
Yo uso ambas aplicaciones y las dos con Tasker. Uso Minimalistic Text para mi lista de compras, al tener un widget en la pantalla de bloqueo en el que Tasker puede escribir información. El widget sólo muestra algo si estoy fuera y tengo artículos en mi lista de la compra, de lo contrario está en blanco. La lista de la compra está manejada por mi propio sistema basado en Tasker.
La imagen de la pantalla de configuración de abajo muestra cómo está configurada la acción que hace de puente entre Tasker y Minimalistic Text. Se transfiere el valor de la variable de Tasker %Todoshopping en la variable de Minimalistic Text TODO, la cual es una variable en una aplicación completamente diferente y, como tal, no utiliza el símbolo % para indicar que es una variable. Una vez que esta tarea se ejecuta, en cualquier lugar donde se utilice la variable en TODO en Minimalistic Text (entonces se mostrará el valor de %Todoshopping. Cada vez que %Todoshopping cambie en Tasker, la acción de puente tiene que ser ejecutado con el fin de transferir esa información a Minimalistic Text.
259168
Variables como ajustes
Las variables tienen otro uso que es quizás menos aparente, pero sigue siendo muy importante a tener en cuenta: se pueden utilizar como ajustes. Esto se realiza mediante la asignación de valores a variables que entonces se utilizan como referencias más adelante. Si tienes un perfil para cuando estás en casa, puede utilizar la acción “Establecer variable” para establecer un variable %Hogar a "on" cuando se activa (tarea de entrada), y en "off" cuando se desactiva (tarea de salida). Cualquier otra parte de Tasker entonces será capaz de comprobar el valor de %Hogar y, a su vez, saber si estás en casa.
Si lo piensas bien es así como funcionan los ajustes fuera de Tasker también. Si usted entra en la configuración del sistema y apaga el WiFi, básicamente estás estableciendo una variable WiFi en "off" - es sólo una forma más visual de hacerlo. Si está conectado a una red WiFi llamado McDonald, es como tener una variable para la red Wi-Fi con un valor de "McDonalds".
Hacer referencia a las variables: contextos
Cuando digo que otras partes de Tasker pueden comprobar el valor de las variables y actuar en consecuencia, hay muchas maneras de hacer esto. Por contextos el valor de una variable es su contexto propio. Se encuentra ubicado en la sección Estado, categoría Variable, contexto Valor de Variable.
La pantalla que se obtiene al seleccionar este contexto pide un nombre, Operador y Valor. Nombre es el nombre de la variable, como %Casa. El nombre de la variable que se pone aquí es simplemente el nombre de la variable que contiene la información que desea que el perfil tenga en cuenta y reaccione.
259169
Op es un poco más complicado. Significa Operador, y se refiere al método que Tasker utiliza para comprobar el valor de las variables, usando una versión simplificada de las expresiones regulares. Se puede configurar para cosas como coincide, no coincide, matemáticas: Menor que, y así sucesivamente. En resumen, el operador se refiere a la relación entre el tercer campo del valor y el valor real de la variable.
A modo de ejemplo, digamos que usted quiere un perfil que se activa cuando %Casa está establecido en "on" y se desactiva cuando está en "off". Luego usaría %Casa como el nombre, coincide como el Operador , y "on" (sin las comillas) como el valor. El contexto resultante se puede leer así:
“Active el perfil si el valor de la variable %Casa coincide con "on"
Por poner otro ejemplo, piense en el ejemplo anterior del mensaje de la mañana. La variable %Lazy tiene un valor diferente dependiendo de si %Smduration es menor que o mayor que 9. Si desea crear un perfil que reaccione de la misma manera, el nombre sería %Smduration, Operador sería mayor que, y el valor sería de 9. El contexto resultante se puede leer así:
“Activar el perfil si el valor de %Smduration es de al menos 9”
Para terminar con un ejemplo del mundo real, utilizo este sistema para los perfiles de ubicación. Tengo tres perfiles que son mutuamente excluyentes y que utilizan diferentes contextos. Mi perfil Casa se activa cuando estoy conectado a mi WIFI de casa, el perfil Escuela se activa cuando hay una entrada de calendario en mi calendario escolar, y mi perfil exterior se activa cuando los otros dos no están activos.
Para asegurarse de que todos los perfiles son mutuamente excluyentes, uso mis propias variables como parámetros. Tanto los perfiles Escuela como Casa tienen ajustes de variables tanto en la tarea de entrada como en la de salida. Cuando el perfil Casa está activo, se establece la variable %Casa a 1, y cuando se desactiva, se establece en 0 (tarea de salida). El perfil de la escuela hace lo mismo para la %Escuela.
El perfil exterior tiene entonces dos contextos Valor de Variable: %Escuela coincide a 0, y %Casa coincide a 0. En otras palabras, sólo se activa si ambas variables se establecen en 0 (que a su vez sólo ocurre cuando los otros dos perfiles están inactivos). El perfil de la escuela también tiene dos contextos Valor de Variable, %Casa coincide a 0 y %Caminoalaescuela coincide a 0. El primero hace que el perfil de la escuela no está activo cuando estoy en casa (lo que podría suceder si terminamos temprano), mientras que esta última variable se ajusta mediante un botón en una escena que tengo. Voy a tratar las escenas en el próximo artículo, pero para hacer boca, presiono un botón que dice "Desactivar escuela" y desactiva el perfil de la escuela. Esto es para situaciones en las que termine pronto, pero no vayas directamente a casa, lo que me permite activar manualmente el perfil exterior (desactivando el perfil de la escuela) para aquellas raras ocasiones.
Hacer referencia a las variables: acciones
No sólo los contextos pueden ser controlados por variables; las acciones también. Una de las imágenes en mi primer artículo señala la casilla de verificación “Si” en una pantalla de configuración de la acción. Esta casilla de verificación está presente en la mayoría de las acciones, y te permite controlar la acción en función de las condiciones del “si”. Una condición “Si” es simplemente una condición que debe cumplirse para que la acción se ejecute.
Para todos los supuestos y propósitos, las condiciones “Si” y los contextos de “Valor de Variable” funcionan de la misma manera. Tienes un nombre de variable, un operador y un valor que se ha de comparar con el valor de la variable. En la sección anterior, expliqué cómo el contexto Valor de Variable trabaja usando la configuración %Smduration superior a 9 como ejemplo. Eso sucede en mi perfil de “modo de reposo”, pero en realidad no es utilizado como un contexto en ese perfil: se utiliza para limitar una acción con una condición “SI”. La imagen de la derecha muestra cómo se configura.
Como se puede ver la casilla de verificación “si” está activa; %Smduration se introduce en el primer campo, 9 en el segundo, y el operador >, que es el símbolo de mayor que. Con la acción configurada de esta forma, la acción sólo se ejecutará si el valor de Smduration% es mayor que 9. Si no lo es, la tarea simplemente se salta esa acción.
259170
Puedo usar el mismo sistema para limitar las acciones individuales basadas en la variable %Casa creado por mi perfil Casa. Si quiero una acción que se ejecute sólo cuando estoy en casa, lo único que tienes que hacer es marcar la casilla “si”, escribir %Casa en el primer cuadro, seleccione = (coincide) como operador y escriba 1 en el segundo cuadro. De esta forma sólo se ejecutará cuando el valor de la %Casa es de 1, lo que sólo ocurre cuando estoy realmente en casa.
Ten en cuenta que la decisión de establecer %Casa / %Escuela a 1 o 0 en lugar de on o off es una opción personal. Tú decides cómo deben ser los diferentes estados de un ajuste, y si tuvieras que crear tu propio perfil Casa con una variable %Casa, no hay absolutamente nada que nos impida usar tanto el valor "Cachivache" como "on" y "huracán" como "off". Simplemente significa que tendrías que establecer el contexto / condición Si de %Casa coincide "Cachivache".
También es posible agrupar varias acciones en la misma condición “Si”. Para ello utilizas la acción “Si” que se encuentra en la sección Tarea; configúralo como lo harías con un sistema integrado de condición “Si” y luego se coloca antes de la primera acción que deseas en la agrupación. Cualquier acción que siga a la acción “Si” se anida debajo de él y sigue su condición. Se cierra el grupo mediante la inserción de una acción “Fin Si”. Esto es simplemente un método más sencillo para la aplicación de la misma condición “Si” para múltiples acciones
Por último, hay una acción en la misma categoría llamada “Else”. Esta es una acción opcional que puedes utilizar entre una condición “Si” y un “Fin Si” para crear un nuevo grupo de acciones (anidadas bajo la acción “Else”) que se ejecutará si la condición “Si” no se cumple, pero sólo si no se cumplen. La ilustración de arriba muestra esto con uno de mis perfiles, donde he insertado una acción “Else” para la demostración.
La forma de leer esta configuración es como sigue:
“Si la condición SI se cumple, ejecute la acción 3 (Notifíqueme de sonido) y 4 (Minimalistic Text)
Si no (Else), ejecute la acción 6 (Stop)”
La acción “Else” es opcional, y realmente sólo te ahorra añadir un segundo grupo “Si” que sea exactamente lo contrario del primero.
Escribí un artículo sobre el control de perfiles utilizando variables, que se puede encontrar aquí. Gran parte de ese artículo es lo mismo que lo que has leído aquí, pero fue escrito para usuarios avanzados de Tasker, no para principiantes.
Los caracteres especiales
Cuando se realiza la coincidencia de patrones utilizando este método, es importante ser consciente de la tres caracteres especiales *, / y +.
* Es un comodín, lo que significa que se puede utilizar para que coincida con una parte de un fragmento de texto. Si escribes Android en el campo de valor y coincide como operador, sólo coincidirá el texto exacto de Android. *Android* por otro lado coincidirá con cualquier uso de la palabra Android, como “me gusta Android mucho”. *Android coincidirá con “me gusta Android” pero no con “me gusta Android mucho”, ya que el comodín está sólo delante de la palabra, no detrás de ella. En algunos casos es mejor utilizar *ndroid* en lugar de *Android*, porque el primero captura tanto Android y android.
Actualizado: Sean señala en los comentarios que se pueden utilizar todas las letras minúsculas en concordancia con el modelo y funcionará con todo. Por ejemplo, *ndroid* aquí no es necesario porque *android* coincidiría tanto con Android como con android. Sin embargo no funciona al revés, por lo que *Android* no va a coincidir con los dos. Yo no era consciente de ello, y es más cómodo cuando se trata de mayúsculas y minúsculas.
/ Actúa como O, lo que significa que permite la inserción de varios valores en un solo campo. Introduciendo 1/2/3 en el campo de valor y utilizando coincide como operador, captaría los valores de variables de 1, 2, y 3. Esto es muy útil, ya que permite crear contextos y condiciones “Si” que reaccionan a varios valores de variables diferentes.
+ Significa "al menos un carácter" Se puede ver el uso de esta en el “Si / Else / Fin si” de la captura del apartado anterior, en la primera acción, en el caso de la acción se configura como %Todoshopping coincida ++. Tasker lee esta condición como "Si %Todoshopping contiene al menos dos caracteres, no importa los que sean"
Las variables vacías
Las variables vacías no se sustituyen por espacios en blanco, sino que mantendrán su nombre de variable completo de referencia. Si se crea una notificación con %Variable como texto y esa variable no contiene nada, entonces la notificación literalmente dirá %Variable. Para hacer que aparezca un espacio en blanco en su lugar, creamos una acción “Establecer Variable” de esa variable y establecerla a un espacio.
Utilice una condición “Si” con la variable en cuestión como la variable, coincide como operador, y *nombre variable sin símbolo %* como el valor (ver la imagen de abajo para ver lo que quiero decir con esto).
Ejemplo para la variable %Home:
259171
Esto escribe un espacio como valor de la variable si está vacía, que se detecta por ver si el valor de la variable es el nombre de la variable. Tenga en cuenta que usted debe insertar el espacio en el último campo de texto y guarde inmediatamente sin seleccionar nada más. De lo contrario, probablemente obtendrá un mensaje de error diciendo que el campo no puede estar vacío.
Procesamiento de datos utilizando variables
Hasta ahora he hablado sobre todo acerca de las formas simples de usar variables para transferir las acciones de información y control y contextos, pero eso es sólo la mitad de la historia. Para aquellos que han leído mis artículos mayores acerca de Tasker, probablemente habrás visto algunos artículos que procesan datos internamente en Tasker. Los ejemplos son un locutor de pronóstico del tiempo (http://www.pocketables.com/2012/07/tasker-task-that-speaks-the-weather-forecast-download.html) y locutor de evento del calendario (http://www.pocketables.com/2012/07/tasker-google-calendar-event-announcer-task-download.html). Lo que tienen en común es que procesan la información después de que se haya importado en Tasker, esencialmente tomando una sola variable llena de información y cortándola en trozos pequeños que se pueden utilizar como valores o como texto dinámico.
Para ello, se utilizan muchas de las herramientas disponibles en la categoría de variables en la lista de acciones. “Separar Variable” es una de las más poderosas, pero también encontrarás “Sección de Variable”, “Variable Buscar y reemplazar”, y otros. Saber utilizar estas te da la posibilidad de que Tasker haga prácticamente cualquier cosa, ya que más o menos cualquier fuente de información basada en texto, online u offline, se puede utilizar con Tasker.
Desafortunadamente este es un tema enorme, y ya estoy pasando de 4000 palabras en esta explicación "sencilla" de las variables. Por lo tanto, quiero dedicar un artículo entero a este tema, más adelante en la guía, después de que algunas otras cosas básicas estén aclaradas por el camino. He querido mencionarlo brevemente aquí para no dar la impresión de que falta algo.
Nelly se basa en variables de coincidencia de patrones
Para terminar esta parte de la guía, quiero mencionar que mi asistente DIY Tasker basado en voz, Nelly, está construido (más o menos) enteramente en el concepto de variables y comparación de patrones. Puede ser una buena idea leer este artículo (antiguo) (http://www.pocketables.com/2012/05/building-nelly-my-diy-voice-assistant-for-android.html) después de esta parte de la guía, para ver cómo se aplica en la práctica y en una escala tan grande.
buenas amigo, te quiero pedir un favor muy grande: me interesa mucho como hiciste lo del mensaje de la mañana. me encantaria saber como lo hiciste por favor. muchas gracias por tu ayuda
Lukevalci
27/03/14, 23:18:36
No se a que te refieres con o del mensaje. Explicame algo más, por favor
No se a que te refieres con o del mensaje. Explicame algo más, por favor
el mensaje que te habla el telefono al despertar, el que te dice cuantas horas has dormido y el clima. me interesa mucho ya que me cuesta entender las variables. muchas gracias
Lukevalci
27/03/14, 23:42:29
Acabo de e leer el tutorial y he caído ahora. Esa tarea no es Mía. Lo que has leído es la transcripción de un tutorial hecho por Andreas, no es mio. Lo siento
Buenas.
Tengo una duda. Como se incrementa o decrementa el valor de una variable? Quiero crear una variable llamada Modavion que cuando se establezca el teléfono en modo avión se ponga a 1 y así poder controlar otros perfiles.
Un saludo
Pues existen muchas formas de que una variable tome un valor. Basicamente existe una: utilizando la accion "establecer variable". Tienes esta y mas acciones: añade una accion a la tarea y pulsa en el grupo "variables".
Lo mejor para aprender es probar. Crea una tarea que al final tenga una accion de alerta/flash, en el flash escribe la variable/s q quieres controlar: parametro texto: %Nombredelavariable
Ahora ve poniendo antes las acciones q quieras probar. Despues ejecutas la tarea de modo manual dandole al play ( abajo a la izquierda).
Mx WaR HaBiB
06/08/14, 22:35:46
Estimado Lukevalci y compañía, soy nuevo en el tema tengo de hace mucho el Tasker y la verdad es que no lo había tocado tanto como aqui estoy leyendo, tengo una consulta con todos ustedes la variable: %Smduration como puede ser creada? La verdad solo se me ocurre "iniciarla" con un Widget en el escritorio de ahí aplicar la tarea el detalle que me pierdo al momento de elegir la categoría que correspondería la acción de contar las horas que se encontraría en ese estado, Alguien podría orientarme?
Saludos. :)
A ver creo que te entiendo pero por si acaso tu dinos exactamente lo que quieres hacer. Publica también el perfil o proyecto que llevas hecho.
Lee el post con chincheta de recomendaciones si no lo has hecho ya ahí sabrás cómo pegar una descripción de un perfil y otras muchas cosas básicas.
Mx WaR HaBiB
06/08/14, 23:16:18
A ver creo que te entiendo pero por si acaso tu dinos exactamente lo que quieres hacer. Publica también el perfil o proyecto que llevas hecho.
Lee el post con chincheta de recomendaciones si no lo has hecho ya ahí sabrás cómo pegar una descripción de un perfil y otras muchas cosas básicas.
Lo único que quiero hacer es exactamente el perfil para despertar en la mañana, por lo que he estado trasteando el Tasker y empezando el primer problema que me encuentro es como realizar que funcione la variable %Smduration la cual no encuentro como iniciarla, por decir empezar a activar un cronometro que cuente el tiempo que se encuentra en ese modo.
No se si soy lo suficientemente claro, espero que si, yo se que seria mas fácil si alguien me diera el perfil y todo listo, pero lo que yo en realidad busco es entender por completo el concepto de variables, de antemano gracias por tu pronta respuesta. Saludos!
Bueno dame un tiempo pq no tengo ni idea como va este perfil.
Mx WaR HaBiB
06/08/14, 23:39:50
Bueno dame un tiempo pq no tengo ni idea como va este perfil.
Estaré al pendiente de tus mensajes para validar como podemos realizar este perfil, muchas gracias!
victorjagu
07/09/14, 14:02:32
Muy buenas,
Siguiendo con el tema de comodines en las variables:
Si * encuentra coincidencia con todo y + con al menos un caracter... Cuál es el comodín para un único carácter (tipo el ? en cmd)??????
Pretendo decirle a tasker que si pone las 9:00 (?:??) que añada un cero delante pero al poder usar solo + no detecta la diferencia...
Alguien sabe cómo hacerlo?
Gracias de antemano
Caravantes
07/09/14, 16:34:08
Pretendo decirle a tasker que si pone las 9:00 (?:??) que añada un cero delante pero al poder usar solo + no detecta la diferencia...
A mí se me ocurren varias formas de resolver ese problema... y ninguna usa comodines.
A) En los ajustes de Android, Fecha y hora, marca la casilla que te permite utilizar formato de 24 horas. Seguramente eso ponga el cero cuando corresponda hacerlo.
B) Utiliza la acción (del grupo Variable) SEPARAR VARIABLE, usando los dos puntos (:) como separador. En la primera sub-variable tendrás el número de la hora. Si ese número es (matemáticamente) inferior a 10... ya puedes añadir un cero previo.
C) Utiliza la acción (del grupo Variable) TEST VARIABLE, tipo Longitud, para averiguar el tamaño en caracteres que tiene la variable. Si son 4 caracteres (9:00)... ya puedes añadir un cero previo.
Ojo a navegantes. Me acabo de dar cuenta de que antes existía el grupo de acciones MISC, y entre las acciones de ese grupo estaba la acción PRUEBA, que permitía chequear cosas muy variadas, según se explica en el siguiente hilo
http://www.htcmania.com/showthread.php?t=635119
Ahora el grupo MISC ha desaparecido, y la acción PRUEBA también. Una de las opciones que tenía la desaparecida acción PRUEBA era medir la longitud (en caracteres) de una variable. Ahora se puede hacer eso mismo con la acción (del grupo Variable) TEST VARIABLE.
victorjagu
07/09/14, 17:55:35
Utiliza la acción (del grupo Variable) TEST VARIABLE, tipo Longitud, para averiguar el tamaño en caracteres que tiene la variable
Gracias, era justo lo que estaba buscando!!!
Como siempre un genio!
victorjagu
14/09/14, 10:24:47
Hola de nuevo,
Siguiendo con el tema de las variables, no logro encontrar la manera de restar horas y almacenarlas en una variable. He visto que hay una opción para restar variable en tasker pero no logro averiguar cómo funciona, entre otras cosas, no sé dónde guarda la operación que realiza y así no puedo hacer pruebas...
Alguien me ayuda?
Gracias de antemano
Caravantes
14/09/14, 12:54:27
no logro encontrar la manera de restar horas y almacenarlas en una variable. He visto que hay una opción para restar variable en tasker pero no logro averiguar cómo funciona, entre otras cosas, no sé dónde guarda la operación que realiza y así no puedo hacer pruebas...
Acción (del grupo Variable) RESTAR DE VARIABLE. Tienes que indicar la variable a usar, variable que contiene una cantidad numérica. Luego tienes que indicar cuál cantidad hay que restar, de esa variable. El resultado de la operación queda en la misma variable, ya decrementada.
Siempre que tienes una acción abierta (estás en la pantalla de configuración de esa acción) puedes pulsar en el icono de la interrogación para obtener una explicación o ayuda.
victorjagu
14/09/14, 14:26:31
Vale, es que estaba restado las horas enteras (09:00 - 02:00) y no funcionaba. Gracias de nuevo Caravantes, ya puedo continuar con mi perfil
daemon666
07/10/15, 20:48:56
Buenas, como puedo guardar mi ubicación en una variable y que ella no se modifique sola... Quiero crear una tarea donde se activen ciertos parametros si esta cerca de la ubicacion guardada.
Intente en establecer una variable de nombre %Casa A %LOC (ubicación) pero esta ubicación se va actualizando. Alguna ayuda?
Gracias
WillyWeb
09/10/15, 17:34:30
Quiero crear una tarea donde se activen ciertos parametros si esta cerca de la ubicacion guardada.
Creo que te estás complicando la vida. Para eso ya tienes el contexto de ubicación. Simplemente tienes que crear un perfil nuevo, añadirle un contexto de ubicación y en ese contexto señalar una posición, un radio de acción y una fuente de ubicaciones (red de datos o GPS). Para terminar, a ese perfil le puedes asociar una tarea de entrada (para cuando entres en la zona definida) y una tarea de salida (para cuando salgas de esa zona).
Si buscas un poco en el foro encontrarás varios ejemplos. Suerte :ok:
Caravantes
20/05/21, 17:44:52
Sobre variables, hay un nuevo post que puede resultar interesante. Aclara lo que son las variables de sistema, variables locales, y variables globales; cómo usarlas e incluso cómo nombrarlas para evitar confusiones.
https://www.htcmania.com/showthread.php?p=32967957#post32967957
Gomez_6_
17/09/21, 20:57:21
Hola buenas, tengo un problema con las variables de tasker. Utilizo el captar voz para indicar un lugar al que quiero que me lleve google maps y, antes de que ejecute esa orden creo otra en la que captando la voz le indico si quiero o no peajes, lo que pasa es que al indicarle lo de los peajes, la dirección a la que me lleva se borra y me lleva a lo que captó cuando le dije si queria o no peajes.
En resumidas mi tarea es la siguiente
1: captar voz
2: decir "con o sin peajes?"
3: captar voz
4: si %gv_heard ~ sin
5: navegar a %gv_heard+&mode=c&avoid=tolls
6: else
7: navegar a %gv_heard
Si dejo solo los pasos 1 y 5 ó 1 y 6, la tarea funciona perfectamente, pero al intentar seleccionar el tema peajes, el segundo captar voz es como que se graba por encima del primero y, por lo tanto, no me lleva al destino que le indico en el paso 1. Alguien sabria como iniciar la ruta hacia lo captado en el paso 1 ignorando lo captado en el paso 3?
WillyWeb
17/09/21, 21:06:47
... al intentar seleccionar el tema peajes, el segundo captar voz es como que se graba por encima del primero ...
Es que eso es justo lo que pasa. :loco:
Prueba así...
1: captar voz (destino)
2: asignar variable %destino=%gv_heard
3: decir "con o sin peajes?"
4: captar voz (peaje)
5: si %gv_heard ~ sin
6: navegar a %destino+&mode=c&avoid=tolls
7: else
8: navegar a %destino
9: fin si
Gomez_6_
18/09/21, 13:20:31
Lo he probado y ahora funciona perfectamente, muchas gracias.
Grishnakh
19/09/21, 11:24:02
Hola buenas, tengo un problema con las variables de tasker. Utilizo el captar voz para indicar un lugar al que quiero que me lleve google maps y, antes de que ejecute esa orden creo otra en la que captando la voz le indico si quiero o no peajes, lo que pasa es que al indicarle lo de los peajes, la dirección a la que me lleva se borra y me lleva a lo que captó cuando le dije si queria o no peajes.
En resumidas mi tarea es la siguiente
1: captar voz
2: decir "con o sin peajes?"
3: captar voz
4: si %gv_heard ~ sin
5: navegar a %gv_heard+&mode=c&avoid=tolls
6: else
7: navegar a %gv_heard
Si dejo solo los pasos 1 y 5 ó 1 y 6, la tarea funciona perfectamente, pero al intentar seleccionar el tema peajes, el segundo captar voz es como que se graba por encima del primero y, por lo tanto, no me lleva al destino que le indico en el paso 1. Alguien sabria como iniciar la ruta hacia lo captado en el paso 1 ignorando lo captado en el paso 3?
Qué perfil usas para lanzar esta tarea?
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.