#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>
#include <DHTesp.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* server = "mqtt.beebotte.com";
const int mqttPort = 1883;
WiFiClient client;
PubSubClient mqttClient(client);
DHTesp capture;
const int aLedPin = 22;
const int bLedPin = 21;
const int cLedPin = 23;
const int DHT22_PIN =15;
void setup() {
Serial.begin(115200);
pinMode(cLedPin, OUTPUT);
pinMode(aLedPin, OUTPUT);
pinMode(bLedPin, OUTPUT);
pinMode(DHT22_PIN, INPUT);
capture.setup(DHT22_PIN, DHTesp::DHT22);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
mqttClient.setServer(server, mqttPort);
}
void callback(char* topic, byte* payload, unsigned int length) {
StaticJsonDocument<200> doc;
deserializeJson(doc, payload, length);
boolean etat = doc["data"];
if(strcmp(topic, "montassartest/ldrouge")==0){
Serial.println("Red LED !!!!");
digitalWrite(cLedPin, etat);
}
else if(strcmp(topic, "montassartest/ldblue")==0){
Serial.println("BLUE LED !!!!");
digitalWrite(aLedPin, etat);
}
else if (strcmp(topic, "montassartest/ldvert")==0){
Serial.println("GREEN LED !!!!");
digitalWrite(bLedPin, etat);
}
}
void loop() {
if (!mqttClient.connected()) {
Serial.println("Connecting to MQTT server...");
float temperature = capture.getTemperature();
float humidity = capture.getHumidity();
if (mqttClient.connect("montassartest", "token:token_dsZHjUVtU5fSJ3N1", "")) {
envoyer_temp(temperature);
envoyer_humd(humidity);
mqttClient.subscribe("montassartest/ldrouge");
mqttClient.subscribe("montassartest/ldblue");
mqttClient.subscribe("montassartest/ldvert");
mqttClient.setCallback(callback);
} else {
Serial.println("Failed to connect to MQTT server. Retrying...");
}
}
mqttClient.loop();
}
void envoyer_temp(float t){
Serial.print("Temperature: "); Serial.println(t);
char fichierJson[128];
StaticJsonDocument<512> doc;
doc["data"]=t;
doc["resource"]= "temperateur";
doc["channel"]= "montassartest" ;
doc["write"]= true ;
serializeJson(doc,fichierJson);
Serial.print("fichier Json = ");
Serial.println(fichierJson);
mqttClient.publish("montassartest/temperateur",fichierJson, sizeof(fichierJson));
}
void envoyer_humd(float h){
Serial.print("humidity: "); Serial.println(h);
char fichierJson[128];
StaticJsonDocument<512> doc;
doc["data"]=h;
doc["resource"]= "humidity";
doc["channel"]= "montassartest" ;
doc["write"]= true ;
serializeJson(doc,fichierJson);
Serial.print("fichier Json = ");
Serial.println(fichierJson);
mqttClient.publish("montassartest/humidity",fichierJson, sizeof(fichierJson));
}