Archivo de la etiqueta: raspberry

Cliente de Bittorrent para el Raspberry Pi

Y bueno, mi Raspberry Pi pasa todo el día conectado monitoreando la casa, y como durante el día no hay nadie, la conexión de internet pasa completamente desocupada….. algo realmente malo.

Para aprovechar un poco más nuestra conexión perezosa, instalé Transmission, que es un cliente de Bittorrent que corre como un demonio en Linux; dado que el Raspberry Pi consume prácticamente nada de energía al estar conectado, resulta bastante práctico para tenerlo descargando cosas durante el día.

Para instalar Transmission, debemos ejecutar los siguientes comandos desde el terminal de nuestro Pi:

sudo apt-get install transmission-daemon
sudo apt-get install transmission-common
sudo apt-get install transmission-cli

Si no hay ningún problema en la descarga se instalarán los paquetes necesarios, y arrancará el demonio de transmission. Antes de empezar a usarlo, debemos editar un par de detalles en su archivo de configuración. Para esto, detenemos el servicio con el siguiente comando:

sudo service transmission-daemon stop

A continuación editamos el archivo /etc/transmission-daemos/settings.json (sudo nano /etc/transmission-daemos/settings.json) y modificamos las siguientes líneas, con los datos que vayamos a usar según nuestro caso (para las rutas de archivo y las IPS, son las que tengo creadas en mi PI):

"download-dir": "/home/pi/transmission", 
"incomplete-dir": "/home/pi/transmission/incompleto",
"rpc-whitelist": "127.0.0.1,192.168.1.100",
"rpc-whitelist-enabled": false,

Además, para dar acceso via navegador, es necesario que modifiquemos las líneas del nombre de usuario y contraseña del mismo archivo:

"rpc-password": "su_contrasena",
"rpc-username": "su_usuario",

La contraseña acá la colocamos sin encriptar. El momento de reiniciar el demonio se encriptará automáticamente. Para reiniciar el servicio, basta con el comando:

sudo service transmission-daemon start

y Voilá! tenemos nuestro cliente de bittorrent conectado 24/7, que lo podemos monitorear desde nuestro navegador, con la IP de nuestro Raspberry, y el puerto 9091

torrent

Felices descargas 🙂

pd. Si desean acceso externo (por ejm. para colocar descargas desde la oficina) basta con abrir el puerto 9091 en su router, y en lo posible, darle un dominio virtual, como lo indiqué en el post de cómo configurar no-ip para el raspberry.

Video Vigilancia con el Raspberry Pi

Dado que mi pequeño Raspberry Pi se encontraba algo desatendido, decidí darle una prueba al paquete Motion, que es utilizado para la captura y detección de movimiento para ambientes Linux.

La instalación de Motion es bastante sencilla. Para esto, previamente debemos tener instalado Raspbian en nuestro Pi (es con lo que lo he venido probando desde hace algún tiempo), y bajo la consola de terminal, simplemente ejecutamos los siguientes comandos (asegurándonos de estar conectados al internet)

sudo apt-get update

sudo apt-get motion

El primer comando se encargará de actualizar todos los paquetes nuevos de nuestro Linux, y luego descargará el paquete Motion, directamente.

Para la captura de video, estoy usando la PS3 Eye Cam, que utilicé en la Plataforma Stewart presentada anteriormente. Esta cámara fué detectada por el Raspberry sin problema, y de lo que he leído por ahí, existe gran compatibilidad con distintas cámaras, así que la configuración de la misma sobre el Raspbian es algo trivial.

Una vez instalado  Motion, hay que proceder a configurarlo. Para esto, es necesario editar el archivo motion.conf ubicado en /etc/motion.

En este archivo, vamos a editar algunos parámetros que nos van a ayudar a cumplir nuestro objetivo, que será (al menos en mi caso) capturar una imágen cada minuto y almacenarla en Google Drive, y además, el momento que se detecte un movimiento, así mismo subir dicha imágen  a la nube, y enviar un email de aviso.

Lo primero que debemos configurar es el tamaño de la captura. Como el Raspberry Pi no es lo suficientemente potente para procesar imágenes de alta resolución, vamos a cambiar el tamaño de la imágen a 320×240, editando estas líneas en el archivo motion.conf

width 320
height 240

Otro parámetro con el que debemos jugar, es el threshold, que es el umbral de cambio de la imágen para que se pueda hacer una llamada a la detección de movimiento. El valor default es 1500, pero yo lo subí un poco, para evitar falsos disparos (sobre todo por la mascota nuestra, que siempre ronda la casa)

threshold 3000

Para nuestra aplicación, vamos a necesitar guardar una captura de imagen cada 60 segundos, esto lo logramos usando el parámetro snapshot_interval, que permite configurar el tiempo en segundos en el que se va a guardar una imágen de captura de video.

snapshot_interval 60

Ahora, a lo importante del asunto. Motion permite disparar comandos, dependiendo del evento que sea lanzado por la aplicación. Para nuestra aplicación, vamos a utilizar 2 eventos: on_picture_save  que se lanzará al guardar una imágen cada 60 segundos (configurados en el parámetro anterior), y on_motion_detected que nos lanzará el evento al detectarse movimiento en la cámara.

Previo a esto, vamos a necesitar 3 archivos adicionales, que debemos crear (o descargar) para poder finalizar nuestra aplicación.

El archivo uploader.py (creado por Jeremy Blythe), se encarga de conectarse con los servicios de google drive, y almacena las imágenes guardadas dentro de una carpeta de GDrive. Este archivo, necesita del archivo de configuración uploader.cfg, donde se incluirá todos los datos de conexión de la cuenta de gmail a usar.

El archvo envia_email.py es una modificación realizada por mi, para que únicamente se envíe un email a una dirección determinada, lo que usaremos cuando se haya detectado movimiento frente a la cámara

Con lo comentado anteriormente, deberemos editar los parámetros del archivo motion.conf, modificando las siguientes líneas (puede que los parámetros indicados a continuación estén comentados, así que será necesario quitar el # para que funcione correctamente)

on_picture_save /etc/motion/uploader.py /etc/motion/uploader.cfg %f

on_motion_detected /etc/motion/envia_email.py

el %f en el primer parámetro, se refiere al nombre del archivo grabado ese instante.

Con los archivos guardados correctamente, debemos darles los respectivos permisos de ejecución, así que debemos ejecutar el siguiente comando:

sudo chmod +x /etc/motion/*.py

y luego, podremos iniciar Motion ejecutando

sudo motion

De esta manera, se empezarán a cargar las imágenes en nuestro GDrive, y recibiremos notificaciones de detección de movimiento. Nada mal para un sistema de video seguridad por menos de $100.

Captura

Raspberry Pi! Hands On

Finalmente! El viernes, y luego de un mes de espera (realmente, más de 3 meses, desde que fué anunciada su fabricación), ha llegado a mis manos el Raspberry Pi, el pequeño microcomputador que ha dado muchisimo de que hablar en este último tiempo.

Por qué tanta novelería? Pues revisemos sus características del hardware

  • CPU ARM a 800Mhz
  • GPU Broadcom VideoCoreIV, OpenGL ES 2.0, decodificador 1080p H.264
  • 256MB de memoria RAM
  • 2 puertos USB
  • 1 puertoLAN 100Mbps
  • 1 salida de audio
  • 1 salida de video RCA
  • 1 salida de video HDMI
  • 26 pines de entrada/salida digital GPIO
  • Ranura SD para almacenamiento

En características como tal, no es nada revolucionario, y en procesamiento como tal, equivale más o menos a un computador con procesador Pentium III de 300Mhz, con una tarjeta de video “bastante poderosa” (se puede ejecutar juegos como Quake III Arena sin problema)

Lo que realmente hace notable al raspberry, es primero su precio. Éste tiene un costo de $35 dolares, y DHL, por costos de desaduanización y manejo, cargaron un adicional de $12, entregandonos un computador por $47…. nada mal eh? Además, soporta Linux como sistema operativo, lo que abre muchísimas posibilidades en cuanto al software que se puede ejecutar… teóricamente, toda aplicación de linux para PC, se podría recompilar  y ejecutar sobre el raspberry, tomando en cuenta obviamente las limitaciones de RAM y velocidad.

Como lo pienso usar? no se! jajaja, pero habrá que recordar un poco de Python, para empezar a programar aplicaciones, tomando en cuenta, que este bichito consume menos de 3W a plena potencia, y puede pasar encendido y conectado a la red todo el día sin aumentar la cuenta de energía eléctrica.  Inicialmente, la idea es conectarlo a mi TV, y armarlo como un Smart CRT-TV jejejeje. Mientras lo vaya probando, iré mostrando los avances.

Les dejo algunas fotos del juguete (les recomiendo verlas en full size), para que observen el diseño de la misma. Ojo con el close up del procesador. En realidad es un SoC (System on Chip) que contiene dentro del mismo dado de silicio, el CPU, el GPU, los puertos de Entrada y Salida, y sobre este, en torre, el chip de memoria ram. Realmente un trabajo memorable realizado por la gente de esta fundación.
R-PI

R-PI

R-PI

R-PI

R-PI

Raspberry Pi Smart CRT-TV