• No results found

Graph Regularized Tensor PCA

La preparación del mensaje no es trivial por varios motivos. En primer lugar, se desco- noce la cantidad de decimales y de la longitud de las descripciones, por lo que no se puede predecir la longitud del mensaje. En segundo lugar, el sensor nos facilita las medidas en un oat pero el servidor solo recoge enteros o cadenas de caracteres, por lo que es necesario la conversión de las medidas a cadenas.

Por este motivo la preparación del mensaje sigue el siguiente orden: Se pasa el dato en oat a cadena utilizando la función sprintf

Una vez con todos los datos en cadenas, se concatenan cadenas para crear el mensaje del cuerpo en una misma cadena

Con el mensaje ya concatenado en una cadena, se calcula su longitud.

Añado la longitud del mensaje a la cadena con la información Content-length: de cabecera

Una vez esté el mensaje preparado en sus diferentes cadenas, se procede a su en- vío de la misma forma que la información Modbus o los mensajes JSON mencionados anteriormente.

Cuando se recibe el mensaje se comprueba el estado de la respuesta del servidor y si coincide con el código correspondiente (200 si ha ido todo bien), se devuelve un valor indicando que la escritura se ha realizado con éxito.

3.5. SERVIDOR WEB Y COMUNICACIÓN HTTP

El ujograma de la función es muy parecido a los mencionados anteriormente, salvando las diferencias de la preparación del mensaje.

3.5.2. Creación del servidor local

Debido a que la base de datos de Enviguard aún no está operativa se ha tenido que crear un servidor local con una base de datos similar para poder probar el funcionamiento del dispositivo Enviguard Port. Como se ha mencionado anteriormente, la base de datos de Enviguard estará preparada para recibir datos en formato JSON. En este proyecto se ha implementado tanto el envío de datos mediante JSON como mediante formato urlencoded estandar. De esta forma se pretende dotar al dispositivo de una mayor funcionalidad ya que estará habilitado a enviar datos no solo a la base de datos de Enviguard, si no a cualquier otra que esté preparada para recoger los datos. Además se pretende utilizar dicha base de datos en el futuro para diversas aplicaciones del internet de las cosas (IoT en sus siglas en inglés) en el Centro de Electrónica Industrial.

En esta sección se detalla la creación de un servidor local, así como de una página web para mostrar los datos de forma más visual.

3.5.2.1. Base de datos con PHPmyAdmin

Para la implementación del servidor se ha optado por utilizar el paquete de instala- ción XAMPP. Este paquete está desarrollado por Apache Friends, proyecto creado para promocionar el servidor de web Apache, y aporta a la vez la gestión de bases de datos MySQL como el servidor web Apache y los interpretes para lenguajes como PHP o Perl. Desde su panel de control (que se muestra en la gura 3.32) se puede tanto activar de forma fácil y cómoda las distintas funciones que ofrece como ver los puertos disponibles para cada función

3.5. SERVIDOR WEB Y COMUNICACIÓN HTTP

Una vez activado el módulo MySQL podemos acceder a la base de datos del servidor desde cualquier navegador utilizando la siguiente URL:

http://localhost/phpmyadmin/

Una vez en la interfaz de phpMyAdmin se puede encontrar información sobre el servidor de la base de datos, el servidor web y las bases de datos creadas junto con su estructura. La información del servidor de la base de datos es importante debido a que va a ser necesario utilizar un email de conrmación a la hora de subir la información a la base de datos.

Figura 3.33: Información del servidor de la base de datos

Para asemejar la base de datos local lo máximo posible con la de Enviguard, se han elegido los mismos nombres para las etiquetas. De esta forma, la base de datos se de- nominará cookie-database y contará con una tabla phosdi-data. En este proyecto se ha implementado solamente un sensor para poder probar la funcionalidad del recorrido com- pleto del Enviguard Port, desde la recolección de medidas hasta el envío a la base de datos.

La tabla phosdi-data cuenta con cinco columnas para catalogar los datos el PHOSDI- sensor. No todos los datos provienen del sensor, ya que algunos campos los rellena el servidor.

Number: Es un campo autoincremental para ordenar las medidas del sensor. Ade- más hace la función de campo primario, es decir, el campo que toda medida debe tener si o si y que debe ser diferente al resto de medidas para servir como identi- cador.

conc-desc-chan: Una cadena de caracteres de longitud 40 que contiene la descrip- ción del canal utilizado por el sensor. Para esta fase de depuración los tres canales del sensor PHOSDI se denominarán como MyChannel1, MyChannel2 y MyChannel3. conc-res-chan: Cadena de caracteres de longitud 10 donde se guarda el valor de la medida. La medida del sensor se recoge en formato tipo oat. El dispositivo Enviguard a la hora de preparar el mensaje, transforma el valor oat a una cadena de caracteres, siendo cada número un caracter diferente, incluido el (.) que separa números enteros y decimales.

conc-unit-chan: Es un campo de longitud 10 caracteres que contiene la información sobre las unidades de las medidas recogidas por el sensor. En esta fase de depuración se muestran las mismas unidades para los 3 canales diferentes, g/L.

time: Este campo es rellenado por el servidor debido a que la funcionalidad del GPS en el dipositivo Enviguard aún no está operativa. Sirve para etiquetar las medidas en el tiempo y facilitar su representación en la interfaz gráca.

En la gura 3.34 se pueden los diferentes campos de la tabla phosdi-data tal y como la muestra la interfaz de phpMyAdmin mientras que en la gura 3.35 se muestran las las de la base de datos con algunos datos ya guardados del sensor y enviados por el dispositivo Enviguard port.

Figura 3.34: Tabla phosdi-data de la base de datos local.

3.5. SERVIDOR WEB Y COMUNICACIÓN HTTP 3.5.2.2. Funcionamiento del servidor

El paquete XAMPP genera una carpeta en el ordenador que sirve como almacenamien- to de archivos del servidor. Todos los scrips, imágenes y demás archivos del servidor se alojan en esta carpeta cuya dirección varia según la dirección donde se guarde el programa tras su instalación.

Dentro de esta dirección se puede crear todas las subcarpetas que se precisen, teniendo cuidado luego a la hora de direccionarlas en el navegador para acceder a los diferentes scripts, como el archivo insert.php encargado del procesamiento y subida de información a la base de datos o los archivos necesarios para la implementación de la pagina web.

El archivo insert.php que se muestra a continuación prepara una consulta SQL para introducir los datos en la base de datos. Para ello se hace uso de la clase PDO de PHP. Esta clase precisa del nombre de la base de datos a la que se quiere acceder, la dirección IP del servidor, el usuario y de forma opcional una contraseña. Por esta razón la información del servidor de la base de datos es importante ya que debemos rellenar los campos de forma correcta. Los campos serán:

mysql:dbname=cookie-database. host=localhost.

usuario=root.

1 <?php

2 $dsn="mysql : dbname=cookie_database ; host=l o c a l h o s t " ; 3 $usuario=" root " ;

4 $gd = new PDO( $dsn , $usuario ) ; 5 $time=date ( 'Y−m−d H: i : s ' ) ; 6 $ c o n s u l t a=

7 "INSERT INTO ` phosdi_data ` ( ` number ` , ` conc_desc_chan ` , ` conc_res_chan ` , ` conc_unit_chan ` , ` time ` ) VALUES (NULL, ' " .$_POST[ '

conc_desc_1chan ' ] . " ' , ' " .$_POST[ ' conc_res_1chan ' ] . " ' , ' " .$_POST[ ' conc_unit_1chan ' ] . " ' , ' " . $time . " ' ) , (NULL, ' " .$_POST[ '

conc_desc_2chan ' ] . " ' , ' " .$_POST[ ' conc_res_2chan ' ] . " ' , ' " .$_POST[ ' conc_unit_2chan ' ] . " ' , ' " . $time . " ' ) , (NULL, ' " .$_POST[ '

conc_desc_3chan ' ] . " ' , ' " .$_POST[ ' conc_res_3chan ' ] . " ' , ' " .$_POST[ ' conc_unit_3chan ' ] . " ' , ' " . $time . " ' ) ; " ;

8 $r esu ltadoConsulta=$gd−>prepare ( $ c o n s u l t a ) ;

9 $resultadoConsulta−>execute ( ) ;

10 ?>