Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 07/02/14, 11:25:15
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
[Pseudo-Tutorial] Autómata de estados

Hace tiempo leí un tema en el foro oficial (al que Andreas dedicó un articulo en pocketables) hablando de un sistema que me pareció muy interesante para gestionar mejor los distintos estados por los que vamos pasando durante el día mediante Tasker.
Tenía desde entonces pendiente probarlo algún día, pero suponía cambiar casi toda la lógica interna en mis perfiles principales y nunca lo veía un buen momento, hasta que esta semana me he animado a hacerlo.
Aún lo estoy puliendo pero me parece muy prometedor y me lo estoy pasando en grande planeándolo y depurándolo así que quería compartirlo con vosotros a ver si alguien se anima a probarlo.

Ojo! Puede ser bastante laborioso (que no realmente dificil si lo planificas bien) montarlo todo y requiere cierta experiencia con la forma en que Tasker hace las cosas, así que si bien no hace falta ser ningún experto para hacerlo, los recién llegados al mundillo mejor abstenerse .

Concepto
Si hay una serie de perfiles que pienso todos tenemos en nuestro Tasker son los del tipo "Casa", "Coche", "Trabajo" y similares, muy utiles y fáciles de implementar, pero a veces causan conflictos, por ejemplo: cuando paso por delante de mi casa con el coche, al llegarme la señal de mi wifi estoy en casa y en el coche a la vez .
Este sistema se basa en que solo puedes estar en uno de estos estados a la vez, y que las transiciones esntre estos se pueden preveer (en mi caso no puedo pasar de "casa" a "trabajo", tengo que pasar antes por "coche" o "fuera" si voy en bus) de modo que se puede diseñar un gráfico de estados e implementar un sistema que gestione las transiciones entre estos.

Implementación
Primero hay que analizar el caso de cada uno, los ditintos estados que queremos registrar y como pasamos de uno a otro. Yo lo hize mediante un gráfico (en informática se conoce este tipo de gráficos de estados como autómatas, de ahí el titulo), que creo que es la forma más facil de plantearlo y implementarlo después, esta es una versión inicial del mío (luego lo he ido complicando, pero así se ve bien el concepto y es más simple)




En el enlace del tema en el foro original de Tasker está la aproximación del creador de la idea que es bastante diferente, personalmente encuentro esta más efectiva y tolerante a fallos y prefiero que no hayan estados intermedios como "CERCA DE CASA", "RECIEN SALIDO DEL COCHE", etc... pero cada uno puede hacerlo como quiera.

Llega lo interesante, pasar esto a Tasker.
WARNING: Muy recomendable hacer un backup de como teneis Tasker antes de empezar a trastear, porque es posible que tengais que cambiar toda la logica interna de vuestros perfiles principales actuales, y si no os llega a funcionar o no os acaba de convencer estando a medias no será divertido volverlo a hacer todo.

Tendremos un perfil principal que se encargará de gestionar las transiciones entre perfiles, que será algo así:
Código:
Perfil: Switch State (129)
Priority: 9 Notification: no
Evento: Establecer variable [ Variable:%NEWSTATE Valor:* ] (En cuanto se modifique el valor de %NEWSTATE se lanza la tarea)
Entrada: SwitchState (123)
A1: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Clear & Stop ] Si (if) [ %STATELOCK Ajuste ] (Si está definida %STATELOCK limpiamos y salimos sin hacer nada)
A2: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Clear & Stop ] Si (if) [ %NEWSTATE ~ %STATE ] (Si intentamos cambiar al estado en que estamos ya actualmente limpiamos y salimos sin hacer nada)
A3: Establecer variable [ Nombre:%lstime A:%TIMES - %TSTART Calcular:Encendido Añadir:Apagado ] (Calculamos el tiempo que ha pasado desde que empezó el estado actual)
A4: Si (if) [ %NEWSTATE ~ %LASTSTATE ] (Si tratamos de volver al estado en que estábamos antes del actual)
A5: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Clear & Stop ] Si (if) [ %lstime < 5 ] (y han pasado menos de 5 segundos desde el anterior cambio limpiamos y salimos, para prevenir rebotes entre 2 estados en ciertas condiciones)
A6: Fin si (End if)
A7: Establecer variable [ Nombre:%LASTSTATE A:%STATE Calcular:Apagado Añadir:Apagado ] (Guardamos el estado actual como anterior)
A8: Establecer variable [ Nombre:%STATE A:%NEWSTATE Calcular:Apagado Añadir:Apagado ] (Guardamos el nuevo estado como actual)
A9: AutoNotification [ Configuración: (muestro una notificación persistente con el estado actual, el anterior y el tiempo que había estado en el anterior)
    Title: Estado actual: %STATE
    Text: %STATE
    Ticker: Se cambia a estado: %NEWSTATE
    Status Bar Icon: action_about_dark
    Id: switchstate
    SubText: %LASTSTATE había durado %lstime segundos
    Persistent: true
    Text Expanded: Se ha pasado de %LASTSTATE a %NEWSTATE Paquete:com.joaomgcd.autonotification Nombre:AutoNotification Cuenta atrás (segundos):0 ]
A10: Establecer variable [ Nombre:%TSTART A:%TIMES Calcular:Apagado Añadir:Apagado ] (guardamos el momento en que pasamos al nuevo estado para calcular luego cuanto tiempo dura)
A11: Destino (de goto) Etiqueta:Clear & Stop (limpieza de variables tanto si hemos hecho el cambio como si no)
A12: Limpiar variable [ Nombre:%NEWSTATE Coincidencia de Patrón:Apagado ]
Variables globales usadas:
  • %STATE: Guarda el estado actual
  • %LASTSTATE: Guarda el estado anterior, además de para evitar transiciones incoherentes se puede usar para otras cosas utiles que explicaré luego
  • %NEWSTATE: variable que indica el estado al que queremos pasar, cuando cambiemos su valor se lanzará la tarea anterior, despues se limpia.
  • %STATELOCK: En algunas circunstancias puede interesarnos que un estado sea bloqueante y que hasta que no lo permitamos explicitamente no se pueda cambiar, mientras esta variable tenga cualquier valor no se podrá cambiar de estado, en cuanto se limpia la variable vuelve a ser posible. (luego pondré un ejemplo)
  • %TSTART: El momento en que empieza un estado

A partir de aquí hay que implementar los perfiles que se encargan de hacer las transiciones.

Nota: Esto no es un tutorial paso a paso, sino una guía de los aspectos generales para implementar la idea. Cada caso será diferente, y el mio propio no es realmente así, esto es una versión simplificada de mi auténtico sistema porque transcribirlo completo era demasiada faena, podía ser más lio todavía de seguir y realmente no se adaptaría a vuestro caso de todos modos, así que no valía la pena.

Dicho esto, vamos a la implementación.
No hay casos generales y depende mucho de lo que queráis hacer, pero si que hay pautas habituales:

Los contextos tendrán condiciones de activación tipo:
- %STATE ~ Estado Origen (o en caso de que a un estado se pueda llegar desde varios: %STATE ~ Estado1/Estado2/Estado3... para los perfiles "de ida y vuelta" como la mayoría de los míos también se tendrá que aceptar el estado al que vamos a cambiar para que las condiciones se sigan cumpliendo y no ejecute la tarea de salida inmediatamente, luego lo vemos con un ejemplo)
- Condiciones que activen el estado destino (BT Conectado, WIFI/Antena Cercana...)

La Tarea de entrada a realizar será:
- Establecer variable %NEWSTATE = Estado Destino
- Establecer %STATELOCK a lo que sea si procede
Tarea de salida:
- Si se ha bloqueado el cambio de perfiles la salida tendrá que limpiar %STATELOCK
- En perfiles "de ida y vuelta" se vuelve al estado del que se vino al entrar cuando deja de cumplirse

Ejemplo de parte de mi sistema:

Mi perfil de "Controlar estado TRABAJO"
Contexto:
- %STATE ~ FUERA/TRABAJO (como ponía antes, acepto tambien el valor "TRABAJO" para que una vez entre en este estado se siga cumpliendo la condición, si no, nada más entrar dejaría de cumplirse y ejecutaría inmediatamente la tarea de salida, poniendome de nuevo en estado "FUERA")
- Calendario tiene entrada "Trabajo"
- Antena Cercana - las que tengo por el trabajo
Tarea de entrada:
- Establecer %NEWSTATE a TRABAJO
Tarea de Salida
- Establecer %NEWSTATE a FUERA

Mi perfil de "Controlar estado COCHE"
Contexto
- %STATE ~ FUERA/COCHE (lo mismo)
- BT Conectado
Tarea de entrada:
- Establecer %NEWSTATE a COCHE
Tarea de Salida
- Establecer %NEWSTATE a FUERA

Mi perfil de "Estado FUERA"
Contexto:
- Variable %STATE ~ FUERA
Tarea:
- Lanza Bluetooth, deja 10 minutos y apaga si no se ha conectado

Y así es como interactuan entre ellos:
- Por la mañana cuando voy en el coche (%STATE ~ COCHE) y lo apago, el BT se desconecta, con lo que se pasa a estado FUERA, lo que lanza el perfil "Estado FUERA" que deja el bluetooth 10 minutos, por si estoy en la gasolinera y luego vuelvo al coche, pero no es el caso.
- Al estar en estado FUERA y con las antenas de mi lugar de trabajo cerca, en cuanto entre en el evento de calendario "Trabajo" se cumplirá el perfil y me pondrá en estado TRABAJO (si llego tarde por ejemplo, el evento de calendario estará y las antenas también, pero mi estado aún será COCHE, con lo que no se lanza hasta que apague el coche)
- En cuanto acabo de trabajar (el evento se acaba o me voy lejos del trabajo) mi estado vuelve a ser FUERA, lo que vuelve a lanzar el BT, que si se conecta en esos 10 minutos me devuelve al estado COCHE
- etc...

Básicamente así es como funciona, se puede ver que tengo varios tipos de perfiles:
- Perfiles de control de estado ("Controlar estado COCHE", "Controlar estado TRABAJO"...) Estos controlan la transición de estados, no hacen nada relativo a los estados en si
- Perfiles de estado ("Estado FUERA", "Estado TRABAJO"...) estos su condición es que la variable %STATE tenga el valor correspondiente al estado en cuestión y realizan las tareas propias del estado en que están (poner en silencio, quitar bloqueo, etc...)

ejemplo: "Estado TRABAJO"
Contexto:
Valor de Variable %STATE ~ TRABAJO
Tarea de entrada:
- Apagar Bluetooth (Sé que no va a reconectar, para qué dejarlo los 10 minutos...)
- Poner en silencio
- Etc...
Tarea de Salida
- Quitar Silencio

Un caso en que uso el %STATELOCK es el modo DORMIR, veamos porqué:
perfil "Controlar estado CASA"
Contexto:
- Variable %STATE ~ FUERA/CASA/DORMIR
- Antena Cercana
- WIFI Conectado
Tarea de entrada:
- Establecer %NEWSTATE a CASA
Tarea de salida:
- Establecer %NEWSTATE a FUERA

perfil "Controlar estado DORMIR":
Contexto:
- Variable %STATE ~ CASA/DORMIR
- Tiempo: Entre las 00:00 y las 06:30
Tarea de entrada:
- Establecer %NEWSTATE a DORMIR
- Establecer %STATELOCK a 1
Tarea de salida:
- Limpiar %STATELOCK
- Establecer %NEWSTATE a CASA

perfil "Estado DORMIR":
Contexto:
- Variable %STATE ~ DORMIR
Tarea de entrada:
- Apagar datos
- Apagar WIFI
Tarea de salida:
- Encender WIFI
- Encender datos
- rutinas mañaneras varias

Si no pusiera el bloqueo, tan pronto se pasa a estado DORMIR, se lanza "Estado dormir", que apaga la wifi. Al apagarse pierde la conexión, lo que desactiva el perfil "Controlar estado CASA" que me pondría por tanto en estado "FUERA".
Al activar el bloqueo, el perfil "Controlar estado CASA" se desactiva igualmente al desconectarse, pero no permite cambiar a estado FUERA y se queda en modo "DORMIR".
Cuando llega la mañana, se quita el bloqueo y se pasa a estado CASA

Ventajas aka ¿para qué complicarme la vida?
¿Para qué todo este embrollo si mis perfiles de toda la vida me van bien? Pues primero que nada porque me pareció interesante la idea y quería probarlo, pero además tiene algunas ventajas interesantes:
  • Cuando lo ves funcionando mola mucho ver las distintas interacciones trabajando como una máquina bien engrasada (friki? si, lo sé )
  • Crea un sistema mucho más coherente sin colisiones ni cosas raras (cuando funciona, hasta entonces pasan cosas realmente raras )
  • Es muy divertido (para los que nos gustan estas cosas, claro) ponerlo en marcha y depurarlo, y mola
  • Se pueden hacer cosas realmente complejas de otro modo, como comprobar antes de un cambio cual era el estado anterior pudiendo diferenciar por ejemplo cuando subimos al coche desde casa, el trabajo o el gym y actuar en consecuencia
  • He dicho que mola?


Pues eso es, un aplauso a los valientes que hayan llegado hasta aqui


Espero que hayais entendido la idea y que os parezca interesante, si tenéis dudas para eso está el foro
Si os atreveis a probarlo contad vuestras impresiones.

Última edición por maid450 Día 07/02/14 a las 14:55:02.
Responder Con Cita
Los siguientes 18 usuarios han agradecido a maid450 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 07/02/14, 12:58:39
Array

[xs_avatar]
tito_chua tito_chua no está en línea
Miembro del foro
 
Fecha de registro: feb 2009
Mensajes: 121
Modelo de smartphone: Lg G3
Tu operador: Vodafone
Fascinante, tengo oxidados los conocimientos de informática, pero me has traído grandes recuerdos a la mente. Necesito probarlo. Voy a engrasar las neuronas. Por cierto, no se ve el gráfico de Estados, aunque la explicación es tan coherente que se deduce. Estás totalmente comprometido con tasker. Lleva cuidado o te ficharan. Mil gracias por compartir tu experiencia. Me autoproclamo fan (y de Caravantes y mlsir)!
Responder Con Cita
  #3  
Viejo 07/02/14, 14:41:53
Array

[xs_avatar]
darkopro darkopro no está en línea
Usuario muy activo
 
Fecha de registro: mar 2010
Mensajes: 3,249
Modelo de smartphone: Galaxy S3
Tu operador: Vodafone
Muy interesante, yo tengo un entramado de interacciones de los perfiles entre si, en algunos muy compleja, para evitar fallos entre ellos. Este método me hubiera evitado bastante trabajo y creo que voy a ir implementándolo poco a poco.
Responder Con Cita
  #4  
Viejo 07/02/14, 14:56:14
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
 Cita: Originalmente Escrito por tito_chua Ver Mensaje
Por cierto, no se ve el gráfico de Estados, aunque la explicación es tan coherente que se deduce.
Es raro, yo si lo veo desde varios PCs... he cambiado el alojamiento de la imágen, a ver si así se ve.
Responder Con Cita
  #5  
Viejo 07/02/14, 15:49:03
Array

[xs_avatar]
ruco1980 ruco1980 no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Localización: Alicante
Mensajes: 390
Modelo de smartphone: Lenovo k3 Note Lemon
Tu operador: Simyo
Ahora sí que se ve el gráfico....

Impresionante trabajo...enhorabuena!!!
Creo que en cuanto tenga tiempo voy a intentar implementarlo, no sin antes estudiarlo bien porque hay cosas que no comprendo mucho....
En mi caso yo trabajo "en la calle" y no puedo establecer algo fijo, pero p.ej la casa de mi madre se podría asimilar al "trabajo", porque es una wifi distinta con unas antenas de telefonía distintas....la verdad es que tengo interés en intentar implementar este proceso, ya que normalmente me funcionan bien mis perfiles, pero a veces, con los intentos de conexión de bluetooth en el coche, las pérdidas de señal de antenas, tareas de entrada y salida ejecutándose, etc.....a veces es un poco caos y la cosa se complica.....creo que con este esquema se puede llegar a organizar todo mejor....

1 saludo y enhorabuena otra vez!!
Responder Con Cita
  #6  
Viejo 07/02/14, 23:35:59
Array

[xs_avatar]
danidetenerife danidetenerife no está en línea
Miembro del foro
 
Fecha de registro: jul 2010
Mensajes: 396
Tu operador: -

...

Última edición por danidetenerife Día 08/02/14 a las 14:12:08. Razón: no va aquí
Responder Con Cita
  #7  
Viejo 08/02/14, 00:53:10
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por maid450 Ver Mensaje
[Pseudo-Tutorial] Autómata de estados
Estoy fascinado por el planteamiento, interesantísimo. Maid, muchísimas gracias por traerlo y por tus excelentes explicaciones.

El gráfico se ve perfecto. Y también es interesante -lo recomiendo- echar un vistazo al gráfico del foro oficial, enlazado por Maid: https://groups.google.com/forum/#!ms...U/ebtBX8gc2IUJ

Solo veo un par de cosas mejorables. La primera es el título del hilo. La maryoría de los taskeros no estamos en la jerga informática y el término "autómata" nos desorienta bastante; suena a robótica o similar. Si utilizamos un buscador para encontrar módos de organizar las distintas situaciones diarias y encontramos [Pseudo-Tutorial] Autómata de estados ... seguramente no haremos clic ahí. Bueno, es el menor de los problemas porque este tema -como bien has dicho- tampoco está al alcance de un taskero novato, y a los otros ya los reconduciremos desde el foro. Tampoco es que haya un título muy evidente para este tema.

La otra cosa que me parece mejorable es el nombre de las variables utilizadas. Creo que has cogido los mismos nombres que el hilo original que has enlazado, con palabras inglesas. Julio García Muñoz, con su PlugIn WhatsTasker nos ha enseñado que es una buena idea utilizar variables que tengan un prefijo común: %wt_message, %wt_senderid, %wt_type, etc. Este planteamiento es todavía más importante cuando se trata de variables globales: cuando consultamos la lista de variables globales, las del mismo asunto aparecen agrupadas y se las puede localilzar fácilmente. Por ello creo que sería preferible añadir a las variables un prefijo común. Por otro lado, las variables internas de Tasker tienen todas sus letras en mayúsculas, y me parece buena idea utilizar mezcla de mayúsculas y minúsculas para las variables globales de usuario; de ese modo se distinguen fácilmente las unas y las otras. Mi propuesta sería algo como lo siguiente:
- %AutomEstado (%STATE)
- %AutomAnteriorEstado (%LASTSTATE)
- %AutomNuevoEstado (%NEWSTATE)
- %AutomBloqueado (%STATELOCK)
- %AutomComienzo (%TSTART)

Vamos a tener que leer tu post varias veces para terminar de entender los detalles. Por otro lado, no estoy muy seguro de querer que todos mis perfiles de situación sean excuyentes. Ahora mismo tengo varios perfiles que se solapan. En algunos casos he evitado ese solapamiento añadiendo contextos de tipo PACIVE !~ *Vehiculo*, pero en otos casos permito el solapamiento, cosa que no ocurrirá si adopto este sistema de autómata.

Si lo he entendido bien, para cada situación (casa, coche, trabajo) hay que hacer dos perfiles:
A - Un primer perfil que sería similar al "perfil clasico" en cuanto a contextos (antena cercana, conectado a wifi, bluetooth, etc) pero cuyas acciones solo modifican variables generales como %NEWSTATE.
B - Un segundo perfil cuyo contexto sería la variable %STATE, pero que sería igual al perfil clásico en cuanto a tareas (acciones concretas que queremos ejecutar al entrar o salir de esa situación).
Y luego hay un perfil general de control (el Switch State que has exportado completo) para controlar cualquier cambio de situación, que es el que también enlaza los perfiles de tipo A con los de tipo B.

 Cita: Originalmente Escrito por ruco1980 Ver Mensaje
En mi caso yo trabajo "en la calle" y no puedo establecer algo fijo
Supongo que te podrías hacer un perfil de trabajo atendiendo a horarios y días, o bien por la programación del calendario, como ha explicado Maid.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 08/02/14, 14:02:40
Array

[xs_avatar]
darkopro darkopro no está en línea
Usuario muy activo
 
Fecha de registro: mar 2010
Mensajes: 3,249
Modelo de smartphone: Galaxy S3
Tu operador: Vodafone
Hay algo que no comprendo, la primera acción de tarea es:
- ir a acción número 1 si %ESTATELOCK está ajustado
¿Como vamos a ir a la primera acción si ya estamos en la primera acción?¿Que me he perdido? Gracias de antemano por las respuestas.

La verdad que es interesante el tema porque mis perfiles son extremadamente complicados para que no den errores entre PACTIVE, TRUN y variables internas; integrar un nuevo perfil puede ser una faena jejeje
Responder Con Cita
  #9  
Viejo 08/02/14, 14:24:53
Array

