SuperDMZ Arduino v1.1.0: production-grade ProvisioningPortal + new SmartIoT example
Four hours after v1.0.2 we shipped v1.1.0 with the two examples needed to turn the library into a real product. Captive portal with WiFi scan, live dashboard over the tunnel, OTA through the tunnel itself, and a GPIO0 button with partial reconfiguration.
What changed
We got direct feedback right after launch: "the examples don't take you all the way to a product — I want a captive portal for WiFi setup, a dashboard to see SuperDMZ status, and sensor telemetry". Fair. v1.1.0 delivers that.
ProvisioningPortal rewritten (production-grade)
The example is still called ProvisioningPortal but everything inside changed:
- WiFi network scan inside the captive portal — the end customer picks the SSID from a dropdown sorted by RSSI with visual bars (▂▄▆█), instead of typing the network name by hand and getting it wrong the first time.
- In-place AP→STA transition — after saving the config, the ESP goes straight into client mode. Before it had to reboot; now the "Saved" page appears and 5 seconds later the tunnel is up.
- Live dashboard served by the tunnel showing 3 cards: SuperDMZ state (public URL, bytes in/out), WiFi (SSID, IP, RSSI with bars, MAC), and System (chip, free heap, uptime). Auto-refresh every 5 s via
/api/status. - GPIO0 (BOOT) button with two modes:
- Hold for 3 seconds: clears WiFi only, keeps the token, returns to AP mode. Useful when the customer changes networks.
- Hold for 10 seconds: full factory reset, wipes everything including the token. Useful for resale.
- AP SSID derived from chip MAC:
SuperDMZ-Setup-A4F2. In a room with 10 ESPs each one shows up with a unique suffix — no collisions.
New example: SmartIoT (full template)
If you want to skip ahead, the SmartIoT example has everything from ProvisioningPortal plus:
- Sensor telemetry — temperature and humidity. The example uses synthetic values with random walk so it runs on any board without extra hardware. Replace
readTempC()andreadHumidity()with real readings from your DS18B20/BME280/SHT3x/etc. - Temperature sparkline on the dashboard — simple vanilla-JS chart (no Chart.js or other external libs) showing the last 60 seconds of readings.
- JSON endpoint
/api/telemetrywith everything (sensors, tunnel state, WiFi, system) for integration with external systems. Curl the public URL and you get the device's full state in one GET. - OTA through the tunnel itself — POST a
.binto/api/otaand the ESP flashes the new firmware and reboots. Remote firmware updates from anywhere on the planet, no LAN access, no extra server. - Reboot button on the dashboard for remote restart.
Which one to pick
Depends on where you are in the cycle:
| Example | Lines | Use it for |
|---|---|---|
HelloWorld | ~50 | Test the library in 5 minutes. Hardcoded credentials. |
WebServerBridge | ~80 | Integrate with your project that already uses ESPAsyncWebServer. |
ProvisioningPortal | ~280 | Real IoT device without sensors — camera, control panel, gateway, etc. |
SmartIoT | ~380 | Template for a full commercial product with sensors and telemetry. |
How to upgrade
In the Arduino IDE: the Library Manager detects the new version within an hour. Open Sketch → Include Library → Manage Libraries…, search SuperDMZ, click Update. You can force it earlier by downloading the v1.1.0 ZIP and installing via Add .ZIP Library.
In PlatformIO: the ^1.0.2 in your platformio.ini will already pick up v1.1.0 on the next pio pkg update (semver caret covers the whole major).
Repo and issues
Code, examples, and roadmap: github.com/superdmz/SuperDMZ-Arduino. Feature requests (next board, next capability) and bugs: GitHub issues.
Next up: v1.1.x for bugs as they come. Next major v1.2: Arduino UNO R4 WiFi and MKR WiFi 1010.
Want to try SuperDMZ?
Free plan, no credit card. Your first tunnel runs in under 60 seconds.
Create a free accountMore in Updates
We shipped SuperDMZ for ESP32 — and how it landed on the Arduino Library Manager
The SuperDMZ Arduino library is now available straight from the IDE. Four lines of code turn any ESP32 into a public https://your-host.dmzgate.com address. We also walk you through the GitHub journey and the release behind the scenes.
SuperDMZ v1.8.6: Linux and macOS client reaches feature parity with Windows
The release that closes 3 versions of gap between the desktop clients. Gateway, global and per-tunnel pause, weekly scheduling — now also via CLI on Linux and macOS.
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.