Compilando programas para la fonera

Uncategorized 10 Comentarios

Hace poco leí un artículo en barrapunto donde descubrí (un poco tarde, ya lo sé) que la fonera tenía ssh (y por ende linux embebido).

El caso es que viendo páginas como la de radikalq3 me animé a solicitar a FON su preciado router wireless (cuando aún estaba de oferta a 5 ?) para hacer “pruebas y experimentos” y de paso unirme a la comunidad FON.

La recibí ayer, y por supuesto habilité el ssh mediante hardware (cables, condensadores, MAX232 y el puerto serie). Por cierto, una vez listado todo el proceso de arranque el usuario debe pulsar INTRO para activar la consola. Una vez abierto el puerto 22 monté de nuevo la fonera y me conecté por ssh. La primera vez que entras debes entrar como root y con password admin. Posteriormente cambié la clave de root desde la web de FON en Configura tu Router Social FON/Contraseña del Router

A continuación me bajé los fuentes de la fonera http://download.fon.com/firmware/fonera/latest/fonera.tar.bz2 (unos noventa megas), los guardé en mi carpeta personal de mi servidor con mandriva 2006, los descomprimí con tar xvjf fonera.tar.bz2, ejecuté make menuconfig sin modificar nada, grabé y posteriormente tecleé make. La primera vez no me compiló, por lo que tuve que instalar varios paquetes: urpmi flex, urpmi bison y urpmi byacc.

Una vez compilados los fuentes ya solo me quedaba saber como poder compilar un programa y subirlo a la fonera. La compilación se explica en la web de OpenWRT:
http://downloads.openwrt.org/docs/buildroot-documentation.html#using_toolchain. Así que me puse manos a la obra e hice este programa llamado prueba.c el cual simplemente abre le fichero /etc/passwd y muestra su contenido (en vez de hacer el típico hola mundo):

#include <stdio.h>
 
int main(void)
{
      FILE *fichero;
      char cadena[100];
      if((fichero=fopen("/etc/passwd","r"))!=NULL)
      {
              fgets(cadena,100,fichero);
              while(!feof(fichero))
              {
                      printf(cadena);
                      fgets(cadena,100,fichero);
              }
              fclose(fichero);
      }
      return 0;
}

Lo compilé con mips-linux-uclibc-gcc -o prueba prueba.c y se creó un ejecutable sin problemas. A continuación lo moví a /var/www/html para que estuviese disponible a través del servidor web apache y desde la fonera lo recuperé con wget http://192.168.0.11/prueba (notese que la ip del servidor será distinta en vuestro caso), le cambié los permisos para que se pudiera ejecutar chmod 755 prueba y finalmente lo probé funcionado perfectamente.

Espero que esto os anime a crear vuestros propios programas. Este ejecutable me ocupó unos 7 KBytes y aún tengo 7 megas de espacio libre en la fonera para añadirle nuevas cosas :)

Actualización 08/02/2007:

Dani, un lector del blog me comentó que la fonera solo tiene 4 megas libres de espacio de almacenamiento permanente (y no 7 megas como había escrito en el artículo). Después de hacer dos experimentos que podéis leer en los comentarios de este blog la capacidad real de la fonera con el firmware de FON es de 5 MB. Gracias Dani por forzarme a experimentar ;)

Manejar aparatos eléctricos desde el PC: domótica (5/5)

Proyectos 28 Comentarios

Hola a todos de nuevo. La espera se ha hecho larga (¡¡¡ casi 7 meses !!!), pero es porque me enfrasqué en otros proyectos y he sacrificado el tiempo del blog para poder desarrollarlos, aunque siempre he estado pendiente de los comentarios. Uno de ellos (que no el único) ha sido el de crear Hora y Lugar: una web para crear recordatorios de citas y que ha quedado cuarta en el concurso de Google Maps España.

Como broche final a esta serie de artículos, expongo la interfaz por antonomasia que hace que la domótica cobre un nuevo sentido. Y esa es manejar el sistema mediante el móvil. Ya no se trata de estar en casa o de tener una conexión a internet, sino de prácticamente poder usar nuestros aparatos desde cualquier lugar (donde haya cobertura claro). En esta ocasión es a base de SMS, que todo el mundo sabe escribir y son relativamente baratos, aunque en un futuro añadiré la funcionalidad de centralita, donde una voz te pregunta e informa y tu envías comandos mendiante tonos DTMF (pulsando las teclas del teléfono) o bién mediante voz; todo ello usando TAPI.

Usando el móvil que ya todos conoceis desarrollé la interfaz para poder tratar los mensajes recibidos y traducirlos en comandos para el sistema. Para iniciarlo se carga el programa SMS indicandole en que puerto esta eschuchando el móvil y cual es la dirección del servidor.

Cuando queramos hacer algo, escribimos un mensaje sms con el formato usuario contraseña comando.

Cuando el móvil recibe el mensaje, el programa SMS que esta comprobando si ha recibido un mensaje cada cierto tiempo lo procesa, muestra el teléfono de origen, la fecha y la cadena enviada.

A continuación envía el comando al servidor y nos responde con otro mensaje sms indicando en que estado se encuentra el sistema después de haber procesado el comando.

De la aplicación se puede salir simplemente pulsando INTRO.

Aquí teneis un video donde podeis ver como funciona todo lo que he ido explicando en todos los artículos:

Si no podeis visualizarlo bién, el enlace es http://www.youtube.com/watch?v=-Y5wO0ydRxo

Y así acaba esta serie de artículos, esperando que os haya servido de utilidad y que os haya dado ideas de como implantarlo vosotros mismos (como ya muchos me habeis comentado). Mi idea es seguir desarrollandolo añadiendo nuevas funcionalidades como reconocimiento de voz, centralita (como ya he comentado más arriba) y más control en los aparatos (de ser un mero encender y apagar a poder manejar todas las funcionalidades).

Manejar aparatos eléctricos desde el PC: domótica (4/5)