#include <WiFi.h>
#include <PubSubClient.h>
#include <DHTesp.h>
// Configuration WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Configuration MQTT et ThingSpeak
const char* server = "mqtt3.thingspeak.com";
const int port = 1883;
const char* clientID = "myDevice";
const char* username = "any";
const char* passwordMQTT = "2QL8SXTPROTX6A7H "; //KjAZJSsVOxA3BTgkPDwtGjI
const char* tempmqttTopic = "channels/2770940/publish/2QL8SXTPROTX6A7H"; // Topic pour publier (utilise Write API Key)
WiFiClient client;
PubSubClient clientmqtt(client);
DHTesp dht;
void setup() {
Serial.begin(115200);
// Configuration DHT
dht.setup(23, DHTesp::DHT22);
// Connexion WiFi
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" Connected!");
// Configuration MQTT
clientmqtt.setServer(server, port);
while (!clientmqtt.connected()) {
Serial.println("Connecting to MQTT broker...");
if (clientmqtt.connect(clientID, username, passwordMQTT)) {
Serial.println("Connected to MQTT broker!");
} else {
Serial.print("MQTT connect failed, error code: ");
Serial.println(clientmqtt.state());
delay(5000); // Réessayer après 5 secondes
}
}
}
void loop() {
// Lecture des données du capteur DHT
TempAndHumidity data = dht.getTempAndHumidity();
if (!dht.getStatus()) {
// Construction du message à publier
char payload[64];
snprintf(payload, sizeof(payload), "field1=%.2f&field2=%.2f", data.temperature, data.humidity);
// Publier les données
if (clientmqtt.publish(tempmqttTopic, payload)) {
Serial.println("Données publiées avec succès !");
Serial.println(payload);
} else {
Serial.println("Erreur lors de la publication.");
}
} else {
Serial.println("Erreur lors de la lecture du capteur.");
}
delay(20000); // Publier toutes les 20 secondes
}