#include "DHT.h"
#include "driver/gpio.h"
#define DHTPIN GPIO_NUM_2
#define HTYPE DHT22
#define INTERVAL_GET_DATA 2000
#define HumLed 4
#define TempLed 5
#include <Wire.h> // библиотека для управления устройствами по I2C
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для QAPASS 1602
#include <Arduino.h>
// create an MQTT connection
// TCP connection
// import the WiFi and pubsubClient libraries
// The WiFi library allows ESP32 to establish connections with WiFi networks
// The pubsubClient library enables ESP32 to connect to an MQTT broker for publishing messages
#include <WiFi.h>
#include <PubSubClient.h>
//WiFi
const char *ssid = "Wokwi-GUEST";
const char *password = "";
//MQTT Broker
const char *mqtt_broker = "srv2.clusterfly.ru"; // public broker
const char *topic_publish = "user_62a37803"; // topic esp publish
const char *topic_subscribe = "MQTT_client35390"; // topic esp subscribe
const char *mqtt_username = "user_62a37803";
const char *mqtt_password = "pass_8651941c";
const int mqtt_port = 9991;
LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея
DHT dht (DHTPIN, HTYPE);
unsigned long millis_int1=0;
unsigned long millis_int2=0;
void setup() {
Serial.begin(9600);
pinMode(HumLed, OUTPUT);
pinMode(TempLed, OUTPUT);
dht.begin();
LCD.init(); // инициализация LCD дисплея
LCD.backlight(); // включение подсветки дисплея
LCD.setCursor(1, 0); // ставим курсор на 1 символ первой строки
LCD.print(" %"); // печатаем сообщение на первой строке
LCD.setCursor(1, 1); // ставим курсор на 1 символ второй строки
LCD.print(" C"); // печатаем сообщение на второй строке
}
void loop() {
//LCD.noDisplay(); // выключаем и включаем надпись на дисплее
//delay(1000);
LCD.display();
//delay(1000);
if (millis() - millis_int1 >= INTERVAL_GET_DATA) {
int humidity = get_data_humidity();
Serial.print("Humidity:");
Serial.println(humidity);
millis_int1 = millis();
LCD.setCursor(1, 0); // ставим курсор на 1 символ первой строки
LCD.print(" ");
LCD.setCursor(1, 0); // ставим курсор на 1 символ первой строки
LCD.print(humidity);
}
if (millis() - millis_int2 >= INTERVAL_GET_DATA) {
int temp = get_data_temperature();
Serial.print("Temperature:");
Serial.println(temp);
millis_int2 = millis();
LCD.setCursor(1, 1); // ставим курсор на 1 символ второй строки
LCD.print(" "); // печатаем сообщение на второй строке
LCD.setCursor(1, 1); // ставим курсор на 1 символ второй строки
LCD.print(temp); // печатаем сообщение на второй строке
}
}
int get_data_humidity() {
int h = dht.readHumidity();
if(h>70 || h<30){
digitalWrite(HumLed, HIGH);
delay(1000);
}
else{
digitalWrite(HumLed, LOW);
}
return h;
}
int get_data_temperature() {
int t = dht.readTemperature();
if(t>30 || t<17){
digitalWrite(TempLed, HIGH);
delay(1000);
}
else{
digitalWrite(TempLed, LOW);
}
return t;
}