#include "DHT.h"
#define fan1 D1 //вентилятор D1 Гараж
#define fan2 D5 //вентилятор D5 Подвал
#define fan3 D6 //вентилятор D6 Смотровая яма
#define DHT1PIN D0//датчик на улице
#define DHT2PIN D4//датчик в гараже
#define DHT3PIN D3//датчик в подвале
#define DHT4PIN D2//датчик в смотровой яме
#define DHT1TYPE DHT22
#define DHT2TYPE DHT22
#define DHT3TYPE DHT11
#define DHT4TYPE DHT11
DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);
DHT dht4(DHT4PIN, DHT4TYPE);
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
BlynkTimer timer;
WidgetLED fan_1(V8); // Светодиод на смарте
WidgetLED fan_2(V9); // Светодиод на смарте
WidgetLED fan_3(V10); // Светодиод на смарте
int stat = 0;
int maxHum = 60;
char auth[] = "abcc955ef726453a89b97232338d0a57";
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, "ASUS", "ZipandSergey");
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
pinMode(fan1, OUTPUT);
pinMode(fan2, OUTPUT);
pinMode(fan3, OUTPUT);
timer.setInterval(1000, Send); // опрос датчиков с интервалом 1с.
timer.setInterval(30000L, reconnectBlynk); // проверяем каждые 30 секунд, если подключение к серверу
}
BLYNK_WRITE(V11){ // запрос данных с датчика
if (param.asInt()) { // кнопка в режиме SWITCH
digitalWrite(fan1, HIGH);
digitalWrite(fan2, HIGH);
digitalWrite(fan3, HIGH);
}
else {
digitalWrite(fan1, LOW);
digitalWrite(fan2, LOW);
digitalWrite(fan3, LOW);
}
{
stat = param.asInt();
}
}
void loop() {
if (Blynk.connected()) Blynk.run(); // Запуск Blynk
timer.run();
}
//---------------------------------------------------
void Send() {
// опрос датчиков
//---------- dht1
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
if (isnan(h1) || isnan(t1)) Serial.println("Failed to read from DHT1 sensor!");
else {
Serial.print("Humidity1: ");
Serial.print(h1);
Serial.print(" %\t ");
Serial.print("Temperature1: ");
Serial.print(t1);
Serial.println(" *C ");
}
//---------- dht2
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
if (isnan(h2) || isnan(t2)) Serial.println("Failed to read from DHT2 sensor!");
else {
Serial.print("Humidity2: ");
Serial.print(h2);
Serial.print(" %\t ");
Serial.print("Temperature2: ");
Serial.print(t2);
Serial.println(" *C ");
}
//--------- dht3
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();
if (isnan(h3) || isnan(t3))Serial.println("Failed to read from DHT3 sensor!");
else {
Serial.print("Humidity3: ");
Serial.print(h3);
Serial.print(" %\t ");
Serial.print("Temperature3: ");
Serial.print(t3);
Serial.println(" *C ");
}
//--------- dht3
float h4 = dht4.readHumidity();
float t4 = dht4.readTemperature();
if (isnan(h4) || isnan(t4)) Serial.println("Failed to read from DHT4 sensor!");
else {
Serial.print("Humidity4: ");
Serial.print(h4);
Serial.print(" %\t ");
Serial.print("Temperature4: ");
Serial.print(t4);
Serial.println(" *C ");
}
Serial.println();
// логистика работы вентиляторов
//-------- h2
if(h2>h1) // если влажность в гараже больше, чем на улице, включается вентилятор fan1
{
digitalWrite(fan1, HIGH);
fan_1.on();//вкл вирт.светодиод
}
else if (h2<h1)// если влажность в гараже меньше, чем на улице, выключается вентилятор fan1
{
digitalWrite(fan1, LOW);
fan_1.off(); //выкл вирт.светодиод
}
if (h2 > maxHum)
{
digitalWrite(fan1, HIGH);
fan_1.on(); //вкл вирт.светодиод
}
else if (h2 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan1, LOW);
fan_1.off(); //выкл вирт.светодиод
}
//-------- h3
if (h3 > maxHum)
{
digitalWrite(fan2, HIGH);
fan_2.on(); //вкл вирт.светодиод
}
else if (h2 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan2, LOW);
fan_2.off(); //выкл вирт.светодиод
}
//--------- h4
if (h4 > maxHum)
{
digitalWrite(fan3, HIGH);
fan_3.on(); //вкл вирт.светодиод
}
else if (h3 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan3, LOW);
fan_3.off(); //выкл вирт.светодиод
}
//------------ на Blynk
if (stat == 1) {
Blynk.virtualWrite(V0, h1);
Blynk.virtualWrite(V1, t1);
Blynk.virtualWrite(V2, h2);
Blynk.virtualWrite(V3, t2);
Blynk.virtualWrite(V4, h3);
Blynk.virtualWrite(V5, t3);
Blynk.virtualWrite(V6, h4);
Blynk.virtualWrite(V7, t4);
}
}
//---------------------------------
void reconnectBlynk() { // функция проверяет соединение с сервером Блинк
if (!Blynk.connected()) { // если соединения нет то
if (Blynk.connect()) // конектимся
BLYNK_LOG("Reconnected"); // выводим в лог
else
BLYNK_LOG("Not reconnected"); // выводим в лог
}
}