PDA

Ver la Versión Completa : [ SOLUCIONADO ] Envío de snapshot [camara ip externa] por email


dj_janker
16/10/15, 21:05:44
Hola,
estoy intentando crear un perfil que me envíe una foto cuando llamen a mi videoportero ip.
La cámara del videoportero utiliza la siguiente url para la captura de snapshots:
ip:puerto/snapshot.cgi?user=#user#pwd=#pwd#

Para ello he creado un perfil en que utiliza como evento la app android que se activa cuando pulsan el portero para iniciar la comunicación video/audio.
Como tarea he realizado un http get que utiliza la url de captura de video indicando como archivo de salida la variable global %FOTO.
Para el envío de email utilizo la app sendsilentmail, indicando que como adjunto me envíe el archivo %FOTO.jpeg

Este es el perfil:
Perfil: SNAPSHOT VIDEOPORTERO (23)
Aplicación: WIFI BELL
Entrada: Anon (24)
A1: HTTP Get [ Servidor:Puerto:http://ip:port (http://192.168.1.17:81) Ruta:/snapshot.cgi?user=user&pwd=pwd Atributos: Cookies: User Agent: Cuenta atrás:10 Tipo Mime:image/jpeg Archivo de salida:%FOTO Confiar en cualquier Certificado:Apagado ]
A2: SendSilentMail [ Configuración:[email protected] (n%[email protected]) / [email protected] ([email protected]) / Paquete:com.stedo.sendsilentmail Nombre:SendSilentMail Cuenta atrás (segundos):0 ]
El caso es que funcionar funciona, pero solo me envia la misma foto....., no se actualiza cada vez que llaman al portero.
Alguna idea?
P.D.: adicionalmente me gustaría poder crear más de una captura, por ejemplo 5, una cada 0,5seg. cada vez que se produce una llamada, por si la primera sale movida....

dj_janker
18/10/15, 10:50:52
nadie me puedo decir como adaptar la variable %FOTO para que tome la que se haya tomado en la última fecha y/o hora?

mlesir
18/10/15, 18:30:31
Has comprobado que despues te vuelve a hacer la tarea de entrada otra vez no? A ver si el problema es que solo lo hace una vez.

Enviado desde mi T1-701u mediante Tapatalk

dj_janker
18/10/15, 19:33:40
Has comprobado que despues te vuelve a hacer la tarea de entrada otra vez no? A ver si el problema es que solo lo hace una vez.

Enviado desde mi T1-701u mediante Tapatalk

Hola mlesir, no sé como comprobar eso. Se que cada vez que se activa el videoportero me llega un mail, el problema es que es la primera foto que tomó.....
En realidad solo el perfil solo tiene tarea de entrada. De manera que cuando a app Wifibell esté activa, se ejecute la tarea de entrada.
Crees que debería poner una de salida para que se pueda reiniciar el ciclo? (por ejemplo un flash....)

WillyWeb
18/10/15, 20:43:17
Me parece que te estás liando un poco. :oh:

Estás usando el contenido de la variable global %FOTO como nombre para guardar la imagen que consigues con una acción HTTPGet. Si lees el manual de usuario de Tasker verás que esa variable guarda el nombre del archivo de la última foto tomada con la cámara del móvil. ¿Qué te hace pensar que esa variable debería guardar el nombre de archivo de la foto que toma tu VideoPortero IP?

Si quieres que el nombre de archivo de la foto tenga información del momento en que ha sido tomada lo tendrás que crear tú mismo usando las variables de Tasker para fecha y hora cada vez que recibas una nueva imagen. No es complicado. Luego usa ese nombre en lugar de %FOTO y tu problema debería desaparecer.

dj_janker
19/10/15, 07:13:44
Me parece que te estás liando un poco. :oh:

Estás usando el contenido de la variable global %FOTO como nombre para guardar la imagen que consigues con una acción HTTPGet. Si lees el manual de usuario de Tasker verás que esa variable guarda el nombre del archivo de la última foto tomada con la cámara del móvil. ¿Qué te hace pensar que esa variable debería guardar el nombre de archivo de la foto que toma tu VideoPortero IP?

Si quieres que el nombre de archivo de la foto tenga información del momento en que ha sido tomada lo tendrás que crear tú mismo usando las variables de Tasker para fecha y hora cada vez que recibas una nueva imagen. No es complicado. Luego usa ese nombre en lugar de %FOTO y tu problema debería desaparecer.

jejej, ya me parecía muy fácil que usando una variable global se pudiera hacer...
Voy a investigar, pero no tengo ni idea de como hacer que Tasker detecte que una nueva captura se ha creado.

WillyWeb
19/10/15, 10:45:55
Ya te he dicho que no debería ser complicado :oh:

Si me aclaras la secuencia lo mismo te puedo ayudar...

Llaman a la puerta y parece que tu VideoPortero IP te manda una notificación desde la que inicias la aplicación "WIFI BELL". Has programado Tasker para que, cuando se inicia esa aplicación, haga un HTTPGet que recupere la última foto del VideoPortero. Perdona, pero no entiendo para qué envías un email ¿...?

¿Es así o me he perdido completamente? :loco:

dj_janker
19/10/15, 13:33:01
Ya te he dicho que no debería ser complicado :oh:

Si me aclaras la secuencia lo mismo te puedo ayudar...

Llaman a la puerta y parece que tu VideoPortero IP te manda una notificación desde la que inicias la aplicación "WIFI BELL". Has programado Tasker para que, cuando se inicia esa aplicación, haga un HTTPGet que recupere la última foto del VideoPortero. Perdona, pero no entiendo para qué envías un email ¿...?

¿Es así o me he perdido completamente? :loco:

No, la secuencia es:
Llaman al videoportero y se genera una llamada (como si fuera de teléfono) en la app WifiBell, instalada en una tablet mural que uso como "monitor domótico".
Ahí tienes la opción de descolgar e interactuar, video y audio, con la persona que ha llamado al videoportero.
Yo lo que necesito es que cuando no esté en casa, cuando llamen al videoportero me lleguen unas capturas de quién ha llamado al mismo.
Para ello he decidido crear un perfil en Tasker, de tipo Aplicación, de manera que cuando la aplicación Wifibell se activa, porque han llamado al videoporterno, me hace un http get que guarda la foto que se genera en ese http en la variable %FOTO, la cual, mediante sendsilentmail me envío a mi correo.

El problema es que esa foto no se actualiza en la variable %FOTO.... :cry:

Juanmiwow
19/10/15, 14:39:30
Y si lo almacenas en una variable que crees tú en lugar de en la variable %FOTO?

A1: HTTP Get [ Servidor:Puerto:http://ip:port Ruta:/snapshot.cgi?user=user&pwd=pwd Atributos: Cookies: User Agent: Cuenta atrás:10 Tipo Mime:image/jpeg Archivo de salida:%FotoPortero Confiar en cualquier Certificado:Apagado ]

Por ejemplo.

WillyWeb
19/10/15, 14:57:04
Y si lo almacenas en una variable que crees tú en lugar de en la variable %FOTO?

Eso es lo que yo le he dicho antes :ok:

Ahora que veo la secuencia está claro que usar la variable %FOTO es incorrecto ya que la foto no la hace la cámara de la tablet, la hace el VideoPortero y la tablet la pilla con ese HTTPGet.

Cada vez que se active la aplicación WifiBell, y por lo tanto se dispare tu perfil, tendrías que generar en la tarea de entrada asociada un nombre de archivo único.

Puedes usar las variables de fecha y hora de Tasker para "componer" algo del estilo 20151019_145045.jpg

O puedes usar una variable global como si fuese un contador que incrementes en uno cada vez que corra la tarea.

O usar siempre el mismo nombre de archivo "captura.jpg", enviar el correo y luego borrar el archivo.

Lo que no deberías hacer es usar %FOTO como nombre de archivo. No te has dado cuenta, pero estás machacando la última foto que has hecho con la tablet. Y ten cuidado también con la ruta en la que descargar esa foto. Dependiendo de la versión de Android de esa tablet Tasker no podrá escribir en la tarjeta SD externa, si es que la tienes.

dj_janker
19/10/15, 15:32:45
Ok, entiendo.
Voy a probar vuestras propuestas y os cuento.
La verdad es que me tiene loco...., jeje

WillyWeb
19/10/15, 16:20:33
Ahora que lo pienso :rolleyes:

Usar la variable %FOTO no debería ser la causa de los que te está pasando. Sencillamente machacarás la última foto tomada por la tablet cada vez que pilles una foto desde tu VideoPortero con el HTTPGet, pero eso no debería ocasionar que consigas siempre la misma foto :oh:

O se produce un error al descargar la segunda foto y no se machaca la primera, o la URL que pones en el HTTPGet recibe siempre el mismo resultado :loco:

¿Has comprobado qué la imagen es diferente cada vez?

Supongo que el VideoPortero genera una imagen cada vez que pulsan el timbre, posiblemente con una pausa entre capturas, y mientras que se genere una nueva imagen cada vez que la descargues recibirás la misma, la última.

dj_janker
19/10/15, 18:38:56
Ahora que lo pienso :rolleyes:

Usar la variable %FOTO no debería ser la causa de los que te está pasando. Sencillamente machacarás la última foto tomada por la tablet cada vez que pilles una foto desde tu VideoPortero con el HTTPGet, pero eso no debería ocasionar que consigas siempre la misma foto :oh:

O se produce un error al descargar la segunda foto y no se machaca la primera, o la URL que pones en el HTTPGet recibe siempre el mismo resultado :loco:

¿Has comprobado qué la imagen es diferente cada vez?

Supongo que el VideoPortero genera una imagen cada vez que pulsan el timbre, posiblemente con una pausa entre capturas, y mientras que se genere una nueva imagen cada vez que la descargues recibirás la misma, la última.

Si yo escribo la url en un navegador cada vez que ejecuto (refresco) la url realiza una captura de un segundo diferente.
Por eso pienso que la tarea de Tasker está bien, ya que ha capturado en la variable %FOTO una captura de la cámara ip, no de ninguna de las cámaras de la propia tablet....
Yo he pensado lo mismo que tu, que por lo que sea, la tarea no refresca esa url...
Lo mismo digo una tontería: pero como se podría hacer para que el perfil completo se desactivara y volviera a activar con cada inicio de la aplicación WifiBell?
Quizás así se obligue a refrescar la url del http get...

joseguiri
19/10/15, 19:12:29
Que es eso?

WillyWeb
19/10/15, 19:23:09
En el manual de usuario de Tasker lo pone claramente, la variable %FOTO guarda el nombre de archivo de la última foto realizada por el dispositivo. En tu caso la foto la realiza el VideoPortero, no la tablet, así que esa variable NUNCA guardará el nombre de archivo de la captura.

Tendrás que generar un nombre de archivo para esa captura por cualquiera de los métodos que te he dicho antes y probar la tarea. El de la variable global como si fuese un contador es el más sencillo de hacer para una prueba rápida. Sólo requiere la acción de Tasker "Varaible>Sumar a variable".

Perfil: SNAPSHOT VIDEOPORTERO
Aplicación: WIFI BELL
Entrada: Anon
A1: Sumar 1 a variable %FotosVP
A2: Establecer variable %archivo = /SDcard/%FotosVP.jpg
A3: HTTP Get [ Servidor:<URL de la captura> Archivo de salida:%archivo ]
A4: SendSilentMail [Adjuntando %archivo]

Recuerda que para que una variable sea global tiene que tener alguna letra de su nombre en mayúsculas. En el ejemplo he usado %FotoVP pero puedes poner lo que quieras.

Ojo también a la ruta que he puesto para componer el nombre %archivo

Lo mejor para probar es apuntar a la memoria interna del móvil. Recuerda que en algunos dispositivos (dependediendo de la versión de Android) Tasker no puede escribir en la SDcard externa.

dj_janker
19/10/15, 19:28:09
En el manual de usuario de Tasker lo pone claramente, la variable %FOTO guarda el nombre de archivo de la última foto realizada por el dispositivo. En tu caso la foto la realiza el VideoPortero, no la tablet, así que esa variable NUNCA guardará el nombre de archivo de la captura.

Tendrás que generar un nombre de archivo para esa captura por cualquiera de los métodos que te he dicho antes y probar la tarea. El de la variable global como si fuese un contador es el más sencillo de hacer para una prueba rápida. Sólo requiere la acción de Tasker "Varaible>Sumar a variable".

Perfil: SNAPSHOT VIDEOPORTERO
Aplicación: WIFI BELL
Entrada: Anon
A1: Sumar 1 a variable %FotosVP
A2: Establecer variable %archivo = /SDcard/%FotosVP.jpg
A3: HTTP Get [ Servidor:<URL de la captura> Archivo de salida:%archivo ]
A4: SendSilentMail [Adjuntando %archivo]Recuerda que para que una variable sea global tiene que tener alguna letra de su nombre en mayúsculas. En el ejemplo he usado %FotoVP pero puedes poner lo que quieras.

Ojo también a la ruta que he puesto para componer el nombre %archivo

Lo mejor para probar es apuntar a la memoria interna del móvil. Recuerda que en algunos dispositivos (dependediendo de la versión de Android) Tasker no puede escribir en la SDcard externa.

Muchas gracias,
ahora en un rato pruebo.
No te preocupes, creo que esa tablet no tiene tarjeta instalada :risitas:

Ahora te cuento resultados

dj_janker
20/10/15, 14:47:26
Al final el que funciona es mi primer perfil. El fallo estaba en que entre prueba y prueba, se había creado en la misma tarjeta una variable %FOTO y una variable %FOTO.jpeg, y la acción de sendsilentmail tomaba una y la acción del http get daba como salida la otra, por lo que, evidentemente no se actualizaba.....
Ahora he borrado ambas físicamente de donde se almacenaban, y he indicado la misma variable %FOTO.jpeg en todos sitios, y funciona genial.
Cada vez que llaman al portero se toma una captura y se envía al mail, actualizándose correctamente.
Disculpad el coñazo que os he dado, y muchísimas gracias por vuestra inestimable ayuda.

Un saludo.

WillyWeb
20/10/15, 21:23:14
... la acción de sendsilentmail tomaba una y la acción del http get daba como salida la otra, por lo que, evidentemente no se actualizaba ...

Anda que ya te vale :sisi1:

Son cosas que pasan y por más que miras no las ves. Si hubieras puesto la descripción de tu proyecto la primera vez, tal y como recomienda la guía para participar en el foro, seguro que alguien se abría dado cuenta y habríamos dado con la solución en un momento :loco:

De todo se aprende. Toma nota para la próxima. :silbando:

:cucu: