7) ❤️ Heartbeat visual (indicador de vida)

Función: drawHeartbeat()

Cada 500 ms alterna un pequeño cuadrado rojo/negro en la esquina superior izquierda.

Sirve para:

  • Confirmar que el firmware no está congelado
  • Ver que el bucle principal sigue ejecutándose
  • Detectar bloqueos de MQTT o WiFi

Es simple pero muy útil en pantallas embebidas.

8) 📡 Estado MQTT (OK / ERROR)

Función: updateMQTTStatus()

Cada 5 segundos:

  • Comprueba si client.connected()
  • Borra el área del estado
  • Escribe MQTT: OK en verde
  • O MQTT: ERROR en rojo

Esto permite saber de un vistazo si la pantalla está recibiendo datos o no.

9) 📥 Recepción de datos MQTT (callback)

Función: callback()

Del topic nestdisk/cpu/stats se extraen, entre otros, estos valores del JSON:

  • "load"
  • "cpu_temp"
  • "freq"

Y los convierte a float o int.

 

10) 🔄 Reconexion automática MQTT

Función: reconnectMQTT()

Cada 5 segundos intenta reconectar si:

  • No hay conexión
  • El broker está disponible
  • El WiFi está operativo

Si reconecta, vuelve a suscribirse al topic.

 

11) 🖼️ Actualización de valores en pantalla

Función: updateValues()

Redibuja solo cuando:

  • El valor cambia
  • O supera un umbral (ej. LOAD cambia ≥ 5%)

Esto mantiene la pantalla fluida y evita parpadeos.

 

12) 🔁 Bucle principal (loop)

El loop está limitado a 30 FPS (33 ms por frame). En cada iteración:

  • Reconexion MQTT
  • Procesamiento de mensajes
  • Heartbeat
  • Estado MQTT
  • Actualización de valores

Es un ciclo muy eficiente para un ESP32‑S3.

Tras esta descripción general del funcionamiento del firmware, pasamos ahora a uno de los elementos más distintivos de la interfaz: el logo personalizado. Su generación no es trivial y nos ha servido para entender cómo preparar gráficos compatibles con las capacidades de Open Nextion y su motor LVGL.

122
Suscribirse
Notificación
2 Comments
2
0
¡Aquí puedes dejar tus comentarios!x