PDA

Ver la Versión Completa : [ SOLUCIONADO ] Consultar si hay un evento en el calendario en X tiempo.


Juanmiwow
24/03/14, 20:08:17
¡SOLUCIONADO!

Buenas a todos amigos!

Vengo con una nueva consulta. Os explico mi caso. Llevo una racha con bastantes cosas encima y últimamente tiendo a distraerme bastante. Soy estudiante de una carrera de ciencias y tengo prácticas de laboratorio donde tengo que llevar cierto material, y más de una vez se me ha olvidado llevarlo y me he visto en algún que otro problema.

Quería saber si conocéis alguna forma de que tasker compruebe el calendario para ver si tengo algo y me ponga una notificación. Si pones para que te avise al iniciar el evento no hay ningún problema, pero yo quiero que me avise con antelación.

Por ejemplo:

Contexto: todos los días a las 11 (que estoy en casa)

Tarea: comprobar si hay en el calendario un evento X para ese día (esta es mi duda) y si lo tengo, poner una notificación. Aquí podemos jugar con alguna variable y demás

O

Contexto: evento en X horas (mi duda)

Tarea: notificación. Aquí viene directo.

No sé si es posible consultando a través de un enlace a mi calendario o cómo, pero contexto no veo ninguno.

Cambiaría el calendario para meter una notificación, pero ya lo tengo metido y es un rollo cambiarlo de nuevo, además me da menos juego a la hora de poner acciones (por ejemplo, que si no hago caso a la notificación a los diez minutos me suene Justin Bieber, que seguro que me levanto a apagarlo), y si lo cambio no usamos tasker ni le damos al coco que es lo bonito de esto.

Bien, ¿alguna idea?

Gracias a todos!


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

SOLUCIÓN EN EL MENSAJE 11 DE ESTE TEMA POR MAID (http://www.htcmania.com/showpost.php?p=13035371&postcount=11)

mlesir
24/03/14, 21:33:16
Has mirado a ver el contexto: Estado/Aplicacion/Entrada en calendario? No se si valdrá.

Si no yo tiraría por:

1 -Usar intents o
2 - ver si se puede acceder a la base de sql3 de la app de calendario que uses y coger la fecha y hora del evento. Si es que la app usa una base de sql3 claro.

Juanmiwow
24/03/14, 22:28:14
Has mirado a ver el contexto: Estado/Aplicacion/Entrada en calendario? No se si valdrá.

Si no yo tiraría por:

1 -Usar intents o
2 - ver si se puede acceder a la base de sql3 de la app de calendario que uses y coger la fecha y hora del evento. Si es que la app usa una base de sql3 claro.

El contexto de Entrada en el calendario vale pero se usa para una tarea que se dispare al iniciar el evento. Tengo una de modo silencio que me quita el sonido al empezar mis clases y lo activa al acabar, ahí sí que sirve ese tipo de contexto, pero no hay opción para "mira si hay algo en X horas".

Sobre intents o lo de la base de datos... Me pillas con el culo al aire. La verdad que no tengo ni idea, intentaré mirar a ver si se puede algo.

Ahora en general:

He visto que en Tarea hay una opción en Misc/Prueba y hay varias opciones de calendario, pero la verdad que no entiendo exáctamente qué es lo que puedo hacer con eso. Aquí lo explican un poco pero tengo que ir digiriendo un poco el asunto a ver si saco algo en claro:

http://grokbase.com/t/gg/tasker/133bh4ksfb/check-calendar-for-appointment-a-specific-time

No obstante, sigo necesitando vuestra ayuda, a ver si se os ocurre algo más sencillo, conocéis un plugin o lo que sea.

Un saludo y gracias Mlesir

mlesir
24/03/14, 22:35:45
En el recopilatorio Maid tiene un artículo sobre la acción Prueba. Quizás en la sección otras cosas es donde esta.

tito_chua
24/03/14, 23:19:10
Se me ocurre que podrías consultar tu calendario de una forma distinta.... Comparte tu calendario contigo mismo... Me explico.
Exporta el calendario a csv o a icalendar y luego examina el resultado como si del contenido de una web se tratase... Quizas ahi tengas acceso a un listado con los eventos programados conforme necesitas...

Algo de información en
https://support.google.com/calendar/answer/37648?hl=es

Caravantes
24/03/14, 23:58:05
Exporta el calendario a csv o a icalendar y luego examina el resultado como si del contenido de una web se tratase

La idea es muy buena... pero no hace falta exportar nada. Es posible acceder a la información del calendario mediante una acción HTTP-Get que consulta el servidor de Google. Lo que obtienes es un XML/RSS que pasa a una variable, y luego la tarea puede analizar el contenido de la variable para comprobar los próximos eventos (hora, nombre del evento, etc), y finalmente tomar la decisión que corresponda. En nuestro tutorial de cabecera (Lección 4: El procesamiento de datos en variables), está explicado un "EJEMPLO 3" con el método de acceso al calendario y algunos detalles sobre la forma de manejar la información obtenida.
http://www.htcmania.com/showthread.php?t=627786
Creo que hay algún error en ese ejemplo escrito por el maestro Andreas, así que en ese mismo hilo he añadido un segundo post con aclaraciones y correcciones que considero necesarias para acceder al calendario.

Juanmiwow
25/03/14, 00:22:52
Se me ocurre que podrías consultar tu calendario de una forma distinta.... Comparte tu calendario contigo mismo... Me explico.
Exporta el calendario a csv o a icalendar y luego examina el resultado como si del contenido de una web se tratase... Quizas ahi tengas acceso a un listado con los eventos programados conforme necesitas...

Algo de información en
https://support.google.com/calendar/answer/37648?hl=es

La idea es muy buena... pero no hace falta exportar nada. Es posible acceder a la información del calendario mediante una acción HTTP-Get que consulta el servidor de Google. Lo que obtienes es un XML/RSS que pasa a una variable, y luego la tarea puede analizar el contenido de la variable para comprobar los próximos eventos (hora, nombre del evento, etc), y finalmente tomar la decisión que corresponda. En nuestro tutorial de cabecera (Lección 4: El procesamiento de datos en variables), está explicado un "EJEMPLO 3" con el método de acceso al calendario y algunos detalles sobre la forma de manejar la información obtenida.
http://www.htcmania.com/showthread.php?t=627786
Creo que hay algún error en ese ejemplo escrito por el maestro Andreas, así que en ese mismo hilo he añadido un segundo post con aclaraciones y correcciones que considero necesarias para acceder al calendario.

Gracias Tito_chua por la idea y gracias Caravantes por pulir un poco más esa idea y hacerla más útil, ya que sería un poco rollete tener que exportar el calendario si hago alguna modificación y demás.

Por lo que veo, es droga dura el tutorial, y es para desgranar poco a poco, pero seguro que con vuestra ayuda, con el tutorial de Andreas traducido por vosotros, y con el ejemplo 3 que me indicas, podré hacerlo.

Os voy comentando! Gracias de nuevo!

En el recopilatorio Maid tiene un artículo sobre la acción Prueba. Quizás en la sección otras cosas es donde esta.
Me lo apunto por si fracaso en el otro intento. Muchas gracias!

z3us
25/03/14, 00:23:11
Tampoco hace falta complicarse con el tasker. Cuando creas un evento en el calendario (desde el ordenador o en el móvil) puedes programar que te salte una notificación x minutos u horas antes. Luego si quieres, puedes interceptar la notificación con tasker.
Edito: no había leído lo que pusiste al final del primer post

Juanmiwow
25/03/14, 00:37:59
Tampoco hace falta complicarse con el tasker. Cuando creas un evento en el calendario (desde el ordenador o en el móvil) puedes programar que te salte una notificación x minutos u horas antes. Luego si quieres, puedes interceptar la notificación con tasker.

Sí, eso lo sé, el problema está en que ya tengo metido el calendario sin notificación hasta julio casi, con lo que me salen unas 15 semanas a 9h por semana, y contando que se me guarda cada hora como evento separado... 135 eventos a cambiar "a pelo" :risitas: :risitas: :risitas:

Si me pongo a cambiarlo a mano, o me vuelvo loco a la mitad, o me ponen gafas, o me dan la nacionalidad china :grin:

Para la próxima quizás lo haga a lo fácil, pero para ahora prefiero complicarme en esto y ampliar conocimientos, a hacer tareas repetitivas que no me aporten demasiado.

Gracias por pasarte por el tema!

tito_chua
25/03/14, 07:56:30
Creo que es conocido por todos, pero por si es el caso... , para eventos muy repetitivos el calendario de Google permite crear series de eventos. De esta forma sólo tendrías que modificar una entrada y las demás se autocorregirian...

maid450
25/03/14, 09:00:16
Tienes varias opciones, aunque ninguna es totalmente sencilla.
La forma con Tasker puro es usar la acción "prueba" (http://www.htcmania.com/showpost.php?p=9317148&postcount=5) como comentaba mlesir. con ella puedes comprobar los eventos que hay en un instante concreto, tendrías que ejecutar una tarea de forma periodica que a su vez en un bucle vaya comprobando a lo largo del día los eventos.
La que para mi pienso que es la mejor forma: si usas el calendario de google los eventos se guardan en una base de datos, y con la consulta correcta puedes sacar los datos que necesitas.
Por ejemplo, esta consulta la saqué hace un tiempo del foro oficial (https://groups.google.com/d/msg/tasker/BecVXt-Yuks/dzh8DoONKG8J) a la espera de usarla algún día:

sqlite3 -list /data/data/com.android.providers.calendar/databases/calendar.db "SELECT Instances.begin, Events.title FROM Instances JOIN Events ON Instances.event_id = Events._id WHERE begin > %TIMEMS ORDER BY Instances.begin ASC LIMIT 5;" | awk -F "|" '{printf strftime("%a %H:%M",$1/1000)}{print " -",$2}'

si la usas en una acción "ejecutar consola" marcando "usar root" te devolverá en la salida algo así:

Tue 13:00 - Call Someone
Tue 19:00 - Spare key
Wed 08:00 - Someone on holiday
Thu 17:00 - Rubbish
Fri 08:30 - Parking permit

con tus eventos.
Por supuesto esta consulta se puede adaptar para buscar lo que te interese y devolver el resultado de otra forma

Juanmiwow
25/03/14, 10:09:05
Creo que es conocido por todos, pero por si es el caso... , para eventos muy repetitivos el calendario de Google permite crear series de eventos. De esta forma sólo tendrías que modificar una entrada y las demás se autocorregirian...

Sí, fue mi primera idea, pero el calendario me lo descargo tal cual desde la página de la universidad y lo cargo en Google Calendar directamente, y no pone nada como serie, sino como evento suelto. Gracias!

Tienes varias opciones, aunque ninguna es totalmente sencilla.
La forma con Tasker puro es usar la acción "prueba" (http://www.htcmania.com/showpost.php?p=9317148&postcount=5) como comentaba mlesir. con ella puedes comprobar los eventos que hay en un instante concreto, tendrías que ejecutar una tarea de forma periodica que a su vez en un bucle vaya comprobando a lo largo del día los eventos.
La que para mi pienso que es la mejor forma: si usas el calendario de google los eventos se guardan en una base de datos, y con la consulta correcta puedes sacar los datos que necesitas.
Por ejemplo, esta consulta la saqué hace un tiempo del foro oficial (https://groups.google.com/d/msg/tasker/BecVXt-Yuks/dzh8DoONKG8J) a la espera de usarla algún día:

sqlite3 -list /data/data/com.android.providers.calendar/databases/calendar.db "SELECT Instances.begin, Events.title FROM Instances JOIN Events ON Instances.event_id = Events._id WHERE begin > %TIMEMS ORDER BY Instances.begin ASC LIMIT 5;" | awk -F "|" '{printf strftime("%a %H:%M",$1/1000)}{print " -",$2}'

si la usas en una acción "ejecutar consola" marcando "usar root" te devolverá en la salida algo así:

Tue 13:00 - Call Someone
Tue 19:00 - Spare key
Wed 08:00 - Someone on holiday
Thu 17:00 - Rubbish
Fri 08:30 - Parking permit

con tus eventos.
Por supuesto esta consulta se puede adaptar para buscar lo que te interese y devolver el resultado de otra forma

Funciona!! :platano:

Lo que he hecho es copiar el código que me has puesto, almacenarlo como salida en una variable que le he puesto %Evprox (Evento Próximo) y la he puesto a mostrar en un flash, y efectivamente me aparecen mis tareas tal y como me has dicho.

Después he metido un IF para que compruebe si tengo tarea, y que compruebe si %Evprox coincide con "*Prácticas*" ( con los * para que coja las distintas prácticas que tengo) y listo!

Como contexto pondré que lo haga para las 12 todos los días, que estoy en casa, o para primera hora de la mañana y que me ponga una notificación persistente que se borre en 1h.

Me alegra haber preguntado, no sólo por haber resuelto mi duda, sino porque creo que esto puede abrir posibilidades interesantes. Muchísimas gracias maid!!!!


Marco el tema como solucionado, muchas gracias a todos. La verdad que es un gusto de foro para cualquier aficionado de Tasker. :ok:

tito_chua
25/03/14, 11:29:15
Además de programarlo para que sea a las 12, puedes hacer que además compruebe que estas geoposicionado en casa... Y asi si un dia cambias la rurina no interfiere...

alnaufra
14/09/14, 20:12:09
Buenas, estoy intentando hacer algo parecido al compañero, pero al ejecutar el comando me da error, lo he almacenado en una variable y dice " sh:<stdin>[4]: no closing quote" y el resultado me da 1.
Si alguien pudiese ayudarme.
Gracias de antemano.

Diculpad, ya esta solucionado, erro de despiste.

leromaro
14/09/14, 23:58:21
Hola: estaba intentando realizar la tarea, sin conocer mucho del tema, copio el comando puesto por maid450 y no me salía nada, cuando me doy cuenta que en la tarea de ejecutar consola hay un item que dice "store errors in", coloque una variable %AAA y luego utilice una notificación que me dijera el valor de la variable %AAA y decía no se encuentra sqlite3,entonces me doy cuenta que no tengo sqlite3 instalado y buscando y buscando por todos lados no pude instalar sqlite3 para mi versión de android 2.3.6, hasta que llegué por intermedio del "Recopilatorio e información básica para usuarios de la aplicación Tasker" a un post de mlesir que leyéndolo todo y al llegar al final están los enlaces y la forma de instalarlo.
http://www.htcmania.com/showthread.php?t=775082
Quiero ponerlo, porque como siempre, uno va a aprendiendo un poco de todos, va leyendo los distintos hilos y siempre va llegando a lugares que no había leido y termina aprendiendo cosas que van mejorando los perfiles (que al principio eran copiados sin entender mucho) y que de a poco van vinculándose y complejizandose con ideas propias.
Tal vez a alguién le pasa lo mismo que yo y está por abandonar la tarea y aquí encuentra la solución