SuperDMZ
Voltar ao blog
🤖
Updates · · Equipe SuperDMZ

Lançamos a SuperDMZ para ESP32 e o caminho até a Arduino Library Manager

A biblioteca SuperDMZ para Arduino agora está disponível para instalação direta pelo IDE. Quatro linhas de código transformam qualquer ESP32 em um endereço público https://seu-host.dmzgate.com. Aproveitamos pra contar também o caminho de publicação no GitHub e os bastidores do release.

Por que ESP32 entra no SuperDMZ

Quase metade das mensagens que chegam no nosso suporte são alguma variação de: "tenho um sensor/câmera/painel rodando num ESP, posso expor pelo SuperDMZ sem instalar o client num PC do lado?". Resposta agora: sim, e com quatro linhas de código.

O cliente Windows/Linux/macOS é ótimo quando existe um host com sistema operacional na ponta. Para IoT essa exigência é fricção: o dispositivo já é o "PC". Forçar uma máquina intermediária só pra rodar o tunnel encarece o produto, aumenta a superfície de falha, e cria mais um cabo pra mantermos.

A biblioteca SuperDMZ que publicamos hoje resolve isso embarcando o protocolo do tunnel direto no firmware do ESP32. O dispositivo conecta sozinho ao nó SuperDMZ via WebSocket TLS e fica acessível em https://<seu-host>.dmzgate.com com cert válido do Let's Encrypt — sem IP fixo, sem abrir porta no roteador, sem cloud externa.

Compatibilidade

Suportamos a família ESP32 inteira:

  • ESP32 clássico (WROOM-32, WROVER)
  • ESP32-S2 e ESP32-S3
  • ESP32-C3 e ESP32-C6 (RISC-V)
  • Arduino Nano ESP32 — funciona direto, é um ESP32-S3 com formato de Nano

ESP8266 fica de fora oficialmente — o mbedtls embarcado tem heap insuficiente pra manter WSS estável em produção. Quem quer experimentar mesmo assim consegue compilar com algum esforço, mas não recomendamos para deploy real.

Já temos roadmap traçado para Arduino UNO R4 WiFi (v1.1), MKR WiFi 1010 / Nano 33 IoT (v1.2), Portenta H7 / Giga R1 WiFi (v1.3) e Raspberry Pi Pico W (v2.0). Cada uma é portar a camada de rede pra biblioteca específica do chip (WiFiS3.h, WiFiNINA.h, MbedOS WiFi etc) — mesma API pública.

Como instalar

No Arduino IDE 2.x:

  1. Sketch → Include Library → Manage Libraries…
  2. Busque SuperDMZ
  3. Clique Install. As dependências (WebSockets de Markus Sattler e ArduinoJson de Benoit Blanchon) são oferecidas no mesmo prompt.

No PlatformIO:

; platformio.ini
lib_deps =
    superdmz/SuperDMZ@^1.0.2

Hello World

Quatro linhas pra subir um ESP32 falando com o 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();
}

Compile, grave, abra o Serial Monitor a 115200 baud. Em ~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

Pronto. Abra a URL pública em qualquer celular do outro lado do planeta e a página do ESP responde.

O caminho até a Arduino Library Manager

Pra biblioteca aparecer no Library Manager oficial do IDE pra qualquer pessoa no mundo, ela precisa ser aceita no índice mantido pelo Arduino. O fluxo é todo público no GitHub e leva uns 30 minutos do começo ao fim quando tudo está em ordem.

Resumo do que fizemos:

  1. Repo público em github.com/superdmz/SuperDMZ-Arduino com o código, exemplos, library.properties, library.json, LICENSE, keywords.txt e CHANGELOG.md.
  2. Tag semver apontando para o commit do release (1.0.1).
  3. GitHub Actions de CI rodando arduino/arduino-lint-action em modo strict mais arduino/compile-sketches compilando os exemplos numa matriz de seis placas ESP32 — garante regressão zero nas próximas versões.
  4. Fork do arduino/library-registry, adicionar uma linha ao repositories.txt com o URL do nosso repo, e abrir PR.
  5. O bot da Arduino roda a verificação automática (mais rigorosa que o nosso CI local), comenta o resultado, e mergeia se tudo estiver verde.
  6. O indexer da Arduino sincroniza o índice a cada hora. No próximo refresh do Library Manager dentro do IDE, a biblioteca aparece pra todos no mundo.

Detalhe importante: para releases futuros (v1.0.2, v1.1, etc.) não é necessário abrir PR de novo. Basta empurrar a tag nova pro nosso repo — o indexer detecta sozinho e publica em ~1 hora.

O bug que o autor encontrou

Na publicação inicial caímos numa armadilha típica de quem trabalha em produto multi-idioma: deixamos comentários em português dentro dos arquivos .ino e .cpp da biblioteca. O Serial.printf já estava em inglês desde o início (logs são consumidos por ferramentas globais — Stack Overflow, grep, dashboards — e tradução quebra integrações), mas os comentários escaparam da regra. Em poucas horas isso virou v1.0.2 com a limpeza completa. Lição reforçada internamente: código que sai pro mundo via Library Manager é inglês em tudo: logs, comentários, docstrings, strings de exemplo.

Próximos passos

Pra você que vai usar:

  • O guia completo de instalação tem o passo-a-passo, os 7 passos, tabela da API e troubleshooting.
  • Crie o tunnel no painel com protocolo HTTP e local_port = 80.
  • Os exemplos WebServerBridge (ESPAsyncWebServer + JSON + GPIO) e ProvisioningPortal (captive portal salvando WiFi+token em NVS) cobrem casos de uso reais — incluindo OTA.

Pra quem está construindo produto: o ProvisioningPortal resolve o problema de provisionamento sem que você precise compilar um firmware por cliente. O dispositivo sai da fábrica em modo AP, o cliente final aponta o celular pra ele, configura WiFi e token via captive portal, e o ESP reboota já como cliente. Texto comercial pronto: "seu IoT ganha endereço público em 30 segundos, sem IP fixo, sem abrir porta no roteador, sem cloud externa".

Bom hacking. Bugs e pedidos de placa nova: GitHub Issues.


Quer experimentar o SuperDMZ?

Plano gratuito sem cartão de crédito. Em menos de 60 segundos seu primeiro túnel está no ar.

Criar conta grátis

Mais em Updates