#include <WiFi.h>
#include <PubSubClient.h>
#include <WiFiClientSecure.h>
#include "DHTesp.h"
#include <ArduinoJson.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Informations Azure IoT Hub
const char* mqtt_broker = "Chonosus.azure-devices.net"; // Remplacez par votre IoT Hub hostname
const int mqtt_port = 8883; // Port pour MQTT sécurisé
const char* device_id = "ESPMQTT"; // Remplacez par votre Device ID
const char* username = "Chonosus.azure-devices.net/ESPMQTT/?api-version=2021-04-12"; // Username Azure IoT Hub
const char* passwordbroker = "SharedAccessSignature sr=Chonosus.azure-devices.net%2Fdevices%2FESPMQTT&sig=mpbzR773DBSaJAHrguiMqb%2FNdUSg8bIU4AjOt%2FhAeiE%3D&se=1737356940"; // Généré manuellement ou dynamiquement
WiFiClientSecure wifiClient; // Client sécurisé
PubSubClient client(wifiClient);
DHTesp dht;
void setup() {
dht.setup(23, DHTesp::DHT22);
Serial.begin(115200);
// Connexion Wi-Fi
Serial.print("Connexion au Wi-Fi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnecté au Wi-Fi");
// Configuration du client MQTT
wifiClient.setInsecure(); // Optionnel pour éviter la vérification des certificats en développement
client.setServer(mqtt_broker, mqtt_port);
// Connexion au broker MQTT (Azure IoT Hub)
if (client.connect(device_id, username, passwordbroker)) {
Serial.println("Connecté à Azure IoT Hub via MQTT");
} else {
Serial.print("Erreur de connexion MQTT: ");
Serial.println(client.state());
while (1);
}
}
void loop() {
if (!client.connected()) {
Serial.println("Reconnexion à MQTT...");
if (client.connect(device_id, username, passwordbroker)) {
Serial.println("Reconnecté à Azure IoT Hub");
}
}
client.loop();
float temperature = dht.getTemperature();
float humidity = dht.getHumidity();
delay(500);
Serial.print("La temperature est : ");
Serial.println(temperature);
Serial.print("L'humidité est: ");
Serial.println(humidity);
String myjsonF="";
StaticJsonDocument<200> JT;
//JT["channel"]=channel;
// JT["resource"]=resTemp;
// JT["write"]=true;
JT["deviceId"]="ESPMQTT";
JT["temperature"]=temperature;
JT["humidity"]=humidity;
serializeJson(JT,myjsonF);
String message = "{\"temperature\": 25.5, \"humidity\": 60}";
client.publish("devices/ESPMQTT/messages/events/", myjsonF.c_str());
delay(5000);
}