|
||
|
![]() |
![]() |
Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Tasker para principiantes: Lección 2. Variables
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/b...variables.html Andreas Ødegård. August 25, 2012. foto 1.jpg 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. FOTO2.jpg 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. FOTO3.jpg 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. FOTO4.jpg 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: FOTO5.jpg 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 y locutor de evento del calendario. 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) 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. |
Los siguientes 16 usuarios han agradecido a Lukevalci su comentario: | ||
|
#2
|
||||
|
||||
Re: Tasker para principiantes: Lección 2. Variables
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
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
Los siguientes 6 usuarios han agradecido a mlesir su comentario: | ||
#3
|
||||
|
||||
Bueno pues resulta que no lo habíamos subido al recopilatorio. Subido.
![]() Date un beso y un I love you Lukevalci FDO: Mlesir
__________________
ATaskREADOS somos el equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
Para cualquier asunto relacionado con el foro, puedes escribirnos a [email protected] |
Gracias de parte de: | ||
#4
|
||||
|
||||
Jeje, la verdad que al verlo achinchetado tampoco caí yo en eso. Thanks, mate! !
|
#5
|
||||
|
||||
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 ![]() -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 |
#6
|
||||
|
||||
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.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
Última edición por mlesir Día 24/05/13 a las 17:39:21. |
Los siguientes 3 usuarios han agradecido a mlesir su comentario: | ||
#7
|
||||
|
||||
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 ![]() ![]() ![]() ![]() Saludos! KchoPrro ![]() Última edición por KchoPrro Día 26/05/13 a las 16:59:04. |
#8
|
||||
|
||||
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.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
#9
|
||||
|
||||
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. Código:
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) 2 Por otro lado, si te interesan un mismo conjunto de acciones para cualquiera de dos opciones, puedes hacerlo así: Código:
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) 3 Te puede interesar solo el caso inverso, cuando no se cumplen ninguna de las dos opciones previstas: Código:
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) 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.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
Gracias de parte de: | ||
#10
|
||||
|
||||
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 |
#11
|
||||
|
||||
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: Código:
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 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: Código:
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 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 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. |
Gracias de parte de: | ||
#12
|
||||
|
||||
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.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
Última edición por mlesir Día 08/06/13 a las 15:48:07. |
Los siguientes 2 usuarios han agradecido a mlesir su comentario: | ||
#13
|
||||
|
||||
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,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. ![]()
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.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
Gracias de parte de: | ||
#14
|
||||
|
||||
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.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
#15
|
||||
|
||||
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 ![]() 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 ![]() 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 ![]() 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 Última edición por alesga5 Día 25/10/13 a las 16:11:39. |
#16
|
||||
|
||||
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
![]() 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).
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
Gracias de parte de: | ||
#17
|
||||
|
||||
De acuerdo, muchisimas gracias.
![]() 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 ![]() Última edición por alesga5 Día 25/10/13 a las 16:43:32. |
#18
|
||||
|
||||
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.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
Gracias de parte de: | ||
#19
|
||||
|
||||
![]() 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!! Última edición por alesga5 Día 26/10/13 a las 01:54:40. |
|
#20
|
||||
|
||||
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.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
Gracias de parte de: | ||
![]() |
![]() |
||||||
|