UD03T03_DashboardIoT
Completion requirements
01_Enunciado_Principal
📊 ENUNCIADO GUIADO: DASHBOARD IoT - MONITOR DE SENSORES EN TIEMPO REAL
1. INTRODUCCIÓN Y CONTEXTO
📖 Descripción del Proyecto
Desarrollarás un Dashboard IoT (Internet of Things) completo utilizando JavaFX que simule el monitoreo en tiempo real de un sensor ambiental multiparamétrico. La aplicación mostrará de forma gráfica y numérica tres magnitudes físicas fundamentales:
- 🌡️ Temperatura (°C) - Rango: 10-40°C, Alerta: >35°C
- 💧 Humedad relativa (%) - Rango: 20-90%, Alerta: >80%
- 🌍 Presión atmosférica (hPa) - Rango: 980-1040 hPa, Alerta: >1035 hPa
🎯 Funcionalidades Principales
El dashboard implementará:
- ✅ Actualización automática cada 0.5 segundos mediante Timeline
- ✅ Gráfico de líneas interactivo con ventana deslizante temporal (30s)
- ✅ Sistema de alertas por umbrales configurables
- ✅ Filtros dinámicos para visualizar series específicas
- ✅ Diseño profesional tipo tarjetas (card-based UI) con CSS moderno
- ✅ Gestión de memoria limitando puntos históricos (max 200 por serie)


2. DIAGRAMA DE FLUJO GENERAL DEL SISTEMA
┌──────────────────────────────┐
│ initialize() - Controller │
│ ┌──────────────────────────┐ │
│ │1. cargarInformacionSensor│ │
│ │2. configurarEstadoInicial│ │
│ │3. iniciarTimeline() │ │
│ └──────────────────────────┘ │
└──────────┬───────────────────┘
│
┌──────────┴──────────────────┐
│ │
↓ ↓
┌────────────────────────────┐ ┌────────────────────┐
│ Timeline activo │ │ Escuchar eventos │
│ cicloPrincipal() cada 0.5s │ │ usuario (UI) │
└──────┬─────────────────────┘ └────────┬───────────┘
│ │
│ ┌──────────────────────────────┘
│ │
↓ ↓
╔═══════════════════════════════════════════╗
║ CICLO PRINCIPAL (cada 0.5s) ║
╠═══════════════════════════════════════════╣
║ 1. modelo.generarLectura() ║
║ 2. actualizarValoresMostrados() ║
║ 3. modelo.agregarPuntosASeries() ║
║ 4. actualizarEjeX() ║
║ 5. actualizarAvisos() ║
╚═══════════════════════════════════════════╝
│
↓
┌─────────────┐
│ ¿Usuario │ NO
│ cierra app? ├────────┐
└──────┬──────┘ │
│ SÍ │
↓ │
┌─────────────────┐ │
│ Diálogo │ │
│ confirmación │ │
└──────┬──────────┘ │
│ │
↓ │
┌─────────────────┐ │
│ timeline.stop() │ │
│ Platform.exit() │ │
└──────┬──────────┘ │
│ │
↓ │
┌─────────────┐ │
│ FIN APP │ │
└─────────────┘ │
│
← ← ← ← ← ← ← ←┘
(Continuar ciclo)
3. ESTRUCTURA DE ARCHIVOS
📁 Organización Completa del Proyecto
📦 UD03T03_DashboardIoT/
┃
┗ 📂 src/
┗ 📂 dam/
┃
┣ 📜 UD03T03_DashboardIoT.java
┃ └─ Clase principal (extends Application)
┃
┣ 📂 modelo/
┃ ┗ 📜 IotModel.java
┃ └─ Lógica de negocio
┃ • Generación de lecturas simuladas
┃ • Gestión de series XYChart
┃ • Validación de umbrales
┃ • Cálculo de límites de ejes
┃ • Formateo de datos
┃
┣ 📂 controller/
┃ ┗ 📜 DashboardController.java
┃ └─ Controlador MVC
┃ • @FXML componentes UI
┃ • initialize()
┃ • Gestión de Timeline
┃ • Manejadores de eventos
┃ • Actualización de vista
┃
┗ 📂 vista/
┣ 📜 Dashboard.fxml
┃ └─ Interfaz gráfica (XML)
┃
┗ 📜 dashboard.css
└─ Estilos visuales
4. 🖥️ ELEMENTOS DEL DASHBOARD (Vista)
La interfaz gráfica debe mostrar cinco zonas claramente diferenciadas:
-
Card de información del sensor
- Nombre del sensor
- Modelo
- Ubicación
- Fecha y hora de la última medición
-
Card de valores actuales
- Temperatura actual
- Humedad actual
- Presión actual
-
Zona de filtros
- CheckBox para Temperatura
- CheckBox para Humedad
- CheckBox para Presión
El gráfico mostrará únicamente las magnitudes seleccionadas.
-
Gráfico
- Tipo LineChart
- Eje X: tiempo (simulado)
- Eje Y: valor medido
-
Card de avisos
- Muestra mensajes cuando algún valor supera un máximo establecido