Ayuda Proyecto Raspberry PI

Hola, espero que alguien pueda echarme una mano y me de alguna idea, estoy haciendo un proyecto de fin de curso de una empresa de videovigilancia basada en raspberry con raspian. La idea es que la raspberry, a la que conecto una cámara, grabe vídeo cuando detecte movimiento, (hasta aquí bien, utilizo el motion), esas grabaciones las quiero subir a un servidor FTP propio de manera automática (solo he encontrado como hacerlo por scrips) y por ultimo, quiero que cuando el software detecte el movimiento, un servidor de correo en linux propio también, envié un correo automático avisando de que la cámara detecto algo (esto es para lo que necesito ayuda). Como para las pruebas solo tendré una raspberry, con que lo mande a un correo me sirve, pero la idea es que mande el correo a una dirección dependiendo de que cliente sea.
Si no lo entendisteis bien preguntar vuestras dudas y responderé lo mas rapido posible
Esto casi mejor en PC/General o PC/Software libre.

Yo he enviado mails con Python con un pequeño script, no es nada complicado:
https://docs.python.org/2/library/email-examples.html

Incluso puedes usar el SMTP de Gmail y olvidarte del servidor de correo propio:
http://jmduke.com/posts/how-to-send-ema ... and-gmail/

Puedes también hacer una foto con la cámara y mandarla como adjunto:
http://naelshiab.com/tutorial-send-email-python/
Muchas gracias, eso era lo que andaba buscando, no conocía python. Lo de la imagen como adjunto es muy probable que lo use.
Todo lo puedes hacer con motion:
Para el correo lo puedes programar en la seccion "External Commands" (sobre la linea 600 de motion.conf) puedes indicar la acción que quieras realizar frente a distintos eventos. Usa el comando mail o sendmail:
sendemail -f nombrecuenta@gmail.com -t cuentadestino@isp.com -s smtp.gmail.com:587 -u \
"Asunto" -m "Cuerpo del mensaje" -a archivoadjunto -v -xu nombrecuenta -xp clavecuenta -o tls=yes

http://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

Subirlo a un FTP es más sencillo, solo tienes que montar el FTP en Raspbian como cualquier unidad de red y luego pones esa ruta como ruta de grabado. Aquí lo tienes resuelto https://elblogdepablo.wordpress.com/2010/08/22/montar-una-unidad-por-fstab-y-ftp/

Sobre lo de mandarlo a según que cliente según que cámara detecte el movimiento lo puedes lograr configurando distintos "teatros" en motion. Fíjate en las ultimas lineas de motion.conf. Cada uno de los archivos indica las configuraciones que varían entre cada una de las cámaras. Si configuras alguna de ellas, lo que pongas en ellas pisará la configuración genérica, por lo que no deberías tener problemas para mandar lo de la cam1 al cliente1 y lo de la 2 al 2.
Esog Enaug escribió:Todo lo puedes hacer con motion:
Para el correo lo puedes programar en la seccion "External Commands" (sobre la linea 600 de motion.conf) puedes indicar la acción que quieras realizar frente a distintos eventos. Usa el comando mail o sendmail:
sendemail -f nombrecuenta@gmail.com -t cuentadestino@isp.com -s smtp.gmail.com:587 -u \
"Asunto" -m "Cuerpo del mensaje" -a archivoadjunto -v -xu nombrecuenta -xp clavecuenta -o tls=yes

http://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

Subirlo a un FTP es más sencillo, solo tienes que montar el FTP en Raspbian como cualquier unidad de red y luego pones esa ruta como ruta de grabado. Aquí lo tienes resuelto https://elblogdepablo.wordpress.com/2010/08/22/montar-una-unidad-por-fstab-y-ftp/

Sobre lo de mandarlo a según que cliente según que cámara detecte el movimiento lo puedes lograr configurando distintos "teatros" en motion. Fíjate en las ultimas lineas de motion.conf. Cada uno de los archivos indica las configuraciones que varían entre cada una de las cámaras. Si configuras alguna de ellas, lo que pongas en ellas pisará la configuración genérica, por lo que no deberías tener problemas para mandar lo de la cam1 al cliente1 y lo de la 2 al 2.

Es algo confuso explicarlo por escrito sin una imagen ni un diagrama de red pero lo voy a intentar.
La raspberry sera un cliente que se instalaría en un domicilio, un comercio... cada cliente posee una raspberry, pero se conectan a un servidor de mi propiedad (aunque estará virtualizado) que les daría soporte, por eso no puedo hacer la propia raspberry servidor de correo ni servidor FTP. La idea es que cuando un cliente quiera acceder a sus imagenes almacenadas (en el servidor FTP) se conecte a través de una pagina web que tengo en construcción al propio servidor FTP, separando cada cliente por carpetas para que al acceder como el cliente 1, no puedas ver, borrar etc los vídeos del cliente 2. Se que la otra forma es más fácil, y por eso no me sirve, es un proyecto de fin de curso y tengo que meter mas complicación como es de esperar, de todas formas lo de esa linea en el motion no tenia ni idea y seguramente le eche un vistazo.
ChaozZ escribió:...


Si es tu server el que va a enviar el mail (que no sería necesario si al configurar cada cliente le pones, además de las configuraciones propias de cada cliente para hacer las diferentes carpetas que dices le pones también el mail de destino) lo que puedes hacer es un script que detecte si hay o no archivos nuevos en una carpeta y que los mande por mail o mande un aviso.

Y para que cada uno vea sus archivos te puede valer owncloud, por ejemplo. O un acceso FTP para cada uno de los usuarios.

Suerte.
Esog Enaug escribió:...


Entonces por ejemplo si pongo el

sendemail -f noreply@midominio.com ... etc en cada una de las raspberry (teóricas, porque solo tengo 1) cambiando únicamente el correo del destino, el propio motion daría la orden al detectar movimiento de que enviara el correo, ¿no?
Y otra pregunta,¿en el nombre del archivo adjunto se reconoce los códigos de fecha y hora actuales?, ya que los nombres de los archivos que el motion captura los guardo de esta forma, y así tal vez podría mandar una foto de la imagen en el mensaje.
ChaozZ escribió:
Esog Enaug escribió:...


Entonces por ejemplo si pongo el

sendemail -f noreply@midominio.com ... etc en cada una de las raspberry (teóricas, porque solo tengo 1) cambiando únicamente el correo del destino, el propio motion daría la orden al detectar movimiento de que enviara el correo, ¿no?


Exactamente. Motion es capaz de detectar movimiento y, cuando lo hace, realiza dos acciones: grabar la secuencia, si lo has establecido así, y la acción complementaria (en este caso sendmail, que es otro programa)

ChaozZ escribió:Y otra pregunta,¿en el nombre del archivo adjunto se reconoce los códigos de fecha y hora actuales?, ya que los nombres de los archivos que el motion captura los guardo de esta forma, y así tal vez podría mandar una foto de la imagen en el mensaje.


¿Te refieres a los datos exif? No lo sé, pero es tan facil como hacer la prueba y mirarlo. De todas formas, en otra parte de motion.conf tienes las opciones para el nombrado de los archivos que se generen (videos y fotos) y puedes especificar que el nombre del archivo corresponda con la hora y fecha.
Tambien puedes configuar la cache de los videos, la duracion (antes y despues del evento), definir una mascara (tipo: "ignora el cuadrante superior derecho" o "fijate solo en la mitad inferior"), el tipo de archivo, etc.
Revisaté el archivo motion.conf, imprimelo, leelo y prueba. Motion es muy potente y versatil y puedes establecer un monton de parámetros interesantes.
Esog Enaug escribió:...


Gracias, instalé sendemail ,puse esa linea y funciona. Lo que no he conseguido es enviar el adjunto, pero seguiré probando cosas. No sabia que con el motion pudieras ejecutar comandos cuando detecta el movimiento, probare a que suba los archivos al servidor FTP a medida que los graba a ver si lo consigo, gracias de nuevo. [beer]
ChaozZ escribió:
Esog Enaug escribió:...


Gracias, instalé sendemail ,puse esa linea y funciona. Lo que no he conseguido es enviar el adjunto, pero seguiré probando cosas. No sabia que con el motion pudieras ejecutar comandos cuando detecta el movimiento, probare a que suba los archivos al servidor FTP a medida que los graba a ver si lo consigo, gracias de nuevo. [beer]


Si montas el FTP en una carpeta (https://elblogdepablo.wordpress.com/2010/08/22/montar-una-unidad-por-fstab-y-ftp/) solo le tienes que decir a motion que esa es la ruta de trabajo. O puedes dejar la ruta de trabajo en local y luego, en la misma linea del sendmail añades algo así como:

[codesendmail xxxxxxxxxxxx; mv /ruta/grabaciones/locales/grabación.jpg /ruta/FTP/grabacion.jpg[/code]

Así consigues que se mueva automáticamente (si usas mv, si usas cp lo copiará sin borrar). Tambien te puede dar problemas el montado automático con fstab, pues a veces se carga antes que el controlador de la red y tendrás que montarlo despues (puedes tambien ponerlo en la misma linea que el sendmail).
Tambien ten en cuenta que igual que pones un comando (sendmail) puedes especificar, en motion.conf, un script, por lo que puedes primero montar el FTP (si ya está montado no pasa nada), mover el archivo y luego mandar el mail. Juntando scripting y motion tienes todo el mundo en tu mano.
9 respuestas