SuperDMZ
Volver al blog
🛠️
Actualizaciones · · Equipo SuperDMZ

SuperDMZ Arduino v1.1.0: ProvisioningPortal production-grade + nuevo ejemplo SmartIoT

Cuatro horas después de v1.0.2 lanzamos v1.1.0 con los dos ejemplos que faltaban para que alguien convierta la biblioteca en producto real. Captive portal con scan de WiFi, dashboard live por el tunnel, OTA por el propio tunnel y botón GPIO0 con reconfig parcial.

Qué cambió

Recibimos un feedback objetivo justo después del lanzamiento: "los ejemplos no llegan hasta producto — quiero captive portal para config de WiFi, dashboard para ver estado del SuperDMZ y telemetría de sensor". Justo. v1.1.0 lo entrega.

ProvisioningPortal reescrito (production-grade)

El ejemplo sigue llamándose ProvisioningPortal pero todo cambió por dentro:

  • Scan de redes WiFi dentro del captive portal — el cliente final elige el SSID en un dropdown ordenado por RSSI con barritas visuales (▂▄▆█), en vez de escribir el nombre de la red a mano y equivocarse la primera vez.
  • Transición AP→STA sin reboot — después de guardar la config, el ESP entra directo en modo cliente. Antes había que reiniciar; ahora aparece la página "Saved" y en 5 segundos el tunnel está activo.
  • Dashboard live servida por el propio tunnel mostrando 3 cards: estado del SuperDMZ (URL pública, bytes in/out), WiFi (SSID, IP, RSSI con barritas, MAC) y Sistema (chip, free heap, uptime). Auto-refresh cada 5 s vía /api/status.
  • Botón GPIO0 (BOOT) con dos modos:
    • Mantén 3 segundos: limpia solo WiFi, mantiene el token, vuelve al modo AP. Útil cuando el cliente cambia de red.
    • Mantén 10 segundos: factory reset completo, limpia todo incluyendo el token. Útil para revender el dispositivo.
  • SSID del AP derivado del MAC: SuperDMZ-Setup-A4F2. En una sala con 10 ESPs cada uno aparece con sufijo único — sin colisión.

Nuevo ejemplo: SmartIoT (template completo)

Para quien quiere ir más directo, el ejemplo SmartIoT tiene todo de ProvisioningPortal más:

  • Telemetría de sensores — temperatura y humedad. El ejemplo usa valores sintéticos con random walk para correr en cualquier placa sin hardware extra. Reemplazas readTempC() y readHumidity() por lectura real de tu DS18B20/BME280/SHT3x/etc.
  • Sparkline de temperatura en el dashboard — gráfico simple en vanilla JS (sin Chart.js u otras libs externas) mostrando los últimos 60 segundos de lectura.
  • Endpoint JSON /api/telemetry con todo (sensores, estado del tunnel, WiFi, sistema) para integración con sistemas externos. Haz curl de la URL pública y tienes el estado completo del dispositivo en un GET.
  • OTA por el propio tunnel — POST de un .bin en /api/ota y el ESP graba firmware nuevo y reinicia. Update remoto desde cualquier lugar del planeta sin acceso físico, sin red local, sin servidor extra.
  • Botón Reboot en el dashboard para reinicio remoto.

Cuál elegir

Depende de dónde estés en el ciclo:

EjemploLíneasPara qué
HelloWorld~50Probar la biblioteca en 5 min. Credenciales hardcoded.
WebServerBridge~80Integrar con tu proyecto que ya usa ESPAsyncWebServer.
ProvisioningPortal~280Dispositivo IoT real sin sensor — cámara, panel de control, gateway, etc.
SmartIoT~380Template para producto comercial completo, con sensor y telemetría.

Cómo actualizar

En el Arduino IDE: el Library Manager detecta la versión nueva en hasta 1 hora. Abre Sketch → Include Library → Manage Libraries…, busca SuperDMZ, clic en Update. Puedes forzarlo antes descargando el ZIP de v1.1.0 e instalándolo vía Add .ZIP Library.

En PlatformIO: el ^1.0.2 que tenías en tu platformio.ini ya va a tomar v1.1.0 en el próximo pio pkg update (semver caret cubre toda la major).

Repo e issues

Código, ejemplos y roadmap: github.com/superdmz/SuperDMZ-Arduino. Pedidos de feature (próxima placa, próximo recurso) y bugs: issues de GitHub.

Próxima: v1.1.x si aparecen bugs. Próxima major v1.2: Arduino UNO R4 WiFi y MKR WiFi 1010.


¿Quieres probar SuperDMZ?

Plan gratuito sin tarjeta de crédito. En menos de 60 segundos tu primer túnel está en línea.

Crear cuenta gratis

Más en Actualizaciones