Skip to content

Instantly share code, notes, and snippets.

@OrdinaryScript
Last active March 8, 2024 00:18
Show Gist options
  • Save OrdinaryScript/fd71fc1c9b413a2f00469c5d4424eab2 to your computer and use it in GitHub Desktop.
Save OrdinaryScript/fd71fc1c9b413a2f00469c5d4424eab2 to your computer and use it in GitHub Desktop.

Proyecto IoT para la Optimización de la Gestión de Residuos en Ciudades

Alcances

1. Desarrollo del Sistema IoT

  • Se desarrollará un sistema IoT completo para la gestión eficiente de residuos en entornos urbanos.
  • Se utilizarán sensores para la recopilación de datos en tiempo real sobre los niveles de llenado de los contenedores de residuos.

2. Plataforma de Monitoreo y Control

  • Implementación de una plataforma centralizada para monitorear y controlar el sistema IoT.
  • La plataforma permitirá visualizar el estado de los contenedores, generar informes y gestionar alertas en tiempo real.

3. Optimización de Rutas de Recolección

  • Integración de algoritmos de optimización para determinar las rutas más eficientes de recolección de residuos.
  • El sistema considerará la capacidad actual de los contenedores y minimizará los tiempos y costos de recolección.

4. Interfaz de Usuario Intuitiva

  • Desarrollo de una interfaz de usuario amigable para facilitar la interacción con la plataforma.
  • Los usuarios podrán acceder a informes, mapas y estadísticas sobre la gestión de residuos en tiempo real.

5. Compatibilidad con Dispositivos IoT Comunes

  • El sistema será compatible con una variedad de dispositivos IoT y sensores disponibles en el mercado.
  • Se buscará la interoperabilidad para garantizar la expansión y actualización futura del sistema.

6. Análisis del Sistema

  • Se realizará un análisis detallado de los requisitos del sistema, considerando aspectos de escalabilidad y flexibilidad.
  • Evaluación continua para garantizar que el sistema cumpla con las necesidades cambiantes de la ciudad y las tecnologías emergentes.

Limitantes

1. Infraestructura de Sensores

  • La eficiencia del sistema dependerá de la disponibilidad y confiabilidad de la infraestructura de sensores en la ciudad.
  • La falta de sensores en áreas específicas puede limitar la precisión de la información recopilada.

2. Conectividad de Red

  • La calidad de la conectividad de red puede afectar la transmisión de datos entre los dispositivos IoT y la plataforma central.
  • Las áreas con mala cobertura podrían experimentar demoras o pérdida de datos.

3. Seguridad y Privacidad

  • Se debe prestar especial atención a la seguridad de los datos recopilados para evitar posibles violaciones de privacidad.
  • La implementación de medidas de seguridad robustas es crucial para proteger la integridad de la información.

4. Costos de Implementación

  • Los costos asociados con la instalación de sensores, dispositivos IoT y la infraestructura de red pueden ser significativos.
  • La viabilidad económica del proyecto dependerá de la inversión inicial y los costos operativos a largo plazo.

5. Adopción por Parte de la Comunidad

  • La aceptación y participación activa de la comunidad son esenciales para el éxito del proyecto.
  • La resistencia al cambio o la falta de conciencia pueden limitar la efectividad del sistema.

Opciones de Lenguajes de Programación

El desarrollo del sistema se realizará utilizando Python como lenguaje principal de programación. Se ha tomado esta decisión por las siguientes razones:

  • Amplia Comunidad y Recursos: Python cuenta con una comunidad activa y una amplia variedad de recursos que facilitarán el desarrollo y la resolución de problemas.

  • Bibliotecas Especializadas: La rica colección de bibliotecas en Python, como Pandas para manipulación de datos y Flask para el desarrollo web, se alinea bien con los requisitos del proyecto.

  • Facilidad de Lectura y Mantenimiento: Python es conocido por su sintaxis clara y legible, lo que facilita la colaboración y el mantenimiento del código a lo largo del tiempo.

  • Versatilidad y Escalabilidad: Python es versátil y escalable, lo que permitirá la expansión y la adaptación del sistema a medida que evolucionen las necesidades de la ciudad.

Además del lenguaje principal, se pueden utilizar tecnologías complementarias como MQTT para la comunicación entre dispositivos IoT, y bases de datos como MongoDB para almacenar y recuperar datos de manera eficiente.

Recursos Adicionales

  • Se explorarán servicios en la nube, como AWS o Azure, para alojar la plataforma centralizada y garantizar la escalabilidad del sistema.
  • El uso de contenedores, por ejemplo, Docker, se considerará para simplificar la implementación y gestión del sistema en diferentes entornos.

Imagen del Proyecto

Firefly Genera un diagrama, tema prinicipal la gestion de residuos 8866

Entrevista a Diego Saul

Entrevistador: Buenas tardes, Diego. Gracias por tomarte el tiempo para esta entrevista. Para comenzar, ¿puedes hablarnos un poco más sobre las operaciones actuales en Acer a Change relacionadas con la gestión de residuos?

Diego: Buenas tardes. Claro, en Acer a Change nos dedicamos a implementar soluciones para el buen uso de residuos. Actualmente, gestionamos muchas de nuestras actividades de manera manual, utilizando hojas de cálculo y correos electrónicos para agilizar las entregas.

Entrevistador: Entendido. ¿Cuáles son las principales dificultades o desafíos que enfrentan actualmente al gestionar los residuos manualmente?

Diego: La principal dificultad es la falta de eficiencia. Dependemos en gran medida de hojas de cálculo y correos electrónicos, lo que puede ser lento y propenso a errores. Además, la productividad del proyecto se ve afectada debido a la falta de una solución más automatizada y especializada en la gestión de residuos.

Entrevistador: ¿Puedes describir específicamente cuáles son las tareas o procesos que consumen más tiempo y recursos actualmente?

Diego: Sí, por ejemplo, la asignación manual de tareas y la coordinación de las entregas son procesos que toman mucho tiempo. Además, la falta de visibilidad en tiempo real sobre el estado de las operaciones también es un problema.

Entrevistador: Entiendo. ¿Qué funcionalidades específicas esperarías de un sistema de gestión de residuos que podría ayudar a resolver estos problemas y mejorar la eficiencia?

Diego: En primer lugar, necesitamos una forma más automatizada de asignar tareas y coordinar las entregas. También sería útil tener un seguimiento en tiempo real del estado de las operaciones. Además, cualquier funcionalidad que simplifique la generación de informes y la recopilación de datos sería de gran ayuda.

Entrevistador: ¿Cómo imaginas que podría integrarse un nuevo sistema en su flujo de trabajo actual? ¿Hay alguna preferencia en términos de plataformas o aplicaciones que ya estén utilizando?

Diego: Estamos abiertos a cualquier solución que se integre fácilmente con nuestras operaciones actuales. Preferiblemente, una solución que pueda funcionar bien con hojas de cálculo y correo electrónico, ya que son herramientas que usamos regularmente.

Entrevistador: Por último, ¿hay algún requisito específico en cuanto a la seguridad o el acceso a la información, considerando la sensibilidad de los datos relacionados con la gestión de residuos?

Diego: Sí, la seguridad es una preocupación importante para nosotros. Necesitamos asegurarnos de que cualquier sistema que implementemos cumpla con los estándares de seguridad y garantice la confidencialidad de la información.

Entrevistador: Perfecto, Diego. Gracias por proporcionar esa información detallada. Con esto, podemos empezar a trabajar en una solución que se adapte a las necesidades específicas de Acer a Change. Estaremos en contacto pronto con propuestas y posibles soluciones. ¿Hay algo más que quieras agregar antes de finalizar la entrevista?

Diego: No, eso sería todo. Estoy ansioso por ver cómo pueden ayudarnos. Gracias por su tiempo.

Entrevistador: El placer es nuestro, Diego. Estamos aquí para ayudar. Nos pondremos en contacto pronto con los avances. ¡Que tengas un buen día!


Patrones de Diseño para un Sistema de Lote

  1. Patrón de Diseño de Lote:

    • Descripción: Define la estructura básica para representar un lote de productos.
    • Aplicación: Cada instancia de este patrón representa un lote específico y contiene información relevante, como la fecha de producción, la cantidad de productos y la información de seguimiento.
  2. Patrón de Diseño de Rastreo:

    • Descripción: Permite el seguimiento de productos desde su producción hasta su distribución.
    • Aplicación: Cada lote tiene un mecanismo de rastreo que registra su ubicación y estado en cada etapa del proceso, proporcionando visibilidad completa a lo largo de la cadena de suministro.
  3. Patrón de Diseño de Validación de Lote:

    • Descripción: Define un conjunto de reglas para validar la integridad y calidad de un lote.
    • Aplicación: Antes de que un lote avance a la siguiente etapa del proceso, se aplica una validación para asegurarse de que cumple con los estándares establecidos.
  4. Patrón de Diseño de Historial de Lote:

    • Descripción: Registra y almacena el historial completo de un lote a lo largo del tiempo.
    • Aplicación: Facilita la recuperación de información histórica sobre un lote específico, lo que puede ser útil para análisis retrospectivos o auditorías.
  5. Patrón de Diseño de Notificación de Estado de Lote:

    • Descripción: Permite la emisión de notificaciones automáticas sobre cambios importantes en el estado de un lote.
    • Aplicación: Notifica a los interesados cuando un lote se ha producido, ha sido validado, o ha alcanzado una etapa crítica en su ciclo de vida.
  6. Patrón de Diseño de Control de Inventario:

    • Descripción: Define cómo gestionar y mantener actualizado el inventario de lotes.
    • Aplicación: Proporciona métodos para añadir nuevos lotes al inventario, actualizar cantidades disponibles y gestionar el agotamiento de existencias.
  7. Patrón de Diseño de Seguridad de Lote:

    • Descripción: Aborda cuestiones de seguridad relacionadas con la autenticidad y protección de la información del lote.
    • Aplicación: Implementa medidas de seguridad para garantizar que la información del lote no sea comprometida y que solo usuarios autorizados tengan acceso.

Patrones de diseños en lenguaje de programación Python

Patrones de Diseño para un Sistema de Lote en Python

1. Patrón de Diseño de Lote

Descripción: Define la estructura básica para representar un lote de productos.

Aplicación:

class Lote:
    def __init__(self, fecha_produccion, cantidad_productos, informacion_seguimiento):
        self.fecha_produccion = fecha_produccion
        self.cantidad_productos = cantidad_productos
        self.informacion_seguimiento = informacion_seguimiento

Captura de pantalla 2024-03-07 160909

2. Patrón de Diseño de Rastreo

Descripción: Permite el seguimiento de productos desde su producción hasta su distribución.

Aplicación:

class RastreoLote:
    def __init__(self, lote):
        self.lote = lote
        self.historial_rastreo = []

    def agregar_etapa_rastreo(self, ubicacion, estado):
        self.historial_rastreo.append({"ubicacion": ubicacion, "estado": estado})

Captura de pantalla 2024-03-07 161135

3. Patrón de Diseño de Validación de Lote

Descripción: Define un conjunto de reglas para validar la integridad y calidad de un lote.

Aplicación:

class ValidacionLote:
    @staticmethod
    def validar_lote(lote):
        # Implementar reglas de validación
        if lote.cantidad_productos > 0:
            return True
        else:
            return False

Captura de pantalla 2024-03-07 161118

4. Patrón de Diseño de Historial de Lote

Descripción: Registra y almacena el historial completo de un lote a lo largo del tiempo.

Aplicación:

class HistorialLote:
    def __init__(self, lote):
        self.lote = lote
        self.registros_historial = []

    def agregar_registro_historial(self, evento, fecha):
        self.registros_historial.append({"evento": evento, "fecha": fecha})

Captura de pantalla 2024-03-07 161107

5. Patrón de Diseño de Notificación de Estado de Lote

Descripción: Permite la emisión de notificaciones automáticas sobre cambios importantes en el estado de un lote.

Aplicación:

class NotificadorLote:
    def __init__(self, lote):
        self.lote = lote

    def notificar_cambio_estado(self, mensaje):
        # Implementar lógica de notificación
        print(f"Notificación: {mensaje}")

Captura de pantalla 2024-03-07 161045

6. Patrón de Diseño de Control de Inventario

Descripción: Define cómo gestionar y mantener actualizado el inventario de lotes.

Aplicación:

class InventarioLotes:
    def __init__(self):
        self.lista_lotes = []

    def agregar_lote(self, lote):
        self.lista_lotes.append(lote)

    def actualizar_cantidad_disponible(self, lote, nueva_cantidad):
        lote.cantidad_productos = nueva_cantidad

Captura de pantalla 2024-03-07 161032

7. Patrón de Diseño de Seguridad de Lote

Descripción: Aborda cuestiones de seguridad relacionadas con la autenticidad y protección de la información del lote.

Aplicación:

class SeguridadLote:
    def __init__(self, lote):
        self.lote = lote

    def validar_autenticidad(self, usuario):
        # Implementar lógica de autenticación
        if usuario.autorizado:
            return True
        else:
            return False

Captura de pantalla 2024-03-07 160909

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment