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 ;-)
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 ;-)