Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD DE ALMERIA ESCUELA SUPERIOR DE INGENIERÍA TRABAJO FIN DE GRADO Alumno/a: Director/es: Curso: Modalidad TFG: “Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso” David Zapata Castillo Alfredo Alcayde García 2021/2022 Trabajo Técnico UNIVERSIDAD DE ALMERÍA ESCUELA SUPERIOR DE INGENIERÍA GRADO EN INGENIERÍA ELECTRÓNICA INDUSTRIAL TRABAJO FIN DE GRADO Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso Alumno: David Zapata Castillo Director : Alfredo Alcayde García Fecha: 23/06/2022 A mi familia y en especial a mis padres por haberme apoyado siempre en mis decisiones. Índice general Página Agradecimientos vii Resumen ix Abstract xi Siglas y acrónimos xiii Índice de figuras xvii Índice de tablas xix 1. Introducción 3 1.1. Introducción e interés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3. Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4. Resumen de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5. Fases de desarrollo y planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.6. Competencias empleadas en este proyecto . . . . . . . . . . . . . . . . . . . . . . 11 1.7. Estructura del TFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2. Revisión bibliográfica 15 2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3. IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4. MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.5. OpenZmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.6. Grafana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3. Programación 23 3.1. Introducción de los enchufes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2. Programación de enchufes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3. Ubicación de los enchufes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.4. Programación en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso v ÍNDICE GENERAL 4. Telegram 39 4.1. Bot de Telegram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2. Energía consumida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3. Cambiar temporización de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . 45 5. Grafana 49 5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2. Configuración de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.3. Creación de alarmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.4. Gráficas de consumo eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6. Conclusiones y trabajos futuros 71 6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.2. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Anexos 74 A. Código. 75 A.1. Publicación de un mensaje por MQTT . . . . . . . . . . . . . . . . . . . . . . . . 78 A.2. Subscripción síncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 A.3. Subscripción asíncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 A.4. Programación bot de Telegram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 A.5. Programación PowerOnState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 vi Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso Agradecimientos Al director Alfredo Alcayde García por toda la ayuda que me ha ofrecido a lo largo del proyecto y su compromiso con el proyecto. A Manuel Soler Ortiz por ayudarme durante estos cuatro años en cualquier problema. A mi familia y en especial a mis padres por darme la posibilidad de llevar a cabo mis estudios y poder convertirme en lo que quería ser. A mis compañeros de carrera con los que he compartido 4 años de mucho esfuerzo y de- dicación. Por haber estado ahí en las situaciones más estresantes siempre dispuestos a ayudar cuando más se necesitaba. A María por haberme ayudado en los momentos más difíciles de mi vida y a Verónica por ser mi apoyo incondicional. A la Escuela Superior de Ingeniería de la Universidad de Almería, por la enseñanza de calidad que me ha otorgado junto a todos los docentes que me han formado y me han animado a apasionarme aún más por el ámbito de la ingeniería y mi desarrollo como ingeniero. Al departamento de Ingeniería y en especial al área de Ingeniería eléctrica por haberme dado la posibilidad de realizar este trabajo a partir del proyecto con el que se han financiado los enchufes y el dispositivo openZmeter. Por todo esto quiero daros las GRACIAS. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso vii Resumen Resumen castellano En este trabajo se realizará un estudio energético de las máquinas expendedoras para analizar el consumo energético de las mismas y su posible reducción de consumo mediante la aplicación desarrollada en el proyecto. La comunicación se realizará mediante el protocolo MQTT en len- guaje Java utilizando enchufes inteligentes que proporcionan datos de consumo instantáneo. Estos datos se envían a un servidor privado que almacenará los datos. Más tarde se interactuará con cada parámetro por medio de un entorno gráfico llamado Grafana donde el usuario puede visualizar los parámetros eléctricos de cada máquina pudiendo comparar consumos entre má- quinas de café, bebidas frías y máquinas de comida o comparar las diferencias entre los mismos tipos de máquinas con la ubicación. Se han añadido alarmas de consumo al proyecto con las que avisar al usuario por medio de Telegram en caso de obtener valores que puedan dañar las máquinas. Además se podrá de programar el encendido y apagado de las máquinas a partir de datos de consumo y de precios diarios de electricidad utilizando un bot de Telegram para su implementa- ción. Palabras clave: IoT, MQTT, Control energético y Java Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso ix Abstract Abstract In this work, an energy study has been carried out on vending machines to analyse their energy consumption and figure out if it is possible to reduce it by implementing the application discussed in this report. The communication is performed through the MQTT protocol in Java language using intelligent plugs that instantly provide the acquired data. This data is then sent to a private server where it is stored. Later on, through a graphical environment called Grafana each parameter will be set to interact with another parameter. This way the user can visualise the most important electrical parameter in each machine or compare the consumption between coffee machines, cold drink machines and food machines or to, additionally, compare the same types of machines with their location. To prevent the machines from being damaged, alarms have been set up to go off in the case where consumption values may cause harm. In addition, the machines have been programmed to switch on and off based on consumption data and daily electricity prices using Telegram bot to implement this action. Keywords: IoT, MQTT, Energy managementy Java Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso xi Siglas y acrónimos EU European Union TFG Trabajo Fin de Grado UAL Universidad de Almería IoT Internet of Things MQTT Message Queuing Telemetry Transport IBM International Business Machines Corporation TICs Técnicas de Información y Comunicación HTTP Hypertext Transfer Protocol WSNs Wireless Sensor Networks RFID Radio-Frequency Identification QoS Quality of Services TLS Transport Layer Security IP Internet Protocol VPN Virtual Private Network DNS Domain Name System UGR Universidad de Granada SCADA Control Supervisor y Adquisición de Datos IEEE Institute of Electrical and Electronics Engineers ABS Acrylonitrile Butadiene Styrene PC Personal Computer Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso xiii SIGLAS Y ACRÓNIMOS OTA Over-the-air UI User Interface THD Total harmonic distortion XML Extensible Markup Language SGML Standard Generalized Markup Language RPC Remote Procedure Call JSON JavaScript Object Notation ID Identification oZm OpenZmeter SSL Secure Sockets Layer CITE Científico-Técnico xiv Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso Índice de figuras 1.1. Funcionamiento protocolo MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Comparación de precios energéticos desde 2010 hasta Febrero de 2022 . . . . . . 5 1.3. Precio eléctrico de los días 7, 8, 9 y 10 de Marzo en España y Portugal . . . . . . 6 1.4. Previsión de dispositivos IoT conectados a nivel mundial 2019-2030 . . . . . . . . 7 1.5. Distribución porcentual del mercado mundial de dispositivos IoT en 2019 . . . . 7 2.1. Funcionamiento visual de QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2. Análisis de red inalámbrica entre % de perdida de mensajes y carga en byte. Fuente [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1. Enchufe Tasmota EU Plug V2 físico . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2. Pantallas principales de Tasmota EU Plug V2 . . . . . . . . . . . . . . . . . . . . 24 3.3. Menú MQTT Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.4. Configuración para cambiar los nombres de los enchufes a partir de MQTT Explorer 27 3.5. Mapa de la UAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.6. Mapa detallado de la ubicación de los enchufes en la UAL . . . . . . . . . . . . . 30 3.7. Menú de consola del enchufe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.8. Interfaz gráfica JFrame Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.9. Consumo eléctrico de un dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.10. Interfaz cambio horario de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . 36 3.11. Interfaz login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso xv ÍNDICE DE FIGURAS 4.1. Inicio de la interacción con Telegram . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2. Inicio de la interacción con Telegram . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3. Dispositivos activos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4. Pantalla página siguiente y página anterior . . . . . . . . . . . . . . . . . . . . . 43 4.5. Dispositivo seleccionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.6. Parámetros eléctricos del dispositivo Vending_3878F4 . . . . . . . . . . . . . . . 44 4.7. Temporización de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.8. Temporización de dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.9. Selección de horario en los enchufes . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.10. Elección de la acción a realizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.11. Elección del día que se desea implementar la temporización del dispositivo . . . . 47 4.12. Resumen de opciones seleccionadas en el horario . . . . . . . . . . . . . . . . . . 48 4.13. Botón cancelar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.1. Configuración de bases de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2. Añadir bases de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.3. Configuración de PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.4. Mensaje obtenido tras el test de la base de datos . . . . . . . . . . . . . . . . . . 52 5.5. Mensaje obtenido tras el test de la base de datos . . . . . . . . . . . . . . . . . . 52 5.6. Mensaje obtenido tras el test de la base de datos . . . . . . . . . . . . . . . . . . 53 5.7. Pantalla Dashboard setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.8. Variables utilizadas en Grafana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.9. Creación de una variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.10. Actualizar variables en Grafana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.11. Creación de gráficas mediante Grafana . . . . . . . . . . . . . . . . . . . . . . . . 56 5.12. Configuración de gráficas en Grafana . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.13. Configuración de query en Grafana . . . . . . . . . . . . . . . . . . . . . . . . . . 58 xvi Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso ÍNDICE DE FIGURAS 5.14. Creación de alertas en Grafana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.15. Mensaje Test en Telegram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.16. Alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.17. Tensión de dispositivos individual . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.18. Tensión de dispositivos por tipología . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.19. Intensidad de dispositivos individual . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.20. Intensidad de dispositivos por tipología . . . . . . . . . . . . . . . . . . . . . . . 64 5.21. Factor de potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.22. Potencia máxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.23. Potencia media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.24. Potencia consumida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.25. Potencia aparente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.26. Energía consumida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.27. Potencia en porcentaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.28. Consumo energético nocturno de las máquinas . . . . . . . . . . . . . . . . . . . 68 5.29. Display de dispositivos conectados . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.30. Display de dispositivos conectados por tipología . . . . . . . . . . . . . . . . . . . 69 6.1. Base empotrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 A.1. Calibración de enchufes en el laboratorio . . . . . . . . . . . . . . . . . . . . . . . 76 A.2. Código de tensión e intensidad en JSON . . . . . . . . . . . . . . . . . . . . . . . 77 A.3. Implementación de parámetros de tensión y corriente por MQTT Explorer com- probando sus parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 A.4. Añadir dependencias en Netbeans. . . . . . . . . . . . . . . . . . . . . . . . . . . 79 A.5. Selección de dispositivos desde la consola . . . . . . . . . . . . . . . . . . . . . . 100 A.6. Comprobación de la implementación . . . . . . . . . . . . . . . . . . . . . . . . . 101 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso xvii ÍNDICE DE FIGURAS xviii Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso Índice de tablas 1.1. Planificación temporal mediante diagrama de Gantt . . . . . . . . . . . . . . . . 10 2.1. Correlación entre el retardo final-final y la pérdida de mensajes para los niveles de QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1. Cantidad de máquinas por aulario . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso xix ÍNDICE DE TABLAS xx Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso DISEÑO E IMPLEMENTACIÓN DE UNA RED DE CONTROL DE MÁQUINAS VENDING, MONITORIZACIÓN ENERGÉTICA Y DE USO Capítulo 1 Introducción 1.1. Introducción e interés Actualmente el precio de la energía está alcanzando límites históricos debido a múltiples factores, por ello, es primordial reducir el consumo eléctrico en todos los ámbitos posibles. Una solución para ello es el control energético de las máquinas expendedoras. Inicialmente se pensa- ba que su consumo era insignificante, por ello no se ha tenido en cuenta hasta ahora. Debido a la pandemia se demostró que esto no era cierto, ya que con la llegada del confinamiento y con ello las clases no presenciales se esperaba una factura eléctrica reducida a la habitual en la Universidad de Almería (UAL). En cambio, se encontró una factura similar a un periodo prepandemia, algo ilógico ya que la universidad se encontraba parcialmente cerrada. Por ello el departamento de ingeniería eléctrica empezó a analizar las causas de este gasto de energía, llegando a la conclusión de que uno de los motivos de la factura era el consumo de las máquinas expendedoras. Con este proyecto se va a intentar reducir el consumo de estas a partir de enchufes inteligentes [2], [3]. La comunicación entre las máquinas y el controlador se realizará a partir del protocolo Message Queuing Telemetry Transport (MQTT). Este protocolo se creó en 1999 y fue inventado por Andy Stanford-Clark International Business Machines Corporation (IBM) y Arlen Nipper (Arcom, ahora Cirrus Link). En su inicio se pretendía crear un protocolo para obtener la mínima pérdida de batería y el mínimo ancho de banda que conectaba los oleoductos a través de la conexión satelital [4], [5]. Actualmente se utiliza este protocolo para la sustitu- ción del modelo cliente-servidor tradicional por el patrón de publicación/ suscripción. En esta nueva forma de comunicación de mensajes existen el cliente y el suscriptor sin embargo estos no saben de la existencia del otro, por ello existe un tercer componente llamado intermediario, este siendo conocido por ambos. Es el encargado de filtrar todos los mensajes entrantes y dis- tribuirlos en consecuencia. Con este protocolo se conectan entidades físicas a la red a través de internet, y realiza la transmisión, almacenamiento, control y gestión de datos a través de redes de comunicación para la interconexión en cualquier lugar, momento y objeto [6]. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 3 1.2. OBJETIVOS Figura 1.1. Funcionamiento protocolo MQTT A partir de esta comunicación se obtendrían todos los datos relacionados con el consumo actual de las máquinas. Al ser una comunicación tan ligera hace que este protocolo sea más eficiente que las comunicaciones tradicionales como Hypertext Transfer Protocol (HTTP) en las aplicaciones de Internet of Things (IoT) donde se utilizan dispositivos de escasa potencia [7]. 1.2. Objetivos El principal objetivo es reducir el consumo eléctrico de las máquinas expendedoras de la UAL mediante la utilización de enchufes inteligentes Tasmota European Union (EU) Plug [8] que a partir del protocolo MQTT envíen información a tiempo real del consumo de las máquinas, y se puedan programar su arranque y paradas, así como decidir su desconexión en remoto [9]. Estos enchufes se programarán y quedarán registrados en la base de datos de un servidor privado openzmeter utilizado como intermediario. Primero se instalarán los enchufes en cada una de las máquinas operativas en el campus, se almacenarán los datos recibidos por las máquinas y mediante programación en Java se va a interactuar con cada uno de los enchufes por un entorno gráfico (Grafana) para evaluar el estado actual de la máquina. Se podrá visualizar el consumo eléctrico instantáneo, ver gráficamente dónde se encuentran situadas las máquinas y programar el encendido y apagado de las máquinas a partir de los precios diarios de electricidad [10]. 4 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 1. INTRODUCCIÓN 1.3. Contexto Este trabajo se realiza a partir de la necesidad del ahorro energético de nuestra época. A causa de la pandemia del COVID-19 se comprobó un bajo descenso de consumo energético en la UAL, esto llamó mucho la atención debido a que durante la etapa de cuarentena se cancelaron las clases presenciales y las prácticas en la universidad. Con esta acción se suponía que el consumo eléctrico sería alto ya que la maquinaria de investigaciones y servidores de la universidad seguían activos pero no un consumo tan elevado como el que finalmente sucedió. Por ello al departamento de ingeniería eléctrica se le encargó un análisis de calidad energética para comprobar las deficiencias que sufría la universidad que, aun con una casi nula actividad presencial existía un consumo tan alto. A partir de esto se vieron que las máquinas de servicio mantenían su total actividad aún con los aularios cerrados, por ello se empezaron a instalar enchufes inteligentes con los que monitorizar el consumo eléctrico de estas máquinas. El resultado de esta monitorización fue sorprendente, ya que se vio el consumo real que tenían todas las máquinas, que, aunque a priori no es demasiado, hay que contar con que el campus tiene un total de 74 máquinas funcionando todo el día. Por ello se vió interesante la creación de un diseño de una red de control de estas máquinas para la monitorización energética y de uso. En la figura 1.2 se puede apreciar cómo el precio de la electricidad en España se ha disparado a niveles nunca vistos debido a la revalorización del gas natural, los impuestos sobre las emisiones de CO2 [11], [12]. Figura 1.2. Comparación de precios energéticos desde 2010 hasta Febrero de 2022 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 5 1.3. CONTEXTO Actualmente por las consecuencias económico-energéticas ocasionadas por la guerra entre Ucrania y Rusia que están haciendo que día a día se alcancen nuevos records de precios, siendo el día 8 de Marzo el récord actual con 545 euros/MWh y en el tramo horario entre las 19:00 y las 20:00 el precio de 700 euros/MWh como se puede apreciar en la figura 1.3 donde se muestra además el precio de los días 7, 8, 9 y 10 de Marzo para que poder apreciar la gran subida de precios que ha tenido el precio de la electricidad en los puntos más críticos del conflicto Ucraniano-Ruso [13]. Figura 1.3. Precio eléctrico de los días 7, 8, 9 y 10 de Marzo en España y Portugal Como se puede comprobar en la figura 1.3 hay una gran diferencia de precio entre horas, esto es debido al mercado libre de la energía y cómo se fijan los precios de la electricidad. En [12] se puede observar como a las horas donde la energía es más barata hay una reducción de consumo de energía por loque no es necesario activar centrales que no suelen estar en funcionamiento, por lo que el precio máximo de mercado no es tan elevado como en horas pico donde se necesita mucha energía y se recurre a esta técnica que encarece mucho el precio final de la electricidad. Esta variación de precio se puede utilizar para encender y apagar las máquinas expendedoras cuando la universidad se encuentre cerrada como en los fines de semana o a partir de las 21 que cierran todos los aularios y solo se requiera encender la máquina unos cuantos minutos en vez de mantenerla encendida todo el día. Con esta medida se podrá reducir de forma considerable la factura anual eléctrica de la universidad. Los dispositivos IoT se definen como dispositivos habilitados por conexión a internet a recoger, intercambiar datos y ser identificables de forma única [14]. Estos dispositivos son muy utilizados actualmente para la implementación de casas inteligentes así como para la interacción 6 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 1. INTRODUCCIÓN con dispositivos tradicionales. En la figura 1.4 se puede apreciar como la demanda de dispositivos IoT casi se triplica desde las aproximadamente 8740 millones de unidades en 2020 hasta más de 25400 millones en solamente 10 años, por lo que se prevé un gran crecimiento en este sector [15]. Figura 1.4. Previsión de dispositivos IoT conectados a nivel mundial 2019-2030 Este sector se ha visto últimamente muy demandado además para la implementación de ciudades inteligentes, las cuales representan además el 28 % del mercado mundial de IoT [16] seguido por el sector industrial con el 26.4 % como se puede apreciar en la figura 1.5. La intención de este proyecto se centra en estos dos puntos ya que las máquinas de servicio se encuentran en ambos ámbitos. Figura 1.5. Distribución porcentual del mercado mundial de dispositivos IoT en 2019 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 7 1.4. RESUMEN DE RESULTADOS 1.4. Resumen de resultados El resultado fundamental de este trabajo es la implementación de la red de control y la monitorización energética y de uso. Esto se ha probado en la red de la universidad obteniendo todos lo objetivos que se planteaban en un inicio. El sistema de ahorro de energía no se ha podido probar en una aplicación real aún con la implementación de la red realizada debido a que las máquinas no son propiedad de la universidad y se requeriría de un permiso para ejecutarlo. En la aplicación real se tendría muy en cuenta el tipo de máquinas que posee un enchufe u otro debido a que las máquinas de bebidas frías y de café no tienen una gran importancia el conectado y desconectado de las mismas, simplemente con encenderlas unos minutos antes de la apertura de los aularios sería suficiente para mantener el mismo estándar de calidad, pero en las máquinas que tienen comida en su interior no se debe desconectar toda la noche ya que puede hacer que los alimentos se estropeen. La implementación de la red ha resultado funcionar correctamente ya que no se han obte- nido problemas a la hora de la comunicación con las máquinas fuera de la problemática de la sustracción de estos dispositivos en algunas ocasiones. 1.5. Fases de desarrollo y planificación En la elaboración de este trabajo se pueden distinguir las siguientes etapas de desarrollo, indicando también el número de horas empleadas en cada tarea sumando un total de 370 horas. 1. Estudio bibliográfico. En esta etapa se ha investigado acerca de otros trabajos que se han realizado con anterioridad relacionados con smart grids, el protocolo MQTT, el aprendizaje básico de java, el dispositivo openZmeter, el entorno gráfico de Grafana así como de la base de datos PostgreSQL y el aprendizaje básico de los bot de Telegram. En este apartado se han invertido un total de 60 horas. 2. Protocolo MQTT. Para la comunicación entre el usuario y las máquinas expendedoras se ha utilizado el proto- colo MQTT, por lo que este ha sido uno de los pilares fundamentales para la realización de este proyecto. En este apartado se incluye el tiempo que se ha invertido en la comprensión, prueba e implantación de la comunicación durante el transcurso del trabajo así como los expe- rimentos realizados con otros softwares como Home Assistant para la comprobar la correcta implementación del código antes de probar en la red real. En este apartado se han invertido un total de 70 horas. 8 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 1. INTRODUCCIÓN 3. Programación. Este apartado se corresponde al tiempo dedicado en la programación de las distintas apli- caciones realizadas durante el transcurso del proyecto. En primer lugar con la configuración inicial de los enchufes que se han utilizado, la creación de la consola basada en java con el que poder realizar configuraciones de horarios o comprobación de consumo y la programación del bot de Telegram por el cual se tiene la posibilidad de consulta de consumo de máquinas específicas de manera fácil e intuitiva además de recibir las notificaciones de alarmas. En este apartado se han invertido un total de 100 horas. 4. - Análisis y procesamiento de datos. Para la visualización de los datos se ha utilizado la base de datos PostgreSQL, esta es la encargada de almacenar toda la información que envían los enchufes al servidor. A partir de esta se grafican los datos obtenidos a partir del software de código abierto Grafana. En este software se han implementado alarmas para avisar al usuario de posibles fallos o condiciones que puedan dañar a las máquinas por medio de Telegram. En este apartado se han invertido un total de 50 horas. 5. Redacción de la memoria final del trabajo fin de grado. En ella se ampliará la información de cada una de las fases citadas anteriormente. Se cerrará con las conclusiones sobre el estado en que quedan las máquinas de Vending así como una serie de propuestas para futuros trabajos a partir de los resultados obtenidos en este. En este apartado se han invertido un total de 90 horas. A continuación se va a mostrar la planificación temporal a partir de un diagrama de Gantt con el fin de poder visualizar mejor el tiempo invertido en cada una de las partes del proyecto semana por semana. El mes de enero no se dedicó apenas tiempo al trabajo debido al periodo de exámenes, así como el mes de marzo y principios de abril en el que se tuvo que pausar el proyecto debido a la carga de trabajo en la realización de prácticas de empresa y prácticas de otras asignaturas. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 9 1.5. FASES DE DESARROLLO Y PLANIFICACIÓN Tabla 1.1. Planificación temporal mediante diagrama de Gantt 10 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 1. INTRODUCCIÓN 1.6. Competencias empleadas en este proyecto A continuación se listan las competencias que plantea la titulación y se han empleado a lo largo del desarrollo del Trabajo Final de Grado (TFG). En primer lugar se van a mostrar las competencias generales incluidas en el Real Decreto 1393/2007, de 29 de octubre. Poseer y comprender conocimientos (CB1): Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la edu- cación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio. Competencia utilizada en la búsqueda de nuevos conocimientos en los ámbitos utilizados para el TFG. Aplicación de conocimientos (CB2): Que los estudiantes sepan aplicar sus conoci- mientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse pormedio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio. Competencia utilizada en la implementación del código utilizado. Capacidad de emitir juicios (CB3): Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética. Competencia utilizada en la interpretación de las gráficas de consumo obtenidas. Capacidad de comunicar y aptitud social (CB4): Que los estudiantes puedan trans- mitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado. Competencia relacionada con la redacción de la memoria y su posterior defensa. Habilidad para el aprendizaje (CB5): Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía. Competencia utilizada para aprender distintos tipos de protocolos y aplicarlos en el desarrollo de los algoritmos. Las competencias transversales de la UAL utilizadas para la realización de este TFG se trata de las aprobadas en Consejo de Gobierno, de 17 de junio de 2008: Conocimientos básicos de la profesión (UAL1): Conocimiento, habilidades y actitu- des que posibilitan la comprensión de nuevas teorías, interpretaciones, métodos y técnicas dentro de los diferentes campos disciplinares, conducentes a satisfacer de manera ópti- ma las exigencias profesionales. Competencia utilizada para la búsqueda de información complementaria usada en el TFG. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 11 1.6. COMPETENCIAS EMPLEADAS EN ESTE PROYECTO Habilidad en el uso de las TIC (UAL2): Utilizar las Técnicas de Información y Comunicación (TICs) como una herramienta para la expresión y la comunicación, para el acceso a fuentes de información, como medio de archivo de datos y documentos, para tareas de presentación, para el aprendizaje, la investigación y el trabajo cooperativo. Competencia utilizada para la búsqueda de información a través de la página web de la biblioteca de la universidad y otras bases de datos como Scopus o Google Scholar. Capacidad para resolver problemas (UAL3): Capacidad para identificar, analizar, y definir los elementos significativos que constituyen un problema para resolverlo con rigor. Competencia utilizada para afrontar los problemas surgidos como la facilidad del hurto de enchufes. Comunicación oral y escrita en la propia lengua (UAL4): Comprender expresar con claridad y oportunidad las ideas, conocimientos, problemas y soluciones a un público más amplio, especializado o no especializado (y sentimientos a través de la palabra, adaptándose a las características de la situación y la audiencia para lograr su comprensión y adhesión). Competencia utilizada en la redacción de la memoria. Capacidad de crítica y autocrítica (UAL5): Es el comportamiento mental que cues- tiona las cosas y se interesa por los fundamentos en los que se asientan las ideas, acciones y juicios, tanto propios como ajenos. Competencia utilizada en el desarrollo de todo el TFG tanto para el estudio como en la parte de análisis y procesamiento de datos cuestionando los resultados obtenidos. Conocimiento de una segunda lengua (UAL7): Entender y hacerse entender de manera verbal y escrita usando una lengua diferente a la propia. Gran parte de los artículos académicos e información de programación en donde se basan los estudios de este TFG están en ingles por lo tanto es imprescindible comprender este idioma. Compromiso ético (UAL8): Capacidad para pensar y actuar según principios de carácter universal que se basan en el valor de la persona y se dirigen a su pleno desarrollo. Se ha actuado de forma ética en la escritura de la memoria y la realización del trabajo sin hacer plagio. Capacidad para aprender a trabajar de forma autónoma (UAL9): Capacidad para diseñar, gestionar y ejecutar una tarea de forma personal. Competencia utilizada durante el desarrollo del TFG donde se ha desarrollada de forma autónoma la aplicación utilizada. 12 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 1. INTRODUCCIÓN Las competencias especificas referentes al grado en Ingeniería Electrónica Industrial utiliza- das: Conocimiento en materias básicas y tecnológicas (CT3), que les capacite para el aprendizaje de nuevos métodos y teorías, y les dote de versatilidad para adaptarse a nuevas situaciones. Se ha utilizado en el aprendizaje de nuevas disciplinas como en IoT. Capacidad de resolver problemas con iniciativa (CT4), toma de decisiones, crea- tividad, razonamiento crítico y de comunicar y transmitir conocimientos, habilidades y destrezas en el campo de la Ingeniería Industrial. Se ha utilizado en la implementación de algoritmos de los programas. Capacidad de analizar y valorar el impacto social y medioambiental (CT7) de las soluciones técnicas. Se ha utilizado para valorar el impacto medioambiental del consumo desmedido de energía en nuestra sociedad e intentar reducirlo. Capacidad de trabajar en un entorno multilingüe y multidisciplinar (CT10). Gran parte de los materiales utilizados se encuentran en inglés. Conocimientos básicos sobre el uso y programación de los ordenadores (CB3), sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería. Competencia básica utilizada para la programación de la totalidad de TFG. Conocimiento y utilización de los principios de teoría de circuitos y máquinas eléctricas (CRI4). Utilizados para el tratamiento de datos energéticos de las máquinas expendedoras. Conocimiento aplicado de electrotecnia (CTEE1). Utilizado para el conocimiento de la calidad energética de las máquinas. Ejercicio original a realizar individualmente y presentar y defender ante un tribunal universitario (TFG), consistente en un proyecto en el ámbito de las tecnologías específicas de la Ingeniería Industrial de naturaleza profesional en el que se sinteticen e integren las competencias adquiridas en las enseñanzas. Utilizado en la redacción de la memoria y exposición del TFG. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 13 1.7. ESTRUCTURA DEL TFG 1.7. Estructura del TFG El trabajo desarrollado se expone atendiendo a una estructura de seis capítulos. El capítulo uno, el cual concluye con esta sección, trata de posicionar el proyecto realizado e introducir brevemente el contenido ampliado en los posteriores capítulos. El capítulo dos, contextualiza el marco en el que se desarrolla el trabajo realizado en la literatura. En el capítulo tres, se explica la programación de los enchufes y la aplicación desarrollada para la interacción con los mismos. El capítulo cuatro comprende la programación de Telegram junto con la interacción que tiene el usuario con el bot. El capítulo cinco desarrolla el proceso de Grafana en el que se ha realizado la pantalla gráfica de los datos explicando cómo se han hecho las gráficas y las alertas. Se cierra el proyecto con el capítulo seis donde se desarrollan las conclusiones a partir de los resultados finales obtenidos junto con los problemas encontrados en la realización del trabajo y se plantean posibles líneas para la continuación del trabajo desarrollado sobre las máquinas de Vending. 14 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso Capítulo 2 Revisión bibliográfica 2.1. Introducción Actualmente el consumo de energía es cada vez mayor en las instalaciones industriales y edificios públicos, por lo que cada vez más existen investigaciones acerca del consumo y cómo optimizar su uso. Para conseguir esto se está trabajando en la evolución de redes inteligentes donde se busca reducir los costes de generación y explotación de los sistemas eléctricosy emi- siones de hidrocarburos. Para conseguir esto se necesitan medidores de consumo a tiempo real de muchos tipos, uno de ellos podría ser el utilizado en este proyecto, por lo que la investigación de este proyecto podría servir para el futuro de las redes inteligentes. Para realizar este trabajo se ha debido investigar acerca de múltiples conceptos sobre los enchufes inteligentes y la forma de comunicación de los mismos. Estos son los temas de los mismos: 2.2. Java El trabajo se ha programado mayoritariamente en lenguaje Java. Este lenguaje de progra- mación está diseñado para realizar casi cualquier programa y con el paso de los años se está extendiendo en el campo del IoT. Un ejemplo de ello es la cantidad de material de código abier- to que existe en la red para la programación de MQTT en lenguaje Java o la posibilidad de programar aplicaciones externas como Telegram en este lenguaje. Uno de los motivos por los que se eligió Java es su simplicidad a la hora de programar y las facilidades que te ofrece para nuevos usuarios. Además con la base de conocimiento de lenguaje C adquirido en la asignatura de programación hizo que la curva de aprendizaje fuese menor de la esperada. Otra ventaja es la programación orientada a objetos, ya que en este proyecto se iba a nece- sitar utilizar muchas funciones distintas que en otros lenguajes habría hecho de este trabajo un proyecto mas complejo [17]. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 15 2.3. IOT Además el programa intérprete de java utilizado (Netbeans) tiene una inteligencia de compi- lación e interpretación muy avanzada, donde te detecta errores de programación sin la necesidad de compilar el programa y el propio lenguaje te sugiere distintos tipos de soluciones para arreglar el código. Cuando existe un error que el lenguaje no detecta, el programa te dice la línea de código que está fallando y los paquetes que dan error, esto es muy útil para ubicarte y encontrar información al respecto [18]. En programas tan largos como el realizado se ha utilizado otra herramienta llamada Debug Proyect que permite analizar las líneas de código paso a paso para analizar cómo leería el programa las instrucciones utilizadas y los valores de las variables redu- cidas por paquetes, este método fue muy efectivo para encontrar los errores surgidos durante la programación de la aplicación. 2.3. IoT IoT es un término utilizado por primera vez en 1999 por Kevin Ashton y fue difundida gracias al trabajo de Auto-ID Centre, un grupo que investigaba la identificación en red por radiofrecuencias también conocido como radio-frequency identification (RFID). La definición exacta de IoT sigue buscándose, pero existe un acuerdo general en el que IoT relaciona objetos y conectividad [19]. El concepto de IoT se basa en la mezcla de Hardware para conectar elementos digitales a objetos físicos, Data para dar sentido a la información que se obtiene de los objetos, Software para interpretar los datos, analizándolos y permitiendo hacer cosas y Connetivity para conectar todos los dispositivos entre sí para trabajar en conjunto [20]. En [21] se presentan los desafíos de IoT en los próximos años dando como principales desafíos los siguientes puntos: Cooperación global. Modelos de negocio, nuevas tendencias y confianza. Ética, sociedad de control, vigilancia, consentimiento y vida impulsada por los datos. Desafíos tecnológicos. Encontrar el equilibrio perfecto entre un buen diseño y una innovación. Con estos desafíos queda claro que IoT no puede gestionarse con las herramientas políticas y programas de investigación actuales, por lo que se necesita mejorar la tecnología de los dis- positivos ya que esta es fundamental para su aplicación y las herramientas actuales son muy lentas. 16 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 2. REVISIÓN BIBLIOGRÁFICA 2.4. MQTT Como ya se habló en la sección 1.1, el protocolo MQTT se trata de un protocolo de código abierto publicador/subscriptor ampliamente utilizado en IoT. En su inicio se usó para la mínima pérdida de energía y de ancho de banda, además de una fácil implementación, diagnostico de datos y conciencia de sesión continua. En 2008 se introdujeron las redes de sensores inalámbricos del ingles Wireless Sensor Networks (WSNs) [22]. En la actualidad existen varias modificaciones del protocolo MQTT dependiendo de la aplicación que se quiere utilizar, por ejemplo existe MQTT-G en el que se añade geolocalicación a los dispositivos [5]. Un aspecto importante de la transmisión MQTT es la calidad de servicio o del ingles Quality of Services (QoS). En este protocolo existen 3 formas de mandar los mensajes [23]: QoS 0: A lo sumo se envía una vez. En este nivel no se comprueba la recepción de los mensajes por parte del servidor y se envían los mensajes dependiendo del flujo de distri- bución de mensajes. Existe la posibilidad de perdida del mensaje cuando cualquier tipo de pérdida se interponga en el camino. QoS 1: Al menos una vez. En este nivel se asegura de que los mensajes lleguen, pero esto puede ocasionar mensajes duplicados. Esto ocurre cuando el broker no confirma la recepción (PUBACK ) del mensaje o se pierde el mensaje del publicador en el camino. Cuando esto ocurre el publicador sigue enviando el mensaje hasta que recibe al menos una confirmación. QoS 2: Exactamente una vez. En este nivel se asegura que el mensaje llegue una vez, de esta manera se sobrecarga la comunicación pero es la única opción viable cuando la duplicación de los mensajes no es aceptable. Esto lo hace utilizando 4-way handshake Figura 2.1. Funcionamiento visual de QoS A partir de estas explicaciones se puede sacar en claro que cuanto mayor sea la QoS, menor será el rendimiento. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 17 2.4. MQTT En [1] se ha realizado un estudio con la correlación de los mensajes perdidos y el retardo con los distintos niveles QoS en medios por cable e inalámbricos. Figura 2.2. Análisis de red inalámbrica entre % de perdida de mensajes y carga en byte. Fuente [1] Red cableada Red inalámbrica QoS 0 0.771574 0.878897 QoS 1 0.788814 0.884428 QoS 2 0.991416 0.904699 Tabla 2.1. Correlación entre el retardo final-final y la pérdida de mensajes para los niveles de QoS En la tabla 2.1 se resume la relación entre el retardo de final-final y la pérdida de mensajes realizada en [1]. En ella se puede apreciar una gran correlación positiva para cada nivel de QoS. Por lo que aquí se demuestra la gran relación entre la pérdida de mensajes y el retardo final-final. En el caso de una QoS distinta en el cliente subscriptor y en el cliente publicador, el broker transmitirá el mensaje con la calidad de servicio más baja. Si los mensajes enviados por el QoS 1 y 2 se envían a un cliente sin conexión se ponen los mensajes en cola hasta que vuelva a estar disponible. Esta opción es posible si el cliente tiene una sesión persistente, en caso contrario se eliminará la cola. Un parámetro que se utiliza además es el Message persistence, este mensaje de publicación se envía si la calidad de servicio es de al menos una vez, o exactamente 1 vez, QoS 1 y 2. Este parámetro se utiliza para guardar localmente el mensaje publicado y descartarlo una vez se ha garantizado que se ha enviado exactamente una vez o al menos una vez [24]. 18 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 2. REVISIÓN BIBLIOGRÁFICA En una sesión persistente se guarda toda la información relevante para el cliente en el broker. Este se identifica con la Identification (ID) de cliente que se utiliza en cada conexión con el broker. Keep alive se define en MQTT como el intervalo de tiempo máximo que puede transcurrir entre el momento en que un cliente termina un paquete de control y cuando comienza a enviar elsiguiente paquete. Este intervalo es un valor numérico que indica el número de segundos que el cliente puede estar inactivo y seguir considerándose que funciona adecuadamente. Si los brokers no reciben como mínimo un mensaje PINGREQ en el intervalo de tiempo para el keep alive, este terminará la conexión. Los mensajes PINGREQ dentro del intervalo keep alive se mantendrán indefinidamente incluso si no se generan otros mensajes. En una publicación típica de MQTT se envía la información del nombre del Topic, QoS, la persistencia (si tiene), el contenido, la sesión de cliente, y la dirección del broker al que conecta. A partir de esta información el broker es el responsable de entregar la información correspondiente a los dispositivos. En el protocolo se pueden utilizar mecanismos de autenticación utilizando un usuario y una contraseña. Por lo que para acceder al dispositivo, el publicador tiene que enviar estos parámetros para conectar con el dispositivo. Inicialmente los mensajes no son encriptados, pero existe la posibilidad de encriptarlos por medio de Transport Layer Security (TLS), cuando se añade esta capa se llama “secure-mqtt” y se ha reservado el puerto 8883 exclusivamente para las aplicaciones con esta encriptación [25]. La utilización de este encriptado supone un mayor tiempo en conectar con el broker espe- cialmente para grandes paquetes con muchas perdidas. Utilizando este protocolo tampoco se consume mucha más energía que sin utilizarlo, algo que en otros protocolos de seguridad si pasaría y sin embargo, la eficiencia energética aumenta con una mayor carga útil de mensajes y se beneficia del modo reposo. Cuando se ha probado la eficiencia energética con pérdidas de paquetes, se encuentra que con TLS se disminuye la eficiencia energética. Además no se muestra una relación idéntica entre eficiencia energética y el rendimiento que sea válida para todos los niveles de QoS y las pérdidas de paquetes [26]. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 19 2.5. OPENZMETER 2.5. OpenZmeter En la comunicación MQTT se utiliza un broker para conectar a los dispositivos con los usuarios, en este proyecto se usó el openZmeter (oZm), un medidor inteligente de energía y analizador de calidad de la energía. La dirección Internet Protocol (IP) del broker está en el sistema de nombres de dominio o en ingles Domain Name System (DNS) con el siguiente nombre mqtt.openzmeter.com. A partir de este dominio se podrá interactuar con los dispositivos en todo momento sin la necesidad de estar conectado a la misma red Wi-Fi, esta es una gran ventaja ya que no se depende de conexiones Virtual Private Network (VPN). Además, usando este broker no se depende de un Software de compañías externas donde nunca se sabe a ciencia cierta la privacidad de nuestros datos, un punto muy importante a día de hoy. En su lugar el medidor es creado a partir de la colaboración entre la UAL y la Universidad de Granada (UGR) con Hardware y Software de código abierto [27]. Tradicionalmente los analizadores de calidad de energía son muy caros y difíciles de entender para usuarios no cualificados. Por ello se creó OpenZmeter (oZm) con una tecnología de código abierto que ayude a los usuarios a entender como interactuar con los parámetros eléctricos. Para ello se utiliza un Control Supervisor y Adquisición de Datos (SCADA). Este proyecto se llevó a cabo a partir de la necesidad de la implementación de redes inteligentes capaces de tratar diferentes fuentes de energía de forma eficiente y descentralizada [28]. La medición inteligente o un sistema de medición inteligente se define como “un sistema elec- trónico que puede medir el consumo de energía, proporcionando más información que un conta- dor convencional, y que puede transmitir y recibir datos utilizando una forma de comunicación electrónic”. Esta definición fue establecida por el Parlamento Europeo en su 2012/27/CE [29]. La aplicación de la directiva de eficiencia energética se puede encontrar en [30]. Este analizador de red puede medir los siguientes parámetros: voltaje, corriente, armónicos, fase, factor de potencia, Total harmonic distortion (THD), fasores, etc. Además tiene estándares internacionales como el IEC 62052 y garantiza errores de medición muy bajos y la posibilidad de interacción mediante Telegram. [31]. Por todas estas características descritas se ha decidido utilizar este aparato como el broker de la comunicación MQTT. 20 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 2. REVISIÓN BIBLIOGRÁFICA 2.6. Grafana Grafana es un software de visualización y panel de control interactivo con múltiples funciones. Admite más de 30 fuentes de datos de código abierto entre ellas las más destacadas son: MySQL, PostgreSQL, Graphite, Elasticsearch, OpenTSDB, Prometheus y InfluxDB [32]. Con estas bases de datos se puede profundizar en grandes volúmenes de datos operativos en tiempo real, en los que se puede visualizar, consultar, establecer alertas y obtener información de las medidas obtenidas. Para la visualización proporciona diversos widgets como series de tiempo, tablas o campos de texto para métricas individuales. En este software se dispone de gráficos elegantes para visualizar los datos con opciones tan útiles como zoom, refresco automático o rangos predefinidos de uso frecuente. Dispone de paneles dinámicos y reutilizables, es muy extensible, por lo que se pueden utilizar muchos paneles y complementos disponibles en la biblioteca oficial. Estas gráficas pueden ser compartidos vía Uniform Resource Locator (URL), por lo que es una forma muy cómoda de poder acceder a los datos. Utilizando la URL los datos se actualizan automáticamente con los cambios [33]. Grafana se puede instalar en muchos dispositivos, en el proyecto se ha implementado en el servidor que se está utilizando como broker. Para la utilización de Grafana se ha utilizado el sistema de gestión de bases de datos llamado PostgreSQL. En esta base de datos se almacena toda la información que se envía al servidor, como los datos de consumo de los dispositivos. PostgreSQL utiliza un modelo cliente/servidor como MQTT y usa multiprocesos en lugar de multihilos para garantizar la estabilidad del sistema donde en un caso de fallo en un proceso no hará que se pare todo el sistema [34]. Este sistema es de código abierto, dando una ventaja muy grande frente a otras bases de datos. Además es bastante rápida en la transmisión de datos de un almacenamiento relativamente grande. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 21 2.6. GRAFANA 22 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso Capítulo 3 Programación 3.1. Introducción de los enchufes Para el proyecto se han utilizado los enchufes Tasmota EU Plug V2. Estos dispositivos tienen las siguientes características: Voltaje de entrada: 100-240 VAC 50/60 Hz Corriente: 16 A (Máximo) Potencia: 2200 W Dimensiones: 51x51x85 mm Estándar: Eu/Fr Estándar inalámbrico: Institute of Electrical and Electronics Engineers (IEEE)802.11b/g/n,2.4 GHz Color: blanco Temperatura de operación: -20◦C hasta 50◦C Material: Acrylonitrile Butadiene Styrene (ABS) con Personal Computer (PC) Ratio de protección contra el fuego: 94-v0 Peso: 80 g Estas características satisfacen las necesidades generales requeridas para la aplicación. El enchufe físicamente se muestra en la figura 3.1, este dispositivo como se puede apre- ciar es un poco más ancho que el enchufe tradicional empotrado en la pared, por ello para la implementación del mismo en algunos casos se ha necesitado utilizar un alargador. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 23 3.1. INTRODUCCIÓN DE LOS ENCHUFES Figura 3.1. Enchufe Tasmota EU Plug V2 físico Acerca de los errores de medida, el errordel parámetro de energía activa es del 0.2 %, el error de la corriente es de 0.5 % y el error del voltaje es del 0.5 %. (a) Menú principal (b) Configuración Figura 3.2. Pantallas principales de Tasmota EU Plug V2 24 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 3. PROGRAMACIÓN Estos dispositivos son compatibles con el servidor oficial Tasmota Over-the-air (OTA), están configurados para mostrar las pantallas mostradas en la figura 3.2, se ha grabado el sistema operativo antes de montarlo, por lo que no se necesita instalar ningún software adicional para su utilización y está basado por el microcontrolador ESP8266 con 2MB de memoria grabados. El control se puede realizar en MQTT, Web User Interface (UI), HTTP o por serie. Como se ve en la figura 3.2(a), los valores que este enchufe va a medir serán: voltaje, corriente, potencia, potencia aparente, potencia reactiva, factor de potencia, energía total, energía hoy, energía ayer y energía total. Con estos parámetros se va a realizar el control de consumo de las máquinas. El menú principal ofrece al usuario el control remoto del estado del enchufe. Con el botón toggle se cambia el estado del enchufe. Para realizar los comando del dispositivo se debe utilizar el apartado Console. En este apartado se mandarán los comandos al dispositivo por medio de HTTP. Con estos comandos se pueden cambiar las acciones del enchufe. Los comandos disponibles se encuentran en: comandos tasmota. Estos comandos son los que se usarán en la aplicación pero en vez de escribirlos en la pantalla Console se mandarán mediante MQTT. Cuando se pulsa el botón de Configuration se abre el menú de la figura 3.2 (b). En este menú se acceden a todas las configuraciones que tiene el dispositivo. Las más importantes a la hora de utilizar el protocolo de comunicación son los apartados de Module, Wi-Fi, MQTT y Other. En de cada apartado se deben configurar distintos parámetros como el modelo del dispositivo, configurar la red Wi-Fi, añadir la dirección del host/broker al que el dispositivo se va a conectar, el puerto de comunicación, el nombre del topic y opcionalmente un usuario y contraseña para añadir seguridad a la hora de conectar el dispositivo. Adicionalmente se le puede cambiar el nombre al dispositivo, en el caso de la figura 3.2, el nombre elegido fue enchufe. Otra característica del dispositivo es que tiene 2 códigos de colores: azul cuando está apagado y rojo cuando está encendido. La diferencia entre estar conectado a una red Wi-Fi y no es que los colores de los botones parpadean cuando no están conectados y son fijos cuando están conectados. 3.2. Programación de enchufes Todos estos parámetros se pueden configurar uno a uno, pero esto requeriría mucho tiempo, por lo que se decidió crear un script en Javascript para configurar automáticamente los enchufes y no perder tanto tiempo en configurarlos manualmente. Para ello se utilizó la aplicación Node.js, con ella se implementó el código a los dispositivos mediante el archivo mostrado en el anexo A en el código A.1. En esta configuración, la variable Slave es el dispositivo con la dirección IP 192.268.4.1 ya que es la dirección que tienen todos los dispositivos por defecto. A todos los enchufes se les implementó el comando Teleperiod, 300. Este comando se utiliza para que el enchufe envié sus datos de consumo al broker cada 300 segundos. Al inicio del proyecto este tiempo era cada 5 segundos, pero se vió con el paso del tiempo que con tantos datos no se Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 25 https://tasmota.github.io/docs/Commands/ 3.2. PROGRAMACIÓN DE ENCHUFES adquiría una mejora notable de los parámetros importantes y al haber tantos datos las gráficas que se generaban tardaban bastante tiempo en cargarse por la cantidad de datos que acumulaban a lo largo del tiempo. En un inicio no se había utilizado usuario y contraseña para añadir seguridad a los dispositi- vos, pero estos se podrían introducir fácilmente. Además se ha censurado la red y la contraseña de la misma por seguridad. Una vez configurados los enchufes no se podían acceder a ellos de forma remota por conexión Wi-Fi, la única manera de conectarse era con MQTT a partir del servidor ya que la red a la que están conectados está oculta se implementó un cortafuegos para evitar que otros usuarios puedan conectarse por medio de la IP. Por ello para añadir nuevas configuraciones se debía enviar por la consola de la aplicación (que en un inicio no se había programado) o por la aplicación MQTT Explorer. Esta aplicación permite ver el tráfico de mensajes que existe en la red creada. Los dispositivos se ordenan en pestañas y cada una de ellas tiene los nombres de los dispositivos. Cuando se selecciona un dispositivo te muestra el estado en el que se encuentra, la configuración que tiene actualmente y los parámetros de medición obtenidos. Figura 3.3. Menú MQTT Explorer Además, como se puede apreciar en la figura 3.3 se puede acceder a un historial del dis- positivo con el que se pueden comparar los parámetros y las configuraciones con los obtenidos anteriormente. También se pueden publicar mensajes, con esta opción se pueden añadir nuevas configuraciones a los dispositivos una vez implementados en la red. En un inicio se utilizó para cambiar el tiempo de muestreo de los enchufes ya instalados, así como el nombre de los dispositi- vos, poniendo Vending al inicio del Topic. El cambio de nombre perseguía poder distinguir a los enchufes utilizados para el control energéticos de las máquinas de servicio con otros dispositivos conectados a la red. 26 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 3. PROGRAMACIÓN El envío de mensajes se puede implementar de 3 formas: Por RAW Por XML Por JSON Para cada forma existe un formato de envío diferente, pero principalmente se utilizó el formato JavaScript Object Notation (JSON ) ya que es el encapsulado de mensajes que más se ha estudiado para la realización del TFG. RAW es un formato en crudo/bruto, es decir, un formato de texto no legible por humanos, este formato es útil para enviar mensajes puntuales si se sabe la estructura del comando, pero es muy poco utilizado en general por la superioridad de los otros dos envíos de mensajes posibles. Aún así se ha utilizado este comando para cambiar los nombres de los dispositivos de la siguiente forma: Figura 3.4. Configuración para cambiar los nombres de los enchufes a partir de MQTT Explorer Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 27 3.2. PROGRAMACIÓN DE ENCHUFES Extensible Markup Language (XML) es un subconjunto del Lenguaje de Marcado Generali- zado Estándar conocido en ingles como Standard Generalized Markup Language (SGML) pero con una implementación más sencilla. Este lenguaje tiene por consideraciones fundamentales la simplicidad y legibilidad humana [35]. Los principales usos son las llamadas a procedimientos remotos por su nombre en ingles Remote Procedure Call (RPC) y la serialización de objetos para la transferencia de datos entre aplicaciones [36]. Una forma de formato XML es la siguiente: <?xml ve r s i on ="1.0" encoding="UTF−8" ?> <root> <Time>1970−01−21T08:41:21 </Time> <ENERGY> <TotalStartTime >1970−01−01T00:00:00 </ TotalStartTime> <Total >1219.992</ Total> <Yesterday >0</Yesterday> <Today>1219.992</Today> <Period >33</Period> <Power>118</Power> <ApparentPower>118</ApparentPower> <ReactivePower >0</ReactivePower> <Factor >1</Factor> <Voltage >233.8</Voltage> <Current >0.5</Current> </ENERGY> </root> JSON es un lenguaje de intercambio de datos legible para los humanos y fácil de analizar y utilizar para los ordenadores. JSON está soportado por JavaScript. Este lenguaje se estuma que se analiza hasta 100 veces más rápido que XML en los navegadores modernos. A pesar de ser estauna gran ventaja tiene algunos inconvenientes como la falta de soporte de espacios de nombres, la falta de validación de entradas y los inconvenientes de la extensibilidad [36]. El lenguaje que utilizan los enchufes para enviar mensajes al cliente son en este lenguaje, por lo que se ha trabajado con JSON para la recepción y el tratamiento de datos. { "Time " : "1970−01−21T08 : 4 1 : 2 1 " , "ENERGY" : { " TotalStartTime " : "1970−01−01T00 : 0 0 : 0 0 " , " Total " : " 1219 . 992 " , " Yesterday " : " 0 " , " Today " : " 1219 . 992 " , " Period " : " 33 " , 28 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 3. PROGRAMACIÓN " Power " : " 118 " , " ApparentPower " : " 118 " , " ReactivePower " : " 0 " , " Factor " : " 1 " , " Voltage " : " 2 3 3 . 8 " , " Current " : " 0 . 5 " } } Para la comunicación se puede seleccionar la QoS que se desee pero cuando se ha utilizado este parámetro se ha seleccionado la opción de exactamente una vez para tener seguridad de que el dispositivo recibe el mensaje y no varios, ya que por ejemplo en el cambio de nombre, al recibir el comando, si cambia de nombre y se reenvía el mensaje, el broker no encontraría al dispositivo debido a que se ha cambiado ya el Topic del dispositivo. Además con esta aplicación se pueden ver las estadísticas de la cantidad de mensajes que se han enviado. 3.3. Ubicación de los enchufes Una vez configurados todos los enchufes se instalaron en las máquinas expendedoras repar- tidas en el campus. En el siguiente mapa se enseñarán los lugares donde están instalados los enchufes: Figura 3.5. Mapa de la UAL Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 29 3.3. UBICACIÓN DE LOS ENCHUFES (a) Detalle de la parte izquierda (b) Detalle de la parte derecha Figura 3.6. Mapa detallado de la ubicación de los enchufes en la UAL 30 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 3. PROGRAMACIÓN B EB ID A S C A LI EN T ES B EB ID A S FR ÍA S PR O D U C T O S SÓ LI D O S A U LA R IO I 2 3 2 A U LA R IO II 2 2 2 A U LA R IO II I 1 2 1 A U LA R IO IV 2 2 1 B IB LI O T EC A 2 3 2 B IB LI O T EC A Sa la an ex a a 24 h 2 2 2 C IT E I. Q U ÍM IC A S 1 1 1 C IT E II .A G R Ó N O M O S. FA SE A 1 1 1 C IT E II .A G R Ó N O M O S. FA SE B 1 1 1 C IT E II I. M AT EM ÁT IC A S E IN FO R M ÁT IC A 1 1 1 C IT IC 1ª FA SE 1 1 1 D ER EC H O 1 1 1 EC O N Ó M IC A S 1 1 1 H U M A N ID A D ES I 1 1 1 PA B EL LÓ N D E D EP O RT ES 1 1 C EN T R O D EP O RT IV O 1 1 1 N EU R O C IE N C IA S Y C C .S A LU D 1 1 1 PO LI T ÉC N IC A SU PE R IO R 1 1 1 PA R A N IN FO Y ED IF IC IO de G ob ie rn o 1 1 1 C A M PO D E FÚ T B O L 1 N úm er o To ta l 24 27 23 Tabla 3.1. Cantidad de máquinas por aulario Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 31 3.4. PROGRAMACIÓN EN JAVA En la figura 3.6 (a) y (b) se pueden distinguir los tipos de máquinas ubicados en cada edificio identificado por un número que donde se puede comprobar su significado en la figura 3.5. Los círculos naranja corresponden con las máquinas bebidas frías, los triángulos verdes con las máquinas de café y los cuadrados morados con las máquinas de refrigerados. En la tabla 3.1 se realizó un resumen de cantidades para tener una mayor facilidad de ubicaciones de las máquinas y la cantidad de las mismas. 3.4. Programación en Java Una vez realizada la instalación de todas los enchufes se procedió a la implementación de la aplicación en Java. Para ello se utilizó el programa NetBeans. En un inicio se realizaron los programas para publicar comandos sencillos como el encendido y apagado de los enchufes. Para comenzar las pruebas se utilizó un enchufe sin conectar la red Wi-Fi de las máquinas. Esto se hizo para poder probar el enchufe en otros lugares diferentes a la universidad. Con este enchufe se utilizó un broker distinto para aprender distintas formas de implemen- tar el código sin la necesidad del servidor oZm. El broker elegido fue el Software de código abierto Home Assistant, para su implementación se utilizó una máquina virtual, pero se podría implementar con una Raspberry Pi el mismo Software. Home Assistant es un software gratuito que permite la automatización y control de disposi- tivos. Es de código abierto por lo que se puede programar dentro de la propia aplicación, es un software local, por lo que no requiere de conexión a internet y las peticiones se realizan dentro de la propia red o infraestructura. Utilizar esta alternativa abre una puerta a la implementación de este proyecto a un precio más económico con aplicaciones VPN para conectar con los dispositivos sin estar conectados a la conexión Wi-Fi de los enchufes. Una vez probados los comandos y su buen funcionamiento se implementaron los códigos para empezar a realizar la aplicación. La primera implementación de código fue para publicar mensajes. El código está referido en el anexo A, más específicamente el código se encuentra en A.2. En este primer publicador de mensajes se probaron las acciones de encender y apagar en- chufes. Las acciones que se realizaron se comprobaron en el menú de consola del propio enchufe. En la figura 3.7 se puede ver como realizando el programa de encender el enchufe se obtiene la respuesta: stat/tasmota_6E61A1/RESULT = {“POWER” : “ON ”} esta notación es una información muy útil debido a que es cómo el dispositivo envía los datos al broker, por lo que, cuando realicemos el programa de escucha deberemos especificar lo que debemos escuchar. Una vez comprobado que estos comandos funcionaban se probó con los comandos energéticos. Estos son los parámetros que te devuelven los valores de potencia, tensión, intensidad, etc. 32 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 3. PROGRAMACIÓN Figura 3.7. Menú de consola del enchufe En este caso se usará el comando Status número 10 ya que con este comando se verán los valores energéticos. Como resumen se pondrán las especificaciones de cada valor de Status ya que se consideran uno de los parámetros que más información puede aportar el enchufe. 0: muestra toda la información del 1 al 11. 1: muestra los parámetros informativos del dispositivo. 2: muestra la información del firmware. 3: muestra información de registro y telemetría. 4: muestra información de la memoria. 5: muestra información de red. 6: muestra información de MQTT. 7: muestra información del sensor. 8: muestra información del sensor conectado. 9: muestra los umbrales de potencia. 10: muestra información del sensor sustituyendo al 8. 11: muestra información acerca de Teleperiod. 12: en caso de fallo, vuelca la pila de llamadas guardada en la memoria de RT. Cuando se terminó de probar los parámetros energéticos del tasmota se implementó la publi- cación de los temporizadores. Estos se utilizan para añadir un horario de encendido o apagado de dispositivos. Este temporizador se programa con el formato JSON y tiene los siguientes parámetros: Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 33 3.4. PROGRAMACIÓN EN JAVA Habilitación • 0 = desarmar o deshabilitar el temporizador. • 1 = armar o habilitar el temporizador. Modo • 0 = utilizar la hora de reloj. • 1 = utiliza la hora local de salida del sol utilizando la longitud, la latitud y el desfase horario. • 2 = utiliza la hora local de la puesta de sol utilizando la longitud, la latitud y el desfase horario. Hora • formato hh:MM entre 0 a 23 hh y 0 a 59 MM. • formato -hh:MM entre -11 a 12 hh y 0 a 59 MM. Este tramo horario se utiliza cuando se usa el modo 1 y 2. Pestaña • entre 0 y 15. Seutiliza para añadir o restar un número aleatorio de minutos a la hora. Días • Se utiliza SMTWTFS para asignar días de la semana empezando por el domingo y terminando por sábado. Cuando se quiere deshabilitar un día se utiliza un 0 o - en el lugar de la letra correspondiente. Repetición • 0 = si no se quiere repetir la temporización. • 1 = si se quiere repetir la temporización. Temporizador • 1 al 16 se puede elegir la temporización que se quiere grabar. Esto se utiliza para no sobrescribir temporizaciones que se tienen programadas en el dispositivo. Acción • 0 = Apagar el dispositivo. • 1 = Encender el dispositivo. • 0 = Cambiar el estado del dispositivo. • 0 = Hacer parpadear el dispositivo. 34 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 3. PROGRAMACIÓN Una vez realizado estos comandos y verificando su buena implementación se empezó a realizar el programa de subscripción. Este programa se utiliza para escuchar los mensajes que recibe el servidor. Con esto se podrá ver si se han implementado bien los comandos realizados en la publicación, así como se podrán recibir los valores energéticos de las máquinas. La programación se realizará en subscripción asíncrona. En esta forma la aplicación cliente se ejecuta en varios hilos. El programa principal llama a las funciones de la biblioteca del cliente para publicar y subscribirse, igual que en el modo síncrono. Sin embargo, el procesamiento del handshaking y el mantenimiento de la conexión de red se realiza en segundo plano. Esto significa que cuando se envía un mensaje esperando una respuesta la subscripción síncrona se bloquea hasta recibir una respuesta mientras que la subscripción asíncrona no espera una respuesta inmediata, por lo que no se bloquea esperando una respuesta. Puede haber una respuesta o no, pero el emisor llevará a cabo el resto de sus tareas restantes. En el anexo A se encontrará la programación de ambos métodos explicados cada uno. La subscripción síncrona se encuentra en el código A.3 y el código de la subscripción asíncrona se encuentra en A.4. Una vez hecho estos programas se realizó el inicio de la aplicación en JFrame Form. Esta es una clase que utiliza la biblioteca gráfica de Java. El formulario es una ventana de entrada de da- tos. Estos datos se ponen en forma de botones, etiquetas, tablas, etc. Estas herramientas gráficas son una herramienta muy útil para usuarios poco experimentados para la programación como podría ser un posible cliente que quisiera realizar un proyecto parecido en otras instalaciones. Figura 3.8. Interfaz gráfica JFrame Form Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 35 3.4. PROGRAMACIÓN EN JAVA Como se puede ver en la figura 3.8, se tiene una interfaz amigable en la que no se tiene ningún tecnicismo dificultoso para una persona inexperimentada en la programación. Para realizar la programación de los JFrame se debe seleccionar la pestaña Source. En ella se encontrará toda la programación necesaria para que la pantalla gráfica realice los procesos correspondientes. A la derecha de la figura 3.8 se encuentran los elementos que se pueden añadir al JFrame. En esta aplicación se han utilizado: JPanel, JScrollPanel, Jbutton, JLabel, JcheckBox, JComboBox, JList y JTable. Para realizar esta aplicación se empezó por realizar un botón que cada vez que se pulsase mostrase por pantalla todos los dispositivos conectados actualmente. Una vez mostrados los dispositivos se realizó la programación de un botón con el que se podrán seleccionar cada uno de ellos para poder realizar la acciones de ver su energía consumida. Estos valores se guardarán en formato JSON y se mostrarán en pantalla en la ventana tab 2. Estos datos están guardados en una tabla que genera los datos de consumo de cada uno de los dispositivos seleccionados. Figura 3.9. Consumo eléctrico de un dispositivo Por último se realizó un menú para programar la temporización de los enchufes. En este caso se deben seleccionar las opciones de configuración “Número de Timer”, “Añadir horario”, “Acción” y “Añadir días” antes de pulsar “Seleccionar tasmotas”. Figura 3.10. Interfaz cambio horario de dispositivos 36 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso CAPÍTULO 3. PROGRAMACIÓN Una vez hecho esto, se creó una interfaz de usuario para permitir el acceso a la consola a los usuarios autorizados. Esto se ha realizado a partir de un nuevo JFrame en el que se han introducido dos campos a rellenar, uno de usuario y otro de contraseña. Estos campos se han de añadir correctamente para poder acceder a la pantalla de consola. Cuando funcione la aplicación se tendrá la siguiente pantalla. Figura 3.11. Interfaz login Esta interfaz se realizó eliminando el símbolo de java con el que minimizar la pantalla para crear un aspecto más profesional a la aplicación. También se ha añadido la opción de volver a dejar por defecto las indicaciones Ingrese su nombre de usuario y ****** si se selecciona alguno de estos campos y no se escribe nada. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 37 3.4. PROGRAMACIÓN EN JAVA 38 Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso Capítulo 4 Telegram 4.1. Bot de Telegram Con el objetivo de la utilización de la aplicación de forma cómoda se ha configurado un bot de Telegram. Este bot dispone de muchas ventajas respecto a una aplicación convencional. Por ejemplo se tiene una comunicación a tiempo completo y sin tiempos de espera por intermediarios. También contiene un control de usuarios, debido a que el bot es público para todo el mundo se ha programado para dar acceso solo a los usuarios que disponen de acceso. Además tiene un registro de acceso de los usuarios que lo han utilizado, siendo esta información importante para ver la actividad de los usuarios con el bot. Para ello se ha utilizado el Gestor de bots oficial de Telegram BotFather para crear el bot utilizado en la aplicación. Cuando se crea este bot se pide un nombre y al guardarlo se genera automáticamente un token. Este se usará para conectar la aplicación en java con Telegram y más tarde para poder emparejarlo con las alertas de Grafana. Con el bot creado se decidió utilizar la dependencia de un usuario de github llamado pengrad que mediante java creó las librerías que se utilizaron en la aplicación [37]. Las dependencias utilizadas son las siguientes: groupId = com.github.pengrad artifactId = java-telegram-bot-api version = 6.0.1 El primer paso es crear un proyecto con el que se pueda interactuar con el bot mediante java. Para ello primero se realizó un programa de prueba para comprobar la emisión y la recepción de mensajes junto con las configuraciones de botones y teclados. Diseño e implementación de una red de control de máquinas de Vending, monitorización energética y de uso 39 https://t.me/botfather 4.1. BOT DE TELEGRAM Para ello se utilizaron los códigos mostrados en el anexo A en el código A.5. La idea de crear el bot fue para la utilización de la aplicación mediante botones una vez se ha mandado un mensaje especifico. En la aplicación este mensaje será \start. Tras este mensaje se ofrecerán al usuario dos opciones: Cambiar temporización de dispositivos y Ver energía consumida. Figura 4.1. Inicio de la interacción con Telegram El primer botón se utiliza para asignar horarios de encendido y apagado a las horas que el usuario decida y el segundo botón se utiliza para ver el consumo de energía en términos de potencia, factor de potencia, tensión e intensidad. Existe un tercer botón que se utiliza para cancelar las operaciones que se estén realizando, cuando se pulsa este botón no se ejecutarán los comandos que se hayan elegido. Esto se ha implementado por si no se desea continuar con la acción que se esté ejecutando
Compartir