Blog
ESP32 MQTT : envoyez vos données au cloud en 30 minutes
Le problème
Vous avez monté une station météo ESP32. Température et humidité s’affichent parfaitement sur votre moniteur série. Mais voilà le problème — ces données restent prisonnières de votre ordinateur. Vous ne pouvez pas les consulter depuis votre téléphone. Vous ne pouvez pas les enregistrer. Vous ne pouvez pas déclencher d’automatisations.
MQTT règle ça. C’est le protocole de communication qui fait tourner la plupart des systèmes IoT dans le monde — des usines intelligentes aux installations Home Assistant.
Ce que vous allez construire
Un nœud capteur ESP32 qui :
- Lit la température et l’humidité toutes les 30 secondes
- Publie les données vers un broker MQTT cloud gratuit
- Vous permet de tout surveiller depuis n’importe quel navigateur, où que vous soyez
Difficulté : Débutant | Temps : 30 minutes | Coût : ~23 $ de pièces
Matériel requis (liste de pièces)
| Pièce | Modèle | Qté | Prix | Acheter |
|---|---|---|---|---|
| Microcontrôleur | ESP32 DevKitC V4 | 1 | $13.49 | Voir le produit |
| Capteur température/humidité | DHT22 | 1 | $5.24 | Voir le produit |
| Écran (facultatif) | 0.96″ OLED SSD1306 | 1 | $5.99 | Voir le produit |
| Breadboard | 830-point | 1 | $4.49 | Voir le produit |
| Fils de liaison | M-M 40pcs | 1 | $2.99 | Voir le produit |
Étape 1 : le câblage
ESP32 ↔ DHT22
| Broche DHT22 | Broche ESP32 | Remarque |
|---|---|---|
| VCC | 3V3 | Alimentation |
| GND | GND | Masse |
| DATA | GPIO 13 | Ligne de données |
ESP32 ↔ OLED (facultatif)
| Broche OLED | Broche ESP32 | Remarque |
|---|---|---|
| VCC | 3V3 | Alimentation |
| GND | GND | Masse |
| SDA | GPIO 21 | Données I2C |
| SCL | GPIO 22 | Horloge I2C |
Étape 2 : installer les bibliothèques
Ouvrez l’IDE Arduino → Sketch → Inclure une bibliothèque → Gérer les bibliothèques puis installez :
- PubSubClient de Nick O’Leary (communication MQTT)
- DHT sensor library d’Adafruit (pilote DHT22)
- Adafruit SSD1306 (écran OLED, si vous l’utilisez)
Étape 3 : envoyer le code
#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
// --- WiFi Settings ---
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// --- MQTT Settings ---
const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
const char* temp_topic = "sensbench/home/temperature";
const char* hum_topic = "sensbench/home/humidity";
// --- Sensor Settings ---
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// --- Globals ---
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("nWiFi connected! IP: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
while (!client.connected()) {
Serial.print("Connecting to MQTT...");
String clientId = "sensbench-" + String(random(0xffff), HEX);
if (client.connect(clientId.c_str())) {
Serial.println("connected!");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" retrying in 5s");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
dht.begin();
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Sensor read failed!");
return;
}
char tempStr[8], humStr[8];
dtostrf(t, 4, 2, tempStr);
dtostrf(h, 4, 2, humStr);
client.publish(temp_topic, tempStr);
client.publish(hum_topic, humStr);
Serial.printf("Temp: %s°C Humidity: %s%%n", tempStr, humStr);
delay(30000);
}
Étape 4 : voir vos données dans le cloud
- Ouvrez https://www.hivemq.com/mqtt-web-client/ dans votre navigateur
- Cliquez sur Connect
- Dans Subscriptions, ajoutez le topic :
sensbench/home/# - Regardez votre ESP32 envoyer des données en temps réel toutes les 30 secondes
Et ensuite ?
Maintenant que vos données sont dans le cloud, vous pouvez :
- Construire un tableau de bord avec Node-RED ou Home Assistant pour visualiser les données
- Ajouter d’autres capteurs — BME280 pour la pression atmosphérique, humidité du sol pour les plantes
- Déclencher des automatisations — « si température > 30°C, allumer le ventilateur »
- Passer sur batterie — ajoutez le mode deep sleep pour des mois de fonctionnement