Full text
Documento: Memoria TRABAJO FINAL DE ESTUDIOS Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de agujas en sistemas ferroviarios Autor: Ignacio García Dachary Director /Co-director: Álvaro Luna Alloza / Pedro Rodríguez Cortés Titulación: Grado en Ingeniería en Tecnologías Industriales Convocatòria: Primavera 2021
AGRADECIMIENTOS En primer lugar, quiero agradecer a mi tutor Álvaro Luna por guiarme y aconsejarme durante la realización de este proyecto. A SENER, por su apoyo y consejos durante la realización del trabajo. A mis padres, por su apoyo incondicional, por enseñarme a dar lo mejor de mí y por hacer posible el llegar hasta aquí y ser la persona que soy. A mi hermana, por ayudarme y aconsejarme siempre que lo he necesitado.
i RESUMEN El presente Trabajo de Fin de Grado consiste en la elaboración de un prototipo de sistema basado en tecnología IoT para la monitorización y supervisión de cambios de agujas o desvíos en los sistemas ferroviarios, instalaciones críticas en cuanto a la seguridad de la circulación de trenes. Para ello, se estudia, en primer lugar, la estructura de los cambios de agujas y se definen los parámetros a monitorizar para garantizar la integridad de estas instalaciones. A continuación, se establecen las herramientas necesarias para el diseño de un sistema IoT que permita monitorizar este tipo de instalaciones, así como las distintas opciones existentes para cada una de ellas, eligiendo en cada caso aquella que mejor se adapta a los requerimientos del proyecto. En la parte central del trabajo, se lleva a la práctica el sistema estudiado, mediante la realización del prototipo mencionado, incorporando todos los elementos estudiados. Por último, se demuestra la funcionalidad del prototipo en su totalidad y la posibilidad de la creación de una solución similar, basado en el prototipo, que se podría implementar en un entorno real. ABSTRACT This Degree Final Project consists in the making of an IoT technology-based prototype for the monitoring and supervision of railroad switches in railway systems, which are critical facilities regarding safety for trains circulation. In order to achieve this, in first place, the railroad switches’ structure is studied and the needed parameters to ensure the integrity of these facilities are defined. Then, the tools needed in an IoT system that allows to monitor this type of facilities are set, as well as the different options to choose from for each one of them, choosing in each case the one that fits the requirements of the project. In the main section of the project, the prototype is built, including all the studied elements. Lastly, the functionality of the prototype is demonstrated along with the possibility of creating a similar solution, based on the prototype, which could be implemented in a real-world scenario.
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios ii ÍNDICE 1 INTRODUCCIÓN ..................................................................................................................... 1 1.1 OBJETO ............................................................................................................................. 1 1.2 ALCANCE ......................................................................................................................... 1 1.3 REQUERIMIENTOS ......................................................................................................... 1 1.4 JUSTIFICACIÓN............................................................................................................... 2 2 ANTECEDENTES Y ESTADO DEL ARTE ........................................................................... 4 2.1 CAMBIO DE AGUJAS FERROVIARIO ......................................................................... 4 2.1.1 Tipos de desvíos ......................................................................................................... 4 2.1.2 Partes del desvío ......................................................................................................... 5 2.1.3 Instalaciones asociadas. Calefacción de agujas .......................................................... 7 2.2 IOT ..................................................................................................................................... 8 2.2.1 Computación en la nube ............................................................................................. 8 2.3 IOT EN EL SECTOR FERROVIARIO ........................................................................... 10 2.3.1 IoT en la monitorización de cambios de agujas ....................................................... 11 3 METODOLOGÍA .................................................................................................................... 12 3.1 PARÁMETROS A MEDIR Y SENSORES .................................................................... 12 3.1.1 Movimiento agujas y corazón .................................................................................. 12 3.1.2 Temperatura de elementos calefactados ................................................................... 13 3.2 ARQUITECTURA GENERAL DEL SISTEMA IOT ..................................................... 14 3.3 CONEXIÓN DE LOS DISPOSITIVOS A INTERNET .................................................. 14 3.4 ALIMENTACIÓN DE LOS DISPOSITIVOS ................................................................. 15 4 SELECCIÓN DE ALTERNATIVAS ..................................................................................... 16 4.1 HARDWARE BASE........................................................................................................ 16 4.2 CONEXIÓN A LA RASPBERRY PI DE FORMA REMOTA ....................................... 17 4.3 SENSORES ...................................................................................................................... 18 4.3.1 Sensor de temperatura y humedad ambientes DHT22 ............................................. 18 4.3.2 Sensor de proximidad mediante ultrasonidos HC-SR04 .......................................... 19 4.3.3 Sensor de temperatura de superficie mediante infrarrojos MLX90614 ................... 19 4.4 PUERTA DE ENLACE A LA NUBE ............................................................................. 20 4.5 PLATAFORMA DE COMPUTACIÓN EN LA NUBE .................................................. 21 4.6 VISUALIZACIÓN DE DATOS EN TIEMPO REAL ..................................................... 24 4.7 CANAL DE RECEPCIÓN DE ALERTAS ..................................................................... 26 5 DESARROLLO PRÁCTICO .................................................................................................. 27 5.1 ARQUITECTURA DEL PROTOTIPO ........................................................................... 27 5.2 CONFIGURACIÓN DE LA RASPBERRY PI ............................................................... 29 5.3 CONEXIÓN DE SENSORES A RASPBERRY PI ......................................................... 34
iii 5.3.1 GPIO Raspberry Pi ................................................................................................... 34 5.3.2 Conexión de sensor de temperatura y humedad ambientes DHT22 ......................... 34 5.3.3 Conexión de sensor de proximidad mediante ultrasonidos HC-SR04 ..................... 35 5.3.4 Sensor de temperatura de superficie de IR MLX90614 ........................................... 36 5.4 INSTALACIÓN Y CONFIGURACIÓN DE NODE-RED ............................................. 38 5.4.1 Instalación de Node-Red .......................................................................................... 38 5.4.2 Requerir autenticación mediante usuario y contraseña ............................................ 38 5.4.3 Inicio automático al arrancar .................................................................................... 40 5.4.4 Acceso al editor Node-Red....................................................................................... 40 5.5 LECTURAS DE SENSORES MEDIANTE NODE-RED ............................................... 41 5.5.1 Configuración Flow Raspberry Real ........................................................................ 41 5.5.2 Configuración Flow Raspberry Simulada ................................................................ 43 5.6 ENVÍO DE DATOS A AZURE IOT HUB ...................................................................... 44 5.6.1 Creación y configuración de IoT Hub ...................................................................... 45 5.6.2 Subida de datos a IoT Hub desde Node-Red ............................................................ 46 5.7 ALMACENAMIENTO DE DATOS EN AZURE SQL DATABASE ............................ 50 5.7.1 Creación de base de datos de Azure SQL ................................................................ 50 5.7.2 Direccionamiento de datos mediante Azure Stream Analytics ................................ 52 5.8 VISUALIZACIÓN DE DATOS EN GRAFANA CLOUD ............................................. 55 5.8.1 Conexión con base de datos Azure SQL .................................................................. 55 5.8.2 Creación de dashboard en tiempo real ..................................................................... 57 5.8.3 Sistema de alertas ..................................................................................................... 62 5.9 ESCALABILIDAD DEL SISTEMA ............................................................................... 64 6 RESUMEN DE PRESUPUESTO Y ESTUDIO DE VIABILIDAD ECONÓMICA ............. 65 6.1 PRESUPUESTO .............................................................................................................. 65 6.2 ESTUDIO DE VIABILIDAD ECONÓMICA ................................................................. 65 6.2.1 Coste de un dispositivo ............................................................................................ 66 6.2.2 Cantidad de dispositivos por cambio de agujas ........................................................ 66 6.2.3 Cantidad aproximada de cambios de agujas por km ................................................ 66 6.2.4 Coste de los servicios en la nube .............................................................................. 67 7 CONCLUSIONES ................................................................................................................... 69 7.1 TRABAJOS FUTUROS .................................................................................................. 70 8 REFERENCIAS ...................................................................................................................... 71
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios iv ÍNDICE DE TABLAS Tabla 1. Criterios y pesos para la elección del hardware ................................................................. 17 Tabla 2. Cálculo de nota ponderada para Raspberry Pi y Arduino .................................................. 17 Tabla 3. Servicios de Microsoft Azure, AWS y Google Cloud ....................................................... 22 Tabla 4. Criterios y pesos para la elección de plataforma en la nube .............................................. 23 Tabla 5. Cálculo de nota ponderada para Microsoft Azure, AWS y Google Cloud ........................ 23 Tabla 6. Criterios y pesos para la elección de la herramienta de visualización de datos ................. 25 Tabla 7. Cálculo de nota ponderada para Grafana Cloud y Power BI ............................................. 26 Tabla 8. Resumen presupuesto ......................................................................................................... 65 Tabla 9. Cálculo coste dispositivo IoT ............................................................................................. 66 Tabla 10. Cálculo ratio medio de desvío simple/km en líneas ferroviarias ...................................... 67
v ÍNDICE DE FIGURAS Figura 1. Esquema de desvío sencillo (Fuente: [3]) ........................................................................... 4 Figura 2. Esquema simplificado de desvío sencillo, escape y bretelle (Fuente: [4]) ......................... 5 Figura 3. Posición de agujas para circulación por vía directa y desviada (Fuente: [6]) ..................... 6 Figura 4. Instalación de calefacción de agujas en funcionamiento (Fuente:[7]) ................................ 7 Figura 5. Gestión de servicios en SaaS, PaaS y IaaS (Fuente: [13]) .................................................. 9 Figura 6. Disposición sensores de proximidad con aguja en contacto con contraguja .................... 12 Figura 7. Disposición sensores de proximidad con aguja sin contacto con contraguja.................... 12 Figura 8. Disposición sensores de temperatura IR para monitorización de par aguja-contraguja ... 13 Figura 9. Arquitectura necesaria para la solución IoT ..................................................................... 14 Figura 10. Sensor DHT22 (Fuente: [24]) ......................................................................................... 18 Figura 11. Sensor HC-SR04 (Fuente: [26])...................................................................................... 19 Figura 12. Sensor MLX90614 (Fuente: [28]) .................................................................................. 20 Figura 13. Logo de Node-Red (Fuente: [30])................................................................................... 20 Figura 14. Arquitectura prototipo IoT (Fuente: elaboración propia) ............................................... 28 Figura 15. Raspberry Pi 4 ................................................................................................................. 29 Figura 16. Opciones de descarga de Raspberry Pi OS (Fuente: [36]) .............................................. 30 Figura 17. Programa Balena Etcher (Fuente: Balena Etcher) .......................................................... 30 Figura 18. Conexión de alimentación, cable Ethernet y periféricos a la Raspberry Pi .................... 31 Figura 19. Dirección IP asignada a la Raspberry Pi (Fuente: Raspberry Pi) ................................... 31 Figura 20. Cambio de contraseña en Raspberry Pi (Fuente: Raspberry Pi) ..................................... 31 Figura 21. Configuración de conexión SSH con Raspberry Pi desde ordenador (Fuente: PuTTY) 32 Figura 22. Acceso a terminal de Raspberry Pi mediante PuTTY y SSH (Fuente: PuTTY) ............. 32 Figura 23. Configuración conexión VNC mediante Real VNC (Fuente: VNC Viewer) ................. 33 Figura 24. Introducción de credenciales de acceso en VNC Viewer (Fuente: VNC Viewer) ......... 33 Figura 25. Interfaz gráfica de la Raspberry Pi desde VNC Viewer (Fuente: VNC Viewer) ............ 33 Figura 26. Configuración GPIO Raspberry Pi 4 (Fuente: [39]) ....................................................... 34 Figura 27. Conexión DHT22 a Raspberry Pi 4. De izquierda a derecha, pines sensor: GND, VCC, DATA (Fuente: Fritzing Beta) ......................................................................................................... 35 Figura 28. Divisor de tensión de 5V a 3,3V de pin ECHO (Fuente: NI Multisim) .......................... 35 Figura 29. Conexión HC-SR04 a Raspberry Pi 4. De izquierda a derecha, pines sensor: VCC, TRIG, ECHO, GND (Fuente: Fritzing Beta) ............................................................................................... 36 Figura 30. Conexión MLX90614 a Raspberry Pi 4. De izquierda a derecha, pines sensor: VIN, GND, SCL, SDA (Fuente: Fritzing Beta) ................................................................................................... 37 Figura 31. Esquema de conexión de sensores a Raspberry Pi 4 (Fuente: Fritzing Beta) ................. 37 Figura 32. Conexión de sensores a Raspberry Pi ............................................................................. 38 Figura 33. Archivo de ajustes de Node-Red (Fuente: Raspberry Pi) ............................................... 39 Figura 34. Generación de hash de la contraseña (Fuente: Raspberry Pi) ......................................... 39 Figura 35. Autenticación mediante nombre de usuario y contraseña para acceder a Node-Red (Fuente: Raspberry Pi) ..................................................................................................................... 39 Figura 36. Consola de Node-Red (Fuente: Raspberry Pi) ................................................................ 40 Figura 37. Editor Node-Red (Fuente: Node-Red) ............................................................................ 40 Figura 38. Nodo Inject (Fuente: Node-Red) .................................................................................... 41 Figura 39. Nodos Exec para cada uno de los sensores (Fuente: Node-Red) .................................... 41 Figura 40. Conversión de string a float mediante nodo Function. Fuente (Node-Red) ................... 42 Figura 41. Nodo Change de asignación de topic (Fuente: Node-Red) ............................................. 42 Figura 42. Propiedades del nodo Join encargado de agrupar las 4 lecturas de los sensores (Fuente: Node-Red) ........................................................................................................................................ 43 Figura 43. Objeto devuelto por nodo Join (Fuente: Node-Red) ....................................................... 43 Figura 44. Menú manage palette de Node-Red (Fuente: Node-Red) ............................................... 44
5 de ambos escapes intersecan. Este tipo de desvío permite el cambio de trenes de una vía a otra en los dos sentidos de la circulación y desde ambas vías, así como la circulación directa por las vías principales (Figura 2) [4]. Figura 2. Esquema simplificado de desvío sencillo, escape y bretelle (Fuente: [4]) Además de los desvíos mencionados, existen más tipos de desvíos menos frecuentes que ofrecen diferentes soluciones para adaptarse a las necesidades de circulación, espacio o velocidad requeridos en cada situación, tales como la diagonal, el haz o la travesía de unión doble. 2.1.2 Partes del desvío Todos los tipos de desvío parten de la misma estructura y modo de funcionamiento. Por ello, se pueden definir las partes que conforman un desvío sencillo, así como sus principales elementos y la función de cada uno de ellos, y extrapolar estos conceptos al resto de tipos de desvío. El desvío sencillo se divide en tres partes: el cambio, la zona intermedia y el cruzamiento, como queda reflejado en la Figura 1. Es necesario aclarar que, en un desvío, el tren puede entrar desde ambas direcciones. Si entra en el desvío por la zona del cambio, se conoce como entrada de punta; por el contrario, si entra por la zona del cruzamiento, ya sea por la vía directa o la desviada, se conoce como entrada de talón. [5] 2.1.2.1 Cambio El cambio es la parte del desvío donde se produce el nacimiento de la vía desviada, si se entra de punta, o la muerte de la misma, si se entra de talón; es decir, es el lugar donde se produce la separación de los carriles de la vía directa y la desviada. Los principales elementos que forma el cambio son las contragujas, las agujas y el sistema de accionamiento. - Contragujas Se denomina contragujas a los carriles rígidos que no tienen permitido el movimiento en ninguno de sus puntos a lo largo del cambio. En un desvío sencillo, las dos contragujas corresponden al carril exterior de cada una de las vías, la directa y la desviada; en caso de entrar de punta al desvío de la Figura 1, el carril izquierdo de la vía directa y el derecho de la desviada. - Agujas Las agujas son los elementos encargados de hacer posible el cambio. Juntamente con las contragujas, conforman los conjuntos aguja-contraguja. A diferencia de las contragujas, las agujas son elementos móviles y flexibles que, mediante el mecanismo de accionamiento, situado en el extremo de las agujas, son capaces de desplazarse horizontalmente hasta entrar una de ellas en contacto con su contraguja correspondiente. De este modo, en función de la posición de las agujas, se habilita la circulación por la vía directa o por la desviada. Entrando de punta a un desvío como el de la Figura 1, si se desea dirigir la circulación por la vía directa, la aguja de la vía directa debe estar acoplada a la contraguja derecha; en cambio, si se desea la circulación por la vía desviada, la aguja de la vía desviada debe estar acoplada a la contraguja izquierda. Es importante remarcar que en ningún momento ambas agujas pueden estar en contacto con sus respectivas contragujas de forma simultánea. Este modo de funcionamiento se
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 6 puede observar en la siguiente figura (Figura 3. Posición de agujas para circulación por vía directa y desviada (Fuente: [6])Figura 3): Figura 3. Posición de agujas para circulación por vía directa y desviada (Fuente: [6]) Las agujas deben ser mecanizados de tal forma que puedan adaptarse geométricamente a las contragujas cuando entren en contacto, para generar un plano de rodadura continuo sin perturbaciones. - Sistema de accionamiento El sistema de accionamiento es el responsable del movimiento de las agujas y su posicionamiento para la circulación por una vía u otra. En un inicio, estos eran sistemas mecánicos cuyo funcionamiento se basada en cables que, desde un puesto de control de cambio, se les aplicaba una tensión mayor o menor, lo cual se reflejaba en el posicionamiento de las agujas en una posición u otra. En la actualidad, la mayoría de sistemas de accionamiento son mecanismos eléctricos, neumáticos o hidráulicos encargados de mover las agujas hasta una de las posiciones posibles. 2.1.2.2 Zona intermedia La zona intermedia del desvío es la que se encuentra entre el cambio y el cruzamiento. En ella se encuentran los carriles de unión, los cuales permiten el direccionamiento del tren hacia la vía directa o hacia la desviada. Existen cuatro carriles de unión, dos para cada una de las dos vías del desvío. 2.1.2.3 Cruzamiento El cruzamiento es el punto del desvío donde se produce el corte de los carriles interiores de la vía directa y la desviada. Esto es, siguiendo el mismo ejemplo, entrando de punta a un desvío como el de la Figura 1, el corte del carril derecho de la vía directa y el del carril izquierdo de la desviada. Este hecho conlleva la aparición de diversos elementos en esta parte del cambio, como el corazón y la laguna. También se hallan elementos de seguridad como las patas de liebre y los contracarriles. - Corazón El corazón es el punto donde los carriles interiores intersecan y se produce el mencionado corte de los mismos. Este elemento permite que la pestaña de las ruedas del vehículo pase por el punto en que ambos carriles se cortan sin tener que saltarlos. - Laguna Debido al corte de los carriles se produce un espacio, llamado laguna, en el que la rueda no está en contacto con la cabeza del carril. - Patas de liebre
7 Las patas de liebre tienen la función de soportar el peso de las ruedas y guiarlas cuando estas pasan por la laguna. Es la parte exterior de las ruedas la que se apoya en ellas y evita el descarrilamiento de las ruedas al pasar por la laguna. - Contracarriles Al igual que las patas de liebre, los contracarriles ayudan al guiado de las ruedas por los carriles durante el paso de estas por la laguna del cruzamiento. A diferencia de las patas de liebre, los contracarriles tienen la función de guiar a las ruedas situadas en el carril exterior. Mientras el carril guía a la rueda por la parte exterior de la misma, los contracarriles lo hacen por la parte interna. Los contracarriles constituyen un elemento de seguridad pasiva ya que, en condiciones de correcto funcionamiento, no se prevé el contacto de la parte interna de las ruedas con los contracarriles. Es en el caso de que estas se desvíen considerablemente por encima de lo habitual, cuando entran en contacto con los contracarriles y son guiadas por estos. 2.1.3 Instalaciones asociadas. Calefacción de agujas Los cambios de agujas cuentan con partes móviles, necesarias para el direccionamiento del tren hacia una vía u otra. Estas partes móviles son uno de los elementos críticos en cuanto a la seguridad y operatividad del desvío, debido a que han de poder moverse libremente en todo su recorrido y hacer contacto perfectamente con las contragujas correspondientes. Una de las principales amenazas en los cambios de agujas es la creación de hielo o acumulación de nieve en la vía, dificultando el movimiento de las agujas, o en las cavidades de las agujas, corazón y contragujas, impidiendo el acoplamiento entre estos elementos. Para solventar esta problemática, existe la calefacción de agujas, una instalación diseñada para evitar la acumulación de nieve o formación de hielo en las zonas móviles del desvío. Figura 4. Instalación de calefacción de agujas en funcionamiento (Fuente:[7]) La calefacción de agujas se realiza mediante elementos calefactores longitudinales adosados al carril de rodadura de los elementos móviles y en las traviesas y zonas huecas del cambio. Estos elementos se fijan al alma del carril mediante clips de presión, de tal forma que toda la superficie del elemento calefactor está en contacto con el carril. La alimentación de la instalación se realiza desde el cable de feeder negativo de la catenaria (-25 kV, 50 Hz). Esta tensión es reducida a 240V mediante un transformador instalado en un poste para tal fin. Desde el secundario del transformador, se conecta el armario general de mando, colocado en la base del proprio apoyo de alimentación. De este armario general parten las líneas de alimentación a los
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 8 armarios de distribución, colocados lo más próximo a las zonas a calefactar. Desde estos armarios de distribución se realiza, de forma directa, la alimentación de los elementos calefactores. El control y mando de la instalación se realiza mediante un PLC de control instalado en el armario general de mando. Este PLC de control recibe las señales provenientes de los detectores de hielo y nieve, así como de temperatura del carril. En función de esta información da la orden de conexión o desconexión del sistema. Esta conexión y desconexión, no obstante, también puede realizarse de forma manual y mediante el sistema de telemando. 2.2 IOT El IoT, Internet of Things o Internet de las Cosas se puede definir como la creación de sistemas inteligentes mediante la interconexión de objetos a través de Internet. Estos objetos pueden ser de todo tipo, desde sensores y máquinas, hasta electrodomésticos o elementos de la vida cotidiana [8]. El principal fin de esta tecnología es la interconexión en tiempo real entre los elementos que conforman el sistema, de tal forma que intercambien información y datos entre ellos sin necesidad de interacción humana y, mediante esta información, ser capaces de adaptarse a las condiciones óptimas y tomar decisiones de forma autónoma [9], conformando así sistemas inteligentes. El IoT es un término relativamente nuevo y, durante los últimos años, ha ido aumentando de forma exponencial, debido a su amplio campo de aplicación y a la posibilidad de implementar potentes sistemas de análisis de datos, machine learning o inteligencia artificial, para mejorar y optimizar procesos y tareas. Este tipo de tecnología puede llegar a generar enormes cantidades de datos e información en un período de tiempo reducido, pudiendo llegar a miles de mensajes por segundo. Debido a esta condición, los sistemas de procesamiento, gestión, almacenamiento y análisis de datos convencionales no tienen capacidad suficiente para gestionar estos volúmenes de datos o, si la tienen, los tiempos de operación son muy grandes. Como solución a este problema, se encuentra la computación en la nube o cloud computing, la cual permite a las organizaciones contratar servicios de computación sin necesidad de adquirir hardware para tal fin. 2.2.1 Computación en la nube Al hablar sobre las tecnologías IoT y todo lo relacionado con ellas, es difícil no relacionarlas con los términos nube o cloud. Cada vez más, la tecnología IoT se beneficia de las ventajas que ofrecen las plataformas de computación en la nube. Esto se debe a que, en los últimos años, se ha producido un crecimiento exponencial del número de dispositivos conectados a Internet y de las tecnologías IoT en general, requiriendo de una mayor capacidad de procesamiento y almacenamiento de todos los datos generados por este tipo de sistemas, y el acceso a toda esta información desde prácticamente cualquier ubicación y de forma inmediata. Según Hewlett Packard Enterprise, “La computación en la nube es la entrega de recursos de TI virtualizados a través de Internet. Es la informática como servicio, entregada bajo demanda, de pago por consumo, a través de una plataforma de servicios de nube” [10]. La computación en la nube se basa en la sustitución de la infraestructura local de tecnologías de la información por una infraestructura virtual, gestionada por un proveedor externo. El cliente tiene la posibilidad de elegir qué recursos y servicios utiliza y en qué medida, pagando por el uso de únicamente los servicios utilizados, también conocido como pago por uso o pay-as-you-go. Esta tecnología permite una gran flexibilidad y escalabilidad a la hora de crear una solución que requiera de servicios de computación para satisfacer una necesidad determinada. En este contexto, es necesario diferenciar y definir las diferentes tipologías de servicios que ofrecen estas plataformas,
9 en función del nivel de gestión de los diferentes recursos por parte del proveedor de servicios o el usuario cliente: - Infraestructura como Servicio (IaaS) La IaaS es el nivel más básico de computación en la nube. En este tipo de solución, el proveedor proporciona al cliente servicios en la nube a través de Internet, tales como almacenamiento, procesamiento, red, servidores y virtualización. En este caso, y tal como indica su nombre, el proveedor ofrece al cliente una infraestructura en la nube. El proveedor es el encargado de velar por la integridad, seguridad y correcto funcionamiento de la infraestructura en sí, mientras que el cliente es el responsable de crear y gestionar sus aplicaciones y plataformas, así como los sistemas operativos, copias de seguridad y software. Se puede entender como la adquisición de servicios computacionales en la nube sin necesidad de adquirir hardware para tal fin. Este hecho permite a las organizaciones incrementar la eficiencia, escalabilidad y seguridad de sus soluciones e infraestructuras, centrándose en el desarrollo de dichas soluciones sin preocuparse por la infraestructura informática necesaria [11]. - Plataforma como Servicio (PaaS) La PaaS es el modelo intermedio de servicios en la nube. La PaaS ofrece los mismos recursos que la IaaS y, además, proporciona herramientas prediseñadas que el cliente puede utilizar para desarrollar y gestionar sus aplicaciones. En este caso, el proveedor es el responsable del mantenimiento y gestión del software, copias de seguridad y de la infraestructura en sí, permitiendo al cliente centrarse en el desarrollo de sus aplicaciones y sin preocuparse del mantenimiento de la infraestructura en la nube [12]. - Software como Servicio (SaaS) Por último, el SaaS es el modelo de servicio en la nube que ofrece al cliente aplicaciones ya diseñadas y completamente funcionales. En este caso, el cliente se hace únicamente responsable de la configuración y funcionamiento de dichas aplicaciones. Permite desarrollar soluciones de forma rápida y sencilla. Sin embargo, presenta menos opciones de personalización y libre configuración de los servicios. En la siguiente figura (Figura 5) se muestra de forma esquemática los servicios gestionados por el proveedor de servicios y por el usuario en cada uno de los tres tipos de servicios mencionados: Figura 5. Gestión de servicios en SaaS, PaaS y IaaS (Fuente: [13]) Existen numerosas empresas dedicadas a la oferta de servicios en la nube. No obstante, las plataformas de servicios en la nube más utilizadas son las que las grandes empresas multinacionales
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 10 de informática ofrecen, como Microsoft, Amazon y Google, debido a sus altos estándares de fiabilidad, funcionamiento y ciberseguridad. Dichas plataformas son Microsoft Azure, Amazon Web Services y Google Cloud, respectivamente, con una cuota de mercado conjunta del 58% en el tercer cuarto de 2020 [14]. Estas plataformas ofrecen los tres modelos de servicios mencionados en este apartado. Dependiendo del servicio elegido por el usuario se tratará de un IaaS, PaaS o SaaS. 2.3 IOT EN EL SECTOR FERROVIARIO El auge de la tecnología IoT ha causado su entrada en muchos sectores, como es el caso del sector ferroviario. El diseño de soluciones basadas en esta tecnología tiene como objetivo proporcionar una mayor fiabilidad y seguridad a la infraestructura e instalaciones ferroviarias, mediante implementación de sistemas de mantenimiento predictivo y monitorización. Como consecuencia, los retrasos por mantenimiento debidos a fallos repentinos se ven disminuidos, proporcionando a los pasajeros una mejor y optimizada experiencia. A continuación, se exponen algunos de los estudios y proyectos llevados a cabo en este sentido. Uno de estos estudios [15], publicado en febrero de 2021 y realizado en contexto del sector ferroviario de Reino Unido, parte con el objetivo de evaluar, de forma cualitativa, las distintas áreas en las que se pueden implementar soluciones basadas en IoT, con el objetivo de identificar la prioridad de cada una de ellas, con el fin de ofrecer un mejor servicio, tratando de evitar cancelaciones y retrasos por mantenimientos causados por fallos repentinos. Dicho estudio concluye que es necesaria la entrada de nuevas tecnologías que permitan una transformación del sistema ferroviario hacia un sistema inteligente, en el que poder anticiparse a los fallos y averías y poder seguir ofreciendo un servicio teniendo en cuenta el constate crecimiento en el uso de este medio de transporte. Otro estudio [16], publicado en julio de 2020, estudia la implementación de tecnología IoT para acelerar y simplificar las comunicaciones con los servicios de emergencias en caso de ser necesario, tanto de forma automática como manual. Este estudio concluye que la implementación de esta tecnología aumentaría la seguridad de los pasajeros debido a la reducción del tiempo de comunicación con los servicios de emergencias. Por otro lado, destaca que uno de los principales inconvenientes de este sistema es la necesidad de contar con acceso a Internet en todo momento, algo que puede ser difícil en determinadas regiones y zonas. Por último, cabe destacar el proyecto RESPIRA, llevado a cabo por SENER en el metro de Barcelona. Este proyecto no se ve limitado únicamente al transporte ferroviario; no obstante, cabe destacarlo al haber estado implementado en el metro de Barcelona. RESPIRA da nombre a un sistema inteligente “de control de la ventilación que mejora el confort, la calidad del aire y la eficiencia energética en el transporte suburbano y grandes infraestructuras” [17]. Este sistema recaba información de los ventiladores existentes en las estaciones y túneles del sistema de metro y, mediante algoritmos dinámicos, análisis de datos e inteligencia artificial regula de forma automático estos sistemas de ventilación para lograr unas condiciones ambientales óptimas para el confort de los pasajeros. Del mismo modo, RESPIRA contribuye a mejorar la calidad del aire y a una gestión energética eficiente. La flexibilidad y adaptabilidad del sistema lo convierten en una solución fácilmente escalable, implementable en otras infraestructuras de transporte suburbano, pero también en lugares como aeropuertos, hospitales o centros comerciales.
11 2.3.1 IoT en la monitorización de cambios de agujas En el contexto del presente proyecto, no hay constancia de estudios o proyectos de monitorización mediante tecnologías IoT para la monitorización y supervisión de desvíos ferroviarios.
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 12 3 METODOLOGÍA El diseño de un prototipo de sistema IoT para la monitorización de un cambio de agujas ferroviario requiere de diversos componentes que deben trabajar en conjunto. En primer lugar, se debe contar con sensores que midan distintos parámetros para poder evaluar el estado de la instalación. 3.1 PARÁMETROS A MEDIR Y SENSORES Para garantizar la integridad y correcto funcionamiento de un desvío ferroviario es indispensable que se cumplan las dos siguientes condiciones: - Que las agujas puedan desplazarse libremente a lo largo de su recorrido y que se acoplen perfectamente con las contragujas correspondientes. - Que, en caso de condiciones atmosféricas de nieve y/o formación de hielo, los elementos calefactados por el sistema de calefacción de agujas alcancen la temperatura necesaria para evitar la formación de hielo y acumulación de nieve. Se procede a valorar estas condiciones y determinar los parámetros a leer y mediante qué sensor. 3.1.1 Movimiento agujas y corazón Con el fin de comprobar que las agujas se desplazan libremente sin dificultad y hasta el punto necesario, se plantea el uso de sensores de proximidad o distancia. Estos sensores se colocarían en el plano de la vía, entre los carriles, a lo largo de la aguja, a la altura mínima en que el alma del carril de la aguja se encuentra en el campo de visión de los sensores y apuntando hacia la aguja. Esta disposición se muestra en las siguientes figuras, donde se muestra, de forma esquemática, la posición de los sensores (rectángulos azules) y la distancia que miden (cotas naranjas): Figura 6. Disposición sensores de proximidad con aguja en contacto con contraguja Figura 7. Disposición sensores de proximidad con aguja sin contacto con contraguja
13 Con una configuración como la anterior, sería posible valorar el correcto movimiento de las agujas a lo largo del tiempo. Esto se debe a que los sensores, independientemente de la altura de la aguja a la que estuvieran colocados, siempre deberían estar marcando uno de dos valores determinados: - El valor que corresponda a la distancia del sensor a la aguja cuando esta está en contacto con la contraguja correspondiente (Figura 6). - O el valor que corresponda a esta misma distancia cuando la aguja no está en contacto con la contraguja (Figura 7). Monitorizando la evolución de estos dos valores a lo largo del tiempo, se podrían detectar, en caso de un mal funcionamiento, tendencias al alza o a la baja en estas lecturas debido a posibles desajustes o presencia de obstáculos en las cavidades o traviesas. 3.1.2 Temperatura de elementos calefactados Con tal de evitar la formación de hielo y acumulación de nieve cuando se dan las condiciones atmosféricas pertinentes, las agujas deben alcanzar una temperatura mínima determinada. Para controlar que las agujas y contragujas alcanzan dicha temperatura y lo hacen de forma uniforme en toda su longitud, se propone el uso de sensores de medición de temperatura por IR sin contacto. Estos sensores permiten medir la temperatura de un objeto situado en su campo de visión, a distancia y con gran precisión. La disposición de estos sensores sería similar a la de los sensores de proximidad. No obstante, además de monitorizar la temperatura de las agujas desde el centro de la vía, sería posible monitorizar la de las contragujas desde los laterales de la vía, tal y como se muestra en la siguiente figura (Figura 8): Figura 8. Disposición sensores de temperatura IR para monitorización de par aguja-contraguja A partir de los datos recabados por estos sensores (rectángulos verdes) sería posible detectar una posible disminución de la temperatura en el conjunto de la instalación o, por otro lado, la disminución de la temperatura en un punto localizado. En este contexto, también se plantea la instalación de un sensor de temperatura y humedad ambientes para controlar en todo momento las condiciones atmosféricas en el lugar donde se ubica el cambio de agujas. Una vez definida la disposición de los sensores, es necesario definir la arquitectura de la solución IoT para la visualización en tiempo real de las lecturas provenientes de estos sensores.
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 14 3.2 ARQUITECTURA GENERAL DEL SISTEMA IOT Para el diseño de una solución IoT que permita visualizar los datos provenientes de sensores instalados en desvíos ferroviarios, y para una solución IoT en general, es necesario contar con las siguientes herramientas: - Puerta de enlace a la nube La visualización en tiempo real de datos de distintos dispositivos es posible mediante el uso de servicios en la nube. El primer paso es el envío de los datos recabados a nivel local por estos dispositivos a la nube. La subida de datos a la nube es posible mediante herramientas diseñadas para tal fin. - Gestión de dispositivos y recepción de datos en la nube Es de esperar que una solución IoT como la planteada cuente con un gran número de dispositivos. Por ello, es necesaria una herramienta para gestionar los dispositivos conectados a la nube y poder consultar en todo momento la operatividad de los mismos y si están conectados o no a la nube. De igual modo, los datos enviados a la nube desde cada dispositivo deben recibirse todos en un centro de mensajería entre esta y los dispositivos. - Almacenamiento de datos en la nube Una aplicación IoT genera grandes cantidades de datos que, si no se almacenan de forma ordenada y accesible pueden no ser de gran utilidad. Por ello, un servicio de almacenamiento de datos en la nube, como una base de datos, es de vital importancia para almacenar toda la información proveniente de los dispositivos y poder, posteriormente, realizar acciones con ella. - Visualización en tiempo real y sistema de alarmas Una de las principales características de una aplicación de monitorización es la visualización de la información en tiempo real. Existen herramientas que permiten crear gráficos en tiempo real a partir de datos almacenados en la nube. Teniendo en cuenta los elementos necesarios para la aplicación IoT, se puede representar la estructura del sistema de la siguiente forma (Figura 9): Figura 9. Arquitectura necesaria para la solución IoT 3.3 CONEXIÓN DE LOS DISPOSITIVOS A INTERNET Tal y como indica su nombre, una de las condiciones indispensables para el desarrollo de una aplicación IoT es la conexión de los dispositivos a Internet. Esta conexión es necesaria para el intercambio bidireccional de datos entre los dispositivos y la nube. La conexión a Internet en ciudades y zonas urbanas no es complicada, debido a la alta cobertura de redes móviles que suelen tener estas zonas y la existencia de tendidos de fibra óptica. En zonas rurales o despobladas, sin embargo, la conexión a Internet no es tan accesible. Es importante mencionar este hecho ya que, las líneas ferroviarias discurren, en gran parte de su recorrido, por zonas despobladas con menos cobertura. Si bien es cierto que las líneas de alta velocidad suelen contar con tendidos de cable de fibra óptica a lo largo de la línea, esto no sucede en todas las líneas y menos incluso en las que no son de alta velocidad. Conexión de sensores y lecturas a nivel local Puerta de enlace a la nube Gestión de dispositivos y recepción de datos en la nube Almacenamiento de datos en la nube Visualización en tiempo real Sistema de alarmas
21 input, realizan una acción determinada con él y, finalmente, envían un nuevo mensaje u output. Existen un gran número de nodos con una función determinada cada uno. El hecho de que Node-Red funcione mediante nodos, conlleva que su uso sea simple e intuitivo, permitiendo a los usuarios centrarse en el desarrollo de la solución deseada. En general, no requiere de un amplio uso de lenguajes de programación debido a que la mayoría de acciones a realizar son posibles mediante el uso de nodos de Node-Red. Solo requieren de un input para llevar a cabo su función y generar un output. No obstante, la mayoría de nodos son configurables y adaptables a las necesidades del usuario, mediante la introducción de código de programación en el apartado de configuración de dichos nodos. En el caso de Node-Red, el lenguaje de programación requerido es JavaScript. Al ser una herramienta open-source, además de los nodos de Node-Red, es posible encontrar en Internet gran cantidad de nodos compatibles creados por usuarios que, en muchas ocasiones, son de gran utilidad y se adaptan a las necesidades de cada solución. Es importante destacar que estos nodos están sujetos únicamente a la aprobación del usuario que los crea y, por ello, es necesario comprobar su correcto funcionamiento. El hecho de ser una herramienta de programación visual y open-source, hace que esta sea una de las herramientas más utilizadas en el desarrollo de aplicaciones IoT [32]. Por ello, se ha optado por el uso de ella para el presente proyecto. 4.5 PLATAFORMA DE COMPUTACIÓN EN LA NUBE La plataforma de servicios en la nube es una de las partes fundamentales del presente proyecto. Tal y como se ha visto, existen tres plataformas de servicios en la nube que sobresalen por encima de las demás: Microsoft Azure, Amazon Web Services y Google Cloud. Debido al desconocimiento de este tipo de plataformas con anterioridad a la realización del presente proyecto, han sido estas tres las alternativas a considerar para su elección. La selección, al igual que la selección de la placa, se ha basado en criterios de elección y el peso que estos tienen. Para la elección de la plataforma se definen los criterios siguientes: - C1: Servicios disponibles Una de las principales características que definen las plataformas en la nube es la variedad de servicios que estas ofrecen. Por ello, es uno de los principales factores a tener en cuenta a la hora de escoger un. Para el presente proyecto, es necesario, en primer lugar, un servicio de gestión de dispositivos IoT y recepción de datos en tiempo real. Toda la información recibida se debe almacenar en una base de datos para poder acceder a ella en cualquier momento y, si fuera necesario, realizar alguna acción con ella. También es necesaria una herramienta para poder direccionar en tiempo real los datos de una ubicación a otra, para poder visualizarlos en tiempo real mediante una aplicación externa. En este criterio, las tres opciones sobresalen, debido a que los servicios necesarios no son extremadamente complejos y las tres cuentan con uno o varios servicios para cada una de las acciones mencionadas (Tabla 3):
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 22 Tabla 3. Servicios de Microsoft Azure, AWS y Google Cloud Servicios Microsoft Azure AWS Google Cloud Gestión de dispositivos IoT IoT Hub AWS IoT Core Cloud IoT Core Gestión de Streams de datos Stream Analytics Amazon Kinesis Pub/Sub Almacenamiento de datos SQL Database (entre otros) RDS (entre otros) Cloud SQL (entre otros) - C2: Precio de los servicios Otro factor a tener en cuenta es el precio de contratación de los servicios necesarios. El precio depende del servicio a contratar y de las características del mismo. Un mismo servicio puede costar desde unos pocos euros hasta cientos o miles de euros al mes, según las diferentes opciones de configuración que existe en cada servicio. Microsoft Azure ofrece durante 12 meses el uso de algunos de sus servicios de forma gratuita, sin necesidad de introducir una tarjeta de crédito. Además, regala 100 € a los usuarios nuevos registrados mediante una dirección de correo de estudiante que, durante 12 meses, pueden utilizarse para hacer uso de servicios no incluidos en los servicios gratuitos. AWS, por otro lado, ofrece también una prueba de 12 meses donde permite al usuario hacer uso de algunos de sus servicios, denominándose en conjunto como la capa gratuita de AWS. Sin embargo, no regala créditos a usuarios nuevos para hacer uso de servicios de pago. Cabe destacar que sí que lo hace para startups. Por último, Google Cloud regala 300€ para utilizar en los primeros 90 días desde el día del registro del usuario, requiriendo de la introducción de una tarjeta de crédito. Si bien las opciones de Microsoft Azure y AWS permiten probar y utilizar sus servicios gratuitos durante 12 meses, un período de prueba de 90 días como el de Google Cloud puede resultar corto en función de la envergadura de la aplicación a implementar. - C3: Conectividad con aplicaciones externas Las plataformas en la nube ofrecen un gran número de servicios y opciones de configuración. No obstante, en ocasiones es necesario hacer uso de aplicaciones externas para mejorar la calidad de la solución o que, simplemente, no ofrecen estas plataformas. Las tres plataformas permiten trabajar y elaborar flujos de trabajo haciendo uso de aplicaciones externas a su nube. En este punto, es importante valorar la conectividad que ofrece Microsoft Azure a las herramientas de Node-Red y Grafana Cloud. En el caso de Node-Red, existen nodos dedicados exclusivamente a la conexión entre este software y el servicio de IoT Hub. Para el caso de AWS y Google Cloud, esta conexión también es posible; sin embargo, no es tan directa y requiere de un proceso de configuración más extenso que en el caso de Azure. Por otro lado, Grafana Cloud cuenta con distintos plugins dedicados a la conexión con otros servicios para la ingesta de datos y visualización de los mismo en tiempo real. En este caso, Grafana cuenta con un plugin propio para la base de datos Azure SQL Database. Aunque las tres opciones permiten interconectar con aplicaciones externas, en este caso se debe valorar la conectividad con las aplicaciones a utilizar en este proyecto. - C4: Material didáctico disponible
23 Este es un punto en el que las tres opciones destacas. Todas cuentan con una plataforma gratuita propia de aprendizaje sobre los servicios que ofrecen y el funcionamiento de los mismos. Estas son Microsoft Learning, AWS Training and Certification y Google Cloud Courses and Training. También existen foros oficiales y no oficiales donde se exponen y resuelven todo tipo de dudas sobre el uso de estas plataformas. No obstante, en el caso de Microsoft Azure también se pueden encontrar muchos trabajos de fin de estudios donde se hace uso de sus servicios, hecho que facilita y esclarece qué servicios se pueden utilizar para un tipo de proyecto en concreto, ya que puede resultar difícil escoger los servicios adecuados si no se tiene conocimiento previo de este tipo de plataformas. - C5: Regiones disponibles Estas plataformas, al requerir acceso a Internet y a los centros de datos de las empresas proveedoras, no tienen el mismo rendimiento y velocidad en todas las partes del mundo. Si bien es posible hacer uso de ellas incluso cuando el centro de datos más cercano está en otro país a una gran distancia, el rendimiento de los servicios no es el mismo que si el centro de datos está a una menor distancia. En el caso de estas tres plataformas, al ser las más grandes y con mayor número de ubicaciones de centros de datos, poseen una gran infraestructura en Norteamérica y Europa. Por ello, y aunque ninguna de las tres tenga en la actualidad un centro de datos en España, los servicios en la nube funcionan perfectamente haciendo uso de la infraestructura de países vecinos, como Francia. Una vez definidos los principales criterios a tener en cuenta a la hora de elegir la plataforma de servicios en la nube, se le ha asignado un peso a cada uno, en función del peso que tienen a la hora de tomar la decisión. Los pesos propuestos son los siguientes (Tabla 4): Tabla 4. Criterios y pesos para la elección de plataforma en la nube Criterio Peso (%) Definición C1 30 Productos disponibles C2 20 Precio C3 20 Conectividad con aplicaciones externas C4 15 Material didáctico C5 15 Regiones disponibles Una vez definidos los criterios y asignados los pesos, se procede a calcular la nota ponderada de cada una de las tres opciones. Para ello, para cada uno de los criterios y para cada una de las opciones, se asigna una nota en función de si el criterio se considera óptimo (10), bueno (8), medio (6), bajo (4), deficiente (2) o inexistente (0) para la opción en particular (Tabla 5): Tabla 5. Cálculo de nota ponderada para Microsoft Azure, AWS y Google Cloud Criterio Peso Microsoft Azure AWS Google Cloud C1 30% 10 10 10 C2 20% 8 8 6 C3 20% 8 6 6 C4 15% 10 8 8 C5 15% 10 10 10 Puntuación 9,2 8,5 8,1
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 24 De acuerdo a la tabla anterior, se concluye que la mejor opción para la elección de la plataforma de servicios en la nube es Microsoft Azure, aunque cualquiera de las otras dos opciones podría utilizarse y conseguir parecidos o idénticos resultados. Microsoft Azure permite diseñar soluciones a medida para cada situación, contratando y pagando únicamente por aquellos servicios utilizados. En el caso del presente proyecto, se va a hacer uso de tres servicios de Azure: IoT Hub, Stream Analytics y SQL Database. Se presenta a continuación una breve descripción de las funcionalidades que presenta cada uno. - IoT Hub Azure IoT Hub es un servicio tipo PaaS de mensajería bidireccional entre dispositivos IoT y la nube, que permite la recepción de datos desde los dispositivos IoT, así como el envío de datos desde la plataforma a estos dispositivos, de forma segura [33]. Permite conectar y gestionar desde un solo dispositivo hasta millones de dispositivos y millones de mensajes por segundo, ofreciendo así una solución escalable horizontal y verticalmente y adaptable a todo tipo de entorno. - Stream Analytics Azure Stream Analytics es un servicio tipo PaaS de procesamiento y análisis de grandes volúmenes de datos en tiempo real [34]. No obstante, también permite el direccionamiento de datos de un punto a otro, ya sea dentro del propio Azure o a un servicio externo, en tiempo real, permitiendo la definición de múltiples inputs y outputs en una misma instancia de Azure Stream Analytics. - SQL Database Azure SQL Database es una base de datos relacional de Azure totalmente administrada, donde las actualizaciones, el aprovisionamiento y las copias de seguridad se realizan de forma completamente automática [35], sin necesidad de invertir tiempo en ello y permitiendo centrarse en el desarrollo de la solución. Las bases de datos SQL Database permiten la conexión con una gran cantidad de servicios externos, de tal manera que permite crear soluciones fuera del ecosistema de Azure, con herramientas de terceros. 4.6 VISUALIZACIÓN DE DATOS EN TIEMPO REAL Por último, ha sido necesaria la elección de la herramienta para la visualización de datos en tiempo real mediante dashboard. Para esta función se ha valorado utilizar Power BI o Grafana Cloud. Para ello, de nuevo, se definen los criterios siguientes: - C1: Visualización en tiempo real Uno de los principales objetivos del presente proyecto es de poder visualizar las lecturas provenientes de los sensores en tiempo real, con una ratio de actualización de una vez cada varios segundos. Por ello, este es uno de los principales factores a considerar a la hora de escoger la herramienta a utilizar para la creación de dashboards en tiempo real. Power BI es una herramienta que permite la ingesta de streams de datos para su visualización mediante gráficos. Sin embargo, esta opción presenta un inconveniente y es que la actualización de los gráficos de forma automática se realiza, por defecto, cada 30 min, tiempo demasiado alto para el tipo de solución planteada. Es posible cambiar esta opción para disminuir este tiempo, pero es necesario que la realice el administrador de la cuenta que, en este caso, al ser una cuenta educativa, no se tiene acceso.
25 Por otro lado, Grafana sí está diseñado para la visualización en tiempo real de datos. Al igual que Power BI permite la ingesta de streams de datos desde distintos orígenes y, en este caso, el tiempo de actualización automática de los gráficos es fácilmente configurable y puede realizarse hasta un máximo de una vez cada 5 segundos. - C2: Conectividad con Microsoft Azure Para poder visualizar las lecturas de los sensores en tiempo real, las cuales son recibidas por el servicio IoT Hub de Azure, es necesario poder conectar esta plataforma con la herramienta de visualización. Como se puede observar en el apartado anterior, se ha optado por el uso de Azure como plataforma de servicios en la nube. En este caso, tanto Power BI como Grafana, permiten la conexión con los servicios de Azure de forma rápida y sencilla. En el caso de Grafana, se debe, en primer lugar, almacenar los datos que llegan a IoT Hub en una base de datos SQL de Azure. Una vez los datos provenientes de IoT Hub se van almacenando en la base de datos de Azure, Grafana tiene la opción de conectar con esta base de datos para poder extraer los datos y visualizarlos mediante gráficos. Para Power BI el proceso es incluso más sencillo ya que, mediante un trabajo de Stream Analytics, es posible conectar directamente el IoT Hub a Power BI para la creación de gráficos en tiempo real. - C3: Sistema de alertas El sistema de alertas es otro de los factores a tener en cuenta a la hora de escoger una herramienta u otra. Ambas opciones cuentan con un sistema de alertas integrado en la aplicación. Aun siendo cierto que las condiciones para definir las alertas requeridas en el presente proyecto no son muy complejas, Grafana presenta más opciones y canales a la hora de configurar sus alertas. Grafana permite, por ejemplo, evaluar si los datos han superado un valor límite durante un período de tiempo determinado y establecer la frecuencia de evaluación de esta condición; mientras que Power BI ofrece menos opciones de personalización de las alertas dando a elegir, por ejemplo, únicamente entre 1 o 24 horas para la evaluación de la condición definida. - C4: Experiencia de usuario Por último, otro factor a tener en cuenta es la experiencia de usuario y atractivo visual que presentan ambas opciones. El apartado de dashboards de Power BI es sencillo, sin demasiado atractivo visual y con muy pocas opciones de personalización de los gráficos. Grafana, por su parte, ofrece muchas más opciones de personalización, hecho que permite crear paneles más visuales y atractivos. Como en los casos anteriores, se le ha asignado un peso a cada opción, los cuales son los siguientes (Tabla 6): Tabla 6. Criterios y pesos para la elección de la herramienta de visualización de datos Criterio Peso (%) Definición C1 40 Visualización en tiempo real C2 20 Conectividad con Microsoft Azure C3 15 Sistema de alertas C4 25 Experiencia de usuario
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 26 De nuevo, una vez definidos los criterios y asignados los pesos, se calcula la nota ponderada de cada opción. Para ello, para cada uno de los criterios y para cada una de las opciones, se asigna una nota en función de si el criterio se considera óptimo (10), bueno (8), medio (6), bajo (4), deficiente (2) o inexistente (0) para la opción en particular (Tabla 7): Tabla 7. Cálculo de nota ponderada para Grafana Cloud y Power BI Criterio Peso Grafana Cloud Power BI C1 40% 10 6 C2 20% 8 10 C3 15% 8 6 C4 25% 10 8 Puntuación 9,3 7,3 De acuerdo a la tabla anterior, se concluye que la mejor opción para la creación de paneles para la visualización de datos en tiempo real es Grafana Cloud. 4.7 CANAL DE RECEPCIÓN DE ALERTAS Por último, para la notificación de alertas desde Grafana se ha optado por el uso de Telegram. Esta elección se debe a que esta aplicación de mensajería permite la creación de bots, algo necesario para configurar un sistema de alertas automáticas. Por otro lado, Telegram cuenta con altos estándares de seguridad y privacidad, superiores a otras aplicaciones de mensajería y la mayoría de servicios de correo electrónico, algo importante para una aplicación IoT como la propuesta.
27 5 DESARROLLO PRÁCTICO Una vez seleccionadas las herramientas a utilizar, se procede a la realización del prototipo. El objetivo de este es que permita validar la solución propuesta para el sistema de monitorización y supervisión de cambios de agujas ferroviarios, con el fin de comprobar la funcionalidad del mismo y que permita demostrar que se podría crear una solución real basada en él para la situación descrita. El diseño del prototipo comprende el proceso necesario para la visualización en tiempo real de datos provenientes de sensores, contando con los siguientes pasos: - Conexión y configuración de los sensores, - Obtención de lecturas de los sensores con Node-Red, - Acondicionado del mensaje y envío de datos a la nube desde Node-Red, - Recepción y gestión de datos en la nube en IoT Hub, - Almacenamiento de datos en Azure SQL Database mediante Stream Analytics, - Visualización de lecturas en tiempo real con Grafana Cloud. El prototipo está basado en dos dispositivos independientes que captan lecturas provenientes de diferentes sensores para medir ciertos parámetros. El primero de estos dispositivos es una placa Raspberry Pi real a la cual se le conectan dichos sensores, mientras que el segundo es un dispositivo simulado, el cual genera valores aleatorios dentro de un rango para las mismas lecturas que la Raspberry Pi real. El hecho de realizar el proceso anterior con dos dispositivos permite demostrar la escalabilidad del sistema de forma vertical, para 𝑛 dispositivos, siendo 𝑛>1. Se ha optado por este enfoque debido a que es de esperar que una solución IoT real disponga de más de un solo dispositivo. Este hecho condiciona también la realización de los distintos pasos listados al inicio de este apartado ya que la configuración de los diferentes recursos y software implicados es más compleja para varios dispositivos que para uno solo. En este capítulo se expone la metodología y pasos seguidos para tal fin, así como el resultado final obtenido. 5.1 ARQUITECTURA DEL PROTOTIPO Teniendo en cuenta lo mencionado, se ha utilizado el siguiente hardware y software para la elaboración del prototipo: - Dispositivos: o Placa Raspberry Pi 4 B o Sensor de temperatura y humedad ambientes DHT22 o Sensor de proximidad mediante ultrasonidos HC-SR04 o Sensor de temperatura de superficie mediante infrarrojos MLX90614 o Placa Protoboard o Cables Jumper de conexión y resistencias eléctricas o Tarjeta microSD - Software: o Node-Red
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 28 - Servicios en la nube: o Azure IOT HUB o Azure SQL Database o Azure Stream Analytics - Visualización de datos: o Grafana Cloud La arquitectura del prototipo es la siguiente (Figura 14): Figura 14. Arquitectura prototipo IoT (Fuente: elaboración propia) En primer lugar, se encuentran los dispositivos perimetrales, con sensores en este caso, responsables de la lectura de diferentes parámetros de interés para la aplicación propuesta. El funcionamiento de estos sensores es posible gracias a que son conectados a la placa Raspberry Pi mediante los pines de conexión de la misma. Una vez conectados los sensores a la placa, la recepción y agrupación de las lecturas de los sensores se realiza mediante Node-Red. Este software es el encargado de ejecutar los códigos necesarios para la lectura de los datos de los sensores, así como su acondicionado y agrupación, creando un mensaje con un formato determinado listo para ser enviado a la nube. Node-Red también actúa como puerta de enlace entre los dispositivos perimetrales y la nube, estableciendo una conexión entre la Raspberry Pi y el servicio IoT Hub de Azure, permitiendo el envío de datos a este. IoT Hub actúa como gestor de dispositivos conectados a la nube y servicio de recepción de mensajes provenientes de estos mismos dispositivos. En una aplicación de monitorización como la propuesta en el presente proyecto, los mensajes recibidos en IoT Hub no son de gran utilidad si no se realiza ninguna acción con ellos, como almacenarlos en una base de datos o visualizarlos en tiempo real. En este contexto, es Stream Analytics el encargado de direccionar el flujo de datos que entra a IoT Hub y enviarlo a una base de datos Azure SQL para su almacenamiento de forma ordenada, para poder a acceder a ellos si fuese necesario. Por último, para una aplicación de monitorización, es fundamental poder visualizar los datos en tiempo real mediante dashboards, lo cual permite analizar situaciones de forma rápida y visual; así como establecer un sistema de alertas, recibidas en Telegram en este caso, que permita alertar de una posible anomalía o fallo en el sistema monitorizado, sin la necesidad de estar constantemente pendiente de la herramienta de visualización.
29 En los siguientes apartados se exponen los pasos seguidos para la elaboración del prototipo de monitorización expuesto. 5.2 CONFIGURACIÓN DE LA RASPBERRY PI El primer paso para el montaje del prototipo es la configuración de la Raspberry Pi, el ordenador de placa simple o SBC. Es el cerebro de todo el sistema y es indispensable para el funcionamiento del mismo. Es el encargado de suministrar energía a los periféricos, tres sensores en este caso, gestionar la recepción de las lecturas provenientes de los mismos, así como de enviar dichos datos a la nube para su posterior almacenado y lectura. Como se ha visto, se ha optado por el uso de un SBC Raspberry Pi. En concreto, se ha elegido el último modelo disponible, la Raspberry Pi 4 modelo B, de 4 GB de memoria RAM (Figura 15). Este modelo tiene mayor capacidad de procesamiento que sus anteriores versiones, hecho que asegura un mejor funcionamiento del software que se va a utilizar y respuestas más rápidas, aunque para la aplicación planteada se podría utilizar una versión anterior. Figura 15. Raspberry Pi 4 Para poder utilizar la Raspberry Pi es necesaria la instalación de un sistema operativo, u OS, el cual permita la gestión del hardware del propio SBC, así como de los periféricos a conectar al mismo, y que actúe como base para la instalación y uso del software requerido. Se ha optado por la instalación del OS oficial compatible con este SBC, el Raspberry Pi OS, conocido anteriormente como Raspbian, que se puede descargar en la web oficial de Raspberry Pi [36]. El sistema operativo está creado específicamente para este SBC y existe la opción de instalar el OS junto con software recomendado para él. Esta opción es preferible ya que dicho software recomendado es utilizado frecuentemente para cualquier tipo de aplicación que se desee implementar. La instalación de Raspberry Pi OS se realiza mediante una tarjeta microSD (mínimo 16 GB), en la cual se instala el sistema operativo en sí y, a su vez, actúa de memoria externa. En primer lugar, es necesario descargar el archivo comprimido de la página web oficial de Raspberry Pi, el cual contiene el OS. En este caso, se ha optado por la instalación del OS y software recomendado (Figura 16), junto con el escritorio e interfaz gráfica, que permiten interaccionar con las Raspberry Pi de una forma más sencilla e intuitiva.
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 30 Figura 16. Opciones de descarga de Raspberry Pi OS (Fuente: [36]) Una vez descargado el archivo “Raspberry Pi OS with desktop and recommended software”, la instalación del sistema operativo en la tarjeta microSD requiere de un programa específico para ello, como Raspberry Pi Imager o Balena Etcher [37]. En este caso, se ha utilizado Balena Etcher, debido a su simple modo de funcionamiento. Para instalar el OS en la tarjeta microSD es necesario seleccionar el archivo descargado, la tarjeta destino y hacer clic en el botón “Flash!” (Figura 17). Figura 17. Programa Balena Etcher (Fuente: Balena Etcher) Una vez instalado el sistema operativo en la tarjeta microSD, ya se puede introducir en la placa. Para utilizar la Raspberry es necesario conectarla mediante USB tipo C de 5V - 3000mA. También es necesario el uso de un monitor conectado mediante cable micro HDMI, un ratón y un teclado para poder visualizar el escritorio de la Raspberry e interactuar con ella mediante la terminal y/o la interfaz gráfica, y la conexión de un cable Ethernet para que la placa esté conectada a Internet y permita la instalación del software requerido. La Raspberry cuenta con un puerto USB-C, cuatro puertos USB, dos puertos micro HDMI y un puerto Ethernet para realizar las conexiones mencionadas (Figura 18).
37 - Pin GND sensor a pin físico 20 (GND) RPi La configuración del circuito de conexión del sensor se puede observar en el siguiente esquema Figura 30: Figura 30. Conexión MLX90614 a Raspberry Pi 4. De izquierda a derecha, pines sensor: VIN, GND, SCL, SDA (Fuente: Fritzing Beta) Una vez conectados los tres sensores, el esquema de conexión completo queda de la siguiente forma (Figura 31): Figura 31. Esquema de conexión de sensores a Raspberry Pi 4 (Fuente: Fritzing Beta) Cabe destacar que en el prototipo físico se han conectado los sensores hacia afuera de la placa protoboard para dejar libre el campo de visión de los sensores y no interferir con la placa y el cableado. Por eso mismo, las conexiones de los cables están invertidas horizontalmente, tal y como se puede observar en la siguiente figura (Figura 32):
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 38 Figura 32. Conexión de sensores a Raspberry Pi 5.4 INSTALACIÓN Y CONFIGURACIÓN DE NODE-RED Una vez conectados los sensores a la placa Raspberry Pi, es necesario acceder a las lecturas de dichos sensores para poder subir estos datos a la nube y poder manipularlos y gestionarlos desde diferentes dispositivos. Para ello, se ha optado por el uso del software Node-Red. 5.4.1 Instalación de Node-Red Para la instalación de Node-Red en la Raspberry Pi, se ha procedido según los pasos indicados en la web oficial de distribución del software [40]. La instalación se ha realizado mediante la introducción de comandos en la terminal de la Raspberry. El comando ejecutado es el siguiente: bash <(curl -sL https://raw.githubusercontent.com/node-red/linuxinstallers/master/deb/update-nodejs-and-nodered) Mediante la ejecución de este comando, se instala la última versión de Node-Red disponible, así como todos los recursos y paquetes necesarios para su funcionamiento. 5.4.2 Requerir autenticación mediante usuario y contraseña De forma predeterminada, Node-Red no restringe el acceso a su editor a usuarios conectados a la misma red. Este hecho puede llegar a ser un problema, ya que cualquier usuario conectado a la misma red que el dispositivo donde se ejecuta el software, podría acceder a él sin necesidad de identificarse. Para evitar esto y aumentar la seguridad del sistema, es necesario configurar el programa para que requiera de la introducción de un usuario y una contraseña. Para ello, en primer lugar, es necesario acceder al archivo de ajustes de Node-Red mediante la ejecución en orden de los siguientes comandos en un terminal de la Raspberry Pi [41]: cd ~/.node-red sudo nano settigs.js Una vez ejecutados estos comandos se abrirá el archivo de ajustes en otra terminal, permitiendo al usuario realizar modificaciones en él. En el apartado de “// Securing Node-RED” (Figura 33), se puede gestionar los usuarios que tienen acceso al editor, así como sus contraseñas y permisos. Este
39 último ajuste “permissions”, permite establecer las acciones permitidas para cada usuario, tales como permisos de lectura y escritura “*” o únicamente de lectura “read”. Figura 33. Archivo de ajustes de Node-Red (Fuente: Raspberry Pi) Para obtener un nivel de seguridad aún mayor, es posible almacenar la contraseña escogida en forma de hash, evitando de este modo que la contraseña aparezca explícitamente en los archivos del programa. Para ello, es necesario ejecutar el siguiente comando en la terminal (Figura 34): Figura 34. Generación de hash de la contraseña (Fuente: Raspberry Pi) Este comando permite introducir la contraseña deseada y, como resultado, devuelve el hash correspondiente. Este es el hash a introducir en la línea “password” (Figura 33) del archivo de ajustes de Node-Red. Una vez realizado este proceso, se puede comprobar que, al intentar acceder al editor de Node-Red, este requiere al usuario de la introducción del nombre de usuario y contraseña correspondientes, tal y como se puede observar en la siguiente figura (Figura 35): Figura 35. Autenticación mediante nombre de usuario y contraseña para acceder a Node-Red (Fuente: Raspberry Pi)
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 40 5.4.3 Inicio automático al arrancar Una vez instalado Node-Red y establecidos las credenciales de acceso, antes de comenzar a utilizarlo, es interesante destacar la opción de configurar Node-Red para que se inicie el software y los Flows comiencen a funcionar automáticamente, ‘se desplieguen’, cuando se inicia o reinicia la Raspberry Pi. Para habilitar esta opción, basta con ejecutar el siguiente comando en la terminal de la Raspberry: sudo systemctl enable nodered.service De igual modo, esta opción se puede desactivar mediante el siguiente comando: sudo systemctl disable nodered.service Esto evita la necesidad de ejecutar el comando de inicio de Node-Red cada vez que se encienda la Raspberry o se produzca un corte en la alimentación de la placa de forma puntual. 5.4.4 Acceso al editor Node-Red Node-Red es una aplicación web. Para acceder a su editor es necesario introducir en un navegador la dirección IP del dispositivo en el cual se está ejecutando el programa. El dispositivo en el que se introduce la dirección debe estar conectado a la misma red que, en este caso, la Raspberry Pi. Una vez se ha encendido la Raspberry Pi y Node-Red ha inicializado de forma automática, entrando a la consola de Node-Red se puede consultar la IP y el puerto a introducir en un navegador para acceder al editor de Node-Red (Figura 36). Node-Red se ejecuta en el puerto 1880 por defecto. Figura 36. Consola de Node-Red (Fuente: Raspberry Pi) Introduciendo esta dirección en un navegador web, se consigue acceder al editor de Node-Red que se está ejecutando en la Raspberry Pi (Figura 37): Figura 37. Editor Node-Red (Fuente: Node-Red)
41 5.5 LECTURAS DE SENSORES MEDIANTE NODE-RED Una vez conectado los sensores correctamente, es necesario recibir las lecturas de los sensores en tiempo real y poder enviarlas a la nube, todo desde un mismo entorno, desde Node-Red. Es en este punto donde se configura la Raspberry Pi real y se crea el dispositivo simulado con lecturas aleatorias dentro de unos valores mínimos y máximos arbitrarios. Para ello se van a utilizar dos Flows independientes dentro del mismo programa. En los siguientes apartados 5.5.1 y 5.5.2 se procede a explicar la configuración de los Flows de Node-Red utilizados para recibir las lecturas de los sensores y enviar los datos a la nube, a Azure IoT Hub. La configuración completa de los Flows se puede observar en las Figura 55 y Figura 56 del apartado 5.6.2. 5.5.1 Configuración Flow Raspberry Real En primer lugar, es necesario configurar los nodos necesarios para recibir las lecturas de los sensores, así como adaptarlas al formato necesario para enviarlas a la nube. - Nodo Inject El primer nodo necesario para la gran mayoría de Flows y aplicaciones es el nodo Inject (Figura 38). Este nodo permite inyectar una marca de tiempo por intervalos de la duración deseada. Esta marca de tiempo es la responsable de desencadenar el nodo conectado al mencionado nodo Inject y, con ello, el resto del Flow, el cual se irá ejecutando en orden según las conexiones de los sucesivos nodos. Figura 38. Nodo Inject (Fuente: Node-Red) Con el objetivo de no recibir lecturas nulas de los sensores causadas por peticiones de lectura en un intervalo de tiempo muy pequeño, se ha optado por una marca de tiempo de 20 segundos, suficiente para una aplicación de monitorización en tiempo real como la descrita en el presente proyecto. Esto quiere decir que las lecturas de los sensores y el envío de estos datos a la nube se realizará en intervalos de esta duración. - Nodo Exec La lectura de las mediciones de los sensores se realizará mediante un nodo Exec (Figura 39) para cada uno de ellos. Este nodo permite configurar un comando determinado a ejecutar en la terminal de la Raspberry Pi y recibir el resultado de dicho comando. Figura 39. Nodos Exec para cada uno de los sensores (Fuente: Node-Red) Teniendo en cuenta esto, se han configurado los nodos Exec, para cada nodo, para que ejecuten un comando el cual llama a la ejecución de un script o código, guardado en un archivo en la Raspberry Pi, el cual devuelve como resultado la lectura de cada sensor. Como ejemplo, el nodo Exec llamado “MLX90614 IR TEMP” ejecuta el siguiente comando:
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 42 python /home/pi/Documents/mlx90614_codev3_OBJ.py Este comando llama a ejecutar un script de Python llamado “mlx90614_codev3_OBJ.py” guardado en la ruta “/home/pi/Documents”, el cual devuelve la lectura del sensor en el momento que se ejecuta el código. En el Anexo I – Códigos Python para lectura de sensores se pueden observar los códigos de Python utilizados para captar las lecturas de cada sensor, así como las librerías a instalar y los comandos necesarios para la correcta ejecución de dichos códigos. - Nodo Function Una vez los nodos Exec se han ejecutado, devuelven las lecturas de los sensores. No obstante, lo hacen en forma de string. Para pasar cada lectura a formato float se utiliza un nodo Function, cuya función es simplemente convertir la carga recibida del nodo Exec a float. Teniendo en cuenta que los nodos de Node-Red trabajan con lenguaje JavaScript, esto es posible mediante la función “parseFloat()” (Figura 40). Figura 40. Conversión de string a float mediante nodo Function. Fuente (Node-Red) - Nodo Change Los nodos Exec y Function mencionados se han configurado de forma paralela e independiente para cada uno de los sensores. Sin embargo, para enviar las lecturas a la nube, es preferible agrupar todos los valores en un mismo mensaje, de tal modo que todas las lecturas se actualicen de forma simultánea y ordenada. Para ello, es necesario asignar un atributo a cada una de las lecturas de los sensores, de tal forma que sean distinguibles a la hora de leerlas y realizar cualquier acción posterior con ellas. En Node-Red esto es posible mediante el nodo Change (Figura 41), el cual permite asignar un topic o atributo al mensaje que recibe el nodo y devolver el mismo mensaje con el topic asignado. Figura 41. Nodo Change de asignación de topic (Fuente: Node-Red) Con este paso se logra que un valor numérico pase a estar identificado con dicho topic o atributo y la carga del mensaje pase, por ejemplo, de “27.10” a “mlx90614: 27.10”, permitiendo identificar en todo momento a qué sensor pertenece dicha lectura. - Nodo Join El último paso antes de enviar los datos a la nube, es agrupar todas las lecturas en un único mensaje. Para ello, se ha utilizado el nodo Join, el cual permite unir un número determinado de mensajes en
43 función de su topic y devolver un objeto JSON con todos los valores deseados. La configuración del nodo (Figura 42) debe estar en modo manual y agrupar los mensajes, en grupos de 4, en función de su topic para crear un objeto con todas las lecturas agrupadas. Figura 42. Propiedades del nodo Join encargado de agrupar las 4 lecturas de los sensores (Fuente: Node-Red) Una vez configurado el nodo Join, se puede comprobar el mensaje que este devuelve mediante un nodo Debug. El resultado es el siguiente (Figura 43): Figura 43. Objeto devuelto por nodo Join (Fuente: Node-Red) Una vez el mensaje tiene el formato deseado, está listo para ser enviado a Azure IoT Hub. 5.5.2 Configuración Flow Raspberry Simulada Para la configuración del dispositivo simulado, se debe crear un Flow para dicha función. Como se ha visto con anterioridad, el objetivo de este segundo dispositivo es el de demostrar la escalabilidad del sistema para más de un dispositivo. Por ello, se ha simplificado al máximo esta simulación mediante la generación de un valor aleatorio dentro de un intervalo definido, criterio alejado de la realidad para los parámetros medidos por los sensores utilizados pero que, aun así, es suficiente para demostrar dicha escalabilidad. - Nodo Inject De igual forma que en el anterior caso, el nodo Inject se ha configurado para intervalos de tiempo de 20 segundos. - Nodo Random Para la generación de números aleatorios se ha utilizado el nodo no oficial “node-red-node-random”. Para adquirir nodos no oficiales, de otros usuarios, como es el caso de este nodo, la forma más sencilla es hacerlo desde el editor de Node-Red. Para ello, es necesario desplegar el menú de opciones, haciendo clic en las tres líneas de la parte superior derecha, y selecciona “manage palette”. Dentro de este menú, es posible buscar todos los nodos disponibles para Node-Red e instalarlos directamente desde el mismo menú (Figura 44):
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 44 Figura 44. Menú manage palette de Node-Red (Fuente: Node-Red) Una vez descargado el nodo, basta con desplegar cuatro nodos, uno para cada lectura, e introducir en la configuración de cada uno de ellos el valor mínimo y máximo entre los cuales se debe generar el número. - Nodos Topic y Join Una vez se tienen los cuatro números generados, el proceso de asignación de atributos y unión de los mensajes para la creación de un objeto JSON es exactamente igual a la expuesta en el apartado anterior. De nuevo, el mensaje está listo para ser enviado a Azure IoT Hub. 5.6 ENVÍO DE DATOS A AZURE IOT HUB Una vez se tienen las lecturas con sus atributos y en un mismo objeto JSON, antes de proceder a enviar dicho mensaje a la nube, es necesario crear un recurso de IoT Hub en el portal de Azure. Para la creación de un recurso de IoT Hub, así como de cualquier otro recurso, se debe acceder a la plataforma de servicios en la nube de Microsoft, Microsoft Azure [42] e iniciar sesión. Una vez dentro, se pueden observar las diferentes soluciones y servicios que ofrece esta plataforma (Figura 45): Figura 45. Página principal de Microsoft Azure (Fuente: Portal Azure)
45 En primer lugar, se procede a la creación de un grupo de recursos. Este grupo de recursos no es ninguna solución en sí misma, sino que permite crear un conjunto de servicios dentro de un mismo grupo, para facilitar así la gestión y organización de los recursos de Azure, agrupándolos por proyecto o temática. Figura 46. Menú de creación de un grupo de recursos (Fuente: Portal Azure) Para todos los recursos se ha optado por escoger la región de Francia Central (Figura 46), ya que es la región disponible más cercana. 5.6.1 Creación y configuración de IoT Hub Una vez creado el grupo de recursos “TFG-IoT”, se procede a la creación de un servicio IoT Hub dentro de dicho grupo. La creación de un recurso en Azure es sencilla, debiendo introducir, en primer lugar, el grupo de recursos, la región y el nombre del recurso (Figura 47): Figura 47. Menú de creación de un recurso IoT Hub (Fuente: Portal Azure)
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 46 Después de introducir en la pestaña “Basics” los detalles del recurso a crear, se procede a configurar el resto de pestañas: - “Networking”: en este caso se debe seleccionar el método de conectividad de “Public endpoint (all networks)” para poder acceder desde el resto de recursos sin dificultades. - “Management”: para el presente proyecto se ha optado por la elección de un IoT Hub de nivel B1: Basic tier, el cual tiene un coste aproximado de 8,43 €/mes y permite un total de 400.000 mensajes al día. Una vez creado el recurso, se procede a crear los dispositivos que se conectarán al IoT Hub, la Raspberry real y la simulada. Los dispositivos de IoT Hub son dispositivos virtuales a los que se les conecta un dispositivo real para el envío de datos. Al crear un dispositivo, IoT Hub genera automáticamente las claves de conexión del dispositivo, necesarias para la conexión entre el dispositivo y la plataforma. La creación de un nuevo dispositivo, así como la gestión de los existentes, se realiza desde la pestaña “IoT devices” del IoT Hub (Figura 48). Mediante el botón “New” se procede al registro de un nuevo dispositivo, habiendo de introducir únicamente su nombre identificador. Figura 48. Menú IoT devices de IoT Hub (Fuente: Portal Azure) Una vez creados ambos dispositivos, llamados “raspberrypi_real” y “raspberrypi_sim” (Figura 48), se pueden obtener las claves de conexión necesarias para su conexión con Node-Red haciendo clic en el nombre del dispositivo. En este caso, es necesaria la clave primaria (Figura 49): Figura 49. Claves de dispositivo IoT Hub (Fuente: Portal Azure) Una vez creado los dispositivos deseados, es posible seguir con la configuración del diagrama de Node-Red para enviar los datos de los sensores al IoT Hub. 5.6.2 Subida de datos a IoT Hub desde Node-Red En el caso de Microsoft Azure, para enviar mensajes a su IoT Hub desde Node-Red, existen nodos en internet, creados por otros usuarios, para tal fin.
53 automática la entrada de datos en Stream Analytics desde IoT Hub. La creación de un grupo de consumidores de IoT Hub se realiza desde la pestaña built-in endpoints del menú de la izquierda del recurso de IoT Hub. Para crearlo, basta con introducir el nombre deseado en la barra de introducción de texto del apartado Consumer Groups (Figura 63). Figura 63. Creación de grupo de consumidores de IoT Hub (Fuente: Portal Azure) Una vez creado el grupo de consumidores de IoT Hub es posible definir el input de Stream Analytics. En la pestaña Inputs de la columna izquierda del recurso Stream Analytics, debe seleccionarse la opción de crear un nuevo input proveniente de IoT Hub y rellenar los apartados requeridos, seleccionando como grupo de consumidores el creado desde IoT Hub (Figura 64). Figura 64. Creación input de Stream Analytics (Fuente: Portal Azure) Una vez definido el input, es necesario configurar el output. Para ello, en la pestaña de outputs del recurso Stream Analytics, debe crearse un output para SQL Database. En la información a rellenar, es necesario introducir las credenciales de acceso y el nombre de la tabla de destino, ambos definidos en el apartado anterior. Al existir dos tablas diferentes donde se van a almacenar los datos, se deben crear dos outputs independientes, uno para cada una de las dos tablas creadas en la base de datos. En la siguiente figura (Figura 65) se muestra la creación de la tabla para el direccionamiento de los datos provenientes de la Raspberry Pi real. El proceso de creación del segundo output es exactamente igual, cambiando únicamente el nombre de la tabla destino.
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 54 Figura 65. Creación output de Stream Analytics para SQL Database (Fuente: Portal Azure) Una vez definidos input y outputs, debe establecerse el flujo de datos desde IoT Hub hacia SQL Database. Para direccionar los datos de forma correcta, hacia la tabla correspondiente, se realiza una petición en la pestaña de Query de Stream Analytics del siguiente modo: SELECT deviceid, mlx90614, dht22temp, dht22hum, hcsr04, EventEnqueuedUtcTime INTO tosqlraspberrypireal FROM fromtfgiothuboutput WHERE deviceid = 'raspberrypi_real' SELECT deviceid, mlx90614, dht22temp, dht22hum, hcsr04, EventEnqueuedUtcTime INTO
55 tosqlraspberrypisim FROM fromtfgiothuboutput WHERE deviceid = 'raspberrypi_sim' Mediante esta petición, en primer lugar, se seleccionan únicamente las columnas de interés para la aplicación, mediante el comando SELECT. Estas columnas corresponden al nombre del dispositivo, las 4 lecturas provenientes del mismo y la fecha y hora en que se ha recibido dicha información en IoT Hub. Mediante el comando WHERE se separan los datos de la Raspberry Pi real y de la simulada, el cual diferencia entre las filas de datos proveniente del input IoT Hub (FROM) que poseen un “deviceid” igual a “raspberrypi_real” o “raspberrypi_sim”, y envía los datos a la tabla correspondiente de output (INTO), la base de datos Azure SQL. Una vez configurada, basta con iniciar el trabajo de Stream Analytics, definido en el apartado Query, desde la pestaña Overview. Una vez iniciado, el flujo de datos desde IoT Hub hacia SQL Database a través de Stream Analytics será constante, a menos que se pare el recurso de Stream Analytics. El flujo de datos a través de Stream Analytics puede comprobarse desde la pestaña de Overview, donde se muestran el número total de mensajes recibidos y enviados, así como el nivel de utilización del recurso (Figura 66): Figura 66. Gráficos pestaña overview de Stream Analytics (Fuente: Portal Azure) 5.8 VISUALIZACIÓN DE DATOS EN GRAFANA CLOUD Mediante el uso de Stream Analytics se consigue un flujo de datos en tiempo real desde IoT Hub hasta SQL Database, hecho que permite el almacenamiento de los datos generados provenientes de las lecturas de los sensores. También es interesante poder visualizar dichos datos en tiempo real mediante dashboards, ya que permiten una interpretación sencilla y rápida de los datos. Grafana Cloud es una aplicación web [46] en la nube que permite la conexión con Azure y así, acceder a los gráficos desde cualquier ubicación. 5.8.1 Conexión con base de datos Azure SQL Grafana cuenta con una lista de plugins que permiten conectar la aplicación con bases de datos alojadas en la nube. Uno de estos plugins es el de Microsoft SQL Server, compatible con Azure SQL. Para conectar Grafana a la base de datos de Azure SQL y así tener una fuente de datos, es necesario introducir los datos de la base de datos, el servidor donde se encuentra la base y las credenciales de acceso establecidas al crearla (Figura 67):
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 56 Figura 67. Configuración fuente de datos de la base de datos de Azure SQL (Fuente: Grafana Cloud) Después de haber introducido los datos correctamente y darle al botón de “Save & Test”, aparece un mensaje de error que indica que una dirección IP determinada no tiene acceso a la base de datos introducida, como se muestra en la siguiente figura (Figura 68): Figura 68. Error de dirección IP (Fuente: Grafana Cloud) Este error se debe a que el firewall o cortafuegos de la base de datos de Azure SQL solo permite el acceso a su servidor a la IP del cliente que ha creado el servidor. Para permitir que Grafana Cloud acceda a los datos de la base de datos para poder crear gráficos en tiempo real, es necesario configurar las IPs permitidas por el firewall de la base de datos. Para ello, se debe acceder al menú “Set server firewall” en el recurso de la base de datos de Azure (Figura 69): Figura 69. Menú Set server firewall (Fuente: Portal Azure) En este menú es posible añadir múltiple direcciones IP a las cuales se les desea dar acceso al servidor, la que indica el mensaje de error e Grafana, en este caso. No obstante, es posible que el mismo error vuelva a saltar con una dirección IP diferente. Esto se debe a que Grafana Cloud cuenta con clusters
57 o grupos de ordenadores para ejecutar la aplicación y crear los dashboards, y no es siempre el mismo el que ejecuta una misma aplicación. Para solucionar este problema, Grafana ofrece un listado con las direcciones IP de sus clusters [47]: [ "34.122.201.10", "34.68.98.63", (…) "35.205.153.2", "52.189.69.217" ] Introduciendo todas ellas en la configuración del firewall del servidor de la base de datos de Azure SQL, se logra una conexión constante entre la base de datos y Grafana, sin errores debidos al bloqueo de ciertas direcciones IP. Una vez introducidas todas las direcciones IP se vuelve a probar la conexión y, en este caso, devuelve un mensaje de conexión correcta (Figura 70): Figura 70. Mensaje de correcta conexión entre Grafana Cloud y Azure SQL Database (Fuente: Grafana Cloud) Una vez realizada la conexión con la base de datos de Azure, es posible crear diferentes gráficos para visualizar en tiempo real los datos. 5.8.2 Creación de dashboard en tiempo real Para crear un nuevo dashboard en Grafana, debe seleccionarse la opción “Dashboard” en el menú “Create (+)” de la barra izquierda de la aplicación. Al crear uno nuevo, aparece una pantalla vacía para añadir los paneles y filas deseadas. Un panel es un gráfico de un determinado tipo, mientras que una línea es un conjunto de paneles. La creación de líneas permite agrupar los gráficos y tener la información ordenada y accesible. La creación de una nueva línea o panel se realiza desde el botón “Add panel” de la parte derecha de la barra superior de Grafana (Figura 71): Figura 71. Botón Add panel (Fuente: Grafana Cloud) Para la visualización de los datos de los dos dispositivos considerados en este proyecto, es deseable crear una fila para cada uno de ellos. Estas filas pueden desplegarse o contraerse, dejando a la vista, respectivamente, únicamente el título de la línea o el conjunto de paneles que contiene (Figura 72):
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 58 Figura 72. Líneas de Grafana para cada dispositivo (Fuente: Grafana Cloud) Dentro de cada una de las líneas se crean los paneles necesarios para la visualización de todos los datos captados por los sensores. En este apartado se procede a la explicación de la creación de uno de los gráficos. La creación del resto de gráficos es similar, variando, en cada caso, la personalización del gráfico y la variable a mostrar. La creación de un nuevo panel, tal y como se ha mencionado, se realiza mediante la opción “Add panel” de la barra superior (Figura 71). Es entonces cuando se accede a la pantalla de configuración del panel. En ella, se deben configurar las siguientes opciones: - Nombre del gráfico Este es el nombre que aparecerá encima del gráfico en todo momento. Se escribe la magnitud medida y su unidad de medición. Figura 73. Definición nombre del gráfico - Tipo de visualización Una de las principales características de un gráfico es el modo de visualizar los datos (Figura 74), bien sea mediante líneas, barras, de calibre o gauge, etc. Por un lado, es interesante representar los datos en un gráfico de barras para poder visualizar la evolución en el tiempo de la variable medida; mientras que, por el otro, mediante un gráfico de calibre o un simple gráfico que muestra un número, es útil para ver el valor de dicha variable en el momento de la visualización. Para todas las variables se va a crear un gráfico de ambos tipos.
59 Figura 74. Selección tipo de visualización del gráfico (Fuente: Grafana Cloud) - Petición o query El paso más importante es la configuración de la petición para visualizar los datos ya que, sin una correcta petición, el gráfico no mostrará ningún tipo de dato. Esta petición es posible debido a que Grafana cuenta con una conexión a la base de datos Azure SQL, tal y como se ha mostrado con anterioridad. La petición para crear el gráfico de la temperatura medida por el sensor de IR MLX90614, por ejemplo, es la siguiente (Figura 75): Figura 75. Petición para gráfico de temperatura de sensor MLX90614 (Fuente: Grafana Cloud) Es la petición de la figura anterior, en primer lugar, se seleccionan las columnas “EventEnqueuedUtcTime” y “mlx90614” de los últimos datos en ser almacenados en la tabla correspondiente de la base de datos (FROM). La primera es la variable de tiempo del gráfico, representado en el eje de las abscisas, mientras que la segunda es la variable dependiente, en este caso, la temperatura medida por IR, representada en el eje de las ordenadas. Cabe destacar, al igual que en el resto de apartados, la opción de escalabilidad que presenta la solución planteada. En este caso, para elegir los datos de un determinado dispositivo, basta con introducir debajo de la función FROM la tabla de la cual se leen los datos, ya sea la Raspberry Pi real (reaspberrypirealsqltable) o la simulada (raspberrypisimsqltable). - Valores nulos Es posible que alguna de las lecturas de los sensores sea nula debido a algún error en la ejecución del código o error de Node-Red. Para evitar espacios vacíos en el caso de la existencia de valores nulos, es deseable seleccionar la opción de conectar los puntos no nulos más cercanos entre los que se ha producido el o los valores nulos, consiguiendo así una línea continua (Figura 76).
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 60 Figura 76. Opción de conectar puntos en caso de valor nulo (Fuente: Grafana Cloud) - Personalización Existen muchas opciones en cuanto a la personalización del gráfico. Grafana permite, por ejemplo, personalizar el color de la línea, su grosor, el grado de transparencia y degradado del área por debajo de la línea, el tamaño de la letra, etc. Una vez configurados todos los parámetros, se obtiene el siguiente gráfico (Figura 77): Figura 77. Panel de visualización en tiempo real de la temperatura medida por sensor MLX90614 (Fuente: Grafana Cloud) - Actualización automática del gráfico y ventana temporal Otra de los factores a considerar en un dashboard en tiempo real es el intervalo de actualización automática y la ventana temporal del gráfico. Grafana permite mostrar varias ventanas de tiempo, desde los últimos 5 minutos hasta los últimos 7 días. En cuanto al intervalo de actualización automática también permite elegir entre diferentes opciones, desde actualización cada 5 segundos hasta una única vez al día. En este caso, se ha optado por la actualización automática cada 30 segundos (Figura 78). Esto se debe a que, teniendo en cuenta que las lecturas de los sensores se producen cada 20 segundos, el siguiente intervalo mayor a 20 segundos inmediatamente posterior, permitido por Grafana, es de 30 segundos. En cuanto a la ventana temporal se ha escogido una ventana de 30 minutos. Figura 78. Opciones de actualización automática y ventana temporal (Fuente: Grafana Cloud)
61 En un dashboard de monitorización en tiempo real es interesante contar con un reloj que permita consultar de forma directa y sencilla la hora. El panel de reloj o Clock permite esta función. Es un panel que no aparece por defecto en la aplicación de Grafana. Sin embargo, puede descargarse el plugin desde la web oficial de Grafana [48] y, una vez descargado, el panel aparece en la aplicación de Grafana y está listo para ser usado. La configuración de este panel es sencilla. Permite mostrar u ocultar la hora, la fecha y la zona horaria, así como el tamaño de la fuente de cada uno de estos datos. Se ha optado por colocar este panel fuera de las diferentes filas, en la parte superior. De este modo, se observa este panel en todo momento, mientras que debajo se muestra la lista de dispositivos disponibles (Figura 79): Figura 79. Panel Clock (Fuente: Grafana Cloud) Una vez configurados todos los elementos que forman parte de la arquitectura del prototipo, se obtiene un dashboard que se actualiza en tiempo real, cada 30 segundos, en el que se muestra la fecha y hora y un listado de los dispositivos disponibles para monitorizar, el cual permite expandir y contraer cada una de las filas, para la visualización del o de los dispositivos deseados en cada momento y situación. La visualización de la Raspberry Pi real queda de la siguiente forma (Figura 80): Figura 80. Dashboard Raspberry Pi real (Fuente: Grafana Cloud)
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 62 Por otro lado, el dashboard de la Raspberry Pi simulada queda de la siguiente manera (Figura 81): Figura 81. Dashboard Raspberry Pi simulada (Fuente: Grafana Cloud) 5.8.3 Sistema de alertas Por último, una vez creado el dashboard, Grafana permite añadir alertas en función de los valores de cada gráfico. Estas alertas permiten alertar de una posible anomalía o condición sin tener que estar constantemente supervisando los gráficos. Antes de crear cualquier alerta, es necesario configurar el canal de comunicación de alertas, Telegram para el presente proyecto. Para configurar un canal de alertas, debe accederse a la opción “Notification Channels” del menú “Alerting” de la barra situada en la parte izquierda (Figura 82): Figura 82. Menú Notification Channels (Fuente: Grafana Cloud) En este menú se muestran los distintos canales soportados por Grafana para la notificación de alertas. Para configurar un canal de Telegram, es necesario crear un bot y un canal de Telegram. En el Anexo III Creación de bot de Telegram se detalla los pasos a seguir para la creación del Bot en Telegram y la obtención de los datos necesarios para su uso como canal de alertas para Grafana. Para configurar el canal, se debe introducir el API token del bot de Telegram correspondiente, así como el ID del canal de notificaciones (Figura 83), ambos datos obtenidos en el Anexo III.
69 7 CONCLUSIONES Una vez terminado el proyecto, se puede afirmar que los objetivos del mismo se han cumplido de forma satisfactoria. En primer lugar, se ha llevado a cabo una introducción a las tecnologías IoT, una de las principales ramas dentro de la transformación digital, la cual está reinventando la forma en que se interrelacionan personas, datos y procesos con el objetivo de crear valor añadido a los productos y soluciones actuales. Se han estudiado las distintas partes que conforman una solución de este tipo, así como las herramientas más utilizadas en este campo, haciendo hincapié en las plataformas de servicios computacionales en la nube. Por otro lado, mediante el diseño del prototipo IoT, se ha logrado proponer una solución dentro del sector ferroviario en la que esta tecnología podría ser implementada. En concreto, se ha propuesto un sistema para la monitorización y supervisión de cambios ferroviarios mediante lecturas de parámetros críticos en materia de seguridad e integridad de este tipo de instalación. Las lecturas para medir estos parámetros son de temperatura y humedad ambiente, para controlar las condiciones atmosféricas; de distancia, para controlar el estado y libre movimiento de las agujas; y de temperatura de carril para garantizar el correcto funcionamiento de la instalación de calefacción de agujas. En este contexto, cabe destacar las principales problemáticas que se han encontrado a la hora plantear la implementación de un sistema como el descrito en la realidad. En primer lugar, se ha podido observar que la conexión a Internet en todo momento es indispensable para este tipo de solución, algo que, sin dejar de ser posible, puede ser difícil de garantizar en ubicaciones remotas por donde pueden discurrir las líneas ferroviarias. Por otra parte, aun quedando fuera del alcance del proyecto la implementación del sistema en un cambio de agujas real, es preciso señalar las restricciones y dificultades que pueden encontrarse a la hora de instalar sensores y dispositivos en una vía ferroviaria, debido a la estricta normativa de obligado cumplimiento en tal materia. Posteriormente, por medio de la realización del prototipo, se ha logrado validar la solución propuesta para el sistema de monitorización y supervisión de cambios de agujas. Se ha obtenido un sistema que permite la visualización en tiempo real, así como su almacenamiento en la nube, de lecturas provenientes de sensores conectados a dispositivos que pueden estar situados a grandes distancias y en cualquier ubicación, siempre y cuando estén conectados a Internet. Además, se ha configurado un sistema de alertas basado en valores umbrales que notifica al usuario responsable del mantenimiento cuándo estos umbrales han sido superados. Se trata de un sistema flexible y escalable, tanto horizontal como verticalmente, que permite la conexión y/o desconexión de nuevos dispositivos y sensores sin conllevar la necesidad de realizar grandes cambios en las herramientas y servicios involucrados. Asimismo, la solución propuesta es compatible con los sistemas de control existentes en el sector ferroviario y, en concreto, con los de los cambios de agujas, ya que conforma una solución paralela e independiente que no entra en conflicto con las redes de control y comunicación existentes, las cuales requieren de una gran seguridad. Es importante mencionar este hecho ya que, sin dejar de ser un factor prioritario la seguridad y privacidad de la información generada por la solución propuesta, no sería posible el control de las instalaciones ferroviarios en el desfavorable caso de que se produjese una intrusión en el sistema, al estar esta solución únicamente destinada a la monitorización y supervisión de dichas instalaciones.
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 70 7.1 TRABAJOS FUTUROS A raíz del prototipo realizado, se plantean a continuación posibles líneas futuras de trabajo para la mejora y continuación del desarrollo del sistema IoT propuesto: - Diseñar una carcasa o armadura de la forma y material requeridos donde poder acomodar la placa, cableado y los señores, con el fin de dar una mayor robustez y protección al dispositivo, así como para facilitar su instalación y manipulación. - En el caso de implementar un sistema similar en un entorno real, sería recomendable seleccionar los dispositivos (placa, sensores, etc.) que mejor se adapten a cada situación y, por otro lado, optimizar las herramientas utilizadas en la nube de tal forma que cubran las necesidades del sistema, sin estar sobredimensionadas. - En el contexto de los cambios de agujas, se podrían monitorizar más parámetros para añadir valor a la solución. Una propuesta interesante es implementar un sistema de control de consumo de la instalación de calefacción de agujas, con el fin de detectar posibles consumos excesivos debido a fallos o mal funcionamiento. - Es interesante la implementación de modelos de mantenimiento predictivo de las instalaciones monitorizadas, mediante el uso de algoritmos de machine learning e Inteligencia Artificial. Esto permitiría predecir fallos futuros en las distintas instalaciones antes de que se produjeran y que los equipos de mantenimiento realizaran las labores requeridas para su prevención. Con ello, se mejoraría el servicio al cliente, reduciendo tiempos de espera y retrasos causados por averías repentinas. - Extrapolando la solución a instalaciones más allá de los cambios de agujas, sería posible la monitorización de otras instalaciones de las líneas ferroviarias. Se podría controlar, por ejemplo, el estado de la iluminación de los túneles ferroviarios y detectar si se funde un foco. Podrían instalarse, también, cámaras en lugares donde se producen tormentas y grandes vientos, con el objetivo de detectar obstáculos en las vías. En definitiva, sería posible la monitorización de gran parte de las instalaciones y conocer el estado de la infraestructura en general, contando así con un sistema de supervisión inteligente para las líneas ferroviarias. - Por último, sería interesante mejorar las herramientas de visualización de la información mediante la conexión con servicios de terceros. Se podría contar con un mapa de toda una región o país, gracias a Google Maps, por ejemplo, en el que ver todas las instalaciones monitorizadas según su ubicación y, además, disponer de toda la información procedente de los dispositivos instalados en dichas ubicaciones.
71 8 REFERENCIAS [1] «Interoperabilidad | AESF:AGENCIA ESTATAL DE SEGURIDAD FERROVIARIA». https://www.seguridadferroviaria.es/actividades/interoperabilidad (accedido junio 18, 2021). [2] F. Righetti, C. Vallati, G. Anastasi, G. Masetti, i F. Di Giandomenico, «Failure management strategies for IoT-based railways systems», en Proceedings - 2020 IEEE International Conference on Smart Computing, SMARTCOMP 2020, set. 2020, p. 386-391, doi: 10.1109/SMARTCOMP50058.2020.00082. [3] O. Redactor, «NORMAS TÉCNICAS ADMINISTRADOR DE INFRAESTRUCTURAS FERROVIARIAS». [4] «Aparatos de vía: los desvíos ferroviarios | MÁS QUE INGENIERÍA». https://masqueingenieria.com/blog/aparatos-de-via-los-desvios/ (accedido marzo 21, 2021). [5] «Conociendo a fondo el cambio de agujas - Trenvista». https://www.trenvista.net/formacion/escuela-trenvista/conociendo-a-fondo-cambio-deagujas/ (accedido marzo 22, 2021). [6] O. Brown, «Railroad switch animation - Railroad switch - Wikipedia». https://en.wikipedia.org/wiki/Railroad_switch#/media/File:Railroad_switch_animation.gif (accedido marzo 22, 2021). [7] «TELICE». http://www.telice.es/proyecto/iceburner-sistema-calefactor-de-agujas-de-altasprestaciones-en-eficiencia-disponibilidad-y-versatilidad/ (accedido junio 05, 2021). [8] «¿Qué es IoT (Internet Of Things)? | Deloitte España». https://www2.deloitte.com/es/es/pages/technology/articles/IoT-internet-of-things.html (accedido junio 05, 2021). [9] J. Wang, M. K. Lim, C. Wang, i M. L. Tseng, «The evolution of the Internet of Things (IoT) over the past 20 years», Comput. Ind. Eng., vol. 155, p. 107174, mayo 2021, doi: 10.1016/j.cie.2021.107174. [10] «Computación en la nube | HPE España». https://www.hpe.com/es/es/what-is/cloudcomputing.html (accedido junio 18, 2021). [11] «IaaS frente a PaaS frente a SaaS - España | IBM». https://www.ibm.com/eses/cloud/learn/iaas-paas-saas#toc-una-perspe-aVpncBme] [https://www.stackscale.com/blog/cloud-service-models/ (accedido junio 18, 2021). [12] «Main cloud service models: SaaS, PaaS and IaaS | Stackscale». https://www.stackscale.com/blog/cloud-service-models/ (accedido junio 18, 2021). [13] P. Modisane i O. Jokonya, «Evaluating the benefits of Cloud Computing in Small, Medium and Micro-sized Enterprises (SMMEs)», Procedia Comput. Sci., vol. 181, p. 784-792, gen. 2021, doi: 10.1016/J.PROCS.2021.01.231. [14] «Google Cloud Will Not Be Able To Overtake Microsoft Azure». https://www.forbes.com/sites/bethkindig/2020/12/03/google-cloud-will-not-be-able-toovertake-microsoft-azure/?sh=166eac685af9 (accedido junio 18, 2021). [15] A. Q. Gbadamosi et al., «IoT for predictive assets monitoring and maintenance: An implementation strategy for the UK rail industry», Autom. Constr., vol. 122, p. 103486, feb. 2021, doi: 10.1016/j.autcon.2020.103486. [16] S. Lipare i P. Bhavathankar, «Railway Emergency Detection and Response System using IoT», jul. 2020, doi: 10.1109/ICCCNT49239.2020.9225434. [17] «Inteligencia Artificial para el control de la ventilación - RESPIRA®». https://respira.sener/
Estudio de aplicaciones IoT para la monitorización y supervisión de cambios de aguja en sistemas ferroviarios 72 (accedido junio 18, 2021). [18] «(No Title)». https://iot.telekom.com/resource/blob/data/492968/e396f72b831b0602724ef71056af5045/m obile-iot-network-comparison-nb-iot-lorawan-sigfox.pdf (accedido junio 05, 2021). [19] «SSH Secure Shell home page, maintained by SSH protocol inventor Tatu Ylonen. SSH clients, servers, tutorials, how-tos.» https://www.ssh.com/academy/ssh#the-ssh-protocol (accedido junio 18, 2021). [20] «Download PuTTY - a free SSH and telnet client for Windows». https://www.putty.org/ (accedido junio 18, 2021). [21] «SSH using Windows - Raspberry Pi Documentation». https://www.raspberrypi.org/documentation/remote-access/ssh/windows.md (accedido junio 18, 2021). [22] «RealVNC: Software de acceso remoto para equipos de escritorio y dispositivos móviles | RealVNC». https://www.realvnc.com/es/ (accedido junio 18, 2021). [23] «VNC (Virtual Network Computing) - Raspberry Pi Documentation». https://www.raspberrypi.org/documentation/remote-access/vnc/ (accedido junio 18, 2021). [24] «DSD TECH DHT22 Módulo de sensor de humedad y temperatura AM2302 para Arduino Raspberry Pi: Amazon.es: Industria, empresas y ciencia». https://www.amazon.es/dp/B07CM2VLBK?psc=1&ref=ppx_pop_dt_b_asin_title (accedido junio 18, 2021). [25] T. Liu, «Digital-output relative humidity & temperature sensor/module DHT22 (DHT22 also named as AM2302) Capacitive-type humidity and temperature module/sensor». [26] «Sensor de transductor de medición de Distancia del módulo ultrasónico ARCELI 5PCS HCSR04 para Arduino: Amazon.es: Electrónica». https://www.amazon.es/dp/B07MPZR59P?psc=1&ref=ppx_pop_dt_b_asin_title (accedido junio 18, 2021). [27] «Ultrasonic Ranging Module HC-SR04». [28] «Binchil Mlx90614Esf - Módulo sensor de temperatura sin ventilador (Mlx90614): Amazon.es: Bricolaje y herramientas». https://www.amazon.es/gp/product/B08T6Y3NYB/ref=ppx_yo_dt_b_asin_title_o00_s00?ie =UTF8&psc=1 (accedido junio 18, 2021). [29] «MLX90614 family Single and Dual Zone Infra Red Thermometer in TO-39 Features and Benefits Ordering Information Part No. MLX90614 X X X (1) (2) (3) (1) Supply Voltage: A5V power (adaptable for 12V) B-3V power (2) Number of thermopiles: A-single zone B-dual zone (3) Package type: A-Filter inside B-Filter outside», 2006. [30] «Resources : Node-RED». https://nodered.org/about/resources/ (accedido junio 18, 2021). [31] «Node-RED». https://nodered.org/ (accedido junio 18, 2021). [32] D. Torres, J. P. Dias, A. Restivo, i H. S. Ferreira, «Real-time Feedback in Node-RED for IoT Development: An Empirical Study», set. 2020, doi: 10.1109/DS-RT50469.2020.9213544. [33] «Introducción a Azure IoT Hub | Microsoft Docs». https://docs.microsoft.com/eses/azure/iot-hub/about-iot-hub (accedido junio 18, 2021). [34] «Introducción a Azure Stream Analytics | Microsoft Docs». https://docs.microsoft.com/eses/azure/stream-analytics/stream-analytics-introduction (accedido junio 18, 2021).
73 [35] «SQL Database: servicio de base de datos en la nube administrado | Microsoft Azure». https://azure.microsoft.com/es-es/products/azure-sql/database/ (accedido junio 18, 2021). [36] «Operating system images – Raspberry Pi». https://www.raspberrypi.org/software/operatingsystems/ (accedido junio 18, 2021). [37] «balenaEtcher - Flash OS images to SD cards & USB drives». https://www.balena.io/etcher/ (accedido junio 18, 2021). [38] «Descargue VNC Viewer | VNC Connect». https://www.realvnc.com/es/connect/download/viewer/ (accedido junio 18, 2021). [39] «GPIO - Raspberry Pi Documentation». https://www.raspberrypi.org/documentation/usage/gpio/ (accedido junio 18, 2021). [40] «Running on Raspberry Pi : Node-RED». https://nodered.org/docs/gettingstarted/raspberrypi (accedido junio 18, 2021). [41] «Securing Node-RED : Node-RED». https://nodered.org/docs/user-guide/runtime/securingnode-red (accedido junio 18, 2021). [42] «Microsoft Azure Portal | Microsoft Azure». https://azure.microsoft.com/eses/features/azure-portal/ (accedido junio 18, 2021). [43] «node-red-contrib-azure-iot-hub (node) - Node-RED». https://flows.nodered.org/node/nodered-contrib-azure-iot-hub (accedido junio 18, 2021). [44] «Instalación y uso Azure IoT Explorer | Microsoft Docs». https://docs.microsoft.com/eses/azure/iot-pnp/howto-use-iot-explorer (accedido junio 18, 2021). [45] «Releases · Azure/azure-iot-explorer · GitHub». https://github.com/Azure/azure-iotexplorer/releases (accedido junio 18, 2021). [46] «Grafana Cloud | Grafana Labs». https://grafana.com/products/cloud/ (accedido junio 18, 2021). [47] «hosted-grafana/source-ips». https://grafana.com/api/hosted-grafana/source-ips (accedido junio 18, 2021). [48] «Clock plugin for Grafana | Grafana Labs». https://grafana.com/grafana/plugins/grafanaclock-panel/ (accedido junio 18, 2021).