#include "UbidotsESPMQTT.h" #include #include #include #include #include "DHT.h" #include #define DHTPIN D6 #define DHT2PIN D5 #define DHTTYPE DHT11 #define DHT2TYPE DHT22 #define RELEY D3 #define potent_pin A0 #define TOKEN "BBFF-XXXXXXXXXXXXXXXX" // Your Ubidots TOKEN #define WIFINAME "XXXX_Guest" //Your SSID #define WIFIPASS "XXXX4321" // Your Wifi Pass Ubidots client(TOKEN); #define ID_1 "XXXXXf494763e71a5abb8bfc" // Tin #define ID_2 "XXXXXe34763e71eaafb569b" // Hin #define ID_3 "XXXXX661d847254c5a4b64e" // Tout #define ID_4 "XXXXXb01d84726873b01b1d" // Reley #define ID_5 "XXXXXa94763e70b1e1299a6" // Ttarget #define ID_6 "XXXXXX61d847254c5a4b64e" // Temp.out #define ID_7 "XXXXXXbc1d847258b81fb608" // Hymid.outside*/ #include #include #include #include #define OLED_RESET D4 Adafruit_SSD1306 display(OLED_RESET); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 #define LOGO16_GLCD_HEIGHT 16 #define LOGO16_GLCD_WIDTH 16 static const unsigned char PROGMEM logo16_glcd_bmp[] = { B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000 }; #if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif DHT dht(DHTPIN, DHTTYPE); DHT dht2(DHT2PIN, DHT2TYPE); float Hin; float Tin; float Hout; float Tout; float valBase = 5; int potent; int INET; //int botton; boolean value4; int delta = 2; int addr_targ = 101; int addr_reley = 102; int addr_last = 103; int addr_Time = 104; void CONNECT(); int value5; unsigned long millis(); unsigned long micros(); SimpleTimer timer1; //SimpleTimer timer2; void setup(){ Serial.begin(57600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); unsigned long millis(200); display.clearDisplay(); dht.begin(); pinMode (RELEY, OUTPUT); EEPROM.begin(512); int value5 = valBase; EEPROM.put(addr_targ, value5); timer1.setInterval(30000); Serial.println("BEGIN"); } void loop(){ if (timer1.isReady()) { Serial.println("UBIDOTS BEGIN"); CONNECT(); } display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); float value1 = dht.readTemperature(); float value2 = dht.readHumidity(); float value6 = dht2.readTemperature(); float value7 = dht2.readHumidity(); int INET = EEPROM.read(addr_targ); potent = analogRead(potent_pin); // запомнить показания с потенциометра potent = map(potent, 0, 1023, 5, 30); // перевести в диапазон 0.. 10 potent = constrain(potent, 5, 30); // ограничить диапазон 0.. 10 // Serial.println("ZADANO: "+String(potent)); if (potent >= INET) value5 =potent; else if (potent <= INET) value5 =INET; if (value1 <= value5-delta)digitalWrite(RELEY, HIGH); else if (value1 >= value5) digitalWrite(RELEY, LOW); display.println("TEMP.inside: "+String(value1)); display.println("Hymid.inside: "+String(value2)); display.println("TEMP.outside: "+String(value6)); display.println("Hymid.outside: "+String(value7)); display.println(": "); display.println("ZADANO V RUCHNU: "+String(potent)); display.println("TEMP.targrt I-NET: "+String(INET)); display.display(); unsigned long millis(200); display.clearDisplay(); } void CONNECT(){ client.wifiConnection(WIFINAME, WIFIPASS); if (WiFi.status() != WL_CONNECTED){ unsigned long millis(1000); WiFi.disconnect();} else { yield(); int INET = client.ubidotsSubscribe("DACHA","Ttarget"); if(INET < 5){ INET = EEPROM.read(addr_targ); EEPROM.put(addr_targ, INET);} else EEPROM.put(addr_targ, INET); // Serial.println("temperature_target: "+String(INET)); float value1 = dht.readTemperature(); float value2 = dht.readHumidity(); float value6 = dht2.readTemperature(); float value7 = dht2.readHumidity(); if (RELEY == LOW) value4 =0; else value4 = 1; // Serial.println("RELEY: "+String(value4)); client.add(ID_1, value1); client.add(ID_2, value2); client.add(ID_4, value4); client.add(ID_6, value6); client.add(ID_7, value7); WiFi.disconnect(); } }