PDA

Ver la Versión Completa : ayuda para que no se repita una tarea o perfil


dvsfr6
13/10/16, 16:22:24
Buenas

A ver si me podeis echar una mano con tasker.

Tengo un perfil llamado "perfil" que ejecuta dos tareas dependiendo el estado cargando cualquiera. Uno es para cuando conectas el cargador (tarea dar) y la otra tarea (tarea quitar) para cuando desconectas el cargador (cargando cualquiera invertir) quedando así:
https://s14.postimg.org/p42noz5bl/perfil.jpg

Hasta ahi todo bien.

Lo que quiero es que dentro de la tarea "dar" haga un intent a una aplicacion con la condición que esté cargando el dispositivo. He intentado buscar un "if" con el estado cargando pero no lo he encontrado. Lo que entonces pienso que se puede hacer es el if con la tarea funcionando.

Me explico. El problema está en que cuando se pone a cargar la tablet, por un breve espacio de tiempo el cargador se apaga y se enciende otra vez, por lo que se ejecutan varias tareas a la vez y quiero darle un tiempo de espera para ejecutar una tarea.

Tambien he probado con el esperar, pero hace lo mismo esperando un rato, no verificando las condiciones actuales despues de esperar...

No sé si me explico bien. Siento el tocho

¿Alguien me puede echar una mano?

dvsfr6
13/10/16, 16:32:32
Puede ser así? ?

https://s11.postimg.org/st5g74lpf/perfil.jpg

WillyWeb
13/10/16, 17:20:30
No existe una variable que te indique si el dispositivo se está cargando. :cry:

Lo que puedes hacer es detectar si un perfil está activo comprobando si su nombre está en la lista de perfiles activos que contiene la variable %PACTIVE.

No tengo muy claro que puedas solucionar lo de ese "rebote" del cargador de tu tablet con un IF y el contenido de %PACTIVE. Creo que es más fácil que lo consigas ajustando el "Tiempo de enfriamiento" en las propiedades del perfil.

dvsfr6
13/10/16, 18:25:34
No existe una variable que te indique si el dispositivo se está cargando. :cry:

Lo que puedes hacer es detectar si un perfil está activo comprobando si su nombre está en la lista de perfiles activos que contiene la variable %PACTIVE.

No tengo muy claro que puedas solucionar lo de ese "rebote" del cargador de tu tablet con un IF y el contenido de %PACTIVE. Creo que es más fácil que lo consigas ajustando el "Tiempo de enfriamiento" en las propiedades del perfil.

Vale, puedo poner un tiempo de enfriamiento de 5 segundos por ejemplo.

No encuentro las propiedades del perfil para establecerlo, ¿me puedes decir donde están?

Gracias

leromaro
13/10/16, 19:00:03
No encuentro las propiedades del perfil para establecerlo, ¿me puedes decir donde están?

Hola: mantienes presionado el nombre del perfil y arriba a la derecha te aparecen las opciones de cambiar nombre, eliminar perfil y tercera abre las propiedades de perfil, entras y la segunda opción es la que en este momento estás buscando.
Saludos

chucky6600
13/10/16, 19:02:21
Buenas dvsfr6:
Debes utilizar un título descriptivo en el post. Si no lo haces, seguramente la gente no entrará en tu post para ayudarte porque no lo encontrarán interesante. Esta es una norma básica en todos los foros.

Por favor, edita tu post y modifica el título. Si no sabes como hacerlo, sigue leyendo por favor.


Debes editar tu post en modo avanzado, desde aquí

http://www.subemania.com/imagenes/2013-06-21_1008.png

y luego haces click aquí

http://www.subemania.com/imagenes/2013-06-21_10082.png

De ese modo verás el post completo para editar, incluído el título

http://www.subemania.com/imagenes/2013-06-21_1009.png

Simplemente añade el título correcto y listo. Cuando lo tengas guarda el post.

http://www.subemania.com/imagenes/2013-06-21_1010.png



Es todo. Gracias por mantener el foro ordenado:ok:

Rsc
13/10/16, 19:59:53
He intentado buscar un "if" con el estado cargando pero no lo he encontrado. Lo que entonces pienso que se puede hacer es el if con la tarea funcionando.

En el perfil "Cargando", puedes incluir lo siguiente:

Tarea de entrada:
Establecer variable: %Cagando - 1

Tarea de salida:
Establecer variable: %Cargando - 0

Ahora ya puedes disponer de un IF de la variable %Cargando en cualquiera de tus tareas.

Caravantes
14/10/16, 00:47:18
Lo que quiero es que dentro de la tarea "dar" haga un intent a una aplicacion con la condición que esté cargando el dispositivo. He intentado buscar un "if" con el estado cargando pero no lo he encontrado.

Hola. Como te ha dicho Willy no hay una condición IF con el estado cargando, ni tampoco una variable con el estado cargando. Pero en tu caso tienes una solución fácil. Comienza poniéndole al perfil un nombre, supongamos que al perfil lo llamas "Cargando". En tal caso la condición sería
IF %PACTIVE ~ *Cargando*

La variable %PACTIVE contiene la lista de los perfiles activos, y el perfil "Cargando" estárá activo siempre que el dispositivo esté cargando, así que ya lo tienes.


Tambien he probado con el esperar, pero hace lo mismo esperando un rato, no verificando las condiciones actuales despues de esperar...


Ahora puedes poner la acción Esperar, y luego la condición que te he indicado antes. De esta forma se producirá la espera y después de la espera comprobará si el dispositivo está cargando.


No sé si me explico bien.

La verdad es que te explicas de un modo bastante confuso y no estamos seguros de estar ayudando o dando palos de ciego. Lo primero que deberías hacer es lo que te ha dicho Chucky, poner un título descriptivo en el primer post. Luego, también también te sugiero que leas las recomendaciones para participar en este subforo de Tasker, el enlace está en la cabecera del foro
http://www.htcmania.com/showthread.php?t=622394

dvsfr6
14/10/16, 08:36:51
Hola. Como te ha dicho Willy no hay una condición IF con el estado cargando, ni tampoco una variable con el estado cargando. Pero en tu caso tienes una solución fácil. Comienza poniéndole al perfil un nombre, supongamos que al perfil lo llamas "Cargando". En tal caso la condición sería
IF %PACTIVE ~ *Cargando*

La variable %PACTIVE contiene la lista de los perfiles activos, y el perfil "Cargando" estárá activo siempre que el dispositivo esté cargando, así que ya lo tienes.



Ahora puedes poner la acción Esperar, y luego la condición que te he indicado antes. De esta forma se producirá la espera y después de la espera comprobará si el dispositivo está cargando.



La verdad es que te explicas de un modo bastante confuso y no estamos seguros de estar ayudando o dando palos de ciego. Lo primero que deberías hacer es lo que te ha dicho Chucky, poner un título descriptivo en el primer post. Luego, también también te sugiero que leas las recomendaciones para participar en este subforo de Tasker, el enlace está en la cabecera del foro
http://www.htcmania.com/showthread.php?t=622394

Vale. Entonces he hecho dos perfiles, una llamada cargando y otra nocargando y pongo la condición que me comentas en la tarea.

Tambien he puesto en los dos perfiles un tiempo de enfriamiento de 10 segs

Para que se pueda entender mejor el dispositivo es una tablet que está integrada en el salpicadero del coche y está integrada tambien con el cargador. Lo que ocurre es que al dar contacto del coche se pone a cargar , pero cuando arrancas para de cargar durante 1 segundo.

Adjunto fotos para que se vea mas facil.

https://s15.postimg.org/fq5ejogdn/image.jpg

https://s15.postimg.org/uamheibcb/image.jpg

https://s15.postimg.org/3qtwcdasr/image.jpg

https://s15.postimg.org/7oh61rxm3/image.jpg

Muchas gracias a todos:gracias:

dvsfr6
14/10/16, 10:57:45
Sigo dando vueltas al tema. Lo que realmente busco es que la tarea "quitar" o el perfil "nocargando" que cuando se active, compruebe despues de 5 segundos que no tiene cargador para seguir ejecutándose.

Lo que intento evitar es en ese corte de suministro de 3 segs. que se cierre la aplicacion y luego se vuelva a abrir, porque tambien hay veces que no abre o no se cierra.

Gracias a todos

Rsc
14/10/16, 16:55:22
Crea un perfil como el que te comente y modificado hasta dejarlo así:


Tarea de entrada:
Establecer variable: %Cagando - 2

Tarea de salida:
Establecer variable: %Cargando - 1
Esperar 5 segundos
Establecer variable: %Cagando a 0
Ahora ya tienes una variable global %Cargando y sabes que si;
%Cargando ~ 2 (cargador conectado)
%Cargando ~ 1 (cargador se acaba de desconectar, y valdrá 1 durante 5 segundos)
%Cargando ~ 0 (Cargador lleva desconectado más de 5 segundos)

dvsfr6
15/10/16, 10:42:30
Crea un perfil como el que te comente y modificado hasta dejarlo así:


Tarea de entrada:
Establecer variable: %Cagando - 2

Tarea de salida:
Establecer variable: %Cargando - 1
Esperar 5 segundos
Establecer variable: %Cagando a 0
Ahora ya tienes una variable global %Cargando y sabes que si;
%Cargando ~ 2 (cargador conectado)
%Cargando ~ 1 (cargador se acaba de desconectar, y valdrá 1 durante 5 segundos)
%Cargando ~ 0 (Cargador lleva desconectado más de 5 segundos)

https://fotos.subefotos.com/d4079802a8c625d77ca1686c6a445c78o.jpg
https://fotos.subefotos.com/4f6b0d5774ad267fe6215ccc93177ebco.jpg


en cuanto pueda probarlo te cuento .

Gracias
:gracias:

Rsc
15/10/16, 11:47:12
No era esa exactamente la idea. Lo que yo te explico es para hacerlo en un perfil, con el estado/ cargando. Y el fin es crear la variable global %Cargando, para que puedas utilizar un IF en base a su valor, en cualquier tarea de Tasker.

Al hacer ese perfil, puedes poner tus tareas de apagar modo coche, matar aplicación etc, siempre con la condición; If %Cargando ~ 0

Así que como te comentó, en tu perfil original solo tienes que añadir la condición ℅Cargando ~0 , en las tareas que quieres que se ejecuten cuando el cargador lleve mas de 5 sg desconectado.

dvsfr6
17/10/16, 15:25:44
No era esa exactamente la idea. Lo que yo te explico es para hacerlo en un perfil, con el estado/ cargando. Y el fin es crear la variable global %Cargando, para que puedas utilizar un IF en base a su valor, en cualquier tarea de Tasker.

Al hacer ese perfil, puedes poner tus tareas de apagar modo coche, matar aplicación etc, siempre con la condición; If %Cargando ~ 0

Así que como te comentó, en tu perfil original solo tienes que añadir la condición ℅Cargando ~0 , en las tareas que quieres que se ejecuten cuando el cargador lleve mas de 5 sg desconectado.

Realmente lo que no quiero que se ejecute si está cargando mas de 5 segundos es el punto 6 de quitar "taskill".

Lo he puesto como en las capturas pero me sigue cerrando la aplicacion a los 5 o 6 segundos de cortar la corriente durante 1 segundo.
En definitiva, estoy en las mismas....:loco::loco:

Rsc
17/10/16, 19:20:42
Bueno ahora que estoy en el PC, a ver si me puedo explicar mejor. Corrígeme si me equivoco;

lo que quieres es que cuando la tablet que tienes conectada al coche, esté cargando, se ejecuten una serie de acciones y cuando se desconecte se ejecuten otras, PERO tienes el problema de que cuando arrancas el coche, la tablet deja de cargar durante unos segundos, y se te ejecutan las tareas sin tu desearlo.

Si es eso lo que quieres, voy a explicarte como lo haría yo desde 0, sin tener en cuenta como lo has hecho hasta ahora. Después de responder indicando como lo haría yo, lo he probado y me he percatado de que parece ser que para que funcione hay que "jugar" un poco con las prioridades de las tareas, así que a continuación te pongo un ejemplo que a mi me ha funcionado.

Crea una tarea y llámale "Tarea de salida"
Acción 1. Establecer Variable %Cargando a 1
Acción 2. Esperar 10 sg
Acción 3. Establecer Variable %Cargando a 0

Crea una tarea y llámale "Tarea de entrada"
Acción 2. Establecer Variable %Cargando a 2
Acción 3. Detener "Tarea Salida"

Perfil / Estado / Cargando
Tarea Entrada: Tarea / Realizar tarea "Tarea Entrada" (Prioridad 5)
Tarea Salida: Tarea / Realizar tarea "Tarea Salida" (Prioridad 4)

Perfil / Evento / Variable / Establecer variable "Cargando valor 2"
Tarea: (Añade en este perfil las acciones que quieres que se ejecuten cuando conectes la tablet)

Perfil / Evento / Variable / Establecer variable "Cargando valor 0"
Tarea: (Añade a continuación las acciones que quieras que se ejecuten cuando la tablet lleve desconectada más de 10 segundos)

Haciéndolo tal cual después de haberlo probado, te aseguro que las tareas no se ejecutaran hasta que la tablet lleve más de diez segundos desconectada. No obstante podrías tener un problema, ya que al arrancar el coche, %Cargando pasará a valer 1 unos segundos y de nuevo volverá a valer 2, por lo que se ejecutaran de nuevo las acciones que tienes añadidas a el perdil de "Evento / Cuando %Cargando valga 2"

Pero eso tiene muchas soluciones, por ejemplo, en este perfil hemos creado una variable global, que obtiene su valor en base a al Estado / Cargando, pues se puede hacer lo mismo con cualquier estado, y con cualquier APP etc.

Así que yo lo que haría sería crean una variable que valga 1, cuando la aplicación Car Home Ultra este abierta, y que valga 0 cuando esté cerrada, así a las tareas que se ejecutan en el perfil de "Evento / Cuando %Cargando valga 2" , le puedes añadir un IF para que no se ejecuten mientras la app este abierta.

Espero que esta vez si que te funcione, un saludo.

Caravantes
17/10/16, 20:39:32
Realmente lo que no quiero que se ejecute si está cargando mas de 5 segundos es el punto 6 de quitar "taskill".
Lo he puesto como en las capturas pero me sigue cerrando la aplicacion a los 5 o 6 segundos de cortar la corriente durante 1 segundo.

Por favor, no pongas capturas de ese tipo. Es preferible que pongas la descripción del perfil o tarea, tal como se indica en las siguientes páginas.
http://www.htcmania.com/showthread.php?t=622394
http://www.htcmania.com/showthread.php?p=8852245

Yo vuelvo a sugerirte el modelo que ya te comenté, mediante el cual puedes hacer una demora y luego puedes comprobar si el perfil sigue activo.

Pefil "Cargando"
Contexto: Cargando.
Tarea de entrada:
- Esperar 10 segundos.
- Detener tarea si %PACTIVE no coincide con *Cargando*
- Añadir aquí las acciones que quieres que se ejecuten cuando el perfil se mantiene activado tras la demora de los 10 segundos (o el tiempo que tú consideres adecuado).
Tarea de salida:
- Esperar 10 segundos.
- Detener tarea si %PACTIVE coincide con *Cargando*
- Añadir aquí las acciones que quieres que se ejecuten cuando el perfil se mantiene desactivado tras la demora.

Si ese modelo no te funciona, todavía te propongo otro:

Pefil "Cargando"
Contexto: Cargando.
Propiedades del perfil: Casilla Fuerza-Orden-Tareas desactivada.
Tarea de entrada:
- Detener tarea de salida (hay que poner el nombre de la tarea de salida)
- Esperar 10 segundos.
- Añadir aquí las acciones que quieres que se ejecuten cuando el perfil se mantiene activado tras la demora.
Tarea de salida:
- Detener tarea de entrada (hay que poner el nombre de la tarea de entrada)
- Esperar 10 segundos.
- Añadir aquí las acciones que quieres que se ejecuten cuando el perfil se mantiene desactivado tras la demora.

Más información en el siguiente hilo (leete el hilo completo porque aporta muchas pistas y enlaces):

Contextos de estado con demora en la tarea de entrada y/o salida.
http://www.htcmania.com/showthread.php?t=617822

Xcso
17/10/16, 22:09:14
Lo que creo que sucede es que la tarea de salida esta en los 5s y cuando se activa la tarea de entrada poniendo la variable a 2 sigue en ese periodo de 5s. Por lo tanto a puesto la variable a 2 pero cuando llega al final de los 5s la pone a cero. Conflicto de tarea entrada/salida.

Yo haría algo así.

Tarea de entrada:
Establecer variable: %Cargando - 1
+código

Tarea de salida:
Establecer variable: %Cargando - 0
Esperar 5 segundos
-Aquí si cargando =1 mato/detengo la tarea de salida
+código

Un saludo.

WillyWeb
18/10/16, 08:48:46
Lo que realmente busco es que la tarea "quitar" o el perfil "nocargando" que cuando se active, compruebe despues de 5 segundos que no tiene cargador para seguir ejecutándose.

Si sólo es eso la cosa debería ser sencilla...

Vamos a mantener las cosas simples. Si te parece volvemos al principio en el que tenías un perfil (cargando cualquiera) y dos tareas para la entrada y la salida (dar y quitar).

Al principio de la tarea de entrada (dar) crea una variable global (%Cargando) y le asignas el valor de %TIMES.

En la primera acción de la tarea de salida (quitar) pon una acción "Detener" que compruebe si %Cargando+5 < %TIMES.

Eso debería detener la tarea de salida si la tarea de entrada se ha ejecutado hace menos de 5 segundos.

Rsc
18/10/16, 12:21:53
Al principio de la tarea de entrada (dar) crea una variable global (%Cargando) y le asignas el valor de %TIMES.

En la primera acción de la tarea de salida (quitar) pon una acción "Detener" que compruebe si %Cargando+5 < %TIMES.


Muy buena esta solución utilizando al valor de %TIMES, con la de vueltas que le he dado, no se me había ocurrido una solución tan fácil. Simplemente puntualizar que creo que habría un pequeño error, en el IF que marco en negrita, para que funcione debería de ser si %Cargando+5 > %TIMES , corrígeme si me equivoco.

Un saludo.

WillyWeb
18/10/16, 13:10:57
... para que funcione debería de ser si %Cargando+5 > %TIMES , corrígeme si me equivoco.

Pues tienes razón. :ok:

De primeras me lo había planteado de otra forma y después se me pasó dar la vuelta a la condición lógica. :rolleyes:

dvsfr6
18/10/16, 14:38:26
Lo que creo que sucede es que la tarea de salida esta en los 5s y cuando se activa la tarea de entrada poniendo la variable a 2 sigue en ese periodo de 5s. Por lo tanto a puesto la variable a 2 pero cuando llega al final de los 5s la pone a cero. Conflicto de tarea entrada/salida.

Yo haría algo así.

Tarea de entrada:
Establecer variable: %Cargando - 1
+código

Tarea de salida:
Establecer variable: %Cargando - 0
Esperar 5 segundos
-Aquí si cargando =1 mato/detengo la tarea de salida
+código

Un saludo.

Entiendo el procedimiento. Lo he probado así. Sigue cerrándome el programa cuando arranco. Hay algo que hago mal? He mirado en la pestaña Variables y tarda demasiado en cambiar a 1 cuando doy contacto. No entiendo por qué , ya que si no me he equivocado he puesto tal y como me lo has dicho

https://fotos.subefotos.com/e4c921d09cd79eca394481beb83949a9o.jpg
https://fotos.subefotos.com/1af0938b6643af9f3074df1b62c04a96o.jpg
https://fotos.subefotos.com/5afe039e0cf30c3b69ce8b38cc11abb3o.jpg
https://fotos.subefotos.com/0da793c2bf8eae0a7adf287cb2ebb56co.jpg

dvsfr6
18/10/16, 15:29:47
Pues tienes razón. :ok:

De primeras me lo había planteado de otra forma y después se me pasó dar la vuelta a la condición lógica. :rolleyes:

Bueno, voy a probar con lo que indicáis aqui. Reitero mi agradecimiento por vuestro esfuerzo.

https://fotos.subefotos.com/f394458cee49b1043cccb1eadd71eb1ao.jpg
https://fotos.subefotos.com/ef83f3f3bf3f71df8d1178dbe247945fo.jpg

Bien, creo que así es como me indicáis, Si el valor en segundos de cuando se conectó el cargador mas cinco es mayor que el valor actual en segundos (que significará que habrá pasado menos de 5 segundos), detenga la tarea.

Voy a probarlo entonces

WillyWeb
18/10/16, 17:49:31
Bien, creo que así es como me indicáis, Si el valor en segundos de cuando se conectó el cargador mas cinco es mayor que el valor actual en segundos (que significará que habrá pasado menos de 5 segundos), detenga la tarea.

Exactamente eso :ok: