PDA

Ver la Versión Completa : [ TUTORIAL ] Subtarea que convierte segundos a horas+minutos+segundos (hh:mm:ss)


Caravantes
14/12/13, 00:24:09
En Tasker, la forma más fácil de medir el tiempo es por las diferencias entre dos lecturas de la variable %TIMES, que siempre nos devuelve un número de segundos. Así, podemos obtener que el smartphone ha tardado 11289 segundos en recargar su batería. Pero eso mismo sería más comprensible si esa información nos fuese dada en el formato habitualmente utilizado para representar horas, minutos y segundos, o sea 03:08:09.

Esa es la conversión que hace la tarea que hoy traigo. En realidad está pensada para funcionar como una subtarea, admitiendo como primer parámetro el número total de segundos. De esta forma, podemos utilizar la conversión en cualquier otra tarea, simplemente invocando a ésta subtarea y dándole el número de segundos totales e indicando en cual variable queremos obtener el resultado, la subtarea devuelve ese resultado y de esta forma ya no necesito complicar la tarea principal con los cálculos y las conversiones de formato. Además, tiene la ventaja de que puedo invocar a esta subtarea desde distintas tareas principales, y otra ventaja es que se facilita el mantenimiento porque solo necesito aplicar las mejoras de conversión en una sola tarea.

Para flexibilizar el funcionamiento de la conversión, en el segundo parámetro podemos indicar el tipo de conversión a realizar, siendo válidos los siguientes:
hh:mm:ss - 03:08:09 (tres horas, ocho minutos y nueve segundos)
hh:mm - 03:08 (tres horas y ocho minutos)
mm:ss - 480:09 (cuatrocientos ochenta minutos y nueve segundos)
Habrá veces que será preferible omitir las horas, o tal vez los segundos.
También es posible no usar caracteres repetidos en hh, mm, ss. Poniendo un solo carácter, en caso de que la cifra tenga un solo dígito no se añadirá un cero por la izquierda.
h:m:s - 3:8:9 (tres horas, ocho minutos y nueve segundos)
Y son válidas todas las combinaciones de los sistemas anteriores, como por ejemplo h:m o bien mm:s o bien hh:m , etc.

Finalmente, y para rizar el rizo... En otras ocasiones nos interesará que el smartphone diga (vocalice) el resultado y nos sonaría bastante extraño escuchar "tres dos-puntos ocho dos-puntos nueve"; en esas ocasiones es preferible oír "tres horas, ocho minutos y nueve segundos". Para obtener este resultado de tipo texto bastará con añadir al segundo parámetro la palabra TEXT.

Vamos con la descripción exportada de la tarea:

MiscSegundosATiempo
<Esta tarea recibe como parámetro1 un número de segundos y devuelve el mismo tiempo en formato de horas, minutos y/o segundos.
El parámetro2 indica el tipo de salida pudiendo ser
hh:mm:ss , mm:ss , hh:mm o mm (solo minutos); opcionalmente en el parametro2 se puede añadir la palabra TEXT para que sea devuelto como texto del tipo "12 minutos y 34 segundos".>
A1: Destino (de goto)
<Para hacer pruebas, se puede utilizar la tarea directamente sin parámetros y en tal caso se utilizarán una cantidad fija de segundos.>
A2: Si (if) [ %par1 ~ %* ]
A3: Establecer variable [ Nombre:%test A:1 Calcular:Apagado Añadir:Apagado ]
A4: Establecer variable [ Nombre:%par1 A:14162 Calcular:Encendido Añadir:Apagado ]
A5: Establecer variable [ Nombre:%par2 A:hh:mm:ss text Calcular:Apagado Añadir:Apagado ]
A6: Fin si (End if)
A7: Establecer variable [ Nombre:%segundos A:%par1 Calcular:Encendido Añadir:Apagado ]
<Calcular los minutos>
A8: Establecer variable [ Nombre:%minutos A:floor(%segundos/60) Calcular:Encendido Añadir:Apagado ]
A9: Establecer variable [ Nombre:%segundos A:%segundos%60 Calcular:Encendido Añadir:Apagado ]
<Calcular las horas, si procede>
A10: Si (if) [ %par2 ~ *h* ]
A11: Establecer variable [ Nombre:%horas A:floor(%minutos/60) Calcular:Encendido Añadir:Apagado ]
A12: Establecer variable [ Nombre:%minutos A:%minutos%60 Calcular:Encendido Añadir:Apagado ]
A13: Fin si (End if)
<comprobación>
A14: Establecer variable [ Nombre:%salida A:calculado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]
A15: Notificación [ Título:%salida Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Ya hemos calculado los datos. A partir de aquí hay que componer la variable de salida qué será devuelta.>
A16: Destino (de goto)
<Si la salida es de tipo texto, hay que componerla así>
A17: Si (if) [ %par2 ~ *text*/*TEXT* ]
<minutos>
A18: Establecer variable [ Nombre:%salida A:%minutos minutos Calcular:Apagado Añadir:Apagado ]
<Horas>
A19: Si (if) [ %par2 ~ *h* ]
A20: Establecer variable [ Nombre:%salida A:%horas horas y %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 !~ *:s* ]
A21: Establecer variable [ Nombre:%salida A:%horas horas, %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A22: Fin si (End if)
<segundos>
A23: Establecer variable [ Nombre:%salida A:%salida y %segundos segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
<Si la salida no es de tipo texto, habrá que asegurarse de que todas las cifras tengan más de un dígito, si procede por la letra repetida hh mm ss>
A24: Else
<Segundos>
A25: Si (if) [ %par2 ~ *ss* ]
A26: Establecer variable [ Nombre:%segundos A:0%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %segundos < 10 ]
A27: Fin si (End if)
<Minutos>
A28: Si (if) [ %par2 ~ *mm* ]
A29: Establecer variable [ Nombre:%minutos A:0%minutos Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutos < 10 ]
A30: Fin si (End if)
<Horas>
A31: Si (if) [ %par2 ~ *hh* ]
A32: Establecer variable [ Nombre:%horas A:0%horas Calcular:Apagado Añadir:Apagado ] Si (if) [ %horas < 10 ]
A33: Fin si (End if)
<comprobación>
A34: Establecer variable [ Nombre:%salida A:preparado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]
A35: Notificación [ Título:%salida Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
<Componer la salida>
A36: Destino (de goto)
<minutos>
A37: Establecer variable [ Nombre:%salida A:%minutos Calcular:Apagado Añadir:Apagado ]
<Horas>
A38: Establecer variable [ Nombre:%salida A:%horas:%salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *h:* ]
<segundos>
A39: Establecer variable [ Nombre:%salida A:%salida:%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A40: Fin si (End if)
<Terminando>
A41: Destino (de goto)
A42: Notificación [ Título:%salida Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
A43: Devolver [ Valor:%salida Parar:Encendido ]

kalippo
16/12/13, 18:58:07
me cae de perlas para un perfil que tengo, lo implementare cuanto antes.

kalippo
18/12/13, 19:05:54
quisiera agregar algo

A16: Establecer variable [ Nombre:%minutos A:%minutos-(%horas*60) Calcular:Encendido Añadir:Apagado ]

esa linea pudes ponerla de la siguiente forma

A16: Establecer variable [ Nombre:%minutos A:%minutos%60 Calcular:Encendido Añadir:Apagado ]

el % ademas de servir como identificador de variables tambien es el mod matematico lo que nos regresa el residuo de una division, la ventaja es que tambien funciona en caso de ser un numero menor a 59

si por ejemplo son 66 segundos 66%60 = 6 <-- 6 segundos
de igual forma si son 6 segundos 6%60 = 6 <--6 segundos
y 126%60 = 6 <-- 6 segundos

Caravantes
18/12/13, 23:02:45
el % ademas de servir como identificador de variables tambien es el mod matematico lo que nos regresa el residuo de una division

Excelente apunte, Kalippo, muchas gracias por esa oportuna mejora para la tarea.
He corregido las acciones 9 y 12 de la tarea.

No me acordaba de ese operador MODULO, pero yo debería de saberlo porque de hecho lo escribí en el artículo Matemáticas en Tasker
http://www.htcmania.com/showthread.php?t=571609

kalippo
19/12/13, 17:46:55
Excelente apunte, Kalippo, muchas gracias por esa oportuna mejora para la tarea.
He corregido las acciones 10 y 16 de la tarea.

No me acordaba de ese operador MODULO, pero yo debería de saberlo porque de hecho lo escribí en el artículo Matemáticas en Tasker
http://www.htcmania.com/showthread.php?t=571609

a todos se nos va alguna, yo no sabia que existia pero lo busque y si =D, es bueno aprender algo todos los días por pequeño que parezca

Jusss
31/12/13, 22:19:26
Como estas Caravantes Estoy comenzando a copiar esta tarea para convertir la duracion de llamadas en horas y minutos y tengo problemas con la primera accion se que es una tonteria pero como no entiendo el "destino go to" me quede trabada en la accion primera "A1: Destino (de goto)" para que es? porque me pide un valor y no se que poner y veo que la tarea tieen varias "destino (go to)"

Caravantes
31/12/13, 22:48:15
tengo problemas con la primera accion se que es una tonteria pero como no entiendo el "destino go to" me quede trabada en la accion primera "A1: Destino (de goto)" para que es? porque me pide un valor y no se que poner

Hola Jusss. Sí que es una tontería, pero es muy comprensible que te hayas atascado porque no es algo evidente.

En esa acción DESTINO DE GOTO solo tienes que escribir la etiqueta, y puedes poner algo como lo siguiente:
Esta tarea recibe como parámetro1 un número de segundos y devuelve el mismo tiempo en formato de horas, minutos y/o segundos.
El parámetro2 indica el tipo de salida pudiendo ser
hh:mm:ss , mm:ss , hh:mm o mm (solo minutos); opcionalmente en el parametro2 se puede añadir la palabra TEXT para que sea devuelto como texto del tipo "12 minutos y 34 segundos"

Ese texto figura al comienzo de la descripción de la tarea precisamente porque está dentro de una acción. Yo quería empezar con una explicación de este tipo, sin ninguna acción concreta, y en ese caso lo que me parece más adecuado es usar la ETIQUETA de una acción DESTINO DE GOTO, que no hace nada.

En la tarea hay varias acciones DESTINO DE GOTO que he usado para poner más comentarios y explicaciones, que aparecen en la descripción de la tarea, justo aparecen antes de la acción correspondiente. O sea que en este caso el texto aparece antes de (por encima de) la acción A1. En esta tarea creo que puedes suprimir todas esas acciones DESTINO DE GOTO, puesto que no tienen otra utilidad práctica.

También hay otras acciones que sí hacen algo concreto y además añaden un comentario, como A8 (Etiqueta: Calcular los minutos, si procede, eso aparece justo en la línea precedente).

Puedes omitir esas explicaciones o sustituirlas por otras que a ti te parezcan más adecuadas.

Jusss
01/01/14, 00:03:06
Otra duda Caravantes en el punto "A16: Establecer variable [ Nombre:%minutos A:%minutos%60) Calcular:Encendido Añadir:Apagado ]" el parentesis final en "A:%minutos%60)" es un error?de Tipeo y queda "A:%minutos%60" o va asi?

Caravantes
02/01/14, 00:44:35
el parentesis final en "A:%minutos%60)" es un error?de Tipeo y queda "A:%minutos%60"

Efectivamente, Jusss, tienes razón: eso es un error de escritura.
Ese error apareció cuando corregí la tarea según el nuevo aporte de Kalippo; al rectificar el post inicial cometí ese error y dejé un paréntesis que debía haber quitado. Gracias por avisar, ya está arreglado.

Jusss
10/01/14, 23:39:58
Cómo estás caravantes tengo un problema con la tarea si la autoejecuto desde taster me dice al final : "calculando %horas h, 0 m, 2 s" así que creo que tengo un problema en alguna parte que calcula las horas. Si creo una acción de taker usando esta tarea dónde en par1: le pongo por ejemplo 2356 y en devolver variable le pongo %result me tira la variable %result, sin calcular, no se bien cual e el problema, pego la descripción de la tarea por si alguien ve el problema pero la revise y esta tal cual. Gracias de antemano a todos los miembros de este gran foro. MiscSegundosATiempo (252)
A1: Si (if) [ %par ~ %* ]
A2: Establecer variable [ Nombre:%test A:1 Calcular:Apagado Añadir:Apagado ]
A3: Establecer variable [ Nombre:%par1 A:3662 Calcular:Encendido Añadir:Apagado ]
A4: Establecer variable [ Nombre:%par2 A:hh:mm:ss Calcular:Apagado Añadir:Apagado ]
A5: Fin si (End if)
A6: Establecer variable [ Nombre:%segundos A:%par1 Calcular:Encendido Añadir:Apagado ]
A7: Si (if) [ %segundos > 59 ]
A8: Establecer variable [ Nombre:%minutos A:%floor (%segundos/60) Calcular:Encendido Añadir:Apagado ]
A9: Establecer variable [ Nombre:%segundos A:%segundos%60 Calcular:Encendido Añadir:Apagado ]
A10: Fin si (End if)
A11: Establecer variable [ Nombre:%minutos A:%minutos Calcular:Encendido Añadir:Apagado ]
A12: Si (if) [ %par2 ~ *h* ]
A13: Si (if) [ %minutos > 59 ]
A14: Establecer variable [ Nombre:%horas A:%floor(%minutos/60) Calcular:Encendido Añadir:Apagado ]
A15: Establecer variable [ Nombre:%minutos A:%minutos%60 Calcular:Encendido Añadir:Apagado ]
A16: Fin si (End if)
A17: Fin si (End if)
A18: Establecer variable [ Nombre:%salida A:calculado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]
A19: Notificación [ Título:%salida Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
A20: Si (if) [ %par2 ~ *text*/*TEXT* ]
A21: Establecer variable [ Nombre:%salida A:%minutos minutos Calcular:Apagado Añadir:Apagado ]
A22: Si (if) [ %par2 ~ *h* ]
A23: Establecer variable [ Nombre:%salida A:%horas horas y %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 !~ *:s* ]
A24: Establecer variable [ Nombre:%salida A:%horas horas, %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A25: Fin si (End if)
A26: Establecer variable [ Nombre:%salida A:%salida y %segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A27: Else
A28: Si (if) [ %par2 ~ *ss* ]
A29: Establecer variable [ Nombre:%segundos A:0%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %segundos < 10 ]
A30: Fin si (End if)
A31: Limpiar variable [ Nombre:%segundos Coincidencia de Patrón:Apagado ] Si (if) [ %par2 !~ *:s* ]
A32: Si (if) [ %par2 ~ *mm* ]
A33: Establecer variable [ Nombre:%minutos A:0%minutos Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutos < 10 ]
A34: Fin si (End if)
A35: Si (if) [ %par2 ~ *hh* ]
A36: Establecer variable [ Nombre:%horas A:0%horas Calcular:Apagado Añadir:Apagado ] Si (if) [ %horas < 10 ]
A37: Fin si (End if)
A38: Establecer variable [ Nombre:%salida A:preparado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]

Caravantes
11/01/14, 00:10:32
no se bien cual e el problema, pego la descripción de la tarea por si alguien ve el problema

A primera vista creo que hasta la acción 38 está correcto. Para completar la tarea tienes que añadir once acciones más, de la 39 a la 49.

Jusss
11/01/14, 00:13:00
A primera vista creo que hasta la acción 38 está correcto. Para completar la tarea tienes que añadir once acciones más, de la 39 a la 49. que tonta me falto terminarla no se como se me paso, increíble, gracias

Jusss
11/01/14, 17:21:25
Como estas Caravantes primero gracias por siempre tomarte el trabajo de ayudar a los nuevos como nosotros, ya complete la tarea y me surgue otros problemas el primero es que si lo autoejecuto desde tasker no me sale ninguna notificacion, antes me salia porque tenia mal el punto "A8" (A8: Establecer variable [ Nombre:%minutos A:%floor(%segundos/60) Calcular:Encendido Añadir:Apagado ]), estaba separado el "floor" con "(%segundos/60)" y se ve que al tomarlo mal la tarea continuaba, si desactivo esta accion si me sale la notificacion pero sale mal las horas y me pone "0%horas:0%horas:00:002". Asi me quedo la tarea completa:

MiscSegundosATiempo (252)
A1: Si (if) [ %par ~ %* ]
A2: Establecer variable [ Nombre:%test A:1 Calcular:Apagado Añadir:Apagado ]
A3: Establecer variable [ Nombre:%par1 A:3662 Calcular:Encendido Añadir:Apagado ]
A4: Establecer variable [ Nombre:%par2 A:hh:mm:ss Calcular:Apagado Añadir:Apagado ]
A5: Fin si (End if)
A6: Establecer variable [ Nombre:%segundos A:%par1 Calcular:Encendido Añadir:Apagado ]
A7: Si (if) [ %segundos > 59 ]
A8: Establecer variable [ Nombre:%minutos A:%floor(%segundos/60) Calcular:Encendido Añadir:Apagado ]
A9: Establecer variable [ Nombre:%segundos A:%segundos%60 Calcular:Encendido Añadir:Apagado ]
A10: Fin si (End if)
A11: Establecer variable [ Nombre:%minutos A:%minutos Calcular:Encendido Añadir:Apagado ]
A12: Si (if) [ %par2 ~ *h* ]
A13: Si (if) [ %minutos > 59 ]
A14: Establecer variable [ Nombre:%horas A:%floor(%minutos/60) Calcular:Encendido Añadir:Apagado ]
A15: Establecer variable [ Nombre:%minutos A:%minutos%60 Calcular:Encendido Añadir:Apagado ]
A16: Fin si (End if)
A17: Fin si (End if)
A18: Establecer variable [ Nombre:%salida A:calculado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]
A19: Notificación [ Título:%salida Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
A20: Si (if) [ %par2 ~ *text*/*TEXT* ]
A21: Establecer variable [ Nombre:%salida A:%minutos minutos Calcular:Apagado Añadir:Apagado ]
A22: Si (if) [ %par2 ~ *h* ]
A23: Establecer variable [ Nombre:%salida A:%horas horas y %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 !~ *:s* ]
A24: Establecer variable [ Nombre:%salida A:%horas horas, %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A25: Fin si (End if)
A26: Establecer variable [ Nombre:%salida A:%salida y %segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A27: Else
A28: Si (if) [ %par2 ~ *ss* ]
A29: Establecer variable [ Nombre:%segundos A:0%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %segundos < 10 ]
A30: Fin si (End if)
A31: Limpiar variable [ Nombre:%segundos Coincidencia de Patrón:Apagado ] Si (if) [ %par2 !~ *:s* ]
A32: Si (if) [ %par2 ~ *mm* ]
A33: Establecer variable [ Nombre:%minutos A:0%minutos Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutos < 10 ]
A34: Fin si (End if)
A35: Si (if) [ %par2 ~ *hh* ]
A36: Establecer variable [ Nombre:%horas A:0%horas Calcular:Apagado Añadir:Apagado ] Si (if) [ %horas < 10 ]
A37: Fin si (End if)
A38: Establecer variable [ Nombre:%salida A:preparado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]
A39: Notificación [ Título:%salida Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
A40: Establecer variable [ Nombre:%salida A:%minutos Calcular:Apagado Añadir:Apagado ]
A41: Establecer variable [ Nombre:%salida A:%horas:%salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *h:* ]
A42: Establecer variable [ Nombre:%salida A:%horas:%salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *h:* ]
A43: Establecer variable [ Nombre:%salida A:%salida:%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A44: Fin si (End if)
A45: Notificación [ Título:%salida Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ] Si (if) [ %test ~ 1 ]
A46: Devolver [ Valor:%salida Parar:Encendido ]

Ahora si ejecuto esta tarea desde otra poniendo numeros en "par1" y devuelvo la variable "result"si funciona sin desactivar el punto 8 y me sale el ejemplo del "test" ya que me calcula ""0%horas:0%horas:00:002" (siempre con las horas mal) aca pego la tarea esta:

Segundo (272)
A1: Realizar tarea [ Nombre:MiscSegundosATiempo Parar:Apagado Prioridad:10 Parámetro 1 (%par1):1236556 Parámetro 2 (%par2): Devolver Valor de Variable:%Result ]
A2: Popup HTML [ Código:%Result Disposición:HTML Popup Cuenta atrás (segundos):5 Show Over Keyguard:Encendido ]


Estoy media perdida no se si se entendio bien los problemas asi que los resumo, el primero es que al autoejecutar no funciona ninguna notificacion si esta activo el punto "8" (es el punto 9 en la tarea tuya) o si esta bien escrito ya que si separo la palabra ""floor" con la palabra "(%segundos/60)" sin separador entre medio, funciona y me devuelve la notificacion final. El otro problema es que me calcula mal la hora (no se si sera porque no me funciona el punto 8) poniendo en la notificacon final "0%horas:0%horas:00:002" y el ultimo problema es que si ejecuto la tarea desde otra poniendo los numeros en Par1 me devuelve el ejemplo del test calculando "3662" y no los numeros que yo les puse.

Podrias poner la tarera como xml asi veo si es por algun punto o coma mal escrito?

Grcias de antemano por toda la ayuda

Saudos

Jusss

Caravantes
11/01/14, 23:47:52
Hola Jusss.
Para tratar de ver qué puede estar mal vamos a ir por partes. En primer lugar debes entender cómo fuciona la tarea, y te voy a explicar varias cosas aunque seguramente te digo alguna cosa que ya sabías.

Las acciones A1-A5 sirven para la autoejecución (como tarea principal o única, por ejemplo en pruebas). La acción A3 establece %par1 a 3662, que corresponde a 0 horas + 56 minutos + 2 segundos. Puesto que te funcionan mal las horas vamos a cambiarlo. Ponle ahí 14162 para que sean 3 horas + 56 minutos + 2 segundos.

Las acciones A6-A17 son las que hacen los cálculos.
La palabra floor es la función matemática de redondeo a la baja, y se aplica a lo que vaya dentro del parénteis que le sigue. Primero se calcula el interior de ese paréntesis y al resultado se le aplica el redondeo. La palabra floor no es una variable y por tanto NO DEBE IR PRECEDIDA DEL SÍMBOLO % (porcentaje), tienes ese error en A8 y en A14. La palabra floor debe ir inmediantemente seguida de un paréntesis, sin ningún espacio intermedio. Más detalles sobre funciones matemáticas en http://www.htcmania.com/showthread.php?p=7966055

La acción A19 hace una notificación mostrando una variable preparada en la acción anterior (A18) para mostar el resultado de los cálculos.
Tras eso inserta una acción DETENER TAREA, para que no prosiga. Esa acción DETENER debe quedarte en A20.
Prueba la tarea y te debería de aparecer una notificación calculado 3 h, 56 m, 2 s (indicando que se han calculado 3 horas, 56 minutos, 2 segundos, todo abreviado).

Jusss
12/01/14, 09:18:04
Gracias, Ahí modificando "floor" y colocándolo bien funciona a medias, funciona las horas siempre y cuando coloque un número dónde las pueda calcular si el número no contienen horas por ejemplo "162" me sale en la notificación final :"0%horas:0%horas:02:21", con el número que me sugeriste de ejemplo si calcula bien, te pongo las 3 notificaciónes que me salen en el modo test para controlar si está todo bien primero "calculado 3h,56m,2s" después "preparado 3 h, 56m,2 segundos" y la última es "03,03,56,02" esa última no entiendo porque son 4 dígitos, que es lo que muestra al repetirse el número de la hora?. Por otro lado me sigue funcionando mal cuando ejecutó la tarea desde otra, poniendo números en "par 1" me siguen saliendo el cálculo del test y no lo que colocó, te cuento como lo hago pongo una nueva tarea "ejecutar tarea" ""miscsegundosatiempo" (prioridad 10) en "par1" colocó cualquier número en devolver variable "result" cuando ejecutó una Notificación de esa variable siempre sale el número que pongo en el test en este caso calcula 14162,("3,56,02“) y no lo que puse en" "par1". Inclusive si agregó en par 2 "hh:mm" me sigue calculando el tiempo del test con los segundos, cualquier formato que ponga en par2 es indiferente y muestra las tres notificaciónes del test "calculado 3h,56m,2s" "preparado 3 h, 56m,2 segundos" "03,03,56,02"

Caravantes
12/01/14, 23:27:57
la última es "03,03,56,02" esa última no entiendo porque son 4 dígitos, que es lo que muestra al repetirse el número de la hora?

Error tuyo. Eso es porque has puesto dos veces la misma acción: A41 y A42 son iguales, la misma acción repetida, una de ellas sobra.

funciona las horas siempre y cuando coloque un número dónde las pueda calcular si el número no contienen horas por ejemplo "162" me sale en la notificación final :"0%horas:0%horas:02:21"

Error mío, gracias por descubrirlo. El cálculo de las horas solo se hacía cuando había más de 59 minutos, y por ese motivo la variable %horas estaba sin inicializar cuando había menos minutos. Hay que corregir la tarea para que calcule las horas siempre, aunque su resultado sea cero. Ya puestos, conviene hacer la misma corrección para los minutos. El arreglo es simple, solo hay que quitar algunas acciones, las que en tu tarea tienen los números 16, 13, 11, 10 y 7.

Esas acciones, en mi tarea tenían los números 17, 14, 12, 11 y 8. Ya las que quitado del primer post y las copio aquí para que quede constancia de eso que he quitado:
<Calcular los minutos, si procede>
A8: Si (if) [ %segundos > 59 ]
A9: Establecer variable [ Nombre:%minutos A:floor(%segundos/60) Calcular:Encendido Añadir:Apagado ]
A10: Establecer variable [ Nombre:%segundos A:%segundos%60 Calcular:Encendido Añadir:Apagado ]
A11: Fin si (End if)
<Tal vez la cifra inicial fuera menos de 59 segundos, pero la cifra de minutos se considera obligatoria>
A12: Establecer variable [ Nombre:%minutos A:%minutos Calcular:Encendido Añadir:Apagado ]
<Calcular las horas, si procede>
A13: Si (if) [ %par2 ~ *h* ]
A14: Si (if) [ %minutos > 59 ]
A15: Establecer variable [ Nombre:%horas A:floor(%minutos/60) Calcular:Encendido Añadir:Apagado ]
A16: Establecer variable [ Nombre:%minutos A:%minutos%60 Calcular:Encendido Añadir:Apagado ]
A17: Fin si (End if)
A18: Fin si (End if)
Por otro lado me sigue funcionando mal cuando ejecutó la tarea desde otra, poniendo números en "par 1" me siguen saliendo el cálculo del test y no lo que colocó,

Tienes un error en la primera acción, has escrito mal la variable. Has puesto
A1: Si (if) [ %par ~ %* ]
Debería ser
A2: Si (if) [ %par1 ~ %* ]

He dado un repaso a la tarea, descubriendo otro fallo. La acción que yo tenía en A33 (Limpiar variable %segundos) es preferible suprimirla también. Tras haber suprimido cinco acciones previas ahora esa acción quedaba con el número 28 en mi tarea, y el 27 en la tuya, supongo. Ya te digo que también conviene eliminarla. Ya ha desaparecido del primer post, pues ahí he puesto una nueva exportación de la tarea con las correcciones ya incorporadas.

Prueba de nuevo y nos cuentas.

Jusss
13/01/14, 15:33:51
Con todas las correciones ya funciona perfecto! Gracias Caravantes

Hay un ultimo error que me sucede y es cuando le agrego la palabra TEXT solo aparece la palabra "minutos" Ej, recien puse en par1:"885369" par2 "TEXT" y la variable que me devuelve es: "14756 minutos" con cualquier ejemplo de numeros siempre dice minutos al final, no se si estoy entendiendo mal lo que devuelve esa accion pero no tendria que ponerme las horas y los segundos??

Caravantes
13/01/14, 16:37:44
Hay un ultimo error que me sucede y es cuando le agrego la palabra TEXT solo aparece la palabra "minutos" Ej, recien puse en par1:"885369" par2 "TEXT" y la variable que me devuelve es: "14756 minutos" con cualquier ejemplo de numeros siempre dice minutos al final, no se si estoy entendiendo mal lo que devuelve esa accion pero no tendria que ponerme las horas y los segundos??

Lo estás entendiendo mal, quizá porque has omitido la primera acción de mi tarea, la que incluye las instrucciones de funcionamiento:

<Esta tarea recibe como parámetro1 un número de segundos y devuelve el mismo tiempo en formato de horas, minutos y/o segundos.
El parámetro2 indica el tipo de salida pudiendo ser
hh:mm:ss , mm:ss , hh:mm o mm (solo minutos); opcionalmente en el parametro2 se puede añadir la palabra TEXT para que sea devuelto como texto del tipo "12 minutos y 34 segundos".>
A1: Destino (de goto)

Por defecto, la tarea siempre devuelve los minutos, salvo que se indique otra cosa en %par2. Supongo que deberías poner en %par2 algo como "h:m:s TEXT". Está explicado con más detalle en el primer post de este hilo.

Jusss
13/01/14, 17:27:03
Gracias ahi lo entendi, puse h:m:s TEXT pero la palabra "segundos" no aparece. Me pone "245 horas, 6 minutos y 9" detras del 9 no se pone la palabra "segundos", y asi con cualquier numero que coloque en "par 1", sera por alguna accion que se saco?

Caravantes
13/01/14, 18:05:25
pero la palabra "segundos" no aparece. Me pone "245 horas, 6 minutos y 9" detras del 9 no se pone la palabra "segundos"

Tienes un error en una acción, se te olvidó escribir la palabra segundos detrás de la variable $segundos. Es la acción que en tu última exportación has copiado como
A26: Establecer variable [ Nombre:%salida A:%salida y %segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]

Con los cambios, calculo que eso ahora debe estar en por el número 21 o 22, vaya lío. En mi caso está en el lugar 23, y la forma correcta es la que aparece en el primer post, te la copio otra vez aquí:
A23: Establecer variable [ Nombre:%salida A:%salida y %segundos segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]

Jusss
13/01/14, 18:50:01
Tienes un error en una acción, se te olvidó escribir la palabra segundos detrás de la variable $segundos. Es la acción que en tu última exportación has copiado como

Ahi esta ya funciona perfecta!!! Gracias por todo Caravantes, es una gran tarea!! perdon por tantos caracteres escritos mal! es que a veces cuando es tan larga una se confunde,

Saludoss

Jusss

Jusss
15/01/14, 02:39:15
Cómo están estoy intentando mejorar un perfil viejo que tengo usando esta tarea, se me esta haciendo difícil no se bien como empezar, este perfil lo que hace es grabar por el micrófono cuando doy vuelta el celular y lo para cuando lo doy vuelta, lo que quiero es que al terminar me diga cuando duro la grabación mejor de lo que está ahora, queria justamente usar esta tarea , acá pongo el perfil por si alguien puede ayudar Perfil: Grabar Audio (112)
Estado: Orientación [ Está:Pantalla abajo ]
Entrada: Anon (113)
A1: Establecer variable [ Nombre:%fecha A:%DATE Calcular:Apagado Añadir:Apagado ]
A2: Separar variable [ Nombre:%fecha Separador:- Eliminar base:Apagado ]
A3: Establecer variable [ Nombre:%segundos A:%TIMES Calcular:Encendido Añadir:Apagado ]
A4: Establecer variable [ Nombre:%segundos A:%TIMES - (60*floor(%TIMES/60) Calcular:Encendido Añadir:Apagado ]
A5: Establecer variable [ Nombre:%segundos A:0%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %segundos < 10 ]
A6: Establecer variable [ Nombre:%file A:/storage/extSdCard/Sistem32/Audios Calcular:Apagado Añadir:Apagado ]
A7: Establecer variable [ Nombre:%file A:/storage/extSdCard/Sistem32/Audios/%fecha3-%fecha2-%fecha1 Calcular:Apagado Añadir:Apagado ]
A8: Establecer variable [ Nombre:%file A:/storage/extSdCard/Sistem32/Audios/%fecha3-%fecha2-%fecha1.%TIME.%segundos Calcular:Apagado Añadir:Apagado ]
A9: Grabar audio [ Archivo:%file Origen:Micrófono Tamaño Máx:0 Codec:AMR Narrowband Formato:MP4 ]
A10: Vibrar [ Tiempo:200 ]

Salida: Anon (109)
A1: Vibrar [ Tiempo:200 ]
A2: Detener grabación audio

ruco1980
15/01/14, 16:24:55
Hola!!! Puedes intentar probar algo que a mí me está funcionando bien para el cálculo de la duración en segundos (a ver si me explico bien porque soy muy novato y no me aclaro muy bien con las variables...)

En la tarea de entrada estableces una variable p.ej. %segundos A %TIMES, calcular encendido

Luego en la tarea de salida, para saber los segundos que ha durado la grabación...establecer variable %segundos A %TIMES-%segundos, calcular encendido

Después para que transforme los segundos a tiempo Tarea, Realizar Tarea (MiscSegundosaTiempo de Caravantes), prioridad 10, en %par1 pones %segundos, y en%par2 pones el formato que quieres p.ej mm:ss TEXT y en el apartado de devolver variable pones %salida; luego ya usas la variable%salida para lo que quieras...

A mi me está funcionando bien en el registro de llamadas recibidas que tengo...
Espero haberme explicado bien...1 saludo!

Caravantes
15/01/14, 16:57:57
este perfil lo que hace es grabar por el micrófono cuando doy vuelta el celular y lo para cuando lo doy vuelta, lo que quiero es que al terminar me diga cuando duro la grabación

Jusss, yo te iba a contestar algo similar a lo que ha dicho Ruco. De hecho, al comienzo de este hilo ya puse una introducción que lo explicaba de forma muy parecida:

En Tasker, la forma más fácil de medir el tiempo es por las diferencias entre dos lecturas de la variable %TIMES, que siempre nos devuelve un número de segundos. Así, podemos obtener que el smartphone ha tardado 11289 segundos en recargar su batería. Pero eso mismo sería más comprensible si esa información nos fuese dada en el formato habitualmente utilizado para representar horas, minutos y segundos, o sea 03:08:09. Esa es la conversión que hace la tarea que hoy traigo.

Jusss
15/01/14, 17:19:25
Gracias a los dos este modo funciona lo probe haciendo una tarea individual y me calculo perfecto, pero no fucniona en mi tarea en el fichero de audio, creo que es por como esta planteada la tarea el fichero con todos los datos lo crea en la tarea de entrada, y el calculo de cuanto duro en la de salida entonces nunca va a funcionar la variable "Tiempo" (que es la variable ya cauclualada con la tarea de Caravantes ) si esta puesta en la tarea de entrada.

Es imposible que yo ponga en este punto "A8: Establecer variable [ Nombre:%file A:/storage/extSdCard/Sistem32/Audios/%fecha3-%fecha2-%fecha1.%Tiempo Calcular:Apagado Añadir:Apagado ]" y funcione

No se entonces si poner toda la tarea de calculo en la de salida, tengo que pensar otra forma de encarar este Perfil se acepta alguna sugerencia,

EDITO: Ahi pude sola jaja por fin tantos meses de Tasker pude darme cuenta y solucionarlo: en tarea de entrada puse solo el calculo de tiempo y la grabacion de la tarea, converti "fILE" a "FILE" y en la de salida despues de parar la grabacion puse toda la tarea de calculo de tiempo de fechas y cuanto duro y funciona voy a hacer un post con la tarea asi les sirve a los demas

Caravantes
16/01/14, 17:02:45
Jusss, te sugiero lo siguiente

Estado: Orientación [ Está:Pantalla abajo ]
Entrada:
A1: Establecer variable [ Nombre:%fecha A:%DATE Calcular:Apagado Añadir:Apagado ]
A2: Separar variable [ Nombre:%fecha Separador:- Eliminar base:Apagado ]
A3: Establecer variable [ Nombre:%segundos A:%TIMES - (60*floor(%TIMES/60) Calcular:Encendido Añadir:Apagado ]
A4: Establecer variable [ Nombre:%segundos A:0%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %segundos < 10 ]
A5: Establecer variable [ Nombre:%file A:/storage/extSdCard/Sistem32/Audios/%fecha3-%fecha2-%fecha1.%TIME.%segundos Calcular:Apagado Añadir:Apagado ]
A6: Establecer variable [ Nombre:%InicioTiempo A:%TIMES Calcular:Apagado Añadir:Apagado ]
A7: Grabar audio [ Archivo:%file Origen:Micrófono Tamaño Máx:0 Codec:AMR Narrowband Formato:MP4 ]
A8: Vibrar [ Tiempo:200 ]

Salida:
A1: Vibrar [ Tiempo:200 ]
A2: Detener grabación audio
A3: Establecer variable [ Nombre:%diferenciatiempo A:%TIMES-%InicioTiempo Calcular:Encendido Añadir:Apagado ]
A4: Realizar tarea [ Nombre:MiscSegundosATiempo Parar:Apagado Prioridad:10 Parámetro 1 (%par1):%diferenciatiempo Parámetro 2 (%par2): hh:mm:ss Devolver Valor de Variable:%duracion ]
A5: Notificación [ Título:Grabación realizada durante %duracion Texto: Icono:null Número:0 Permanente:Apagado Prioridad:3 ]

-----------------------------

PD. Perdón, no me había dado cuenta de que ya hay otro hilo para este asunto. Continuamos allí http://www.htcmania.com/showthread.php?p=12102312

darkopro
16/02/14, 16:49:37
Caravantes, lo he revisado varias veces y no entiendo porque me da el resultado en: X horas, X horas y X minutos.
Es tu tarea pero con los «destino de (go to)» y las notificaciones quitadas:
Horas:Minutos:Segundos (18)
<Conversión horas, minutos y segundos>
A1: Destino (de goto)
A2: Si (if) [ %par1 ~ %* ]
A3: Establecer variable [ Nombre:%test A:1 Calcular:Apagado Añadir:Apagado ]
A4: Establecer variable [ Nombre:%par1 A:2 Calcular:Encendido Añadir:Apagado ]
A5: Establecer variable [ Nombre:%par2 A:hh:mm:ss text Calcular:Apagado Añadir:Apagado ]
A6: Fin si (End if)
A7: Establecer variable [ Nombre:%segundos A:%par1 Calcular:Encendido Añadir:Apagado ]
A8: Establecer variable [ Nombre:%minutos A:floor(%segundos/60) Calcular:Encendido Añadir:Apagado ]
A9: Establecer variable [ Nombre:%segundos A:%segundos%60 Calcular:Encendido Añadir:Apagado ]
A10: Si (if) [ %par2 ~ *h* ]
A11: Establecer variable [ Nombre:%horas A:floor(%minutos/60) Calcular:Encendido Añadir:Apagado ]
A12: Establecer variable [ Nombre:%minutos A:%minutos%60 Calcular:Encendido Añadir:Apagado ]
A13: Fin si (End if)
A14: Establecer variable [ Nombre:%salida A:calculado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]
A15: Si (if) [ %par2 ~ *text*/*TEXT* ]
A16: Establecer variable [ Nombre:%salida A:%minutos minutos Calcular:Apagado Añadir:Apagado ]
A17: Si (if) [ %par2 ~ *h* ]
A18: Establecer variable [ Nombre:%salida A:%horas horas y %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A19: Establecer variable [ Nombre:%salida A:%horas horas, %salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A20: Fin si (End if)
A21: Establecer variable [ Nombre:%salida A:%salida y %segundos segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A22: Else
A23: Si (if) [ %par2 ~ *ss* ]
A24: Establecer variable [ Nombre:%segundos A:0%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %segundos < 10 ]
A25: Fin si (End if)
A26: Si (if) [ %par2 ~ *mm* ]
A27: Establecer variable [ Nombre:%minutos A:0%minutos Calcular:Apagado Añadir:Apagado ] Si (if) [ %minutos < 10 ]
A28: Fin si (End if)
A29: Si (if) [ %par2 ~ *hh* ]
A30: Establecer variable [ Nombre:%horas A:0%horas Calcular:Apagado Añadir:Apagado ] Si (if) [ %horas < 10 ]
A31: Fin si (End if)
A32: Establecer variable [ Nombre:%salida A:preparado %horas h, %minutos m, %segundos s Calcular:Apagado Añadir:Apagado ]
A33: Establecer variable [ Nombre:%salida A:%minutos Calcular:Apagado Añadir:Apagado ]
A34: Establecer variable [ Nombre:%salida A:%horas:%salida Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *h:* ]
A35: Establecer variable [ Nombre:%salida A:%salida:%segundos Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ *:s* ]
A36: Fin si (End if)
A37: Devolver [ Valor:%salida Parar:Encendido ]

oscarptx
16/02/14, 17:53:05
No sé si tendrá que ver con el problema que tienes, pero creo que tienes errónea la línea A18, el Si (if) es [ %par2 !~ *:s* ]

Caravantes
16/02/14, 18:01:19
no entiendo porque me da el resultado en: X horas, X horas y X minutos.

En la acción 18 (que corresponde a mi acción 20) tienes condición del revés. Debe ser Si (if) [ %par2 !~ *:s* ]

En la acción 2 mejor pones (en lugar de 2) el valor 14162 (equivale a 3 horas + 56 minutos + 2 segundos). Así será más fácil detectar errores.
Yo así lo he corregido en mi tarea, el primer post del hilo. Corrige tú también la tarea que has publicado y así no necesitas volver a copiarla entera.
Luego ejecuta esta tarea directamente, a mano (ni subtarea ni nada parecido); debería darte ese resultado: 3 horas, 56 minutos y 2 segundos. Si te da otro resultado lo escribes exactamente y veremos por qué sale otra cosa.

darkopro
16/02/14, 19:14:27
Tenéis razón, si no lo había revisado 6 veces no lo había revisado ninguna...
Que inútil soy :( siento la molestia, estaba ya mareado de tanto revisar y no encontrarlo. Ahora si funciona perfectamente :)