Top Banner
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) GRADO EN INGENIERÍA TELEMÁTICA ESTUDIO DE LA PLATAFORMA DE IOT BLUEMIX Y DESARROLLO DE UNA SOLUCIÓN SMART AGRICULTURE Autor: Amaya Manzano Ibarra Director: David Contreras Bárcena Madrid Junio 2016
219

iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

Mar 27, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO DE LA PLATAFORMA DE IOT BLUEMIX Y DESARROLLO DE UNA SOLUCIÓN SMART AGRICULTURE

Autor: Amaya Manzano Ibarra

Director: David Contreras Bárcena

Madrid Junio 2016

Page 2: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,
Page 3: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

Declaro, bajo mi responsabilidad, que el Proyecto presentado con el título

Estudio de la plataforma de IOT Bluemix y desarrollo de una solución Smart Agriculture

en la ETS de Ingeniería - ICAI de la Universidad Pontificia Comillas en el

curso académico (2015/16) es de mi autoría, original e inédito y

no ha sido presentado con anterioridad a otros efectos.

El Proyecto no es plagio de otro, ni total ni parcialmente y la información que ha sido

tomada de otros documentos está debidamente referenciada.

Fdo.: …………………………………………… Fecha: 16/07/2016

Autorizada la entrega del proyecto

EL DIRECTOR DEL PROYECTO

Fdo.: …………………………………………… Fecha: ……/ ……/ ……

Vº Bº del Coordinador de Proyectos

Fdo.: …………………………………………… Fecha: ……/ ……/ ……

Page 4: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,
Page 5: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

AUTORIZACIÓN PARA LA DIGITALIZACIÓN, DEPÓSITO Y DIVULGACIÓN EN RED DE PROYECTOS FIN DE GRADO, FIN DE MÁSTER, TESINAS O MEMORIAS DE BACHILLERATO

1º. Declaración de la autoría y acreditación de la misma. El autor D. Amaya Manzano Ibarra DECLARA ser el titular de los derechos de propiedad intelectual de la obra: Estudio de la plataforma de IOT Bluemix y desarrollo de una solución Smart Agriculture, que ésta es una obra original, y que ostenta la condición de autor en el sentido que otorga la Ley de Propiedad Intelectual. 2º. Objeto y fines de la cesión. Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas, de forma gratuita y no exclusiva, por el máximo plazo legal y con ámbito universal, los derechos de digitalización, de archivo, de reproducción, de distribución y de comunicación pública, incluido el derecho de puesta a disposición electrónica, tal y como se describen en la Ley de Propiedad Intelectual. El derecho de transformación se cede a los únicos efectos de lo dispuesto en la letra a) del apartado siguiente. 3º. Condiciones de la cesión y acceso Sin perjuicio de la titularidad de la obra, que sigue correspondiendo a su autor, la cesión de derechos contemplada en esta licencia habilita para:

a) Transformarla con el fin de adaptarla a cualquier tecnología que permita incorporarla a internet y hacerla accesible; incorporar metadatos para realizar el registro de la obra e incorporar “marcas de agua” o cualquier otro sistema de seguridad o de protección.

b) Reproducirla en un soporte digital para su incorporación a una base de datos electrónica, incluyendo el derecho de reproducir y almacenar la obra en servidores, a los efectos de garantizar su seguridad, conservación y preservar el formato.

c) Comunicarla, por defecto, a través de un archivo institucional abierto, accesible de modo libre y gratuito a través de internet.

d) Cualquier otra forma de acceso (restringido, embargado, cerrado) deberá solicitarse expresamente y obedecer a causas justificadas.

e) Asignar por defecto a estos trabajos una licencia Creative Commons. f) Asignar por defecto a estos trabajos un HANDLE (URL persistente).

4º. Derechos del autor. El autor, en tanto que titular de una obra tiene derecho a:

a) Que la Universidad identifique claramente su nombre como autor de la misma b) Comunicar y dar publicidad a la obra en la versión que ceda y en otras posteriores a través de

cualquier medio. c) Solicitar la retirada de la obra del repositorio por causa justificada. d) Recibir notificación fehaciente de cualquier reclamación que puedan formular terceras personas

en relación con la obra y, en particular, de reclamaciones relativas a los derechos de propiedad intelectual sobre ella.

5º. Deberes del autor.

• El autor se compromete a:

a) Garantizar que el compromiso que adquiere mediante el presente escrito no infringe ningún derecho de terceros, ya sean de propiedad industrial, intelectual o cualquier otro.

b) Garantizar que el contenido de las obras no atenta contra los derechos al honor, a la intimidad y a la imagen de terceros.

c) Asumir toda reclamación o responsabilidad, incluyendo las indemnizaciones por daños, que pudieran ejercitarse contra la Universidad por terceros que vieran infringidos sus derechos e intereses a causa de la cesión.

Page 6: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

d) Asumir la responsabilidad en el caso de que las instituciones fueran condenadas por infracción de derechos derivada de las obras objeto de la cesión.

6º. Fines y funcionamiento del Repositorio Institucional. La obra se pondrá a disposición de los usuarios para que hagan de ella un uso justo y respetuoso con los derechos del autor, según lo permitido por la legislación aplicable, y con fines de estudio, investigación, o cualquier otro fin lícito. Con dicha finalidad, la Universidad asume los siguientes deberes y se reserva las siguientes facultades: La Universidad informará a los usuarios del archivo sobre los usos permitidos, y no

garantiza ni asume responsabilidad alguna por otras formas en que los usuarios hagan un uso posterior de las obras no conforme con la legislación vigente. El uso posterior, más allá de la copia privada, requerirá que se cite la fuente y se reconozca la autoría, que no se obtenga beneficio comercial, y que no se realicen obras derivadas.

La Universidad no revisará el contenido de las obras, que en todo caso permanecerá bajo la responsabilidad exclusive del autor y no estará obligada a ejercitar acciones legales en nombre del autor en el supuesto de infracciones a derechos de propiedad intelectual derivados del depósito y archivo de las obras. El autor renuncia a cualquier reclamación frente a la Universidad por las formas no ajustadas a la legislación vigente en que los usuarios hagan uso de las obras.

La Universidad adoptará las medidas necesarias para la preservación de la obra en un futuro. La Universidad se reserva la facultad de retirar la obra, previa notificación al autor, en supuestos

suficientemente justificados, o en caso de reclamaciones de terceros. Madrid, a 16 de Julio de 2016

ACEPTA

Fdo. ………………………………………………

Motivos para solicitar el acceso restringido, cerrado o embargado del trabajo en el Repositorio Institucional:

Page 7: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO DE LA PLATAFORMA DE IOT BLUEMIX Y DESARROLLO DE UNA SOLUCIÓN SMART AGRICULTURE

Autor: Amaya Manzano Ibarra

Director: David Contreras Bárcena

Madrid Junio 2016

Page 8: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,
Page 9: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

Agradecimientos A mi familia, novio, amigos y mi director de proyecto.

También muy en especial a Paco por conseguirme todos los contactos para las entrevistas.

¡Gracias a todos!

"Si no puedes volar entonces corre. Si no puedes correr entonces camina. Si no puedes

caminar entonces arrástrate, pero sea lo que hagas, sigue moviéndote hacia adelante."

Martin Luther King Jr.

Page 10: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,
Page 11: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

ESTUDIO DE LA PLATAFORMA DE IOT BLUEMIX Y DESARROLLO DE UNA SOLUCIÓN SMART AGRICULTURE

Autor: Manzano Ibarra, Amaya. Director: Contreras Bárcena, David. Entidad Colaboradora: Universidad Pontificia Comillas (ICAI).

RESUMEN DEL PROYECTO Análisis y estudio de la plataforma de IoT Bluemix para desarrollar un prototipo de Smart Agriculture aplicado al sector vitivinícola. Se estudiarán las necesidades de los viticultores y se creará un proyecto a medida con un entorno muy intuitivo y unas alertas adecuadas a través de notificaciones push.

Palabras clave: Big Data, Cloud Computing, IoT, Smart Agriculture

1. Introducción

En la actualidad se habla con frecuencia sobre el Internet de las Cosas y el Big Data y su impacto en la sociedad del futuro. Casi todas las semanas salen noticias sobre estos dos conceptos, que unidos, se definen como una red de objetos físicos interconectados que permiten el intercambio de datos para que éstos sean analizados de una forma inteligente y proporcionen conocimiento al usuario. Según el Hype Cycle de Gartner [1], las plataformas IoT son una tecnología muy innovadora y con mucho potencial como se verá reflejado más adelante en la memoria. Este proyecto se centrará en profundizar cómo funciona Bluemix y qué ofrece para la realización de proyectos IoT. Aplicando las conclusiones obtenidas, se desarrolla una solución llamada VinIoT para la monitorización de los viñedos.

2. Definición del proyecto

La primera fase del proyecto se centra en el estudio de las posibilidades que ofrece Bluemix para el desarrollo de proyectos IoT. Se estudiarán, entre otras cosas, la interconexión con los sensores, las posibilidades que ofrece Node-RED y las distintas herramientas de visualización de datos.

En la segunda fase, se usarán los sensores SimpleLink SensorTag de Texas Instruments para recoger información del entorno vitivinícola. Los datos que sean recogidos por los sensores pasarán por un Gateway y se vincularán al sistema creado en la nube a través del protocolo MQTT para que puedan ser almacenados y analizados. Con la información tratada y analizada podrán generarse los informes y las notificaciones push correspondientes para mejorar la calidad del vino, tener un mayor conocimiento de lo que se está cultivando, alertar de un problema o incluso ayudar en la toma de decisiones.

Es muy importante definir bien los requisitos del usuario para proporcionarle la información, predicciones o alertas necesarias. Estos requisitos serán definidos mediante una serie de entrevistas realizadas a viticultores y enólogos para entender cómo funciona el cultivo de la vid y conocer de primera mano los problemas y soluciones para afrontar los cambios en la meteorología y las reacciones del terreno para conseguir optimizar las cosechas.

Page 12: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

3. Descripción del sistema

En este proyecto se ha decidido crear dos aplicaciones dentro de Bluemix una que se llamará IoT Pruebas y otra NodeApp. La primera tendrá toda la lógica del proyecto dentro del servidor de Node-RED, acceso a varias bases de datos Cloudant y todas las interfaces menos la de login en la parte del cliente. La segunda aplicación servirá de autenticación para el usuario utilizando un servidor Node.js configurado específicamente.

Ilustración 1: Esquema general del sistema

Uno de los servicios más importantes que ofrece IoT Foundation de Bluemix es el Node-RED y su potente interfaz gráfica. Este servicio se monta sobre un servidor Node.js y su versión gráfica contiene una serie de ‘nodos’ que son unos simples iconos que mediante un movimiento de ‘drag & drop’ se dejan en el panel de control y se unen con unas líneas para interconectar funcionalidades. Cada nodo ofrece una funcionalidad diferente y éstos aparecen por defecto en el menú; también pueden personalizarse programándolos uno mismo con JavaScript o cogiéndolo de las librerías de la página web GitHub en el que se pueden encontrar los nodos o flujos desarrollados por otras personas.

La base de datos recomendada es la que ofrece el servicio de Cloudant que se conecta a la perfección con Node-RED. Cloudant ofrece un almacenamiento NoSQL utilizando el formato JSON para el almacenamiento y recuperación de la información. En la siguiente ilustración puede verse uno de los flujos creados para el almacenamiento de las alertas y su visualización en la web.

Page 13: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

Ilustración 2: Flujo de Node-RED para la conexión con Cloudant

4. Resultados

El interfaz con el que va a interactuar el viticultor va a ser una página web desde la que se podrá visualizar todo el contenido ofrecido: alertas de heladas, regadío, enfermedades fúngicas como la de botrytis, recomendaciones de retrasar la poda, gráficos de la temperatura, luz y humedad en tiempo real, acceso a los históricos… En la ilustración 3 puede verse un ejemplo de la interfaz gráfica del panel de control.

Ilustración 3: Resultado de la página del panel de control

Page 14: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

5. Conclusiones

Las plataformas IoT todavía tienen escasa presencia en el mercado y por lo tanto baja difusión en el ámbito empresarial. Sin embargo se trata de una tecnología muy nueva que puede catalogarse como “Innovation Trigger” según el Hype Cycle de Gartner [1].

Las plataformas IoT convierten al desarrollo del prototipo de Smart Agriculture en un proyecto muy innovador, y lo será más en cuanto dichas plataformas desarrollen todo el potencial que encierran.

El uso de la plataforma Bluemix es una buena muestra de las optimistas perspectivas del proyecto. Bluemix se vende como si todo fueran ventajas, pero al final no se aportaron todas las que se suponían inicialmente debido al estado de madurez en el que se encuentra la plataforma.

Como conclusión, las plataformas IoT incorporan un altísimo potencial que se hará realidad en el momento que se conozcan más los detalles de su utilización, convirtiéndose en herramienta imprescindible para las empresas.

6. Referencias

[1] H. Levy, «Understand where technologies sit in the cycle of maturity for their relevance to your organization,» Gartner, 20 Obtubre 2015. [En línea]. Available: http://www.gartner.com/smarterwithgartner/whats-new-in-gartners-hype-cycle-for-emerging-technologies-2015/.

Page 15: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

IOT BLUEMIX PLATFORM STUDY AND DEVELOPMENT OF A SMART AGRICULTURE SOLUTION

Author: Manzano Ibarra, Amaya. Supervisor: Contreras Bárcena, David. Collaborating Entity: Universidad Pontificia Comillas (ICAI).

ABSTRACT Analysis and study of Bluemix IoT platform to develop a prototype of Smart Agriculture applied to the wine sector. Vintner’s needs will be studied and a project with a very intuitive environment and the adequate push notifications alerts will be created.

Keywords: Big Data, Cloud Computing, IoT, Smart Agriculture

1. Introduction

Nowadays we frequently hear about the Internet of Things, Big Data and its impact on our future society. Almost every week newspapers print news about these two concepts; together we could define them as a network of physical objects that allow the exchange of data for it to be analyzed in an intelligent way and provide knowledge to the user. According to Gartner’s Hype Cycle [1], IoT platforms are a very innovative technology with a great potential as we will see reflected later in the memory. This project will deepen in how bluemix works and what it offers for the realization of IoT projects. Applying all findings, a solution called VinIoT for monitoring vineyards will be developed.

2. Description of the project

The first phase of the project focuses on the study of the possibilities Bluemix provides for the development of IoT projects. Things that will be studied, among others, are the connection with sensors, Node-RED possibilities and different data visualization tools.

In the second phase, the SimpleLink SensorTag Texas Instruments sensor will be used to collect information from the wine environment. Data is collected by the sensors, then it will pass through a Gateway and reach the system created in the cloud using the MQTT protocol so that data can be stored and analysed there. When the information is processed and analysed, reports can be generated and the corresponding push notifications will be sent to improve the quality of the vineyards. This system will provide to the vintner a greater knowledge of what is being cultivated, warn of some kind of problem or even assist in decision making.

It is very important to perfectly define the user requirements to provide the necessary information, predictions and alerts to the vintner. These requirements will be defined using the information collected through a series of interviews to vintners and oenologists to understand how the cultivation of the vineyards work in order to solve some of the problems they find and to work on the optimization of crops.

Page 16: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

3. Description of the system

Two applications within Bluemix have been created; one called “IoT Pruebas” and other “NodeApp”. The first will contain all the logic of the project within the Node -RED server, it will have access to multiple Cloudant databases and will contain all interfaces except the login for the front-end. The second application will provide authentication for the user using a specifically configured Node.js server.

Illustration 1: General scheme of the system

One of the most important services offered in the IoT Foundation module is Node-RED and its powerful graphic interface. This service uses Node.js server and its graphic version contains a series of 'nodes' that are simple icons which can be moved by 'drag & drop' and are left in the control panel waiting to be interconnect with some lines. Each node provides different functionalities; some appear by default in the menu, but others can be customized with JavaScript or you can take them from GitHub libraries, where you can find nodes or flows already developed by other people.

The recommended data base is the Cloudant service, which connects directly with Node-RED. Cloudant offers NoSQL using the JSON format for the storage and retrieval of information. The following illustration shows one flow created for storing and collecting alerts from the database and how to show it on the web.

Page 17: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

Illustration 2: Node-RED flow connecting with Cloudant

4. Results

The vintner will be interacting with a web page from which he can view all content offered: alerts for frosting, irrigation, fungal diseases such as botrytis, recommendations to delay pruning, temperature, light and humidity real time graphs, access to the historic... Illustration 3 shows an example of the dashboard.

Illustration 3: Dashboard result

Page 18: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

5. Conclusions

IoT platforms still have little presence in the market and therefore low diffusion in businesses. However it is a very new technology that can be categorized as "Innovation Trigger" according to the Gartner Hype Cycle [1].

IoT platforms make the development of a Smart Agriculture prototype a very innovative project, and will be more interesting when such platforms develop all their potential.

The usage of the Bluemix platform is a very good example of the optimistic prospects of this project. When Bluemix was sold, everything were advantages, but after being able to work with it, it has been seen that the state of maturity of the platform is still low.

In conclusion, IoT platforms have a great potential that will become reality when developers receive more complete details about the usage. But in the end, I think this technology will become an essential tool for companies.

6. References

[1] H. Levy, «Understand where technologies sit in the cycle of maturity for their relevance to your organization,» Gartner, 20 Obtubre 2015. [En línea]. Available: http://www.gartner.com/smarterwithgartner/whats-new-in-gartners-hype-cycle-for-emerging-technologies-2015/.

Page 19: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE LA MEMORIA

I

Índice de la memoria

Capítulo 1. Introducción .................................................................................................. 11

1.1 Motivación del proyecto ...................................................................................................... 11

Capítulo 2. Descripción de las Tecnologías ..................................................................... 15

2.1 Bluemix ............................................................................................................................... 15

2.2 Arquitectura IoT .................................................................................................................. 17

2.2.1 Instrumentación .............................................................................................................. 17

2.2.2 Interconexión .................................................................................................................. 19

2.2.3 Inteligencia ..................................................................................................................... 21

Capítulo 3. Estado de la Cuestión .................................................................................... 23

3.1 Modelo de la Conferencia TedX ......................................................................................... 23

3.2 Modelo de IoTSimple .......................................................................................................... 24

3.3 Modelo de Siega System ..................................................................................................... 25

3.4 Diferenciación ..................................................................................................................... 25

Capítulo 4. Definición del Trabajo .................................................................................. 27

4.1 Justificación ......................................................................................................................... 27

4.2 Objetivos ............................................................................................................................. 29

4.3 Metodología y Recursos ...................................................................................................... 29

4.3.1 Scrum .............................................................................................................................. 30

4.3.2 Recursos ......................................................................................................................... 31

4.4 Planificación y Estimación Económica ............................................................................... 32

4.4.1 Recursos humanos .......................................................................................................... 32

4.4.2 Recursos materiales ........................................................................................................ 34

Capítulo 5. Estudio y Análisis del servicio IoT de Bluemix ............................................ 37

5.1 Conceptos IoT Foundation .................................................................................................. 37

5.1.1 Organizaciones ............................................................................................................... 37

5.1.2 Dispositivos .................................................................................................................... 37

5.1.3 Aplicaciones ................................................................................................................... 37

5.1.4 Sucesos ........................................................................................................................... 38

5.1.5 Mandatos ........................................................................................................................ 38

Page 20: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE LA MEMORIA

II

5.1.6 Dispositivos gestionados y no gestionados .................................................................... 38

5.1.7 Almacenamiento de sucesos históricos ........................................................................... 39

5.1.8 Crear una aplicación IoT Foundation............................................................................ 39

5.1.9 Registrar el SensorTag en Bluemix ................................................................................ 42

5.2 Node-RED ........................................................................................................................... 50

5.2.1 ¿Qué es Node-RED? ....................................................................................................... 50

5.2.2 Abrir Node-RED desde Bluemix IoT .............................................................................. 51

5.2.3 Descripción del entorno ................................................................................................. 52

5.2.4 Nodos Default ................................................................................................................. 54

5.2.5 Ejemplos Node-RED ....................................................................................................... 62

5.3 Crear el primer servidor con Node.js .................................................................................. 83

Capítulo 6. Desarrollo de la solución IoT: VinIoT ......................................................... 85

6.1 Requisitos ............................................................................................................................ 85

6.2 Arquitectura cliente-servidor ............................................................................................... 86

6.2.1 Back-end ......................................................................................................................... 89

6.2.2 Front-end ........................................................................................................................ 95

Capítulo 7. Análisis de Resultados ................................................................................. 111

7.1 Resultado gráfico de la página del tiempo ........................................................................ 111

7.2 Resultado gráfico de la página del panel de control .......................................................... 112

7.3 Resultado gráfico de la página de los datos históricos ...................................................... 113

7.4 Resultado gráfico de una de las páginas de alertas ............................................................ 114

Capítulo 8. Conclusiones y Trabajos Futuros ............................................................... 115

8.1 Conclusiones ..................................................................................................................... 115

8.2 Trabajos Futuros ................................................................................................................ 117

Capítulo 9. Bibliografía .................................................................................................. 119

ANEXO A 131

Apartado A.1 - Conectar el SensorTag a la Nube ...................................................................... 131

Apartado A.2 – Cosas que hacer para que se puedan recibir emails del sistema IoT ................ 133

ANEXO B 135

Apartado B.1 - Entrevistas ......................................................................................................... 135

Page 21: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE LA MEMORIA

III

ANEXO C 137

Apartado C.1 - Flujo de la Media .............................................................................................. 137

Apartado C.2 - Flujo para guardar datos en Cloudant ............................................................... 137

Apartado C.3 - Flujo para sacar datos de Cloudant ................................................................... 138

Apartado C.4 - Flujo para crear un formulario de recogida de datos y mostrar usando Ajax ... 138

Apartado C.5 - Flujo para crear un formulario de recogida de datos y mostrar usando JSON .. 139

ANEXO D 141

Apartado D.1 - viniothome24.html ............................................................................................ 141

Apartado D.2 - tiempo.html ....................................................................................................... 154

Apartado D.3 - calendario.html ................................................................................................. 158

Apartado D.4 - historico.html .................................................................................................... 162

Apartado D.5 - heladas.html ...................................................................................................... 169

Apartado D.6 - regadio.html ...................................................................................................... 173

Apartado D.7 - botrytis.html ...................................................................................................... 176

Apartado D.8 - corregirpoda.html .............................................................................................. 180

Apartado D.9 - login.html .......................................................................................................... 183

ANEXO E 187

Apartado E.1 - Flujos Node-RED. Sección de gráficos en tiempo real ..................................... 187

Apartado E.2 - Flujos Node-RED. Sección de alertas ............................................................... 188

Apartado E.3 - Flujos Node-RED. Sección de Chat .................................................................. 191

Apartado E.4 - Flujos Node-RED. Sección del Histórico .......................................................... 192

Apartado E.5 - Sección del Tweets ............................................................................................ 194

ANEXO F 197

Apartado F.1 - Definiciones ....................................................................................................... 197

ANEXO G 201

Apartado G.1 – Tarifas de precio/hora trabajada según el perfil profesional ............................ 201

Page 22: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE TABLAS

IV

Índice de figuras

Figura 1: Gartner's Technology Hype Cycle [3] ................................................................. 13

Figura 2: Diagrama de sistemas que forman Bluemix ........................................................ 15

Figura 3: Arquitectura del Proyecto .................................................................................... 17

Figura 4: Parte delantera del SensorTag [8] ........................................................................ 18

Figura 5: Parte trasera SensorTag [8] .................................................................................. 18

Figura 6: Aplicación del iOs para el sensor ......................................................................... 19

Figura 7: Calendario de trabajo ........................................................................................... 30

Figura 8: Estimación de costes de Bluemix [28] ................................................................. 35

Figura 9: Precio del SensorTag 2.0 [29] .............................................................................. 35

Figura 10: Crear una app IoT Foundation (paso 1) ............................................................. 39

Figura 11: Crear una app IoT Foundation (paso 2) ............................................................. 40

Figura 12: Crear una app IoT Foundation (paso 3) ............................................................. 40

Figura 13: Crear una app IoT Foundation (paso 4a) ........................................................... 41

Figura 14: Crear una app IoT Foundation (paso 4b) ........................................................... 41

Figura 15: Obtener datos IoT Foundation para el sensor (paso 1) ...................................... 42

Figura 16: Obtener datos IoT Foundation para el sensor (paso 2) ...................................... 42

Figura 17: Obtener datos IoT Foundation para el sensor (paso 3) ...................................... 42

Figura 18: Obtener datos IoT Foundation para el sensor (paso 4) ...................................... 43

Figura 19: Obtener datos IoT Foundation para el sensor (paso 5) ...................................... 43

Figura 20: Obtener datos IoT Foundation para el sensor (paso 6) ...................................... 43

Figura 21: Obtener datos IoT Foundation para el sensor (paso 7) ...................................... 44

Figura 22: Obtener datos IoT Foundation para el sensor (paso 8) ...................................... 44

Figura 23: Obtener datos IoT Foundation para el sensor (paso 9) ...................................... 44

Figura 24: Obtener datos IoT Foundation para el sensor (paso 10) .................................... 45

Figura 25: Obtener datos IoT Foundation para el sensor (paso 11) .................................... 45

Figura 26: Obtener datos IoT Foundation para el sensor (paso 12) .................................... 45

Page 23: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE TABLAS

V

Figura 27: Obtener datos IoT Foundation para el sensor (paso 13) .................................... 46

Figura 28: Obtener datos IoT Foundation para el sensor (paso 14) .................................... 46

Figura 29: Pasos para registrar un dispositivo ..................................................................... 48

Figura 30: Resultado del registro del dispositivo ................................................................ 49

Figura 31: Abrir Node-RED (paso 1) .................................................................................. 51

Figura 32: Abrir Node-RED (paso 2) .................................................................................. 51

Figura 33: Entorno de Node-RED ....................................................................................... 53

Figura 34: Menú Node-RED ............................................................................................... 53

Figura 35: Tipos de nodos ................................................................................................... 54

Figura 36: Ejemplo ‘Hola Mundo’ ...................................................................................... 63

Figura 37: Ejemplo outputs/inputs ...................................................................................... 64

Figura 38: Ejemplo obtención datos de un sensor ............................................................... 65

Figura 39: Ejemplos de funciones, templates, switches y cambios ..................................... 66

Figura 40: Ejemplo cambio variables .................................................................................. 67

Figura 41: Ejemplos triggers y delays ................................................................................. 68

Figura 42: Ejemplos de redondeo, cambios y rbe ............................................................... 69

Figura 43: Nodo openweather ............................................................................................. 70

Figura 44: Página web openweather .................................................................................... 70

Figura 45: Crear account openweather ................................................................................ 70

Figura 46: API Key openweather ........................................................................................ 71

Figura 47: Añadir un Git (paso 1) ....................................................................................... 71

Figura 48: Añadir un Git (paso 2) ....................................................................................... 71

Figura 49: Configurar el Git (paso 1) .................................................................................. 72

Figura 50: Configurar el Git (paso 2) .................................................................................. 72

Figura 51: Configurar el Git (paso 3) .................................................................................. 72

Figura 52: Ejemplo nodo weather + tweet + email ............................................................. 73

Figura 53: Entrar en el repositorio Git................................................................................. 74

Figura 54: Instalación del nodo nuevo del repositorio ........................................................ 74

Figura 55: Flujo para hacer la media [Descargar en: Anexo C - Apartado C.1 ] ................ 75

Figura 56: Crear una Base de datos Cloudant (paso 1) ....................................................... 76

Page 24: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE TABLAS

VI

Figura 57: Crear una Base de datos Cloudant (paso 2) ....................................................... 76

Figura 58: Crear una Base de datos Cloudant (paso 3) ....................................................... 76

Figura 59: Crear una Base de datos Cloudant (paso 4) ....................................................... 77

Figura 60: Crear una Base de datos Cloudant (paso 5) ....................................................... 77

Figura 61: Editar la función de búsqueda de Cloudant ....................................................... 78

Figura 62: Flujo para guardar datos en una BBDD [Descargar en: Anexo C - Apartado C.2]

............................................................................................................................................. 78

Figura 63: Flujo para recoger los datos de una base de datos Cloudant según una búsqueda

[Descargar en: Anexo C - Apartado C.3)] ........................................................................... 79

Figura 64: Formulario + Ajax [Descargar en: Anexo C - Apartado C.4] ............................ 80

Figura 65: Formulario + JSON [Descargar en: Anexo C - Apartado C.5 ] ......................... 81

Figura 66: Montar un servidor con Node.js (paso 1) ........................................................... 84

Figura 67: Montar un servidor con Node.js (paso 2) ........................................................... 84

Figura 68: Estructura general del proyecto.......................................................................... 88

Figura 69: Flujos para los gráficos en tiempo real .............................................................. 90

Figura 70: Flujo de las alertas de heladas ............................................................................ 91

Figura 71: Flujo de alertas para activar el regadío .............................................................. 91

Figura 72: Flujo de alertas para avisar de una posible enfermedad (Botrytis) .................... 92

Figura 73: Flujo de las alertas de retrasar la poda a mediados de Enero ............................. 92

Figura 74: Flujo del chat ...................................................................................................... 93

Figura 75: Flujo para guardar y mostrar los datos históricos .............................................. 94

Figura 76: Flujo para mandar un tweet informativo del estado del tiempo ......................... 94

Figura 77: Flujo para mandar un tweet sobre la calidad del vino de ese año ...................... 95

Figura 78: Casos de uso panel de control ............................................................................ 95

Figura 79: Crear un Widget de Twitter (paso 1) ................................................................. 99

Figura 80: Crear un Widget de Twitter (paso 2) ................................................................. 99

Figura 81: Crear un Widget de Twitter (paso 3) ................................................................. 99

Figura 82: Crear un Widget de Twitter (paso 4) ............................................................... 100

Figura 83: Casos de uso página del tiempo ....................................................................... 100

Figura 84: Casos de uso página del calendario.................................................................. 101

Page 25: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE TABLAS

VII

Figura 85: Casos de uso de la página del histórico............................................................ 102

Figura 86: Casos de uso de las alertas ............................................................................... 107

Figura 87: Diagrama de secuencia Login .......................................................................... 108

Figura 88: Resultado gráfico de las consultas del tiempo ................................................. 111

Figura 89: Resultado gráfico del panel de control ............................................................. 112

Figura 90: Resultado gráfico de las búsquedas en el histórico .......................................... 113

Figura 91: Resultado gráfico de las alertas de heladas ...................................................... 114

Figura 92: Conectar el SensorTag a la Nube (paso 1) ....................................................... 131

Figura 93: Conectar el SensorTag a la Nube (paso 2) ....................................................... 132

Figura 94: Conectar el SensorTag a la Nube (paso 3) ....................................................... 132

Figura 95: Activar el “Acceso de aplicaciones menos seguras (paso 1)” ......................... 133

Figura 96: Activar el “Acceso de aplicaciones menos seguras (paso 2)” ......................... 133

Figura 97: Activar el “Acceso de aplicaciones menos seguras (paso 3)” ......................... 134

Page 26: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE TABLAS

VIII

Page 27: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE TABLAS

IX

Índice de tablas

Tabla 1: Comparativa de sistemas de Smart Agriculture .................................................... 26

Tabla 2: Horas trabajadas por tarea y perfil (Total: 402) .................................................... 33

Tabla 3: Coste de los recursos humanos (Total: 15.755€) .................................................. 34

Tabla 4: Nodos de Input ...................................................................................................... 56

Tabla 5: Nodos de output .................................................................................................... 57

Tabla 6: Nodos de función................................................................................................... 59

Tabla 7: Nodos de social ..................................................................................................... 59

Tabla 8: Nodos de almacenamiento .................................................................................... 60

Tabla 9: Nodos de IBM_Watson ......................................................................................... 61

Tabla 10: Nodos de Análisis ................................................................................................ 62

Tabla 11: Nodos Avanzados ................................................................................................ 62

Tabla 12: Tarifas actuales del mercado según el perfil profesional .................................. 201

Page 28: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ÍNDICE DE TABLAS

X

Page 29: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

INTRODUCCIÓN

11

Capítulo 1. INTRODUCCIÓN

En la actualidad se está hablando mucho sobre el Internet de las Cosas y el Big Data y su

impacto en la sociedad del futuro. Casi todas las semanas salen noticias sobre estos 2

conceptos, que uniéndolos, se definen como una red de objetos físicos interconectados que

permiten el intercambio de datos para que éstos sean analizados de una forma inteligente y

proporcionen conocimiento 1 al usuario [1].

Este proyecto tiene la finalidad de crear una plataforma de almacenamiento y análisis

masivo de información procedente de sensores utilizando la plataforma de Cloud

Computing Bluemix de IBM. Se creará así un servicio innovador de Internet de las Cosas

(IoT) orientado al campo vinícola.

La infraestructura de sensores se creará utilizando los sensores SimpleLink SensorTag de

Texas Instruments que recogerán información del entorno vinícola. Los datos que sean

recogidos por los sensores pasarán por un Gateway (GW) y se vincularán al sistema creado

en la nube a través del protocolo MQTT para que puedan ser almacenados y analizados.

Con esta información se podrán generar los informes y las notificaciones push

correspondientes para mejorar la calidad del vino, tener un mayor conocimiento de lo que

se está cultivando, alertar de un problema o incluso hasta ayudar en la toma de decisiones.

Para consultar las alguna de las definiciones más importantes del proyecto ir al Anexo F.

1.1 MOTIVACIÓN DEL PROYECTO

Uno de los motivos de la realización de este proyecto es poder investigar cómo funciona

una plataforma como servicio y cómo integrar esto en in proyecto IoT. Se ha elegido

Bluemix como plataforma como servicio por las siguientes razones [2]:

1 Información que desconozca y útil para el usuario.

Page 30: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

INTRODUCCIÓN

12

Bluemix ayuda a reducir mucho los tiempos en el desarrollo de un proyecto ya que permite

crear e implantar de una manera muy rápida los proyectos sin tener que preocuparse por la

infraestructura. Los desarrolladores necesitan menos tiempo ya que pueden utilizar tres

tipos de tecnologías de computación: Cloud Foundry, Docker y OpenStack.

Bluemix utiliza modelos de computación basados en estándares abiertos, lo que permite

migrar las aplicaciones a una empresa, ponerlas en algún otro cloud o compartir recursos.

También se pueden escalar los elementos de computación, de forma que se puede

monitorizar, desplegar y administrar toda la aplicación. Al tener un gran catálogo de

servicios Bluemix ofrece mucha flexibilidad al consumidor. Las preocupaciones por saber

qué nuevas tecnologías se van a usar para un proyecto son menores porque solo hay que

focalizarse en Bluemix y no en el software, hardware y las soluciones de infraestructura

que puedan necesitarse. Únicamente hay que preocuparse del diseño de la aplicación y del

código.

La seguridad en Bluemix es muy alta, está desarrollado por capas de encriptación y un

hacker no podrá nunca ver lo que hay en la nube. Además es compatible con casi cualquier

lenguaje de programación y runtime. Ahorrando tiempo también se ahorra dinero al no

tener que ocuparse de montar una infraestructura teniendo que invertir en hardware u otro

tipo de soluciones.

Por todas estas ventajas que nos da la plataforma se ha decidido investigar qué

posibilidades nos da el servicio de Bluemix en la parte de IoT y así poder conocerlo en

mayor profundidad para que la universidad pueda beneficiarse de estos puntos en futuros

proyectos de IoT que se quieran realizar.

Además de todas estas cosas también hay que destacar que este es un proyecto innovador y

en auge ya que según el último estudio de Gartner (Figura 1) podemos ver que el IoT y las

Plataformas IoT dentro del Cloud Computing son tecnologías con mucho potencial en la

actualidad y a un futuro no muy lejano:

Page 31: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

INTRODUCCIÓN

13

Figura 1: Gartner's Technology Hype Cycle [3]

Como se puede apreciar destacado en rojo en la Figura 1, las Plataformas IoT están ahora

mismo en el “Innovation Trigger” lo que significa que están empezando a tener presencia

en el mercado pero que todavía la tecnología no está del todo implantada en el mundo

empresarial, por lo que son una tecnología potencial que van a terminar de adaptarse a 5/10

años vista. Es por este gran componente de innovación que este proyecto se ha visto

motivado a utilizar una plataforma de IoT para su realización. Según un estudio de Gartner,

una plataforma IoT permite a las empresas a monitorizar y controlar los procesos de IoT y

a construir aplicaciones que completen los requerimientos digitales de una empresa [4].

Page 32: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

INTRODUCCIÓN

14

Además, se puede ver que el Internet de las Cosas se encuentra en el “Peak of Inflated

Expectations”. Esto es porque es una concepto que ya ha tenido varios casos de éxito y

más empresas lo están utilizando; se adaptará totalmente al mercado dentro de 5/10 años.

Con esto se puede saber que el proyecto está usando una tecnología que va a ser muy

interesante para las empresas desde ahora y que este proyecto tiene un gran potencial

comercial porque la finalidad que buscan estas plataformas ya está testada en el mercado.

Page 33: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

15

Capítulo 2. DESCRIPCIÓN DE LAS TECNOLOGÍAS

2.1 BLUEMIX

Para el desarrollo de este proyecto se utilizará Bluemix, que es una plataforma ‘open-

standard’ de innovación digital diseñada para facilitar las tareas a los desarrolladores [5].

Se considera una plataforma como servicio (Public Platform as a Service- PaaS) que

contiene todo lo necesario para soportar el ciclo de vida completo de construcción, puesta

en marcha y mantenimiento de aplicaciones y servicios web disponibles en Internet con la

particularidad de que no es necesario que los desarrolladores se instalen el software en sus

equipos [6]. Estas aplicaciones pueden ser Web, Movil, Big Data, Analytics, IoT,

Watson… Se puede observar en la Figura 2 los elementos que componen la plataforma.

Figura 2: Diagrama de sistemas que forman Bluemix

Page 34: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

16

La pieza clave de agilidad que proporciona este modelo de computación es que todos los

elementos que vemos en la columna de sistemas dentro del PaaS están administrados por el

proveedor de servicios, en este caso Bluemix. De esta manera el desarrollador solo se tiene

que centrar en su código y en sus datos y no tiene que consumir recursos en administrar

otros elementos que no están directamente relacionados con su desarrollo; es una manera

de corroborar el dicho de “zapatero a tus zapatos”. Además el desarrollador no tendrá que

estar pendiente de las nuevas actualizaciones ni de la seguridad ya que Bluemix es líder en

ese aspecto.

En este desarrollo el contenedor principal que se utiliza es el de Internet of Things

Foundation para poder crear rápidamente aplicaciones que se aprovechen del análisis de

datos recibidos a través de sensores. Este servicio proporciona un simple acceso de

aplicación potente a dispositivos IoT y datos. Con los datos recibidos se pueden componer

rápidamente aplicaciones analíticas, aplicaciones móviles de IoT y paneles de control de

visualización para poder utilizar toda esa información en el campo empresarial en segundo

plano. Desataca principalmente por 4 factores [7]:

1. Conectividad y escalabilidad: Se utiliza el protocolo MQTT estándar del sector para

conectar dispositivos y aplicaciones. Este protocolo está preparado para intercambiar datos

de manera eficiente a y desde dispositivos en tiempo real.

2. Gestión eficiente de los dispositivos: Se pueden configurar y gestionar los dispositivos

conectados desde un panel de control centralizado, realizando acciones como actualizar el

firmware, diagnosticar o eliminar un dispositivo o recibir metadatos.

3. Seguridad: Los metadatos se envían y se reciben de forma segura utilizando el

protocolo MQTT con TLS2 para proteger las comunicaciones entre el dispositivo y la

plataforma.

2 Protocolo criptográfico que proporciona privacidad e integridad de los datos entre 2 aplicaciones que se están comunicando.

Page 35: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

17

4. Almacenamiento y visualización de datos: IoT Foundation permite acceder a los datos

en tiempo real de los dispositivos conectados, así como almacenarlos durante un tiempo

para tener un histórico de datos.

2.2 ARQUITECTURA IOT

Figura 3: Arquitectura del Proyecto

Un proyecto IoT consta de 3 “capas” interrelacionadas entre sí [1] y para cada capa habrá

que pensar qué elementos son los que más nos combiene utilizar para desarrollar un

proyecto en el mundo vinícola.

2.2.1 INSTRUMENTACIÓN

Se deben elegir los sensores dentro del sensor SimpleLink SensorTag adecuados según los

requisitos funcionales y no funcionales que querramos que tenga nuestro sistema IoT

vinícola. Los sensores que nos ofrece son los siguientes (Figura 4 y Figura 5) :

Page 36: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

18

Figura 4: Parte delantera del SensorTag [8]

Figura 5: Parte trasera SensorTag [8]

Para definir estas funcionalidades se harán entrevistas con varios viticultores que conocen

de primera mano cómo funcona el cultivo de la vid para saber las necesidades de los

productores e identificar qué se necesita monitorizar y qué sensores utilizar. A priori, los

sensres de humedad, temperatura y luz serán los elegidos. Con esto se sabrá qué datos se

reciben para después saber que tratamiento darles.

En la instrumentación no solo se tiene en cuenta los sensores sino también los actuadores,

como puede ser por ejemplo el caso de un movil recibe alertas de problemas, las

Page 37: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

19

publicaciones en twitter de parámetros sobre la calidad del vino de la cosecha de cierto

año, cuando saldrán al mercado las primeras botellas…

2.2.2 INTERCONEXIÓN

2.2.2.1 Gateway

El gateway (GW) que se usará para todas las pruebas será la aplicación “Bluetooth low

energy, Starter” de Texas Instruments instalado en un iPhone 6 como podemos ver en la

Figura 6. Será el encargado de actuar como pasarela entre los sensores y la nube para que

los datos lleguen a través de internet (con la tecnología que se elija, en el caso de las

pruebas la Wi-Fi) de manera correcta y con el protocolo MQTT deseado.

Figura 6: Aplicación del iOs para el sensor

2.2.2.2 Bluetooth Smart

Para la comunicación entre el iPhone y el sensor se utilizará á tecnología denominada

Bluetooth Smart, también llamada Bluetooth LE o Bluetooth de baja energía. Es una

tecnología digital de radio inalámbrica nueva especial para pequeños dispositivos. Ofrece

conexión inalámbrica entre dispositivos móviles u ordenadores y otros dispositivos

pequeños que usen una pila de botón [9]. Al usar una pila de botón para el sensor, como se

Page 38: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

20

ha visto antes en la Figura 5, la tecnología que permita la conexión no puede consumir

mucha batería del aparato puesto que se apagaría enseguida. Es por ello que se ha utilizado

la conexión Bluetooth Smart, ya que una de sus particularidades es que consume muy poca

energía.

2.2.2.3 MQTT

El protocolo que se va a utilizar por debajo de la tecnología Wi-Fi que se usará en las

pruebas se llama MQTT. Se utilizará en la interconexión del GW con la nube de IoT

Foundation. Este protocolo es un modelo de publicación por subscripción, eficiente, ligero

y que consume poca batería. Además, este protocolo es perfectamente compatible y es el

recomendado por Bluemix [10].

El protocolo MQTT se utiliza mucho en el IoT porque hace mñas facil la recogida de datos

de los sensores, la publicación de los diferentes valores obtenidos y la configuración de

nodos remota. Funciona sobre TCP/IP o sobre otros protocolos de red bidirecionales y sin

pérdidas. Sus principales caracteríasticas son [11]:

• Utiliza los mensajes broadcat para la publicación t subscripción de los datos

indepentientemente de la aplicación.

• Transporta los mensajes de forma transparente con un flujo de datos optimizado

para reducir el tráfico de la red.

• Tiene 3 calidades de servicio:

o “A lo sumo una vez”: es como el protocolo TCP pero con pérdida de

mensajes, y es usado para cuándo no es crítico el retraso de un envío de

información.

o “Al menos una”: la llegada de mensajes está asegurada pero puede haver

diplicidad.

o “Exactamente una vez”: la llegada de los mensajes está asegurada

exactamente una vez.

• Tiene un mecanismo para notificar pérdidas de conexión no esperadas.

Page 39: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

21

2.2.3 INTELIGENCIA

Esta es la parte en la que se centra principalmente este proyecto y la parte más importante

puesto que es dónde se deben definir unos requisitos del usuario para proporcionarle la

información, predicciones o alertas necesarias. Estos requisitos serán definidos mediante

una serie de entrevistas realizadas a viticultores y enólogos para entender cómo funciona el

cultivo de la vid y saber la información que es necesario proporcionar. Más adelante en el

Capítulo 6 se hablará del proceso de desarrollo del prototipo y se podrán encontrar las

entrevistas en el ANEXO B. Esta parte es una parte muy importante del desarrollo del

prototipo puesto que se pretende proporcionar conocimiento util a los productores y hay

que entender sus necesidades para poder darles lo que buscan.

Después de definir unos requisitos hay que pensar en la capacidad de gestión,

almacenamiento y de visualizarción de la información de manera gráfica, clara y

entendible para los productores (Analytics). Con lo cual toda esta gran cantidad de

información procedente de los sensores será procesada para proporcionar una serie de

patrones al productor según sus necesidades (BigData).

Page 40: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESCRIPCIÓN DE LAS TECNOLOGÍAS

22

Page 41: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTADO DE LA CUESTIÓN

23

Capítulo 3. ESTADO DE LA CUESTIÓN

En la actualidad hay varios sistemas de Smart Agriculture como vamos a ver descrito a

continuación:

3.1 MODELO DE LA CONFERENCIA TEDX

Según dice Vijay Kumar en una conferencia de TedX [12] "La agricultura es uno de los

problemas más grandes al que nos enfrentamos hoy en día. Esto es porque 1 de cada 7

personas en el mundo está malnutrida, el 80% de la tierra cultivable ya está cultivada, la

población llegará hasta los 9 Billones para el año 2050 y la eficiencia de los sistemas que

existen en el mundo está mejorando pero el sistema de producción en la agricultura está

haciendo lo contrario debido a la escasez de agua, las enfermedades de las plantas, el

cambio climático y otros factores".

Lo que plantea Kumar es hacer volar a unos drones con una serie de sensores integrados

por los campos de cultivo para crear modelos individuales de cada planta cultivada al igual

que se hace en la medicina con los seres humanos. Con este sistema se ayuda al agricultor

a saber qué tipo de cuidados le tiene que dar a esa planta específica, como por ejemplo si

tiene que aumentar o disminuir de agua, fertilizador o pesticida que se le da. Esto lo

consiguen utilizando tres tipos de cámaras: una cámara normal a color, una cámara de

infrarrojos y una cámara térmica. Con esta información lo que hacen es construir una

representación en tres dimensiones de la planta y con ello poder contar cuántos frutos va a

tener para poder optimizar al máximo la cadena de producción, poder saber la densidad de

hojas que hay en una planta para analizar su capacidad de fotosíntesis y saber cómo de

sana está la planta o detectar la enfermedad de Clorosis en los árboles. Con este sistema

dicen que podrían mejorar la producción un 10% y disminuir por ejemplo el agua que

necesita una planta en realidad un 25%.

Page 42: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTADO DE LA CUESTIÓN

24

3.2 MODELO DE IOTSIMPLE

La siguiente aportación la hace IoTSimple [13] que lo que propone es que la gestión de

cultivos en la agricultura inteligente implica consigo actividades de monitoreo,

herramientas de soporte para la toma de decisiones y la realización de acciones que

controlen automáticamente uno o varios sistemas como pueden ser el de riego, protección

de heladas, fertilización… Propone una solución basada en una serie de sensores,

dispositivos y una aplicación informática que permita obtener una información detallada

del cultivo, el suelo y de las variaciones climáticas.

El sistema que ofrecen dicen que está en permanente evolución y que presenta variables

propias permitiendo incorporar todas aquellas que el cliente requiera en base a sus

necesidades y las que sus asesores expertos le soliciten. Algunos de los beneficios

concretos que aporta este sistema son la reducción de costos, las mejoras en el proceso y en

el cuidado de los cultivos, la optimización en el empleo de recursos materiales y humanos,

el aumento del rendimiento por hectárea cultivada, la mayor calidad de producto final y la

disminución de descarte, el cumplimiento de exigencias nacionales e internacionales de

características de producción y producto…

Por ejemplo en la reducción de costos intervendría el monitoreo en línea de la temperatura

y la humedad del suelo para detectar si el entorno es propicio para la proliferación de

hongos y plagas en los cultivos y así poder aplicar los fertilizantes y funguicidas de forma

eficaz y precisa obteniendo una reducción de costos. Para el aumento de calidad de

producto: se realizarían mediciones en línea del tamaño del tallo y de la fruta o cultivo de

que se trate, el nivel de agua requerido para riego y el valor de la Radiación

Fotosintéticamente Activa para medir las condiciones de fotosíntesis. La información

recolectada la almacenan para poder realizar luego informes estadísticos, trazabilidad,

extraer datos para ejecutar acciones correctivas o preventivas, emitir alertas…

Adicionalmente, se pueden generar avisos o alertas en dispositivos móviles de

procesamiento de datos o teléfonos móviles.

Page 43: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTADO DE LA CUESTIÓN

25

3.3 MODELO DE SIEGA SYSTEM

Siega System [14] es un modelo de IoT en el campo de la viticultura que ha sido

desarrollado por el Grupo Austen en Pontevedra. El sistema es capaz de monitorizar

parámetros medioambientales como la temperatura y la humedad u otros parámetros

relacionados con la agricultura como la precipitación, el viento o la salud de las hojas. Los

investigadores del Grupo Austen han creado varios modelos estadísticos de predicción de

plagas para los viñedos. Con este sistema pueden predecir 3 tipos de plagas: mildiu, oídio y

botrytis. Por un lado el sistema permite monitorizar los viñedos en tiempo real para

predecir las posibles plagas que se puedan producir y así minimizar el impacto de éstas

antes de que se produzcan. Por otro lado el sistema permite monitorizar y controlar el

estado de la vid desde su plantación hasta su manufacturación. Para todo esto utilizan

los Waspmotes creados por la empresa Libelium. Un modelo muy parecido a este también

se ha implantado en Suiza y permite también la predicción de plagas en los viñedos [15].

3.4 DIFERENCIACIÓN

Como se puede observar estos ejemplos son parecidos pero cada uno tiene cosas que hacen

que sea diferente del otro. Lo que está claro es que todos tienen como objetivo mejorar la

producción para hacerla más eficiente utilizando la sensorización para procesar los datos

de una manera inteligente y útil.

Lo se busca con este proyecto de fin de grado en particular y que es por lo que éste se va a

diferenciar de los demás proyectos de este tipo es que se va a llegar a dar una solución

integral y escalable sin mucho esfuerzo, comparándolo a si no utilizáramos una Plataforma

IoT. Esto significa que no se van a desarrollar todos los campos específicos que se

necesitan en un proyecto IoT de Smart Agriculture, sino que se va a utilizar el servicio que

ofrece la plataforma de Bluemix para poder dar una solución a este problema. Además no

habrá que preocuparse de estudiar los tipos de sensores que existen en el mercado y que se

necesitarían para este proyecto en concreto, sino que se va a hacer el proceso a la inversa;

se utilizarán los sensores integrados dentro del SimpleLink SensorTag de Texas

Page 44: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTADO DE LA CUESTIÓN

26

Instruments para ver cómo unos sensores de investigación universitaria se pueden adaptar

para dar una solución IoT con análisis de datos. Esto es porque lo que de verdad importa es

qué haces con los datos y cómo lo procesas, no importa tanto el tipo de sensor que se

utilice.

Desarrollando el sistema de esta manera y obteniendo los requisitos clave para el viticultor

se podrá reducir la complejidad de estos sistemas, reducir costes operativos y ofrecer un

producto y un servicio de calidad al viticultor con una interfaz gráfica apropiada para que

la modernización de los cultivos sea factible.

Modelo Utilización de una

Plataforma IoT

Coste Sensorización

Conferencia TedX No Alto Drones

IoT Simple No Medio Sensores

especializados en

agricultura

Siega System No Alto Sensores

especializados en

agricultura

Este proyecto Si Medio/Bajo Adaptado a todo

tipo de sensores

Tabla 1: Comparativa de sistemas de Smart Agriculture

Page 45: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

27

Capítulo 4. DEFINICIÓN DEL TRABAJO

4.1 JUSTIFICACIÓN

Se ha decidido hacer un proyecto sobre IoT porque es un sector que está en auge y por

ejemplo como explica Miguel Labín, Managing Director de Accenture Strategy [16]

"Ahora mismo se abre una ventana de oportunidad para que las empresas más ágiles se

posicionen ante la explosión del Internet de las Cosas".

Según recuentes estudios, la Organización de las Naciones Unidas para la Agricultura y la

Alimentación ha revelado que si la población mundial crece hasta 9,1 billones en 2050, se

necesitará un incremento del 70% en la producción general de alimentos [17]. Debido a

este principal problema se debe encontrar una solución para hacer más efectivos nuestros

métodos de cultivo y así poder abastecer a la población mundial. Esta es una de las razones

por las que se ha elegido orientar el proyecto IoT al campo de la agricultura. En concreto

se ha decidido orientarlo al campo vinícola para que el proyecto se concentre en un solo

tipo de cultivo y luego poder aplicar las mismas técnicas pero con otros requisitos a otros

tipos de cultivo en un futuro.

Además, según estudios publicados en el periódico El País [18], los campos de cultivo son

uno de los sitios a los que más está tardando en llegar la automatización. España es el país

con más terreno dedicado al cultivo de la vid [19], es por ello que una gran cantidad de

inversores extranjeros (mexicanos, chinos y rusos principalmente) han puesto sus ojos en

los vinos españoles [20] . La informatización del proceso de cultivo y de los datos

registrados dentro de la bodega podrían dar a estos inversores información de su

producción de vino a miles de kilómetros de distancia en tiempo real.

El IoT tiene un potencial muy grande para poder incrementar la productividad en el sector

de la agricultura. Según un estudio realizado por ‘Beecham Research’ [21], empresa de

investigación, análisis y consultoría de tecnología puntera en el mercado, el IoT podría

Page 46: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

28

incrementar la producción de comida en un 70% para abastecer a una población estimada

de 9.600 millones de personas en 2050. Por ejemplo, midiendo la humedad, la temperatura

y la luz es posible detectar posibles enfermedades que las plantas vayan a

desarrollar. Además, los sensores de la tierra podrían recoger información relativa al modo

en el que el agua fluye por el campo y así permitir controlar los distintos cambios de

humedad y temperatura (niveles de nitrógeno y carbón del suelo también pero con nuestros

sensores no podemos) que se puedan producir en un momento dado. De esta manera los

agricultores pueden usar esta información para cambiar los calendarios de riego y así evitar

dañar la delicada vid.

Esto no es una mera invención, ya con los sistemas tradicionales de monitorización con las

estaciones meteorológicas básicas sin ningún sistema IoT se pueden publicar noticias como

la siguiente: “La estación meteorológica del grupo bodeguero Matarromera ha detectado

un aumento de temperatura media en el suelo del viñedo y un índice de humedad más bajo

que 2014. Se prevé un estado fitosanitario óptimo de la vid con bajo riesgo de

enfermedades fúngicas de la planta. El ciclo vegetativo de los viñedos de Grupo

Matarromera se desarrolla a un ritmo adecuado e incluso ligeramente adelantado. [22]”

La capacidad que nos da el IoT supone una gran ventaja, pero no sólo requiere sensores y

conexión a internet de los dispositivos para poder desarrollar un servicio potente. Detrás de

toda esta infraestructura creada se necesita una base de datos que se encargue de recoger,

almacenar, procesar y gestionar una gran cantidad de datos para darle sentido a la

sensorización. En este último punto es donde más se va a centrar este proyecto.

No solo se ha decidido continuar adelante con este proyecto por la capacidad que tiene la

SmartAgriculture en el mundo del vino, sino porque en la universidad no se tiene

conocimiento sobre el tipo de plataformas que vamos a utilizar para la docencia ni sobre el

mundo IoT. Éste sería un muy buen ejemplo para poder desarrollar una tecnología puntera

en estos momentos y además investigar sobre como dar soluciones IoT de manera sencilla.

Page 47: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

29

4.2 OBJETIVOS

El proyecto se va a dividir en 2 partes y es por ello que va a tener 2 objetivos principales

con sub-objetivos dentro de ellos:

1. Estudio y análisis del servicio IoT de Bluemix.

1.1. Estudio del dispositivo que actuaría como sensor para la recolección de datos.

1.2. Investigación de las posibilidades que nos da la aplicación Node Red.

1.3. Identificación de los servicios que ofrece Bluemix para crear soluciones IoT

basadas en Node Red.

1.4. Estudio de la interconexión de las herramientas de visualización con un

desarrollo propio.

1.4.1. Estudio de la visualización de gráficos en tiempo real.

1.4.2. Estudio de la visualización de tablas de datos históricos para filtrar sus

resultados según una búsqueda.

2. Desarrollo de un sistema IoT de monitorización agrícola en el campo vinícola.

2.1. Estudio de los datos que vamos a utilizar de los sensores para la viticultura

mediante entrevistas e información de internet.

2.2. Análisis y estudio de los casos de uso para los datos recibidos de los sensores.

2.3. Desarrollo de los gráficos que sean los más adecuados para el agricultor para

mostrar información en tiempo real y datos históricos.

2.4. Análisis y desarrollo de cómo proporcionar al agricultor alertas de

determinados parámetros a la web y la publicación de datos en twitter o al

email.

4.3 METODOLOGÍA Y RECURSOS

El calendario que se observa en la Figura 7 es una aproximación ya que no se sabe

realmente cuánto tiempo puede durar la investigación inicial. A este calendario se le añade

Page 48: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

30

una reunión semanal todos los martes con el director de proyecto para ver la evolución del

mismo e intentar utilizar una metodología Scrum. Además se tiene un viaje el 16 de abril a

La Rioja para entrevistar a una serie de enólogos y viticultores para poder definir los

requisitos del sistema de Smart Agriculture

Se ha planteado el siguiente calendario de trabajo:

4.3.1 SCRUM

La metodología Scrum es un proceso en el que se aplican de manera regular una serie de

buenas prácticas para trabajar en equipo y poder obtener el mejor resultado en un proyecto.

Esta es la nueva manera que se usa actualmente para trabajar en equipos altamente

productivos y, aunque el TFG sea un proyecto con una nota individual el equipo en este

caso está formado por el director de proyecto y el alumno.

En Scrum lo que se hace es que se realizan entregas parciales y regulares del producto final

priorizando el beneficio que aportan al proyecto; en este caso se van realizando entregas

Figura 7: Calendario de trabajo

Page 49: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

31

progresivas semana a semana del proyecto. Por tanto, Scrum está indicado para proyectos

en los que se necesita obtener resultados pronto, donde los requisitos son cambiantes o

poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad

son fundamentales. Esta metodología también se usa para resolver situaciones en que no se

está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los

costes se disparan o la calidad no es aceptable… Estas últimas características descritas se

producen en el desarrollo de este proyecto ya que este es un proyecto innovador en el que

los requisitos pueden cambiar, se tienen que cumplir una serie de entregas, el director de

proyecto puede querer modificar algo que no le gusta a medio camino… por tanto la

metodología que se usa es la adecuada [23].

4.3.2 RECURSOS

Como principales recursos se acudirá a una serie de páginas de ayuda a la programación y

a documentación específica de Bluemix. Se han consultado las siguientes páginas para

recibir ayuda de soporte del uso de la plataforma y obtener una visión general del conjunto

[24] :

Bluemix Developers Community - https://developer.ibm.com/bluemix/#overview

Stackoverflow - http://stackoverflow.com/questions/tagged/bluemix

dW Answers - https://developer.ibm.com/answers/smart-spaces/12/bluemix.html

IBM Bluemix on developerWorks -

http://www.ibm.com/developerworks/cloud/bluemix/index.html

IBM Bluemix Docs - https://www.ng.bluemix.net/docs/

Containers-

https://www.ng.bluemix.net/docs/containers/container_index.html#container_ov

DevOps - https://hub.jazz.net/docs

Page 50: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

32

4.4 PLANIFICACIÓN Y ESTIMACIÓN ECONÓMICA

En este apartado se ha realizado una aproximación de los costes de los recursos humanos y

materiales necesarios para poder llevar a cabo este proyecto. En los recursos humanos el

coste se estimará según las horas trabajadas en el proyecto y el perfil de las personas que se

ha necesitado para desempeñar esta labor. En los recursos materiales se incluirán el precio

de la plataforma en el caso de que hubiéramos tenido que usar la plataforma de pago en

vez de la versión de prueba gratis para universidades, el precio del sensor con el que se ha

estado trabajando y el coste aproximado de los viajes de recolección de información para

definir los requisitos.

4.4.1 RECURSOS HUMANOS

En el caso de este proyecto, dado que tiene 2 fases principales diferenciadas, se va a añadir

una fase de investigación de la plataforma antes de la del desarrollo de un prototipo de

Smart Agriculture; ambas supondrán un coste para el proyecto. Por lo tanto las tareas que

se van a tener en cuenta para los costes son las siguientes [25]:

- Gestión del proyecto: Los objetivos más importantes son administrar, coordinar,

planificar, controlar y realizar un seguimiento de todas las actividades y los

recursos asignados para que la ejecución del proyecto se finalice correctamente y

en los tiempos establecidos [26].

- Estudio y análisis de la plataforma IoT Foundation de Bluemix: El principal

objetivo es identificar cómo funciona la plataforma y las posibilidades que ofrece

para desarrollar un prototipo de Smart Agriculture.

- Análisis de requisitos: En esta fase del proyecto lo que hay que hacer es encontrar

información acerca de las necesidades que pueden tener los viticultores en cuanto a

que información les sería útil obtener de sus campos a través de la monitorización

de éstos. Esta información se debe obtener mediante entrevistas a gente que trabaje

en este sector y/o mediante la búsqueda por internet.

Page 51: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

33

- Diseño: El diseño gráfico tanto de la web como arquitectónico para cubrir los

requisitos identificados.

- Implementación: Hacer posible que se cumplan los requisitos y el diseño

especificados mediante la programación del entorno web.

- Verificación: Verificar que todos los objetivos han sido cumplidos, que todo

funciona correctamente, hacer cambios si es necesario y documentar todo el

trabajo.

En la siguiente tabla podemos ver el número de horas por tarea que debe realizar cada

perfil de persona:

Tareas Jefe de

Proyecto

Analista

Funcional

Junior

Analista/

Programador

Programador

Junior

Consultor

Junior

Gestión de

Proyectos

90 20

Estudio y análisis

de la plataforma

IoT Foundation de

Bluemix

10 80 20 2

Análisis de

requisitos

5 30

Diseño 3 30

Implementación 2 100

Verificación 5 5

Horas trabajadas 115 110 50 100 27

Tabla 2: Horas trabajadas por tarea y perfil (Total: 402)

Page 52: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

34

Según las tarifas actuales de coste por hora y perfil profesional proporcionadas por la

empresa Spinmedia [27] que podemos encontrar en el Anexo G, el coste de los recursos

humanos para realizar el proyecto ha sido el siguiente:

Perfil profesional Horas trabajadas Tarifa (PVP/h) Total (€)

Jefe de Proyecto 115 55 6.325

Analista Funcional

Junior

110 40 4.400

Analista/

Programador

50 33 1.650

Programador

Junior

100 23 2.300

Consultor Junior 27 40 1.080

Tabla 3: Coste de los recursos humanos (Total: 15.755€)

Por lo tanto, el coste de los recursos humanos de este proyecto ha sido de 15.755 €.

4.4.2 RECURSOS MATERIALES

Como se ha mencionado anteriormente, los costes materiales van a ser de 3 tipos:

4.4.2.1 Coste del Cloud Computing con Bluemix

En el caso de este desarrollo, se ha obtenido una licencia especial para universidades que

era gratis hasta cierto límite de memoria y de instancias, pero si no se hubiera obtenido

esto, el coste al mes hubiera sido lo siguiente según los cálculos hechos por el propio

Bluemix:

Page 53: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

35

Figura 8: Estimación de costes de Bluemix [28]

Por lo tanto, como para realizar este proyecto se hubiera necesitado un permiso de 7 meses,

los costes del uso de la plataforma hubieran sido de 7 x 18,15 = 127,05 €.

4.4.2.2 Coste del sensor para las pruebas realizadas

Según la página web de Texas Instruments, el coste del sensor SensorTag 2.0 y sus

especificaciones son las siguientes:

Figura 9: Precio del SensorTag 2.0 [29]

Por lo tanto el coste del sensor en euros ha sido aproximadamente de 26 €.

Page 54: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DEFINICIÓN DEL TRABAJO

36

4.4.2.3 Coste del viaje de búsqueda de información a La Rioja

Se hizo un viaje a La Rioja en el mes de Abril para entrevistar a distintas personas expertas

en viticultura para poder definir unos requisitos realistas. El coste aproximado de ese viaje

de un fin de semana fue de unos 200€.

Page 55: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

37

Capítulo 5. ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

5.1 CONCEPTOS IOT FOUNDATION

La mayoría de los conceptos se han estudiado con la ayuda de la siguiente referencia: [30].

5.1.1 ORGANIZACIONES

Al registrarse en Internet of Things Foundation obtiene un ID de organización de 6

caracteres exclusivo para cada cuenta. Éste será útil por ejemplo en algunos procesos de

identificación de dispositivos. Los datos solo son accesibles desde sus dispositivos y

aplicaciones. Una vez registrados, los dispositivos y las claves de API se vinculan a una

sola organización. Es imposible por seguridad la comunicación entre organizaciones dentro

del ecosistema de Internet of Things Foundation.

5.1.2 DISPOSITIVOS

• Un dispositivo puede ser cualquier objeto que tenga conexión a internet y

proporcione datos.

• Un dispositivo no puede interactuar directamente con otros.

• Los dispositivos pueden aceptar mandatos de las aplicaciones.

• Los dispositivos se identifican de forma exclusiva a sí mismos en IoT Foundation

con una señal de autenticación que solo se aceptará para dicho dispositivo.

• Los dispositivos se deben registrar antes de poderse conectar a IoT Foundation.

5.1.3 APLICACIONES

Una aplicación es cualquier cosa con conexión a internet que desea interactuar con datos

de dispositivos y/o controlar el comportamiento de esos dispositivos de alguna manera. Las

aplicaciones se identifican a sí mismas en IoT Foundation con una clave de API y un ID de

aplicación exclusivo.

Page 56: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

38

5.1.4 SUCESOS

Los sucesos son el mecanismo mediante el cual los dispositivos publican datos en Internet

of Things Foundation. El dispositivo controla el contenido del suceso y asigna un nombre

para cada suceso que envía. Las aplicaciones pueden procesar en tiempo real los sucesos

de los dispositivos. Cuando una aplicación recibe un suceso, tiene visibilidad del origen del

suceso y de los datos contenidos en ese suceso. Las aplicaciones se pueden suscribir a

todos los sucesos de todos los dispositivos, a un subconjunto de sucesos, un subconjunto de

dispositivos o una combinación de estos sucesos.

5.1.5 MANDATOS

Los mandatos son el mecanismo mediante el cual las aplicaciones se pueden comunicar

con los dispositivos. Solo las aplicaciones pueden enviar mandatos, que se deben emitir en

dispositivos específicos.

5.1.6 DISPOSITIVOS GESTIONADOS Y NO GESTIONADOS

Los dispositivos gestionados son dispositivos que contienen un agente de gestión3. Los

dispositivos gestionados pueden realizar operaciones de gestión de dispositivos como

actualizaciones de ubicaciones, descarga y actualizaciones de firmware y rearranque y

restablecimiento de fábrica.

Un dispositivo no gestionado es un dispositivo sin agente de gestión. Los dispositivos no

gestionados se pueden conectar a Internet of Things Foundation y enviar y recibir eventos

y mandatos. No pueden enviar solicitudes de gestión de dispositivos o llevar a cabo

operaciones de gestión de dispositivos.

3 Conjunto de lógicas que permiten al dispositivo interactuar con el servicio de gestión de dispositivos de Internet of Things Foundation a través del protocolo de gestión de dispositivos.

Page 57: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

39

5.1.7 ALMACENAMIENTO DE SUCESOS HISTÓRICOS

El almacenamiento de sucesos históricos permite a los usuarios almacenar datos de los

dispositivos añadidos a su organización de Internet of Things Foundation. La actividad y la

duración del almacenamiento de sucesos históricos pueden controlarse desde el panel de

valores en el panel de control de Internet of Things Foundation.

El almacenamiento de sucesos históricos utiliza un nivel de calidad de servicio MQTT de 0

(entrega como máximo una vez), por lo que algunos datos pueden perderse. El

almacenamiento de sucesos históricos puede consultarse utilizando la API de Internet of

Things Foundation.

5.1.8 CREAR UNA APLICACIÓN IOT FOUNDATION

1. Registrase en Bluemix e ir al Panel de Control Central.

Figura 10: Crear una app IoT Foundation (paso 1)

Page 58: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

40

2. Dar a “Internet of Things Platform Starter”.

Figura 11: Crear una app IoT Foundation (paso 2)

3. Rellenar los datos y dar a “Crear”, se aconseja no dejar espacios en blanco en el

nombre de la aplicación y de host.

Figura 12: Crear una app IoT Foundation (paso 3)

Page 59: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

41

4. Saldrá el panel de ayuda, volver al panel de control y después abrir la app IoT-Trial

que se acaba de crear.

Figura 13: Crear una app IoT Foundation (paso 4a)

Figura 14: Crear una app IoT Foundation (paso 4b)

Page 60: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

42

5.1.9 REGISTRAR EL SENSORTAG EN BLUEMIX

Para esta sección se ha tenido en cuenta los pasos de la siguiente referencia: [31].

1. Se necesita obtener unos datos primero para introducir en la aplicación del

smartphone. Se obtienen de la siguiente manera:

1.1. Ir a la nueva versión de Bluemix.

Figura 15: Obtener datos IoT Foundation para el sensor (paso 1)

1.2. Entrar en la sección de “Internet de las Cosas”.

Figura 16: Obtener datos IoT Foundation para el sensor (paso 2)

1.3. Abrir el vínculo señalado.

Figura 17: Obtener datos IoT Foundation para el sensor (paso 3)

Page 61: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

43

1.4. Abrir el panel de control de los dispositivos.

Figura 18: Obtener datos IoT Foundation para el sensor (paso 4)

1.5. Darle a “Dispositivos” en el panel de la izquierda y luego a “Añadir

dispositivo”.

Figura 19: Obtener datos IoT Foundation para el sensor (paso 5)

1.6. Crear un tipo de dispositivo.

Figura 20: Obtener datos IoT Foundation para el sensor (paso 6)

Page 62: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

44

1.7. Rellenar los campos y darle a “Siguiente”.

Figura 21: Obtener datos IoT Foundation para el sensor (paso 7)

1.8. Darle a “Siguiente” sin tocar nada en las siguientes pantallas.

Figura 22: Obtener datos IoT Foundation para el sensor (paso 8)

1.9. Seleccionar el tipo de dispositivo que acabamos de crear y darle a “Siguiente”.

Figura 23: Obtener datos IoT Foundation para el sensor (paso 9)

Page 63: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

45

1.10. Introducir el ID del dispositivo que corresponde ID Device que encontramos

cómo buscarlo en el Anexo A Apartado A.1. Darle a “Siguiente”.

Figura 24: Obtener datos IoT Foundation para el sensor (paso 10)

1.11. Darle a “Siguiente”.

Figura 25: Obtener datos IoT Foundation para el sensor (paso 11)

1.12. Escribir y apuntar la señal escrita para más tarde recordarla.

Figura 26: Obtener datos IoT Foundation para el sensor (paso 12)

Page 64: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

46

1.13. Darle a “Añadir”

Figura 27: Obtener datos IoT Foundation para el sensor (paso 13)

1.14. Guardar bien los datos que se muestran en la imagen y cerrar.

Figura 28: Obtener datos IoT Foundation para el sensor (paso 14)

Page 65: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

47

2. Se necesita introducir los datos obtenido en la parte 1 a la aplicación del sensor. Para ello seguir en la aplicación del sensor

todos y cada uno de los pasos marcados en las imágenes en orden.

Page 66: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

48

Figura 29: Pasos para registrar un dispositivo

Esto es el panel de control de los dispositivos

Page 67: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

49

El resultado de la vinculación obtenido es el siguiente:

Figura 30: Resultado del registro del dispositivo

Page 68: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

50

5.2 NODE-RED

5.2.1 ¿QUÉ ES NODE-RED?

Node-RED se puede definir como una herramienta open-source que contiene un editor

visual para ‘cablear’ el sistema IoT producido de una forma intuitiva y sencilla. Permite al

desarrollador dejar de preocuparse del interfaz de código que va a tener que escribir y

centrase en el desarrollo del proyecto en conjunto [32].

El programa contiene una serie de ‘nodos’ en su menú que son unos simples iconos que

mediante un movimiento de ‘drag & drop’ los dejas en el panel central y los unes con unas

líneas para interconectar funcionalidades. Cada nodo ofrece una funcionalidad diferente y

éstos aparecen por defecto en el menú o se pueden personalizar programándolos con

JavaScript uno mismo o cogiéndolo de las librerías de la página web GitHub en el que se

pueden encontrar los nodos o flujos desarrollados por otras personas. En el repositorio se

pueden encontrar unos 225,000 módulos y es muy fácil añadir funcionalidad a un nodo.

Los flujos que se han mencionado anteriormente se guardan usando JSON4 y se importan a

la zona de trabajo de una manera muy fácil.

Los flujos creados se pueden compilar en el mismo runtime con un simple ‘click’. Además

el runtime que utiliza es muy ‘light’ ya que usa Node.js y toma ventaja del modelo de no-

bloqueo. Esto hace que Node-RED sea el programa ideal para utilizar en los bordes de la

red usando sensores low-cost y el servicio cloud [33].

4 Subconjunto de la notación literal de objetos de JavaScript y alternativa al XML [70]

Page 69: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

51

5.2.2 ABRIR NODE-RED DESDE BLUEMIX IOT

1. Abrir el link seleccionado en la imagen. En ocasiones este vínculo puede ser

modificado entonces para entrar en Node-RED hay que poner la misma URL pero

con un /red detrás.5

Figura 31: Abrir Node-RED (paso 1)

2. Dar a “Go to your Node-RED flow editor”.

Figura 32: Abrir Node-RED (paso 2)

5 A veces hay que usar una conexión https para poder entrar si es que no te lo permite con http.

Page 70: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

52

5.2.3 DESCRIPCIÓN DEL ENTORNO

En la Figura 8 se pueden ver cuáles son las partes de las que se compone el entorno de la

herramienta.

Panel de trabajo (escritorio): Es el espacio en el cual se van a arrastrar los nodos

e interconectar para formar los flujos. Se pueden abrir varios escritorios con el

botón de ‘+’ para que se abran nuevas pestañas y crear otros flujos por separado

para ordenar el espacio de trabajo.

Barra lateral izquierda: Se encuentran los nodos por default de los que se hablará

más tarde y los creados por el desarrollador.

Barra lateral derecha: Se pueden distinguir 2 pestañas. La de ‘info’ contiene

información de para qué sirve el nodo o de cómo se usa y la de ‘debug’ es dónde se

encuentran los resultados de la ejecución de los flujos que aparecen en formato

JSON.

Botón de ‘Deploy’: Sirve para compilar y ejecutar el programa para ver los

resultados en la pestaña de ‘debug’.

Menú esquina superior derecha: Se puede ver el contenido de lo que ofrece en la

Figura 8. Se pueden hacer cosas como importar o exportar flujos, configurar los

nodos, obtener ayuda en la web o saber cuáles son los atajos que se pueden usar con

el teclado.

Page 71: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

53

Figura 33: Entorno de Node-RED

Figura 34: Menú Node-RED

Page 72: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

54

5.2.4 NODOS DEFAULT

En el Node-RED se puede encontrar por defecto 4 tipos principales de nodos que son los

que se ven en la Figura 10:

Figura 35: Tipos de nodos

Se irá describiendo la utilidad de los distintos tipos de etiquetas más en profundidad y el

lenguaje utilizado en los nodos de función a medida que vayan saliendo nuevos nodos en

los casos ejemplo pero para hacerse una idea se puede ver su principal utilidad en las

tablas: Tabla 2, Tabla 3, Tabla 4, Tabla 5, Tabla 6, Tabla 7, Tabla 8, Tabla 9 [34] [35].

Page 73: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

55

Nombre del Nodo Descripción

Inyecta un estímulo o un mensaje

configurado por el desarrollador. Se puede

inyectar manualmente pulsando sobre él o

configurando el nodo para un intervalo de

tiempo o momento preciso.

Captura errores lanzados por los nodos. Se

puede detallar el mensaje de error de

respuesta y saber el nodo en el que se está

produciendo el error.

Se subscribe a un ‘topic’ de un bróker

MQTT y devuelve los datos publicados

como mensajes nuevos. Soporta algunos

niveles de QoS.

Recibe HTTP requests permitiendo a Node-

RED actuar como servidor web básico. El

body del http se manda como mensaje de

salida conteniendo datos estándar URL o

JSON. También se manda una response.

Proporciona un endpoint para que el

navegador establezca una conexión

websocket con Node-RED.

Se usa para aceptar tcp requests que llegan

a determinado puerto o para conectarse a un

puerto remoto.

Se usa para aceptar paquetes udp o

multicast que lleguen a un puerto

específico.

Page 74: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

56

Lee de un puerto serial en el dispositivo

local. También puede ser configurado para

leer buffers en un periodo de tiempo

específico o esperar en determinados

instantes.

Informa del estado de los mensajes desde

otros nodos de la misma sección.

Proporciona un MQ Light receptor de

cliente. MQ Light sirve para organizar la

arquitectura interna de una app.

Es un nodo de input usado por IBM para el

IoT Foundation usado para recibir eventos

mandados desde dispositivos produciendo

un objeto llamado msg y declara un

msg.payload como un String que contiene

el contenido del mensaje.

Tabla 4: Nodos de Input

Nombre del Nodo Descripción

Sirve para activar o desactivar los mensajes

que aparecen en el panel de debug. Se

puede configurar para mostrar el mensaje

del objeto completo o seleccionar

determinados parámetros con el

msg.payload.[atributo].

Se subscribe a un bróker MQTT y publica

cualquier dato (msg.payload) que reciba de

los mensajes que lleguen sobre un ‘topic’.

Soporta QoS.

Page 75: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

57

Manda responses respondiendo a las http

requests del nodo de input http. La response

corresponde al msg.payload y puede tener

cabeceras y código de estado definido.

Manda msg.payload por el websocket

configurado. Se puede mandar a un cliente

específico o como broadcast a todos los

clientes conectados.

Responde a un puerto tcp configurado.

Manda mensajes udp al host y el puerto

configurado. Soporta broadcast.

Manda datos a un puerto serie definido.

Proporciona un MQ Light emisor de cliente.

MQ Light sirve para organizar la

arquitectura interna de una app.

Manda un sms usando el servicio de Twilo

Manda notificaciones push a smartphones

usando IBM Push notification para

Bluemix.

Es un nodo de salida que se usa junto con

IoT Foundation para mandar datos a un

dispositivo.

Tabla 5: Nodos de output

Nombre del Nodo Descripción

Es una función genérica programable

usando JavaScript. Se puede generar 1 o

varias vías de salida para las conexiones

con diferentes condiciones.

Page 76: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

58

Se usa para insertar texto para construir

mensajes, html, ficheros de

configuración…

Nodo genérico que retrasa los mensajes un

tiempo arbitrario o definido.

Crea 2 mensajes de salida separados

durante cierto intervalo de tiempo cuando

se recibe un mensaje.

Para insertar mensajes visuales al lado de

los nodos.

Te permite construir y mandar http

requests a una url específica. Los métodos,

cabeceras y payload son configurables.

Manda msg.payload a un puesto del

servidor tcp y espera una respuesta. Se

puede configurar para que espere a cierto

carácter especial o que mande

inmediatamente.

Enruta los mensajes basándose en ciertas

condiciones.

Se usa para especificar, cambiar o eliminar

propiedades de cierto mensaje entrante.

Sirve para escalar los distintos valores

numéricos que entren, redondeando,

truncando o cambiando los decimales de

los números.

Si el nodo recibe un String, devuelve un

objeto JavaScript y viceversa.

Page 77: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

59

Extrae elementos de un documento html y

los pone en formato msg.payload usando

un selector configurable.

Convierte un objeto JavaScript a un JSON

y viceversa.

Convierte un objeto JavaScript a un XML

y viceversa.

(Report By Exception) Genera un mensaje

solamente cando su entrada es diferente de

la entrada anterior, o si el mensaje de

entrada ha incrementado/disminuido por

cierto valor.

Tabla 6: Nodos de función

Nombre del Nodo Descripción

Lee los emails de un servidor IMAP

devolviendo el nuevo email según llegue. El

asunto lo identifica como msg.topic y el

texto de dentro como msg.payload.

Devuelve tweets de una cuenta como si

fueran mensajes. Se puede usar por ejemplo

para buscar ciertos mensajes en los que

aparezca algún término en concreto.

Manda mensajes en formato email via el

servidor de IMAP configurado.

Tuitea el msg.payload a la cuenta que se

configure.

Tabla 7: Nodos de social

Page 78: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

60

Nombre del Nodo Descripción

Llama a la collection de MongoDB

basándose en el operador seleccionado.

Lee el archivo específico y manda el

contenido como msg.payload al hdfs de

IBM.

Escribe el msg.payload en el hdfs en el

archivo en concreto por ejemplo para crear

un log.

Es un nodo para buscar documentos en una

BBDD Cloudant.

Es un nodo SQLDB para ejecutar las

queries.

Es un nodo DashDB para ejecutar las

queries.

Es un nodo MongoDB de salida para

guardar, insertar, actualizar y eliminar

objetos de una collection.

Es un nodo Cloudant de salida que guarda el

msg en la BBDD.

Es un nodo SQLDB de salida que guarda el

msg.payload en el servicio.

Es un nodo DashDB de salida que guarda el

msg.payload en el servicio.

Tabla 8: Nodos de almacenamiento

Page 79: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

61

Nombre del Nodo Descripción

Utiliza algoritmos de aprendizaje

para devolver las clases predefinidas

que más se parezcan a trozos de texto

cortos.

Analiza texto UTF-8 para detectar el

lenguaje usado en el texto y muestra

el código de lenguaje ISO.

Traduce de un idioma a otro.

Saca del texto la personalidad y la

característica social de una persona.

Busca la relación entre sustantivos,

verbos, sujetos… Puede sacar

eventos, organizaciones, personas …

de un texto desestructurado o

encontrar la relación entre estos

elementos.

Convierte la voz del ser humano en

texto.

Convierte el texto en voz del ser

humano, hablado por una máquina.

Ayuda a tomar mejores decisiones

cuando hay varios condicionantes o

posibilidades.

Analiza las imágenes para entender

su contenido.

Tabla 9: Nodos de IBM_Watson

Page 80: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

62

Nombre del Nodo Descripción

Sentiment es un nodo que utiliza AFINN-

111 wordlist para analizar sentimientos

expresados en un trozo de texto.

Usa Alchemy APIs para analizar URLs

externas, archivos HTML o contenido en un

texto.

Usa Alchemy APIs para analizar imágenes,

detección de caras, tags o links.

Tabla 10: Nodos de Análisis

Nombre del Nodo Descripción

Monitoriza RSS/atom de las noticias que

salen nuevas.

Tabla 11: Nodos Avanzados

5.2.5 EJEMPLOS NODE-RED

Es esta sección se describirán algunos ejemplos de flujos de Node-RED para que se puedan

entender mejor las descripciones de los usos de los nodos más importantes. En la mayoría

de los casos se podrá ver la comparación entre el uso de un nodo node-RED específico y el

uso de un nodo de función programado a mano. Alguno de estos ejemplos o algunas ideas

de cómo usar los nodos se han tomado de la siguiente referencia bibliográfica: [36]

Page 81: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

63

5.2.5.1 Ejemplo ‘Hola Mundo’

Figura 36: Ejemplo ‘Hola Mundo’

Page 82: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

64

5.2.5.2 Ejemplo de uso de varios Inputs y Outputs

Figura 37: Ejemplo outputs/inputs

Solo sale ´high´ cuando se aprieta al input de high

Page 83: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

65

5.2.5.3 Obtener datos de un sensor

Para obtener los datos de un sensor lo primero que tenemos que hacer es sabes cuál es el Device ID de nuestro dispositivo. En el

caso del SensorTag podemos encontrar en el ANEXO A Apartado A.1 cómo saber cuál es el que le

corresponde a nuestro sensor.

Figura 38: Ejemplo obtención datos de un sensor

Page 84: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

66

5.2.5.4 Ejemplos de funciones, templates, switches y cambios

Figura 39: Ejemplos de funciones, templates, switches y cambios

Page 85: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

67

5.2.5.5 Ejemplo cambio de variables

Figura 40: Ejemplo cambio variables

Page 86: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

68

5.2.5.6 Ejemplos de triggers y delays

Figura 41: Ejemplos triggers y delays

‘context’ se usa para guardar el valor anterior medido por el sensor [73].

Page 87: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

69

5.2.5.7 Ejemplos de redondeos, cambios y rbe

[71]

Figura 42: Ejemplos de redondeo, cambios y rbe

Page 88: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

70

5.2.5.8 Ejemplos mandar tuit, email y cómo usar un nodo programado por otro

5.2.5.8.1 Cómo instalar un nodo de información sobre el tiempo externo

El nodo que se va a instalar en el node-RED va a sacar información del

tiempo de la siguiente página web: http://openweathermap.org/appid.

A) Para ello lo primero que hay que hacer es registrarse en el

servicio de la siguiente manera [37]:

1. Entramos en la página http://openweathermap.org/appid:

Figura 44: Página web openweather

2. Nos registramos dándole a ‘Sign up’

Figura 45: Crear account openweather

Figura 43: Nodo

openweather

Page 89: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

71

3. Guardar la API Key, esta clave será muy importante porque la necesitaremos

introducir en el Node-RED:

Figura 46: API Key openweather

B) Luego tenemos que instalar el nodo para que salga en el menú izquierdo de node-

RED [38]:

1. Se va al panel de control de la aplicación que se creó en Bluemix y se le da

‘Añadir Git’.

Figura 47: Añadir un Git (paso 1)

2. Se le da a ‘Continuar’ y luego a ‘Cerrar’

Figura 48: Añadir un Git (paso 2)

Page 90: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

72

3. Se pincha en la url del Git creado en la parte superior derecha del panel de

control de la app.

Figura 49: Configurar el Git (paso 1)

4. Darle a ‘Edit Code’

Figura 50: Configurar el Git (paso 2)

5. Ir a ‘package.json’ y añadir la línea subrayada en verde en el código. Se sabe

que hay que añadir ese nombre y esa versión yendo a la web de los nodos

‘costumizados’ de node-RED [39]. Finalmente darle a ‘play’ para que se

guarden los cambios. El nuevo nodo aparecerá en la aplicación Node-RED.

Figura 51: Configurar el Git (paso 3)

Page 91: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

73

5.2.5.8.2 Crear el flujo para que nos avise de si los cielos están despejados

[72] Ir al ANEXO A Apartado A.2 para saber

cómo quitar la seguridad del email y mirar los

‘tips’ de la contraseña

Figura 52: Ejemplo nodo weather + tweet + email

Page 92: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

74

5.2.5.9 Realizar la media de varios datos entrantes

5.2.5.9.1 Descargar el nodo “Smooth”

1. Se pincha en la url de Git en la parte superior derecha del panel de

control de la app.

Figura 53: Entrar en el repositorio Git

2. Ir a ‘package.json’ y añadir la línea subrayada en verde en el código. Se

sabe que hay que añadir ese nombre y esa versión yendo a la web de los

nodos ‘costumizados’ de node-RED [40]. Finalmente darle a ‘play’ para

que se guarden los cambios. El nuevo nodo aparecerá en la aplicación

Node-RED.

Figura 54: Instalación del nodo nuevo del repositorio

Page 93: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

75

5.2.5.9.2 Crear el flujo para hacer la media

Figura 55: Flujo para hacer la media [Descargar en: Anexo C - Apartado C.1 ]

8 + 5 + 10 + 74

= 7,5

Page 94: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

76

5.2.5.10 Usar la base de datos de Cloudant con Node-RED

5.2.5.10.1 Crear la Base de Datos y definir sus parámetros

1. Se abre el servicio de Cloudant que encontramos en el panel de control. En el caso

de no encontrarlo darle a “Añadir servicio o api” y agregar el servicio de Cloudant

del catálogo.

Figura 56: Crear una Base de datos Cloudant (paso 1)

2. Darle a “Launch”.

Figura 57: Crear una Base de datos Cloudant (paso 2)

3. Darle a “Create Database” y poner un nombre a la base de datos.

Figura 58: Crear una Base de datos Cloudant (paso 3)

Page 95: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

77

4. En este ejemplo hemos creado una base de datos con el nombre de “nodered2”. Lo

que se hace ahora es definir los parámetros de búsqueda en la base de datos con el

“Search Index”. Para ello se le da al “+” en “Design Documents” y luego a “New

Search Index” [41].

Figura 59: Crear una Base de datos Cloudant (paso 4)

5. Se pone el nombre al documento y al index que se quiera y en el espacio para poner

el código de la función de búsqueda siempre se usa el siguiente formato [42]:

Index(“nombre que se va a usar para hacer la búsqueda”, dato que se va a buscar siguiendo la estructura del JSON guardado en al BBDD,{“store”:true});

Figura 60: Crear una Base de datos Cloudant (paso 5)

Page 96: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

78

Nota: Si se requiere editar la función hacer lo siguiente:

Figura 61: Editar la función de búsqueda de Cloudant

5.2.5.10.2 Crear un flujo de ejemplo para guardar los datos del sensor en la base de

datos creada

Figura 62: Flujo para guardar datos en una BBDD [Descargar en: Anexo C - Apartado C.2]

Page 97: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

79

5.2.5.10.3 Crear un flujo ejemplo para recoger los datos de una base de datos

Cloudant según una búsqueda

En este caso la búsqueda que se va a realizar va a ser según la temperatura que recoja el

sensor y que haya guardado en la base de datos “nodered2”. El parámetro de búsqueda se

introducirá por ejemplo mediante un formulario (podemos ver un ejemplo de ello en el

siguiente apartado) y se recogerá en una url con el dominio que estamos usando en la app

de Bluemix seguido de “/datos” (como se puede ver en el primer nodo http). Se sabrá el

dato al que queremos acceder porque la última parte de la url será “?temp=numero

introducido en el formulario”. Con lo cual, si se pone por ejemplo en la url

directamente:https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=26.66 se recibirán en el

navegador muchos datos en formato JSON de todos los mensajes en los que la temperatura

sea 26.66.

Figura 63: Flujo para recoger los datos de una base de datos Cloudant según una búsqueda [Descargar en: Anexo C -

Apartado C.3)]

5.2.5.11 Usar un template para crear un formulario y mostrar los datos de la

búsqueda por Ajax o JSON

En este caso se va aprovechar la búsqueda que se quería realizar anteriormente en la base

de datos para poder introducir el dato a buscar a través de un formulario y mostrar los

datos uno a uno usando Ajax (los datos se mostrarán en formato JSON tal y como salen de

la BBDD) y JSON (solo se mostrarán los datos que nos interese mostrar).

Page 98: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

80

5.2.5.11.1 Formulario + Ajax

Configurando el flujo de la siguiente manera y poniendo en la url: https://iot-pruebas.eu-

gb.mybluemix.net/formularioA obtenemos el siguiente resultado:

Figura 64: Formulario + Ajax [Descargar en: Anexo C - Apartado C.4]

Dentro del template de “Formulario Ajax” encontramos el siguiente código:

<!DOCTYPE html> <html> <body> <p>Realiza la busqueda por temperatura</p> <div class ="labelsFormulario"> Temperatura: <input id="temp" type="text"/> <br/><br/> </div> <div class ="botonFiltrar"> <input id="btnFltr" type="submit" value="Filtrar" onclick="javascript:return mostrarLista();" /> </div> <div id="contenidoFitr"></div> <div id="errorMensaje"></div> <script> function peticionAJAX(url, idDiv) { var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) document.getElementById(idDiv).innerHTML = xmlHttpReq.responseText; } xmlHttpReq.open('GET', url, true); xmlHttpReq.send();

Page 99: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

81

} function mostrarLista() { var temp= document.getElementById("temp").value; if(temp) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp; peticionAJAX(url,'contenidoFitr'); return true; }else{ document.getElementById("contenidoFitr").style.display = 'none'; document.getElementById("errorMensaje").style.display = 'block'; document.getElementById("errorMensaje").innerHTML = "Debe introducir un mensaje"; return false; } } </script> </body> </html>

5.2.5.11.2 Formulario + JSON

Configurando el flujo de la siguiente manera y poniendo en la url: https://iot-pruebas.eu-

gb.mybluemix.net/formularioJ obtenemos el siguiente resultado:

Figura 65: Formulario + JSON [Descargar en: Anexo C - Apartado C.5 ]

Dentro del template de “Formulario JSON” encontramos el siguiente código:

Page 100: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

82

<!DOCTYPE html> <html> <head> <style> .estilo{ width:200px; text-align:center; float:left; } </style> </head> <body> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> <p>Realiza la busqueda por temperatura</p> <div class ="labelsFormulario"> Temperatura: <input id="temp" type="text"/> <br/><br/> </div> <div class ="botonFiltrar"> <input id="btnFltr" type="submit" value="Filtrar" onclick="javascript:return mostrarLista();" /> </div> <br/><br/> <div class="columna"> <div class="estilo"> ID Sensor </div> <div class="estilo"> Fecha </div> <div class="estilo"> Temperatura </div> <div class="estilo"> Humedad </div> <div class="estilo"> Luz </div> <br><br></div> <div class="inner"></div> <script> function peticionJSON(url) { var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( ".inner" ).empty(); var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var id = objetoJSON[i].d.magX; var date = objetoJSON[i].d.objectTemp; var res = date.split("T"); var fecha = res[0]; var temp = objetoJSON[i].d.ambientTemp; var hum = objetoJSON[i].d.humidity;

Page 101: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

83

var luz = objetoJSON[i].d.light; var apptext = "<div><div class='estilo'>" + id + "</div><div class='estilo'>" + fecha + "</div><div class='estilo'>" + temp + "</div><div class='estilo'>" + hum + "</div><div class='estilo'>" + luz + "</div></div><br/>"; $( ".inner" ).append(apptext); } } } xmlHttpReq.open('GET', url, true); xmlHttpReq.send(); } function mostrarLista() { var temp= document.getElementById("temp").value; if(temp) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp; peticionJSON(url); return true; }else{ document.getElementById("contenidoFitr").style.display = 'none'; document.getElementById("errorMensaje").style.display = 'block'; document.getElementById("errorMensaje").innerHTML = "Debe introducir un mensaje"; return false; } } </script> </body> </html>

5.3 CREAR EL PRIMER SERVIDOR CON NODE.JS

Para algunas funcionalidades de algunas aplicaciones como por ejemplo la autenticación

de usuarios es necesaria la creación de un servidor. En este caso se creará con la ayuda de

Node.js. Hay que destacar que con la versión de prueba que se tiene contratada para este

proyecto no se puede montar 2 servidores (el de Node-RED más otro) en la misma

aplicación debido a que se está usando una versión de prueba y no se tiene suficiente

capacidad.

Page 102: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ESTUDIO Y ANÁLISIS DEL SERVICIO IOT DE BLUEMIX

84

Para montar la estructura básica de este servidor entonces y tener un “Hola Mundo”

predispuesto lo que se hace es ir a catálogo de Bluemix y seguir los siguientes pasos:

- Darle a “SDK for Node.js”

Figura 66: Montar un servidor con Node.js (paso 1)

- Rellenar los campos y darle a “Crear

Figura 67: Montar un servidor con Node.js (paso 2)

- Si vamos en el panel de control de la app al repositorio Git como se ha contado

anteriormente podemos ver toda la estructura del servidor y tener todas las

dependencias básicas instaladas en el package.json. Lo único que hay que hacer

ahora es buscar en la api de express.js [43] para conseguir hacer lo que se quiera

hacer con el servidor. En el prototipo se verá el código que se usará para realizar

una autenticación en una página web por ejemplo.

Page 103: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

85

Capítulo 6. DESARROLLO DE LA SOLUCIÓN IOT:

VINIOT

Como resultado de la investigación previa de la plataforma IoT Foundation de Bluemix en

este capítulo se van a mostrar los resultados de la construcción del prototipo de Smart

Agriculture para el campo vinícola.

6.1 REQUISITOS

Según los datos recogidos en las entrevistas hechas a las personas que entienden de

viticultura (ANEXO B) y a la búsqueda de información en internet [44] [45] [46], se han

definido los siguientes requisitos para el prototipo:

1. El usuario debe poder iniciar sesión con un nombre y una contraseña.

2. El usuario tiene que poder consultar 3 gráficas en tiempo real de los sensores de

temperatura, humedad y luz.

3. El usuario tiene que poder obtener una imagen en formato .png .jpg .pdf o vector de

los gráficos en tiempo real en cualquier instante.

4. El usuario tiene que poder comunicarse mediante un chat con otros usuarios que

tengan el mismo sistema contratado.

5. El usuario tiene que poder consultar el twitter mediante un widget. En éste se harán

publicaciones automáticas mostrando:

a. Si los cielos están despejados en la bodega y los viñedos para facilitar esa

información a los visitantes.

b. El 31 de Agosto si la cosecha de la añada ha sido buena o no. Esto se sabe si

cumplen las siguientes condiciones durante los meses de Julio y Agosto:

i. 25<Temperatura media<30

ii. 60<Humedad media<70

Page 104: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

86

6. El usuario tiene que tener disponible un calendario para poder consultarlo del ciclo

de vida de los viñedos.

7. El usuario tiene que tener disponible un acceso directo a las consultas de las

previsiones del tiempo en su zona.

8. El usuario debe poder realizar búsquedas entre los datos históricos recogidos por

los sensores según ciertos parámetros de temperatura, humedad, luz y/o fecha para

que sean desplegados en una tabla responsiva.

9. El usuario debe poder tener acceso directo a su Gmail para poder consultar las

alertas en tiempo real que le han llegado.

10. El usuario debe recibir alertas en el Gmail y que sean guardadas en un histórico

para poder ser consultadas en los siguientes casos:

a. Cuando se vayan a producir heladas:

i. Temperatura < 1ºC

b. Cuando la tierra necesite regarse:

i. Humedad relativa < 40%

ii. Temperatura > 30ºC

c. Cuando haya riesgo de enfermedades fúngicas:

i. Humedad relativa > 80%

ii. 15ºC < Temperatura < 20ºC

iii. Luz < 100 lux

d. Cuando se deba retrasar la poda 10 días a mediados de Enero:

i. Media del 1-15 Enero de la temperatura < 4ºC

6.2 ARQUITECTURA CLIENTE-SERVIDOR

La arquitectura cliente-servidor es un modelo de distribución en el que las tareas se

reparten entre los servicios, llamados servidores, y los demandantes, llamados clientes.

Básicamente, un cliente realiza peticiones al servidor, y éste le responde [47].

En este proyecto se ha decidido crear 2 aplicaciones dentro de Bluemix una que se llamará

IoT Pruebas y otra NodeApp. La primera tendrá toda la lógica del proyecto dentro del

Page 105: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

87

servidor de Node-RED, acceso a varias bases de datos Cloudant y todas las interfaces

menos la de login en la parte del cliente. La segunda aplicación servirá de autenticación

para el usuario utilizando un servidor Node.js configurado específicamente. En el esquema

general de la arquitectura de la siguiente página se puede apreciar la división explicada:

Page 106: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

88

IoT Pruebas

NodeApp

Front-end

Back-end

(Servidor

Node.js)

Cloudant

BBDD

Front-end

Back-end

(Servidor

Node.js)

W-S

HTTP

REQ/

RESP

TWITTER

&

GMAIL

MQTT (IoT Default)

OPEN

WEATHR

MAP

EXPRESS

.JS

CFENV

Browser

GW

Sensor

viniothome24, tiempo, regadio,

historicos, heladas, corregirpoda,

calendario, botrytis

login

nodered2 poda botrytis

regadio heladas

CLOUDANT

Figura 68: Estructura general del proyecto

Page 107: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

89

6.2.1 BACK-END

Se distinguirán 2 servidores: el de la aplicación IoT Pruebas, que usará el servidor de

Node-RED ya definido previamente al crear el proyecto de IoT Foundation, y el de la

aplicación NodeApp, que usará un servidor Node.js como el ya explicado en uno de los

apartados de la descripción de Bluemix anteriormente.

6.2.1.1 Servidor de NodeApp

Este servidor, el Node.js, se utilizará para dar validez a la autenticación del usuario y

permitirle pasar cuando introduzca un usuario y contraseña adecuados. Hay que

mencionar que este método que se está usando no es del todo seguro, pero lo que se quería

demostrar con esto no era la seguridad, sino el cómo montar un servidor Node.js en

Bluemix y alguna aplicación que podía tener. Básicamente consiste en configurar los

paquetes necesarios en el package.json y en escribir el siguiente código para acceder al

servidor y para comprobar los datos introducidos por el usuario:

var express = require('express'); var cfenv = require('cfenv'); // crea un servidor express.js var app = express(); app.use(express.static(__dirname + '/public')); //la llamada del action se recoge en esta parte y se ejecuta lo que haya dentro app.get('/auth', function (req, res) { var user = req.query.email; var psw = req.query.password; if(user == "VinIoT24" && psw == "111111") {

res.redirect('https://iot-pruebas.eu-gb.mybluemix.net/ VinIoT/pages/viniothome24.html');

}else{ res.redirect('http://nodeappprueba.eu-gb.mybluemix.net/'); } }); // get the app environment from Cloud Foundry var appEnv = cfenv.getAppEnv(); // start server on the specified port and binding host app.listen(appEnv.port, '0.0.0.0', function() { // print a message when the server starts listening console.log("server starting on " + appEnv.url); });

Page 108: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

90

6.2.1.2 Servidor de IoT Pruebas

En este caso se usará Node-RED y su interfaz para configurar todas las funcionalidades

que se vayan a necesitar. Se dividirán las secciones en las siguientes:

6.2.1.2.1 Sección de los Gráficos en tiempo real

El siguiente flujo muestra cómo se cogen los datos que interesan del sensor para

posteriormente ser mandados utilizando un web socket. Para ver la configuración completa

de cada uno de los nodos se pueden descargar los flujos copiando y pegando el código

JSON que se encuentra en el Anexo E – Apartado E.1 en la sección de importar del Node-

RED.

Figura 69: Flujos para los gráficos en tiempo real

6.2.1.2.2 Sección de Alertas

En esta parte encontramos las alertas que se reciben tanto en tiempo real a través del email

como en la web a través de una petición a la base de datos. Las alertas son las de heladas,

falta de agua, enfermedades fúngicas y las de retrasar la poda. Estas alertas tienen la

estructura que se muestra en las siguientes imágenes. Principalmente, se reciben los datos

del sensor, se definen una serie de condiciones que se van a describir al lado de cada

imagen del flujo del tipo de alerta y se guardan las alertas en una base de datos de Cloudant

a la vez que se manda un email al viticultor. Para recoger los datos de la base de datos se

hace una petición http request a la base de datos y ésta respondo con un http response con

Page 109: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

91

todos los datos solicitados. Para ver la configuración completa de cada uno de los nodos se

pueden descargar los flujos copiando y pegando el código JSON que se encuentra en el

Anexo E – Apartado E.2 en la sección de importar del Node-RED.

Alertas de heladas

Figura 70: Flujo de las alertas de heladas

La condición para que se dé la alerta es que la temperatura baje de 1ºC.

Alertas de activar el regadío

Figura 71: Flujo de alertas para activar el regadío

Las condiciones para activar el regadío son que la temperatura sea mayor que 30ºC y la

humedad menor que 40%rH.

Page 110: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

92

Alertas de la enfermedad de Botrytis

Figura 72: Flujo de alertas para avisar de una posible enfermedad (Botrytis)

Las condiciones para que salte esta alerta son que las temperaturas sean entre 15-20ºC, que

la humedad sea mayor que 80%rH y que la luz sea menor que 100lux.

Alertas de retrasar la poda

Figura 73: Flujo de las alertas de retrasar la poda a mediados de Enero

Las condición es que si la media de las temperaturas entre el 1 de enero y el 15 de Enero es

menor que 4ºC hay que retrasar la poda 10 días.

Page 111: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

93

6.2.1.2.3 Sección del Chat

Aquí se puede ver un flujo con una entrada y una salida usando un socket y un

establecimiento de la sesión entre medias. Para ver la configuración completa de cada uno

de los nodos se pueden descargar los flujos copiando y pegando el código JSON que se

encuentra en el Anexo E – Apartado E.3 en la sección de importar del Node-RED.

Figura 74: Flujo del chat

6.2.1.2.4 Sección de los datos históricos

Aquí se puede ver como cada 3 segundos se guardan en la base de datos de Cloudant

(nodered2) los datos recibidos del sensor. Previamente se manipulan esos datos para

añadirle a cada mensaje la fecha y la hora en la que se ha realizado esa medición y el id del

sensor desde dónde ha llegado la información. Después para recoger los datos se ha de

hacer una http request mandando los parámetros según los que buscar en la BBDD, hacer

una selección y mandar solo los solicitados mediante un http response. Para ver la

configuración completa de cada uno de los nodos se pueden descargar los flujos copiando

y pegando el código JSON que se encuentra en el Anexo E – Apartado E.4 en la sección de

importar del Node-RED.

Page 112: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

94

Figura 75: Flujo para guardar y mostrar los datos históricos

6.2.1.2.5 Sección de Tweets

Esta parte es un medio de comunicación automático que tendrá la empresa con los

consumidores. Para ver la configuración completa de cada uno de los nodos se pueden

descargar los flujos copiando y pegando el código JSON que se encuentra en el Anexo E –

Apartado E.5 en la sección de importar del Node-RED. Hay 2 tipos de avisos que se

pueden publicar en twitter:

1. Avisar de que los cielos están despejados a los clientes para informarles de que

pueden visitar la bodega y los viñedos sin problema. Esta información se recogerá

del nodo que conecta con OpenWeathermap.

Figura 76: Flujo para mandar un tweet informativo del estado del tiempo

2. Aviar de que la añada de las cosecha de ese año ha sido excelente. Este Tweet solo

se publicará el 31 de Agosto si se cumplen las condiciones de que durante los

meses de Julio y Agosto la temperatura media sea entre 25ºC y 30ºC y la humedad

esté entre el 60%rH y el 70%rH.

Page 113: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

95

Figura 77: Flujo para mandar un tweet sobre la calidad del vino de ese año

6.2.2 FRONT-END

Como plantilla para el diseño de la web se ha utilizado la siguiente referencia de Bootstrap:

[48]. Para explicar la parte de cliente se va a utilizar un diagrama de navegabilidad y las

partes más destacadas del código. Hay que destacar que en cada una de las páginas hay una

barra lateral que actúa como menú desde la que se puede acceder a cualquiera de las

páginas.

6.2.2.1 Panel de Control

En esta es la página principal del proyecto en la que está el panel de control o “dashboard”.

Si se quiere acceder a todo el código, se puede encontrar en el Anexo D - Apartado D.1. En

ella destacan los siguientes elementos:

Figura 78: Casos de uso panel de control

Consultar gráficos en tiempo real

Consultar tweets

Hablar por el chat

Acceso directo a Gmail y alertas

Guardar imagen gráfica

Page 114: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

96

6.2.2.1.1 Un acceso rápido a cuatro páginas

El acceso rápido es a las páginas de Gmail y a las alertas de heladas, regadío y de la

enfermedad Botrytis. Lo que se ha utilizado para dar paso a estas páginas ha sido la

siguiente parte de código: <a href="https://mail.google.com/mail/u/0/#inbox" target="_blank"> <a href="regadio.html"> <a href="heladas.html"> <a href="botrytis.html">

6.2.2.1.2 Tres gráficos en tiempo real de los sensores

Hay 3 gráficos que reciben datos cada 3 segundos de los diferentes sensores de

temperatura, humedad y luz. Se representan de una manera responsiva y dinámica sobre el

‘eje x’ (hora) y ‘eje y’ ( temperatura(ºC) / humedad(%rH) / luz(lux) ). Además se puede

obtener una captura en formato .jpg, .png, .pdf o vector de un instante determinado del

gráfico. Estos gráficos se han hecho utilizando: [49] y la api de la librería correspondiente:

[50]. Los aspectos más importantes del código son los siguientes (solo se van a mostrar los

de uno de los gráficos porque la mecánica es igual para los 3):

- Referenciar dónde se va a situar el gráfico en el código html:

<div id="graficoLuzRT" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

- Meter el código JavaScript en un archive a parte para tener todo más organizado:

<script src="../bower_components/graficosRT/dist/graficoLuzRT.js"> </script>

- Cargar todas las librerias HighCharts:

<script src="../bower_components/highCharts/dist/HighCharts.js"></script> <script src="../bower_components/highCharts/dist/HighChartsExport.js"> </script>

Page 115: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

97

- Recibir los datos a través de un socket definido en node-RED:

var socketaddy = "wss://iot-pruebas.eu-gb.mybluemix.net/ws/luz"; sock = new WebSocket(socketaddy); var datos; sock.onmessage = function(evt) { console.log("Websocket message", evt); datos = parseFloat(evt.data); }

- Definir dónde, cómo y el intervalo de tiempo en el que se posicionarán los datos en

la gráfica:

events: { load: function () { // set up the updating of the chart each second var series = this.series[0]; setInterval(function () { var x = (new Date()).getTime(), // current time y = datos; series.addPoint([x, y], true, true); }, 3000); } }

- Activar el campo de exporting para que podamos descargar los gráficos:

exporting: { enabled: true },

6.2.2.1.3 Un Chat

Los viticultores podrán hablar mediante un chat en tiempo real con otros que tengan su

mismo sistema instalado para consultar cosas entre ellos. Esto se consigue usando web

sockets y un formulario. El flujo ejemplo de node-RED para poder crear el chat y la

estructura para recoger los datos del formulario se han cogido de: [51]. Los aspectos más

relevantes del código son:

Page 116: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

98

- Crear el formulario: <form role="form"> <fieldset> <div class="form-group"> <input id="user" class="form-control" placeholder="Usuario" autofocus> </div> <div class="form-group"> <input id="message" class="form-control" placeholder="Mensaje"> </div> <a onclick="sendMessage()" class="btn btn-lg btn-success btn-block">Enviar</a> </fieldset> </form>

- Crear el objeto WebSocket y su referencia:

var wsUri = "wss://iot-pruebas.eu-gb.mybluemix.net/ws/chat"; var ws = new WebSocket(wsUri);

- Coger los datos del usuario y el mensaje y mandarlos:

function sendMessage() { var user = document.getElementById('user'); var message = document.getElementById('message'); var payload = { message: message.value, user: user.value, ts: (new Date()).getTime() }; ws.send(JSON.stringify(payload)); message.value = ""; };

6.2.2.1.4 Un widget para ver el perfil de twitter

Como ya se sabe, servidor de Node-RED será el encargado de publicar 2 tipos de tweets

según una serie de condiciones en la cuenta de Twitter @IoT24. Estos tweets podrán ser

vistos por el viticultor desde un widget creado en el panel de control de la web. Para crear

el código del widget hay que iniciar sesión a una cuenta de Twitter y entrar en la siguiente

url: https://twitter.com/settings/widgets. A partir de ahí dar los siguientes pasos:

Page 117: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

99

1. Darle a “Crear Nuevo” “Perfil”

Figura 79: Crear un Widget de Twitter (paso 1)

2. Entramos el nombre del perfil que queremos tener en nuestra web.

Figura 80: Crear un Widget de Twitter (paso 2)

3. Seleccionar “Embedded Timeline”.

Figura 81: Crear un Widget de Twitter (paso 3)

Page 118: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

100

4. Copiar el código que se ha generado.

Figura 82: Crear un Widget de Twitter (paso 4)

Por lo tanto el código que queda finalmente en el caso de este proyecto es:

<a class="twitter-timeline" data-lang="es" data-height="400" href="https://twitter.com/IoT24">Tweets by IoT24</a> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

6.2.2.2 El tiempo

En esta página el viticultor puede consultar la predicción del tiempo mediante un widget de

“The Weather Network”. Se obtiene el código rellenando el formulario de la siguiente

página: https://www.theweathernetwork.com/weather-widget . Se ha utilizado este widget

porque era el único que nos daba una seguridad de https que es la única que admite nuestro

proyecto. Si se quiere acceder a todo el código, se puede encontrar en el Anexo D -

Apartado D.2.

Figura 83: Casos de uso página del tiempo

Consultar el tiempo

Page 119: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

101

El código resultante en el caso de este proyecto es:

<div id="plemx-root"></div> <a href="http://www.theweathernetwork.com">The Weather Network</a> <script type="text/javascript"> var _plm = _plm || []; _plm.push(['_btn', 34791]); _plm.push(['_loc','esmx0001']); _plm.push(['location', document.location.host ]); (function(d,e,i) { if (d.getElementById(i)) return; var px = d.createElement(e); px.type = 'text/javascript'; px.async = true; px.id = i; px.src = ('https:' == d.location.protocol ? 'https:' : 'http:') + '//widget.twnmm.com/js/btn/pelm.js?orig=en_ca'; var s = d.getElementsByTagName('script')[0]; var py = d.createElement('link'); py.rel = 'stylesheet' py.href = ('https:' == d.location.protocol ? 'https:' : 'http:') + '//widget.twnmm.com/styles/btn/styles.css' s.parentNode.insertBefore(px, s); s.parentNode.insertBefore(py, s); })(document, 'script', 'plmxbtn'); </script>

6.2.2.3 Calendario del cuidado de los viñedos

Esta es una página estática en la que se muestra una imagen creada específicamente para

este proyecto del calendario del ciclo de vida de los viñedos. Se ha sacado la información

de la siguiente referencia: [52]. Si se quiere acceder a todo el código, se puede encontrar en

el Anexo d - Apartado D.3.

Figura 84: Casos de uso página del calendario

Para insertar la imagen se ha usado el siguiente código:

<img src="../images/calendario.jpg" alt="img" style="width:100%;height:100%;">

Consultar el calendario

Page 120: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

102

6.2.2.4 Búsqueda en el Histórico

En esta página el viticultor podrá consultar los datos de los registros de los sensores que

están guardados en la base de datos según unos parámetros introducidos. Si se quiere

acceder a todo el código, se puede encontrar en el Anexo D - Apartado D.4.

Figura 85: Casos de uso de la página del histórico

Por lo tanto las claves del código son las siguientes:

- El formulario por el que se recogen los datos:

<form role="form"> <fieldset> <div class="form-group"> <input id="date" class="form-control" placeholder="Fecha" autofocus> </div> <div class="form-group"> <input id="temp" class="form-control" placeholder="Temperatura"> </div> <div class="form-group"> <input id="hum" class="form-control" placeholder="Humedad"> </div> <div class="form-group"> <input id="light" class="form-control" placeholder="Luz"> </div> <a onclick="javascript:return mostrarLista();" class="btn btn-lg btn- success btn-block">Filtrar</a> </br><div id="errorMensaje"></div> </fieldset> </form>

Buscar en el histórico

Page 121: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

103

- El espacio en el que se va a formar la tabla responsiva:

<div class="panel-body" id="inner1"> <div class="inner3"></div> </div>

- Activar para que la tabla sea responsiva:

<script> $(document).ready(function() { $('#dataTables-example').DataTable({ responsive: true }); }); </script>

- Crear una función en JavaScript para saber seleccionar la url que le vamos a

mandar a la peticiónJSON según los datos introducidos:

function mostrarLista() { var date= document.getElementById("date").value; var temp= document.getElementById("temp").value; var hum= document.getElementById("hum").value; var light= document.getElementById("light").value; if(date && temp && hum && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp + "&hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(date && temp && hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp + "&hum=" + hum; peticionJSON(url); return true; }else if(date && temp && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp + "&light=" + light; peticionJSON(url); return true; }else if(date && hum && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" +

Page 122: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

104

date + "&hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(temp && hum && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp + "&hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(date && temp) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp; peticionJSON(url); return true; }else if(date && hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&hum=" + hum; peticionJSON(url); return true; }else if(date && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&light=" + light; peticionJSON(url); return true; }else if(temp && hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp + "&hum=" + hum; peticionJSON(url); return true; }else if(temp && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp + "&light=" + light; peticionJSON(url); return true; }else if(hum && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(date) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date; peticionJSON(url); return true; }else if(temp) {

Page 123: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

105

url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp; peticionJSON(url); return true; }else if(hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?hum=" + hum; peticionJSON(url); return true; }else if(light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?light=" + light; peticionJSON(url); return true; }else{ document.getElementById("errorMensaje").style.display = 'block'; document.getElementById("errorMensaje").innerHTML = "Debe rellenar al menos uno de los campos"; return false; } }

- Crear una función JavaScript para hacer una petición JSON cada vez que se pulse

el botón de filtrar y cree una nueva tabla cada vez con sus correspondientes datos

en el sitio que se indique (esto último se hace usando el comando append de Jquery

[53]):

function peticionJSON(url) { document.getElementById("errorMensaje").style.display = 'none'; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( "#inner1" ).empty(); $( ".inner2" ).empty(); $( ".inner3" ).empty(); var apptext1 ="<div class='dataTable_wrapper'><table class='table table-striped table-bordered table- hover' id='dataTables-example'><thead><tr><th>Id Sensor</th><th>Fecha</th><th>Temperatura</th> <th>Humedad</th><th>Luz</th></tr></thead> <tbody class='inner2'>"; $( "#inner1" ).append(apptext1);

Page 124: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

106

var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var id = objetoJSON[i].d.magX; var date = objetoJSON[i].d.objectTemp; var res = date.split("T"); var fecha = res[0]; var temp = objetoJSON[i].d.ambientTemp; var hum = objetoJSON[i].d.humidity; var luz = objetoJSON[i].d.light; var apptext2 = "<tr><td>" + id + "</td><td>" + fecha + "</td><td>" + temp + " </td><td class='center'> " + hum + "</td><td class='center'> " + luz + "</td></tr>"; $( ".inner2" ).append(apptext2); } var apptext3 = "</tbody></table></div>"; $( ".inner3" ).append(apptext3); $('#dataTables-example').DataTable({ responsive: true }); } } xmlHttpReq.open('GET', url, true); xmlHttpReq.send(); }

6.2.2.5 Alertas

En estas 4 páginas (alertas de heladas, regadío, enfermedades y retraso de poda) la

estructura es la misma y lo único que cambia es la referencia de la base de datos de la que

se cogen los datos, así que solo se explicará la parte del código correspondiente a

heladas.html. Si se quiere acceder a todo el código, se puede encontrar en el Anexo D –

Apartados: D.5 / D.6 / D.7 / D.8.

Page 125: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

107

Figura 86: Casos de uso de las alertas

Los aspectos más importantes del código son:

- El código HTML para que se establezcan las alertas en un sitio determinado de la

página:

<div class="row"> <div class="inner"></div> </div>

- El código HTML para que se carguen las alertas en la página haciendo referencia a

una petición JSON:

<body onload="peticionJSON()">

- El código JavaScript de la petición JSON, para cada uno de los objetos recibidos, se

recorre el array de objetos y se seleccionan los que nos interese mostrar en la tabla;

además la url hace referencia a la http request que se va a hacer en al Node-RED

para coger la response que se va a hacer después de pasar por la base de datos:

Consultar alertas de heladas

Consultar alertas de regadío

Consultar alertas de poda

Consultar alertas de botrytis

Page 126: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

108

function peticionJSON() { var url="https://iot-pruebas.eu-gb.mybluemix.net/infoHeladas"; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( ".inner" ).empty(); var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var pl = objetoJSON[i].payload; var apptext = "<div class='col-lg-4'><div class='panel panel-info'><div class='panel-heading'>Alerta Helada</div><div class='panel-body'>" + pl + "</div></div></div>"; $( ".inner" ).append(apptext); } } } xmlHttpReq.open('GET', url, true); xmlHttpReq.send(); }

6.2.2.6 Autenticación

Esta parte del cliente estará en la aplicación NodeApp y servirá como interfaz para acceder

al servidor de autenticación previamente explicado. La parte más importante del código y

la esencial es la del formulario que veremos detallada a continuación.

Figura 87: Diagrama de secuencia Login

app.js viniothome24.html

auth(user,pws) OK - redirect accesoDenegado

Page 127: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

109

Si se quiere acceder a todo el código, se puede encontrar en el Anexo D – Apartado D.9.

<form action="/auth" method="GET"> <fieldset> <div class="form-group"> <input type="text" name="email" class="form-control" placeholder="E-mail" autofocus> </div> <div class="form-group"> <input type="password" name="password" class="form-control" placeholder="Password"> </div> <input type="submit" value="Entrar" id="btnReg" class="btn btn-lg btn-success btn-block"/> </fieldset> </form>

Page 128: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

DESARROLLO DE LA SOLUCIÓN IOT: VINIOT

110

Page 129: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANÁLISIS DE RESULTADOS

111

Capítulo 7. ANÁLISIS DE RESULTADOS

Puesto que en el capítulo anterior ya se ha mostrado todo el proceso del desarrollo del

prototipo realizado gracias a la investigación previa de la plataforma que se ha descrito en

el Capítulo 5, en éste capítulo se describirá a groso modo el resultado visual de las partes

más importantes de la web que son: el panel de control, la búsqueda en el histórico, la

consulta del tiempo y la consulta de alertas.

7.1 RESULTADO GRÁFICO DE LA PÁGINA DEL TIEMPO

Figura 88: Resultado gráfico de las consultas del tiempo

Esta página cubre uno de los requisitos que se describieron al principio del Capítulo 6 que

era el de tener acceso directo a las previsiones del tiempo. Con este widget de “The

Weather Network” se satisface esta necesidad.

Page 130: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANÁLISIS DE RESULTADOS

112

7.2 RESULTADO GRÁFICO DE LA PÁGINA DEL PANEL DE CONTROL

Figura 89: Resultado gráfico del panel de control

Como se ha podido ver anteriormente en los casos de uso del panel de control (Figura 78),

el viticultor tiene acceso a: ver los gráficos de la información que están recolectando los

sensores en tiempo real, descargarse las imágenes de los gráficos en cualquier instante

Page 131: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANÁLISIS DE RESULTADOS

113

(formatos .jpg, .png, .pdf, vector), acceder al chat pata hablar con los viticultores que

también tengan este sistema contratado y acceder al acceso directo del Gmail y las alertas.

7.3 RESULTADO GRÁFICO DE LA PÁGINA DE LOS DATOS

HISTÓRICOS

Figura 90: Resultado gráfico de las búsquedas en el histórico

En esta sección el viticultor puede acceder rápidamente y de una manera muy cómoda y

ordenada a todos los datos recogidos por el sensor y filtrar los datos según los parámetros

que el elija.

Page 132: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANÁLISIS DE RESULTADOS

114

7.4 RESULTADO GRÁFICO DE UNA DE LAS PÁGINAS DE ALERTAS

Figura 91: Resultado gráfico de las alertas de heladas

Puesto que las páginas de alertas tienen la misma estructura solo se muestra una de ellas, la

de las heladas. En este caso se recuerda que la alerta de las heladas solo salta cuando la

temperatura es inferior a 1ºC. Estas alertas también se reciben en el Gmail en tiempo real,

pero este panel sirve para siempre tenerlas a mano como consulta en cualquier momento.

Se recuerdan aquí las condiciones para que salten las alertas:

1. Cuando se vayan a producir heladas:

a. Temperatura < 1ºC

2. Cuando la tierra necesite regarse:

a. Humedad relativa < 40%

b. Temperatura > 30ºC

3. Cuando haya riesgo de enfermedades fúngicas:

a. Humedad relativa > 80%

b. 15ºC < Temperatura < 20ºC

c. Luz < 100 lux

4. Cuando se deba retrasar la poda 10 días a mediados de Enero:

a) Media del 1-15 Enero de la temperatura < 4ºC

Page 133: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

CONCLUSIONES Y TRABAJOS FUTUROS

115

Capítulo 8. CONCLUSIONES Y TRABAJOS FUTUROS

8.1 CONCLUSIONES

Como ya se dijo al comienzo de esta memoria, las Plataformas IoT están ahora mismo en

el “Innovation Trigger”. Están empezando a tener presencia en el mercado, todavía no

están del todo asentadas en el mundo empresarial. Esta noticia convierte al proyecto en

uno de los más innovadores que pueden encontrarse en este momento porque todavía no se

ha experimentado con todo el potencial que pueden llegar a dar las plataformas IoT.

Lo anterior se ha visto claramente reflejado cuando se trataba con la plataforma de

Bluemix; puesto que no todo han sido ventajas como se expresaba al principio antes de

haber tenido la oportunidad de desarrollar un proyecto IoT en la nube. Estas son algunas de

las apreciaciones que he podido observar durante la fase de investigación:

• Al principio trabajar en la nube puede ser algo confuso porque no se está

acostumbrado a este tipo de entornos. El entorno del repositorio que usa Bluemix,

GitHub personalizado, no es muy intuitivo y es muy lento a la hora de compilar el

código. Además, no te da acceso al servidor Node.js que usa Node-RED; solo

puedes hacer cambios mediante la ventana de comandos o con la interfaz gráfica

que tiene. Debido a esto, hacer una copia de seguridad de los flujos creados no se

puede a no ser de que lo hagas manualmente exportando los gráficos. Esto es

importante mencionar porque durante la fase de investigación se borraron todos los

flujos con los que se estaba trabajando de un día para otro y a partir de entonces ya

se empezaron a hacer copias de seguridad manuales exportando los flujos en

formato JSON.

• Como la tecnología tiene apenas unos años, la información que se puede recolectar

de internet acerca de la plataforma es escasa o está anticuada, porque ahora mismo

la plataforma evoluciona muy rápidamente. Por ejemplo, se pudo apreciar un

cambio en la interfaz gráfica de Bluemix a mitad del desarrollo. Cabe que destacar

Page 134: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

CONCLUSIONES Y TRABAJOS FUTUROS

116

que los servicios técnicos y de consulta de IBM son muy cordiales, pero ni siquiera

ellos tienen muy claro cómo solucionar alguna de las preguntas que se plantearon o,

simplemente te decían que no se podía hacer (cuando luego sí que se consiguió

hacerlo gracias al gran trabajo de investigación realizado).

• Varias veces se tuvo que parar el desarrollo debido a que los servidores físicos en

Gran Bretaña estaban en reparación. Esto ocasionó un poco de retraso en el

proyecto en cierta fase, pero luego se recuperó el tiempo trabajando más horas.

• El entorno gráfico de desarrollo de Node-RED tiene un grandísimo potencial

gracias a la forma tan intuitiva que proporciona para poder programar y gracias a la

posibilidad de poder configurar otro tipo de nodos uno mismo para luego

integrarlos en la plataforma. Además, los nodos y flujos que se realizan pueden

subirse a su propio repositorio, por lo que se pueden encontrar varios casos ejemplo

que ayudan sobre todo al principio del estudio.

• Una de las cosas que se han echado en falta ha sido la posibilidad de poder migrar

toda la aplicación a la cuenta de Bluemix de mi director de proyecto para que todo

el proyecto completo, incluidos todos sus servicios perduraran en el tiempo. Al

final se ha tenido que hacer una copia individual de los flujos de Node-RED y

extraer la aplicación del repositorio de GitHub en un zip para meterlo en un drive

aparte.

• La cantidad de posibilidades que ofrece Bluemix a través de su catálogo sí que

proporciona una gran ventaja al desarrollador porque le facilita enormemente el

trabajo en alguno de los casos cuando se dominan los servicios correctamente.

Por último, hay que mencionar que todos los objetivos marcados en un principio se han

cumplido satisfactoriamente a pesar de alguna de las complicaciones previamente

mencionadas.

Page 135: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

CONCLUSIONES Y TRABAJOS FUTUROS

117

8.2 TRABAJOS FUTUROS

Este proyecto tiene una gran proyección a futuro y el prototipo desarrollado es la primera

versión a partir de la cual empezar a evolucionar el sistema. Este ha sido solo el primer

paso para poder construir una red de sensores distribuidos por todo el campo de viñedos.

Se ha desarrollado el prototipo usando un solo sensor, pero habría que ampliar esto para

una distribución uniforme de los sensores a distintos niveles para completar el desarrollo.

Además, se deberían de buscar otros sensores más específicos para la agricultura que

existen en el mercado porque el SensorTag solo ha servido para investigación.

También se podría ampliar la sección de alertas al viticultor y añadirle un servicio de

Twilo para que las alertas llegas en forma de sms en vez de al email. Este servicio no se

utilizó en este desarrollo porque el servicio de sms era de pago. No solo la sección de

alertas sino también se podría usar la base del desarrollo para ampliar el sistema a otro tipo

de cultivos que no sean solo los viñedos.

Otra posibilidad de ampliación del proyecto es la de crear una macro infraestructura de

regadío para que se gestione automáticamente en función de las predicciones del tiempo y

de los datos de los sensores de temperatura y humedad de los huertos. Con esto se podrán

prevenir por ejemplo las heladas o que los cultivos sufran por falta de agua, además el

ahorro de agua podría llegar a ser de hasta un 40% [54].

Por último, el uso de drones en la agricultura se está volviendo más y más popular estos

años. Con ellos se podría desarrollar un servicio de control de enfermedades avanzado,

implantándoles sensores RGB-D y ciertos algoritmos matemáticos. Además, los sensores

infrarrojos podrían escanear los viñedos y analizar la producción que va a haber por la

cantidad de hojas que tiene la planta y el nivel de fotosíntesis que va a poder llegar a

realizar.

Page 136: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

CONCLUSIONES Y TRABAJOS FUTUROS

118

Page 137: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

119

Capítulo 9. BIBLIOGRAFÍA

[1] E. P. Díaz, «Tendencias en tecnologías y servicios alrededor de las

telecomunicaciones: Las smart cities como caso práctico,» de Definición IoT,

Madrid, 2016.

[2] R. da Silva, «Big Data & Analytics in IBM Bluuemix: Twitter, dashDB and DevOps

demo,» Agosto 2015. [En línea]. Available:

https://www.youtube.com/watch?v=DV4iHUBJx-U.

[3] H. Levy, «Understand where technologies sit in the cycle of maturity for their

relevance to your organization,» Gartner, 20 Obtubre 2015. [En línea]. Available:

http://www.gartner.com/smarterwithgartner/whats-new-in-gartners-hype-cycle-for-

emerging-technologies-2015/.

[4] A. Velosa, Y. V. Natis, M. Pezzini, B. J. Lheureux y E. Goodness, «Market Guide

for IoT Platforms,» Gartner, 2 Julio 2015. [En línea]. Available:

https://www.gartner.com/doc/3086918/market-guide-iot-platforms.

[5] «IBM Bluemix,» IBM, [En línea]. Available: https://console.ng.bluemix.net/.

[6] «SaaS, IaaS y PaaS: Las tres clases de Cloud Computing,» NubeBlog, Octubre

2008. [En línea]. Available: http://nubeblog.com/2008/10/15/saas-iaas-y-paas-las-

tres-clases-de-cloud-computing/.

[7] «IBM Internet of Things Foundation,» IBM, [En línea]. Available:

https://internetofthings.ibmcloud.com/?cm_mc_uid=15884981095314478854401&c

m_mc_sid_50200000=1448286895#/.

Page 138: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

120

[8] «Multi-standard SensorTag,» Texas Instruments, [En línea]. Available:

http://www.ti.com/ww/en/wireless_connectivity/sensortag2015/tearDown.html.

[9] Anónimo, «Bluetooth de baja energía,» Wikipedia, 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Bluetooth_de_baja_energ%C3%ADa.

[10] «Watson Internet of Things on Bluemix,» IBM, [En línea]. Available:

http://www.ibm.com/cloud-computing/bluemix/internet-of-things/.

[11] «MQTT,» TST, [En línea]. Available: http://www.tst-sistemas.es/mqtt/.

[12] V. Kuma, «The future of flying robots,» Conferencia TedsPenn, Junio 2015. [En

línea]. Available: https://www.youtube.com/watch?v=sj3Pn_pogXw.

[13] «Agricultura Inteligente,» IoTSimple, [En línea]. Available:

http://www.iotsimple.com/agricultura-inteligente/.

[14] A. Bielsa, «Smart Agriculture project in Galicia to monitor vineyards with

Waspmote,» Siega System del Grupo Austen & Libelium, Junio 2012. [En línea].

Available:

http://www.libelium.com/smart_agriculture_vineyard_sensors_waspmote/.

[15] «Sensores en las viñas de Suiza para predecir plagas,» Libelium, Octubre 2015. [En

línea]. Available: http://www.libelium.com/elmundo-es-sensores-en-las-vinas-de-

suiza-para-predecir-plagas/#!prettyPhoto.

[16] M. Labín, «A las puertas de la revolución del Internet de las Cosas,» Expansión,

Octubre 2015. [En línea]. Available: http://www.expansion.com/economia-

digital/innovacion/2015/10/29/563273c346163ff55c8b458e.html.

[17] Intel, «Enólogos catan los viñedos inteligentes del último programa piloto de IoT de

Intel,» [En línea]. Available: http://www.intel.es/content/www/es/es/it-

Page 139: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

121

managers/intel-smart-vineyards.html.

[18] B. Guillén, «Seis aplicaciones robóticas que no conocías,» El País, Febrero 2016.

[En línea]. Available:

http://tecnologia.elpais.com/tecnologia/2016/01/29/actualidad/1454083353_665619.

html.

[19] A. Muñoz Moral, «España, país con más terreno dedicado al cultivo de la vid,»

Licores Reyes, Abril 2015. [En línea]. Available: http://licoresreyes.es/espana-pais-

con-mas-terreno-dedicado-al-cultivo-de-la-vid/.

[20] S. Gutiérrez, «Inversores extranjeros irrumpen con fuerza en las bodegas de Ribera

del Duero,» El Norte de Castilla, Obtubre 2014. [En línea]. Available:

http://www.elnortedecastilla.es/castillayleon/201410/13/inversores-extranjeros-

irrumpen-fuerza-20141012110731.html.

[21] K. Roberts, «IoT y BPM en la Agricultura Inteligente,» Aura Portal, Mayo 2015.

[En línea]. Available: http://blog.auraportal.com/es/iot-y-bpm-en-la-agricultura-

inteligente/.

[22] Vinetur, «La monitorización de viñedos provocará una producción de gran calidad

en 2015,» 21 Julio 2015. [En línea]. Available:

https://www.vinetur.com/2015072120304/la-monitorizacion-de-vinedos-provocara-

una-produccion-de-gran-calidad-en-2015.html.

[23] «Qué es Scrum,» Proyectos Ágiles, [En línea]. Available:

http://proyectosagiles.org/que-es-scrum/.

[24] IBM, «Email generado automáticamente por IBM en el que te muestran sus

servicios de ayuda,» Madrid, 2016.

Page 140: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

122

[25] Wikipedia, «Proceso para el desarrollo de software,» Julio 2016. [En línea].

Available:

https://es.wikipedia.org/wiki/Proceso_para_el_desarrollo_de_software#Planificaci.C

3.B3n.

[26] A. C. B. d. León, «Las Actividades de la Gestion de Proyectos,» Escuela de

Organización Industrial, 31 Enero 2012. [En línea]. Available:

http://www.eoi.es/blogs/awildacarolinaberiguete/2012/01/31/las-actividades-de-la-

gestion-de-proyectos/.

[27] «Spinmedia,» [En línea]. Available: http://spinmedia.es/.

[28] IBM, «Tarifas Bluemix,» [En línea]. Available: https://console.eu-

gb.bluemix.net/pricing/.

[29] T. Instruments, «IoT made easy,» [En línea]. Available:

http://www.ti.com/ww/en/wireless_connectivity/sensortag2015/?INTC=SensorTag

&HQS=sensortag.

[30] «Conceptos,» IBM Internet of Things Foundation, [En línea]. Available:

https://docs.internetofthings.ibmcloud.com/es/reference/concepts.html.

[31] rdmonk, «CC2650 SimpleLink™ Bluetooth® Smart BLE SensorTag,» Recipies -

IBM developerWorks, 9 Marzo 2015. [En línea]. Available:

https://developer.ibm.com/recipes/tutorials/connect-a-cc2650-sensortag-to-the-iot-

foundations-quickstart/.

[32] C. Mobberly, «What is Node-Red?,» Adafruit, [En línea]. Available:

https://learn.adafruit.com/raspberry-pi-hosting-node-red/what-is-node-red.

[33] «Node-RED,» Node-RED ORG, [En línea]. Available: http://nodered.org/.

Page 141: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

123

[34] Roberto, «Node RED Programming Guide - Lecture 4,» Octubre 2015. [En línea].

Available: http://noderedguide.com/index.php/2015/10/05/node-red-lecture-4-a-

tour-of-the-core-nodes/.

[35] «Inforación de Node-RED en la aplicación,» [En línea]. Available: http://iot-

pruebas.eu-gb.mybluemix.net/red/#.

[36] R. Lea y R. , «Node RED Programming Guide,» STS Developers, [En línea].

Available: http://noderedguide.com/.

[37] R. Lea, «A second flow: weather alerts,» STS Developers, 28 Octubre 2015. [En

línea]. Available: http://noderedguide.com/index.php/2015/10/28/node-red-lecture-

2-building-your-first-flows-15/.

[38] T. Pascoal, «Adding custom nodes to Node-RED in Bluemix,» YouTube, 26 Agosto

2014. [En línea]. Available: https://www.youtube.com/watch?v=HckTiCrEtsI.

[39] «node-red-node-openweathermap,» Node-RED, Octubre 2015. [En línea].

Available: http://flows.nodered.org/node/node-red-node-openweathermap.

[40] Node-RED, «node-red-node-smooth 0.0.8,» Junio 2016. [En línea]. Available:

http://flows.nodered.org/node/node-red-node-smooth.

[41] I. Cloudant, «Search Indexes,» [En línea]. Available: https://cloudant.com/for-

developers/search/.

[42] IBM, «IBM Cloudant Documentation,» [En línea]. Available:

https://docs.cloudant.com/creating_views.html#indexes.

[43] F. Node.js, «Express,» [En línea]. Available:

http://expressjs.com/es/guide/routing.html.

Page 142: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

124

[44] R. Interempresas, «Tecnologías inalámbricas para seguir el viñedo en tiempo real,»

15 Noviembre 2010. [En línea]. Available:

http://www.interempresas.net/Vitivinicola/Articulos/45028-Tecnologias-

inalambricas-para-seguir-el-vinedo-en-tiempo-real.html.

[45] P. B. Sáez, «Insolación, Pluviometría, Viento y Humedad Relativa en el Viñedo,»

11 Diciembre 2010. [En línea]. Available:

http://urbinavinos.blogspot.com.es/2010/12/insolacion-pluviometria-viento-y.html.

[46] P. B. Sáez, «Epocas de Poda en el Viñedo,» 27 Abril 2011. [En línea]. Available:

http://urbinavinos.blogspot.com.es/2011/04/epocas-de-poda-en-el-vinedo.html.

[47] Wikipedia, «Cliente-servidor,» 28 Junio 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Cliente-servidor.

[48] S. Bootstrap, «SB Admin 2,» [En línea]. Available:

http://startbootstrap.com/template-overviews/sb-admin-2/.

[49] HighCharts, «Highcharts Demos › Spline updating each second,» 2016. [En línea].

Available: http://www.highcharts.com/demo/dynamic-update.

[50] HighCharts, «CONFIGURATION OPTIONS,» 2016. [En línea]. Available:

http://api.highcharts.com/highcharts#Axis.

[51] L. Gustavo Ferraz y B. Steinfeld, «Build a real-time chat app with Node-RED in 5

minutes,» 8 Agosto 2014. [En línea]. Available:

http://www.ibm.com/developerworks/cloud/library/cl-rtchat-app/index.html.

[52] Victor, «De la cepa a la Botella,» Abril 2015. [En línea]. Available:

https://delacepaalabotella.wordpress.com/2015/04/01/calendario-de-trabajos-en-el-

campo-de-vina/.

Page 143: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

125

[53] W. Schools, «jQuery append() Method,» [En línea]. Available:

http://www.w3schools.com/jquery/html_append.asp.

[54] D. Loctier, «El riego inteligente ahorra un 40% de agua,» 14 Marzo 2012. [En

línea]. Available: http://es.euronews.com/2012/03/14/el-riego-inteligente-ahorra-un-

40-por-ciento-de-agua/.

[55] sbuser, «Error on sending e-mail by using e-mail node on Node-RED,» IBM

developerWorks, 27 Julio 2015. [En línea]. Available:

https://developer.ibm.com/answers/questions/176998/error-on-sending-e-mail-by-

using-e-mail-node-on-no.html.

[56] E. Sanz, «¿Qué es el "Internet de las cosas"?,» Muy Interesante, 2015. [En línea].

Available: http://www.muyinteresante.es/curiosidades/preguntas-respuestas/ique-es-

el-qinternet-de-las-cosasq.

[57] J. C. López López, «La moda del Big Data: ¿En qué consiste en realidad?,» El

Economista, 27 Febrero 2014. [En línea]. Available:

http://www.eleconomista.es/tecnologia/noticias/5578707/02/14/La-moda-del-Big-

Data-En-que-consiste-en-realidad.html.

[58] F. Alfaro, «Big Data y IoT,» Madrid, 2016.

[59] Anónimo, «Computación en la nube,» Wikipedia, [En línea]. Available:

https://es.wikipedia.org/wiki/Computaci%C3%B3n_en_la_nube.

[60] Á. Gutiérrez, «¿Qué es la nube?,» About en Español, Junio 2015. [En línea].

Available: http://windowsespanol.about.com/od/AccesoriosYProgramas/f/Qu-E-Es-

La-Computaci-On-En-La-Nube.htm.

[61] «¿Qué es PaaS?,» InterRoute, [En línea]. Available: http://www.interoute.es/what-

Page 144: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

126

paas.

[62] L. M. García, «¿Qué es MQTT?,» Un poco de Java, 6 Diciembre 2012. [En línea].

Available: https://unpocodejava.wordpress.com/2012/12/06/que-es-mqtt/.

[63] «¿Qué es BlueMix de IBM?,» Sitio Enterprise, 12 Mayo 2015. [En línea].

Available: http://empresas.itsitio.com/que-es-bluemix-de-ibm/.

[64] Brayan_Rod, «Gateway (Comunicaciones & Redes),» BlogSpot, 5 Septiembre

2009. [En línea]. Available: http://dunamis17-gateway.blogspot.com.es/.

[65] J. Pérez Porto y A. Gardey, «Definición de HTML,» 2012. [En línea]. Available:

http://definicion.de/html/.

[66] W. Schools, «HTML(5) Tutorial,» [En línea]. Available:

http://www.w3schools.com/html/default.asp.

[67] U. d. Valencia, «JavaScript y Java,» [En línea]. Available:

https://www.uv.es/jac/guia/jscript/javascr01.htm.

[68] «JavaScript,» Wikipedia, 2016 Julio 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/JavaScript.

[69] W3Schools, «JavaScript Tutorial,» [En línea]. Available:

http://www.w3schools.com/Js/.

[70] M. Abernethy, «¿Simplemente qué es Node.js?,» IBM, 14 Junio 2011. [En línea].

Available: https://www.ibm.com/developerworks/ssa/opensource/library/os-nodejs/.

[71] «JSON,» Wikipedia, 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/JSON.

Page 145: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

127

[72] «JavaScript round() Method,» w3schools, [En línea]. Available:

http://www.w3schools.com/jsref/jsref_round.asp.

[73] «JavaScript Date Reference,» w3Schools, [En línea]. Available:

http://www.w3schools.com/jsref/jsref_obj_date.asp.

[74] N. O'Leary, «Make Context a more widely available concept,» GitHub, 16 Febrero

2015. [En línea]. Available: https://github.com/node-red/node-red/issues/567.

[75] B. Balfe, “Searching a Cloudant DB search index with Node-Red,” 23 Octubre

2015. [Online]. Available: https://blog.balfes.net/2015/10/23/searching-a-cloudant-

db-search-index-with-node-red/.

[76] D. Loctier, «El riego inteligente ahorra un 40% de agua,» EuroNews, 14 Marzo

2012. [En línea]. Available: http://es.euronews.com/2012/03/14/el-riego-inteligente-

ahorra-un-40-por-ciento-de-agua/.

[77] «El laboratorio del Big Data de Intel agiliza el desarrollo de las ciudades

inteligentes, la agricultura conectada y la asistencia sanitaria personalizada,» Intel,

[En línea]. Available: http://www.intel.es/content/www/es/es/it-managers/european-

big-data-lab.html.

[78] «ZigBee Alliance,» 2016. [En línea]. Available: http://www.zigbee.org.

[79] «Wi-Fi Alliance,» 2016. [En línea]. Available: http://www.wi-fi.org/.

[80] «Temas Tecnológicos,» [En línea]. Available:

http://www.temastecnologicos.com/redes-moviles.html.

[81] A. Savvas, «“Farming industry must embrace the Internet of Things to grow enough

food”,» Techworld, [En línea]. Available: http://www.techworld.com/news/big-

Page 146: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

128

data/farming-industry-must-embrace-internet-of-things-3596905/.

[82] «Entendiendo la nube: el significado de SaaS, PaaS y IaaS,» Genbeta, 31 Agosto

2012. [En línea]. Available: http://www.genbetadev.com/programacion-en-la-

nube/entendiendo-la-nube-el-significado-de-saas-paas-y-iaas.

[83] «Cree, despliegue, gestione sus aplicaciones en cloud,» IBM, [En línea]. Available:

http://www.ibm.com/cloud-computing/bluemix/es-es/.

[84] «MQTT org,» [En línea]. Available: http://mqtt.org/.

[85] J. Y. T. M. I.-Y. A. S.-C. C. J. K. Minwoo Ryu, «Design and Implementation of a

Connected Farm for Smart Farming System,» IEEE 2015, 2015 Noviembre 1-4. [En

línea]. Available:

http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7370624&tag=1.

[86] P. Tripicchio, «Towards Smart Farming and Sustainable Agriculture with Drones,»

IEEE 2015, 15-17 Julio 2015. [En línea]. Available:

http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=7194284&p

unumber%3D7194253%26filter%3DAND(p_IS_Number%3A7194254)%26pageNu

mber%3D2.

[87] M. P. V. W. Tejas Bhosale, «A smart farming alternative for small Pomegranate

farms of India,» IEEE 2015, 2-4 Abril 2015. [En línea]. Available:

http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=7322543.

[88] P. Herrero, «La importancia de la visión “end to end” en la empresa,» Sage

Experience, 13 Septiembre 2012. [En línea]. Available:

http://blog.sage.es/economia-empresa/la-importancia-de-la-vision-

%E2%80%9Cend-to-end%E2%80%9D-en-la-empresa/.

Page 147: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

129

[89] F. M. G. J. A. M. L. C. P. C. B. Diego Fabian Pajarito Grajales, «Crop-planning,

making smarter agriculture with climate data,» IEEE 2015, 20.24 Julio 2015. [En

línea]. Available:

http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7248124&tag=1.

[90] «eBee,» senseFly, [En línea]. Available:

https://www.sensefly.com/drones/ebee.html.

[91] R. B. S. P. N. V. G. B. T. G. Sudhir Rao Rupanagudi, «A Novel Cloud Computing

based Smart Farming System for Early Detection of Borer Insects in Tomatoes,» 15-

17 Enero 2015. [En línea]. Available:

http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=7045722.

Page 148: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

BIBLIOGRAFÍA

130

Page 149: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO A

131

ANEXO A

APARTADO A.1 - CONECTAR EL SENSORTAG A LA NUBE

1. Se conecta el Bluetooth del Smartphone, se abre la aplicación, se enciende el sensor

y se le da a “IoT_Sensor_ICAI(SensorTag 2.0)”.

Figura 92: Conectar el SensorTag a la Nube (paso 1)

Page 150: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO A

132

2. Se le da a “Sensor View”

3. Se activa el “Push to cloud”. Para ver el Device ID se le da a “Cloud View”,

después se pueden ver los datos configurados del sensor.

Figura 94: Conectar el SensorTag a la Nube (paso 3)

Figura 93: Conectar el SensorTag a la Nube (paso 2)

Page 151: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO A

133

APARTADO A.2 – COSAS QUE HACER PARA QUE SE PUEDAN RECIBIR

EMAILS DEL SISTEMA IOT

1. La contraseña del Gmail debe ser de 8 caracteres [54].

2. El servidor y el puerto deben ser los siguientes para conectar con Gmail [54]:

Servidor: smtp.gmail.com

Puerto: 465

3. Activar el “Acceso de aplicaciones menos seguras” siguiendo los siguientes pasos:

3.1. Entrar en el Gmail y darle a “Mi Cuenta”.

3.2. Darle a “Aplicaciones y sitios conectados a tu cuenta”.

Figura 96: Activar el “Acceso de aplicaciones menos seguras (paso 2)”

3.3. Activar el “Permitir el acceso de aplicaciones menos seguras”.

Figura 95: Activar el “Acceso de aplicaciones menos seguras (paso 1)”

Page 152: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO A

134

Figura 97: Activar el “Acceso de aplicaciones menos seguras (paso 3)”

Page 153: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO B

135

ANEXO B

APARTADO B.1 - ENTREVISTAS

Esta misma pregunta:

• ¿Qué información es interesante para el viticultor con sensores de humedad,

temperatura y luz principalmente?

Se ha realizado a las siguientes personas:

Rubén Delgado Treviño – Encargado de Finca Constancia

Petra Calleja Ugarte – Contacto en Bodegas Beronia

Chema Ryan Murua – Enólogo Bodegas Muriel

Jesús Izquierdo – Distribuidor en La Rioja

Alvaro Comenge – Director Comercial de Bodegas Comenge

Rubén Fontecha – Cooperativa Garu

Cristina Hernando – Departamento de Enoturismo Bodega Conde de los Andes

Obteniendo de ellas las siguientes conclusiones:

Las decisiones en campo son al final la resultante de un cúmulo de necesidades e

intereses. Por tanto hay que enfocar todo esto como herramientas de ayuda nunca

como elementos de decisión, al final lo que más se tiene en cuenta es el

conocimiento de la viña, su entorno y lo más importante el histórico y su evolución

que ya de por si en este negocio como depende del clima siempre es diferente.

Los datos en tiempo real de los sensores de temperatura, luz y humedad son de

utilidad para el análisis instantáneo.

Los datos históricos se deberían poder buscar según una serie de parámetros

insertados.

Page 154: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO B

136

Es bueno tener un recordatorio del ciclo de vida de los viñedos clásico para los

viticultores.

Tener predicciones del tiempo fiables disponibles.

Poder tener un medio de comunicación fácil entre otros viticultores para consultar

sus opiniones ya que los viticultores se consultan mucho entre sí.

Un registro de las alertas recibidas así como recibirlas en el móvil en tiempo real.

Para el control de riesgo de heladas se pueden usar sensores de temperatura; si la

temperatura baja de 1ºC se activan los sistemas anti helada como por ejemplo un

tipo de riego especial.

Para el control de aparición de enfermedades de tipo fúngico, niveles altos de

humedad favorecen la aparición de Oidio, Mildiu o Botrytis es por ello que

humedades relativas superiores al 80% son peligrosas para el desarrollo de estas

enfermedades. Si además le sumamos una temperatura de entre 15ºC-20ºC y que

haya una luz tenue de menos de 100lux, las probabilidades aumentan.

Para evaluar la necesidad de aplicar riego hay que instalar sensores de humedad en

la tierra a 1,5m y si la humedad relativa de la tierra baja del 40% hay riesgo de

sequía y hay que regar inmediatamente.

A la hora de aplicar distintitos tratamientos es malo que haya mucho viento.

Por medio de infrarrojos se evalúa el grado de madurez de las uvas de cara a

establecer fecha de vendimia.

Si las temperaturas hasta mediados de enero están siendo inferiores a 4ºC de media

se recomienda retrasar la poda 10 días.

Informar de una buena añada de la cosecha cuando se den en Julio y Agosto las

condiciones de 25ºC-30ºC de media y una humedad relativa entre 60%-70%.

Page 155: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO C

137

ANEXO C

APARTADO C.1 - FLUJO DE LA MEDIA

[{"id":"90e786e3.a00a68","type":"comment","z":"a5baa413.0f5358","name":"Hacer la media de 4 números","info":"","x":143.5,"y":758.6666641235352,"wires":[]},{"id":"b6d04055.d06f5","type":"smooth","z":"a5baa413.0f5358","name":"Media temp","action":"mean","count":"4","round":"5","x":333.6665954589844,"y":939.6666870117188,"wires":[["d6bf0431.842e78"]]},{"id":"d6bf0431.842e78","type":"debug","z":"a5baa413.0f5358","name":"","active":true,"console":"false","complete":"false","x":520.4999389648438,"y":940.3333740234375,"wires":[]},{"id":"3e108540.226c9a","type":"inject","z":"a5baa413.0f5358","name":"","topic":"","payload":"8","payloadType":"num","repeat":"","crontab":"","once":false,"x":84.5,"y":812.0000178019206,"wires":[["b6d04055.d06f5"]]},{"id":"7aa5a5de.3bc07c","type":"inject","z":"a5baa413.0f5358","name":"","topic":"","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"x":86.5,"y":897.0000305175781,"wires":[["b6d04055.d06f5"]]},{"id":"7abb5a2.dfbc1a4","type":"inject","z":"a5baa413.0f5358","name":"","topic":"","payload":"10","payloadType":"num","repeat":"","crontab":"","once":false,"x":84.5,"y":980,"wires":[["b6d04055.d06f5"]]},{"id":"2556a6f2.e86a5a","type":"inject","z":"a5baa413.0f5358","name":"","topic":"","payload":"7","payloadType":"num","repeat":"","crontab":"","once":false,"x":86.5,"y":1069,"wires":[["b6d04055.d06f5"]]}]

APARTADO C.2 - FLUJO PARA GUARDAR DATOS EN CLOUDANT

[{"id":"fc9e6ecd.0696a","type":"ibmiot in","z":"a5baa413.0f5358","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":false,"allApplications":false,"allDeviceTypes":false,"allEvents":true,"allCommands":false,"allFormats":true,"x":101.66665649414062,"y":407.6666564941406,"wires":[["da19088.017a8f8"]]},{"id":"31c29be3.856164","type":"cloudant out","z":"a5baa413.0f5358","name":"Guardar en nodered2","cloudant":"","database":"nodered2","service":"IoT Pruebas-cloudantNoSQLDB","payonly":true,"operation":"insert","x":541.380859375,"y":407.5714416503906,"wires":[]},{"id":"da19088.017a8f8","type":"delay","z":"a5baa413.0f5358","name":"1 dato cada 2h","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"12","rateUnits":"day","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":308.5000305175781,"y":408.00006103515625,"wires":[["31c29be3.856164"]]},{"id":"6f8fa1ab.b1b","type":"comment","z":"a5baa413.0f5358","name":"Ejemplo para recoger datos para almacenar en Cloudant","info":"","x":226.125,"y":296.916708946228,"wires":[]}]

Page 156: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO C

138

APARTADO C.3 - FLUJO PARA SACAR DATOS DE CLOUDANT

[{"id":"8eb356fe.554ac8","type":"http in","z":"a5baa413.0f5358","name":"","url":"/datos","method":"get","swaggerDoc":"","x":86.5,"y":635.3333740234375,"wires":[["eb1a6d20.3a3d6"]]},{"id":"dc209ef8.7d596","type":"http response","z":"a5baa413.0f5358","name":"","x":838.2499847412109,"y":632.5000610351562,"wires":[]},{"id":"1b799759.c37c79","type":"cloudant in","z":"a5baa413.0f5358","name":"","cloudant":"","database":"nodered2","service":"IoT Pruebas-cloudantNoSQLDB","search":"_idx_","design":"tempsearch","index":"filtroTemp","x":622.4166412353516,"y":632.416748046875,"wires":[["dc209ef8.7d596"]]},{"id":"eb1a6d20.3a3d6","type":"function","z":"a5baa413.0f5358","name":"Selección temperatura","func":"if(msg.payload.temp)\n{\n msg.payload = \"temperatura:'\"+ msg.payload.temp +\"'\";\n}\nreturn msg;","outputs":1,"noerr":0,"x":351.24998474121094,"y":634.3334350585938,"wires":[["1b799759.c37c79"]]}]

APARTADO C.4 - FLUJO PARA CREAR UN FORMULARIO DE

RECOGIDA DE DATOS Y MOSTRAR USANDO AJAX

[{"id":"c9d97dbb.9f0a7","type":"http in","z":"a5baa413.0f5358","name":"","url":"/formularioA","method":"get","swaggerDoc":"","x":95.56546783447266,"y":973.1746215820312,"wires":[["8ab2b64e.2e4328"]]},{"id":"32bc2267.1586be","type":"http response","z":"a5baa413.0f5358","name":"","x":477.2797164916992,"y":974.1747007369995,"wires":[]},{"id":"8ab2b64e.2e4328","type":"template","z":"a5baa413.0f5358","name":"Formulario Ajax","field":"","fieldType":"msg","syntax":"mustache","template":"<!DOCTYPE html>\n<html>\n<body>\n\n<p>Realiza la busqueda por temperatura</p>\n\n<div class =\"labelsFormulario\">\n Temperatura: <input id=\"temp\" type=\"text\"/>\n <br/><br/>\n</div>\n<div class =\"botonFiltrar\">\n <input id=\"btnFltr\" type=\"submit\" value=\"Filtrar\" onclick=\"javascript:return mostrarLista();\" />\n</div>\n\n<div id=\"contenidoFitr\"></div>\n<div id=\"errorMensaje\"></div>\n\n<script>\n\nfunction peticionAJAX(url, idDiv)\n{\n var xmlHttpReq = new XMLHttpRequest();\n xmlHttpReq.onreadystatechange=function()\n {\n if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200)\n document.getElementById(idDiv).innerHTML = xmlHttpReq.responseText;\n }\n\n xmlHttpReq.open('GET', url, true); \n xmlHttpReq.send();\n}\n\nfunction mostrarLista()\n{\n var temp= document.getElementById(\"temp\").value;\n if(temp)\n\t{\n url=\"https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=\" + temp;\n

Page 157: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO C

139

peticionAJAX(url,'contenidoFitr');\n return true;\n\t}else{\n\t\tdocument.getElementById(\"contenidoFitr\").style.display = 'none';\n document.getElementById(\"errorMensaje\").style.display = 'block';\n document.getElementById(\"errorMensaje\").innerHTML = \"Debe introducir un mensaje\";\n return false;\n }\n}\n</script>\n\n</body>\n</html>","x":304.3035430908203,"y":972.9366111755371,"wires":[["32bc2267.1586be"]]}]

APARTADO C.5 - FLUJO PARA CREAR UN FORMULARIO DE

RECOGIDA DE DATOS Y MOSTRAR USANDO JSON

[{"id":"fb9920b0.4c245","type":"http in","z":"a5baa413.0f5358","name":"","url":"/formularioJ","method":"get","swaggerDoc":"","x":91.23212432861328,"y":1091.841275215149,"wires":[["8f36aa40.0cc128"]]},{"id":"2bb15a79.2fc2d6","type":"http response","z":"a5baa413.0f5358","name":"","x":483.2320671081543,"y":1091.4127006530762,"wires":[]},{"id":"8f36aa40.0cc128","type":"template","z":"a5baa413.0f5358","name":"Formulario JSON","field":"","fieldType":"msg","syntax":"mustache","template":"<!DOCTYPE html>\n<html>\n<head>\n <style>\n .estilo{\n width:200px;\n text-align:center;\n float:left;\n }\n </style>\n</head>\n<body>\n<script src=\"https://code.jquery.com/jquery-1.10.2.js\"></script>\n<p>Realiza la busqueda por temperatura</p>\n\n\n<div class =\"labelsFormulario\">\n Temperatura: <input id=\"temp\" type=\"text\"/>\n <br/><br/>\n</div>\n<div class =\"botonFiltrar\">\n <input id=\"btnFltr\" type=\"submit\" value=\"Filtrar\" onclick=\"javascript:return mostrarLista();\" />\n</div>\n<br/><br/>\n<div class=\"columna\">\n<div class=\"estilo\"> ID Sensor </div>\n<div class=\"estilo\"> Fecha </div>\n<div class=\"estilo\"> Temperatura </div>\n<div class=\"estilo\"> Humedad </div>\n<div class=\"estilo\"> Luz </div>\n<br><br></div>\n<div class=\"inner\"></div>\n\n<script>\n\nfunction peticionJSON(url)\n{\n var xmlHttpReq = new XMLHttpRequest();\n xmlHttpReq.onreadystatechange=function()\n {\n if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200)\n {\n $( \".inner\" ).empty();\n var objetoJSON = eval(\"(\" + xmlHttpReq.responseText + \")\"); \n for(i = 0; i < objetoJSON.length; i++)\n {\n var id = objetoJSON[i].d.magX;\n var date = objetoJSON[i].d.objectTemp;\n var res = date.split(\"T\");\n var fecha = res[0];\n var temp = objetoJSON[i].d.ambientTemp;\n var hum = objetoJSON[i].d.humidity;\n var luz = objetoJSON[i].d.light;\n var apptext = \"<div><div class='estilo'>\" + id + \"</div><div class='estilo'>\" + fecha + \"</div><div class='estilo'>\" + temp + \"</div><div class='estilo'>\" + hum + \"</div><div class='estilo'>\" + luz + \"</div></div><br/>\";\n $( \".inner\" ).append(apptext);\n }\n }\n }\n\n xmlHttpReq.open('GET', url, true); \n xmlHttpReq.send();\n}\n\nfunction mostrarLista()\n{\n var temp= document.getElementById(\"temp\").value;\n if(temp)\n {\n url=\"https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=\" + temp;\n peticionJSON(url);\n return true;\n }else{\n

Page 158: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO C

140

document.getElementById(\"contenidoFitr\").style.display = 'none';\n document.getElementById(\"errorMensaje\").style.display = 'block';\n document.getElementById(\"errorMensaje\").innerHTML = \"Debe introducir un mensaje\";\n return false;\n }\n}\n</script>\n\n</body>\n</html>","x":308.9702033996582,"y":1092.1747341156006,"wires":[["2bb15a79.2fc2d6"]]}]

Page 159: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

141

ANEXO D

APARTADO D.1 - VINIOTHOME24.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano"> <title>VinIoT</title> <!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- HighCharts --> <script src="../bower_components/highCharts/dist/HighCharts.js"></script> <script src="../bower_components/highCharts/dist/HighChartsExport.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> <!-- Graficos HighCharts Real Time -->

Page 160: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

142

<script src="../bower_components/graficosRT/dist/graficoLuzRT.js"> </script> <script src="../bower_components/graficosRT/dist/graficoTempRT.js"> </script> <script src="../bower_components/graficosRT/dist/graficoHumRT.js"> </script> <script src="../bower_components/chat/dist/chat.js"> </script> </head> <body> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/"><i class="fa fa-sign-out fa-fw"></i> Cerrar Sesión</a> </li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a>

Page 161: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

143

<ul class="nav nav-second-level"> <li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a> </li> <li> <a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul> </div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Panel de Control</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="col-lg-3 col-md-6"> <div class="panel panel-yellow"> <div class="panel-heading"> <div class="row">

Page 162: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

144

<div class="col-xs-3"> <i class="fa fa-envelope fa-5x"></i> </div> <div class="col-xs-9 text-right"> <div class="huge">Gmail</div> </div> </div> </div> <a href="https://mail.google.com/mail/u/0/#inbox" target="_blank"> <div class="panel-footer"> <span class="pull-left">Ir</span> <span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span> <div class="clearfix"></div> </div> </a> </div> </div> <div class="col-lg-3 col-md-6"> <div class="panel panel-green"> <div class="panel-heading"> <div class="row"> <div class="col-xs-3"> <i class="fa fa-tint fa-5x"></i> </div> <div class="col-xs-9 text-right"> <div class="huge">Regadío</div> </div> </div> </div> <a href="regadio.html"> <div class="panel-footer"> <span class="pull-left">Ir</span> <span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span> <div class="clearfix"></div> </div> </a> </div> </div> <div class="col-lg-3 col-md-6"> <div class="panel panel-primary"> <div class="panel-heading"> <div class="row"> <div class="col-xs-3"> <i class="fa fa-certificate fa-5x"></i> </div> <div class="col-xs-9 text-right"> <div class="huge">Heladas</div> </div> </div> </div>

Page 163: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

145

<a href="heladas.html"> <div class="panel-footer"> <span class="pull-left">Ir</span> <span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span> <div class="clearfix"></div> </div> </a> </div> </div> <div class="col-lg-3 col-md-6"> <div class="panel panel-red"> <div class="panel-heading"> <div class="row"> <div class="col-xs-3"> <i class="fa fa-bullhorn fa-5x"></i> </div> <div class="col-xs-9 text-right"> <div class="huge">Botrytis</div> </div> </div> </div> <a href="botrytis.html"> <div class="panel-footer"> <span class="pull-left">Ir</span> <span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span> <div class="clearfix"></div> </div> </a> </div> </div> </div> <!-- /.row --> <div class="row"> <div class="col-lg-8"> <div class="panel panel-default"> <div class="panel-heading"> <i class="fa fa-bar-chart-o fa-fw"></i> Gr&aacutefico de la luz en tiempo real </div> <!-- /.panel-heading --> <div class="panel-body"> <div id="graficoLuzRT" style="min-width: 310px; height: 400px; margin: 0 auto"></div> </div> <!-- /.panel-body --> </div> <!-- /.panel --> <div class="panel panel-default"> <div class="panel-heading"> <i class="fa fa-bar-chart-o fa-fw"></i> Gr&aacutefico de la temperatura en tiempo real

Page 164: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

146

</div> <!-- /.panel-heading --> <div class="panel-body"> <div id="graficoTempRT" style="min-width: 310px; height: 400px; margin: 0 auto"></div> </div> <!-- /.panel-body --> </div> <!-- /.panel --> <div class="panel panel-default"> <div class="panel-heading"> <i class="fa fa-bar-chart-o fa-fw"></i> Gr&aacutefico de la humedad en tiempo real </div> <!-- /.panel-heading --> <div class="panel-body"> <div id="graficoHumRT" style="min-width: 310px; height: 400px; margin: 0 auto"></div> </div> <!-- /.panel-body --> </div> <!-- /.panel --> </div> <!-- /.col-lg-8 --> <div class="col-lg-4"> <div class="panel panel-default"> <div class="panel-heading"> <i class="fa fa-bell fa-fw"></i> Notificaciones de Twitter </div> <!-- /.panel-heading --> <div class="panel-body"> <!-- Twitter Widget --> <a class="twitter-timeline" data-lang="es" data-height="400" href="https://twitter.com/IoT24">Tweets by IoT24</a> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> </div> <!-- /.panel-body --> </div> <!-- /.panel --> <div class="chat-panel panel panel-default"> <div class="panel-heading"> <i class="fa fa-comments fa-fw"></i> Chat </div> <!-- /.panel-heading --> <div id="chat_box" class="panel-body"> </div> <!-- /.panel-body --> <div id="footer" class="panel-footer"> <form role="form"> <fieldset>

Page 165: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

147

<div class="form-group"> <input id="user" class="form-control" placeholder="Usuario" autofocus> </div> <div class="form-group"> <input id="message" class="form-control" placeholder="Mensaje"> </div> <a onclick="sendMessage()" class="btn btn-lg btn-success btn-block">Enviar</a> </fieldset> </form> </div> <!-- /.panel-footer --> </div> <!-- /.panel .chat-panel --> </div> <!-- /.col-lg-4 --> </div> <!-- /.row --> </div> <!-- /#page-wrapper --> </div> </body> </html>

chat.js

var wsUri = "wss://iot-pruebas.eu-gb.mybluemix.net/ws/chat"; var ws = new WebSocket(wsUri); function createSystemMessage(message) { var message = document.createTextNode(message); var messageBox = document.createElement('p'); messageBox.className = 'system'; messageBox.appendChild(message); var chat = document.getElementById('chat_box'); chat.appendChild(messageBox); } function createUserMessage(user, message) { var user = document.createTextNode(user + ': '); var userBox = document.createElement('span');

Page 166: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

148

userBox.className = 'username'; userBox.appendChild(user); var message = document.createTextNode(message); var messageBox = document.createElement('p'); messageBox.appendChild(userBox); messageBox.appendChild(message); var chat = document.getElementById('chat_box'); chat.appendChild(messageBox); } ws.onopen = function(ev) { createSystemMessage('[Connected]'); }; ws.onclose = function(ev) { createSystemMessage('[Disconnected]'); } ws.onmessage = function(ev) { var payload = JSON.parse(ev.data); createUserMessage(payload.user, payload.message); var chat = document.getElementById('chat_box'); chat.scrollTop = chat.scrollHeight; } function sendMessage() { var user = document.getElementById('user'); var message = document.getElementById('message'); var payload = { message: message.value, user: user.value, ts: (new Date()).getTime() }; ws.send(JSON.stringify(payload)); message.value = ""; };

graficoHumRT.js

$(function () { $(document).ready(function () { Highcharts.setOptions(

Page 167: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

149

{ global: { useUTC: false } }); var socketaddy = "wss://iot-pruebas.eu-gb.mybluemix.net/ws/hum"; sock = new WebSocket(socketaddy); var datos; sock.onmessage = function(evt) { console.log("Websocket message", evt); datos = parseFloat(evt.data); } $('#graficoHumRT').highcharts( { chart: { type: 'spline', animation: Highcharts.svg, // don't animate in old IE marginRight: 10, events: { load: function () { // set up the updating of the chart each second var series = this.series[0]; setInterval(function () { //alert(datos); var x = (new Date()).getTime(), // current time y = datos; series.addPoint([x, y], true, true); }, 3000); } } }, title: { text: 'Humedad en el ambiente' }, xAxis: { title: { text: 'Hora' }, type: 'datetime', tickPixelInterval: 150 }, yAxis: { title: { text: 'Humedad (%rH)' }, plotLines: [{ value: 0, width: 1, color: '#808080'

Page 168: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

150

}] }, tooltip: { formatter: function () { return '<b>' + this.series.name + '</b><br/>' + Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' + Highcharts.numberFormat(this.y, 2); } }, legend: { enabled: false }, exporting: { enabled: true }, series: [{ name: 'Datos:', data: (function () { // generate an array of random data var data = [], time = (new Date()).getTime(), i; for (i = -19; i <= 0; i += 1) { data.push({ x: time + i * 1000, y: 0 }); } return data; }()) }] }); }); });

graficoLuzRT.js

$(function () { $(document).ready(function () { Highcharts.setOptions( { global: { useUTC: false } }); var socketaddy = "wss://iot-pruebas.eu-gb.mybluemix.net/ws/luz";

Page 169: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

151

sock = new WebSocket(socketaddy); var datos; sock.onmessage = function(evt) { console.log("Websocket message", evt); datos = parseFloat(evt.data); } $('#graficoLuzRT').highcharts( { chart: { type: 'spline', animation: Highcharts.svg, // don't animate in old IE marginRight: 10, events: { load: function () { // set up the updating of the chart each second var series = this.series[0]; setInterval(function () { //alert(datos); var x = (new Date()).getTime(), // current time y = datos; series.addPoint([x, y], true, true); }, 3000); } } }, title: { text: 'Luz en el ambiente' }, xAxis: { title: { text: 'Hora' }, type: 'datetime', tickPixelInterval: 150 }, yAxis: { title: { text: 'Lux (lux)' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] }, tooltip: { formatter: function () { return '<b>' + this.series.name + '</b><br/>' +

Page 170: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

152

Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' + Highcharts.numberFormat(this.y, 2); } }, legend: { enabled: false }, exporting: { enabled: true }, series: [{ name: 'Datos:', data: (function () { // generate an array of random data var data = [], time = (new Date()).getTime(), i; for (i = -19; i <= 0; i += 1) { data.push({ x: time + i * 1000, y: 0 }); } return data; }()) }] }); }); });

graficoTempRT.js

$(function () { $(document).ready(function () { Highcharts.setOptions( { global: { useUTC: false } }); var socketaddy = "wss://iot-pruebas.eu-gb.mybluemix.net/ws/temp"; sock = new WebSocket(socketaddy); var datos; sock.onmessage = function(evt) { console.log("Websocket message", evt);

Page 171: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

153

datos = parseFloat(evt.data); } $('#graficoTempRT').highcharts( { chart: { type: 'spline', animation: Highcharts.svg, // don't animate in old IE marginRight: 10, events: { load: function () { // set up the updating of the chart each second var series = this.series[0]; setInterval(function () { //alert(datos); var x = (new Date()).getTime(), // current time y = datos; series.addPoint([x, y], true, true); }, 3000); } } }, title: { text: 'Temperatura en el ambiente' }, xAxis: { title: { text: 'Hora' }, type: 'datetime', tickPixelInterval: 150 }, yAxis: { title: { text: 'Temperatura (ºC)' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] }, tooltip: { formatter: function () { return '<b>' + this.series.name + '</b><br/>' + Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' + Highcharts.numberFormat(this.y, 2); } }, legend: {

Page 172: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

154

enabled: false }, exporting: { enabled: true }, series: [{ name: 'Datos:', data: (function () { // generate an array of random data var data = [], time = (new Date()).getTime(), i; for (i = -19; i <= 0; i += 1) { data.push({ x: time + i * 1000, y: 0 }); } return data; }()) }] }); }); });

APARTADO D.2 - TIEMPO.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano"> <title>VinIoT</title> <!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet">

Page 173: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

155

<!-- Morris Charts CSS --> <link href="../bower_components/morrisjs/morris.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Flot Charts JavaScript --> <script src="../bower_components/flot/excanvas.min.js"></script> <script src="../bower_components/flot/jquery.flot.js"></script> <script src="../bower_components/flot/jquery.flot.pie.js"></script> <script src="../bower_components/flot/jquery.flot.resize.js"></script> <script src="../bower_components/flot/jquery.flot.time.js"></script> <script src="../bower_components/flot.tooltip/js/jquery.flot.tooltip.min.js"></script> <script src="../js/flot-data.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> </head> <body> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right">

Page 174: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

156

<li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/"><i class="fa fa-sign-out fa-fw"></i> Cerrar Sesiónt</a> </li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a>

Page 175: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

157

</li> <li> <a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul> </div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">El Tiempo</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="col-lg-4"> <div class="panel panel-default"> <div class="panel-heading"> El Tiempo en Madrid </div> <!-- /.panel-heading --> <div class="panel-body"> <div id="plemx-root"></div> <a href="http://www.theweathernetwork.com">The Weather Network</a> <script type="text/javascript"> var _plm = _plm || []; _plm.push(['_btn', 34791]); _plm.push(['_loc','esmx0001']); _plm.push(['location', document.location.host ]); (function(d,e,i) { if (d.getElementById(i)) return; var px = d.createElement(e); px.type = 'text/javascript'; px.async = true; px.id = i;

Page 176: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

158

px.src = ('https:' == d.location.protocol ? 'https:' : 'http:') + '//widget.twnmm.com/js/btn/pelm.js?orig=en_ca'; var s = d.getElementsByTagName('script')[0]; var py = d.createElement('link'); py.rel = 'stylesheet' py.href = ('https:' == d.location.protocol ? 'https:' : 'http:') + '//widget.twnmm.com/styles/btn/styles.css' s.parentNode.insertBefore(px, s); s.parentNode.insertBefore(py, s); })(document, 'script', 'plmxbtn'); </script> </div> <!-- /.panel-body --> </div> <!-- /.panel --> </div> </div> <!-- /.row --> </div> <!-- /#page-wrapper --> </div> <!-- /#wrapper --> </body> </html>

APARTADO D.3 - CALENDARIO.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano">

Page 177: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

159

<title>VinIoT</title> <!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Timeline CSS --> <link href="../css/timeline.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Morris Charts CSS --> <link href="../bower_components/morrisjs/morris.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> </head> <body> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/"><i class="fa fa-sign-out fa-fw"></i> Cerrar Sesión</a>

Page 178: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

160

</li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a> </li> <li> <a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul>

Page 179: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

161

</div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Calendario</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading"> Ciclo de vida de la vid </div> <!-- /.panel-heading --> <div class="panel-body"> <img src="../images/calendario.jpg" alt="img" style="width:100%;height:100%;"> </div> <!-- /.panel-body --> </div> <!-- /.panel --> </div> </div> <!-- /.row --> </div> <!-- /#page-wrapper --> </div> <!-- /#wrapper --> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Flot Charts JavaScript --> <script src="../bower_components/flot/excanvas.min.js"></script> <script src="../bower_components/flot/jquery.flot.js"></script> <script src="../bower_components/flot/jquery.flot.pie.js"></script> <script src="../bower_components/flot/jquery.flot.resize.js"></script> <script src="../bower_components/flot/jquery.flot.time.js"></script>

Page 180: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

162

<script src="../bower_components/flot.tooltip/js/jquery.flot.tooltip.min.js"></script> <script src="../js/flot-data.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> </body> </html>

APARTADO D.4 - HISTORICO.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano"> <title>VinIoT</title> <!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- DataTables CSS --> <link href="../bower_components/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.css" rel="stylesheet"> <!-- DataTables Responsive CSS --> <link href="../bower_components/datatables-responsive/css/dataTables.responsive.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <script src="https://code.jquery.com/jquery-1.10.2.js"></script>

Page 181: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

163

<!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- DataTables JavaScript --> <script src="../bower_components/datatables/media/js/jquery.dataTables.min.js"></script> <script src="../bower_components/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> <script> $(document).ready(function() { $('#dataTables-example').DataTable({ responsive: true }); }); </script> <script src="../bower_components/historicodin/dist/historicodin.js"> </script> </head> <body> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">

Page 182: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

164

<i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/"><i class="fa fa-sign-out fa-fw"></i> Cerrar Sesión</a> </li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a> </li> <li>

Page 183: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

165

<a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul> </div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Datos Históricos</h1> </div> <!-- /.col-lg-12 --> </div> <div class="row"> <div class="col-lg-4"> <div class="panel panel-default"> <div class="panel-heading"> Formulario </div> <!-- /.panel-heading --> <div class="panel-body"> <form role="form"> <fieldset> <div class="form-group"> <input id="date" class="form-control" placeholder="Fecha" autofocus> </div> <div class="form-group"> <input id="temp" class="form-control" placeholder="Temperatura"> </div> <div class="form-group"> <input id="hum" class="form-control" placeholder="Humedad"> </div> <div class="form-group"> <input id="light" class="form-control" placeholder="Luz"> </div> <a onclick="javascript:return mostrarLista();" class="btn btn-lg btn-success btn-block">Filtrar</a> </br><div id="errorMensaje"></div> </fieldset> </form> </div> <!-- /.panel-body --> </div>

Page 184: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

166

<!-- /.panel --> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading"> Tabla de Búsqueda </div> <!-- /.panel-heading --> <div class="panel-body" id="inner1"> <div class="inner3"></div> </div> <!-- /.panel-body --> </div> <!-- /.panel --> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> </div> <!-- /#page-wrapper --> </div> <!-- /#wrapper --> </body> </html>

historicodin.js

function mostrarLista() { var date= document.getElementById("date").value; var temp= document.getElementById("temp").value; var hum= document.getElementById("hum").value; var light= document.getElementById("light").value; if(date && temp && hum && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp + "&hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(date && temp && hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp + "&hum=" + hum;

Page 185: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

167

peticionJSON(url); return true; }else if(date && temp && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp + "&light=" + light; peticionJSON(url); return true; }else if(date && hum && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(temp && hum && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp + "&hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(date && temp) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&temp=" + temp; peticionJSON(url); return true; }else if(date && hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&hum=" + hum; peticionJSON(url); return true; }else if(date && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date + "&light=" + light; peticionJSON(url); return true; }else if(temp && hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp + "&hum=" + hum; peticionJSON(url); return true; }else if(temp && light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp + "&light=" + light; peticionJSON(url); return true; }else if(hum && light) {

Page 186: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

168

url="https://iot-pruebas.eu-gb.mybluemix.net/datos?hum=" + hum + "&light=" + light; peticionJSON(url); return true; }else if(date) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?date=" + date; peticionJSON(url); return true; }else if(temp) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?temp=" + temp; peticionJSON(url); return true; }else if(hum) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?hum=" + hum; peticionJSON(url); return true; }else if(light) { url="https://iot-pruebas.eu-gb.mybluemix.net/datos?light=" + light; peticionJSON(url); return true; }else{ document.getElementById("errorMensaje").style.display = 'block'; document.getElementById("errorMensaje").innerHTML = "Debe rellenar al menos uno de los campos"; return false; } } function peticionJSON(url) { document.getElementById("errorMensaje").style.display = 'none'; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( "#inner1" ).empty(); $( ".inner2" ).empty(); $( ".inner3" ).empty(); var apptext1 ="<div class='dataTable_wrapper'><table class='table table-striped table-bordered table-hover' id='dataTables-example'><thead><tr><th>Id

Page 187: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

169

Sensor</th><th>Fecha</th><th>Temperatura</th><th>Humedad</th><th>Luz</th></tr></thead><tbody class='inner2'>"; $( "#inner1" ).append(apptext1); var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var id = objetoJSON[i].d.magX; var date = objetoJSON[i].d.objectTemp; var res = date.split("T"); var fecha = res[0]; var temp = objetoJSON[i].d.ambientTemp; var hum = objetoJSON[i].d.humidity; var luz = objetoJSON[i].d.light; var apptext2 = "<tr><td>" + id + "</td><td>" + fecha + "</td><td>" + temp + " </td><td class='center'> " + hum + "</td><td class='center'> " + luz + "</td></tr>"; $( ".inner2" ).append(apptext2); } var apptext3 = "</tbody></table></div>"; $( ".inner3" ).append(apptext3); $('#dataTables-example').DataTable({ responsive: true }); } } xmlHttpReq.open('GET', url, true); xmlHttpReq.send(); }

APARTADO D.5 - HELADAS.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano"> <title>VinIoT</title>

Page 188: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

170

<!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> <script> function peticionJSON() { var url="https://iot-pruebas.eu-gb.mybluemix.net/infoHeladas"; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( ".inner" ).empty(); var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var pl = objetoJSON[i].payload; var apptext = "<div class='col-lg-4'><div class='panel panel-info'><div class='panel-heading'>Alerta Helada</div><div class='panel-body'>" + pl + "</div></div></div>"; $( ".inner" ).append(apptext); } } } xmlHttpReq.open('GET', url, true);

Page 189: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

171

xmlHttpReq.send(); } </script> </head> <body onload="peticionJSON()"> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/"><i class="fa fa-sign-out fa-fw"></i> Cerrar Sesión</a> </li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a>

Page 190: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

172

<ul class="nav nav-second-level"> <li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a> </li> <li> <a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul> </div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Alertas Heladas</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="inner"></div> </div> <!-- /.row --> </div>

Page 191: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

173

<!-- /#page-wrapper --> </div> <!-- /#wrapper --> </body> </html>

APARTADO D.6 - REGADIO.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano"> <title>VinIoT</title> <!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script>

Page 192: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

174

<script> function peticionJSON() { var url="https://iot-pruebas.eu-gb.mybluemix.net/infoRegadio"; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( ".inner" ).empty(); var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var pl = objetoJSON[i].payload; var apptext = "<div class='col-lg-4'><div class='panel panel-green'><div class='panel-heading'>Alerta Regadío</div><div class='panel-body'>" + pl + "</div></div></div>"; $( ".inner" ).append(apptext); } } } xmlHttpReq.open('GET', url, true); xmlHttpReq.send(); } </script> </head> <body onload="peticionJSON()"> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right"> <li class="dropdown">

Page 193: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

175

<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/"><i class="fa fa-sign-out fa-fw"></i> Cerrar Sesión</a> </li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a> </li>

Page 194: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

176

<li> <a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul> </div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Alertas para Regar</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="inner"></div> </div> <!-- /.row --> </div> <!-- /#page-wrapper --> </div> <!-- /#wrapper --> </body> </html>

APARTADO D.7 - BOTRYTIS.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano"> <title>VinIoT</title> <!-- Bootstrap Core CSS -->

Page 195: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

177

<link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> <script> function peticionJSON() { var url="https://iot-pruebas.eu-gb.mybluemix.net/infoBotrytis"; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( ".inner" ).empty(); var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var pl = objetoJSON[i].payload; var apptext = "<div class='col-lg-4'><div class='panel panel-red'><div class='panel-heading'>Alerta Botrytis</div><div class='panel-body'>" + pl + "</div></div></div>"; $( ".inner" ).append(apptext); } } } xmlHttpReq.open('GET', url, true); xmlHttpReq.send();

Page 196: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

178

} </script> </head> <body onload="peticionJSON()"> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/l"><i class="fa fa-sign-out fa-fw"></i> Carrar Sesión</a> </li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a> <ul class="nav nav-second-level">

Page 197: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

179

<li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a> </li> <li> <a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul> </div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Alertas enfermedad de Botrytis</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="inner"></div> </div> <!-- /.row --> </div> <!-- /#page-wrapper -->

Page 198: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

180

</div> <!-- /#wrapper --> </body> </html>

APARTADO D.8 - CORREGIRPODA.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT"> <meta name="author" content="Amaya Manzano"> <title>VinIoT</title> <!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script>

Page 199: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

181

<script> function peticionJSON() { var url="https://iot-pruebas.eu-gb.mybluemix.net/infoPoda"; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange=function() { if (xmlHttpReq.readyState == 4 && xmlHttpReq.status==200) { $( ".inner" ).empty(); var objetoJSON = eval("(" + xmlHttpReq.responseText + ")"); for(i = 0; i < objetoJSON.length; i++) { var pl = objetoJSON[i].payload; var apptext = "<div class='col-lg-4'><div class='panel panel-yellow'><div class='panel-heading'>Alerta retrasar Poda</div><div class='panel-body'>" + pl + "</div></div></div>"; $( ".inner" ).append(apptext); } } } xmlHttpReq.open('GET', url, true); xmlHttpReq.send(); } </script> </head> <body onload="peticionJSON()"> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="viniothome24.html">VinIoT</a> </div> <!-- /.navbar-header --> <ul class="nav navbar-top-links navbar-right"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">

Page 200: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

182

<i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> </a> <ul class="dropdown-menu dropdown-user"> <li><a href="http://nodeappprueba.eu-gb.mybluemix.net/"><i class="fa fa-sign-out fa-fw"></i> Cerrar Sesión</a> </li> </ul> <!-- /.dropdown-user --> </li> <!-- /.dropdown --> </ul> <!-- /.navbar-top-links --> <div class="navbar-default sidebar" role="navigation"> <div class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> </br></br> <li> <a href="viniothome24.html"><i class="fa fa-dashboard fa-fw"></i> Panel de Control</a> </li> <li> <a href="#"><i class="fa fa-table fa-fw"></i> Consultas<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="tiempo.html">El Tiempo</a> </li> <li> <a href="calendario.html">Calendario</a> </li> </ul> <!-- /.nav-second-level --> </li> <li> <a href="historicos.html"><i class="fa fa-bar-chart-o fa-fw"></i> Datos Históricos</a> </li> <li> <a href="#"><i class="fa fa-bell"></i> Alerts<span class="fa arrow"></span></a> <ul class="nav nav-second-level"> <li> <a href="heladas.html">Heladas</a> </li> <li> <a href="regadio.html">Regadío</a> </li> <li> <a href="botrytis.html">Botrytis</a> </li> <li>

Page 201: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

183

<a href="corregirpoda.html">Corregir poda</a> </li> </ul> <!-- /.nav-second-level --> </li> </ul> </div> <!-- /.sidebar-collapse --> </div> <!-- /.navbar-static-side --> </nav> <div id="page-wrapper"> <div class="row"> <div class="col-lg-12"> <h1 class="page-header">Alertas adelantar Poda</h1> </div> <!-- /.col-lg-12 --> </div> <!-- /.row --> <div class="row"> <div class="inner"></div> </div> <!-- /.row --> </div> <!-- /#page-wrapper --> </div> <!-- /#wrapper --> </body> </html>

APARTADO D.9 - LOGIN.HTML

<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="VinIoT - Login"> <meta name="author" content="Amaya Manzano"> <title>VinIoT - Login</title>

Page 202: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

184

<!-- Bootstrap Core CSS --> <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS --> <link href="../bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- jQuery --> <script src="../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript --> <script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script> <!-- Custom Theme JavaScript --> <script src="../dist/js/sb-admin-2.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="col-md-4 col-md-offset-4"> <div class="login-panel panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">Entre en su plataforma VinIoT</h3> </div> <div class="panel-body"> <form action="/auth" method="GET"> <fieldset> <div class="form-group"> <input type="text" name="email" class="form-control" placeholder="E-mail" autofocus> </div> <div class="form-group"> <input type="password" name="password" class="form-control" placeholder="Password"> </div> <input type="submit" value="Entrar" id="btnReg" class="btn btn-lg btn-success btn-block"/>

Page 203: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

185

</fieldset> </form> </div> </div> </div> </div> </div> </body> </html>

Page 204: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO D

186

Page 205: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

187

ANEXO E

APARTADO E.1 - FLUJOS NODE-RED. SECCIÓN DE GRÁFICOS EN

TIEMPO REAL

[{"id":"601f4565.1b459c","type":"function","z":"8155681e.55d758","name":"Filtra rLuz","func":"if(msg.payload.d!==undefined){\n msg.payload = msg.payload.d.light;\n return msg;\n}\n\n \n\n","outputs":1,"noerr":0,"x":281.58327865600586,"y":124.74996948242188,"wires":[["b1afb25a.f6e89"]]},{"id":"bc26de8e.6eaa1","type":"ibmiot in","z":"8155681e.55d758","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":"","allApplications":"","allDeviceTypes":"","allEvents":true,"allCommands":"","allFormats":true,"x":92.83329010009766,"y":177.74996948242188,"wires":[["601f4565.1b459c","cd951156.fe99","241844e6.061c2c"]]},{"id":"ee38b001.9b852","type":"websocket out","z":"8155681e.55d758","name":"","server":"b983c58a.bc66f8","client":"","x":541.9165687561035,"y":179.4166603088379,"wires":[]},{"id":"cd951156.fe99","type":"function","z":"8155681e.55d758","name":"Filtrar Temperatura","func":"if(msg.payload.d!==undefined){\n msg.payload = msg.payload.d.ambientTemp;\n return msg;\n}\n\n \n\n","outputs":1,"noerr":0,"x":310.075740814209,"y":178.93936157226562,"wires":[["ee38b001.9b852"]]},{"id":"9ef18d7c.c49a6","type":"websocket out","z":"8155681e.55d758","name":"","server":"62149442.5c4b8c","client":"","x":536.9165992736816,"y":239.4166603088379,"wires":[]},{"id":"241844e6.061c2c","type":"function","z":"8155681e.55d758","name":"Filtrar Humedad","func":"if(msg.payload.d!==undefined){\n msg.payload = msg.payload.d.humidity;\n return msg;\n}\n\n \n\n","outputs":1,"noerr":0,"x":298.075740814209,"y":239.93936347961426,"wires":[["9ef18d7c.c49a6"]]},{"id":"b1afb25a.f6e89","type":"websocket out","z":"8155681e.55d758","name":"","server":"388b6be1.670d94","client":"","x":531.4999694824219,"y":124.8333511352539,"wires":[]},{"id":"4d90333b.b4abfc","type":"comment","z":"8155681e.55d758","name":"Datos para los gráficos en tiempo real","info":"","x":188.125,"y":45.416669845581055,"wires":[]},{"id":"b983c58a.bc66f8","type":"websocket-listener","z":"8155681e.55d758","path":"/ws/temp","wholemsg":"false"},{"id":"62149442.5c4b8c","type":"websocket-listener","z":"8155681e.55d758","path":"/ws/hum","wholemsg":"false"},{"id":"388b6be1.670d94","type":"websocket-listener","z":"8155681e.55d758","path":"/ws/luz","wholemsg":"false"}]

Page 206: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

188

APARTADO E.2 - FLUJOS NODE-RED. SECCIÓN DE ALERTAS

[{"id":"d80ee08d.24509","type":"ibmiot in","z":"9c303daf.ab164","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":false,"allApplications":false,"allDeviceTypes":false,"allEvents":true,"allCommands":false,"allFormats":true,"x":128.74999237060547,"y":177.91664791107178,"wires":[["5ace500b.45ae1"]]},{"id":"f70f2101.97b18","type":"function","z":"9c303daf.ab164","name":"Alerta heladas","func":"var nombreMes = [\"Enero\",\"Febrero\", \"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"];\nvar fecha= new Date();\nfecha.setHours(fecha.getHours()+2);\nvar dia=fecha.getDate();\nvar numeroMes=fecha.getMonth();\nvar anho=fecha.getFullYear();\nvar hora=fecha.getHours();\nvar minuto=fecha.getMinutes();\nvar segundo=fecha.getSeconds();\nvar fechaCompleta= dia + \" de \" + nombreMes[numeroMes] + \" \" + anho + \" a las \" + hora + \":\" + minuto + \":\" + segundo;\n\nvar temp=msg.payload.d.ambientTemp;\nif(temp<1)\n{\n msg.payload=\"El \" + fechaCompleta + \" hay riesgo de helada. Se recomienda encender el riego para prevenir. \";\n return msg;\n}\n\nreturn null;","outputs":1,"noerr":0,"x":537.7973861694336,"y":176.60704708099365,"wires":[["debd195.34b9de8","199efed5.035ce1"]]},{"id":"199efed5.035ce1","type":"e-mail","z":"9c303daf.ab164","server":"smtp.gmail.com","port":"465","name":"[email protected]","dname":"","x":784.7499389648438,"y":120.58332824707031,"wires":[]},{"id":"debd195.34b9de8","type":"cloudant out","z":"9c303daf.ab164","name":"Guardar en heladas","cloudant":"","database":"heladas","service":"IoT Pruebas-cloudantNoSQLDB","payonly":true,"operation":"insert","x":768.6665649414062,"y":235.6666431427002,"wires":[]},{"id":"f29de0bc.6ffde","type":"http in","z":"9c303daf.ab164","name":"","url":"/infoHeladas","method":"get","swaggerDoc":"","x":228.74999237060547,"y":325.9166784286499,"wires":[["bd253a0e.e5d778"]]},{"id":"a9a55874.2557a8","type":"http response","z":"9c303daf.ab164","name":"","x":577.416618347168,"y":324.5833730697632,"wires":[]},{"id":"bd253a0e.e5d778","type":"cloudant in","z":"9c303daf.ab164","name":"","cloudant":"","database":"heladas","service":"IoT Pruebas-cloudantNoSQLDB","search":"_all_","design":"tempsearch","index":"filtroTemp","x":409.08333587646484,"y":326.25030422210693,"wires":[["a9a55874.2557a8"]]},{"id":"cf5f914a.1fa8d","type":"comment","z":"9c303daf.ab164","name":"Alerta Heladas guardar BBDD y email","info":"","x":198.74999237060547,"y":106.33333015441895,"wires":[]},{"id":"b1ee909f.a7b7c","type":"comment","z":"9c303daf.ab164","name":"Mandar a web alerta heladas lo de la BBDD","info":"","x":218.74999237060547,"y":261.4999895095825,"wires":[]},{"id":"c00d33de.06bdf","type":"ibmiot in","z":"9c303daf.ab164","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":false,"allApplications":false,"allDeviceTypes":false,"allEvents":true,"allCommands":false,"allFormats":true,"x":121.41665649414062,"y":554.4166917800903,"wires":[["2e82c867.d835b8"]]},{"id":"58e17186.09659","type

Page 207: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

189

":"function","z":"9c303daf.ab164","name":"Alerta regadio","func":"var nombreMes = [\"Enero\",\"Febrero\", \"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"];\nvar fecha= new Date();\nfecha.setHours(fecha.getHours()+2);\nvar dia=fecha.getDate();\nvar numeroMes=fecha.getMonth();\nvar anho=fecha.getFullYear();\nvar hora=fecha.getHours();\nvar minuto=fecha.getMinutes();\nvar segundo=fecha.getSeconds();\nvar fechaCompleta= dia + \" de \" + nombreMes[numeroMes] + \" \" + anho + \" a las \" + hora + \":\" + minuto + \":\" + segundo;\n\nvar temp=msg.payload.d.ambientTemp;\nvar hum=msg.payload.d.humidity;\n\nif(temp>30 && hum<40)\n{\n msg.payload=\"El \" + fechaCompleta + \" se recomienda regar porque el suelo esta seco \";\n return msg;\n}\n\nreturn null;","outputs":1,"noerr":0,"x":532.7973937988281,"y":553.1071825027466,"wires":[["1e91c9f2.e76326","cf538a81.334868"]]},{"id":"1e91c9f2.e76326","type":"e-mail","z":"9c303daf.ab164","server":"smtp.gmail.com","port":"465","name":"[email protected]","dname":"","x":781.25,"y":489.3334255218506,"wires":[]},{"id":"cf538a81.334868","type":"cloudant out","z":"9c303daf.ab164","name":"Guardar en regadio","cloudant":"","database":"regadio","service":"IoT Pruebas-cloudantNoSQLDB","payonly":true,"operation":"insert","x":760.1666259765625,"y":608.9167404174805,"wires":[]},{"id":"f77abe6c.a2c03","type":"http in","z":"9c303daf.ab164","name":"","url":"/infoRegadio","method":"get","swaggerDoc":"","x":224.41665649414062,"y":700.4166994094849,"wires":[["99a934fb.bcf538"]]},{"id":"d849dd5f.0d2ae","type":"http response","z":"9c303daf.ab164","name":"","x":576.4166259765625,"y":700.0833864212036,"wires":[]},{"id":"99a934fb.bcf538","type":"cloudant in","z":"9c303daf.ab164","name":"","cloudant":"","database":"regadio","service":"IoT Pruebas-cloudantNoSQLDB","search":"_all_","design":"tempsearch","index":"filtroTemp","x":408.0833435058594,"y":701.7503175735474,"wires":[["d849dd5f.0d2ae"]]},{"id":"d115c429.46d228","type":"comment","z":"9c303daf.ab164","name":"Alerta Regadio guardar BBDD y email","info":"","x":195.25001525878906,"y":474.83348846435547,"wires":[]},{"id":"84185473.870998","type":"comment","z":"9c303daf.ab164","name":"Mandar a web alerta regadio lo de la BBDD","info":"","x":212.6666259765625,"y":650.7500562667847,"wires":[]},{"id":"67614e8e.6e91e","type":"ibmiot in","z":"9c303daf.ab164","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":false,"allApplications":false,"allDeviceTypes":false,"allEvents":true,"allCommands":false,"allFormats":true,"x":116.91665649414062,"y":933.9167528152466,"wires":[["85a100d0.353ea"]]},{"id":"5afe31.f7b051d","type":"function","z":"9c303daf.ab164","name":"Alerta botrytis","func":"var nombreMes = [\"Enero\",\"Febrero\", \"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"];\nvar fecha= new Date();\nfecha.setHours(fecha.getHours()+2);\nvar dia=fecha.getDate();\nvar numeroMes=fecha.getMonth();\nvar anho=fecha.getFullYear();\nvar hora=fecha.getHours();\nvar minuto=fecha.getMinutes();\nvar segundo=fecha.getSeconds();\nvar fechaCompleta= dia + \" de \" + nombreMes[numeroMes] + \" \" + anho + \" a las \" + hora + \":\" + minuto + \":\" + segundo;\n\nvar temp=msg.payload.d.ambientTemp;\nvar

Page 208: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

190

luz=msg.payload.d.light;\nvar hum=msg.payload.d.humidity;\n\nif(hum>80 && temp>15 && temp<20 && luz<100)\n{\n msg.payload=\"El \" + fechaCompleta + \" hay riesgo de enfermedad de botrytis u otras enfermedades fúngicas. Se recomienda revisar los viñedos. \";\n return msg;\n}\n\nreturn null;","outputs":1,"noerr":0,"x":498.2973937988281,"y":932.6071825027466,"wires":[["5d81e66.58a5118","451efbf1.975084"]]},{"id":"5d81e66.58a5118","type":"e-mail","z":"9c303daf.ab164","server":"smtp.gmail.com","port":"465","name":"[email protected]","dname":"","x":742.75,"y":850.5835247039795,"wires":[]},{"id":"451efbf1.975084","type":"cloudant out","z":"9c303daf.ab164","name":"Guardar en botrytis","cloudant":"","database":"botrytis","service":"IoT Pruebas-cloudantNoSQLDB","payonly":true,"operation":"insert","x":724.4166259765625,"y":1014.9168395996094,"wires":[]},{"id":"73a927dd.280eb8","type":"http in","z":"9c303daf.ab164","name":"","url":"/infoBotrytis","method":"get","swaggerDoc":"","x":238.91665649414062,"y":1084.9167833328247,"wires":[["7f62ffb4.66a26"]]},{"id":"dd52835a.00752","type":"http response","z":"9c303daf.ab164","name":"","x":590.9166259765625,"y":1084.5834703445435,"wires":[]},{"id":"7f62ffb4.66a26","type":"cloudant in","z":"9c303daf.ab164","name":"","cloudant":"","database":"botrytis","service":"IoT Pruebas-cloudantNoSQLDB","search":"_all_","design":"tempsearch","index":"filtroTemp","x":422.5833435058594,"y":1086.2504014968872,"wires":[["dd52835a.00752"]]},{"id":"d21d5da0.4cb34","type":"comment","z":"9c303daf.ab164","name":"Alerta Botrytis guardar BBDD y email","info":"","x":188.50001525878906,"y":825.8335151672363,"wires":[]},{"id":"76f2983a.b96358","type":"comment","z":"9c303daf.ab164","name":"Mandar a web alerta botrytis lo de la BBDD","info":"","x":196.25,"y":1032.7501459121704,"wires":[]},{"id":"e31ec0c9.9c226","type":"e-mail","z":"9c303daf.ab164","server":"smtp.gmail.com","port":"465","name":"[email protected]","dname":"","x":1067.4998397827148,"y":1203.0001754760742,"wires":[]},{"id":"78e02349.0e483c","type":"cloudant out","z":"9c303daf.ab164","name":"Guardar en poda","cloudant":"","database":"poda","service":"IoT Pruebas-cloudantNoSQLDB","payonly":true,"operation":"insert","x":1047.666404724121,"y":1335.3334274291992,"wires":[]},{"id":"df1ea5a8.9d3108","type":"http in","z":"9c303daf.ab164","name":"","url":"/infoPoda","method":"get","swaggerDoc":"","x":129.6666488647461,"y":1548.3335494995117,"wires":[["b74aa2e6.c4a0c"]]},{"id":"dab158.58949ea8","type":"http response","z":"9c303daf.ab164","name":"","x":481.66661834716797,"y":1548.0002365112305,"wires":[]},{"id":"b74aa2e6.c4a0c","type":"cloudant in","z":"9c303daf.ab164","name":"","cloudant":"","database":"poda","service":"IoT Pruebas-cloudantNoSQLDB","search":"_all_","design":"tempsearch","index":"filtroTemp","x":303.33333587646484,"y":1549.6671676635742,"wires":[["dab158.58949ea8"]]},{"id":"5b106bf6.d6b704","type":"comment","z":"9c303daf.ab164","name":"Alerta Poda BBDD y email","info":"","x":149.49999237060547,"y":1211.0001754760742,"wires":[]},{"id":"5d9c64b7.e2643c","type":"comment","z":"9c303daf.ab164","name":"Mandar a web alerta poda lo de la BBDD","info":"","x":202.66661834716797,"y":1478.6668014526367,"wires":[]},{"id":"5ace500b.45ae1","type":"delay","z":"9c303daf.ab164","name":"1 dato cada 2h","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"12","rateUnits":"day","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":339.24999237060547,"y":177.58333492279053,"wires":[["f70f2101.97b18"]]},{"id

Page 209: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

191

":"2e82c867.d835b8","type":"delay","z":"9c303daf.ab164","name":"1 dato cada 2h","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"12","rateUnits":"day","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":331.4166564941406,"y":553.0833787918091,"wires":[["58e17186.09659"]]},{"id":"9e4ff75a.720eb8","type":"smooth","z":"9c303daf.ab164","name":"Media temp","action":"mean","count":"180","round":"3","x":696.4999618530273,"y":1363.3334274291992,"wires":[["a59f813f.f32c6"]]},{"id":"a59f813f.f32c6","type":"function","z":"9c303daf.ab164","name":"Alerta poda","func":"var nombreMes = [\"Enero\",\"Febrero\", \"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"];\nvar fecha= new Date();\nfecha.setHours(fecha.getHours()+2);\nvar dia=fecha.getDate();\nvar numeroMes=fecha.getMonth();\nvar anho=fecha.getFullYear();\nvar hora=fecha.getHours();\nvar minuto=fecha.getMinutes();\nvar segundo=fecha.getSeconds();\nvar fechaCompleta= dia + \" de \" + nombreMes[numeroMes] + \" \" + anho + \" a las \" + hora + \":\" + minuto + \":\" + segundo;\n\n\nif(dia==15 && numeroMes==0 && hora==12 && msg.payload<4)\n{\n msg.payload=\"El \" + fechaCompleta + \" hay riesgo de heladas. Se recomienda retrasar la poda 15 dias. \";\n return msg;\n}\n\nreturn null;","outputs":1,"noerr":0,"x":855.8332138061523,"y":1268.5476608276367,"wires":[["e31ec0c9.9c226","78e02349.0e483c"]]},{"id":"6f642923.951528","type":"ibmiot in","z":"9c303daf.ab164","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":false,"allApplications":false,"allDeviceTypes":false,"allEvents":true,"allCommands":false,"allFormats":true,"x":120.99999237060547,"y":1291.8571090698242,"wires":[["a3c5003f.84a4b"]]},{"id":"a3c5003f.84a4b","type":"function","z":"9c303daf.ab164","name":"Coger temp enero dias 1-15","func":"var fecha= new Date();\nvar dia=fecha.getDate();\nvar numeroMes=fecha.getMonth();\nif(numeroMes==0 && dia>1 && dia <15)\n{\n msg.payload=msg.payload.d.ambientTemp;\n return msg;\n}\nreturn null;","outputs":1,"noerr":0,"x":320.49999237060547,"y":1371.6666793823242,"wires":[["ff5224c.1d898d8"]]},{"id":"ff5224c.1d898d8","type":"delay","z":"9c303daf.ab164","name":"1 dato cada 2h","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"12","rateUnits":"day","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":527.4999008178711,"y":1271.0000534057617,"wires":[["9e4ff75a.720eb8"]]},{"id":"85a100d0.353ea","type":"delay","z":"9c303daf.ab164","name":"1 dato cada 2h","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"12","rateUnits":"day","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":316.9166564941406,"y":934.5833787918091,"wires":[["5afe31.f7b051d"]]}]

APARTADO E.3 - FLUJOS NODE-RED. SECCIÓN DE CHAT

[{"id":"223bc03e.07a4b","type":"websocket in","z":"a718e21a.5d21b","name":"","server":"f3e52626.1b7c98","client":"","x":121.41668319702148,"y":127.66665458679199,"wires":[["d97141df.d0129"]]},{"id":"d97141df.d0129","type":"function","z":"a718e21a.5d21b","name":"Session","func":"delete msg._session;\nreturn

Page 210: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

192

msg;\n\n","outputs":1,"noerr":0,"x":296.6666831970215,"y":127.66665458679199,"wires":[["596e6eae.d91ef"]]},{"id":"596e6eae.d91ef","type":"websocket out","z":"a718e21a.5d21b","name":"","server":"f3e52626.1b7c98","client":"","x":472.16668701171875,"y":127.66664695739746,"wires":[]},{"id":"ad714e8b.6d3ae","type":"comment","z":"a718e21a.5d21b","name":"Chat para los agricultores en el panel de control","info":"","x":230.625,"y":64.1666669845581,"wires":[]},{"id":"f3e52626.1b7c98","type":"websocket-listener","z":"","path":"/ws/chat","wholemsg":"false"}]

APARTADO E.4 - FLUJOS NODE-RED. SECCIÓN DEL HISTÓRICO

[{"id":"19afcef1.386781","type":"ibmiot in","z":"99b5bfd1.008e7","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":false,"allApplications":false,"allDeviceTypes":false,"allEvents":true,"allCommands":false,"allFormats":true,"x":163.66665649414062,"y":183.66661834716797,"wires":[["5521d886.ead728"]]},{"id":"d5e0c3e8.87f35","type":"function","z":"99b5bfd1.008e7","name":"Añadir fecha y hora","func":"var fecha = new Date();\nvar fechaString= new Date();\nfechaString.setHours(fechaString.getHours()+2);\nvar fech=fechaString.toJSON();\nvar id= \"b0b448d02787\";\n\nmsg.payload.d.objectTemp = fech;\nmsg.payload.d.magX = id;\nreturn msg;","outputs":1,"noerr":0,"x":596.0474090576172,"y":182.35706520080566,"wires":[["1d2bb092.cd095f"]]},{"id":"1d2bb092.cd095f","type":"cloudant out","z":"99b5bfd1.008e7","name":"Guardar en Cloudant","cloudant":"","database":"nodered2","service":"IoT Pruebas-cloudantNoSQLDB","payonly":true,"operation":"insert","x":832.3808670043945,"y":181.57139778137207,"wires":[]},{"id":"4e483c15.18caf4","type":"http in","z":"99b5bfd1.008e7","name":"","url":"/datos","method":"get","swaggerDoc":"","x":146.50000190734863,"y":412.3333625793457,"wires":[["792cf425.1e5b6c"]]},{"id":"6694cb53.7eb1e4","type":"http response","z":"99b5bfd1.008e7","name":"","x":643.2500038146973,"y":413.50002098083496,"wires":[]},{"id":"94f838ec.99bee8","type":"cloudant in","z":"99b5bfd1.008e7","name":"","cloudant":"","database":"nodered2","service":"IoT Pruebas-cloudantNoSQLDB","search":"_idx_","design":"tempsearch","index":"filtroTemp","x":479.41668701171875,"y":412.4167060852051,"wires":[["6694cb53.7eb1e4"]]},{"id":"792cf425.1e5b6c","type":"function","z":"99b5bfd1.008e7","name":"Selección","func":"if(msg.payload.date && msg.payload.temp && msg.payload.hum && msg.payload.light)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\"+ \" AND \" + \"temperatura:'\"+ msg.payload.temp+\"'\"+ \" AND \" + \"humedad:'\"+ msg.payload.hum+\"'\"+ \" AND \" + \"luz:'\"+ msg.payload.light+\"'\";\n}\nif(msg.payload.date && msg.payload.temp && msg.payload.hum)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\"+ \" AND \" + \"temperatura:'\"+ msg.payload.temp+\"'\"+ \" AND \" + \"humedad:'\"+ msg.payload.hum+\"'\";\n}\nif(msg.payload.date && msg.payload.temp && msg.payload.light)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\"+ \" AND \" + \"temperatura:'\"+ msg.payload.temp+\"'\"+ \" AND \" + \"luz:'\"+ msg.payload.light+\"'\";\n}\nif(msg.payload.date && msg.payload.hum &&

Page 211: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

193

msg.payload.light)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\"+ \" AND \" + \"humedad:'\"+ msg.payload.hum+\"'\"+ \" AND \" + \"luz:'\"+ msg.payload.light+\"'\";\n}\nif(msg.payload.temp && msg.payload.hum && msg.payload.light)\n{\n msg.payload = \"temperatura:'\"+ msg.payload.temp+\"'\"+ \" AND \" + \"humedad:'\"+ msg.payload.hum+\"'\"+ \" AND \" + \"luz:'\"+ msg.payload.light+\"'\";\n}\nif(msg.payload.date && msg.payload.temp)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\"+ \" AND \" + \"temperatura:'\"+ msg.payload.temp+\"'\";\n}\nif(msg.payload.date && msg.payload.hum)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\"+ \" AND \" + \"humedad:'\"+ msg.payload.hum+\"'\";\n}\nif(msg.payload.date && msg.payload.light)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\"+ \" AND \" + \"luz:'\"+ msg.payload.light+\"'\";\n}\nif(msg.payload.temp && msg.payload.hum)\n{\n msg.payload = \"temperatura:'\"+ msg.payload.temp +\"'\"+ \" AND \" + \"humedad:'\"+ msg.payload.hum+\"'\";\n}\nif(msg.payload.temp && msg.payload.light)\n{\n msg.payload = \"temperatura:'\"+ msg.payload.temp +\"'\"+ \" AND \" + \"luz:'\"+ msg.payload.light+\"'\";\n}\nif(msg.payload.hum && msg.payload.light)\n{\n msg.payload = \"humedad:'\"+ msg.payload.hum +\"'\"+ \" AND \" + \"luz:'\"+ msg.payload.light+\"'\";\n}\nif(msg.payload.date)\n{\n msg.payload = \"fecha:\\\"\"+ msg.payload.date +\"\\\"\";\n}\nif(msg.payload.temp)\n{\n msg.payload = \"temperatura:'\"+ msg.payload.temp +\"'\";\n}\nif(msg.payload.hum)\n{\n msg.payload = \"humedad:'\"+ msg.payload.hum +\"'\";\n}\nif(msg.payload.light)\n{\n msg.payload = \"luz:'\"+ msg.payload.light +\"'\";\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":312.24999618530273,"y":413.3333930969238,"wires":[["94f838ec.99bee8"]]},{"id":"5521d886.ead728","type":"delay","z":"99b5bfd1.008e7","name":"1 dato cada 2h","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"12","rateUnits":"day","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":384.5000305175781,"y":184.00000762939453,"wires":[["d5e0c3e8.87f35"]]},{"id":"e997cf09.102fd","type":"comment","z":"99b5bfd1.008e7","name":"Recoger datos para la tabla de históricos","info":"","x":238.125,"y":72.91667079925537,"wires":[]},{"id":"f406fe79.8b145","type":"comment","z":"99b5bfd1.008e7","name":"Coger los datos de la BBDD para mostrarlos en la tabla según lo seleccionado","info":"","x":351.875,"y":299.1666736602783,"wires":[]}]

Page 212: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

194

APARTADO E.5 - SECCIÓN DEL TWEETS

[{"id":"202113c8.11c16c","type":"smooth","z":"3b21aeb8.6fe962","name":"Media temp","action":"mean","count":"1488","round":"3","x":748.0832290649414,"y":91.91670227050781,"wires":[["a9d63b.286a39c8"]]},{"id":"9f8f9a86.915a48","type":"function","z":"3b21aeb8.6fe962","name":"Alerta ","func":"var nombreMes = [\"Enero\",\"Febrero\", \"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"];\nvar fecha= new Date();\nfecha.setHours(fecha.getHours()+2);\nvar dia=fecha.getDate();\nvar numeroMes=fecha.getMonth();\nvar anho=fecha.getFullYear();\nvar hora=fecha.getHours();\nvar minuto=fecha.getMinutes();\nvar segundo=fecha.getSeconds();\nvar fechaCompleta= dia + \" de \" + nombreMes[numeroMes] + \" \" + anho + \" a las \" + hora + \":\" + minuto + \":\" + segundo;\nvar currentTime=new Date().getTime();\n\nif(dia==31 && numeroMes==7 && hora==23)\n{\n if(!context.lastTime)\n {\n context.lastTime=currentTime;\n if(msg.topic==\"temp\")\n {\n context.temp=\"temp\";\n return null;\n }\n if(msg.topic==\"hum\")\n {\n context.hum=\"temp\";\n return null;\n }\n }\n if(currentTime-context.lastTime>5000)\n {\n context.lastTime=currentTime;\n if(msg.topic==\"temp\")\n {\n context.temp=\"temp\";\n context.hum=null;\n return null;\n }\n if(msg.topic==\"hum\")\n {\n context.hum=\"hum\";\n context.temp=null;\n return null;\n }\n }else{\n context.lastTime=currentTime;\n if(msg.topic==\"temp\" && context.hum==\"hum\")\n {\n msg.payload=\"El \" + fechaCompleta + \" se confirma que la añada será excelente. \";\n return msg;\n }\n if(msg.topic==\"hum\" && context.temp==\"temp\")\n {\n msg.payload=\"El \" + fechaCompleta + \" se confirma que la añada será excelente. \";\n return msg;\n }\n }\n}\n \nreturn null;","outputs":1,"noerr":0,"x":1084.4165420532227,"y":196.1309356689453,"wires":[["248e69b6.f3d086"]]},{"id":"afaeb39d.4ab3d","type":"ibmiot in","z":"3b21aeb8.6fe962","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"b0b448d02787","applicationId":"","deviceType":"SensorTag-2.0","eventType":"+","commandType":"","format":"json","name":"b0b448d02787","service":"registered","allDevices":false,"allApplications":false,"allDeviceTypes":false,"allEvents":true,"allCommands":false,"allFormats":true,"x":102.41666412353516,"y":195.4402618408203,"wires":[["63ebc24f.e1f29c"]]},{"id":"63ebc24f.e1f29c","type":"function","z":"3b21aeb8.6fe962","name":"Coger datos julio y agosto","func":"var fecha= new Date();\nvar dia=fecha.getDate();\nvar numeroMes=fecha.getMonth();\nif(numeroMes==6 && numeroMes==7)\n{\n return msg;\n}\nreturn null;","outputs":1,"noerr":0,"x":338.0833206176758,"y":196.2498321533203,"wires":[["dfe547d4.1df5c8"]]},{"id":"dfe547d4.1df5c8","type":"delay","z":"3b21aeb8.6fe962","name":"1 dato por hora","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"24","rateUnits":"day","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":563.0831680297852,"y":196.5833282470703,"wires":[["2b21ba28.64b6a6","581b3522.9fe95c"]]},{"id":"248e69b6.f3d086","type":"twitter out","z":"3b21aeb8.6fe962","twitter":"","name":"Tweet","x":1267.249828338623,"y":196.66682624816895,"wires":[]},{"id":"39468bad.511ac4","type":"comment","z":"3b21

Page 213: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

195

aeb8.6fe962","name":"Tweet añada excelente","info":"","x":120.08325958251953,"y":58.16684150695801,"wires":[]},{"id":"581b3522.9fe95c","type":"function","z":"3b21aeb8.6fe962","name":"Selección Temp","func":"msg.payload=msg.payload.d.ambientTemp;\nreturn msg;","outputs":1,"noerr":0,"x":567.9166030883789,"y":92.24983215332031,"wires":[["202113c8.11c16c"]]},{"id":"2b21ba28.64b6a6","type":"function","z":"3b21aeb8.6fe962","name":"Selección Hum","func":"msg.payload=msg.payload.d.humidity;\nreturn msg;","outputs":1,"noerr":0,"x":558.9166030883789,"y":291.2500762939453,"wires":[["c37e458.f8c1eb8"]]},{"id":"c37e458.f8c1eb8","type":"smooth","z":"3b21aeb8.6fe962","name":"Media hum","action":"mean","count":"1488","round":"3","x":737.0832290649414,"y":291.9168243408203,"wires":[["e4e71c1d.4cac9"]]},{"id":"a9d63b.286a39c8","type":"function","z":"3b21aeb8.6fe962","name":"25<temp<30","func":"if(msg.payload>24 && msg.payload<31)\n{\n msg.topic=\"temp\";\n return msg;\n}\nreturn null;","outputs":1,"noerr":0,"x":917.9166641235352,"y":92.91658020019531,"wires":[["9f8f9a86.915a48"]]},{"id":"e4e71c1d.4cac9","type":"function","z":"3b21aeb8.6fe962","name":"60<hum<70","func":"if(msg.payload>59 && msg.payload<71)\n{\n msg.topic=\"hum\";\n return msg;\n}\n\nreturn null;","outputs":1,"noerr":0,"x":905.0832901000977,"y":290.5833282470703,"wires":[["9f8f9a86.915a48"]]}]

Page 214: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO E

196

Page 215: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO F

197

ANEXO F

APARTADO F.1 - DEFINICIONES

Internet de las Cosas: Internet de las cosas o IoT, por sus siglas en inglés, es un concepto

que nació en el Instituto de Tecnología de Massachusetts. Se trata de una revolución en las

relaciones entre los objetos y las personas, o incluso entre los objetos directamente; que se

conectaran entre ellos y con la Red para ofrecer datos en tiempo real. Se podría decir que

es la digitalización del mundo físico [55].

Big Data: Según la definición del periódico El Economista, “Denominamos Big Data a la

gestión y análisis de enormes volúmenes de datos que no pueden ser tratados de manera

convencional, ya que superan los límites y capacidades de las herramientas de software

habitualmente utilizadas para la captura, gestión y procesamiento de datos. Dicho concepto

engloba infraestructuras, tecnologías y servicios que han sido creados para dar solución al

procesamiento de enormes conjuntos de datos estructurados, no estructurados o semi-

estructurados (mensajes en redes sociales, señales de móvil, archivos de audio, sensores,

imágenes digitales, datos de formularios, emails, datos de encuestas…) que pueden

provenir de sensores, micrófonos, cámaras, escáneres médicos, imágenes… El objetivo de

Big Data, al igual que los sistemas analíticos convencionales, es convertir el Dato en

información que facilita la toma de decisiones, incluso en tiempo real” [56].

Una definición más sencilla según Fernando Alfaro, co-fundador y socio en APR Aprende

a Pensar Al Revés, es que el Big Data es “La nueva forma de hacer contabilidad” [57].

Esto es porque el Big Data no trata de mostrar cientos de información recogida en las bases

de datos sin sentido; sino que consiste en pensar qué se puede hacer con esa información

para darle una utilidad que a nadie antes se le había ocurrido y con ello por ejemplo poder

ganar dinero, adelantarse a posibles sucesos o poder saber antes de que se entreguen las

cuentas anuales de una empresa si van a ser favorables o no gracias a la obtención de datos

en tiempo real.

Page 216: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO F

198

Cloud Computing: La computación en la nube, es un paradigma que permite ofrecer

servicios de computación a través de la red [58].

La nube: “Es un nuevo modelo de uso de los equipos informáticos. Lo que normalmente

estaría en tu PC (tus programas o tus archivos, por ejemplo) pasa a estar en un conjunto de

servidores a los que puedes acceder a través de Internet y que forman la tal nube” [59].

PaaS: Una Plataforma como Servicio es un tipo de servicio cloud que proporciona una

plataforma y un entorno que permite a los desarrolladores crear aplicaciones y servicios

que funcionen a través de la red. Esto servicios se encuentran en la nube, y los usuarios

pueden acceder a ellos con su navegador web. Permite a los usuarios crear aplicaciones de

software utilizando herramientas suministradas por el proveedor [60].

MQTT: Message Queue Telemetry Transport es un protocolo de conectividad abierto

Cliente/Servidor que permite enviar mensajes a través de redes de alta latencia o con

restricciones. Fue diseñado para ser una mensajería Publish-Suscribe muy ligera y es muy

útil para conexiones en las que es importante no consumir mucho ancho de banda [61].

Bluemix: Es un entorno PaaS basado en open standards donde se pueden crear

aplicaciones directamente desde el sitio web en diferentes lenguajes de programación.

Además contiene un amplio catálogo de servicios en el que se pueden consumir servicios

tecnológicos de bases de datos relacionales, bases de datos noSQL, analítica de negocio,

servicios para aplicaciones de móviles, IoT… y no tan tecnológicos como por ejemplo un

localizador de código postal basado en una dirección [62]. Esta es la herramienta que se a

utilizar en este proyecto.

Gateway (GW): Es una puerta de enlace que permite conectar redes con protocolos y

arquitecturas diferentes a todos los niveles de comunicación [63].

HTML: Es un lenguaje de programación que se utiliza para el desarrollo de páginas web

en la parte de cliente. Sus siglas corresponden a HyperText Markup Language [64].

HTML5 es su última versión que añade nuevas funcionalidades. Para consultar más sobre

Page 217: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO F

199

la semántica de este lenguaje se ha consultado en la página con la siguiente referencia:

[65].

JavaScript: Es un lenguaje de programación interpretado que apareció para ampliar las

posibilidades del HTML, ya que éste presentaba algunas limitaciones (como por ejemplo

mandar un mensaje de aviso) [66]. Es interpretado por todos los navegadores y

actualmente es utilizado sobre todo para enviar y recibir información del servidor con

ayuda de otras tecnologías como Ajax [67]. Para consultar más sobre la semántica de este

lenguaje se ha consultado en la página con la siguiente referencia: [68]. No solo se usa para

el lado del cliente, sino también del servidor con la ayuda de Node.js.

Node.js: Node interpreta JavaScript en el lado del servidor y se caracteriza principalmente

por cambiar la noción de cómo se trabaja con un servidor. Su principal ventaja es que

permite construir aplicaciones muy escalables y escribir relativamente poco código para

todas las decenas de conexiones simultáneas que tiene que hacer en una sólo una máquina

física [69].

Page 218: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO F

200

Page 219: iit.comillas.edu · Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad, el autor CEDE a la Universidad Pontificia Comillas,

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

GRADO EN INGENIERÍA TELEMÁTICA

ANEXO G

201

ANEXO G

APARTADO G.1 – TARIFAS DE PRECIO/HORA TRABAJADA SEGÚN EL

PERFIL PROFESIONAL

Categoría PVP/hora PVP/jornada

Jefe de Proyecto 55 440

Analista Funcional Senior 45 360

Analista Funcional Junior 40 320

Analista Orgánico 35 280

Analista/Programador 33 264

Programador Senior 30 240

Programador Junior 23 184

Experiencia <=5 años

Consultor Junior 40 320

Consultor Senior 45 360

Tabla 12: Tarifas actuales del mercado según el perfil profesional

Nota: Las tarifas para proyectos a riesgo (quiere decir que se hace una oferta a precio

cerrado y se asume el riesgo de posibles desviaciones), se suelen incrementar en un

20/25%.