Вот скетч
/**************************************************************
http://www.EK21 - произвосдство и поставка ЭНЕРГЕТИЧЕСКОГО ОБОРУДОВАНИЯ.
**************************************************************
* This example runs directly on ESP8266 chip.
*
* You need to install this for ESP8266 development:
* https://github.com/esp8266/Arduino
*
* Please be sure to select the right ESP8266 module
* in the Tools -> Board menu!
*
* Change WiFi ssid, pass, and Blynk auth token to run
*
**************************************************************/
#include "DHT.h"
#define fan_G D1 //вентилятор D1 Гараж
#define fan_P D5 //вентилятор D5 Подвал
#define fan_S D6 //вентилятор D1 Смотровая яма
#define DHTPIN_U D0//датчик на улице
#define DHTPIN_G D4//датчик в гараже
#define DHTPIN_P D3//датчик в подвале
#define DHTPIN_S D2//датчик в смотровой яме
// what digital pin we're connected to
#define DHTTYPE DHT22
#define DHTTYPE DHT11
#define PIN D1 //контролируемый пин
WidgetLED fan_G(V8); // Светодиод на смарте
#define PIN D5 //контролируемый пин
WidgetLED fan_P(V9); // Светодиод на смарте
#define PIN D6 //контролируемый пин
WidgetLED fan_S(V10); // Светодиод на смарте
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
int stat = 0;
int maxHum = 60;
#include <SimpleTimer.h> //таймер
SimpleTimer timer;
char auth[] = "123456789012345678901234567890 ";
DHT dht_U(DHTPIN_U, DHTTYPE);
DHT dht_G(DHTPIN_G, DHTTYPE);
DHT dht_P(DHTPIN_P, DHTTYPE);
DHT dht_S(DHTPIN_S, DHTTYPE);
void sendOnOff()
{
int x = digitalRead(fan_G);//читаем пин модуля
if (x == 1) {//проверим состояние
led fan_G.on(); //вкл вирт.светодиод
}
else { //иначе выключим
led fan_G.off();
}
int x = digitalRead(fan_P);
if (x == 1) {//проверим состояние
led fan_P.on(); //вкл вирт.светодиод
}
else { //иначе выключим
led fan_P.off();
}
int x = digitalRead(fan_S);
if (x == 1) {//проверим состояние
led fan_S.on(); //вкл вирт.светодиод
}
else { //иначе выключим
led fan_S.off();
}
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, "ASUS", "ZipandSergey");
dht_U.begin();
dht_G.begin();
dht_P.begin();
dht_S.begin();
pinMode(fan_G, OUTPUT);
pinMode(fan_P, OUTPUT);
pinMode(fan_S, OUTPUT);
timer.setInterval(1000, sendOnOff);//устанавливаем перезапуск sendOnOff с интервалом 1с.
}
BLYNK_WRITE(V1) // запрос данных с датчика
{
stat = param.asInt();
}
void loop()
{
// ждем пару секунд перед началом измерений
delay(2000);
Blynk.run();
timer.run();
Send();
}
void Send(){
float h_U = dht.readHumidity();
// Read temperature as Celsius (the default)
float t_U = dht.readTemperature();
if (stat == 1)
float h_P = dht.readHumidity();
// Read temperature as Celsius (the default)
float t_P = dht.readTemperature();
if (stat == 1)
float h_S = dht.readHumidity();
// Read temperature as Celsius (the default)
float t_S = dht.readTemperature();
if (stat == 1)
{
Blynk.virtualWrite(V2, h);
Blynk.virtualWrite(V3, t);
Blynk.virtualWrite(V4, h);
Blynk.virtualWrite(V5, t);
Blynk.virtualWrite(V6, h);
Blynk.virtualWrite(V7, t);
}
// проверяем, были ли ошибки при считывании и, если были, начинаем заново
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
if(h > maxHum)
{
digitalWrite(fan_G, HIGH);
digitalWrite(fan_P, HIGH);
digitalWrite(fan_S, HIGH);
}
else if (h < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan_G, LOW);
digitalWrite(fan_P, LOW);
digitalWrite(fan_S, LOW);
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
}