Referencia
Referencia
Trabajo de grado presentado como requisito parcial para optar al tı́tulo de:
Pregrado de Ingenierı́a Electrónica
Director(a):
Ing. Diego Méndez Chaves, Ph.D
Énfasis de Profundización:
Energı́as y Control
Pontificia Universidad Javeriana
Facultad de Ingenierı́a - Proyecto de Grado en Ingenierı́a Electrónica
Bogotá D.C., Colombia
2021
(Dedicatoria)
Nos gustarı́a agradecer en estas lı́neas la ayuda que muchas personas y colegas nos prestaron
durante el proceso de investigación y redacción de este trabajo. En primer lugar, quisiéra-
mos agradecer a nuestros padres y familias por su constante ayuda y apoyo. También a
nuestro director, Diego Méndez, por habernos guiado y orientado con excelencia en todos
los momentos.
Ası́ mismo, deseamos expresar reconocimiento al Centro de Excelencia y Apropiación del
Internet de las Cosas (CEA-IoT) y al comité central del mismo por todas las atenciones e
información brindada a lo largo de este proyecto de grado.
A todos nuestros amigos, compañeros y futuros colegas que nos brindaron apoyo de una
manera desinteresada, gracias infinitas por toda su buena actitud y voluntad.
A la Pontificia Universidad Javeriana por ser nuestro hogar en todo el proceso llevado en
estos años.
v
Resumen
Abstract
Although projects have been carried out in Bogota around environmental pollution there are
still few platforms that allow to know the different concentrations of pollutants graphically
as well as the air quality index (AQI); it is for this reason that a cloud platform is develo-
ped whose objective is to provide services such as analysis, monitoring and visualization of
data obtained from different IoT devices in Bogota, through spatial interpolation maps and
a system of alarms through registration so that users can be notified in case the pollution
exceeds the established limits and begins to harmful.
A spatial inference method known as kriging was used and a total of 4 programming lan-
guages (HTML5, CSS3, JavaScript y PHP) were integrated to achieve a total deployment
including modules such as alarm, visualization, interpolation and registration. Through the
results and graphs obtained it is possible to demonstrate the functionality of the system and
the effectiveness of the information visualization.
Keywords: AQI, IoT, Platform, Monitoring, Visualization, Kriging.
Contenido
Agradecimientos IV
Resumen V
1 Introducción 2
1.1 Problemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Objetivos Especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Sistema 8
3.1 Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Diagrama de Bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1 Recepción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 Almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.3 Tratamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.4 Despliegue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4 Desarrollos 11
4.1 Recepción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.1 IoT Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.2 Streaming Analytics Job . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Tratamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.1 Módulo de Registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.2 Módulo de Interpolación espacial . . . . . . . . . . . . . . . . . . . . 14
4.3.3 Módulo de Visualización . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3.4 Módulo de Alarma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.4 Contaminantes que Generan Mayor Afectación al ICA . . . . . . . . . . . . . 17
4.5 Cálculo del Índice de la Calidad del Aire . . . . . . . . . . . . . . . . . . . . 19
Contenido vii
Bibliografı́a 35
Este proyecto presenta una herramienta útil para la ciudadanı́a y la industria colombiana,
ya que la plataforma permite analizar y comprender la calidad del aire en Bogotá D.C; todo
esto dentro del marco de los lı́mites establecidos por las organizaciones de control teniendo
en cuenta el tiempo de exposición de cada uno contaminantes contemplados en el ICA con
el propósito fundamental de reducir riesgos y poder tomar decisiones que mejoren la calidad
de vida de la población.
1.1. Problemática
Actualmente el proyecto de CEA - IoT para la polución del aire cuenta con PIMA, la cual
es una herramienta básica de visualización de datos en dashboards que lamentablemente
no se encuentra activa, de tal forma que se debe desarrollar una propuesta útil para la
gestión de la información adquirida por los dispositivos IoT en los diferentes puntos de
interés. Adicionalmente, existen varios puntos de mejora en el análisis estadı́stico, la correcta
visualización y el seguimiento de los ı́ndices de calidad del aire. En resumen, es fundamental
representar el ICA con sus principales actores contaminantes en la ciudad de Bogotá de tal
forma que se superen las limitaciones presentes en interpretación y análisis de datos.
1.2 Objetivos 3
1.2. Objetivos
1. Identificar cuáles son las variables que generan mayor afectación en el ı́ndice de calidad
del aire en Bogotá.
2. Visualizar datos obtenidos sobre la calidad del aire provenientes de diferentes disposi-
tivos IoT en Bogotá.
3. Implementar un módulo para la interpolación espacial el cual permita visualizar mapas
de calor de la polución en diferentes zonas de Bogotá.
4. Crear un módulo de alertas basada en el análisis del Índice de Calidad del Aire que
permita suscribir usuarios para poder notificarles.
5. Validar el funcionamiento de los módulos integrados al sistema PIMA.
6. Desarrollar documentación del sistema PIMA.
2 Estado del arte
Se encontraron algunos proyectos que presentan cierto nivel de afinidad con la temática del
proyecto que se está desarrollando.
Se parte de un proyecto que busca tener impacto sobre la creciente problemática ambiental
y la búsqueda de la mejora en los pronósticos de la calidad del aire. Este proyecto llamado
Air Quality Index and Air Pollutant concentration Prediction Based on Machi-
ne learning Algorithms [3] está basado en inteligencia artificial, busca medir el ı́ndice de
calidad del aire (ICA) en Beijing, se utilizaron y evaluaron algunos modelos de ML como:
Support Vector Machine (SVM) y Random Forest Regression (RFR). Para determinar el
valor del ICA en cada punto de la ciudad se implementaron matrices de correlación. Este
proyecto desarrolla un modelo de predicción y de aprendizaje automático con base a la gran
cantidad de datos obtenidos en la ciudad.
Teniendo en cuenta que en los últimos años se han dado grandes avances en la industriali-
zación y la urbanización, la contaminación del aire se ha visto fuertemente incrementada a
la par que muchos problemas respiratorios. Es por este motivo principalmente que nace el
proyecto An Azure Access Early Warning system for Air Quality Index Deterio-
rating [5] en el cual se plantea un sistema de alerta del ı́ndice de calidad del aire (ICA); la
propuesta integra modelos de predicción de Machine Learning como: Regresión de bosque
de decisiones (DFR), Regresión de red neuronal (NNR) y Regresión lineal (LR). El objetivo
de integrar dichos modelos es principalmente conocer el mejor algoritmo para calcular el
ICA para los 6 contaminantes y ası́ poder monitorear la calidad del aire en tiempo real.
El proyecto presenta una propuesta que implementa un sistema de alerta integrado por los
servicios de Azure donde se proporcione al usuario una interfaz de mapa de distribución de
los contaminantes en el aire.
Con la intención de generar una interfaz de visualización a través de la cual poder obtener
información de utilidad respecto a la calidad del aire surge un proyecto llamado AirEx-
plorer: Visual Exploration of Air Quality Data Based on Time-Series Querying
[6]; este desarrollo fue realizado bajo el método de análisis RadViz el cual está enfocado en
evidenciar las variaciones de la calidad del aire en diferentes épocas de año donde se tie-
5
nen en cuenta 4 grandes pilares o variables dados por: La exploración global, la exploración
profunda de los patrones de calidad del aire, la exploración de patrones de series de tiem-
po y la comparación de patrones de calidad del aire. Basados en estos 4 pilares es posible
establecer algunas relaciones entre las diferentes variables que son medidas, también se creó
un algoritmo de consulta que se encarga de integrar diferentes análisis de series temporales
como la representación lineal jerárquica por partes y la deformación temporal dinámica. Se
usan particularmente ya que estos son métodos que permiten medir o analizar que tanto
se parecen dos secuencias temporales, la integración representa un gran beneficio ya que no
necesariamente las series deben tener la misma escala temporal.
La contaminación a nivel mundial es un tema que tiende a ser dejado de lado; es por esta
razón que paı́ses como India son reconocidos ya que a pesar de ser uno de los paı́ses con
mayor contaminación en el mundo ha centrado una parte importante de sus esfuerzos en
crear consciencia del cuidado del aire. Es por lo anterior que en el proyecto Data Analysis
of Air Pollutant Levels in India [7] se realiza un estudio con la intención de analizar la
tendencia general de las diferentes concentraciones de contaminantes en la India durante los
años 2016 a 2018. En dicho estudio se exponen las tendencias comunes observables respecto
a la contaminación ambiental con la intención de poder atribuirlo a su causa raı́z y producir
resultados que justifiquen las causas del deterioro de la calidad del aire, todo esto a través
de una interfaz de visualización a la cual las personas puedan tener acceso. De esta forma
los investigadores se plantearon construir un modelo de predicción del ı́ndice de calidad del
aire para la ciudad de Delhi en India, donde gran parte del estudio se enfoca en la búsqueda
de patrones para el análisis de datos y por último pronosticar la calidad del aire en Delhi;
para corroborar su funcionamiento y realizar una validación se plantearon series de tiempo
con las cuales poder obtener las gráficas ACF (Auto-Correlation Function), PACF (Partial
Auto-Correlation Function) y a nivel matemático el test ADF (Augmented Dickey–Fuller).
desarrollada se ha caracterizado por tener una interfaz simple pero con un rendimiento alto;
esta se encarga de reunir o agrupar problemas de suma importancia como contaminación
del aire, el ruido, los incendios y la gran demanda de parqueaderos en un solo proyecto sin
un capital muy alto y haciendo uso de los dispositivos con los que cuentan todas las personas.
La necesidad de monitorear los niveles de la calidad del aire crece cada dı́a más, esto es bási-
camente por el peligro que los contaminantes del aire o los agentes alérgenos pueden suponer
para la salud humana; teniendo en cuenta los atributos de la calidad del aire en función
del ICA propuestos por la Agencia de Protección Ambiental de los Estados Unidos (EPA)
y la Agencia Ambiental Europea (EEA). En respuesta a esta problemática surge Artifi-
cial Intelligence-Enabled Context-Awareair Quality Prediction for Smart Cities
[9] donde se da el desarrollo de un estudio enfocado al pronóstico del ICA desde diferentes
perspectivas y haciendo uso de diferentes algoritmos como lo son: Lógica Difusa, los Modelos
Ocultos de Markov, los Modelos de Conjuntos, Red Neuronal Profunda y Redes Neuronales
Artificiales. Donde se busca encontrar cuál modelo se ajusta mejor a la variabilidad de los
datos presentados y de que manera se pueden obtener unos datos mucho más precisos.
Un proyecto que se encarga de reunir desarrollos de todos los proyectos presentados corres-
ponde a Context-and Situation-Prediction for Outdoor Air Quality Monitoring de
Daniel Schürholz [10] este propone un proyecto que busca predecir el momento y el lugar
donde las concentraciones de contaminantes alcanzarán su mayor punto, haciendo énfasis en
la revisión a profundidad de los algoritmos de predicción de la calidad del aire, se desarolla
un sistema que está en la capacidad de soportar algunos algoritmos usados para realizar pre-
dicciones, se despliega todo en una aplicación web receptiva llamada My Air Quality Index
(MyAQI). Al realizar toda la integración propuesta se obtiene un proyecto que está en la
capacidad de analizar una gran cantidad datos, los cuales son tratados como correlaciones de
datos e histogramas de los mismos. Posteriormente estos datos son tratados mediante mo-
delos o algoritmos de predicción para generar algunas tendencias las cuales son comparadas
con información de otras bases de datos y finalmente estos datos son presentados al usuario
en una interfaz sobre la calidad del aire, el tráfico y los incendios en zonas aledañas a su
ubicación.
Un proyecto mucho más local corresponde a una Plataforma Integrada de Monitoreo Ambien-
tal(PIMA) [11]. Este proyecto nace en la ciudad de Bogotá dada la necesidad de representar
las mediciones adquiridas en cada una de las estaciones de monitoreo de la polución del aire,
de tal forma que se diseñó un sistema integrado capaz de visualizar los datos obtenidos por
los dispositivos IoT el cual actualmente cuenta con un despliegue general desde un Back-End
hasta un Front-End donde se cuenta con varios dispositivos IoT que se conectan directamen-
te con un gateway API comunicado con dos bases de datos incorporadas, se tiene un modulo
7
Para realizar una comparación de todos los proyectos encontrados se realiza una tabla de
resumen donde se condensa la información más importante de cada uno de los desarrollos.
Mapas
Proyecto App Dashboard IoT Nube ML ICA Análisis Predicción Alarma
de calor
[6] AirExplorer: visual exploration of No se
Sı́ Sı́ No Sı́ No Sı́ No No No
air quality data based on time-series querying especı́fica
[3] Air quality index and air pollutant
concentration prediction based on machine No Sı́ No No Sı́ Sı́ Sı́ No Sı́ Sı́
learning algorithms
[7] Data Analysis of Air Pollutant
No Sı́ No No Sı́ Sı́ Sı́ No Sı́ No
Levels in India
[5] An azure access early warning
Sı́ Sı́ Sı́ Sı́, Azure Sı́ Sı́ Sı́ No Sı́ Sı́
system for air quality index deteriorating
[8] SenseAPP: An IoT-Based Mobile No se
Sı́ Sı́ Sı́ No Sı́ Sı́ Sı́ No No
Crowdsensing Application for Smart Cities especı́fica
[9] Artificial intelligence-enabled context-aware No se
Sı́ Sı́ Sı́ Sı́ Sı́ Sı́ Sı́ Sı́ Sı́
air quality prediction for smart cities especı́fica
[10] Daniel Schürholz Context-and Situation No se
Sı́ Sı́ Sı́ Sı́ Sı́ Sı́ Sı́ Sı́ Sı́
-Prediction for outdoor Air Quality Monitoring especı́fica
[11] Fusión de mediciones de calidad del aire con las
variables meteorológicas para mejorar la estimación Sı́ Sı́ Sı́ Sı́, Azure No Sı́ Sı́ No No No
espacial de los datos en la ciudad de Bogotá
A través de la Tabla 2-1 es posible evidenciar los vacı́os o falencias con los que cuenta un
desarrollo previo de la plataforma respecto a otros desarrollos, ya que no cuenta con un
módulo de alarma particular, no cuenta con visualización por mapas de calor y el análisis
que tiene puede ser mejorado. Es por esta razón que se decide retomar este proyecto y
desplegarlo nuevamente incluyendo nuevas funcionalidades; al incluir este tipo de funciones
se logrará realizar un proyecto que se encuentre al nivel de otros proyectos con mucho más
tiempo de trabajo y ponerlo a un nivel superior de otros que no cuentan con los mismos
desarrollos como mapas de calor y alarma.
3 Sistema
3.1. Requerimientos
Determinar cuáles son los contaminantes con mayor variabilidad y que afectan el ı́ndice
de calidad del aire en la ciudad de Bogotá.
Desarrollo de un módulo que permita la visualización de los datos mediante interpola-
ción espacial.
Gestión de estados de alerta según el ı́ndice de calidad a la ciudadanı́a mediante la
implementación de un modelo de suscripción.
Interfaz gráfica que brinde una experiencia de usuario que cumpla con los requerimien-
tos del usuario final del CEA - IoT.
Validar la funcionalidad del sistema haciendo uso de técnicas como la simulación de
datos.
El sistema cuenta con dos entradas dadas por dispositivos IoT encargados de sensar las
variables y el usuario el cual está en la capacidad de ingresar datos al sistema, se tiene una
única salida que corresponde a los usuarios que interactuan directamente con la plataforma.
El desarrollo se encuentra divido en Front-End y Back-End, todos los servicios que no son
accesibles directamente para el usuario hacen parte del Back-End desarrollado y los servicios
que permiten una interacción con el usuario corresponden a Front-End.
3.2 Diagrama de Bloques 9
3.2.1. Recepción
Este bloque de la arquitectura se encarga de recibir todos los datos que vienen de los dispo-
sitivos IoT, la información recibida se conecta directamente con un servicio administrado de
Azure conocido como IoT hub el cual se encarga de hacer las veces de centro de mensajes
para establecer una comunicación entre la plataforma y los dispositivos IoT que se deseen
conectar.
El IoT hub recibe los mensajes y establece la conexión con los diferentes dispositivos dis-
puestos para medir la contaminación, estos mensajes los pasa directamente a otro servicio
llamado Streaming Analytics Job; este es seleccionado ya que tiene un gran catálogo de
funcionalidades dentro de las cuales se encuentran realizar cálculos matemáticos, análisis de
datos, filtrado de datos, mejor orden en la recepción de datos ası́ como agregar y unificar
datos especı́ficos. Su funcionamiento se basa en tres partes fundamentales una entrada, una
consulta y una salida. Una de las principales razones para utilizar estos dos servicios es
que funcionan muy bien entre sı́, también tienen una facilidad de acople ya que estos son
provistos por Azure.
10 3 Sistema
3.2.2. Almacenamiento
3.2.3. Tratamiento
Este bloque de la arquitectura es el encargado de hacer uso de los datos obtenidos para la
visualización y demás funcionalidades que se realizarán.
Módulo Registro: Este módulo depende directamente de la tabla users ya que ahı́ es
donde se almacenarán los datos que los usuarios registren.
Módulo Interpolación: Para el módulo de interporlación se decidió implementar kri-
ging el cual es un método de inferencia espacial al cual se le pueden ingresar diferentes
variogramas, a partir de los cuales se evaluará cual presenta un mejor funcionamiento
respecto a los datos con los que se cuenta.
Módulo Alarmas: Para el módulo de alarma se decide hacer uso de un correo
electrónico, cuando la persona decida que quiere recibir un informe de la contami-
nación se encuentra en la capacidad de ingresar los datos del destinatario y recibir un
informe. De igual manera se estableció un envı́o de correo de manera automática en
caso de que se superen los limites establecidos por el ı́ndice de la calidad del aire.
Módulo Visualización: Para el módulo de visualización se decide hacer gráficas las
cuales mostrarán el valor del ICA como valor inicial, pero que no solo se limiten a
este ı́ndice sino que permita filtrar tanto por año como por contaminante para que
de esta manera las personas que decidan conocer sobre las concentraciones de otros
contaminantes puedan hacerlo.
3.2.4. Despliegue
Se hace uso del Workflow de PHP que es parte de las herramientas de Github actions para
desplegar sobre el Azure App Service, donde el dominio pertenece exclusivamente a Azure
y es [Link]
4 Desarrollos
Se cuenta con varias utilidades respecto a cada uno de los módulos desarrollados, cada uno
de los procesos y técnicas usadas se encuentran a continuación.
4.1. Recepción
La recepción de los datos representa un punto fundamental para el correcto desarrollo del
proyecto, es por esta razón que se integraron dos servicios de Azure los cuales permiten
recibir datos de diferentes dispositivos IoT y almacenar los datos en una base de datos SQL
de Azure.
En la Figura 4-1 se muestran los recursos que fue necesario adquirir de Azure en el desarrollo
del proyecto, respecto a los servicios de recepción de datos son adquiridos los servicios de
un Iot Hub que tiene el nombre PIMA ası́ como un Stream Analytics Job el cual tiene el
nombre PIMA Analytics, este ultimo se comunica directamente con un SQL Server donde
se encuentran las respectivas tablas diseñadas.
Lo primero que se hizo fue adquirir el recurso dentro de la cuenta de Azure; se establecieron
y definieron el grupo de recursos, la ubicación geográfica del IoT hub y finalmente el nombre
12 4 Desarrollos
que tendrá el IoT hub. Habiendo definido estos parámetros, se procede a definir el nivel de
precios que se usará, para el caso previo se definió el nivel gratuito ya que la cantidad de
mensajes y dispostivos es suficiente para el alcance actual del proyecto.
Cuando se crea el servicio se realiza la creación del dispositivo IoT del cual se recibirán los
datos; la creación del dispositivo implica obtener la cadena de conexión y las claves de acceso
al dispositivo para poder enviar datos. Tras haber realizado este procedimiento el IoT hub
se encuentra en la capacidad de recibir todos los datos provenientes de dispositivos.
Al recibir los datos se encuentra un problema que corresponde a la forma en que estos se
almacenarán, para poder guardar todos los datos que se están obteniendo se hace uso del
servicio Streaming Analytics Job, lo primero que se realiza es la adquisición del servicio;
este se configura de la misma manera que el servicio de IoT hub, se define un nombre, una
ubicación, el grupo de recursos y el tipo de suscripción que se va a realizar en base a lo que
se requiera. Teniendo el servicio creado se procede a la configuración del mismo, lo primero
que se hace es establecer la conexión con el IoT hub, se definen parámetros como el nombre
que tendrá la entrada en este servicio y el formato de serialización de eventos; esto es para
poder observar los datos que están siendo recibidos en el IoT hub.
Para almacenar la información en una base de datos particular se crea una tabla con los
valores que estarán llegando de los diferentes dispositivos. Se parte de esta tabla y se agrega
una salida al Streaming Analytics Job que corresponda directamente con la base de datos
SQL, se ingresan las credencial de usuario y contraseña con las cuales se habilita el ingreso
a la base de datos; con el acceso hacia la base de datos, se crea una consulta de tipo SQL
para insertar los datos directamente en la tabla que se definió anteriormente.
4.2. Almacenamiento
En la Figura 4-2 se muestran las diferentes tablas que fueron creadas, se desarrollaron 4
tablas principalmente; la primera de ellas corresponde IoT, es en esta tabla donde se guardan
los valores recibidos desde los dispositivos IoT a través del broker, se cuenta con variables
como latitud y longitud ya que para realizar la interpolación espacial es necesario tener
estos datos, también se cuenta con todo el registro de contaminantes definidos los cuales
corresponden a CO, O3 , N O2 , SO2 , P M10 y P M2,5 y la ultima sección dada por las demás
variables que afectan la medición de ICA pero no son contaminantes, donde se encuentra la
humedad, la tempertura y los rayos UV.
La siguiente tabla desarrollada es ICA donde se guardan los valores calculados del indice de
la calidad del aire para todos los contaminantes que se están midiendo, todos estos datos se
encuentran definidos por una ID, una fecha y un nombre de nodo para facilitar su filtrado y
tratamiento.
La siguiente tabla se llama Bogota; esta corresponde a un dataset particular para la ciudad
de Bogotá en donde se cuenta con una fecha de cuando dicho contaminante fue medido,
con un nodo ya que en este dataset los datos se encuentran filtrados por diferentes puntos
particulares estáticos en la ciudad y todos los contaminantes que están siendo medidos.
Finalmente se encuentra la tabla users la cual es usada para realizar el registro o suscripción
de los usuarios dentro de la plataforma, se almacena el nombre el usuario, el email al que se
enviarán los reportes y una confirmación con la cual se accede a recibir reportes automáticos.
14 4 Desarrollos
4.3. Tratamiento
Para el módulo de registro se realizó un código en php el cual permite insertar los valores
recibidos en la tabla users, a través de esta tabla se conoce la información respecto a donde
se envı́an los correos.
Como se muestra en la Figura 4-3 se realiza un formulario donde los usuarios registran la
información requerida, posteriormente mediante una consulta se realiza la inserción de los
datos dentro de la base de datos en la tabla diseñada de manera particular que para este
caso corresponde a users.
El segundo método revisado corresponde a natural neighbor el cual hace uso de una función
matemática que permite realizar una combinación ponderada lineal, todo esto en relación
a los puntos definidos y su respectivo peso. El último método corresponde a Kriging, este
es uno de lo modelos más utilizados en geoestadı́stica para la interpolación espacia, este
minimiza la varianza de la superficie resultante gracias a que involucra diferentes tipos de
variograma con la finalidad de permitir tener una variedad de modelos respecto a cual se
ajusta mejor a los datos.
4.3 Tratamiento 15
Al realizar una comparativa entre los diferentes métodos se busca principalmente que tengan
un buen rendimiento con una baja densidad de datos como es el caso particular, adicional-
mente que su funcionamiento permita analizar las puntos o nodos que se encuentran aisladas
ya que al tener pocos puntos no todos están cerca unos de otros, esto es básicamente lo
que permite un modelo de variograma del método kriging sobre los otros métodos que uti-
lizan otro tipo de regresiones y técnicas que funcionan mucho mejor cuando los datos no
se encuentran dispersos. En resumen, la baja cantidad de información con la que se cuenta
respecto a los diferentes nodos en Bogotá dificulta realizar una comparación de los 3 métodos
de una manera práctica ya que splines y natural neighbor son métodos que requieren una
mayor densidad de datos de tal forma que se selecciona kriging como método de interpola-
ción a implementar. A continuación se muestra las librerias y demás recursos usados para su
desarrollo ası́ mismo como el proceso de selección del mejor método de variograma.
Se hace uso de una librerı́a conocida como [Link] la cual nos permite realizar una inter-
polación en torno a unos puntos especı́ficos muy particulares.
En vista de que no se encontró un arreglo con todos los puntos espaciales necesarios para
representar el mapa de Bogotá previo a la implementación de la librerı́a fue necesario vecto-
rizar el mapa de Bogotá; tras realizar dicho proceso se obtiene un arreglo bastante extenso
que nos permite tener un mapa de Bogotá con un nivel de exactitud bastante apropiado para
el propósito final.
Ya teniendo el mapa vectorizado se procede a insertar todos los datos correspondientes a los
nodos que se encuentran dentro de la tabla ”Bogotá”, se tiene un total de 14 nodos estáticos
a lo largo de todo Bogotá y dependiendo de lo seleccionado en el filtro se piden los datos
para cada uno de los nodos; los datos que son extraidos son puestos como peso en cada una
de las coordenadas.
Teniendo los datos es necesario definir el método de varianza que tendrá un mejor desempeño
en cuanto a los datos con los que se cuenta, es por esta razón que se realiza una primera
interpolación con los 14 nodos con los que se cuenta y se generan muchos puntos más en
torno a esta interpolación, con todos los nuevos puntos generados se realiza una nueva in-
terpolación con la diferencia de que se realiza sin tener en cuenta uno de los puntos que se
conocı́an inicialmente para poder realizar una comparación y encontrar el error porcentual.
Se realiza este proceso para los diferentes modelos de variogramas con lo que se obtienen los
siguientes errores:
respecto a los datos con los que se cuenta corresponde al modelo esférico, por lo que es
establecido como el modelo final para realizar los respectivos mapas de calor.
Finalmente para terminar el proceso de interpolación espacial realizado se genera un mapa
de calor el cual permite identificar a través de colores el nivel de contaminación que hay en
cada uno de los puntos del mapa.
Como se muestra en la Figura 4-4 el proceso realizado parte de la adquisición de los datos
provenientes de los dipositivos IoT, lo cual se hace en el bloque de Recepción mediante los
servicios de IoT Hub y Stream Analytics Job. Cuando los datos son recibidos son almacenados
en la base de datos más especı́ficamente en la tabla IoT donde posteriormente se calcularán
los indices de la calidad del aire para cada una de las concentraciones para almacenar los
nuevos datos en la tabla ICA. Posteriormente mediante consultas a estas tablas los datos
son extraı́dos y mostrados respecto a cada uno de los filtros que el usuario haya definido,
toda esta información se muestra en las pantallas definidas en el Azure App Service.
4.4 Contaminantes que Generan Mayor Afectación al ICA 17
Para el módulo de alarma se hace uso de phpmailer ya que presenta muchas ventajas frente
a otro tipo de librerı́as, para enviar los correos se hace uso de SMTP el cual es un protocolo
para la transferencia de correos electrónicos, también se cuenta con seguridad TLS.
Esta librerı́a permite enviar correos con múltiples direcciones y hacia diferentes remitentes
como CC, CCO y demás, adicionalmente es compatible con PHP lo cual es indispensable
para poder completar en su totalidad estos módulos; esto ya que se cuenta con un sistema de
registros y en ocasiones los correos son enviados de manera automática por lo que se requiere
obtener los correos de la base de datos, todos los correos son enviados con una copia a un
correo particular para los administradores de la plataforma.
Como se muestra en la Figura 4-5 para realizar la notificación o envı́o del correo se parte de
la base de datos más especificamente de la tabla ICA y la tabla users. Constantemente se
supervisan los valores de concentración que están ingresando, si se supera el lı́mite establecido
por 200 significa que la calidad del aire representa un riesgo para la salud y es necesario
tomar medidas al respecto es por esta razón que a través de PHP Mailer se seleccionan
todos los correos que decidieron recibir reportes sobre el estado del aire y son puestos como
destinatarios, finalmente se envı́a un reporte a todos los usuarios suscritos con la información
obtenida.
Tras realizar un análisis de todos los datos con los que se cuenta en cada una de las estaciones
se llega a la conclusión de que los contaminantes que tienen mayor afectación en el ı́ndice de
la calidad del aire en Bogotá corresponden a P M10 y P M2,5 .
El análisis se realizó teniendo en cuenta la misma cantidad de datos para cada contaminante
por nodo.
Porcentaje Porcentaje
Nodo
PM 10 ( %) PM 2.5 ( %)
Carvajal 4.62 95.38
CAR 3.41 96.59
Fontibón 0 100
Guaymaral 2.17 97.82
Kennedy 0 100
Las Ferias 2.85 97.14
Min ambiente 2.32 97.67
Móvil 7ma - -
Puente Aranda 25.58 74.41
San Cristóbal 8.13 91.86
Suba 6.97 93.02
Tunal 1.31 98.68
Usaquén 6.02 93.97
La tabla 4-2 resume el porcentaje de incidencia que tienen los diferentes contaminantes por
cada uno de los nodos, solo se muestran porcentajes para PM10 y PM2.5 ya que en ninguno
de los años evaluados hubo algún otro contaminante que definiera el ı́ndice la calidad del
aire, esto debido a los lı́mites que son definidos y a los bajos niveles obtenidos.
En el Anexo A se muestra un análisis realizado en base a documentación encontrada al
respecto, si se realiza un contraste del análisis realizado con bases de datos más recientes con
respecto al análisis realizado con la documentación un poco más antigua es posible concluir
que el material particulado es de los contaminantes que genera mayor afectación a lo que es
el ı́ndice de la calidad del aire. A pesar de que el análisis realizado en el Anexo A indica que
el contaminante que genera mayor afectación al ICA basado en la cantidad de excedencias
que generaba en el tiempo medido correspondı́a a P M10 , realmente no se estaba teniendo
en cuenta el P M2,5 en ese ordén de ideas se confirma parte de la información mostrada en
4.5 Cálculo del Índice de la Calidad del Aire 19
IHi − ILo
ICAp = ( )(C − BPLo ) + ILo (4-1)
BPHi − BPLo
Para lograr el funcionamiento del sistema en general se partió del desarrollo de los módulos
de manera particular; previo al desarrollo se definió la base de datos y se comprobó su co-
rrecto funcionamiento.
5.1. Recepción
Para corroborar el funcionamiento de todo el sistema en general se hace uso una Raspberry
PI la cual se encarga de hacer las veces de dispositivo IoT, esto ya que se necesita enviar
datos directamente al servicio de Azure para poder evidenciar.
Como se muestra en la figura 5-1 se cuenta con un montaje sencillo basado en una tarjeta de
desarrollo Raspberry PI, un módulo de sensado y un led que solo tiene la función de indicar
cuando se están midiendo los datos.
Se genera un código a través del cual se genera la conexión entre el simulador y el servicio
IoT hub, ya contando con esta conexión es posible evidenciar los resultados.
5.1 Recepción 21
Para evaluar el funcionamiento del IoT hub y comprobar que realmente se estuviesen conec-
tando los dispositivos inicialmente se comprueba que no exista ningún dispositivo conectado.
Tras establecer la conexión con el simulador es posible observar que el estado que se tenı́a
cambia y el dispositivo es reconocido como se muestra en la Figura 5-3. A través de esta
prueba se confirma que la conexión con el IoT hub se está logrando, para comprobar que
están llegando datos se realiza el mismo procedimiento.
22 5 Experimentos y Análisis de Resultados
Como se observa en la Figura 5-4 no se está recibiendo ningún tipo de dato debido a que
no se están enviando datos y el simulador de la Raspberry no está funcionando.
Finalmente como se observa en la Figura 5-5 se empiezan a enviar datos a través del dispo-
sitivo lo cual se evidencia en el tráfico de mensajes que aparece.
Cuando ya se están recibiendo los datos es necesario identificar que datos están siendo
enviados y poder almacenarlos en la base de datos. Todo este proceso se realiza mediante
la configuración del Streaming Analytics Job donde se incorpora como entrada la salida del
servicio IoT hub y ası́ poder empezar a guardar los respectivos datos.
5.1 Recepción 23
Cuando se empiezan a mandar datos desde el simulador los datos empiezan a aparecer como
se ve en la Figura 5-7, se observa que los datos llegan con un formato particular y cada uno
de los mensajes son asignados a un ID que es autoincremental para tener un mejor control
sobre la información, de igual manera se observa el dispositivo a través del cual fue enviada
la información y cada uno de los contaminantes con su respectiva concentración.
24 5 Experimentos y Análisis de Resultados
5.2. Almacenamiento
Para evaluar el funcionamiento de cada una de las tablas se incluyeron y leyeron datos direc-
tamente en cada una de las tablas presentes dentro de la base de datos, para tener un mejor
control sobre los datos se hace uso del software Microsoft SQL Server Managment Studio ya
que nos permite ejecutar consultas SQL y evidenciar el resultado.
Como se muestra en la tabla 5-1 se realiza una consulta para comprobar primero si se está
escribiendo algo sobre la base de datos y segundo que lo que se está escribiendo pueda ser
leı́do correctamente. Al ejecutarlas es posible observar que los datos se están creando dentro
de la tabla y es posible llamarlas, con lo que se sienta un base para el funcionamiento de los
módulos en general.
En la Figura 5-8 se muestran los resultados obtenidos tras ejecutar la consulta definida
anteriormente para comprobar que se están insertando los datos dentro de la tabla donde
como salida se tiene que una de las filas de la tabla fue modificada, a través de esta prueba
se verifica que se esté permitiendo escribir datos sobre la base de datos SQL.
5.3 Tratamiento 25
En la Figura 5-9 se muestran los resultados obtenidos tras ejecutar la consulta definida para
comprobar que se pueden seleccionar todos los datos que se escribieron anteriormente y ası́
reafirmar que los datos que llegan están siendo escritos en la base de datos SQL.
5.3. Tratamiento
Para evaluar el funcionamiento general del bloque tratamiento se desarrollaron pruebas in-
dividuales para cada uno de los módulos.
5.3.1. Registro
Para el módulo de registro se desarrollaron códigos los cuales son montados sobre una pla-
taforma que nos permite visualizar lo desarrollado a través de un formulario.
Como se muestra en la Figura 5-10 se cuenta con un formulario muy particular a través del
cual se le pide a la persona algunos datos especı́ficos los cuales serán usados si la persona ası́
26 5 Experimentos y Análisis de Resultados
lo desea para recibir notificaciones o alertas en caso de que el ı́ndice de la calidad del aire
esté superando algunos lı́mites establecidos.
Se realizaron muchas pruebas con la finalidad de abarcar un gran porcentaje de posibilidades
y evaluar si el funcionamiento es el esperado.
El sistema cuenta con dos posibles mensajes a la hora de enviar el formulario, si se pudo
registrar de manera satisfactoria entonces se envı́a el mensaje de Registro exitoso, si por
el contrario hubo un inconveniente en este proceso se muestra el mensaje de Inténtalo
nuevamente.
Para los casos 2, 4, 5, 6, 7 y 8 se obtuvieron respuestas negativas ya que se mostraba en
pantalla el mensaje: Inténtalo nuevamente. Únicamente para los casos 1 y 3 se obtuvo una
respuesta positiva por parte de la plataforma, básicamente esto comprueba que el sistema
funciona de forma correcta ya que para las variables de nombre y correo no se acepta un
valor de null, entonces si no se ingresa cualquiera de los dos datos siempre pedirá que lo
intente nuevamente.
Al ser un proceso que se encuentra muy relacionado con la base de datos y las tablas desa-
rrolladas, el funcionamiento para comprobar basta con elaborar consultas particulares para
cada uno de los casos, lo cual fue comprobado en la Figura 5-1.
5.3.2. Alarma
Como se muestra en la 5-12 al realizar la consulta se obtienen todos los correos los cuales
28 5 Experimentos y Análisis de Resultados
corresponden a los usuarios que ingresaron tanto su nombre como su correo y adicionalmente
marcaron la casilla de que querı́an recibir notificaciones, los usuarios que no marcaron esta
opción podrán recibir reportes pero únicamente cuando ellos lo deseen a través del primer
método de operación.
Tras haber realizado la consulta, los correos son puestos como destinatarios en caso de recibir
una alerta, para corroborar que esta alerta estuviese siendo enviada, en la tabla ICA se genera
un valor de prueba para la variable ICA con un ı́ndice superior a 200 para evidenciar el tipo
de reporte que se genera.
Figura 5-13: Correo recibido con el reporte del indice de la calidad del aire.
Como es posible observar en la 5-13 un correo con asunto Reporte PIMA es enviado a todos
los correos que fueron seleccionados anteriormente; este correo contiene una información
breve que avisa o notifica al usuario de que el ı́ndice de la calidad del aire en algún punto de
Bogotá superó el punto de corte(200) y que el aire puede empezar a ser perjudicial para la
salud.
De esta manera la persona podrá entrar a la plataforma y revisar en la gráfica de Calidad
de del aire de hoy en que punto de la ciudad fue superado dicho limite para ası́ poder tomar
acciones de prevención al respecto. Se cuenta con varios tipos de reporte, las notificaciones
sobre que se superó el lı́mite son enviadas de forma periódica para que el usuario no sea
invadido o spameado con el mismo correo una y otra vez, en caso de que no se supere el
lı́mite también se enviará un reporte periódico, para que ası́ se pueda mantener informado
sobre la calidad del aire.
5.3.3. Interpolación
Para ese módulo se desarrolló un filtrado que permite escoger entre diferentes métodos como
máximo, mı́nimo y promedio, estos se encargan de tomar los menores, los mayores o los
promedios de los valores en un periodo de tiempo. Es por esto que se cuenta con una fecha
de inicio y con una fecha de fin la cual permite establecer la ventana sobre la cual se pondrán
los diferentes valores.
5.3 Tratamiento 29
De la misma manera se permite variar entre los diferentes valores de contaminantes con los
que se cuenta como P M10 , P M2,5 , O3 , SO2 , N O2 y demás.
Para corrobar la elección del tipo de variograma se repitió el proceso que se denotó ante-
riormente varias veces de lo que se obtenı́an errores muy similares tras cada iteración que
se realizaba, en vista de la poca densidad de datos con los que se cuenta se propone que
en trabajos futuros que tengan un escenario similar se haga uso del variograma esférico ya
que permite tener una mayor fiabilidad respecto a la predicción de los valores. Es necesario
resaltar que cada modelo de variograma tiene sus ventajas y en proyectos con una densidad
mayor de datos los resultados pueden ser mucho mejores.
5.3.4. Visualización
Las pruebas realizadas sobre este módulo están fundamentadas principalmente sobre la base
de datos obtenida del observatorio ambiental de Bogotá el cual cuenta con un total de 13 de
nodos ubicados a lo largo de toda la ciudad; toda esta información se encuentra presente en
la tabla ”Bogotá”la cual es filtrada para elegir el rango de tiempo que se quiere visualizar.
30 5 Experimentos y Análisis de Resultados
Como se observa en la Figura 5-15 se cuenta con un filtro el cual permite observar el tipo
de contaminante y seleccionar un nodo especifico.
Como parte de las funcionalidades que se generan se busca poder mostrar un histórico de
todos los datos en generaL; es por esta razón que en la sección histórico se cuenta con muchos
más filtros como se muestra en la Figura 5-16.
Se cuenta con un filtro o selector que permite seleccionar ya sea uno de los contaminantes
que se están midiendo o directamente el ı́ndice de la calidad calculado. Otro filtro permite
elegir entre los 13 nodos con los que se cuenta en diferentes puntos de la ciudad, para definir
5.4 Despliegue 31
los periodos de tiempo se tomaron datos desde Agosto del 2014 hasta Septiembre del 2021;
esta información se muestra de manera correcta a través de gráficos de barras.
5.4. Despliegue
Se desarrolló una pantalla de inicio basados en la plantilla con la que se cuenta, se incluye
una barra lateral con toda la información de interés y un apartado de documentación en
caso de que el usuario desee conocer un poco o ponerse en contexto respecto al trabajo
desarrollado.
Como se muestra en la Figura 5-17 se cuenta con una presentación sencilla a modo de
dashboard donde se incluyen las principales funcionalidades desarrolladas para el proyecto.
Uno de los grandes beneficios con los que cuenta Azure app services es que permite incorporar
un repositorio de GitHub el cual identifica y procesa directamente, todos los cambios que se
realizan en el repositorio de GitHub se verán reflejados directamente sobre la plataforma.
Todas las pruebas realizadas con sus respectivas respuestas se encuentran condensadas en el
32 5 Experimentos y Análisis de Resultados
Anexo B a modo de resumir y registrar cada una de las pruebas que se realizaron en caso
de que llegue a presentarse un error y sea necesario realizar pruebas nuevamente.
Todos los desarrollos realizados para la plataforma se encuentran en repositorio en github
disponible en el siguiente link:
[Link]
De igual manera para acceder a la plataforma se tiene el siguiente link:
[Link]
Cuando los datos son almacenados en tabla ICA se empieza a tener información respecto
al dı́a, ya que esta información proviene de dispositivos encargados de enviar las diferentes
concentraciones, como se muestra en la Figura 5-18 las concentraciones que están ingresando
son mostradas en un rango de 0 a 500 indicando el valor del ICA.
6 Conclusiones y Trabajo Futuro
Bibliografı́a
[2] S. D de ambiente, “Red de monitorep de calidad del aire de Bogotá ha mostrado incre-
mentos en los niveles de contaminación”
[3] H. Liu, Q. Li, D. Yu, and Y. Gu “Air quality index and air pollutant concentration pre-
dicition based on machine learning algorithms,”Applied Sciences (Switzerland), vol. 9, no.
19, 2019.
[4] K. Gao, P. Anandhan, and R. Kumar, “Analysis and evaluation of the regional air qua-
lity index forecasting based on web-text sentiment analysis method,”Environmental Impact
Assesment Review, vol. 87, no. August 2020, p. 106514, 2021.
[5] D. H . Shih, T. W. Wu, W. X. Liu, and P. Y. Shih,“An azure acess early warning system
for air quality index deteriorating,”International Journal of Environmental Reseach and Pu-
blic Health, vol. 16, no. 23, 2019.
[6] D. Qu, X. Lin, K. Ren, Q. Liu, and H. Zhang, “AirExplorer: Visual exploration of air-
quality data based on time-series querying,” Journal of Visualization, vol. 23, no. 6,pp.
1129–1145, 2020
[7] B. U. Kempaiah, B. Charan, and R. J. Mampilli, “Data Analysis of Air Pollutant Level-
sin India,”2020 IEEE International Conference for Innovation in Technology, INOCON2020,
no. 2, pp. 17–22, 2020
[11] D. R. M. Niño, “Fusión de mediciones de calidad del aire con las variables meteorológi-
caspara mejorar la estimación espacial de los datos en la ciudad de Bogotá,”
[25] S. D. de ambiente, “Red de monitoreo de calidad del aire de Bogotá ha mostrado incre-
mentos en los niveles de contaminación”.
[27] M. Gaitán, J. Cancino, and E. Behrentz, “Análisis del estado de la calidad del aire en
Bogotá,”
[28] C. Childs, “Interpolating Surfaces in ArcGIS Spatial Analyts,.ArcUser, vol. 2004, no.
July-September, pp. 32–35, 2004.
38 6 Conclusiones y Trabajo Futuro
de Bogotá por periodos de tiempo, donde como se expuso anteriormente los valores se
han mantenido dentro de la norma anual establecida que corresponde a 53ppb.
Ozono troposférico (O3 ). Este gas se produce como resultado de algunas reacciones en
las cuales interviene la luz solar, algunos óxidos de nitrógeno y algunos compuestos
volátiles.
A partir de la revisión de la relación entre eventos y el ICA, eventos tales como el dı́a sin
carro y dı́as de paro de transportadores dejan en evidencia el gran impacto que tienen los
vehı́culos que funcionan con gasolina o diésel, ya que, son agentes móviles de producción de
contaminantes como P M10 , P M2,5 y CO. En dı́as donde hubo paro de transportadores los
niveles de P M1 0 se redujeron ya que usualmente los vehı́culos de servicio publico tienden a
funcionar con diésel el cual influye directamente con el material particulado P M1 0, pero en
los dı́as sin carro las concentraciones de CO se vieron reducidas ya que estos vehı́culos usual-
mente funcionan con gasolina. A partir de lo descrito anteriormente, se puede corroborar
que el tipo de contaminante que afecta en mayor medida está dado por diferentes variables y
sucesos; cuando se incorporó el combustible diésel bajo en azufre la cantidad de P M1 0 en la
ciudad se redujo de forma notoria, pero con el crecimiento industrial y demás factores dicho
contaminante volvió a aumentar, por ejemplo, el hecho de la implementación de gasolina con
etanol aumentó los niveles de O3 en el ambiente. [24]
Nota: La zona que presenta una mayor contaminación corresponde a la zona occidental don-
de localidades como Puente Aranda y Fontibón presenta unas concentraciones de material
particulado especialmente altas.
A pesar del monitoreo a través de estaciones a lo largo del todo el territorio de la ciudad no
se tiene completa certeza de la exposición de cada persona ya que existen micro-ambientes,
como una persona que está parada en un andén y un bus de servicio urbano pasa o arranca
frente a la persona, esta persona va a estar expuesta a cientos de micro-gramos por metro
cúbico de material particulado (PM10 principalmente).[25]
Incidencia en el ICA
Para poder determinar la incidencia que tiene cada uno de los contaminantes a medir según
el estándar propuesto por el IDEAM “Guı́a práctica para la validación de datos en los
Sistemas de Vigilancia de Calidad del Aire (SVCA) existentes en Colombia (GPVD)” se
deben validar los datos por parte de las autoridades competentes. De tal forma que según
el Subsistema de Información sobre Calidad de Aire (SISAIRE). se deben tener en
cuenta los siguientes puntos: [26]
Representatividad temporal: Es un indicador de cobertura que estima el porcentaje
de datos válidos para determinado perı́odo dado reportado por los operadores de los
SVCA.
Porcentaje de monitoreo de cada uno de los contaminantes por SVCA a nivel nacio-
nal: Es un indicador de gestión que expresa en qué porcentaje son monitoreados los
contaminantes criterio; con respecto al número total de estaciones con que se cuenta
42 6 Conclusiones y Trabajo Futuro
exposición personal de cada persona puesto no fue creada con ese objetivo.
[24] “Las concentraciones de PM10 no han mostrado una tendencia clara de reducción o
aumento en los 10 años de operación de la red. Aunque existió una tendencia de reducción
al introducir diésel de 1200 ppm de azufre en 2000, lamentablemente la concentración de
PM10 volvió a aumentar a partir de 2003, probablemente debido al crecimiento industrial
y a la utilización de carbón a cambio de gas natural.”
Conclusión
El PM10 es el contaminante con mayor ı́ndice de excedencias de la norma de calidad del aire,
seguido por el ozono, de estos se debe dar seguimiento constante y tomar medidas correctivas
para disminuir las excedencias. Por otra parte, las concentraciones de óxidos de nitrógeno,
óxidos de azufre y monóxido de carbono presentan bajos niveles excedencia de la norma,
pero se deben monitorear dado el crecimiento de factores contaminantes.
44 6 Conclusiones y Trabajo Futuro
Tabla 6-4: Expresiones para una calidad del aire dañina para grupos sensibles
Tabla 6-6: Expresiones para una calidad del aire muy dañina
47