Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Mechatronics LAB
Published © GPL3+

Temperature & Humidity Monitor with ESP32 and Home Assistant

Temperature & Humidity Monitor with ESP32 and Home Assistant

BeginnerProtip892
Temperature & Humidity Monitor with ESP32 and Home Assistant

Things used in this project

Hardware components

esp32
×1
dht22
×1

Story

Read more

Schematics

1_dht22_-_digital_temperature_and_humidity_sensors_8TXcCBoorc.png

Code

Code

Arduino
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

// WiFi and MQTT configuration
#define WIFI_SSID "YourWiFiSSID"
#define WIFI_PASSWORD "YourWiFiPassword"
#define MQTT_SERVER "YourMQTTBrokerIP"
#define MQTT_USER "YourMQTTUsername"
#define MQTT_PASSWORD "YourMQTTPassword"

// DHT Sensor configuration
#define DHTPIN 4        // DHT sensor data pin connected to GPIO4
#define DHTTYPE DHT11   // Using DHT11 sensor
DHT dht(DHTPIN, DHTTYPE);

// MQTT topics for temperature and humidity
const char* temperature_topic = "home/livingroom/temperature";
const char* humidity_topic = "home/livingroom/humidity";

// Initialize WiFi and MQTT clients
WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  dht.begin();

  // Connect to WiFi
  setup_wifi();

  // Configure MQTT server
  client.setServer(MQTT_SERVER, 1883);
}

void setup_wifi() {
  delay(10);
  Serial.println("Connecting to WiFi...");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi connected.");
}

void reconnect_mqtt() {
  // Loop until reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    if (client.connect("ESP32Client", MQTT_USER, MQTT_PASSWORD)) {
      Serial.println("connected");
    } else {
      Serial.print("Failed, rc=");
      Serial.print(client.state());
      Serial.println(" trying again in 5 seconds...");
      delay(5000);
    }
  }
}

void loop() {
  // Reconnect to MQTT if disconnected
  if (!client.connected()) {
    reconnect_mqtt();
  }
  client.loop();

  // Read temperature and humidity
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  // Check if readings are valid
  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Publish temperature and humidity to MQTT
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.print(" °C | Humidity: ");
  Serial.print(humidity);
  Serial.println(" %");

  client.publish(temperature_topic, String(temperature).c_str(), true);
  client.publish(humidity_topic, String(humidity).c_str(), true);

  // Delay between readings
  delay(2000);
}

Credits

Mechatronics LAB
75 projects • 47 followers
I am Sarful , I am a Mechatronics Engineer & also a teacher I am Interested in the evolution of technology in the automation industry .
Contact

Comments

Please log in or sign up to comment.