PDA

Ver la Versión Completa : Variable o contexto «datos activos»


ferfoxi
30/06/16, 04:30:42
Hola, por más vueltas que la doy no lo encuentro.

¿Existe la variable o el contexto de datos móviles activos?

Lo quiero para hacer búsqueda de wifi sólo cuando están activados los datos 3g, pero no encuentro la variable interna de tasker o el contexto para que sólo se ejecute en ese momento. A ver si alguien sabe cómo hacerlo.

Gracias de antemano.

Enviado desde mi HUAWEI VNS-L31 mediante Tapatalk

WillyWeb
30/06/16, 09:10:26
Tienes un contexto de estado que te dice qué tipo de red móvil tienes activa en cada momento (2G/3G/4G/ninguna). Si quieres controlar los cuatro estados tendrás que crear cuatro perfiles. Cuando veas el contexto lo entenderás.

Busca en ... Estado > Red > Red móvil

ferfoxi
02/07/16, 23:25:12
Gracias, pensé que ese contexto era para cuando tenías activa la red pero no los datos. Es justo lo que necesitaba. Muchas gracias.

Enviado desde mi HUAWEI VNS-L31 mediante Tapatalk

WillyWeb
02/07/16, 23:31:37
Es justo lo que necesitaba. Muchas gracias.

Pues me alegro :ok:

ferfoxi
07/07/16, 11:34:01
Por lo que veo del funcionamiento de este contexto, sólo funciona cuando están realmente activos los datos, pero no siempre que tengo marcada la casilla de datos en android. Pongo un par de ejemplos para que se me entienda.

Al estar en la calle con los datos activos el contexto funciona bien, pero al entrar en casa y conectarme al wifi se desactiva el contexto.
Si estoy en una zona sin cobertura el contexto no cumple aunque tenga la casilla de los datos activada.

Lo quiero para hacer búsqueda de wifi cuando he activado los datos, pero claro, si estoy en una zona sin cobertura (en el garaje, o en el pueblo que no hay cobertura de mi compañía, por ejemplo) deja de buscar wifi al no cumplir la condición.

WillyWeb
07/07/16, 12:01:44
Te entiendo perfectamente y, como bien dices, lo que ese contexto hace es indicar a que tipo de red móvil estas realmente "conectado" sin tener en cuenta lo que tengas seleccionado en las preferencias del sistema o en cualquier otra parte. Por lo que decías en tu primer mensaje parecía que era justo eso lo que necesitabas (Lo quiero para hacer búsqueda de wifi sólo cuando están activados los datos 3g).

Al margen de eso, no entiendo la lógica de esa búsqueda de WiFi que describes ahora. Buscas WiFi cuando tienes los datos activados pero no quieres buscar si estás conectado a una red de datos (que es justo lo que te dice ese contexto) :oh:

¿No sería más efectivo buscar WiFi cuando pierdas la conexión de datos para intentar seguir conectado? ... supongo que tendrás tus motivos para querer hacerlo así.

ferfoxi
07/07/16, 14:41:18
Lo que quiero es que me busque wifi siempre que lo tengo seleccionado en las preferencias del sistema y no sólo cuando tengo cobertura.

Me funciona genial cuando llego a mi casa, pues tengo cobertura, pero no me funciona cuando voy a la casa del pueblo, que no tengo cobertura de mi operador, por lo que el perfil no se activa. Quiero que busque wifi tanto si estoy conectado como si no, pero siempre que lo tenga seleccionado en las preferencias del sistema.

Gracias por la ayuda.

WillyWeb
07/07/16, 15:25:21
Lo que quiero es que me busque wifi siempre que lo tengo seleccionado en las preferencias del sistema y no sólo cuando tengo cobertura.

Perdona pero sigo sin pillarlo. :(

Quieres que te busque WiFi siempre que tengas seleccionado, ¿el qué? ¿los datos? ¿el WiFi?

Estoy dando por supuesto que usas el móvil como el 99% de la gente. Llevas los datos activados y te conectas a un WiFi cuando estás en ciertos sitios "conocidos". Puede que ese sea mi error. Si lo aclaras un poco más seguro que alguien puede aportar ideas que resuelvan tu problema. :loco:

ferfoxi
07/07/16, 15:52:42
Con tanta explicación la he liado, jajaja.

Quiero que busque wifi cuando tenga los datos móviles seleccionados.

Enviado desde mi HUAWEI VNS-L31 mediante Tapatalk

WillyWeb
07/07/16, 17:23:20
Quiero que busque wifi cuando tenga los datos móviles seleccionados.

Perfecto. ¿Es que no llevas los datos siempre seleccionados? eso es lo habitual :oh:

Y si no los llevas siempre seleccionados ¿por qué? ¿en qué situaciones los desactivas? ¿cómo lo haces?

ferfoxi
07/07/16, 17:31:16
Lo desactivo por las noches. Bajo la barra de notificaciones y desactivo datos móviles y wifi. De este modo por la noche no me busca de nuevo el wifi para conectar.
Al despertar enciendo wifi y datos y al salir de casa automáticamente me apaga el wifi, pero puntualmente lo enciende tasker para buscar de nuevo wifi. Esto lo hago mediante un perfil con los estados «conectado a datos móviles» y «no conectado a wifi» con una tarea que es un bucle que enciende el wifi 10 segundos cada 10 minutos.

Enviado desde mi HUAWEI VNS-L31 mediante Tapatalk

WillyWeb
07/07/16, 18:29:55
Parece que te pasa el día buscando un WiFi al que conectar y lo de querer controlar si los datos están seleccionados, o no, sólo es para evitar que esa tarea buscadora se detenga. ¿Lo he entendido bien?

Supongo que sólo te conectas a unos pocos puntos de acceso WiFi conocidos. ¿Te has planteado activar el WiFi sólo en esas ubicaciones? Además de ser más efectivo creo que podrías ahorrar bastante batería.

ferfoxi
08/07/16, 12:01:15
Lo tengo organizado de la siguiente manera.

Perfil, que se activa si no estoy conectado a ningún wifi y sí estoy conectado a datos móviles.

La tarea de entrada es un bucle que activa el wifi 10 seg cada 10 minutos, lo que equivale a 1 minuto cada hora, por lo que si paso 12 horas fuera de casa se me activaría el wifi 12 minutos en total (poco gasto de batería).

Si en esos 10 segundos se conecta a algún wifi entonces se desactiva el perfil y se queda conectado al wifi. Da igual el wifi que sea, porque si en esos 10 segundos se conecta, entonces se queda conectado. Si se desconecta del wifi (por ejemplo al salir de mi casa) se apaga el wifi y sigue con la búsqueda de 10 segundos cada 10 minutos.

La tarea de salida mata la tarea de entrada.


Por la noche, al apagar datos móviles y wifi se desactiva el perfil y no realiza la búsqueda. Por la mañana enciendo wifi y datos y ya tengo el perfil dispuesto para todo el día y puedo olvidarme de encender y apagar el wifi para evitar consumos excesivos de batería.

WillyWeb
08/07/16, 18:48:03
Bueno, si el sistema funciona a tu gusto no será yo el que le ponga pegas :silbando:

Lo que no entiendo es por qué te empeñas en condicionar la activación del WiFi al estado de los datos :oh:

Supongo que lo haces así porque has visto fácil la relación de apagar los datos por la noche con que esa tarea también se mantenga desactivada, pero ya estás viendo que depender del estado de los datos tiene efectos secundarios.

Se me ocurre que podrías activar/desactivar ese perfil buscador de WiFi desde una notificación permanente o desde un widget en el escritorio. ¿Cómo lo ves?

Caravantes
09/07/16, 01:22:05
Lo que no entiendo es por qué te empeñas en condicionar la activación del WiFi al estado de los datos

Sospecho que el motivo sea el siguiente:
En principio, el perfil buscador de Wifi debe estar activado siempre, salvo en dos circunstancias: A) que ya tengamos una conexión Wifi, cosa que se controla automáticamente por el propio sistema, seguramente mediante un contexto de tipo "no conectado a Wifi"; y B) tampoco debe funcionar durante el periodo de sueño, en el que Ferfoxi parece preferir que no haya transmisiones de ningún tipo (ni Wifi ni Datos-De-Telefonía-Móvil). Por tanto, en principio, habría que decirle a Tasker, de alguna manera, cuándo comienza el periodo de dormir y cuándo termina. Podría ser mediante un Widget o algo similar. Parece que Ferfoxi ha preferido indicarlo precisamente mediante la activación/desactivación de los Datos-Móviles, que requiere un esfuerzo muy similar al de pulsar un widget. O sea que, para Ferfoxi, tener DatosMóviles desactivados significa que está durmiendo y por tanto el perfil buscador de Wifi debe permanecer inactivo. Tener DatosMóviles activados significa que el perfil buscador de Wifi puede funcionar (salvo que se tenga conexión a una red Wifi). Para mí, este planteamiento tiene bastante lógica, y es sencillo de manejar/programar.

Pero quizá Ferfoxi tenga otros motivos para vincular el perfil y los DatosMóviles.

WillyWeb
09/07/16, 10:03:48
Sospecho que el motivo sea el siguiente:

No tengo dudas de que ese es el motivo. La faena es que el contexto que reacciona al estado de los datos lo hace cuando la conexión es efectiva y no cuando se cambia el estado desde los ajustes del Android. Eso hace que al perder cobertura (pueblo o garaje) l a tarea que busca WiFi deje de funcionar, y no es lo deseado.

Yo también me inclino por el uso de un widget que encienda/apague un "modo sueño", que además de controlar esa tarea buscadora podría hacer otros ajustes interesantes para las horas de descanso (brillo, volumen, etc).

ferfoxi
09/07/16, 11:04:48
Efectivamente lo uso en el modo que dice Caravantes. Antes tenía un nexus 4 roteado y me había creado una escena que me encendía datos, wifi y me ponía una variable que llamaba dormido a 0. Esa escena me saltaba automáticamente con la alarma de la mañana o con el gesto de Nova de arrastrar dos dedos en el escritorio. Podía elegir entre despierto y dormido.
La variable dormido era la que me hacía buscar wifi si no tenía conexión establecida.
Pero ahora he pasado a un p9 lite y no lo tengo roteado (tampoco me interesa para no perder el pago por NFC) y ando investigando lo más cómodo que hacer al despertarme y dormir y se me había ocurrido que era bajar la cortina y cortar datos móviles y wifi o encenderlo al despertarme, porque al no ser root no puedo controlar los datos móviles desde tasker.
La única pega es que al perder cobertura móvil, deja de buscar WIFI y no se como arreglarlo y que no me añada pasos a la hora de «despertar» o «dormir» al móvil.

Enviado desde mi HUAWEI VNS-L31 mediante Tapatalk

WillyWeb
09/07/16, 11:51:20
¿Has mirado si Secure Settings tiene algo que te pueda ayudar, aunque no seas root? No te puedo dar muchas pistas porque yo no lo uso, pero por aquí se recurre mucho a ese plugin para cosas como esta.

https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plu gin

WillyWeb
09/07/16, 12:06:03
Creo que he dado con algo que te puede valer...

Tienes una acción que te dice si los datos están activados/desactivados independientemente de que estén activos (eso te lo dice el perfil que te propuse al principio).

Prueba con la acción ...

Red > Probar Red ... en Tipo selecciona "Datos Móviles Activados" y guarda el resultado en la variable que más te guste (el valor es yes/no).

La cosa sería tan fácil como comprobar en la tarea buscadora de WiFi si esa variable es "yes" y comenzar el proceso de búsqueda, o es "no" para dar la tarea la tarea por terminada. De esa forma, cuando apagues los datos por la noche, el perfil/tarea que intenta conectarse a un WiFi nunca llegará a ponerse en marcha.

ferfoxi
11/07/16, 09:35:16
Me funciona esa acción perfectamente. Muchas gracias por los comentarios.

He creado una variable %DATOSMOVIL donde se guarda el yes/no y la tarea de búsqueda de wifi se activa ahora si el valor de la variable el yes. Lo malo es que el monitoreo de la variable no es constante, ya que se tiene que ejecutar la acción.
Lo he resuelto creando un perfil con el contexto de conectado a 2g,3g y 4g con tarea de entrada y salida la comprobación de si están marcados los datos móviles en los ajustes de android. De este modo si pierdo cobertura, el valor de la variable %DATOSMOVIL sigue siendo yes y sigue buscando wifi, mientras que antes se me paraba la búsqueda. También he metido la comprobación dentro del bucle de búsqueda de wifi para que si desactivo los datos mientras estoy sin cobertura me pare la comprobación del wifi.
Sé que me explico fatal, pero gracias por la ayuda chicos.

WillyWeb
11/07/16, 10:18:02
Por lo que cuentas lo tienes todo controlado y te funciona como querías. Si te apetece "afinar" el sistema copia aquí la descripción de las tareas/perfiles y vemos la forma de optimizarlo al máximo.

Sigue las instrucciones del punto 1 de este tema...

http://www.htcmania.com/showthread.php?p=8852245

ferfoxi
11/07/16, 12:31:24
Claro que me apetece.
El sistema se basa en dos perfiles.

Primer perfil: se activa al conectarse efectivamente a los datos móviles, con una misma tarea de entrada y salida, que consiste en almacenar en la variable %DATOMOVIL si la opción de datos móviles en los ajustes de android está marcada como yes/no.

Perfil: Datos Móviles (6)
Estado: Red móvil [ 2G:Encendido 3G:Encendido 3G - HSPA:Encendido 4G:Encendido ]
Entrada: Datos Móviles (7)
A1: Probar Red [ Tipo:Datos Móviles Activados Datos: Almacenar Resultado en:%DATOMOVIL ]

Salida: Datos Móviles (7)
A1: Probar Red [ Tipo:Datos Móviles Activados Datos: Almacenar Resultado en:%DATOMOVIL ]

Segundo perfil: Se activa cuando el valor de la variable %DATOMOVIL es yes y no estoy conectado a ningún wifi. Primero comprueba de nuevo que en los ajustes de android no tenga marcado que se conecte a datos móviles. Después enciende el wifi durante 5 minutos para una primera comprobación (esto me ayuda a que no apague el wifi si salgo un poco de la oficina y vuelvo en los 5 primeros minutos, o si salgo de casa a tirar la basura por ejemplo). Luego tiene un bucle de 10 minutos en el que se enciende el wifi 10 segundos y comprueba de nuevo el estado del ajuste de android de datos móviles. La tarea de salida detiene el bucle de la tarea de entrada del perfil.

Como detalle pijo, tengo una notificación cuando pierdo el wifi y comienza la búsqueda y otra notificación al conectar a wifi, que me dice cuántas veces se ha repetido el bucle y el tiempo en segundos desde que se activó el wifi hasta que se produjo la conexión. Con este último detalle puedo comprobar cuánto tarda en conectarse al wifi y así poder ajustar cuánto tiempo tiene que estar encendido para realizar la conexión. En mi antiguo nexus 4 veía que tardaba entre 20 y 25 segundos, pero en el nuevo P9 Lite siempre tarda menos de 10, por lo que he podido ajustar ese tiempo de wifi encendido.

Perfil: Buscar Wifi (33)
Restore: no Enforce: no
Estado: No Conectado a Wifi [ SSID:* MAC:* IP:* ]
Estado: Valor de variable [ %DATOMOVIL ~ yes ]
Entrada: Búsqueda (34)
A1: Probar Red [ Tipo:Datos Móviles Activados Datos: Almacenar Resultado en:%DATOMOVIL ]
A2: Esperar [ MS:0 Segundos:5 Minutos:0 Horas:0 Días:0 ]
A3: WiFi [ Establecer:Encendido ]
A4: Establecer variable [ Nombre:%INICIOWIFI A:%TIMES Calcular:Encendido Añadir:Apagado ]
A5: Esperar [ MS:0 Segundos:15 Minutos:0 Horas:0 Días:0 ]
A6: Notificación sonora [ Título:Inicio búsqueda WiFi Texto: Icono:null Número:99 Archivo de sonido:Foxi/notifications/burbuja.mp3 Prioridad:3 ] Si (if) [ %WIFII !~ *connection* ]
A7: Esperar [ MS:0 Segundos:0 Minutos:5 Horas:0 Días:0 ]
<Iniciobuscar>
A8: Esperar [ MS:1 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A9: WiFi [ Establecer:Encendido ]
A10: Establecer variable [ Nombre:%INICIOWIFI A:%TIMES Calcular:Encendido Añadir:Apagado ]
A11: Esperar [ MS:0 Segundos:10 Minutos:0 Horas:0 Días:0 ]
A12: WiFi [ Establecer:Apagado ] Si (if) [ %WIFII !~ *CONNECTION* ]
A13: Esperar [ MS:0 Segundos:0 Minutos:10 Horas:0 Días:0 ]
A14: Sumar a variable [ Nombre:%CUENTAWIFI Valor:1 Módulo (wrap around):0 ]
A15: Probar Red [ Tipo:Datos Móviles Activados Datos: Almacenar Resultado en:%DATOMOVIL ]
A16: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Iniciobuscar ] Si (if) [ %DATOMOVIL ~ yes ]

Salida: Salir Búsqueda (13)
A1: Detener [ Con error:Apagado Tarea:Búsqueda ]
A2: Establecer variable [ Nombre:%FINALWIFI A:%TIMES-%INICIOWIFI Calcular:Encendido Añadir:Apagado ]
A3: Notificación sonora [ Título:Final búsqueda WiFi Texto:%FINALWIFI seg WiFi on
%CUENTAWIFI vueltas Icono:null Número:0 Archivo de sonido:Foxi/notifications/ding dong.mp3 Prioridad:3 ] Si (if) [ %WIFII ~ *CONNECTION* & %CUENTAWIFI > 1 ]
A4: Establecer variable [ Nombre:%CUENTAWIFI A:1 Calcular:Encendido Añadir:Apagado ]

Un saludo y gracias de nuevo.

WillyWeb
11/07/16, 18:45:43
Estupendo. Todo claro y explicado. :ok:

Para la próxima mete el código entre etiquetas . Se lee mejor, se respetan los tabuladores y no salen caritas entre el texto. Esas etiquetas [CODE] se ponen con el botón # de la barra del editor de mensajes.

Al tema...

El perfil "Datos Móviles" perfecto. Hace lo que tiene que hacer de forma simple y rápida. Siendo puristas la entrada del perfil siempre debería provocar que %DATOMOVIL tenga valor "yes" y sólo deberías "Probar Red" en la salida del perfil para comprobar si la desconexión de los datos ha sido por falta de cobertura o porque los has desactivado. Aunque para hacer lo "correcto" tendrías que añadir más acciones a una tarea que con una sola acción resuelve el problema perfectamente. Yo lo dejaría como está. ;-)

El perfil "Buscar Wifi" no admite mucha discusión. Esas son tus condiciones y así se queda.

En las tareas "Búsqueda" y "Salir Búsqueda" sí que tenemos posibilidad de mejorar algo las cosas. Antes de nada te diré que yo usaría otra estrategia para buscar y conectarme a WiFis conocidos, pero si el sistema funciona a tu gusto, así se queda.

Te voy a romper tres o cuatro esquemas, pero creo que merecerá la pena. :rolleyes:

-Te sobran las comprobaciones de "Probar Red"
-No estás dejando que los perfiles hagan su trabajo
-Te sobra una de las tareas

[CODE]Buscar Wifi (666)
Abortar Tarea Existente

A1: Si (if) [ %caller1 ~ *enter* ]

A2: Esperar [ MS:0 Segundos:5 Minutos:0 Horas:0 Días:0 ]
A3: WiFi [ Establecer:Encendido ]
A4: Establecer variable [ Nombre:%INICIOWIFI A:%TIMES Calcular:Encendido Añadir:Apagado ]
A5: Esperar [ MS:0 Segundos:15 Minutos:0 Horas:0 Días:0 ]
A6: Notificación sonora [ Título:Inicio búsqueda WiFi Texto: Icono:null Número:99 Archivo de sonido:Foxi/notifications/burbuja.mp3 Prioridad:3 ] Si (if) [ %WIFII !~ *connection* ]
A7: Esperar [ MS:0 Segundos:0 Minutos:5 Horas:0 Días:0 ]
<Iniciobuscar>
A8: WiFi [ Establecer:Encendido ]
A9: Establecer variable [ Nombre:%INICIOWIFI A:%TIMES Calcular:Encendido Añadir:Apagado ]
A10: Esperar [ MS:0 Segundos:10 Minutos:0 Horas:0 Días:0 ]
A11: WiFi [ Establecer:Apagado ] Si (if) [ %WIFII !~ *connection* ]
A12: Esperar [ MS:0 Segundos:0 Minutos:10 Horas:0 Días:0 ]
A13: Sumar a variable [ Nombre:%CUENTAWIFI Valor:1 Módulo (wrap around):0 ]
A14: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Iniciobuscar ]

A15: Else

A16: Establecer variable [ Nombre:%FINALWIFI A:%TIMES-%INICIOWIFI Calcular:Encendido Añadir:Apagado ]
A17: Notificación sonora [ Título:Final búsqueda WiFi Texto:%FINALWIFI seg WiFi on
%CUENTAWIFI vueltas Icono:null Número:0 Archivo de sonido:Foxi/notifications/ding dong.mp3 Prioridad:3 ] Si (if) [ %WIFII ~ *connection* & %CUENTAWIFI > 1 ]
A18: Establecer variable [ Nombre:%CUENTAWIFI A:1 Calcular:Encendido Añadir:Apagado ]

A19: Fin si (End if)

Crea esa tarea y se la pones al perfil "Buscar Wifi" en la entrada y en la salida. Ojo al detalle de "Abortar Tarea Existente".

Los detalles sobre esa variable %caller1 de A1 los tienes aquí... http://www.htcmania.com/showthread.php?t=1202566

Aunque lo de "Fuerza Orden Tareas" (el "Enforce: no" que aparece en el perfil "Buscar Wifi") soluciona parcialmente el "problema" de las prioridades entre la tarea de entrada y de salida de un perfil, esta otra solución reacciona mucho más rápidamente, sólo requiere de una tarea, y no es necesario tocar las propiedades del perfil.

De esta forma, en cuanto apagues los datos cambiará el valor de %DATOMOVIL y se ejecutarán las acciones A16 a A18 (las mismas que tenías antes) sin esperas y sin tener que hacer comprobaciones extra.

ferfoxi
13/07/16, 12:47:16
Muchas gracias por tu contestación. Me mola tasker, la verdad y se puede aprender un montón de gente como vosotros. Estoy estudiando el tema de la variable %caller y tu explicación en el otro post. De momento no quiero meterlo en las tareas hasta ver que lo entiendo perfectamente y lo puedo aplicar. Además tengo que tenerlo totalmente asimilado para que cuando dentro de, por ejemplo, 6 meses mire la tarea y no me suene a chino y piense que qué hice yo ahí.

Lo de las comprobaciones ya sé que en principio parecen sobrar, pero creo que no por el siguiente ejemplo:

Estoy por la tarde en la calle con los datos activados y activos, por lo que la variable %DATOMOVIL es "yes" y al no estar conectado a wifi la tarea de buscar wifi está activa y dentro del bucle. Supongamos que en ese momento pongo el modo avión, se hace una comprobación del ajuste de red en android y la variable %DATOMOVIL sigue siendo "yes". Imaginemos que en ese momento decido desactivar los datos móviles y ya no quiero recibir ningún whatsapp o correo y al cabo de un rato desactivo el modo avión. En este caso la tarea de búsqueda de wifi no se desactiva porque el valor de %DATOMOVIL sigue siendo "yes".
Otro ejemplo, que seguro que me sucedería alguna vez.
Estoy en la calle con datos móviles y el valor de %DATOMOVIL en "yes", por lo que está buscando wifi. Cuando llego a casa el wifi se activa automáticamente y el valor de %DATOMOVIL sigue en "yes". Cuando me voy a acosar (sigo con cobertura wifi) desactivo primero los datos móviles y luego el wifi, por lo que no se haría ninguna comprobación de si están activos los datos móviles en los ajustes de android y a los 5 minutos se me vuelven a activar el wifi cuando no quiero.

Es la putadilla de que no exista el contexto que yo buscaba al principio y tenga que hacer estas comprobaciones periódicas dentro de la tarea "buscar wifi".

Una cuestión por si me podéis ayudar. ¿El tiempo de espera del bucle de búsqueda puede ser variable? Me explico, podría ser que durante las 20 primeras vueltas fuera de 10 minutos y a partir de ahí fuera de 20. Sólo se me ocurre hacer dos tareas, una con la condición de %CUENTAWIFI menor de 20 y otra mayor de 20, pero no sé si se puede hacer en una sola operación en lugar de dos.

mlesir
13/07/16, 18:16:15
Usa un contador ( o sea una variable que va sumando 1 a su valor). Luego con if comprueba si vale 20 o mas y entonces estableces una variable a 10 q sera la que uses en la accion de espera.

Enviado desde mi T1-701u mediante Tapatalk

WillyWeb
13/07/16, 18:46:20
Es la putadilla de que no exista el contexto que yo buscaba al principio y tenga que hacer estas comprobaciones periódicas dentro de la tarea "buscar wifi".

Te puse en mi mensaje anterior que no estabas dejando que los perfiles hicieran su trabajo y creo que no me expliqué bien.

Todas esas comprobaciones que haces para controlar esas situaciones que temes que sucedan son innecesarias. Si el primer perfil funciona como debe no tienes que controlar el valor de %DATOMOVIL en ninguna otra parte. Coloca un flash en la tarea "Datos Móviles" y haz pruebas quitando y poniendo wifi, datos y/o modo avión. Podrás ver como el contenido de %DATOMOVIL cambia al instante dependiendo de lo que hagas. Por cierto, el modo avión no cambia el estado de la selección de datos, que es lo que refleja esa variable.

Querías un contexto y has construido tu propia variable global que guarda el estado de selección de datos y la usas como un contexto en el perfil que controla la búsqueda. Deja que ese perfil haga su trabajo, que es ejecutar la tarea de salia en el instante que %DATOMOVIL valga "no", y que no cambiará de valor antes por muchas veces que lo compruebes. Haz la prueba que te propongo con el flash y lo verás.

Por cierto, en ningún momento se tiene en cuenta en esas comprobaciones el estado del modo avión, ni en lo que hace el perfil "Datos Móviles" ni en esas comprobaciones que haces dentro de la tarea de búsqueda. Como te he comentado antes, cuando pones el modo avión no cambias la selección de datos y por eso no cambia el valor de %DATOMOVIL. Si estando en modo avión cambias el estado de selección de los datos (ya me dirás cómo lo haces porque yo no tengo acceso a ese menú) el perfil "Datos Móviles" no se enterará (no se produce un cambio de tipo de conexión de datos) y por eso tampoco cambia el valor de tu variable. En definitiva, que si quieres tener en cuenta otras cosas las tendrás que meter tú en la ecuación.

Unas pistas...

Consultando la variable %AIRR puedes comprobar qué radios son controladas por el modo avión. En mi caso "mobile data" no aparece en la lista. Con la variable %AIR puedes comprobar el estado del modo avión (valores on/off).

No te digo nada más para que construyas tú mismo esa nueva variable que refleje si %MIESTADODATOS :silbando:

Pero si necesitas ayuda aquí estoy. ;-)

¿El tiempo de espera del bucle de búsqueda puede ser variable?

Claro. Los tiempos de espera de la acción "Esperar" pueden ser variables. Sólo tienes que darles el valor que quieras en cualquier punto anterior a que se ejecute la acción.

ferfoxi
13/07/16, 21:41:00
Si el primer perfil funciona como debe no tienes que controlar el valor de %DATOMOVIL en ninguna otra parte.

El problema es que hay momentos en los que el perfil no funciona. El ejemplo más claro es el siguiente (sin realizar las comprobaciones de red en las tareas):
Estoy en la calle con datos móviles (%DATOMOVIL es yes) y llego a casa, por lo que se me activa el wifi (%DATOMOVIL sigue siendo yes) entonces decido desconectar las conexiones y desactivo primero los datos móviles (%DATOMOVIL sigue siendo yes porque no salta el perfil que comprueba el estado de la configuración de Android) y después desactivo el wifi (%DATOMOVIL continúa siendo yes). En ese momento salta el perfil de búsqueda de wifi, porque no estoy conectado a wifi y el valor de %DATOMOVIL es yes) y se me vuelve a conectar al wifi automáticamente.

He desactivado las acciones de la tarta de buscar WIFI que comprueban el ajuste de Android y su desactivo los datos móviles primero y luego el wifi automáticamente se me vuelve a conectar al wifi.

La solución que había visto es que la primera tarea de búsqueda de wifi fuera comprobar si los datos están activos en la configuración de Android, ya que en este caso el otro perfil no llega a activarse.

WillyWeb
13/07/16, 22:27:01
El problema es que hay momentos en los que el perfil no funciona ...

Claro. Cuando el wifi está conectado se corta la conexión de datos, aunque se mantiene el estado de activación en las preferencias de Android. En esas condiciones el perfil "Datos Móviles" no reacciona al desactivar los datos porque no cambia su estado de conexión (no estaban conectados y siguen sin estarlo).

Puedes intentar construir un perfil que además de reaccionar a los cambios de estado de conexión de datos también reaccione a los cambios de wifi y del modo avión. Se trata de comprobar el estado del ajuste de Android en todas las ocasiones en las que puede ser interesante. No será perfecto, pero será mejor que el actual. ¿Cómo lo ves? :silbando:

ferfoxi
14/07/16, 12:47:22
Muchas gracias de nuevo WillyWeb y mlesir por vuestras respuestas.

En primer lugar he añadido al perfil la condición de que el modo avión no esté activo (gracias WillyWeb por la pista), porque he comprobado que seguía buscando wifi aunque estuviera el modo avión activo (ya que el ajuste de red de android puede puede ser de datos activos) y no era lo deseado.

La idea que me propones es crear otro perfil que cada vez que me conecte al wifi y me desconecte realice la comprobación del ajuste de Android. Pero eso ya lo hace mi perfil de búsqueda de wifi, pues al desconectarme del wifi y comenzar la búsqueda comprueba ese ajuste (por si he desconectado los datos mientras estaba conectado al wifi). Después cíclicamente comprueba el ajuste antes de encender automáticamente el wifi (por si el improbable caso de que desactive el ajuste de Android mientas me encuentro sin cobertura).

No entiendo por qué crees innecesarias las comprobaciones del ajuste dentro de la tarea de búsqueda, si para solucionarlo tengo que crear más perfiles adicionales para que realice esa misma comprobación.

WillyWeb
14/07/16, 13:23:12
No entiendo por qué crees innecesarias las comprobaciones del ajuste dentro de la tarea de búsqueda, si para solucionarlo tengo que crear más perfiles adicionales para que realice esa misma comprobación.

No me estoy explicando bien. Deja que lo intente de nuevo.

En este caso, y en cualquier otro, la premisa es mantener las cosas simples y construir sistemas que solucionen pequeños problemas de la forma más eficiente posible.

Has creado un sistema (perfil+tarea) para tener en la variable %DATOMOVIL el estado de selección de un determinado ajuste de Android con la intención de que esa variable te sirva de contexto para un segundo sistema. Como el primer sistema no hace bien su trabajo en todos los casos "apañas" el segundo sistema (la búsqueda wifi) para que funcione adecuadamente cuando no lo hace el contexto en el que se apoya ... eso no es eficaz, es una ñapa. No te ofendas que no lo digo como crítica. Sólo pretendo que veas por dónde van mis comentarios y cuál es mi objetivo ... conseguir un sistema eficiente.

Si quieres que tu variable %DATOMOVIL tenga valor yes/no dependiendo de la selección de ese ajuste de Android y que tenga en cuenta el modo avión, eso es lo que tienes que programar. Por lo que pretendes hacer después te interesa controlar ese ajuste de Android cuando cambia el estado de conexión del wifi, por eso te he recomendado que lo incluyas en la ecuación. Si ese primer sistema funciona correctamente en todos los casos posibles no necesitarás hacer "apaños" en ningún otro sistema que se apoye en el contenido de la variable %DATOMOVIL, con lo que esos otros sistemas podrás ser más simples y funcionar de forma más eficaz.

¿Por qué pienso que lo que tienes montado ahora no es eficaz? Porque estás haciendo la misma comprobación en tres sitios diferentes y debería valer con una, la que hace el perfil "Datos Móviles". Y porque ese perfil no tiene en cuenta el modo avión ni el estado de conexión wifi.

ferfoxi
14/07/16, 14:30:26
No me ofendo para nada. De hecho agradezco sobremanera tu ayuda (sin la cual no tendría el perfil que busco) y es interesante la discusión.
Yo también intento mantener el sistema lo más simple posible, por eso me interesa tasker, para evitar acciones innecesarias y consumos excesivos de batería (cuando tenía el nexus 4 había que ahorrar sí o sí).


Respecto a la primera comprobación de la tarea de búsqueda de wifi que realizo al inicio de la tarea:
¿Cómo podría mejorar el perfil "Datos móviles" para que tuviera en cuenta el wifi?, porque lo ideal sería que se activara cuando estoy conectado a datos móviles o a wifi, pero no sé poner esas condiciones para la activación (la una o la otra y no las dos a la vez). Sólo sé hacerlo si es conectado a datos móviles y a wifi a la vez. De ese modo ahorraría la primera comprobación del ajuste de la tarea búsqueda de wifi. Si tengo que crear otro perfil con la condición de que esté o no conectado al wifi, creo que es más eficiente mantener la comprobación al inicio de la tarea de búsqueda de wifi que no crear un perfil nuevo.


Respecto a la segunda comprobación de la tarea de búsqueda de wifi que está incluida en el bucle de búsqueda:
La segunda comprobación la meto porque, supongamos que estoy con datos móviles y se está ejecutando la búsqueda de wifi. En ese momento me meto en el garaje y pierdo la cobertura, por lo que el perfil "datos móviles" se desactiva y comprueba el estado del ajuste de android, que es yes. Imaginemos que en ese momento desactivo el ajuste de android (estando sin cobertura). El valor de %DATOMOVIL sigue siendo en ese momento yes, porque no hay nada que se me ocurra (a parte de meterlo en la tarea de búsqueda de wifi) para que compruebe que el ajuste de android ha cambiado, por lo que al subir a casa se me conectará al wifi porque la tarea de búsqueda se sigue ejecutando. Tampoco se me ocurre cómo puedo mejorar el perfil "Datos móviles" para que realice la comprobación del ajuste de Android en el transcurso desde que estoy sin cobertura, desactivo los datos móviles y subo a mi casa. Ya te digo que este caso es altamente improbable, pero puede llegar a suceder.

Respecto al modo avión: Lo he incluido en la condición del perfil de búsqueda de wifi, de modo que si estoy en modo avión no se active, así que caso resuelto.

Me interesan mucho tus respuestas y de nuevo gracias por tu ayuda.

WillyWeb
14/07/16, 19:51:42
El autor de Tasker explica en su foro que los contextos de un perfil usan el operador "Y" porque el operador "O" se pude conseguir fácilmente haciendo que varios perfiles lancen la misma tarea. En tu caso creo que funcionaría algo así...

Perfil: Datos Móviles
Estado: Red móvil [ 2G:Encendido 3G:Encendido 3G - HSPA:Encendido 4G:Encendido ]

O

Perfil: Conectado a Wifi
Estado: Conectado a Wifi [ SSID:* MAC:* IP:* ]

O

Perfil: Estado Wifi
Estado: Valor de variable [ %WIFI ~ on ]

En los tres perfiles tendrías que poner esta misma tarea para la entrada y la salida...

Tarea: Datos Móviles
Abortar Tarea Existente
A1: Probar Red [ Tipo: Datos Móviles Activados Datos: Almacenar Resultado en:%DATOMOVIL ]

Eso se queda muy cerca (ya te adelanto que no es perfecto) de conseguir ese contexto que pedías en tu primer mensaje sobre este tema.

Una vez has "forzado" a que la variable %DATOMOVIL contenga el estado del ajuste de Android en los casos que te interesa controlar deberías poder quitar cualquier comprobación redundante del estado de ese ajuste.

ferfoxi
15/07/16, 12:22:03
Muchas gracias Willy. Se aprende un montón de tasker contigo y otros compañeros del foro. Es lógico que para el operador o simplemente haya que crear nuevos perfiles con la misma tarea.

Pero definitivamente no entiendo por qué es más simple crear nuevos perfiles que ejecuten una acción (comprobar red) que yo tengo metida en el bucle.

A mi modo antes de la acción de encender wifi tengo una acción que comprueba red. Esto se repite periódicamente cada x minutos.
Al modo que propones cuando se enciende el wifi se activa otro perfil (Estado Wifi con condición Valor de variable [ %WIFI ~ on ] que comprueba red. Esto también se repite periódicamente cada x minutos.

Son exactamente las mismas acciones repetidas el mismo número de veces. Además según tu consejo se resuelve todo con 4 perfiles y yo en principio lo resuelvo con 2. Es por este motivo que no me parece más simplificada tu opción.

Es de aplaudir vuestras ganas de ayudar a la gente. Siempre estás (estáis dispuestos para dar un consejo). Espero que todo esto no te parezca una conversación de besugos.

WillyWeb
15/07/16, 20:09:24
Pero definitivamente no entiendo por qué es más simple crear nuevos perfiles que ejecuten una acción (comprobar red) que yo tengo metida en el bucle.

Porque esa es la forma de que tu variable tenga el valor adecuado en los momentos clave.

A mi modo antes de la acción de encender wifi tengo una acción que comprueba red. Esto se repite periódicamente cada x minutos.

Sí. Y esa es una de las cosas que se deben evitar. Estás usando una herramienta de programación que reacciona a eventos y no la estás usando adecuadamente.

Al modo que propones cuando se enciende el wifi se activa otro perfil (Estado Wifi con condición Valor de variable [ %WIFI ~ on ] que comprueba red. Esto también se repite periódicamente cada x minutos.

No. Esa es la gracia de ese tipo de perfiles. Sólo se ejecutan cuando cambia el valor que controlan. Y que un perfil esté activo no implica nada en términos de tiempo de CPU, consumo de batería o cualquier otra cosa. En cambio, ejecutar una acción dentro de un bucle sí tiene implicaciones, aunque sean pequeñas.

Son exactamente las mismas acciones repetidas el mismo número de veces. Además según tu consejo se resuelve todo con 4 perfiles y yo en principio lo resuelvo con 2. Es por este motivo que no me parece más simplificada tu opción.

Como te he comentado, los perfiles no mantiene su estado repitiendo lo que sea cada x minutos. La única excepción es que hagas un perfil con un contexto de hora que se repita cada x minutos, pero no es el caso.

Tasker es especialmente bueno procesando perfiles (y sus contextos). Mucho mejor que procesando las acciones de una tarea. No te debe preocupar crear muchos perfiles si son necesarios.

Y discrepo en que el problema esté resuelto. Que tengas el resultado que esperabas (tendríamos que ver eso con más clama) no quiere decir que esté bien resuelto, y creo que en este caso no lo está. El sistema (perfil/tarea) que pone valor a la variable %DATOMOVIL no funciona adecuadamente en todos los casos que lo necesitas. Eso me duele, me duele mucho, me duele en el alma. :cry:

Es de aplaudir vuestras ganas de ayudar a la gente. Siempre estás (estáis dispuestos para dar un consejo). Espero que todo esto no te parezca una conversación de besugos.

Gracias. Y para nada considero esto un diálogo para besugos ... carpas, en todo caso. :risitas: