#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TimeLib.h>
#include <SimpleTimer.h>
#define ONE_WIRE_BUS D3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress temp_klara = { 0x28, 0x9D, 0x5F, 0x59, 0x8, 0x0, 0x0, 0x71 };
DeviceAddress temp_sypialnia = { 0x28, 0x48, 0x7C, 0x59, 0x8, 0x0, 0x0, 0xE8 };
DeviceAddress temp_korytarz = { 0x28, 0xFF, 0x57, 0x50, 0x93, 0x15, 0x4, 0xEA };
DeviceAddress temp_salon = { 0x28, 0xA2, 0x1, 0x59, 0x8, 0x0, 0x0, 0x8F };
DeviceAddress temp_lazienka = { 0x28, 0xF8, 0x73, 0x64, 0x09, 0x00, 0x00, 0xFE };
char auth[] = "xxx";
//zmienne dla załączania PIECA
int zmiennaA = 0;
int zmiennaB = 0;
int zmiennaC = 0;
int zmiennaD = 0;
//zmienne dla poszczególnych pór dnia:
float poranek;
float dzien;
float noc;
SimpleTimer timer;
float VIR_4; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V4)
{
VIR_4 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_5; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V5)
{
VIR_5 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_6; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V6)
{
VIR_6 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_7; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V7)
{
VIR_7 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_8; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V8)
{
VIR_8 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_9; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V9)
{
VIR_9 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_10; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V10)
{
VIR_10 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_11; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V11)
{
VIR_11 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_20; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V20)
{
VIR_20 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_21; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V21)
{
VIR_21 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
float VIR_22; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V22)
{
VIR_22 = param.asFloat(); // teraz wpisujesz V1 do zmiennej globalnej
}
int VIR_23; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V23)
{
VIR_23 = param.asInt(); // teraz wpisujesz V1 do zmiennej globalnej
}
int VIR_24; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V24)
{
VIR_24 = param.asInt(); // teraz wpisujesz V1 do zmiennej globalnej
}
int VIR_25; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V25)
{
VIR_25 = param.asInt(); // teraz wpisujesz V1 do zmiennej globalnej
}
int VIR_26; //tu deklarujesz zmienną globalną
BLYNK_WRITE(V26)
{
VIR_26 = param.asInt(); // teraz wpisujesz V1 do zmiennej globalnej
}
WidgetLED led1(V12);
WidgetLED led2(V13);
WidgetLED led3(V14);
WidgetLED led4(V15);
WidgetLED led5(V16);
void setup()
{
Blynk.begin(auth, "xx", "xxx");
sensors.begin();
timer.setInterval(5000L, sendTemps); // Temperature sensor polling interval (5000L = 5 seconds)
//sypialnia
pinMode(D5, OUTPUT);
//salon
pinMode(D7, OUTPUT);
//klara
pinMode(D8, OUTPUT);
//piec
pinMode(D4, OUTPUT);
//lazienka
pinMode(D6, OUTPUT);
}
void sendTemps()
{
sensors.requestTemperatures(); // Polls the sensors
float tempklara = sensors.getTempC(temp_klara); // Gets first probe on wire in lieu of by address
Blynk.virtualWrite(0, tempklara);
float tempsypialnia = sensors.getTempC(temp_sypialnia); // Gets first probe on wire in lieu of by address
Blynk.virtualWrite(1, tempsypialnia);
float tempkorytarz = sensors.getTempC(temp_korytarz); // Gets first probe on wire in lieu of by address
Blynk.virtualWrite(2, tempkorytarz);
float tempsalon = sensors.getTempC(temp_salon); // Gets first probe on wire in lieu of by address
Blynk.virtualWrite(3, tempsalon);
float templazienka = sensors.getTempC(temp_lazienka); // Gets first probe on wire in lieu of by address
Blynk.virtualWrite(17, templazienka);
//regulacje temperatur:
// regulacja temp KLARA
if(tempklara < VIR_4)
{
float tempklara = sensors.getTempC(temp_klara);
if(tempklara < VIR_4)
{
led1.on();
digitalWrite(D8, LOW);
zmiennaA = 1;
}
}
if(tempklara > VIR_5)
{
float tempklara = sensors.getTempC(temp_klara);
if(tempklara > VIR_5)
{
led1.off();
digitalWrite(D8, HIGH);
zmiennaA = 0;
}
}
// regulacja temp sypilania
if(tempsypialnia < VIR_6)
{
float tempsypialnia = sensors.getTempC(temp_sypialnia);
if(tempsypialnia < VIR_6)
{
led2.on();
digitalWrite(D5, LOW);
zmiennaB = 1;
}}
if(tempsypialnia > VIR_7)
{
float tempsypialnia = sensors.getTempC(temp_sypialnia);
if(tempsypialnia > VIR_7)
{
led2.off();
digitalWrite(D5, HIGH);
zmiennaB = 0;
}}
// regulacja temp lazienka
if(templazienka < VIR_8)
{
float templazienka = sensors.getTempC(temp_lazienka);
if(templazienka < VIR_8)
{
led3.on();
digitalWrite(D6, LOW);
zmiennaC = 1;
}}
if(templazienka > VIR_9)
{
float templazienka = sensors.getTempC(temp_lazienka);
if(templazienka > VIR_9)
{
led3.off();
digitalWrite(D6, HIGH);
zmiennaC = 0;
}}
// regulacja temp salon
if(tempsalon < VIR_10)
{
float tempsalon = sensors.getTempC(temp_salon);
if(tempsalon < VIR_10)
{
led4.on();
digitalWrite(D7, LOW);
zmiennaD = 1;
}}
if(tempsalon > VIR_11)
{
float tempsalon = sensors.getTempC(temp_salon);
if(tempsalon > VIR_11)
{
led4.off();
digitalWrite(D7, HIGH);
zmiennaD = 0;
}}
if(zmiennaA == 1 || zmiennaB == 1 || zmiennaC == 1 || zmiennaD == 1 )
{
digitalWrite(D4, LOW); //załączenie pieca
led5.on();
}
else
{
digitalWrite(D4, HIGH);
led5.off();
}
//aktywacja sterowania automatycznego
if(VIR_26 == 1)
{
// Sterowanie dzień noc poranek:
//poranek
poranek = VIR_20;
dzien = VIR_21;
noc = VIR_22;
// jeśli timer wskarze 1 na pinie v23 czyli że jest poranek pomiędzy np. 5:00 a 6:00
if(VIR_23 == 1)
{
//zmiana temperatur załączeń
Blynk.virtualWrite(V10, poranek);
Blynk.virtualWrite(V6, poranek);
Blynk.virtualWrite(V4, poranek);
Blynk.virtualWrite(V8, poranek);
//zmiana temperatur wyłączeń
Blynk.virtualWrite(V11, poranek+1);
Blynk.virtualWrite(V7, poranek+1);
Blynk.virtualWrite(V5, poranek+1);
Blynk.virtualWrite(V9, poranek+1);
}
// jeśli timer wskarze 1 na pinie v24 czyli że jest dzien pomiędzy np. 6:00 a 20
if(VIR_24 == 1)
{
//zmiana temperatur załączeń
Blynk.virtualWrite(V10, dzien);
Blynk.virtualWrite(V6, dzien);
Blynk.virtualWrite(V4, dzien);
Blynk.virtualWrite(V8, dzien);
//zmiana temperatur wyłączeń
Blynk.virtualWrite(V11, dzien+1);
Blynk.virtualWrite(V7, dzien+1);
Blynk.virtualWrite(V5, dzien+1);
Blynk.virtualWrite(V9, dzien+1);
}
// jeśli timer wskarze 1 na pinie v25 czyli że jest noc pomiędzy np. 20:00 a 5:00
if(VIR_25 == 1)
{
//zmiana temperatur załączeń
Blynk.virtualWrite(V10, noc);
Blynk.virtualWrite(V6, noc);
Blynk.virtualWrite(V4, noc);
Blynk.virtualWrite(V8, noc);
//zmiana temperatur wyłączeń
Blynk.virtualWrite(V11, noc+1);
Blynk.virtualWrite(V7, noc+1);
Blynk.virtualWrite(V5, noc+1);
Blynk.virtualWrite(V9, noc+1);
}
}
}
void loop()
{
Blynk.run();
timer.run();
}
Comments