PDA

Ver la Versión Completa : AutoWifiScan: Auto-escaneo inteligente de wifis cada x minutos, ¡elegante y facilísimo!


malkair
05/12/13, 18:27:10
Soy de los que en casa tiene wifi y también la tienen en el trabajo. Es un coñazo apagar manualmente la wifi al salir de casa y volver a encenderla al llegar al currele porque se me olvida a menudo, y también lo es llevar la wifi siempre encendida dado el inútil gasto de batería que ello conlleva.

He seguido con atención el post sobre las ubicaciones y he hecho mis pruebas intentando que la wifi se activara con contextos de Antena Cercana, no obteniendo el resultado esperado: Demasiadas antenas, demasiadas activaciones de la wifi sin necesidad cuando estoy lejos de casa o del trabajo. Otro contexto que involucre el GPS no es viable dado el gasto de batería que supone, y un contexto de red es muy inexacto; Autolocation parece potente pero tengo la impresión de ser igual de tragón; y el rollo del "Buscar redes siempre" de Android 4.3+ no parece que funcione correctamente con Tasker, o yo al menos no lo he conseguido.

La solución por la que finalmente he optado es un escaneo temporal de wifis: Cada x minutos se enciende la wifi, escanea redes por 10 segundos y si no hay conexión a una red conocida, apaga la wifi y vuelta a empezar; además, Tasker "sabe" cuándo no tiene que escanear porque yo he apagado voluntariamente la wifi.

"De acuerdo", me diréis, "pero eso ya lo hace Tasker con un contexto Wifi Cercana", y sí, es cierto, peeeero... "Wifi Cercana" siempre enciende la wifi para un escaneo, con independencia de que la hayamos apagado a mano (porque no queramos conectarnos) o hayamos salido fuera del rango de conexión, y no es eso lo que yo pretendo. Además, para que ese contexto funcione bien tenemos que establecer en la configuración de Tasker un valor diferente (superior) al valor por defecto (120 segundos) y puede que tengamos otros perfiles que sí necesiten ese valor; además, cuando el teléfono está en suspensión Tasker usa el valor de "Todas las comprobaciones" (600 segundos) y al menos a mí me parece demasiado tiempo entre chequeos wifi. Solución: Hacer algo intermedio sin tocar los ajustes por defecto.

Es algo muy simple pero creo que puede ser la solución más efectiva para mucha gente, además de ser muy fácil de comprender. Además creo que el gasto de batería es muy inferior al de cualquier otra solución (al menos yo he notado una mejoría muy considerable, teniendo en cuenta que siempre llevaba activada la wifi).

Aquí va la tarea y luego el perfil (ya sabéis que me gusta que mis apps vayan en inglés, oye qué barbaridad :D )

AutoWifiScan (17)
Chequea si la wifi está activa. Si lo está, entiende que puede deberse a un corte temporal o a que estoy en algún punto de la casa con poca cobertura, y entonces espera dos minutos antes de continuar. Nótese que la wifi permanece encendida, de forma que si vuelve la conexión no tendré que hacer nada:
A1: Si (if) [ %WIFI ~ on ]
A2: Notificación [ Título:Wifi signal lost Texto:Autoscan will perform in 2 minutes Icono:hd_aaa_ext_halt Número:0 Permanente:Apagado Prioridad:3 ]
A3: Cancelar notificación [ Título:Wifi signal lost Atención No existe:Apagado ]
A4: Esperar [ MS:0 Segundos:0 Minutos:2 Horas:0 Días:0 ]
Tras esos dos minutos, salta para comprobar si la conexión ha vuelto.
A5: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#init ]
A6: Else
Si la Wifi no estaba encendida, entiende que la he apagado voluntariamente porque no quiero que se conecte (por ejemplo, porque voy a estar mucho rato fuera) y sencillamente detiene la tarea sin gasto alguno de batería:
A7: Notificación [ Título:Wifi powered off Texto: Icono:hd_aaa_ext_halt Número:0 Permanente:Apagado Prioridad:3 ]
A8: Cancelar notificación [ Título:Wifi powered off Atención No existe:Apagado ]
A9: Detener [ Con error:Apagado Tarea: ]
A12: Fin si (End if)
<#init>
Si la wifi está encendida, hace un chequeo para comprobar si ya hay conexión y en tal caso salta al final y termina la tarea:
A13: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#connected ] Si (if) [ %WIFII ~ *CONNECTION* ]
Si la wifi está apagada, la enciende:
A14: WiFi [ Establecer:Encendido ] Si (if) [ %WIFI !~ on ]
Aquí inicia el escaneo de redes durante 10 segundos (tiempo suficiente para que se conecte a alguna red conocida. Si os tarda más, podéis poner 12 o 15 segundos:
A15: Notificación [ Título:Wifi scan in progress Texto: Icono:hd_device_access_network_wifi Número:0 Permanente:Apagado Prioridad:3 ]
A16: Esperar [ MS:0 Segundos:10 Minutos:0 Horas:0 Días:0 ]
A17: Cancelar notificación [ Título:Wifi scan in progress Atención No existe:Apagado ]
Si tras el escaneo ha conectado, salta al final y termina la tarea:
A18: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#connected ] Si (if) [ %WIFII ~ *CONNECTION* ]
Si tras el escaneo no ha conectado, apaga la wifi, me lo notifica y espera 6 minutos antes de un nuevo escaneo (si os parece mucho o poco tiempo, poned lo que mejor os venga):
<#notconnected>
A19: WiFi [ Establecer:Apagado ]
A20: Notificación [ Título:Wifi not found. Retrying in 6 minutes Texto: Icono:hd_aaa_ext_halt Número:0 Permanente:Apagado Prioridad:3 ]
A21: Cancelar notificación [ Título:Wifi not found. Retrying in 6 minutes Atención No existe:Apagado ]
A22: Esperar [ MS:0 Segundos:0 Minutos:6 Horas:0 Días:0 ]
Transcurridos los 6 minutos, primero comprueba si hay conexión (por ejemplo, porque yo haya encendido manualmente la wifi -recordemos que la tarea la apagó en la línea A19-, y si la hay salta al final y termina; pero si no la hay, salta a la etiqueta #init y vuelve a realizar la comprobación, encendido y escaneo:
A23: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#connected ] Si (if) [ %WIFII ~ *CONNECTION* ]
A24: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#init ]
Aquí lleva el salto cuando en cualquier momento hay conexión, terminando la tarea con normalidad:
<#connected>
A25: Cancelar notificación [ Título:Wifi scan in progress Atención No existe:Apagado ]
A26: Notificación [ Título:Wifi found and connected Texto: Icono:hd_navigation_accept Número:0 Permanente:Apagado Prioridad:3 ]
A27: Cancelar notificación [ Título:Wifi found and connected Atención No existe:Apagado ]

Como véis, en todo momento pongo una notificación seguida de una cancelación de la misma, de forma que la notificación dura un segundo antes de desaparecer, lo que le da un toque elegante al tema. No obstante, durante los 10 segundos del escaneo mantengo la la notificación para saber que está en ello.


Opcional:
Si no queremos que haya una espera de 6 minutos, podemos poner varios chequeos de 1 minuto por si en algún momento encendemos manualmente la wifi y queremos que la tarea finalice antes (al principio lo tuve así, pero no le veía demasiada utilidad). Si no queremos estos chequeos, sabemos que si hay conexión la tarea finalizará en 6 minutos como máximo.

A22: Esperar [ MS:0 Segundos:0 Minutos:1 Horas:0 Días:0 ]
A23: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#connected ] Si (if) [ %WIFII ~ *CONNECTION* ]
A24: Esperar [ MS:0 Segundos:0 Minutos:1 Horas:0 Días:0 ]
A25: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#connected ] Si (if) [ %WIFII ~ *CONNECTION* ]
(...y así 6 veces)


El perfil: Simplemente se activa cuando NO estamos conectados a ninguna wifi:

Perfil: AutoWifiScan (211)
Restore: no <--importante: Si se restauran los ajustes (opción por defecto), al apagarse la wifi en la línea A19 automáticamente se vuelve a encender y la cosa se va de madre
Estado: No Conectado a Wifi [SSID:* MAC:* IP:*]
Entrada: AutoWifiScan (17)

Naturalmente, este perfil lo podemos combinar con cualquier otro contexto (por ejemplo, que solo esté activo en unos días u horas determinado) o en conjunción con algún otro perfil (por ejemplo, un modo nocturno con todo desactivado) que tengamos.

Como dije, esto se podría hacer usando un triste contexto de "Wifi Cercana" y tocando los valores por defecto de Tasker. Amistosamente os reto a crear un perfil que haga lo mismo que el mío solo con Wifi Cercana ;-)

mlesir
05/12/13, 19:43:41
Me parto contigo!
Totalmente de acuerdo en que lo de las notificaciones le da elegancia a la par que sencillez y no molestan. (en serio muy buena idea). Lo de ponerlo en inglés le da mucho mas cache al tema,donde va a parar!! Jeje.
Respecto al fondo. A ver yo creo que es mejor el otro sistema por cuestión de que gasta mucho menos batería creo yo si esta bien montado. Pero ...desde luego si no sabes montarlo,o no puedes por lo que sea( aquí ha habido gente con problemas con las antenas, el geofencing y demás) hay que reconocer que tu sistema es a prueba de errores, infalible diría yo. Y por otro lado si ponemos que estamos como mucho 16 horas fuera de casa sale que tendremos el WiFi encendido .....(100 sg por hora no? y 100 x 16 son..) 1600 segundos o sea ...unos 25 minutos escaneando? Puede ser? No lo veo una barbaridad.
Lo veo una opción muy interesante que abre el abanico, luego ya que la gente elija en función de sus posibilidades.
Enhorabuena tio.

darkopro
06/12/13, 12:55:42
Yo lo que hago con este tipo de tareas de auto-escaneo es la de ponerlas dentro de un perfil de localización amplio llamados zona X. Cuando estoy dentro de una zona por la que suelo salir y hay redes WiFi a la que me conecto hago un escaneo inteligente y cuando no estoy dentro de esas zonas no así me evito que el móvil este escaneado todo el día wifi.

Caravantes
06/12/13, 19:01:14
AutoWifiScan: Auto-escaneo inteligente de wifis cada x minutos, ¡elegante y facilísimo!

Excelente, Malkair. Creo que es de lo mejorcito que he visto en plan de ahorrar energía wifi. Desde luego lo veo mucho mejor y más eficiente que el rollo del "Buscar redes siempre". Tengo que estudiar con calma si me interesa implementar este perfil, porque me parece que es incompatible con otro perfil de "wifi cercana" que utilizo hasta ahora en un entorno muy particular en el que no tengo conexión.

1. Creo que has escrito mal la palabra "ielegante" (salvo que seas un "apple fan boy"). Bueno, y lo de "facilísimo" te lo parecerá a tí, yo opino que esto requiere mucho trabajo neuronal hasta que consigues montarlo con todos los detalles bien ajustados, como parece que tienes.

2. Explícame por qué haces una notificación y acto seguido la cancelas (A2 y A3, por ejemplo).

3. Ahora un cotilleo. ¿De veras has creado 211 perfiles y SOLO 17 tareas con nombre? ¿Hay alguna razón por la que prefieres no ponerle nombres a las tareas?

malkair
07/12/13, 20:55:25
Buenas,

No es "ielegante", el ¡ es un signo de admiración ;-)

Al activar una notificación y cancelarla a continuación se muestra dicha notificación durante un segundo aproximadamente. Creo que le da un toque chulo al perfil.

Lo de los números de perfil/tareas es algo que me tiene intrigado. Tengo docenas de tareas, casi todas con nombre (desde luego, muchas más de 17), y no tengo 217 perfiles, tendré unos 30 o así (no todos activos). No entiendo por qué me salen esos números.

Buena idea lo de implementar un contexto de localización para que la tarea no se ejecute si estoy al quinto pino de casa. Probaré con Antena Cercana, a ver qué tal.

GraphicAdventure
13/12/13, 11:59:05
El escaneo de Wifi también lo hago cuando estoy en Antena Cercana.
Al principio me di cuenta que con la pantalla apagada no funcionaba, pero con Cell Workaround me va perfectamente.

Otro problema era que si la fuerza de la señal bajase a menos de la mitad, el móvil automáticamente me cambiaba de WCDMA para GSM.
Ese cambio constante de red consume muchísima batería, además que mi perfil de Antena Cercana se apagaba porque perdía información de las células durante ese cambio, entonces puse en el móvil en modo de red solo WCDMA.
Otro punto es que las células no deben tener un número de fuerza de señal pero sí un *, lo comento porque vi algunos perfiles que lo tienen.

GSM:0123.456790 / *

ruco1980
13/12/13, 12:47:46
El escaneo de Wifi también lo hago cuando estoy en Antena Cercana.
Al principio me di cuenta que con la pantalla apagada no funcionaba, pero con Cell Workaround me va perfectamente.

Otro problema era que si la fuerza de la señal bajase a menos de la mitad, el móvil automáticamente me cambiaba de WCDMA para GSM.
Ese cambio constante de red consume muchísima batería, además que mi perfil de Antena Cercana se apagaba porque perdía información de las células durante ese cambio, entonces puse en el móvil en modo de red solo WCDMA.
Otro punto es que las células no deben tener un número de fuerza de señal pero sí un *, lo comento porque vi algunos perfiles que lo tienen.

GSM:0123.456790 / *


Hola!! Me parece interesante tu observación...

Entiendo entonces que si ponemos un * detrás de cada / en el perfil de antena cercana éste cuando esté activo no llegará nunca a desactivarse por pérdida de señal no? sólo se desactivará cuando salgamos del rango de detección de las antenas?

1 saludo!

GraphicAdventure
13/12/13, 13:48:32
Bueno, en realidad se supone que es meramente informativo y no entra en la detección de las células, así que es probable que no influya y retiro mi comentario.
Pensándolo ahora creo que la desactivación del perfil siempre fue debido al cambio de red y no de señal. Perdón por la confusión.
De todas formas yo lo dejo con un * porque acepta cualquier valor de fuerza en el caso de que un día el programa sea modificado para funcionar con valores.
Cómo se suele decir: Más vale prevenir que curar.

Caravantes
13/12/13, 19:47:11
Otro punto es que las células no deben tener un número de fuerza de señal pero sí un *, lo comento porque vi algunos perfiles que lo tienen.
GSM:0123.456790 / *

Daré mi opinión por lógica (no por haber experimentado el tema). Supongo que si un contexto incluye la fuerza de la señal viene a significar algo así como: "Este contexto debe activarse cuando se escuchen estas antenas con estas intensidades de señal". En cambio, si ponemos asteriscos la cosa vendría a ser "Este contexto debe activarse cuando se escuchen estas antenas con cualquier intensidad de señal", lo cual seguramente abarque una zona más amplia... quizá demasiado amplia (o quizá no). Desde luego con los asteriscos parece que habrá menos posibilidades de que se interrumpa el contexto si la señal se debilita, pero también podría ocurrir que las interrupciones tengan otro origen como por ejemplo un funcionamiento discontinuo de alguna antena, y en ese caso no arreglaremos nada poniendo los asteriscos.
Si lo probáis no dejéis de comentar los resultados.

kmell
11/07/15, 22:38:02
A9: Detener [ Con error:Apagado Tarea: ]
A12: Fin si (End if)
<#init>
Si la wifi está encendida, hace un chequeo para comprobar si ya hay conexión y en tal caso salta al final y termina la tarea:
A13: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:#connected ] Si (if) [ %WIFII


porque del paso nueve pasas al 12
faltan los pasos 10 y 11

que hago?

gracias