Una de los desafíos más interesantes es el de poder obtener datos de funcionamiento de un circuito con microcontrolador (p.e. BASIC Stamp) y grabarlos en un archivo de una aplicación web, sin limitaciones, de manera que estos se puedan consultar como si de una aplicación cualquiera que trabaje con bases de datos fuera, en el formato y de la manera en que queramos. Y viceversa: hacer que unos datos de registros contenidos en bases de datos puedan interactuar con nuestro circuito con microcontrolador.
En este nuevo proyecto vamos a conseguir que nuestro módulo PINK, conectado con un circuito con BASIC Stamp (p.e. nuestro circuito de alarma domótico comentado en otro proyecto) envíe datos desde su servidor embebido a otro servidor donde trabaja, por ejemplo, hacia una aplicación web PHP con una tabla de datos detrás donde grabar algunos datos interesantes.
1ª FASE: Preparando las páginas para el intercambio de datos
Este es el esquema general del proyecto:
Preparamos una página ejemplo (sólo intercambiaremos el contenido de las variables 03-08) que guardaremos en el servidor del PINK y a la que llamaremos "pink.htm".
Este es el código HTML:
Merece especial atención el código Javascript que hemos colocado en el HEAD de la página. Este se encarga, no sólo de auto-refrescar la página (a fin de que nos muestre
datos en tiempo real) sino también de realizar un autoenvío regular de los datos que se obtienen de nuestro circuito. El número 10000 nos sirve para fijar el número de seg. que pasan hasta ejecutar el autoenvío (10 seg.).
Por ejemplo, las 6 variables que intercambiaremos, podrían contener el estado en que se encuentran diferentes sensores colocados a lo largo de nuestra vivienda. Si conseguimos que estos datos se graben en un archivo cada 5 seg. (por ejemplo) conseguiremos un mapa de actividad de nuestra casa que podremos ir consultando en tiempo real, pero también en diferido, incluso en formato histórico e interpretado. Aquí apelo a la creatividad del lector, de manera que no se centre sólo en lo que vamos a
tratar de hacer juntos, sino que vaya más allá de lo que podamos dejar entrever en estas pocas líneas. Las prestaciones de este proyecto son muy potentes.
El resto del código HTML de esta página nos muestra un simple formulario que nos pasará, mediante el método POST, el contenido de las variables Nb_var03 - Nb_var07; la variable Nb_var08 la hemos dejado libre para ser usada en este mismo formulario como un campo.
La página solicitada (enviadatos.php) podría entonces tratar el contenido de las variables dato3, dato4, dato5,..., que corresponden al contenido de las
variables Nb_var03, Nb_var04, Nb_var05, ...
Volvamos a nuestro método de formulario POST. La página comentada recogerá, pues, el valor de dichas variables y, mediante un autorefresco-envío, las pasará "escondidas" (hidden) a la página "grabadatos.php" que se halla alojada en un servidor externo.
Esta otra página de formato dinámico está escrita en PHP para hacer posible el uso de bases de datos donde guardar los registros de los datos obtenidos.
Respecto a esta otra página, es necesario que el usuario tenga conocimientos de programación de páginas web dinámicas, no de PHP concretamente, sino de cualquier otro lenguaje que pueda recoger datos enviados mediante el método POST.
Dado que hay multitud de plataformas de desarrollo que pueden proporcionarnos una página que recoja estos datos, nos centraremos en un ejemplo de página en PHP, bajo
entorno de desarrollo Zheta, que podremos extrapolar de manera muy intuitiva a
cualquier otro tipo de desarrollo.
Esta página deberá incluir, como la otra, el código Javascript que autorefresca-envía a otra página. En este caso nos servirá para retornar a la página del PINK, donde seguirán mostrándose los datos de las variables casi en tiempo real. Los tiempos para realizar el autoenvío pueden ser diferentes en ambas páginas; esto lo dejo al criterio del lector. Este es el contenido del BODY de la página que estamos escribiendo para PHP. Observad el reenvío que hace hacia la página en el PINK: hemos escrito la IP local ("104" porque es el número de segmento asignado automáticamente por nuestra red local).
¿Qué enviamos desde esta página? Nada; simplemente retornamos. En esta misma página es donde podemos usar el contenido de las variables para conformar un registro para grabarlo en la tabla (esta parte del código no se muestra en los ejemplos).
Aquí tenemos las capturas de las 2 páginas (pink.htm en el servidor del PINK; grabadatos.php en un servidor externo cualquiera).
Toda esta operativa se entiende que se realiza localmente, en una misma red. Tal como hemos apuntado en otros proyectos, si hemos de visualizar los datos de la
página del PINK fuera de nuestra red de casa u oficina, la url donde escribimos "192.168.1.104" será la IP pública (p.e.: 62.165.23.12).