SuperDMZ Arduino v1.1.0: ProvisioningPortal production-grade + novo exemplo SmartIoT
Quatro horas depois do v1.0.2, soltamos v1.1.0 com os dois exemplos que faltavam pra alguém transformar a lib em produto real. Captive portal com scan de WiFi, dashboard live no tunnel, OTA pelo próprio túnel e botão GPIO0 com reconfig parcial.
O que mudou
Recebemos um feedback objetivo logo depois do lançamento: "os exemplos não são suficientes pra virar produto — quero captive portal pra config de WiFi, dashboard pra ver status do SuperDMZ e telemetria de sensor". Justo. v1.1.0 entrega isso.
ProvisioningPortal reescrito (production-grade)
O exemplo continua chamando ProvisioningPortal mas mudou tudo por dentro:
- Scan de redes WiFi dentro do captive portal — o cliente final escolhe o SSID num dropdown ordenado por RSSI, com barrinhas visuais (▂▄▆█), em vez de digitar o nome da rede à mão e errar a primeira vez.
- Transição AP→STA sem reboot — depois de salvar a config, o ESP já entra em modo cliente. Antes era preciso reiniciar; agora a página de "Saved" aparece e em 5 segundos o tunnel está no ar.
- Dashboard live servida pelo próprio tunnel mostrando 3 cards: estado do SuperDMZ (URL pública, bytes in/out), WiFi (SSID, IP, RSSI com barrinhas, MAC) e Sistema (chip, free heap, uptime). Auto-refresh a cada 5 s via
/api/status. - Botão GPIO0 (BOOT) com dois modos:
- Segure 3 segundos: limpa só WiFi, mantém o token, volta pro modo AP. Útil quando o cliente troca de rede.
- Segure 10 segundos: factory reset completo, limpa tudo incluindo o token. Útil pra revender o dispositivo.
- SSID do AP derivado do MAC:
SuperDMZ-Setup-A4F2. Em sala com 10 ESPs cada um aparece com sufixo único — sem colisão.
Novo exemplo: SmartIoT (template completo)
Pra quem quer ir mais direto, o exemplo SmartIoT tem tudo do ProvisioningPortal mais:
- Telemetria de sensores — temperatura e umidade. O exemplo usa valores sintéticos com random walk pra rodar em qualquer placa sem precisar de hardware extra. Você troca
readTempC()ereadHumidity()por leitura real do seu DS18B20/BME280/SHT3x/etc. - Sparkline da temperatura no dashboard — gráfico simples em vanilla JS (sem Chart.js ou outras libs externas) mostrando os últimos 60 segundos de leitura.
- Endpoint JSON
/api/telemetrycom tudo (sensores, estado do tunnel, WiFi, sistema) pra integração com sistemas externos. Faça curl da URL pública e tem o estado completo do dispositivo num GET. - OTA pelo próprio tunnel — POST de um
.binem/api/otae o ESP grava firmware novo e reinicia. Update remoto de qualquer lugar do planeta sem precisar acesso físico, sem rede local, sem servidor extra. - Botão Reboot no dashboard pra reinício remoto.
Qual escolher
A escolha do exemplo vai depender de onde você está no ciclo:
| Exemplo | Linhas | Pra quê |
|---|---|---|
HelloWorld | ~50 | Testar a lib em 5 min. Credenciais hardcoded. |
WebServerBridge | ~80 | Integrar com seu projeto que já usa ESPAsyncWebServer. |
ProvisioningPortal | ~280 | Aparelho IoT real sem sensor — câmera, painel de controle, gateway etc. |
SmartIoT | ~380 | Template pra produto comercial completo, com sensor e telemetria. |
Como atualizar
No Arduino IDE: o Library Manager detecta a versão nova automaticamente em até 1 hora. Abre Sketch → Include Library → Manage Libraries…, busca SuperDMZ, clica Update. Você pode forçar pré-tempo baixando o ZIP da v1.1.0 e instalando via Add .ZIP Library.
No PlatformIO: o ^1.0.2 que estava no seu platformio.ini já vai pegar a v1.1.0 no próximo pio pkg update (semver caret cobre tudo na mesma major).
Repo e issues
Código, exemplos e roadmap: github.com/superdmz/SuperDMZ-Arduino. Pedidos de feature (próxima placa, próximo recurso) e bugs: issues do GitHub.
Próxima: v1.1.x se aparecer bug. Próxima major v1.2: Arduino UNO R4 WiFi e MKR WiFi 1010.
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