#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
/* WiFi credentials */
const char* ssid = "BNSS-SOFT";
const char* password = "Bnssit@2025";
/* ThingsBoard */
const char* mqttServer = "thingsboard.dmidft.com";
const char* token = "Jc9COeKFBBwZMiuFVSKA";
/* DHT Configuration */
#define DHTPIN 4
#define DHTTYPE DHT11 // Change to DHT22 if used
/* Optional LED */
#define LED_PIN 2
WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(DHTPIN, DHTTYPE);
/* WiFi Connect */
void setupWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected");
}
/* MQTT Reconnect */
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP32_DHT", token, NULL)) {
Serial.println("Connected to ThingsBoard");
} else {
delay(2000);
}
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
dht.begin();
setupWiFi();
client.setServer(mqttServer, 1883);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read DHT sensor!");
return;
}
/* Local Alert (Optional) */
if (humidity > 70) { // Threshold
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
/* Send Telemetry */
String payload = "{";
payload += "\"temperature\":";
payload += temperature;
payload += ",\"humidity\":";
payload += humidity;
payload += "}";
client.publish("v1/devices/me/telemetry", payload.c_str());
Serial.println(payload);
delay(5000);
}