import streamlit as st
import time
# Configuración de la página
st.set_page_config(page_title="Smart System Monitor", layout="wide")
st.title("📡 Smart System Monitoring Dashboard")
st.write("Visualización en tiempo real de los módulos ESP32")
# --- DICCIONARIOS CON DATOS DE SENSORES ---
temp = {
"ESP1": 21.5,
"ESP2": None, # Módulo con falla o desconectado
"ESP3": 19.8
}
humid = {
"ESP1": 65,
"ESP2": 0,
"ESP3": 58
}
weight = {
"ESP1": 1.2,
"ESP2": None,
"ESP3": 1.5
}
# Botón para iniciar la simulación de lectura
if st.button("▶ Iniciar Lectura de Sensores"):
# 1. VISUALIZACIÓN DE TEMPERATURA
st.subheader("🌡️ Lecturas de Temperatura (°C)")
cols_temp = st.columns(len(temp))
for idx, (dispositivo, valor) in enumerate(temp.items()):
with cols_temp[idx]:
if valor is None:
st.metric(label=dispositivo, value="Sin señal", delta="Error", delta_color="inverse")
else:
st.metric(label=dispositivo, value=f"{valor} °C")
time.sleep(1) # Pausa para simular carga progresiva
# 2. VISUALIZACIÓN DE HUMEDAD
st.subheader("💧 Lecturas de Humedad (%)")
cols_humid = st.columns(len(humid))
for idx, (dispositivo, valor) in enumerate(humid.items()):
with cols_humid[idx]:
if valor == 0 or valor is None:
st.metric(label=dispositivo, value="0 %", delta="Falla Sensor", delta_color="inverse")
else:
st.metric(label=dispositivo, value=f"{valor} %")
time.sleep(1)
# 3. VISUALIZACIÓN DE PESO
st.subheader("⚖️ Lecturas de Peso (kg)")
cols_weight = st.columns(len(weight))
for idx, (dispositivo, valor) in enumerate(weight.items()):
with cols_weight[idx]:
if valor is None:
st.metric(label=dispositivo, value="N/A", delta="Offline", delta_color="inverse")
else:
st.metric(label=dispositivo, value=f"{valor} kg")
time.sleep(1)
st.success("✅ Monitoreo completado exitosamente.")