[xs_avatar]
Lukevalci Lukevalci no está en línea
Usuario muy activo
 
Fecha de registro: jul 2010
Localización: Madrid
Mensajes: 891
Modelo de smartphone: G2 / MiPad / Minix 8H-Plus
Tu operador: Orange
 Cita: Originalmente Escrito por darkopro Ver Mensaje
Hay algo que no comprendo, la primera acción de tarea es:
- ir a acción número 1 si %ESTATELOCK está ajustado
¿Como vamos a ir a la primera acción si ya estamos en la primera acción?¿Que me he perdido? Gracias de antemano por las respuestas.

La verdad que es interesante el tema porque mis perfiles son extremadamente complicados para que no den errores entre PACTIVE, TRUN y variables internas; integrar un nuevo perfil puede ser una faena jejeje
Se refiere que va a ir a la acción 11, con la etiqueta "clear & stop ". No sé yo tampoco por qué aparece lo de acción 1, la verdad.
Responder Con Cita
Gracias de parte de:
  #10  
Viejo 08/02/14, 16:14:43
Array

[xs_avatar]
Jusss Jusss no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 713
Modelo de smartphone: Galaxy Note 3 N9005
Tu operador: Movistar
 Cita: Originalmente Escrito por darkopro Ver Mensaje
PACTIVE, TRUN y variables internas; integrar un nuevo perfil puede ser una faena jejeje
La variable global TRUN indica una tarea en función ?
Responder Con Cita
  #11  
Viejo 08/02/14, 21:12:59
Array

[xs_avatar]
Lukevalci Lukevalci no está en línea
Usuario muy activo
 
Fecha de registro: jul 2010
Localización: Madrid
Mensajes: 891
Modelo de smartphone: G2 / MiPad / Minix 8H-Plus
Tu operador: Orange
 Cita: Originalmente Escrito por Jusss Ver Mensaje
La variable global TRUN indica una tarea en función ?
Sí. T (task =tarea) RUN (en ejecución)
Responder Con Cita
Gracias de parte de:
  #12  
Viejo 12/02/14, 00:37:16
Array

[xs_avatar]
ruco1980 ruco1980 no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Localización: Alicante
Mensajes: 390
Modelo de smartphone: Lenovo k3 Note Lemon
Tu operador: Simyo
Estoy intentando hacerme mi gráfico de mis perfiles (casa, fuera, trabajo, gym, casa madre) para empezar a implementar ésto a ver qué tal pero hay cosas que no comprendo...
No es que me sea necesario implementar esto, pero sé que me voy a liar con esto y voy a estar un par de semanas enganchado trasteando...me habéis enganchado a tasker jajaj esto es una droga jejej...sé que la voy a liar y me va a dejar todo de funcionar jejej, pero bueno...luego reinstalo backup de tasker o de titanium jejej...

En el perfil gestor de estados, la etiqueta "Clear & Stop" es simplemente eso, o es algo que debemos establecer antes, o simplemente vale con escribir la etiqueta en su correspondiente apartado?..
Y luego, cuando dices %STATE coincide con FUERA/TRABAJO, entiendo que FUERA y TRABAJO es el nombre que le has dado a la variable %STATE en ese momento no? es decir, a ver si lo he entendido bien....
Si por ej, me voy de casa y se ejecuta la tarea de salida de mi perfil casa donde se me desconecta mi wifi y se me enciende el BT...entonces yo creo un perfil de contexto de estado, valor de variable %STATE coincide con FUERA/TRABAJO + contexto de estado, red, conectado a BT (el de mi coche); y ahí la tarea de entrada simplemente es Tarea de entrada:
- Establecer %NEWSTATE a COCHE
Tarea de Salida
- Establecer %NEWSTATE a FUERA
Y luego tendría otro perfil de estado conectado a BT donde ya pongo mi tarea de entrada con sus acciones de encender gps, abrir radardroid, desbloquear etc...y su tarea de salida
Entonces mi perfil de coche sólo se activará cuando la variable newstate se establezca a coche no?
No sé si me he explicado bien....igual se me queda un poco grande ésto para mis conocimientos, lo que pasa que cada vez me engancho más a tasker jejej pero me falta comprender muchas cosas....me ayudaría ver alguna transcripción de tus perfiles para enfocar los míos...
1 saludo y perdón si no se me entiende muy bien...
Responder Con Cita
  #13  
Viejo 12/02/14, 07:31:29
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Solo veo un par de cosas mejorables. La primera es el título del hilo. La maryoría de los taskeros no estamos en la jerga informática y el término "autómata" nos desorienta bastante; suena a robótica o similar. Si utilizamos un buscador para encontrar módos de organizar las distintas situaciones diarias y encontramos [Pseudo-Tutorial] Autómata de estados ... seguramente no haremos clic ahí. Bueno, es el menor de los problemas porque este tema -como bien has dicho- tampoco está al alcance de un taskero novato, y a los otros ya los reconduciremos desde el foro. Tampoco es que haya un título muy evidente para este tema.
Ya lo pensé, pero como dices no se me ocurrió nada evidente... A ver si se me ocurre algo y lo cambio

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
La otra cosa que me parece mejorable es el nombre de las variables utilizadas. Creo que has cogido los mismos nombres que el hilo original que has enlazado, con palabras inglesas. Julio García Muñoz, con su PlugIn WhatsTasker nos ha enseñado que es una buena idea utilizar variables que tengan un prefijo común: %wt_message, %wt_senderid, %wt_type, etc. Este planteamiento es todavía más importante cuando se trata de variables globales: cuando consultamos la lista de variables globales, las del mismo asunto aparecen agrupadas y se las puede localilzar fácilmente. Por ello creo que sería preferible añadir a las variables un prefijo común. Por otro lado, las variables internas de Tasker tienen todas sus letras en mayúsculas, y me parece buena idea utilizar mezcla de mayúsculas y minúsculas para las variables globales de usuario; de ese modo se distinguen fácilmente las unas y las otras. Mi propuesta sería algo como lo siguiente:
- %AutomEstado (%STATE)
- %AutomAnteriorEstado (%LASTSTATE)
- %AutomNuevoEstado (%NEWSTATE)
- %AutomBloqueado (%STATELOCK)
- %AutomComienzo (%TSTART)
Como digo solo es un pseudo-tutorial y cada uno puede adaptarlo a su gusto, por eso y porque la unica tarea que todos los que lo intenten hacer deberán tener prácticamente igual no es larga ni compleja no he puesto el xml.

En cuanto a que es buena idea poner prefijos comunes a las variables, lo es para los desarrolladores de plugins que tienen que asegurarse de que sus variables no van a coincidir bajo ningún concepto con alguna que use un usuario, y los prefijos son la mejor opción para esto, sin embargo, para el usuario final es totalmente optativo, y si bien me gusta tener mis variables más o menos organizadas según mis estandares, también me gusta que "suenen bien" y tengan nombres lógicos, y como voy a escribirlas a menudo, que no sean muy largas.
Por eso he elegido esos nombres, pero vamos, como he dicho cada uno es libre de poner los que quiera

 Cita: Originalmente Escrito por ruco1980 Ver Mensaje
En el perfil gestor de estados, la etiqueta "Clear & Stop" es simplemente eso, o es algo que debemos establecer antes, o simplemente vale con escribir la etiqueta en su correspondiente apartado?..
Es simplemente una acción de tipo etiqueta con ese nombre, lo hice así porque no me gusta repetir las cosas en varios sitios, y como la variable %NEWSTATE hay que limpiarla antes de acabar la tarea sea cual sea su resultado (se cambie de estado o no) así, en cada punto en el que hay que abortar la ejecución (el cambio de estados está bloqueado con %STATELOCK, se intenta cambiar de nuevo al estado que ya está activo, etc...) en vez de hacer un "Parar tarea" voy a esa etiqueta, con lo que ejecuta la limpieza y acaba.
Y si la tarea acaba sigue normalmente y cambia el estado tambien llega a esa etiqueta, hace la limpieza y acaba.

 Cita: Originalmente Escrito por ruco1980 Ver Mensaje
Y luego, cuando dices %STATE coincide con FUERA/TRABAJO, entiendo que FUERA y TRABAJO es el nombre que le has dado a la variable %STATE en ese momento no?
Si, FUERA y TRABAJO son 2 de los posibles valores de %STATE.
 Cita: Originalmente Escrito por ruco1980 Ver Mensaje
es decir, a ver si lo he entendido bien....
Si por ej, me voy de casa y se ejecuta la tarea de salida de mi perfil casa donde se me desconecta mi wifi y se me enciende el BT...entonces yo creo un perfil de contexto de estado, valor de variable %STATE coincide con FUERA/TRABAJO + contexto de estado, red, conectado a BT (el de mi coche); y ahí la tarea de entrada simplemente es Tarea de entrada:
- Establecer %NEWSTATE a COCHE
Tarea de Salida - Establecer %NEWSTATE a FUERA
Y luego tendría otro perfil de estado conectado a BT donde ya pongo mi tarea de entrada con sus acciones de encender gps, abrir radardroid, desbloquear etc...y su tarea de salida
Casi, el perfil con tu tarea de entrada con acciones de encender GPS, etc y su tarea de salida se debe activar con "%STATE coincide con COCHE" unicamente, de esa forma la tarea de entrada se ejecutará en cuanto entre en ese estado y la de salida en cuanto se cambie a otro diferente, sin importarle el resto de factores.
La tarea de cambio de estado a coche está bien salvo por un detalle, tal como lo has puesto (%STATE coincide con FUERA/TRABAJO + contexto de estado, red, conectado a BT) entrará bien y pondra %STATE a COCHE, pero entonces la condición %STATE coincide con FUERA/TRABAJO dejará de cumplirse y ejecutará la salida, por eso debes incluir también entre los posibles valores de %STATE el valor al que vas a pasar, para una vez se haga el cambio el perfil siga cumpliendose, con lo que quedaría así:
%STATE coincide con FUERA/TRABAJO/COCHE + contexto de estado, red, conectado a BT
Las tareas de entrada/salida son correctas

Espero haberte aclarado el tema un poco

Última edición por maid450 Día 12/02/14 a las 09:00:38.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a maid450 su comentario:
  #14  
Viejo 12/02/14, 17:24:29
Array

[xs_avatar]
darkopro darkopro no está en línea
Usuario muy activo
 
Fecha de registro: mar 2010
Mensajes: 3,249
Modelo de smartphone: Galaxy S3
Tu operador: Vodafone
Maid, una cosa, en los perfiles de control de estado (menos en tu caso el del coche) no sería mejor poner la tarea de salida, del perfil que controla, con el cambio de la variable al final? Así nos aseguramos que se ha acabado la tarea de salida antes de efectuar la de entrada del siguiente estado y nos evitaríamos posibles conflictos entre tareas.
Responder Con Cita
  #15  
Viejo 12/02/14, 17:48:40
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
 Cita: Originalmente Escrito por darkopro Ver Mensaje
Maid, una cosa, en los perfiles de control de estado (menos en tu caso el del coche) no sería mejor poner la tarea de salida, del perfil que controla, con el cambio de la variable al final?
Así nos aseguramos que se ha acabado la tarea de salida antes de efectuar la de entrada del siguiente estado y nos evitaríamos posibles conflictos entre tareas.
Se puede hacer, aunque dependerá de los casos de cada uno, en el mío no hay esos conflictos, con lo que prefiero dejarlos separados por claridad, y si en algún caso se diese un poco de conflicto siempre se puede añadir un tiempo de espera o cambiar la prioridad de los perfiles...
Responder Con Cita
  #16  
Viejo 13/02/14, 00:46:40
Array

[xs_avatar]
ruco1980 ruco1980 no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Localización: Alicante
Mensajes: 390
Modelo de smartphone: Lenovo k3 Note Lemon
Tu operador: Simyo
Muchas gracias maid por responder....me ha aclarado bastante...a ver si me pongo a intentar implementarlo que tiene muy buena pinta...
1 saludo!
Responder Con Cita
  #17  
Viejo 13/02/14, 16:58:46
Array

[xs_avatar]
ruco1980 ruco1980 no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Localización: Alicante
Mensajes: 390
Modelo de smartphone: Lenovo k3 Note Lemon
Tu operador: Simyo
Hola maid!! Pues me he puesto al meollo y más o menos voy encajando las cosas....gracias a tus explicaciones me he dado cuenta que hay que fijarse mucho en el gráfico para entender el proceso...quería preguntarte un par de dudas a ver si me las puedes resolver...
Estoy comprobando la transición de unos estados a otros y me funcionan muy bien..por. ej...si me encuentro en el estado "fuera" y paso al estado "coche" o al estado "trabajo" funciona bien; tal y como me explicaste, primero creo un perfil de "controlar estado" donde se establece la variable newstate al estado "al que vamos" y la tarea de salida al "estado al que volvemos", en este caso "fuera"; y ese perfil de "controlar estado" es de valor de variable state coincide con "a donde voy y de donde vengo para que no se desactive", es decir en este caso coincide con "coche/fuera" o "trabajo/fuera"....añadiendo en este perfil de controlar estado los contextos necesarios (antena cercana, BT conectado, wifi, etc...). Después creo el perfil de estado "coche" o "trabajo" simplemente con el contexto de valor de variable state coincide con "coche" o "trabajo" y ejecuto mis tareas de entrada y salida.
En este aspecto me funciona todo correctamente, y por ej. me he dado cuenta que cuando paso del estado "fuera" al estado "coche" se realiza la transición de estados y paso a tener activos los perfiles (en verde) de "controlar estado coche", "estado coche" y "controlar estado fuera". Espero hasta aquí haberme explicado más o menos bien, si no es así lo siento....
Ahora es donde viene mi duda...al establecer los perfiles de "controlar estado fuera" y "estado fuera"...que está digamos en el "centro" del diagrama o autómata de estados....en este caso llegar al estado fuera se puede llegar desde muy diversos sitios (en mi caso puedo llegar desde casa/casamadre/coche/gym y trabajo) y es en este caso donde no sé si estoy haciendo las cosas mal...en los otros caso se establece una relación de dos, al estado al que voy y del que vengo (p.ej valor de variable state coincide con coche/fuera). ¿al establecer el perfil "controlar estado fuera" debo poner el contexto de valor de variable state coincide con casa/casamadre/coche/gym/trabajo? y entonces viene mi otra duda...al poner la tarea de entrada pongo establecer variable newstate a fuera, que es el estado al que voy de uno de los que vengo...pero a la hora de poner la tarea de salida puede ser que pase desde fuera a casa o a trabajo o a coche etc...¿cómo debo de ponerlo? establecer variable newstate a ???si pongo todos separados por / me he dado cuenta que se queda activo (en verde) el perfil "controlar estado fuera", pero si p.ej he pasado al estado "casa" sólo está en verde el de "estado casa" y no el de "controlar estado casa" junto con "el de "controlar estado fuera" como sí me ocurre en los otros casos que he comentado anteriormente....
Madre mía menudo lío me he montado yo solo jajaj...espero haberme medio "explicado" pero ya de antemano te doy las gracias por esta estupenda posibilidad que nos has brindado....si no tienes excesivos perfiles que se solapen me parece una muy muy buena opción de control.....

Otra cosa que me ha llamado mucho la atención, aunque imagino que no lo comprendo por mi falta de conocimientos o no lo estoy entendiendo bien, es que, p.ej en mis otros perfiles, si introduzco una tarea de esperar 10 min con BT encendido y si no ha conectado apaga...hasta que no pasan esos 10 min los otros perfiles o tareas no se ejecutan, esa tarea de "esperar" me da la impresión que "paraliza" lo demás....
En cambio con este modelo (o al menos eso me parece a mí)...en el perfil "estado fuera" le pongo en la tarea de entrada encender BT y esperar 10 min y si por. ej paso al estado Gym en lugar de al de coche y se activa "controlar estado Gym" con su nueva variable newstate a Gym y entonces el perfil "estado gym" se activa se ejecuta su tarea de entrada y si le he puesto la acción de apagar BT porque sé que en el gym no se va a reconectar se ejecuta perfectamente sin necesidad de esa espera de 10 min sin poder actuar lo demás...esto es así o hay algo que se me escapa?
Bueno perdón por el rollo, pero todo esto me parece muy interesante y esto es una droga a la hora de probar cosas jejej lástima no tener más conocimientos....
1 saludo!
Responder Con Cita
  #18  
Viejo 13/02/14, 18:48:08
Array

[xs_avatar]
darkopro darkopro no está en línea
Usuario muy activo
 
Fecha de registro: mar 2010
Mensajes: 3,249
Modelo de smartphone: Galaxy S3
Tu operador: Vodafone
Yo por ejemplo el «estado FUERA» no está asociado a ningún perfil, en mi caso no es necesario en absoluto. FUERA simplemente es un estado de variable que indica que cualquier otro perfil se puede ejecutar.
El de «controlar estado casa» debería de quedarte activo igual que el de «casa» ya que «controlar estado casa» va asociado a una ubicación (o lo que sea) y a una variable (%Estado) que puede tener el valor FUERA o CASA y el perfil «casa» sólo tiene de condición el valor de la variable %Estado a CASA así que se cumplen ambas condiciones a la vez. Al no ser que te refieras a la notificación de autonotification que te dice el valor de la variable %Estado. Al no ser que en opciones de perfil desmarques la opción mostrar en barra de notificaciones.
Sobre problemas con tareas puedes utilizar la variable %TRUN (tarea en ejecución) yo por ejemplo en algunos perfiles uso:
Esperar hasta %TRUN !~ «nombre tarea» y espero a que finalice dicha tarea en ejecución para que siga la tarea actual. También puedes usar Tarea/detener para detener la tarea que está en ejecución y realizar la nueva.

Última edición por darkopro Día 13/02/14 a las 19:15:25.
Responder Con Cita
Gracias de parte de:
  #19  
Viejo 14/02/14, 01:16:58
Array

[xs_avatar]
ruco1980 ruco1980 no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Localización: Alicante
Mensajes: 390
Modelo de smartphone: Lenovo k3 Note Lemon
Tu operador: Simyo
Gracias por responder darkopro...a eso me refiero con mi falta de conocimientos...cuando dices el "estado fuera" no está asociado a ningún perfil y que "fuera" es un estado de variable que indica que cualquier otro perfil se puede ejecutar...no sé muy bien como plasmarlo....así que me dedico al método ensayo-error jejej...de momento lo he puesto de la siguiente manera...no sé si estará bien pero ahora sí que me hace bien la transición entre perfiles....
El perfil "controlar estado fuera" lo he puesto como valor de variable State coincide con * (ese asterisco es lo que no sé si está bien)...con tarea de entrada establecer variable Newstate a Fuera y la de salida establecer variable newstate a *.
Después el perfil "estado fuera" ya es State coincide con "fuera" y sus tareas de entrada y salida.
Teniéndolo así ya realiza bien los cambios y se me quedan activos el de "controlar estado casa", "estado casa" y "controlar estado fuera"; lo que no sé si está bien planteado y tengo que seguir haciendo pruebas. El perfil "controlar estado casa" lo he dejado con variable state coincide con casa + conectado a mi wifi, y he eliminado antena cercana ya que en la zona que vivo no me funciona muy allá...Cuando voy a llegar a casa vengo de "fuera", y en las tareas le indico encender BT y wifi 10 min para que conecten y si no lo hacen se apagan...no me parece un gasto excesivo de batería 10 min encendidos...así cuando llego a casa conecta y mi wifi y cambia los estados...lo único es que llegue a casa sin coche, y ya no tenga el wifi encendido pero p.ej. en otros perfiles de salir a correr etc...le puedo poner que cuando cierre la aplicación endomondo, etc...se active el wifi, entonces llego a casa y el estado fuera cambia a casa bien....
Bueno pues ahí sigo haciendo pruebas....me falta saber si la manera en que lo he puesto está bien planteado porque no lo tengo muy claro....
1 saludo!
Responder Con Cita


  #20  
Viejo 14/02/14, 08:46:25
Array

[xs_avatar]
maid450 maid450 no está en línea
Miembro del foro
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Tu operador: Yoigo
Como dice darkopro, al menos en mi caso también el estado "FUERA" es como un estado "limbo" que indica que no estoy en ningún otro estado, por tanto no tengo asociada a el ninguna tarea de control, es en la tarea de salida del perfil de control del resto que tengo pasar a estado "FUERA".
Por eso en el "control estado casa", "control estado trabajo", "control estado coche", etc... cuando dejo de estar conectado a la wifi de casa o salgo del radio de las antenas cercanas en el estado de salida pongo %NEWSTATE a "FUERA" (tras un par de minutos por si ha sido una desconexión puntual)
Lo que si tengo es un perfil "estado fuera" que lanza el bluetooth un tiempo cuando paso a estado fuera por si entro en el coche, en mi caso cuando salgo de estado "FUERA" no hago nada, pero se puede hacer si en tu caso te interesa.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 05:34:36 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /