Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 15/11/16, 10:29:07
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

interrogacion Ayuda con cálculo de diferencia horaria

Lo que estoy intentado es saber la diferencia en el formato (H:M:S) del tiempo transcurrido desde un x de INICIO, hasta otro x de FIN.

Esta es la tarea en cuestión:
Código:
    A1: Establecer variable [ Nombre:%start A:%TIMES Calcular:Apagado Añadir:Apagado ] 
    A2: Esperar [ MS:0 Segundos:x Minutos:x Horas:x Días:0 ] 
    A3: Establecer variable [ Nombre:%end A:%TIMES Calcular:Apagado Añadir:Apagado ] 
    A4: Establecer variable [ Nombre:%calc A:%end-%start Calcular:Encendido Añadir:Apagado ] 
    A5: Establecer variable [ Nombre:%hhh A:floor(%calc/3600) Calcular:Encendido Añadir:Apagado ] 
    A6: Establecer variable [ Nombre:%mmm A:floor((%calc % 3600)/60) Calcular:Encendido Añadir:Apagado ] 
    A7: Establecer variable [ Nombre:%sss A:%calc % 60 Calcular:Encendido Añadir:Apagado ] 
    A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 & %hhh > 0 ]
    A9: Establecer variable [ Nombre:%hhh A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh = 0 ]
    A10: Establecer variable [ Nombre:%mmm A:0%min Calcular:Apagado Añadir:Apagado ] Si (if) [ %mmm < 10 & %mmm > 0 ]
    A11: Establecer variable [ Nombre:%mmm A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %mmm = 0 ]
    A12: Establecer variable [ Nombre:%sss A:0%sss Calcular:Apagado Añadir:Apagado ] Si (if) [ %sss < 10 & %sss > 0 ]
    A13: Establecer variable [ Nombre:%sss A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %sss = 0 ]
    A14: Flash [ Texto:%hhh:%mmm:%sss Largo:Encendido ]
Lo raro que me esta pasando es que si el tiempo transcurrido no supera el minuto (59 segundos), el resultado en la tarea Flash es correcto (00:00:59). Pero cuando éste supera el minuto, en adelante, los segundos se calculan sin problema pero los minutos no. Siempre me figura "0%mmm".

Nota: x = tiempo de espera simulado entre tiempo INICIO Y FIN.

Última edición por SmartPhoneLover Día 08/12/16 a las 13:04:04.
Responder Con Cita


  #2  
Viejo 15/11/16, 12:33:20
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
No me queda muy claro el planteamiento. ¿Qué formato tienen %start y %end?.

Si %start y %end son horas en formato H:M:S la resta que haces en A4 (%end-%start) puede dar como resultado cualquier cosa. Ten en cuenta que en ese caso estarías restando dos cadenas de caracteres convertidas a números sin contemplaciones.

Si esos valores de entrada tienen formato H:M:S lo mejor para "simplificar" el asunto es convertir ambos valores a segundos, hacer la resta, y luego convertir los segundos de diferencia al formato que quieras/necesites.

Para la conversión H:M:S a SEG tienes una acción de Tasker que lo hace directamente, aunque me suena que no tiene en cuenta los segundos, en cuyo caso los tendrás que sumar tú después.

Esto me ha recordado de nuevo que tengo pendiente publicar una tarea para convertir segundos a cualquier otra cosa.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
  #3  
Viejo 15/11/16, 12:33:22
Array

[xs_avatar]
leromaro leromaro no está en línea
Miembro del foro
 
Fecha de registro: ago 2014
Localización: Chascomús, Argentina
Mensajes: 245
Modelo de smartphone: Xiaomi Mi A3
Tu operador: Claro
Responder Con Cita
Los siguientes 2 usuarios han agradecido a leromaro su comentario:
  #4  
Viejo 15/11/16, 12:43:15
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
No me queda muy claro el planteamiento. ¿Qué formato tienen %start y %end?.

Si %start y %end son horas en formato H:M:S la resta que haces en A4 (%end-%start) puede dar como resultado cualquier cosa. Ten en cuenta que en ese caso estarías restando dos cadenas de caracteres convertidas a números sin contemplaciones.

Si esos valores de entrada tienen formato H:M:S lo mejor para "simplificar" el asunto es convertir ambos valores a segundos, hacer la resta, y luego convertir los segundos de diferencia al formato que quieras/necesites.

Para la conversión H:M:S a SEG tienes una acción de Tasker que lo hace directamente, aunque me suena que no tiene en cuenta los segundos, en cuyo caso los tendrás que sumar tú después.

Esto me ha recordado de nuevo que tengo pendiente publicar una tarea para convertir segundos a cualquier otra cosa.
- Las variables '%start' y '%end' estan, al menos eso creo, en formato SEGUNDOS. Por eso le asigno el valor de inicio y fin proveniente de la variable de sistema '%TIMES'.
- La resta que realizo en la A4 la hago para restar los segundos de anteriormente obtenidos. De este modo seguría trabajando con segundos. Luego pasaría de segunfos a HH:MM:SS.
- Es lo que hago, o no? Utilizo %TIMES para trabajar con los tiempos iniciales directamente en segundos, de esta manera me evito el convertir de h-m-s a segundos.
- Ya pero tendría que sincronizar los segundos de la formula [%TIMES-(60*floor(%TIMES/60))], con el tiempo convertido a segundos de la variable %TME.
- Mmmm, me gustaría verlo. Estoy impaciente por ver tu trabajo. ;)
Responder Con Cita
  #5  
Viejo 15/11/16, 12:44:49
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por leromaro Ver Mensaje
Muchas gracias 'leromaro', les hecharé un vistazo.
A partir de ahora antes de preguntar, me mataré buscando por aquí, por la web y debajo de las piedras. Luego, si REALMENTE no encuentro nada, ni siquiera en chino mandarín, preguntaré
Responder Con Cita
  #6  
Viejo 15/11/16, 13:18:14
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Muchas gracias 'leromaro', les hecharé un vistazo.
A partir de ahora antes de preguntar, me mataré buscando por aquí, por la web y debajo de las piedras. Luego, si REALMENTE no encuentro nada, ni siquiera en chino mandarín, preguntaré
Buscando antes probablemente habrías dado incluso con scripts completos, pero mucho más importante que eso o que saber crear bien la tarea a la primera es la metodología a la hora de depurar código. Tendrías que haber metido lineas de debug (mostrar resultados parciales de cálculos con acciones flash o popups) para averiguar donde falla, en qué linea los cálculos se desvían de lo que deberían ser (si es necesario usar datos iniciales fake para mayor facilidad) y vista esa linea concreta, si no sabes por qué falla entonces buscar.
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 15/11/16, 14:24:42
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
- Las variables '%start' y '%end' estan, al menos eso creo, en formato SEGUNDOS. Por eso le asigno el valor de inicio y fin proveniente de la variable de sistema '%TIMES'.
Pues tienes razón

Me he quedado con la descripción que has hecho y no he prestado atención a las primeras acciones de la tarea.

Estando claro que manejas segundos desde el primer momento el problema tiene que estar en las operaciones posteriores.

Las operaciones de las acciones A5/A6/A7 son correctas y hacen lo que se espera de ellas.

En las acciones A8 a A13 (para poner el cero a la izquierda) está el fallo. En A10 has usado %min en vez de %mmm. Por cierto, podías hacer lo mismo sólo con tres acciones.

 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Mmmm, me gustaría verlo. Estoy impaciente por ver tu trabajo. ;)
En lo que tenga un rato libre.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 15/11/16, 14:50:57
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por danko9696 Ver Mensaje
Buscando antes probablemente habrías dado incluso con scripts completos, pero mucho más importante que eso o que saber crear bien la tarea a la primera es la metodología a la hora de depurar código. Tendrías que haber metido lineas de debug (mostrar resultados parciales de cálculos con acciones flash o popups) para averiguar donde falla, en qué linea los cálculos se desvían de lo que deberían ser (si es necesario usar datos iniciales fake para mayor facilidad) y vista esa linea concreta, si no sabes por qué falla entonces buscar.
Muchas gracias por el consejo, a partir de ahora seguiré tu metodología de ensayo-error. Y solo si no logro resolver el incoveniente entonces busco y pregunto. ;)
Responder Con Cita
  #9  
Viejo 15/11/16, 19:48:49
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Muchas gracias por el consejo, a partir de ahora seguiré tu metodología de ensayo-error. Y solo si no logro resolver el incoveniente entonces busco y pregunto. ;)
No es que sea mi metodología. Si el error no resulta obvio fijándose en él no queda otra que ir ejecutando paso a paso y/o meter alertas. Resulta muy fácil cometer errores y si una tarea muy lineal como esta no eres capaz de depurarla cuando no sale bien a la primera imagina qué ocurrirá cuanto te pongas con una tarea que tenga varios bucles uno dentro de otro, arrays y llamadas a otras tareas, que puede que por el tiempo que lleve desanime a otros a echarte un cable.

Tienes que dar por hecho que la primera vez que ejecutes una tarea muy larga y complicada muy posiblemente no va a funcionar correctamente, debes estar preparado para ello. Incluso mientras creas la tarea puedes ir pensando qué alertas te pueden resultar útiles para depurar después el código o incluso crearlas de antemano y si luego resulta que no hacen falta (porque funciona a la primera), dejarlas (desactivadas) para facilitar posibles modificaciones posteriores que puedas querer hacer en el futuro. También es muy recomendable en la depuración tener comentado el código.

Y se me olvidaba, también en lugar de popups/flash puedes copiar al clipboard, cuando el contenido es muy extenso o escribir a un archivo cuando sea todavía más extenso, con sonidos, tts, led, etc...
Responder Con Cita
Los siguientes 2 usuarios han agradecido a danko9696 su comentario:
  #10  
Viejo 16/11/16, 00:25:07
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 & %hhh > 0 ]
A9: Establecer variable [ Nombre:%hhh A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh = 0 ]
Puedes simplificar de esta forma:
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 ]
y de esta forma puedes suprimir la acción A9, que deja de ser necesaria. Más simple y más eficiente.
Aplica la misma estrategia para las acciones 10 (minutos) y 12 (segundos), y de ese modo puedes suprimir las acciones 11 y 13.

 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
A partir de ahora antes de preguntar, me mataré buscando por aquí, por la web y debajo de las piedras...
No exageres. Te hubiera bastado con hacer un par de intentos con el buscador del foro. Te diré algo: Leromaro no se sabe las URLs de memoria. Él las ha puesto después de haber usado el buscador del foro. Y no te las ha dado como reproche ni nada parecido, solo te ha aportado pistas para que puedas tener mejor información sobre el tema. No hay ningún motivo para que le respondas como si te hubiera dicho algo negativo.

Igualmente, creo que Danko te está dando consejos excelentes. Muchos de nosotros pensamos que está bien ayudar a un compañero para resolver un problema puntual, pero también es válido dar a otro las indicaciones para que aprenda a resolver muchos problemas por sí mismo. Darte un pez está bien pero enseñarte a pescar es aún mejor. Y también parece que te estás tomando a mal las sugerencias de Danko, sin motivo. Es mi opinión.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Los siguientes 4 usuarios han agradecido a Caravantes su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #11  
Viejo 08/12/16, 12:54:48
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por danko9696 Ver Mensaje
No es que sea mi metodología. Si el error no resulta obvio fijándose en él no queda otra que ir ejecutando paso a paso y/o meter alertas. Resulta muy fácil cometer errores y si una tarea muy lineal como esta no eres capaz de depurarla cuando no sale bien a la primera imagina qué ocurrirá cuanto te pongas con una tarea que tenga varios bucles uno dentro de otro, arrays y llamadas a otras tareas, que puede que por el tiempo que lleve desanime a otros a echarte un cable.

Tienes que dar por hecho que la primera vez que ejecutes una tarea muy larga y complicada muy posiblemente no va a funcionar correctamente, debes estar preparado para ello. Incluso mientras creas la tarea puedes ir pensando qué alertas te pueden resultar útiles para depurar después el código o incluso crearlas de antemano y si luego resulta que no hacen falta (porque funciona a la primera), dejarlas (desactivadas) para facilitar posibles modificaciones posteriores que puedas querer hacer en el futuro. También es muy recomendable en la depuración tener comentado el código.

Y se me olvidaba, también en lugar de popups/flash puedes copiar al clipboard, cuando el contenido es muy extenso o escribir a un archivo cuando sea todavía más extenso, con sonidos, tts, led, etc...
No no, solo lo tomé como ejemplo y llame, aunque erroneamente, lo que me comentaste como tu posible metodología. Simplemente quise dejar claro que para mi la forma de procesar una tarea el método de ensayo-error me parece bastante bueno.

Gracias por las recomendaciones de introducir avisos dentro de una tarea. Ahora he incluido esa forma de trabajar en mis proyectos y la verdad me facilita bastante las cosas, ya que ahora soy capaz de visualizar un poco mejor las posibles causas de mis errores al crear una tarea, aunque haya veces que tenga que recurrir a vuestra experiencia.
Responder Con Cita
  #12  
Viejo 08/12/16, 13:02:23
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Puedes simplificar de esta forma:
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 ]
y de esta forma puedes suprimir la acción A9, que deja de ser necesaria. Más simple y más eficiente.
Aplica la misma estrategia para las acciones 10 (minutos) y 12 (segundos), y de ese modo puedes suprimir las acciones 11 y 13.
Mmm gracias por la idea, pero mi cometido no era el que creo estas pensando.
Dicha tarea la uso para volcar (y escribir) la hora en un archivo TXT, pero como quería que Tasker me escribiese la hora correctamente por eso puse las demás acciones. Por defecto he visto que me lo pone como 0:01:00, pero yo prefiero que se vea: 00:01:00, por eso añadí esas tres tareas extras de establecer la variable a '00' cuando éstas coincidan con lo dicho.


 Cita: Originalmente Escrito por Caravantes Ver Mensaje
No exageres. Te hubiera bastado con hacer un par de intentos con el buscador del foro. Te diré algo: Leromaro no se sabe las URLs de memoria. Él las ha puesto después de haber usado el buscador del foro. Y no te las ha dado como reproche ni nada parecido, solo te ha aportado pistas para que puedas tener mejor información sobre el tema. No hay ningún motivo para que le respondas como si te hubiera dicho algo negativo.

Igualmente, creo que Danko te está dando consejos excelentes. Muchos de nosotros pensamos que está bien ayudar a un compañero para resolver un problema puntual, pero también es válido dar a otro las indicaciones para que aprenda a resolver muchos problemas por sí mismo. Darte un pez está bien pero enseñarte a pescar es aún mejor. Y también parece que te estás tomando a mal las sugerencias de Danko, sin motivo. Es mi opinión.
No era en absoluto mi intención la de hacer un comentario/crítica negativos hacia él, simplemente comenté la forma de trabajo que me parece correcta.
Perdón si mi comentario tuvo un tono un tanto descarado, pero repito que no fue mi intención. Siempre agradezco vuestras réplicas y ayudas.

Y bueno, como ya he logrado solucionar el problema marco el tema como solucionado.

--> La tarea esta en el proyecto 'Grabador de Llamadas', encargada de volcar los registros al TXT de hora de la llamada, y duración de la misma.
Responder Con Cita
  #13  
Viejo 08/12/16, 14:01:29
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Mmm gracias por la idea, pero mi cometido no era el que creo estas pensando.
Dicha tarea la uso para volcar (y escribir) la hora en un archivo TXT, pero como quería que Tasker me escribiese la hora correctamente por eso puse las demás acciones. Por defecto he visto que me lo pone como 0:01:00, pero yo prefiero que se vea: 00:01:00, por eso añadí esas tres tareas extras de establecer la variable a '00' cuando éstas coincidan con lo dicho.
Desde el primer momento entendí cuál era tu intención: dos dígitos para la hora, dos dígitos para los minutos, dos dítigos para los segundos. Y creo que ese objetivo se puede conseguir de forma más simple, con menos acciones, como ya te dije, y te repito a continuación:

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 & %hhh > 0 ]
A9: Establecer variable [ Nombre:%hhh A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh = 0 ]
Puedes simplificar de esta forma:
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 ]
y de esta forma puedes suprimir la acción A9, que deja de ser necesaria. Más simple y más eficiente.
Aplica la misma estrategia para las acciones 10 (minutos) y 12 (segundos), y de ese modo puedes suprimir las acciones 11 y 13.
Pero a la larga el resultado va a ser el mismo, así que tal vez prefieras dejarlo como lo pensaste inicialmente, porque quizá sea más comprensible para ti.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
  #14  
Viejo 08/12/16, 14:46:45
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Vaya, ahora capto lo que dices. No lo miré con toda la atención. Thanks!
Responder Con Cita
  #15  
Viejo 08/12/16, 17:34:34
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Simplemente quise dejar claro que para mi la forma de procesar una tarea el método de ensayo-error me parece bastante bueno.
Con el uso de alertas sigue siendo ensayo-error, solo que ahora tienes una idea de por donde está el error para poder hacer un cambio que tenga una buena oportunidad de dar resultado. Si no, ¿que vas a hacer, cambios al azar hasta que funcione?
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 20:29:18 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /