|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Detectar tráfico al apagar pantalla
Hola a todos,
como muchos de vosotros tengo el tasker entre cosas configurado para que al apagar la pantalla me desactive internet (wifi/datos) y luego sincronize a intervalos regulares. Es un tema que está ya más que tratado en el foro. Pero tenía el problema de que si por ejemplo estas actualizando apps, o estan descargando algo, el tasker te cortaba la conexión y por lo tanto la descarga. Investigando un poco sobre el tema, hace un tiempo vi algun hilo por ahí que hablaba de ello pero tampoco se llego (que yo sepa al menos) a concretar algo. Despues de probarlo varios días por fin he conseguido el objetivo: al apagar pantalla esperar a que no haya tráfico para apagar wifi/datos. Os explico como: La idea es obtener el valor el total de trafico entrante y saliente actual examinandolo por consola el valor de /sys/class/net/wlan0/statistics/rx_bytes Contiene el total de bytes recibidos desde la última vez que se estableció una conexión wifi /sys/class/net/wlan0/statistics/tx_bytes Contiene el total de bytes enviados desde la última vez que se estableció una conexión wifi /sys/class/net/rmnet0/statistics/rx_bytes Contiene el total de bytes recibidos desde la última vez que se estableció una conexión de datos /sys/class/net/rmnet0/statistics/tx_bytes Contiene el total de bytes enviados desde la última vez que se estableció una conexión de datos Estos valores re resetean cada vez que nos desconectamos. Lo que haré será ver el valor de la suma de los 4 valores, esperan un tiempo (unos segundos) volver a mirar el valor, y si ha aumentado x bytes espero unos minutos y vuelvo a verificar dichos valores. Breve resumen de las tareas. Tengo 3 tareas: 1) TraficoGet: devolverá la suma actual de los 4 valores anteriores 2) SiTrafico: ejecuta la funcion anterior(TraficoGet), espera 4 segundos y la vuelve a ejecutar y calcula la diferencia, de esta forma devolverá el nºde bytes enviados/recibidos en los últimos 4 segundos. 3) Pantalla Off: la funcion que se ejecutará al apagar o bloquear la pantalla. Ejecutará SiTrafico, si esta función devuelve una valor superior a un tamaño razonable de bytes es que hay tráfico y en ese caso espera unos minutos y vuelve a comprobar. Si el valor es bajo continua la tarea y ejecuta la tarea que desactive wifi/datos Y ahora los pasos de cada tarea... TraficoGet (120) Cita:*** inicializamos las variables que contendrá los datos transmitidos, enviados y la suma de ambos de red wlan(wifi), esto es por si no está wifi activo, para que tengan valor 0
A1: Establecer variable [ Nombre:%wifitx_data0 A:0 Calcular:Apagado Añadir:Apagado ] A2: Establecer variable [ Nombre:%wifirx_data0 A:0 Calcular:Apagado Añadir:Apagado ] A3: Establecer variable [ Nombre:%wifi_data0 A:0 Calcular:Apagado Añadir:Apagado ] *** ejecutamos consola para obtener lo que se ha transmitido desde la última conexión por wifi A4: Ejecutar consola [ Comando:cat /sys/class/net/wlan0/statistics/rx_bytes Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En:%wifirx_data0 Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ] A5: Ejecutar consola [ Comando:cat /sys/class/net/wlan0/statistics/tx_bytes Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En:%wifitx_data0 Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ] *** Sumamos enviados+recibidos de wifi A6: Establecer variable [ Nombre:%wifi_data0 A:%wifirx_data0+%wifitx_data0 Calcular:Encendido Añadir:Apagado ] A7: [x] Flash [ Texto:%wifi_data0 Largo:Apagado ] *** Esto es para testear *** inicializamos las variables que contendrá los datos transmitidos, enviados y la suma de ambos de red de datos, por si no estan los datos activos, para que tengan valor 0 A8: Establecer variable [ Nombre:%redtx_data0 A:0 Calcular:Apagado Añadir:Apagado ] A9: Establecer variable [ Nombre:%redrx_data0 A:0 Calcular:Apagado Añadir:Apagado ] A10: Establecer variable [ Nombre:%red_data0 A:0 Calcular:Apagado Añadir:Apagado ] *** ejecutamos consola para obtener lo que se ha transmitido desde la última conexión A11: Ejecutar consola [ Comando:cat /sys/class/net/rmnet0/statistics/rx_bytes Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En:%redrx_data0 Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ] A12: Ejecutar consola [ Comando:cat /sys/class/net/rmnet0/statistics/tx_bytes Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En:%redtx_data0 Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ] *** Sumamos enviados+recibidos de datos A13: Establecer variable [ Nombre:%red_data0 A:%redrx_data0+%redtx_data0 Calcular:Encendido Añadir:Apagado ] *** Sumamos datos enviados y recibidos de wifi y datos A14: Establecer variable [ Nombre:%total_data A:%red_data0+%wifi_data0 Calcular:Encendido Añadir:Apagado ] A15: [x] Flash [ Texto:%total_data %wifi_data0 %red_data0 Largo:Apagado ] *** Esto es para testear *** Devolvemos el total A16: Devolver [ Valor:%total_data Detener:Encendido ] ![]() Cita:*** Obtenemos el total de lo transmitido en el momento actual (wifi+datos, enviados y recibidos)
A1: Realizar tarea [ Nombre:TraficoGet Prioridad:%priority Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable:%DATA0 Detener:Apagado ] *** Esperamos 4 segundos A2: Esperar [ MS:0 Segundos:4 Minutos:0 Horas:0 Días:0 ] *** Volvemos a obtener el total de lo transmitido en el momento actual (wifi+datos, enviados y recibidos) A3: Realizar tarea [ Nombre:TraficoGet Prioridad:%priority Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable:%DATA1 Detener:Apagado ] *** Calculamos la diferencia entre la primera muestra y la segunda, el valor será en bytes A4: Establecer variable [ Nombre:%DATA_DIF A %DATA1-%DATA0) Calcular:Encendido Añadir:Apagado ] A5: [x] Flash [ Texto:%DATA_DIF Largo:Apagado ] *** para test *** Devolvemos el valor, es decir lo que se ha transmitido y enviado en los últimos 4 segundos A6: Devolver [ Valor:%DATA_DIF Detener:Encendido ] ![]() Cita:*** Inicializomos la variable %TRAFICO a 0 si no está ajustada. La pongo en mayúsculas porque así es global y la puedo consulta para debug en cualquier momento.
A1: Establecer variable [ Nombre:%TRAFICO A:0 Calcular:Encendido Añadir:Apagado ] Si (if) [ %TRAFICO No ajust. ] *** Ejecuta tarea SiTrafico, que devuelve el total de enviado y recibido por wifi/datos en bytes en los último 4 segundos y lo almaceno en %traf1 A2: Realizar tarea [ Nombre:SiTrafico Prioridad:%priority Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable:%traf1 Detener:Apagado ] *** Lo paso a kbytes y lo guardo en %TRAFICO. A3: Convertir Variable [ Nombre:%traf1 Función:Bytes a Kilobytes Almacenar Resultado en:%TRAFICO ] *** Miro si se han transmitido más de 20kb en los últimos 4 segundos, en ese caso muestro notificación, esperamos unos minutos y volvemos al principio para volver a mirar A4: Si (if) [ %TRAFICO > 20 ] *** Lo de la notificación es opcional(A5,A6), borro primero por si ya hay una y muestro que hay tráfico activo y cuanto A5: Cancelar notificación [ Título:Trafico Detectado Atención No existe:Apagado ] A6: Notificación [ Título:Trafico Detectado Texto:+%TRAFICO Kb. en 4 segundos Icono:hd_av_download Número:0 Permanente:Apagado Prioridad:3 ] *** Esperamos 4 minutos. Poned al gusto. Cuanto menos tiempo más se sobrecarga el procesador, más veces mira la tarea en descargas grandes. A7: Esperar [ MS:0 Segundos:0 Minutos:4 Horas:0 Días:0 ] *** Vuelvo a mirar llendo a la acción 1 A8: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta: ] A9: Else A10: Cancelar notificación [ Título:Trafico Detectado Atención No existe:Apagado ] *** Si no hay tráfico se ejecuta la tarea Tarea Desactivar Datos Wifi, que se supone que entre otras cosas desactiva wifi y datos A11: Realizar tarea [ Nombre:Tarea Desactivar Datos Wifi Prioridad:%priority Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: Detener:Apagado ] A12: Fin si (End if) ![]()
__________________
Widget Batería3D - Widget Batería Circular - Widget Reloj Digital - Tema CM Smerald Green - Tema CM Xmerald-Blue
---------------------------------------------------------------------------------------- novomilenio.com - diseño - internet - tiendas online Última edición por mpiero Día 20/04/15 a las 19:29:34. |
| Los siguientes 8 usuarios han agradecido a mpiero su comentario: | ||
|
|
|
#2
|
||||
|
||||
|
Muy interesante, puedes exportar las tareas?
|
|
#3
|
||||
|
||||
|
Mpiero cuanto tiempo! Me alegro que hayas vuelto por aquí además a lo grande si señor!
Muy muy bueno tu aporte. Muy Util, perfectamente explicado y escrito, en fin que así da gusto. Enhorabuena!
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
| Gracias de parte de: | ||
|
#4
|
||||
|
||||
|
Muy interesante, sin duda!
Llevaba tiempo pensando en cómo se podría hacer, pero no sabía por donde empezar. Ahora tengo el 99.9% del trabajo hecho, y sólo me queda retocar para lo que exactamente quiero. Muchas gracias, compañero @mpiero ! Se merece una subida al recopilatorio!
__________________
![]() |
| Gracias de parte de: | ||
|
#5
|
||||
|
||||
|
No por 2 razones:
1) Porque mis tareas están llenas de otras cosas que yo uso y que no son relevantes para el tuto, y me sería bastante rollo tener que quitarlas para exportar... 2) Y sobre todo porque si no se crean a mano las tareas no se aprende que es de lo que se trata , que filosófico ando!!!...)
__________________
Widget Batería3D - Widget Batería Circular - Widget Reloj Digital - Tema CM Smerald Green - Tema CM Xmerald-Blue
---------------------------------------------------------------------------------------- novomilenio.com - diseño - internet - tiendas online |
| Los siguientes 4 usuarios han agradecido a mpiero su comentario: | ||
|
#6
|
||||
|
||||
|
Llevas razón.
|
| Los siguientes 3 usuarios han agradecido a sanderqa su comentario: | ||
|
#7
|
||||
|
||||
|
muy bueno y muy util
|
![]() |
Estás aquí
|
||||||
|
||||||