sábado, 3 de marzo de 2012

TECNOLOGIA: ¿Qué hacen las casas cuando están solas?


Los filósofos solían preguntarse si el universo seguiría existiendo en el caso de que no hubiera nadie para verlo. Sin llegar a esos extremos, me he planteado a menudo cómo será un día de mi casa cuando está sola. Un interrogante más henchido de nostalgia que de verdadera incertidumbre; a fin de cuentas, las casas y los objetos no detectan (o no parecen detectar) si estamos allí. No obstante, he pasado cierto tiempo imaginando cómo es la vida de una casa cuando no hay nadie, o cuando sólo la habitan las mascotas.
Ya no hay mucho tiempo para dudas existenciales, ciertamente, y además existen las webcams.
Hace un tiempo un lector nos consultó cómo hacer para monitorear de forma remota y por Internet un negocio usando una cámara IP y software gratis. La respuesta apareció en el correo ( http://www.lanacion.com.ar/1447413-feedback ), la idea me quedó dando vueltas en la cabeza, me lo planteé como proyecto de fin de semana y, obviamente, me olvidé del asunto a los dos días.
Pero la semana última, haciendo un poco de orden, encontré una webcam debajo de una pila de papeles (no soy la persona más ordenada del mundo, ya lo sé), recordé el asunto, la conecté a la computadora que habita en el living, al lado del home theatre, y me propuse algo engañosamente simple: poder abrir un browser en cualquier lugar del mundo donde me encontrara, escribir una dirección Web y ver el living de mi casa. Directo y transparente.
Está sonando la alarma
Lo que no significa, claro está, que el procedimiento para llegar ilesos a ese puerto sea igual de plácido. Intentaré suavizar eso en los siguientes párrafos. Antes, no obstante, varias advertencias.
Primero, lo que nos proponemos hacer es riesgoso. Básicamente vamos a poner una cámara disponible para cualquiera que conozca la dirección en Internet. Desde luego, hemos de precintarla con una contraseña, pero debe ser una realmente robusta, no su fecha de nacimiento o el nombre de su equipo favorito.
Por si esto fuera poco, si la webcam está conectada a una computadora comprometida, es decir, con una cohorte de virus, entonces de poco servirá una contraseña robusta. Es crítico usar un equipo limpio. Si no está seguro al respecto, mejor deje este experimento para otra ocasión.
Segundo, la idea es enviar video por Internet. Eso significa hacerlo por un medio público. Como no vamos a implementar ninguna encriptación, evite poner la webcam delante de una caja fuerte, por citar un ejemplo.
Tercero, no use la cámara en un lugar no autorizado o para espiar personas. Recuerde que la privacidad es un derecho constitucional en la Argentina y que, aparte de eso, la intención de este experimento no es entrometerse en la vida de nadie.
Cuarto, hay formas mejores y más seguras de implementar esto, y también con software de costo cero. Típicamente, usando Apache ( http://www.apache.org/ ). Sin embargo, estas soluciones tienden a ser también más complejas. Nada impracticable, pero puede amedrentar al que no tiene experiencia en informática.
Lo pondré así: la solución que sigue es lo bastante sencilla para implementarla sin volverse loco y suficientemente segura para una instalación hogareña. Vamos a usar, además, una webcam, que hoy están en la mayoría de las computadoras personales (en las notebooks y netbooks, en los monitores, etcétera) y que son más económicas y menos vulnerables (en este contexto) que las cámaras IP.
Hechas las advertencias del caso, empezamos a rodar.
El asunto tiene dos etapas. Por un lado, instalar el hardware y el software para transmitir imágenes desde una webcam por Internet. Por otro, lograr que nuestra PC doméstica, con una dirección IP cambiante (dinámica, en la jerga), esté siempre accesible desde el exterior, como si tuviera una IP fija.
Para complicarnos un poco más la vida vamos también a suponer que esa computadora está detrás de un router Wi-Fi, algo que es cada vez más común y que, por eso, sería deshonesto obviar.
Sonría, estamos haciendo streaming
Lo primero, naturalmente, es contar con una máquina que tenga webcam. Si es USB, para poder desconectarla tirando del cable, mejor. No hay ningún pirata que pueda hacer andar una cámara USB que no está físicamente vinculada a la computadora.
Si va a usar una notebook o netbook deberá configurarla para que no entre en suspensión automáticamente.
Con la webcam instalada y funcionando, necesitaremos un software que se encargue de tomar las imágenes y, entre otras cosas, transmitirlas por Internet. Después de probar unos cuantos, elegí Yawcam ( http://www.yawcam.com/ ). Es gratis, muy completo y estable. Estuvo una semana sin pausa (hasta el cierre de esta edición) transmitiendo el streaming del living de mi casa sin fallar ni una vez. Tiene algunos errores y pequeñas desprolijidades, pero nada grave, hasta donde pude ver. Está en español, dicho sea de paso.
Para vincular el Yawcam con la webcam hay que ir a Configuración> Detectar webcam. Luego, elegirla en Configuración> Dispositivo> Change to device (sí, eso quedó sin traducir). Ahora las imágenes captadas por la webcam aparecerán en una ventana.
En la ventana de control del programa hay cinco botones, para activar sendas funciones: Archivo (enviar fotogramas a una carpeta de la máquina o de un equipo en red); FTP (subir fotogramas a un servidor FTP); HTTP (subir las imágenes estáticas a una página Web); Stream (es lo que estamos buscando, transmisión de video en vivo), y Movimiento (detección de movimiento).
Yawcam posee además un Cronograma (esto también quedó sin traducir y aparece como Scheduler), para activar las funciones a determinadas horas de ciertos días.
En Contraseña es donde crearemos (hágalo ahora) una cuenta para acceder al streaming.
La detección de movimiento tiene un umbral configurable, de tal modo que una persona dispare las alertas, pero no así, por ejemplo, el gato. Las posibles reacciones frente a la detección de movimiento son: enviar un mail; reproducir un sonido; guardar fotogramas a una carpeta o a un FTP, y ejecutar un programa. Más que bien para un software sin cargo.
OK, ahora deberíamos tener el Yawcam mostrando el ambiente que queremos monitorear por Internet y activada la función Stream, protegida por una contraseña robusta. Desde luego, el programa incluye un sencillo servidor para ofrecer esta transmisión por la Web. Hay un solo obstáculo, sin embargo. Bueno, dos, en realidad.
Obstáculo A: nuestra dirección IP, el número que identifica nuestra computadora y la vuelve accesible por Internet, cambia cada vez que nos volvemos a conectar. Con la banda ancha pueden pasar varios días antes de que ese IP cambie, pero más tarde o más temprano eso ocurrirá. En mi caso, una vez al día el sistema de alarma llama a la base y mi conexión con Internet se corta, se reconecta unos segundos después y mi IP cambia.
Obstáculo B: por algún motivo, todo está bien configurado, pero la transmisión sigue siendo inaccesible. Es que estamos marcando mal un número de puerto, como se verá pronto.
Hola, soy el IP de Juan
Elegí No-IP para sortear el primer obstáculo. El servicio es gratis para hasta cinco dominios no personalizados, y creo que eso alcanza y sobra para nuestro experimento. ¿Cómo funciona?
Bastante simple. Se llama redirección de URL: cada vez que alguien escribe una dirección Web que hemos registrado en No-IP, el servicio lo envía al número IP que actualmente está asignado a nuestra computadora. ¿Cómo sabe No-IP cuál es nuestra dirección IP a cada momento? Un programita instalado en esa PC se lo informa.
Un paso por paso aclarará el procedimiento:
1) Ir a No-IP ( http://www.no-ip.com/ ), hacer clic en Create Account y registrarse.
2) Ingresar como usuario registrado y hacer clic en la pestaña Hosts/Redirects y una vez allí hacer clic en el botón Add a host.
3) Las opciones son un poquitín abrumadoras, pero puede simplemente elegir la dirección que quiera para su sitio Web y dejar todo lo demás en los valores predeterminados. Luego veremos que una de las alternativas es más conveniente, pero por ahora con lo básico es suficiente.
4) Haga clic en Create Host.
5) Instale y ejecute el cliente de No-IP. Una vez instalado, su nombre será DUC, por DNS Update Client. Hay versiones para Windows, Mac y Linux. La de Windows se baja aquí: https://www.no-ip.com/downloads.php?page=win
6) Agregue al DUC el host que creó antes. Obviamente, debe dejar corriendo DUC para que actualice la relación entre su IP actual y la dirección Web que creó antes.
Puede probar si todo funciona intentando conectarse. Pero lo más probable es que obtenga resultados extravagantes.
Acabamos de chocar contra el segundo obstáculo.
A buen puerto
Los servicios de Internet (el mail, la Web, el chat y así) funcionan sobre una idea que es a la vez poco conocida y fundamental: los sockets de Internet, asociados a sus correspondientes números de puerto. Un socket es como un canal de comunicaciones, un carril que usa un cierto servicio para enviar y recibir información por la Red.
No entraré en este tema aquí hoy, pero el lector interesado puede empezar por este artículo de Wikipedia ( http://es.wikipedia.org/wiki/Socket_de_Internet ) y este breve texto en inglés y lista de puertos en IANA ( http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml )
Canónicamente, la Web usa el puerto 80; el correo electrónico, los puertos 110 y 25; FTP, el 21. Y así. En el caso de Yawcam, su servidor Web está configurado para hablar por el puerto 8081. Así que cuando usted intenta conectarse con la computadora que tiene la cámara, nadie le responde. ¿Por qué? Porque el navegador Web habla de forma predeterminada por el puerto 80, no por el 8081.
Una solución sencilla sería escribir la dirección Web seguida de dos puntos y el puerto, así:
midireccion:8081
Pero queda feo y queremos algo elegante. Por eso, ahora podemos aprovechar una de las funciones que ofrece No-IP. Si se fijó en las opciones de host (Host Type) habrá notado que hay una etiquetada Port 80 Redirect. ¿Le suena? Exacto. Se puede pedir a No-IP que envíe el tráfico directamente al puerto 8081 (o el que sea) de forma transparente. Es más, si pone un tilde en Mask URL (abajo en el mismo formulario), el visitante verá solamente la dirección Web, no los detalles como el IP y el puerto.
Hemos pues sorteado el segundo obstáculo y ahora, al escribir una dirección Web de fantasía, se abrirá la portada de Yawcam y nos pedirá nombre de usuario y contraseña. Tras ingresar estos datos, veremos la transmisión en vivo de la webcam, sin importar en qué parte del mundo estemos.
Esos routers que van a 1K
"No, señor, yo no veo ninguna transmisión, a mí se me abren las propiedades del router."
Es la situación más extravagante de todas, y va a ocurrirle si prueba su nuevo sitio Web desde dentro de su propia red hogareña. El motivo es muy sencillo. Quien en realidad se conecta con Internet es el router, que a los fines prácticos es una computadora. Así que la dirección IP pública informada a No-IP no es la de ninguna de sus computadoras, sino la del router. Por lo tanto, cuando llega una solicitud a ese número IP por el puerto 80 usando el protocolo Web, ¿quién responde? El router, obviamente. Pero tranquilo, a menos que haya activado el acceso Web, esto no ocurrirá si la solicitud viene desde afuera. En esas instancias sólo recibirá un mensaje de error y nada más. Feo.
Para resolver esto hay que usar una función del router llamada redireccionamiento de puertos; sí seguimos redireccionando tráfico. Esto, normalmente, está en la parte de juegos y aplicaciones de la configuración del router.
Lo que se verá allí es una suerte de planilla de impuestos (no tan complicada, en realidad) en blanco. ¿Cómo completarla? Bueno, es simple: hay que decirle al router que todo el tráfico Web que llegue del exterior al puerto 8081 sea enviado a la computadora que tiene la cámara Web.
Ah, qué simpático. ¿Y cuál es esa computadora?
Si usted tiene un router, lo sepa o no, tiene una red. "¡Pero si sólo tengo una notebook!" Sí, pero también tiene el router, que es una computadora. Así que ya tiene dos. Y si tiene una red, entonces cada equipo tiene una dirección IP.
En una red local como la suya o la de una gran empresa, es lo mismo, se usan direcciones IP para identificar cada equipo.
Su router Wi-Fi casi seguramente se llamará 192.168.1.1, y si tiene sólo una notebook, entonces seguramente será 192.168.1.2. "Ah, pero tengo también un iPhone." Su iPhone será 192.168.1.3. "Oh, perdón, me olvidaba, ¿y la tablet?" Posiblemente será 192.168.1.4.
Como puede imaginarse, es fácil hacerse un embrollo asignando números, así que su red lo hace de forma automática. Para usted es totalmente transparente y su iPhone puede tener un número diferente a la mañana que esta noche, cuando vengan un par de amigos con sus propios smartphones Wi-Fi.
Así que sí, también dentro de su casa hay direcciones dinámicas, asignadas automáticamente por medio de algo llamado DHCP. La buena noticia es que el router siempre es 192.168.1.1 y que usted puede configurar algunas máquinas para que usen un IP fijo. Su notebook, por ejemplo, puede ser siempre 192.168.1.20. Esto se configura por medio de Inicio> Configuración> Panel de control> Conexiones de red. Allí, en las Propiedades de los protocolos TCP/IP (esto es, Internet) cambie Obtener una dirección IP automáticamente por Usar la siguiente dirección IP y escriba la que quiera emplear. Supongamos: 192.168.1.20.
Los detalles de este tema, aquí: http://www.lanacion.com.ar/997396
El último paso será, pues, decirle al router que todo el tráfico http (la Web) que llegue por el puerto 8081 (el que usa Yawcam) sea enviado a la dirección 192.168.1.20. Eso se hace en la planilla que mencioné antes.
Hecho esto, por fin, podrá ver el streaming de su webcam desde cualquier computadora por Internet.
Por cierto, y hablando del iPhone, como Yawcam usa Javascript, sí, también podrá ver la transmisión de su webcam en el iPhone.
¿Y en la iPad?
Sí, también.
Y con un Android, claro, y pronto, me temo, hasta con el reloj de pulsera.
LANACION.COM

No hay comentarios: