Logo Studenta

ZAPATA CASTILLO, DAVID

¡Este material tiene más páginas!

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

Continuar navegando