Nous avons sorti SuperDMZ pour ESP32 et le chemin vers l'Arduino Library Manager
La bibliothèque SuperDMZ pour Arduino est maintenant disponible directement depuis l'IDE. Quatre lignes de code transforment n'importe quel ESP32 en une adresse publique https://votre-hôte.dmzgate.com. On en profite pour raconter le chemin de publication sur GitHub et les coulisses du release.
Pourquoi ESP32 entre dans SuperDMZ
Près de la moitié des messages qui arrivent à notre support sont une variation de : "j'ai un capteur/caméra/panneau qui tourne sur un ESP, puis-je l'exposer via SuperDMZ sans installer le client sur un PC à côté ?". Réponse maintenant : oui, et en quatre lignes de code.
Le client Windows/Linux/macOS est génial quand il y a un hôte avec un système d'exploitation à la périphérie. Pour l'IoT cette exigence est une friction : le dispositif EST le "PC". Forcer une machine intermédiaire juste pour faire tourner le tunnel renchérit le produit, augmente la surface de panne et ajoute un câble de plus à entretenir.
La bibliothèque SuperDMZ que nous publions aujourd'hui résout cela en embarquant le protocole du tunnel directement dans le firmware de l'ESP32. Le dispositif se connecte tout seul au nœud SuperDMZ via WebSocket TLS et devient accessible sur https://<votre-hôte>.dmzgate.com avec un certificat Let's Encrypt valide — sans IP fixe, sans ouvrir de port sur le routeur, sans cloud externe.
Compatibilité
Toute la famille ESP32 est prise en charge :
- ESP32 classique (WROOM-32, WROVER)
- ESP32-S2 et ESP32-S3
- ESP32-C3 et ESP32-C6 (RISC-V)
- Arduino Nano ESP32 — fonctionne directement, c'est un ESP32-S3 en format Nano
L'ESP8266 reste officiellement en dehors — le mbedtls embarqué n'a pas assez de heap pour maintenir WSS stable en production. Si vous voulez expérimenter quand même, vous pouvez compiler avec un peu d'effort, mais nous ne le recommandons pas pour un déploiement réel.
Nous avons déjà tracé la roadmap pour Arduino UNO R4 WiFi (v1.1), MKR WiFi 1010 / Nano 33 IoT (v1.2), Portenta H7 / Giga R1 WiFi (v1.3) et Raspberry Pi Pico W (v2.0). Chacune est un portage de la couche réseau vers la bibliothèque spécifique de la puce (WiFiS3.h, WiFiNINA.h, MbedOS WiFi, etc.) — même API publique.
Comment installer
Dans Arduino IDE 2.x :
- Sketch → Include Library → Manage Libraries…
- Cherchez
SuperDMZ - Cliquez sur Install. Les dépendances (
WebSocketsde Markus Sattler etArduinoJsonde Benoit Blanchon) sont proposées dans le même prompt.
Dans PlatformIO :
; platformio.ini
lib_deps =
superdmz/SuperDMZ@^1.0.2
Hello World
Quatre lignes pour mettre en route un ESP32 qui parle au monde :
#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();
}
Compilez, téléversez, ouvrez le Serial Monitor à 115200 baud. En ~5 secondes :
[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
Voilà. Ouvrez l'URL publique sur n'importe quel téléphone à l'autre bout de la planète, et la page de l'ESP répond.
Le chemin vers l'Arduino Library Manager
Pour que la bibliothèque apparaisse dans le Library Manager officiel de l'IDE pour n'importe qui dans le monde, elle doit être acceptée dans l'index maintenu par Arduino. Le flux est entièrement public sur GitHub et prend une trentaine de minutes de bout en bout quand tout est en ordre.
Voici ce que nous avons fait :
- Dépôt public sur github.com/superdmz/SuperDMZ-Arduino avec le code, les exemples,
library.properties,library.json,LICENSE,keywords.txtetCHANGELOG.md. - Tag semver pointant sur le commit du release (
1.0.1). - CI GitHub Actions qui exécute
arduino/arduino-lint-actionen mode strict plusarduino/compile-sketchescompilant les exemples sur une matrice de six cartes ESP32 — garantit zéro régression sur les futures versions. - Fork de
arduino/library-registry, ajouter une ligne aurepositories.txtavec l'URL de notre dépôt, ouvrir une PR. - Le bot d'Arduino exécute la vérification automatique (plus rigoureuse que notre CI local), commente le résultat, et merge si tout est vert.
- L'indexeur d'Arduino synchronise l'index toutes les heures. Au prochain refresh du Library Manager dans l'IDE, la bibliothèque apparaît pour tout le monde.
Détail important : pour les releases futures (v1.0.2, v1.1, etc.) il n'est pas nécessaire d'ouvrir une nouvelle PR. Il suffit de pousser le nouveau tag sur notre dépôt — l'indexeur le détecte tout seul et publie en ~1 heure.
Le bug que l'auteur a rencontré
Lors de la publication initiale, nous sommes tombés dans un piège classique pour ceux qui travaillent sur un produit multilingue : nous avons laissé des commentaires en portugais dans les fichiers .ino et .cpp de la bibliothèque. Serial.printf était déjà en anglais depuis le début (les logs sont consommés par des outils mondiaux — Stack Overflow, grep, dashboards — et la traduction casse les intégrations), mais les commentaires ont échappé à la règle. Quelques heures plus tard, ça s'est transformé en v1.0.2 avec un nettoyage complet. Leçon renforcée en interne : le code qui part dans le monde via Library Manager est en anglais sur tout : logs, commentaires, docstrings, chaînes d'exemple.
Prochaines étapes
Pour vous qui allez l'utiliser :
- Le guide d'installation complet a le pas-à-pas, les 7 étapes, le tableau de l'API et le troubleshooting.
- Créez le tunnel dans le panneau avec le protocole HTTP et
local_port = 80. - Les exemples
WebServerBridge(ESPAsyncWebServer + JSON + GPIO) etProvisioningPortal(portail captif sauvegardant WiFi+jeton en NVS) couvrent des cas d'usage réels — y compris l'OTA.
Pour ceux qui construisent un produit : ProvisioningPortal résout le problème de provisioning sans avoir à compiler un firmware par client. Le dispositif quitte l'usine en mode AP, le client final pointe son téléphone vers lui, configure WiFi et jeton via le portail captif, et l'ESP redémarre en tant que client. Texte commercial tout prêt : "votre IoT obtient une adresse publique en 30 secondes — sans IP fixe, sans ouverture de port sur le routeur, sans cloud externe".
Bon hacking. Bugs et demandes de nouvelles cartes : GitHub Issues.
Envie d'essayer SuperDMZ ?
Offre gratuite sans carte bancaire. Votre premier tunnel est en ligne en moins de 60 secondes.
Créer un compte gratuitPlus dans Mises à jour
SuperDMZ Arduino v1.1.0 : ProvisioningPortal production-grade + nouvel exemple SmartIoT
Quatre heures après v1.0.2 nous publions v1.1.0 avec les deux exemples qui manquaient pour transformer la bibliothèque en produit réel. Portail captif avec scan WiFi, dashboard live sur le tunnel, OTA via le tunnel lui-même et bouton GPIO0 avec reconfiguration partielle.
SuperDMZ v1.8.6 : le client Linux et macOS atteint la parité avec Windows
La version qui ferme 3 versions d'écart entre les clients desktop. Gateway, pause globale et par tunnel, planification hebdomadaire — désormais aussi via CLI sous Linux et macOS.