Cuando el mayor enemigo no era el hardware… sino el silencio del repositorio
Si superar las incompatibilidades entre Arduino y macOS Tahoe ya había sido un desafío inesperado, lo que vino después no fue precisamente más amable. Estamos acostumbrados a abordar nuevos proyectos apoyándonos en ejemplos previos, pequeñas piezas de código que nos sirven como guía para entender cómo funciona un dispositivo o una librería antes de construir algo más complejo. Es una forma de trabajar que nos ha permitido aprender nuevos lenguajes y plataformas con rapidez, siempre partiendo de una base sólida. Pero en el caso del Open Nextion, ese punto de partida simplemente no existía. No había ejemplos oficiales en Arduino, ni proyectos de referencia, ni siquiera fragmentos de código que mostraran cómo inicializar la pantalla o gestionar el bus RGB. Era como intentar montar un mueble sin instrucciones, sin foto y sin saber si faltaban piezas.
Aun así, y aunque nos obligó a invertir muchas más horas de las previstas, fuimos avanzando mediante prueba y error, desentrañando cada detalle del dispositivo hasta conseguir que todo funcionase como queríamos. Fue un proceso lento, sí, pero también enormemente revelador: al no tener nada en lo que apoyarnos, terminamos comprendiendo el Open Nextion desde dentro, pieza a pieza, hasta dominarlo … un mínimo, al menos.
Para que nadie tenga que repetir el mismo proceso de tanteo y frustración que vivimos al principio, hemos subido a nuestro repositorio de GitHub todo el código ya funcionando y organizado tal como lo utilizamos en nuestro proyecto. La documentación no consiste en un tutorial paso a paso, sino en comentarios dentro del propio archivo .ino que intentar explicar claramente los distintos módulos en los que está estructurado el programa y la función que cumple cada uno. Es justo el tipo de guía que nos habría gustado tener cuando empezamos
Módulos principales del firmware CPU‑MONITOR
CPU‑MONITOR es un proyecto en Arduino diseñado para mostrar en una pantalla Open Nextion los datos internos del NestDisk, publicados previamente en Home Assistant mediante MQTT. El código completo del firmware, incluyendo el .ino final está disponible en el repositorio oficial: CPU‑MONITOR‑OpenNextion. El objetivo es ofrecer un panel visual autónomo, fluido y moderno que permita consultar en tiempo real el estado del sistema.
El firmware final de la versión actual CPU‑MONITOR está organizado en varios módulos bien diferenciados, cada uno responsable de una parte concreta del funcionamiento de la pantalla Open Nextion. Esta estructura modular hace que el código sea fácil de mantener y que cada componente tenga una función clara.
1) Inicialización del display (LovyanGFX + ST7789)
El proyecto utiliza LovyanGFX para controlar el panel ST7789 integrado en el Open Nextion. En este módulo se configuran:
- Bus SPI
- Panel ST7789
- Backlight PWM
- Rotación, profundidad de color y brillo
Es la base gráfica sobre la que se dibuja toda la interfaz.
2) Variables globales y estados
Aquí se almacenan:
- Últimos valores recibidos (
loadValue,tempValue,freqValue) - Valores previos para evitar redibujar innecesariamente
- Colores de estado (OK, Warning, Alarm…)
- Temporizadores para MQTT y heartbeat
Este módulo permite que la interfaz sea eficiente y no parpadee.
3) Cálculo de estados
Función clave: getStateVar()
Clasifica cada métrica en un estado:
- 1 = OK
- 2 = Warning
- 3 = Alarm2
- 4 = Alarm
Cada rango está ajustado a valores reales del NestDisk (temperatura, carga y frecuencia).
4) Dibujo de iconos animados
Tres funciones:
drawIconCPU()drawIconTemp()drawIconFreq()
Cada icono tiene una animación proporcional al estado (más actividad = más movimiento). Esto da vida al panel sin afectar al rendimiento.
5) Paneles estáticos y dinámicos
Dos módulos:
drawPanelStatic()→ fondo, marco, valor numéricodrawPanelIcon()→ icono animado sincronizado con el estado
El sistema solo redibuja cuando el valor cambia o supera un umbral, evitando flicker.
6) Interfaz estática completa
drawStaticUI() dibuja:
- Título “CPU MONITOR”
- Topic MQTT (
nestdisk/cpu/stats) - Tres paneles (Load, Temp, Freq)
- El logo PNG generado para Open Nextion
- Marcos y tipografías
Esta parte solo se ejecuta una vez al inicio.
108
Se nos había pasado incluir el pequeño vídeo que hemos hecho sobre CPU-MONITOR
Y también como no la «demo oficial» de Nextion … aunque es más bonita la nuestra ¿no?