El proyecto AgroLogistics pretende integrar diferentes tecnologías IoT (Internet of Things) y técnicas de procesamiento de información en tiempo real, para facilitar la gestión de todos los procesos y recursos involucrados en la logística de productos agrícolas. En particular, el proyecto desarrollará diferentes aplicaciones (web y móviles), interconectadas entre sí, que facilitarán a productores, compradores y centros logísticos la planificación y ordenación de su actividad, a fin de evitar colas y largos tiempos de espera en las entregas y recogidas de mercancías.
Los principales objetivos y beneficios esperados del proyecto fueron ya descritos en un post anterior. El primer paso hacia la consecución de dichos objetivos ha sido diseñar el modelo de datos que permitirá a los distintos componentes del sistema guardar e intercambiar la información necesaria. Antes de detallar el modelo de datos desarrollado, describiremos un posible escenario de uso que nos ayudará a introducir los distintos elementos considerados y la información de cada uno de ellos que precisa manejar el sistema.
Consideremos un escenario en el que un centro logístico, que llamaremos “LogEx”, se encarga de recepcionar, almacenar y vender distintos productos agrícolas. Para ello, cuenta con varios almacenes, cada uno de ellos con una capacidad y condiciones distintas. Entre los productores que llevan sus cosechas a LogEx para que éste gestione su venta, encontramos a la empresa “ProductorEx”, que recoge distintos productos según la temporada. Asimismo, entre las empresas (mayoristas y minoristas) que compran sus productos agrícolas, entre otros centros logísticos, a LogEx, encontramos a la empresa “ConsumEx”.
Los productores suelen informar a los centros logísticos de las fechas estimadas para la recogida de sus cosechas, así como de la cantidad de kilos que esperan recoger y la categoría esperada de sus productos. Por su parte, los consumidores, suelen comparar los precios y la disponibilidad prevista de los distintos productos en los que están interesados en varios centros logísticos. Una vez deciden dónde comprar un producto y de qué categoría, suelen reservar la compra de un determinado número de kilos al precio establecido para su recogida en una fecha. El precio de cada producto (por categoría) podrá variar en el tiempo y lo fijará cada centro logístico en función de la oferta y la demanda prevista, así como del tamaño de cada pedido.
Partiendo del escenario anterior, a continuación se presenta el modelo de datos desarrollado para AgroLogistics, que será utilizado por los distintos componentes del sistema a través de una API. La arquitectura software completa del sistema, incluido el detalle de cada uno de sus componentes, se detallará en el próximo artículo.
El modelo de datos desarrollado, resumido en la siguiente figura, sigue un esquema relacional ya que la base de datos elegida para persistir la información del sistema ha sido MySQL.
A continuación, se detalla la información que almacenará cada una de las tablas recogidas en el modelo de datos anterior:
- Product. Almacena toda la información relacionada con los productos que gestiona el sistema. Cada producto está relacionado con: ActualStock, EstimatedStock, ProducerTransaction, ProducerEvent, ConsumerEvent y ConsumerTransaction.
- Producer. Almacena la información relativa a los productores del sistema. Cada productor está relacionado con: ProducerTransaction y ProducerEvent.
- Consumer. Almacena la información relativa a los consumidores de productos del sistema. Cada consumidor está relacionado con: ConsumerTransaction y ConsumerEvent.
- LogisticCenter. Almacena la información disponible sobre los distintos centros logísticos que gestiona el sistema. Cada centro logístico está relacionado con ActualStock, EstimatedStock, ProducerTransaction, ProducerEvent, ConsumerEvent y ConsumerTransaction.
- ActualStock. Almacena los kilogramos de cada producto almacenados en cada centro logístico.
- EstimatedStock. Almacena los kilogramos de cada producto que está previsto tener en cada centro logístico, teniendo en cuenta las entradas y salidas previstas/reservadas. Se calculará en función de los eventos y transacciones de productores y consumidores.
- ProducerEvent. Almacena los datos de los productos que tienen previsto entregar los productores.
- ProducerTransaction. Registra la entrega efectiva de un producto por parte de un productor (la cantidad/categoría del producto realmente entregado no tiene por qué coincidir con lo inicialmente previsto por el productor).
- ConsumerEvent: Almacena los datos de los productos que tiene previsto recoger del centro logístico un consumidor.
- ConsumerTransaction: Registra la recogida efectiva de un producto por parte de un consumidor (la cantidad/categoría del producto realmente recogido no tiene por qué coincidir con lo inicialmente previsto por el consumidor).
Para más información pueden contactar con cualquiera de los miembros del equipo de AgroLogistics:
- Cristina Vicente Chicote (cristinav@unex.es)
- José Ramón Lozano Pinilla (jolozanop@alumnos.unex.es)
- Lorenzo Gabriel Ceballos Bru (lceballoo@alumnos.unex.es)
El proyecto AgroLogistics ha sido seleccionado como uno de los proyectos ganadores de la Convocatoria abierta a Proyectos IoT para el Sector Agroganadero de la Cátedra Telefónica de la UEx para el curso 2021-2022.