Для электронщиков и радиолюбителей

Мониторинг температуры и влажности с помощью ESP32 и Home Assistant

Мониторинг температуры и влажности с помощью ESP32 и Home Assistant

Этот проект использует датчик DHT11 для измерения температуры и влажности, которые ESP32 передает в Home Assistant через MQTT. Home Assistant отображает данные в реальном времени и позволяет создавать автоматизации на их основе.

Подключение датчика DHT11 к ESP32

  1. Подключите VCC датчика DHT11 к 3.3V или 5V на ESP32.
  2. GND датчика подключите к GND на ESP32.
  3. DATA датчика подключите к GPIO4 (Pin D4) на ESP32.

Питание ESP32

Подключите ESP32 к компьютеру или адаптеру через USB.

Установка Mosquitto Broker

  1. Откройте Home Assistant.
  2. Перейдите в Supervisor или Add-Ons.
  3. Найдите Mosquitto Broker и установите его.

Настройка MQTT

  1. Перейдите в Settings > Devices & Services > Integrations (Настройки > Устройства и сервисы > Интеграции) и добавьте MQTT.
  2. Запомните IP-адрес и данные входа MQTT для дальнейшего использования в коде ESP32.

Установка библиотек в Arduino IDE

  1. Установите библиотеку PubSubClient для MQTT и DHT для работы с датчиком.
  2. Перейдите в Sketch > Include Library > Manage Libraries…, найдите и установите PubSubClient и DHT.

Код для ESP32

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

// Настройки Wi-Fi и MQTT
#define WIFI_SSID "YourWiFiSSID"
#define WIFI_PASSWORD "YourWiFiPassword"
#define MQTT_SERVER "YourMQTTBrokerIP"
#define MQTT_USER "YourMQTTUsername"
#define MQTT_PASSWORD "YourMQTTPassword"

// Настройки датчика DHT
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// Темы MQTT для температуры и влажности
const char* temperature_topic = "home/livingroom/temperature";
const char* humidity_topic = "home/livingroom/humidity";

// Инициализация Wi-Fi и MQTT
WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  dht.begin();
  setup_wifi();
  client.setServer(MQTT_SERVER, 1883);
}

void setup_wifi() {
  Serial.println("Connecting to WiFi...");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected.");
}

void reconnect_mqtt() {
  while (!client.connected()) {
    if (client.connect("ESP32Client", MQTT_USER, MQTT_PASSWORD)) {
      Serial.println("connected");
    } else {
      delay(5000);
    }
  }
}

void loop() {
  if (!client.connected()) {
    reconnect_mqtt();
  }
  client.loop();

  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  if (!isnan(temperature) && !isnan(humidity)) {
    client.publish(temperature_topic, String(temperature).c_str(), true);
    client.publish(humidity_topic, String(humidity).c_str(), true);
    delay(2000);
  }
}

Замените значения:

  • "YourWiFiSSID" и "YourWiFiPassword" на свои данные Wi-Fi.
  • "YourMQTTBrokerIP", "YourMQTTUsername", "YourMQTTPassword" на данные MQTT-брокера.

Отображение данных в Home Assistant

Добавьте следующие сенсоры в файл configuration.yaml:

sensor:
  - platform: mqtt
    name: "Living Room Temperature"
    state_topic: "home/livingroom/temperature"
    unit_of_measurement: "°C"
    value_template: "{{ value | float }}"

  - platform: mqtt
    name: "Living Room Humidity"
    state_topic: "home/livingroom/humidity"
    unit_of_measurement: "%"
    value_template: "{{ value | float }}"

Перезапустите Home Assistant для применения изменений.

Настройка отображения данных

  1. Перейдите на вкладку Overview в Home Assistant.
  2. Нажмите Edit Dashboard и выберите Add Card.
  3. Добавьте Sensor Card для отображения температуры и влажности или используйте Gauge Card и History Graphs.

Автоматизации

Настройте автоматизации на основе температуры или влажности, например, для отправки оповещений при превышении порога температуры в 30°C.

Вы успешно создали монитор температуры и влажности с использованием ESP32, DHT11 и Home Assistant.