Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo de grado presentado como requisito parcial para optar al tı́tulo de:
Magı́ster o Magistra en Ingenierı́a del Internet de las Cosas
Director(a):
Diego Méndez Chaves, Ph.D
Énfasis de Profundización:
Computación y Analı́tica en IoT
Pontificia Universidad Javeriana
Facultad de Ingenierı́a - Maestrı́a en Ingenierı́a del Internet de las Cosas
Bogotá D.C., Colombia
2022
(Dedicatoria)
Mahatma Gandhi.
iv
Resumen
Las empresas de logı́stica con el vertiginoso cambio que ha tenido la situación mundial y
nacional, por cuenta de la Pandemia enfrentan el reto de ser más eficientes y competitivas,
para entregar sus productos en tiempo, reducir costos y en lo posible proveer productos
personalizados a las exigencias de los usuarios finales [1]. De otro lado los proveedores de
redes celulares han comenzado a eliminar gradualmente sus redes 2G y 3G sobre las cuales
están sustentados muchos de los sistemas de localización que utilizan hoy dı́a las empresas
de logı́stica [2]. Un ejemplo de ello es el operador Claro en Colombia, quien ya anuncio el
apagado de sus redes 2G para marzo de 2023 [3].
Por lo anterior en el presente trabajo de grado se propone un sistema de monitoreo y se-
guimiento vehicular empleando las redes LTE, de manera que se puedan identificar opor-
tunamente anomalı́as en el servicio y visualizar oportunidades de reducción de sus costos
operativos.
Palabras clave: Seguimiento vehicular, logı́stica, IoT..
Abstract
Logistics companies with the vertiginous change that the global and national situation has
had, due to the Pandemic, face the challenge of being more efficient and competitive, to
deliver their products on time and reduce costs, and as far as possible provide personalized
products to the demands of end users [1]. On the other hand, cellular network providers
have begun to gradually eliminate their 2G and 3G networks, on which many of the location
systems used today by logistics companies are based [2].
Therefore, in this degree work, a vehicle monitoring, and tracking system is proposed using
LTE networks, so that anomalies in the service can be identified in a timely manner and
opportunities to reduce operating costs.
Keywords: Vehicle tracking, logistics, IoT..
Contenido
Resumen IV
1. Introducción 2
1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1. Objetivos General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2. Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Sistema 9
3.1. Arquitectura y funcionalidades de la solución . . . . . . . . . . . . . . . . . . 9
3.2. Especificaciones del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3. Selección de componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4. Desarrollos 15
4.1. Consideraciones de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2. Descripción modelo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.1. Estructura de datos almacén . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.2. Estructura de datos conductores . . . . . . . . . . . . . . . . . . . . . 20
4.2.3. Estructura de reportes . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.4. Estructura de datos operadores . . . . . . . . . . . . . . . . . . . . . 20
4.3. Eventos y reportes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4. Reporte en tiempo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.5. Reporte de Alertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.6. Reportes generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.7. Estructura de gestión de almacenamiento (Dominio de la nube o “cloud”) . . 25
Bibliografı́a 39
2-1. Elementos del sistema de seguimiento vehicular. Imagen realizada por el autor 5
2-2. Opciones de reemplazo de 2G por nuevas tecnologı́as. Imagen realizada por el
autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2-3. Soluciones logı́sticas para todo tipo de activos parachoque-parachoque. Fuente. 8
1.1. Objetivos
GPS. La empresa estaba obligada a pagar una tarifa mensual normalmente alta para utilizar
el sistema de seguimiento por satélite. Aunque útiles, estos primeros sistemas eran difı́ciles
de implementar, costosos de usar y, a veces, inconvenientes tanto para los conductores como
para la gestión de flotas, Internet no era algo que se encontrara en todas las oficinas y si
estaba disponible, los mapas en lı́nea y el software de enrutamiento en vivo no existı́an, todo
tenı́a que ser un proceso fuera de lı́nea y los mapas tenı́an que cargarse manualmente en
cada computadora.
Por lo tanto, tomó varios años para que el concepto se hiciera popular. En los primeros dı́as,
solo las flotas grandes y ricas se aprovecharon de la tecnologı́a. En sus inicios los sistemas
de seguimiento vehicular basados en los GPS, no eran de uso masivo por los costos de los
dispositivos receptores de GPS, y tampoco estaban enlazados a Internet, para enlazarlos
con mapas en lı́nea, y solo en los casos de conexión a través de redes 2G se podı́an enviar
información a través de las redes móviles, con la información básica de posicionamiento
(Latitud y longitud).
Figura 2-1.: Elementos del sistema de seguimiento vehicular. Imagen realizada por el autor
En este modelo un receptor de GPS recopila datos de al menos 4 satélites para determinar la
posición precisa. Este proceso llamado trilateración usa la posición de tres o más satélites de
la red del Sistema Global de Navegación por Satélite y su distancia de ellos para determinar
la latitud, la longitud, la elevación y el tiempo. El receptor puede mejorar la precisión de
la posición adicionando información de localización de redes móviles (inicialmente GSM)
al hacer esta tarea al hacer referencia a la información de la torre celular más cercana al
6 2 Estado del Arte
dispositivo de rastreo GPS. Entre las dos tecnologı́as, los sistemas GPS son capaces de
realizar mediciones de ubicación mucho más precisas, dentro de un metro, mientras que con
la tecnologı́a de seguimiento GSM, el posicionamiento solo se puede determinar dentro de
los 10 metros.
Figura 2-2.: Opciones de reemplazo de 2G por nuevas tecnologı́as. Imagen realizada por el
autor
De la gráfica 2-2 se aprecia como los requisitos de las nuevas aplicaciones señaladas en la
gráfica a la izquierda en color verde, están soportadas sobre las redes LTE para los diferentes
tipos de dispositivos están ampliamente disponibles (Cat 6,4,3,1) y es la clara opción para el
remplazo de las aplicaciones como la de seguimiento y monitoreo vehicular. Esto claramente
vuelve arcaico la redes 2G, sobre las redes LTE 4G [5].
Figura 2-3.: Soluciones logı́sticas para todo tipo de activos parachoque-parachoque. Fuente.
3. Sistema
En este capı́tulo se hace una descripción del Sistema de monitoreo y seguimiento vehicular,
indicando las especificaciones y los criterios de selección de los componentes.
Las especificaciones del sistema de monitoreo vehicular deben tener en cuenta los siguientes
aspectos identificados en la etapa de Estado de arte, estos son:
Debe ser una solución que permita operar a través de la red LTE.
Se debe poder centralizar la información en una base de datos.
La solución debe tener la capacidad de poderse visualizar a través de un navegador
por parte de los operadores.
La solución debe tener la capacidad debe tener la capacidad de poder identificarse ante
el sistema con usuario y password a los conductores.
Se debe poder ingresar los datos de placa del vehı́culo en el dispositivo móvil LTE.
El dispositivo móvil debe tener la capacidad de almacenar localmente el estado de
la comunicación, es decir debe tener la posibilidad de almacenar la identificación del
usuario que está en operación de manera tal que si se apaga el dispositivo o agota su
energı́a, se mantenga la configuración una vez se restablece el dispositivo móvil.
El dispositivo LTE debe poder tener la capacidad de alertar al conductor en los eventos
donde tiene exceso de velocidad y en los eventos cuando se sale de las áreas de operación
o geocercas definidas para su operación.
3.3 Selección de componentes 11
El dispositivo debe tener la capacidad de integrar un GPS de manera tal que se tenga
la ubicación geográfica del vehı́culo.
La plataforma central web para el monitoreo de la solución, debe ser una plataforma
escalable que pueda comenzar con un número reducido de vehı́culos, es decir decenas
de vehı́culos y poder crecer a centenas de vehı́culos y poder llegar a miles de vehı́culos.
En otras palabras, crecer por demanda o decrecer de manera controlada.
Teniendo en cuenta las especificaciones del numeral anterior, a continuación se indican los
criterios de selección para cada uno de los elementos de la solución.
Lo primero para definir fue la selección del dispositivo LTE y para ello tomando como
referencia al estado del arte está claro que el dispositivo de LTE es un dispositivo integrado,
es decir un un dispositivo que tenga teclado, que tenga pantalla e incorpore un GPS y que
pueda incorporar inclusive parlantes para poder enviar mensajes, por lo cual y teniendo en
cuenta lo que se tienen en las diferentes lideres del mercado se selecciona un dispositivo móvil
celular para que haga esta función.
A continuación la pregunta está por la selección de la plataforma de desarrollo, tanto para
el dispositivo LTE en este caso para el dispositivo celular o para la plataforma central. por
lo cual se seleccionó la plataforma de Google llamada Flutter y desarrollo de código con el
lenguaje de programación Dart, la cual permite como se muestra en la figura 2 desarrollar
código para plataformas móviles, para plataformas web. para plataformas de escritorio y para
sistemas embebidos. Haciendo de esta manera que sea más fluido y reutilizable las rutinas
que se trabajen en esta plataforma de desarrollo Flutter.
Figura 3-3.: Arquitectura general de la solución con la plataforma Flutter y lenguaje Dart.
proyectos poder responder de manera ágil a los requerimientos de los dispositivos móviles.
Esta plataforma Firebase está diseñada para recibir comunicaciones en tiempo real como
las comunicaciones que tenemos en este proyecto de localización de vehı́culos y cambios de
estado en segundos, haciendo que sea una solución escalable y con un tiempo de respuesta
adecuado para la aplicación móvil que tenemos en curso.
En la siguiente figura 3-4 se muestran algunas de las alternativas que se tienen de plataformas
de almacenamiento de backend. Se destaca que la plataforma de desarrollo Flutter dispone
de APIs para la plataforma Firebase de manera nativa, por lo cual se reduce la complejidad
de la integración con el sistema flutter, además por el soporte a largo plazo que tiene su
fabricante Google, el cual provee respaldo de la selección realizada.
Figura 3-5.: Arquitectura general de la solución integrada con Fluter y Firebase, tanto en
el acceso como en core.
La figura 3-5 muestra a la arquitectura general de la solución utilizando para ello la plata-
forma de flutter, el lenguaje Dart y la plataforma de almacenamiento Firebase tanto en el
core, como en el acceso. En esta arquitectura se identifican las diferentes funcionalidades que
se tienen en la solución. En el dispositivo IoT se tienen los diferentes módulos de interfaz de
conductor, la lógica de dispositivo y los módulos para las comunicaciones en lı́nea.
14 3 Sistema
*Se hace uso de una sola plataforma de desarrollo de software (Flutter de Google), de
manera tal que genere código para los conductores con dispositivos móviles Android y
IOS, como también para que genere el código de la solución Web para hacer lo procesos
de monitoreo por parte de los operadores.
La arquitectura de Flutter se basa en widgets, sin estado y con estado como se explica
en el anexo 1, de manera tal que en las situaciones donde se requiera un cambio de
estado, se reconstruye solo widget que tiene el cambio, comparando con una descripción
anterior para identificar los puntos que deben actualizarse/cambiarse. Ejemplos de
estos Widget con estado, son los de actualización de posición, geográfica, velocidad y
distancia recorrida instantáneas.
Dentro de esta categorı́a, también se encuentran los Streams que se establecen con
Firebase para hacer la grabación en tiempo real de la información del dispositivo móvil
El desarrollo de la solución se ha realizado siguiendo la practica por trabajo por com-
ponentes de negocio o BLoC (Business Logic Components) por sus siglas en inglés, de
manera que se ha utilizado el mismo código de forma independiente en la aplicación
web y la aplicación móvil. De esta manera se simplifica el desarrollo y se simplifican
las pruebas del software.
Dado que la estructura central en el desarrollo de Flutter son los Widgets, se han
tenido las siguientes consideraciones
16 4 Desarrollos
home page.
La página de login: donde encontramos la página del controlador y la página del
login o Las páginas de los portales: donde encontramos dos portales, un portal
para el conductor y otro portal para el operador.
La parte de registro, donde tenemos independiente también la parte del registro
del conductor y la parte de registro del operador
El área para los modelos de datos es decir los modelos de datos para: el almacén,
el conductor, del operador y los reportes que estamos haciendo.
El área donde se tienen las aplicaciones para hacer las definiciones de conexiones
a las bases de datos en este caso la base de datos de Firebase donde de un lado
tenemos la parte de autentificación de los usuarios de otro lado está todos los
procesos de consulta y grabación para conductor y todos los procesos de consulta
y grabación para el operador y Finalmente en todos los procesos que tienen que
ver con el intercambio de información con la base de datos y dos carpetas para lo
que son utilidades y lo que son los widgets
La estructura de carpetas para la aplicación se presenta a continuación, donde se ha
buscado claridad, y en especial para hacer depuración y seguimiento a la lógica del
negocio. Las carpetas de programas están organizadas por caracterı́sticas comunes y
sus funciones.
En el Anexo C se encuentra el diagrama de las aplicaciones, tanto para el conductor,
como para el operador.
18 4 Desarrollos
Almacen({
this.nombreAlmacen,
this.almacenLatitud,
this.almacenLongitud,
this.almacenRadio,
});
Con esta estructura de datos para el almacén se busca conocer el nombre del almacén, su
ubicación geográfica tanto de coordenadas de latitud y longitud y el radio de cobertura para
el área de venta de productos. Este radio de cobertura va a definir la geocercas, es decir el
área de trabajo de cada uno de los conductores, la idea es identificar si el conductor está
dentro o fuera del área de cobertura.
20 4 Desarrollos
Conductor({
this.id,
this.username,
this.email,
this.password,
this.placa,
this.nombreAlmacen,
});
Con esta estructura de datos para los conductores se busca identificar al conductor con un
número de identificación interna (id) para la aplicación, un nombre de usuario un correo
electrónico, un password, la placa del vehı́culo que conduce y el nombre del almacén al cual
está adscrito de manera tal que se pueda monitorear la geocerca definida para dicho almacén.
Reporte({
this.idConductor,
this.nombreConductor,
this.numeroReporte,
this.numeroPlaca,
this.horaEvento,
this.posicionLatitud,
this.posicionLongitud,
this.evento,
this.descripcion,
});
Con esta con esta estructura de datos para los reportes, se busca identificar cada una de los
eventos por los cuales se puede monitorear a los conductores.
Operador({
this.id,
this.username,
this.email,
4.3 Eventos y reportes 21
this.password,
});
Con esta estructura para los operadores se busca tener control de las personas que pueden
hacer el monitoreo de los vehı́culos, considerando que en la solución se pueden tener varias
personas y en varios turnos de trabajo. En este contexto cada operador tiene su nombre,
password, correo electrónico y su identificación interna en la aplicación.
Para lograr estos reportes en tiempo real se hace uso de los complementos disponibles para
Flutter tales como:
Google Maps para Flutter (google maps flutter): Google Maps para Flutter, el que
permite obtener la información geográfica de manera del dispositivo móvil y poder
visualizarla sobre un mapa.
Complemento de geolocalización de Flutter (geolocalizador): permite conocer la últi-
ma ubicación conocida, la ubicación actual del dispositivo y puede lograr tener las
actualizaciones de ubicación continuas.
Complemento de ubicación Flutter(location): el cual se obtiene la información de ubi-
cación del GPS.
Cabe señalar que estas utilidades o complementos de Flutter trabajan con las funcionalidades
del sistema operativo para Android o para iOS, en el caso del presente proyecto se han
utilizado dispositivos Android y se puede apreciar la tabla de precisión para cada dispositivo
en el anexo número 1. Para la plataforma Android se tiene una precisión está en alrededor
de 100 metros,
La información de localización, distancia recorrida y velocidad, se registras en tiempo real,
en la base datos de Firebase, con los siguientes datos:
ID usuario.
Placa.
Hora.
Posición.
Evento: posición.
Descripción: velocidad y distancia recorrida.
Esta información se puede visualizar por parte de los operadores de la aplicación en el centro
de seguimiento vehicular.
se está excediendo una velocidad de la ciudad (en este caso 50 km/h para la ciudad de
Bogotá) o para cuando se identifica que se ha abandonado el área de operación alrededor de
los almacenes de cadena.
Estos mismos reportes se tienen en el centro de monitoreo y seguimiento por parte de los
operadores a quienes les llega la información de estos abandonos de geocercas o excesos de
velocidad por parte de los conductores.
La forma cómo operan estos reportes es como sigue:
Para el caso de abandonos de geocerca: cada dı́a el conductor descarga la geo cerca asignada
de acuerdo con su área de operación asignada, esto es el radio de cobertura desde el almacén
de cadena en cı́rculo alrededor del almacén, por lo cual entonces se tiene en el dispositivo
móvil una aplicación que está monitoreando sı́ el móvil está dentro o fuera del área de
cobertura alrededor del almacén. Al presentarse un abandono del área de trabajo geocerca,
entonces se tiene la notificación al conductor y el envı́o de esta del registro del reporte de
abandono al centro de seguimiento para que sea visualizada por el operador.
Para el reporte de alerta por exceso de velocidad la aplicación en el dispositivo móvil está
monitoreando permanentemente la velocidad del móvil y evalúa en el momento en que el
conductor supera el lı́mite de velocidad de la ciudad de Bogotá que es de 50 km, cuando
esta situación sucede entonces el móvil envı́a aplicación en el dispositivo móvil reporte a la
central de monitoreo de manera tal que queda registrada ese exceso de velocidad
La información de alertas se registra en tiempo real, en la base datos de Firebase, con los
siguientes datos:
Reporte de abandonos de una Geo-cerca
ID usuario.
Placa.
Hora.
Posición.
Evento: Cruce geocerca.
Descripción: Entra geocerca o sale geocerca.
ID usuario.
Placa.
24 4 Desarrollos
Hora.
Posición.
Evento: exceso de velocidad.
Descripción: velocidad registrada.
En lı́nea con la legislación norteamericana y europea que se vio en la sección del Estado del
arte la aplicación tiene la capacidad de generar una serie de reportes de tipo general esto es:
La aplicación registra cada nuevo dı́a la hora cuando comienza el conductor a conducir el
vehı́culo y la hora cuando termina de conducirlo de manera tal que se puede registrar la
distancia recorrida por el vehı́culo durante el dı́a y también las horas que ha laborado, esto
es importante ya que se lleva un registro de cuánto tiempo labora el conductor y que no se
vayan a presentar excesos que puedan afectar la salud del conductor y por ende la seguridad
de la persona y de las personas donde se mueve el vehı́culo.
De otro lado la aplicación tiene la capacidad de llevar el registro de las diferentes recargas
de combustible que hace el conductor de manera tal que al final del dı́a se pueda tener un
registro de la eficiencia de combustible
La información de reportes generales se registra al inicio y fin del dı́a en la base datos de
Firebase, con los siguientes datos:
Registro de apertura y cierre de ruta
4.7 Estructura de gestión de almacenamiento (Dominio de la nube o
“cloud”) 25
ID usuario.
Placa.
Hora.
Posición.
Evento: “operacionDia”.
Descripción: “iniciaDia”, “cierreDia”.
ID usuario.
Placa.
Hora.
Posición.
Evento: horas trabajo.
Descripción: Horas en conducción.
ID usuario.
Placa.
Hora.
Posición.
Evento: distancia recorrida en el dı́a.
descripción: valor distancia recorrida.
firebase core: este paquete de widget de Firebase Core básicamente lo que nos permite
es establecer la conexión con la base de datos, es decir hacer la inicialización de la
conexión entre la aplicación cliente ya sea en el móvil o en el en la web.
cloud firestore: este paquete the cloud Store básicamente lo que nos permite es man-
tener las conexiones entre los clientes y la base de datos y permite que eventualmente
se tengan operaciones fuera de lı́nea, de manera tal que en el momento que haya co-
nectividad se hace la sincronización de los datos.
firebase app check: este paquete de firebase check es una nueva funcionalidad de segu-
ridad que tiene la base de datos de manera tal que se puedan autenticar las conexiones
entre la base de datos y el servidor o entre la base de datos y los clientes esta es una
protección que utiliza servidores de recaptcha.
Dada la estructura del proyecto de seguimiento vehicular, el uso de una base de datos NoSQL,
permite una fácil integración entre las aplicaciones desarrolladas y la base de datos Firebase,
ya que esta es como un gran objeto JSON donde puede almacenar la combinación de pares
clave/valor, descrita en los modelo de datos en el presente proyecto.
Las comunicaciones de Firebase se hacen por http sobre TCP. Las operaciones se desde
las aplicaciones en el móvil, como en la Web, se hacen empleando APIs, las cuales utilizan
RESTful y gRPC. Las aplicaciones cliente utilizan utiliza Servicio: firestore.googleapis.com,
para acceder al API de almacenamiento en la nube. Esto es acceder a la base de datos
de documentos NoSQL creados para escalado automático, alto rendimiento y facilidad de
desarrollo de aplicaciones.
5. Experimentos y Análisis de Resultados
Para el desarrollo de los experimentos, pruebas y análisis de resultados, se tomo como caso
de aplicación en logı́stica, la distribución de productos en la ciudad de Bogotá, para los
almacenes de cadena.
Se procedió entonces realizar las pruebas de Inicio de ruta, entrega de productos en diferentes
casas, y cierre de ruta. Registrando para cada caso, la localización, velocidad, distancia
recorrida, consumo de combustible, ası́ como registrando las situaciones de salidas de las
áreas de operación o geocercas.
Las coordinadas de los almacenes de las pruebas fueron:
Se fueron registrando para cada sitio, la localización, velocidad, distancia recorrida, consumo
de combustible, ası́ como registrando las situaciones de salidas de las áreas de operación o
geocercas y excesos de velocidad
En este proceso se identificaron los diferentes pasos para la operación de la aplicación, esto
es:
Una vez el conductor está haciendo el recorrido en torno al almacén de cadena entonces se
registra la velocidad de operación del vehı́culo la distancia recorrida y el posicionamiento
geográfico del mismo sobre el mapa en el celular.
5.1 Ambiento de operación 31
Durante el trayecto también el conductor del vehı́culo que está haciendo el recorrido para
alguna vı́a eleva levemente la velocidad, superando el lı́mite de velocidad arriba de 30 km/h
(Figura 5-5) y sale el área de cobertura (Figura 5-6).
Definir una nueva cerca o hacer alguna modificación a las geocercas existentes para los
almacenes de cadena (Figura 5-9).
El operador puede ir a la parte de gestión (Configuración) de conductores, para hacer
la modificación de parámetros de perfil de los conductores como: nombre, correo, placa
de vehı́culo y almacén que está operando (Figura 5-10).
El operador puede acceder a los registros de reportes de los conductores, donde puede
visualizar en lı́nea la velocidad del conductor, la localización y la distancia recorrida
por el mismo.
El operador puede ver allı́ también el registro de eficiencia de gasolina de cada vehı́cu-
lo medida como Combustible consumido entre cargas de combustible y la distancia
recorrida por el vehı́culo
5.3 Proceso de pruebas conductor 35
Para las pruebas del conductor se ubicó el vehı́culo en cada uno de los locales del de cadena,
descritos en la imagen del numeral anterior, la idea es realizar el recorrido con un vehı́culo
partiendo del Almacén de cadena y haciendo un giro en torno a la geocerca definida de ope-
ración, y a continuación se fue monitoreando a continuación la velocidad versus la velocidad
del vehı́culo y distancia recorrida.
36 5 Experimentos y Análisis de Resultados
6.1. Conclusiones
Incluir inteligencia artificial para poder hacer que el dispositivo móvil reciba informa-
ción del vehı́culo y el estado de este.
Se abre la posibilidad para desarrollar o mejor implementar la aplicación para disposi-
tivos iOS y cubrir otros mercados como por ejemplo el control de rutas escolares donde
la problemática es semejante a la de rutas de logı́stica.
Para trabajos futuros también se abre la posibilidad para poder permitir que los dueños
de los vehı́culos puedan tener acceso a la aplicación de monitoreo de manera tal que
puedan ver cómo están y dónde están sus vehı́culos y como están conduciendo los
conductores los vehı́culos.
Se abre una posibilidad para ofrecer este tipo de servicios a compañı́as de seguros
donde se requiera tener un registro del comportamiento de los conductores, de manera
tal que las pólizas de seguro se puedan asociar al buen comportamiento de conducción
de los vehı́culos.
Bibliografı́a
[1] D. L. República, “Los ocho retos de colombia para fortalecer su competitividad y superar
la crisis económica,” Tomado de google.com, 2020.
[2] Powerfleet, “How to prepare your fleet for the 3g sunset.” Tomado de
https://www.powerfleet.com/powercenter/how-to-prepare-your-fleet-for-the-3g-
sunset/, 2021.
[3] Geotab, “Don’t get left behind: 2g sunset faqs,” Tomado de
https://www.policia.gov.co/grupo-información-criminalidad/estadistica-delictiva,
2015.
[4] S. Kumar and K. B. Moore, “The evolution of global positioning system (gps) techno-
logy,” Journal of science Education and Technology, vol. 11, no. 1, pp. 59–80, 2002.
[5] T. Botos, “Ocaso de 2g/3g y simplificación de la migración a 4g lte,” Tomado de
https://neuronicworks.com/blog/2G-3G-sunset/, 2020.
[6] “Electronic logging devices.” [Online]. Available: https://www.fmcsa.dot.gov/
hours-service/elds/electronic-logging-devices
[7] M. Telematics, “Are you compliant with the eld mandate?” [Online]. Available:
https://www.mixtelematics.com/us/products/eld
[8] M. FC, “5g: How next-gen networks will transform
fleet management.” [Online]. Available: https://blog.fleetcomplete.com/
5g-how-next-gen-networks-will-transform-fleet-management
[9] Amazon, “Connected vehicle skills for alexa,” Tomado de
https://developer.amazon.com/en-US/docs/alexa/automotive/connected-vehicle-
overview.html, 2022.
[10] Colciencias, “Niveles de madurez tecnológica.” Colombia Cientı́fica, vol. Anexo 13, p. 5,
2016. [Online]. Available: https://www.colciencias.gov.co/sites/default/files/upload/
convocatoria/anexo-13-niveles-madurez-tecnologica-conv.pdf
[11] “Development.” [Online]. Available: https://flutter.dev/development
[12] “Flutter vs . Industry-leading Frameworks - The Ultimate Comparison Guide.”
[13] T. Bailey, A. Biessek, and T. Wills, Flutter for Beginners: An introductory guide to
40 Bibliografı́a
building cross-platform mobile applications with Flutter 2.5 and Dart, 2nd Edition.
Packt Publishing, 2021. [Online]. Available: https://books.google.com.co/books?id=
7qZJEAAAQBAJ
A. Anexo: Paquetes de Widget
utilizados en el proyecto
geolocalizador: 8.2.1
Un complemento de geolocalización de Flutter que brinda fácil acceso a los servicios de
ubicación especı́ficos de la plataforma (FusedLocationProviderClient o, si no está disponible,
LocationManager en Android y CLLocationManager en iOS). La geolocalización es el proceso
de identificar la ubicación fı́sica actual de un usuario cuando interactúa con su aplicación.
Caracterı́sticas:
Precisión de la ubicación
La siguiente tabla describe las opciones de precisión por plataforma:
Android iOS
El más bajo[m] 500 3000
Bajo[m] 500 1000
Medio[m] 100 - 500m 100
Alto[m] 0 - 100 10
El mejor[m] 0 - 100 0
Mejor para la navegación[m] 0 - 100 Optimizado para la navegación
geoflutterfire: 3.0.1
GeoFlutterFire es una biblioteca de código abierto que le permite almacenar y consultar un
conjunto de datos en función de su ubicación geográfica. Su principal beneficio es la posi-
bilidad de recuperar solo aquellos datos dentro de un área geográfica determinada, todo en
tiempo real. GeoFlutterFire utiliza la base de datos Firebase Firestore para el almacena-
miento de datos, lo que permite que los resultados de las consultas se actualicen en tiempo
real a medida que cambian. GeoFlutterFire carga selectivamente solo los datos cerca de cier-
tas ubicaciones, manteniendo sus aplicaciones livianas y receptivas, incluso con conjuntos de
datos extremadamente grandes. GeoFlutterFire está diseñado como un complemento ligero
para el complemento cloud firestore. Para simplificar las cosas, GeoFlutterFire almacena
datos en su propio formato dentro de su base de datos de Firestore. Esto permite que su
formato de datos existente y las reglas de seguridad permanezcan sin cambios mientras le
brinda una solución fácil para las consultas geográficas.
[9]Complemento GeoFlutterFire Enlace.
B. Anexo: Arquitectura Flutter
En el presente capitulo se describe la solución realizada, incluyendo los criterios de diseño y
algoritmos diseñados para resolver la problemática del presente proyecto de seguimiento y
monitoreo vehicular.
Flutter esta diseñado con el concepto de widgets, con lo cual de base se tiene una
biblioteca de widgets para el desarrollo de aplicaciones.
Flutter utiliza el lenguaje de programación Dart, el cual permite la generación de código
como si fuese una aplicación nativa, haciendo que el desempeño de las aplicaciones esa
bueno.
Soporte y actualizaciones oportunas de Google.
Se tiene una fuerte integración entre la Plataforma Firebase con Flutter, de manera
que se reduce la complejidad y posibilidad de error en el proceso de integración, al ser
ya soportadas las integraciones desde el móvil o Web, para el caso que nos ocupa en
el presente proyecto.
Flutter cuenta con una comunidad de desarrolladores, lo cual facilita el trabajo cola-
borativo, para resolver dudas.
En la figura B-1 se muestra como Flutter gestiona mediante el SDK de desarrollo, los
diferentes elementos fı́sicos, permitiendo que el desarrollo de la aplicación sea transparente
a la plataforma base (Android, IOS, Web, Windows o Linux) [13].
Ahora bien, el desarrollo de la aplicación esta basada en estructuras llamadas Widgets,
loa cuales en si mismo contienen la lógica de presentación o de ejecución en si misma. Por
ejemplo, cada elemento en una pantalla de la aplicación se puede representar como un widget.
La vista de la pantalla depende completamente de la elección y la secuencia de los widgets
utilizados para crear la aplicación. Y la estructura del código de una app es un árbol de
B.1 Plataforma Flutter y lenguaje Dart 47
widgets. De hecho, en Flutter se dice [13] que una aplicación es un Widget, y que se a su
vez se comen de un conjunto de Widgets, organizados como un árbol, como se muestra en
la siguiente Figura.
Estos Widgets, puede contener información estática o dinámica, de manera tal que Flutter
adicionalmente utiliza dos estructuras poderosas para la creación de aplicaciones, como lo
son los Widgets estáticos (stateless Widgets) figura B-3 y los widgets interactivos (stateful
Widgets) como se muestra en las figuras B-4.
Los widgets sin estado, se utilizan generalmente para manejar información estética.
48 B Anexo: Arquitectura Flutter
Los widgets con estado, son claves para el manejo interactivo de la información en una
aplicación, de manera que Flutter permite definir qué información es clave “refrescar”, cada
vez que dicha información cambie, sin necesidad de recargar toda la aplicación, permitiendo
mejorar el rendimiento de la aplicación y la rapidez de la misma, a la vez que consume
menos recursos. Esta estructura de widgets con estado donde se utiliza la funcionalidad de
solo Reconstruir la información que ha cambiado para reflejar la descripción del nuevo estado
ha sido ampliamente utilizada en el desarrollo de la solución de Seguimiento vehicular, ya
que aquı́ se maneja información que cambia en segundos, como lo es la posición geográfica, la
velocidad, la distancia entre otras variables, además nos permite manejar mas eficientemente
la información dinámica, por ejemplo del movimiento de un marcador que representa un
vehı́culo o vehı́culos en un mapa.
Registro Conductor
Login/Portal Operador
(Autenticación usuarios)
móvil y Wen
Recarga Combustible
Inicio Dia (Reporte) Cierre Dia (Reporte) Mapa Nombre Conductor
(Reporte)
ID Conductor ID Conductor Mostrar Mapa Registrar parada Reiniciar viaje Registro Instantáneo ID Conductor Correo Conductor
Iniciar Distancia Gasolina Cerrar Distancia Recorrida Localización Razón Parada Cierre hora Parada ID Conductor Localización Velocidad Distancia Recorrida Revisa Geocerca Registro Consumo/Distancia Password
Iniciar horas laboradas Cerrar horas laborables Velocidad Registrar hora inicios Parada Continuar horas conducidas SI sale Registro Placa vehículo
Iniciar horas conducidas Distancia Recorrida Parar horas conducidas Si entra Registro Nombre Almacén de Trabajo
Registro Conductor
Carga geocerca
(Conductores)
Home Operador
Registro
Login/ Portal Operador Operador(Autenticación
usuarios)
Registros de
ID Conductor Mostrar Mapa paradas/Horas Reporte de Alertas ID Conductor Latitud y Longitud Correo Operador
conducidas
Password