Lanzamos SuperDMZ para ESP32 y el camino hasta el Arduino Library Manager
La biblioteca SuperDMZ para Arduino ya está disponible para instalar directamente desde el IDE. Cuatro líneas de código convierten cualquier ESP32 en una dirección pública https://tu-host.dmzgate.com. Aprovechamos también para contar el camino de publicación en GitHub y los bastidores del release.
Por qué ESP32 entra en SuperDMZ
Casi la mitad de los mensajes que llegan a nuestro soporte son alguna variación de: "tengo un sensor/cámara/panel funcionando en un ESP, ¿puedo exponerlo por SuperDMZ sin instalar el cliente en un PC al lado?". Respuesta ahora: sí, y con cuatro líneas de código.
El cliente Windows/Linux/macOS es genial cuando hay un host con sistema operativo en el borde. Para IoT esa exigencia es fricción: el dispositivo ya es el "PC". Forzar una máquina intermedia solo para correr el tunnel encarece el producto, aumenta la superficie de falla y agrega un cable más para mantener.
La biblioteca SuperDMZ que publicamos hoy resuelve esto embebiendo el protocolo del tunnel directamente en el firmware del ESP32. El dispositivo se conecta solo al nodo SuperDMZ por WebSocket TLS y queda accesible en https://<tu-host>.dmzgate.com con cert válido de Let's Encrypt — sin IP fija, sin abrir puertos del router, sin cloud externa.
Compatibilidad
Soportamos toda la familia ESP32:
- ESP32 clásico (WROOM-32, WROVER)
- ESP32-S2 y ESP32-S3
- ESP32-C3 y ESP32-C6 (RISC-V)
- Arduino Nano ESP32 — funciona directo, es un ESP32-S3 en formato Nano
ESP8266 queda oficialmente fuera — el mbedtls embebido tiene heap insuficiente para mantener WSS estable en producción. Quien quiera experimentar de todos modos puede compilar con algo de esfuerzo, pero no lo recomendamos para deploy real.
Ya tenemos roadmap trazado para Arduino UNO R4 WiFi (v1.1), MKR WiFi 1010 / Nano 33 IoT (v1.2), Portenta H7 / Giga R1 WiFi (v1.3) y Raspberry Pi Pico W (v2.0). Cada una es portar la capa de red a la biblioteca específica del chip (WiFiS3.h, WiFiNINA.h, MbedOS WiFi, etc.) — la misma API pública.
Cómo instalar
En Arduino IDE 2.x:
- Sketch → Include Library → Manage Libraries…
- Busca
SuperDMZ - Clic en Install. Las dependencias (
WebSocketsde Markus Sattler yArduinoJsonde Benoit Blanchon) se ofrecen en el mismo prompt.
En PlatformIO:
; platformio.ini
lib_deps =
superdmz/SuperDMZ@^1.0.2
Hello World
Cuatro líneas para subir un ESP32 hablando con el mundo:
#include <WiFi.h>
#include <WebServer.h>
#include <SuperDMZ.h>
WebServer server(80);
SuperDMZ tunnel;
void setup() {
WiFi.begin("YOUR_WIFI", "YOUR_PASS");
while (WiFi.status() != WL_CONNECTED) delay(200);
server.on("/", [](){ server.send(200, "text/html", "<h1>Hello</h1>"); });
server.begin();
tunnel.begin("PASTE_YOUR_48_HEX_TOKEN", 80);
}
void loop() {
server.handleClient();
tunnel.loop();
}
Compila, graba, abre el Serial Monitor a 115200 baud. En ~5 segundos:
[wifi] OK, IP = 192.168.1.42
[http] local WebServer on port 80
[SuperDMZ] connecting wss://spo1.nodes.superdmz.com:443/ws/tunnel ...
[SuperDMZ] ONLINE: https://your-host.dmzgate.com -> http://localhost:80
Listo. Abre la URL pública en cualquier celular del otro lado del planeta y la página del ESP responde.
El camino hasta el Arduino Library Manager
Para que la biblioteca aparezca en el Library Manager oficial del IDE para cualquier persona del mundo, tiene que ser aceptada en el índice mantenido por Arduino. El flujo es todo público en GitHub y lleva unos 30 minutos de principio a fin cuando todo está en orden.
Resumen de lo que hicimos:
- Repo público en github.com/superdmz/SuperDMZ-Arduino con el código, ejemplos,
library.properties,library.json,LICENSE,keywords.txtyCHANGELOG.md. - Tag semver apuntando al commit del release (
1.0.1). - GitHub Actions de CI ejecutando
arduino/arduino-lint-actionen modo strict másarduino/compile-sketchescompilando los ejemplos en una matriz de seis placas ESP32 — garantiza regresión cero en futuros releases. - Fork de
arduino/library-registry, agregar una línea alrepositories.txtcon el URL de nuestro repo, abrir PR. - El bot de Arduino corre la verificación automática (más rigurosa que nuestro CI local), comenta el resultado, y mergea si todo está verde.
- El indexer de Arduino sincroniza el índice cada hora. En el próximo refresh del Library Manager dentro del IDE, la biblioteca aparece para todos en el mundo.
Detalle importante: para releases futuros (v1.0.2, v1.1, etc.) no es necesario abrir PR de nuevo. Basta empujar la tag nueva a nuestro repo — el indexer la detecta solo y publica en ~1 hora.
El bug que el autor encontró
En la publicación inicial caímos en una trampa típica de quien trabaja en producto multi-idioma: dejamos comentarios en portugués dentro de los archivos .ino y .cpp de la biblioteca. El Serial.printf ya estaba en inglés desde el inicio (los logs son consumidos por herramientas globales — Stack Overflow, grep, dashboards — y la traducción rompe integraciones), pero los comentarios escaparon de la regla. En pocas horas eso se convirtió en v1.0.2 con la limpieza completa. Lección reforzada internamente: código que sale al mundo vía Library Manager es inglés en todo: logs, comentarios, docstrings, strings de ejemplo.
Próximos pasos
Para ti que vas a usar:
- La guía completa de instalación tiene el paso-a-paso, los 7 pasos, tabla de la API y troubleshooting.
- Crea el tunnel en el panel con protocolo HTTP y
local_port = 80. - Los ejemplos
WebServerBridge(ESPAsyncWebServer + JSON + GPIO) yProvisioningPortal(captive portal guardando WiFi+token en NVS) cubren casos de uso reales — incluyendo OTA.
Para quien está construyendo producto: el ProvisioningPortal resuelve el problema de aprovisionamiento sin que tengas que compilar firmware por cliente. El dispositivo sale de fábrica en modo AP, el cliente final apunta el celular hacia él, configura WiFi y token vía captive portal, y el ESP reinicia ya como cliente. Copy comercial listo: "tu IoT gana dirección pública en 30 segundos, sin IP fija, sin abrir puertos del router, sin cloud externa".
Buen hacking. Bugs y pedidos de placas nuevas: GitHub Issues.
¿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 gratisMás en Actualizaciones
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.
SuperDMZ v1.8.6: cliente Linux y macOS alcanza paridad con Windows
La release que cierra 3 versiones de gap entre los clientes desktop. Gateway, pausa global y por túnel, programación semanal — ahora también vía CLI en Linux y macOS.