1180 lines
38 KiB
Arduino
1180 lines
38 KiB
Arduino
#include <Wire.h>
|
|
#include <DHT.h>
|
|
#include <Ethernet.h>
|
|
#include <EEPROM.h>
|
|
#include <MQUnifiedsensor.h>
|
|
|
|
/* analog pin */
|
|
#define rain A8 // 수분 감지 센서
|
|
#define wla A9 // Window Linear Actuator 전압센서
|
|
#define room_lux1 A10 // 실내 조도 감지 1
|
|
#define room_lux2 A11 // 실내 조도 감지 2
|
|
MQUnifiedsensor gas5("Arduino UNO", 5, 10, A12, "MQ-5"); // lpg 가스 센서 가스측 mq5 - 초흰 - 12
|
|
MQUnifiedsensor gas7("Arduino UNO", 5, 10, A13, "MQ-7"); // co 가스 센서 가스측 mq7 - 초 - 13
|
|
|
|
/* digital pin */
|
|
#define detect1 28 // 감지1
|
|
#define detect2 29 // 감지2
|
|
#define detect3 30 // 감지3
|
|
#define heatrelay 31 // 매트 쇼트 릴레이
|
|
#define boilerrelay 32 // 보일러 쇼트 릴레이 // 파
|
|
#define windowclose 33 // 윈도우 클로즈
|
|
#define windowopen 34 // 윈도우 오픈
|
|
#define window0 35 // 윈도우 닫힘
|
|
#define window2 36 // 윈도우 열림 - 2단계
|
|
#define window1 37 // 윈도우 열림 - 1단계
|
|
#define window4 38 // 윈도우 완전 열림
|
|
#define window3 39 // 윈도우 열림 - 3단계
|
|
|
|
//DHT room_dht1(41, DHT22); // 방 1 온습도센서
|
|
DHT room_dht2(42, DHT22); // 방 2 온습도센서
|
|
//DHT room_dht3(43, DHT22); // 방 3 온습도센서
|
|
DHT room_dht4(44, DHT22); // 방 4 온습도센서
|
|
DHT pad_dht1(46, DHT22); // 매트 온습도센서
|
|
DHT outdoor_dht1(47, DHT22); // 실외 1 온습도센서
|
|
DHT outdoor_dht2(48, DHT22); // 실외 2 온습도센서
|
|
|
|
EthernetServer es(21263);
|
|
|
|
byte seconds, minutes, hours, day, date, month, year,
|
|
roomtemp, roomhumi, roomhic, roomindex, roomlux,
|
|
outdoortemp, outdoorhumi, outdoorhic, outdoorindex,
|
|
padtemp, padhumi, padhic, padindex,
|
|
f_overload,
|
|
mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
|
|
char domain[] = "seo.chaegeon.com";
|
|
float room_t, room_h, room_hic, room_index, room_lux,
|
|
room_t_previous_value, room_h_previous_value, room_hic_previous_value, room_index_previous_value, room_lux_previous_value,
|
|
outdoor_t, outdoor_h, outdoor_hic, outdoor_index, outdoor_moisture,
|
|
outdoor_t_previous_value, outdoor_h_previous_value, outdoor_hic_previous_value, outdoor_index_previous_value,
|
|
pad_t, pad_h, pad_hic, pad_index,
|
|
pad_t_previous_value, pad_h_previous_value, pad_hic_previous_value, pad_index_previous_value,
|
|
window_v;
|
|
String identifier, command, ipaddress, useragent;
|
|
boolean f_lastboot, detect, serialflag = 0;
|
|
unsigned long sensing, overloaddetectdelay;
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
|
|
Wire.begin();
|
|
get3231Date();
|
|
|
|
// room_dht1.begin();
|
|
room_dht2.begin();
|
|
// room_dht3.begin();
|
|
room_dht4.begin();
|
|
pad_dht1.begin();
|
|
outdoor_dht1.begin();
|
|
outdoor_dht2.begin();
|
|
|
|
gas5.setRegressionMethod(1); gas5.setA(80.897); gas5.setB(-2.431); gas5.init(); gas5.setR0(12.24);
|
|
gas7.setRegressionMethod(1); gas7.setA(99.042); gas7.setB(-1.518); gas7.init(); gas7.setR0(21.78);
|
|
|
|
pinMode(heatrelay, OUTPUT); digitalWrite(heatrelay, 1);
|
|
pinMode(boilerrelay, OUTPUT); digitalWrite(boilerrelay, 1);
|
|
pinMode(windowopen, OUTPUT); digitalWrite(windowopen, 1);
|
|
pinMode(windowclose, OUTPUT); digitalWrite(windowclose, 1);
|
|
pinMode(wla, INPUT);
|
|
pinMode(rain, INPUT);
|
|
pinMode(detect1, INPUT);
|
|
pinMode(detect2, INPUT);
|
|
pinMode(detect3, INPUT);
|
|
pinMode(window0, INPUT_PULLUP);
|
|
pinMode(window1, INPUT_PULLUP);
|
|
pinMode(window2, INPUT_PULLUP);
|
|
pinMode(window3, INPUT_PULLUP);
|
|
pinMode(window4, INPUT_PULLUP);
|
|
|
|
sensor();
|
|
|
|
Ethernet.begin(mac);
|
|
es.begin();
|
|
}
|
|
|
|
void loop() {
|
|
get3231Date();
|
|
window_control();
|
|
communication();
|
|
control();
|
|
|
|
if (Serial.available()) {
|
|
if (Serial.read() == 84) {
|
|
set3231Date();
|
|
get3231Date();
|
|
Serial.print("20");
|
|
Serial.print(year, DEC);
|
|
Serial.print(".");
|
|
Serial.print(month, DEC);
|
|
Serial.print(".");
|
|
Serial.print(date, DEC);
|
|
Serial.print(".(");
|
|
Serial.print(day, DEC);
|
|
Serial.print(")\t");
|
|
Serial.print(hours, DEC);
|
|
Serial.print(":");
|
|
Serial.print(minutes, DEC);
|
|
Serial.print(":");
|
|
Serial.println(seconds, DEC);
|
|
}
|
|
}
|
|
|
|
if (millis() - sensing >= 2000) {
|
|
sensor();
|
|
serial_print();
|
|
|
|
if (EEPROM.read(2) == 0) { // 자동 제어
|
|
// if (day == 1 || day == 7) {
|
|
// if (pad_hic <= EEPROM.read(1)) {
|
|
// digitalWrite(heatrelay, 0);
|
|
// } else if (pad_hic > EEPROM.read(1)) {
|
|
// digitalWrite(heatrelay, 1);
|
|
// }
|
|
// if (day >= 2 && day <= 6) { // } else
|
|
if (hours >= 22 || hours <= 8) {
|
|
if (pad_hic <= EEPROM.read(1)) {
|
|
digitalWrite(heatrelay, 0);
|
|
} else if (pad_hic > EEPROM.read(1)) {
|
|
digitalWrite(heatrelay, 1);
|
|
}
|
|
} else if (hours > 8 && hours < 22) {
|
|
digitalWrite(heatrelay, 1);
|
|
}
|
|
// }
|
|
} else if (EEPROM.read(2) == 1) { // 수동 제어 - 켜짐
|
|
if ((hours == 0 || hours == 12) && minutes == 0 && seconds < 5) { // 수동 - 켜짐 상태에서 오전 12시 또는 오후 12시면 자동제어로 변경
|
|
EEPROM.update(2, 0);
|
|
}
|
|
digitalWrite(heatrelay, 0);
|
|
} else if (EEPROM.read(2) == 2) { // 수동 제어 - 꺼짐
|
|
digitalWrite(heatrelay, 1);
|
|
}
|
|
|
|
if (EEPROM.read(5) == 0) { // 자동 제어
|
|
if (day == 1 || day == 7) {
|
|
if (room_hic <= EEPROM.read(4) - 0.5) {
|
|
if (EEPROM.read(6) <= 1) {
|
|
digitalWrite(boilerrelay, 0);
|
|
} else if (EEPROM.read(6) > 1) {
|
|
digitalWrite(boilerrelay, 1);
|
|
}
|
|
} else if (room_hic > EEPROM.read(4)) {
|
|
digitalWrite(boilerrelay, 1);
|
|
}
|
|
} else if (day >= 2 && day <= 6) {
|
|
if (hours >= 16 || hours <= 8) {
|
|
if (room_hic <= EEPROM.read(4) - 0.5) {
|
|
if (EEPROM.read(6) <= 1) {
|
|
digitalWrite(boilerrelay, 0);
|
|
} else if (EEPROM.read(6) > 1) {
|
|
digitalWrite(boilerrelay, 1);
|
|
}
|
|
} else if (room_hic > EEPROM.read(4)) {
|
|
digitalWrite(boilerrelay, 1);
|
|
}
|
|
} else if (hours > 8 && hours < 16) {
|
|
digitalWrite(boilerrelay, 1);
|
|
}
|
|
}
|
|
} else if (EEPROM.read(5) == 1) { // 수동 제어 - 켜짐
|
|
if (room_hic > 25) {
|
|
EEPROM.update(5, 0);
|
|
}
|
|
digitalWrite(boilerrelay, 0);
|
|
} else if (EEPROM.read(5) == 2) { // 수동 제어 - 꺼짐
|
|
digitalWrite(boilerrelay, 1);
|
|
}
|
|
sensing = millis();
|
|
}
|
|
}
|
|
|
|
void sensor() {
|
|
room_t = (room_dht2.readTemperature() + room_dht4.readTemperature()) / 2; // 센서 교체 후 원상 복구.room_dht1.readTemperature() + room_dht2.readTemperature() +
|
|
room_h = (room_dht2.readHumidity() + room_dht4.readHumidity()) / 2; // 센서 교체 후 원상 복구.room_dht1.readHumidity() + room_dht2.readHumidity() +
|
|
room_hic = room_dht2.computeHeatIndex(room_t, room_h, false);
|
|
room_index = (1.8f * room_t) - (0.55 * (1 - room_h / 100.0f) * (1.8f * room_t - 26)) + 32;
|
|
room_lux = (((1023 - analogRead(room_lux1)) + (1023 - analogRead(room_lux2))) / 2) / 1024.0f * 100;
|
|
|
|
outdoor_t = outdoor_dht1.readTemperature(); // 센서 교체 후 원상 복구. + outdoor_dht2.readTemperature()
|
|
outdoor_h = outdoor_dht1.readHumidity(); // 센서 교체 후 원상 복구. + outdoor_dht2.readHumidity()
|
|
outdoor_hic = outdoor_dht1.computeHeatIndex(outdoor_t, outdoor_h, false);
|
|
outdoor_index = (1.8f * outdoor_t) - (0.55 * (1 - outdoor_h / 100.0f) * (1.8f * outdoor_t - 26)) + 32;
|
|
outdoor_moisture = (1023 - analogRead(rain)) / 1024.0f * 100;
|
|
|
|
gas5.update();
|
|
gas7.update();
|
|
|
|
pad_t = pad_dht1.readTemperature();
|
|
pad_h = pad_dht1.readHumidity();
|
|
pad_hic = pad_dht1.computeHeatIndex(pad_t, pad_h, false);
|
|
pad_index = (1.8f * pad_t) - (0.55 * (1 - pad_h / 100.0f) * (1.8f * pad_t - 26)) + 32;
|
|
|
|
value_change_check();
|
|
}
|
|
|
|
void control() {
|
|
if (ipaddress != "0.0.0.0" && ipaddress != "") {
|
|
if (identifier == "window") {
|
|
EEPROM.update(8, 1);
|
|
if (command == "automatic") {
|
|
EEPROM.update(6, 0); // 닫기
|
|
} else if (command == "close") {
|
|
EEPROM.update(6, 1); // 닫기
|
|
} else if (command == "little") {
|
|
EEPROM.update(6, 2);
|
|
} else if (command == "1-3-open") {
|
|
EEPROM.update(6, 3);
|
|
} else if (command == "2-3-open") {
|
|
EEPROM.update(6, 4);
|
|
} else if (command == "fully-open") {
|
|
EEPROM.update(6, 5);
|
|
}
|
|
} else if (identifier == "boiler") {
|
|
if (command == "automatic") {
|
|
EEPROM.update(5, 0);
|
|
} else if (command == "manual-on") {
|
|
EEPROM.update(5, 1);
|
|
} else if (command == "manual-off") {
|
|
EEPROM.update(5, 2);
|
|
}
|
|
} else if (identifier == "boiler-temp") {
|
|
if (command.toInt() >= 17 && command.toInt() <= 25) {
|
|
EEPROM.update(4, command.toInt());
|
|
}
|
|
} else if (identifier == "electric-pad") {
|
|
if (command == "automatic") {
|
|
EEPROM.update(2, 0);
|
|
} else if (command == "manual-on") {
|
|
EEPROM.update(2, 1);
|
|
} else if (command == "manual-off") {
|
|
EEPROM.update(2, 2);
|
|
}
|
|
} else if (identifier == "electric-pad-temp") {
|
|
if (command.toInt() >= 29 && command.toInt() <= 90) {
|
|
EEPROM.update(1, command.toInt());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void communication() {
|
|
EthernetClient server = es.available(), client;
|
|
|
|
// if (millis() - senddelay >= 500) {
|
|
if (client.connect(domain, 80)) {
|
|
String sendvalue = "RT=";
|
|
sendvalue += int(room_t); sendvalue += "."; sendvalue += int((room_t - int(room_t)) * 10);
|
|
sendvalue += "&RH="; sendvalue += int(room_h); sendvalue += "."; sendvalue += int((room_h - int(room_h)) * 10);
|
|
sendvalue += "&RC="; sendvalue += int(room_hic); sendvalue += "."; sendvalue += int((room_hic - int(room_hic)) * 10);
|
|
sendvalue += "&RI="; sendvalue += int(room_index); sendvalue += "."; sendvalue += int((room_index - int(room_index)) * 10);
|
|
sendvalue += "&RL="; sendvalue += int(room_lux); sendvalue += "."; sendvalue += int((room_lux - int(room_lux)) * 100);
|
|
sendvalue += "&WV="; sendvalue += int(window_v); sendvalue += "."; sendvalue += int((window_v - int(window_v)) * 100);
|
|
sendvalue += "&OT="; sendvalue += int(outdoor_t); sendvalue += ".";
|
|
|
|
if (int((outdoor_t - int(outdoor_t)) * 10) < 0) {
|
|
sendvalue += int((outdoor_t - int(outdoor_t)) * -10);
|
|
} else if (int((outdoor_t - int(outdoor_t)) * 10) >= 0) {
|
|
sendvalue += int((outdoor_t - int(outdoor_t)) * 10);
|
|
}
|
|
|
|
sendvalue += "&OH="; sendvalue += int(outdoor_h); sendvalue += "."; sendvalue += int((outdoor_h - int(outdoor_h)) * 10);
|
|
sendvalue += "&OC="; sendvalue += int(outdoor_hic); sendvalue += ".";
|
|
|
|
if (int((outdoor_hic - int(outdoor_hic)) * 10) < 0) {
|
|
sendvalue += int((outdoor_t - int(outdoor_t)) * -10);
|
|
} else if (int((outdoor_hic - int(outdoor_hic)) * 10) >= 0) {
|
|
sendvalue += int((outdoor_hic - int(outdoor_hic)) * 10);
|
|
}
|
|
|
|
sendvalue += "&OI="; sendvalue += int(outdoor_index); sendvalue += "."; sendvalue += int((outdoor_index - int(outdoor_index)) * 10);
|
|
sendvalue += "&OM="; sendvalue += int(outdoor_moisture); sendvalue += "."; sendvalue += int((outdoor_moisture - int(outdoor_moisture)) * 100);
|
|
sendvalue += "&PT="; sendvalue += int(pad_t); sendvalue += "."; sendvalue += int((pad_t - int(pad_t)) * 10);
|
|
sendvalue += "&PC="; sendvalue += int(pad_hic); sendvalue += "."; sendvalue += int((pad_hic - int(pad_hic)) * 10);
|
|
sendvalue += "&g5="; sendvalue += int(gas5.readSensor()); sendvalue += "."; sendvalue += int((gas5.readSensor() - int(gas5.readSensor())) * 100);
|
|
sendvalue += "&g7="; sendvalue += int(gas7.readSensor()); sendvalue += "."; sendvalue += int((gas7.readSensor() - int(gas7.readSensor())) * 100);
|
|
|
|
if (detect != 0) {
|
|
sendvalue += "&d=";
|
|
sendvalue += detect;
|
|
}
|
|
|
|
if (EEPROM.read(6) != 0) {
|
|
sendvalue += "&WS=";
|
|
sendvalue += EEPROM.read(6);
|
|
}
|
|
|
|
if (EEPROM.read(10) != 0) {
|
|
sendvalue += "&WM=";
|
|
sendvalue += EEPROM.read(10);
|
|
}
|
|
|
|
if (EEPROM.read(7) != 0) {
|
|
sendvalue += "&WE=";
|
|
sendvalue += EEPROM.read(7);
|
|
}
|
|
|
|
if (EEPROM.read(2) != 0) {
|
|
sendvalue += "&PS=";
|
|
sendvalue += EEPROM.read(2);
|
|
}
|
|
|
|
if (digitalRead(heatrelay) != 0) {
|
|
sendvalue += "&PR=";
|
|
sendvalue += digitalRead(heatrelay);
|
|
}
|
|
|
|
if (EEPROM.read(1) != 0) {
|
|
sendvalue += "&ps=";
|
|
sendvalue += EEPROM.read(1);
|
|
}
|
|
|
|
if (EEPROM.read(5) != 0) {
|
|
sendvalue += "&BS=";
|
|
sendvalue += EEPROM.read(5);
|
|
}
|
|
|
|
if (digitalRead(boilerrelay) != 0) {
|
|
sendvalue += "&BR=";
|
|
sendvalue += digitalRead(boilerrelay);
|
|
}
|
|
|
|
if (EEPROM.read(4) != 0) {
|
|
sendvalue += "&bs=";
|
|
sendvalue += EEPROM.read(4);
|
|
}
|
|
|
|
if (roomtemp != 0) {
|
|
sendvalue += "&rt=";
|
|
sendvalue += roomtemp;
|
|
}
|
|
|
|
if (roomhumi != 0) {
|
|
sendvalue += "&rh=";
|
|
sendvalue += roomhumi;
|
|
}
|
|
|
|
if (roomhic != 0) {
|
|
sendvalue += "&rc=";
|
|
sendvalue += roomhic;
|
|
}
|
|
|
|
if (roomindex != 0) {
|
|
sendvalue += "&ri=";
|
|
sendvalue += roomindex;
|
|
}
|
|
|
|
if (outdoortemp != 0) {
|
|
sendvalue += "&ot=";
|
|
sendvalue += outdoortemp;
|
|
}
|
|
|
|
if (outdoorhumi != 0) {
|
|
sendvalue += "&oh=";
|
|
sendvalue += outdoorhumi;
|
|
}
|
|
|
|
if (outdoorhic != 0) {
|
|
sendvalue += "&oc=";
|
|
sendvalue += outdoorhic;
|
|
}
|
|
|
|
if (outdoorindex != 0) {
|
|
sendvalue += "&oi=";
|
|
sendvalue += outdoorindex;
|
|
}
|
|
|
|
if (padtemp != 0) {
|
|
sendvalue += "&pt=";
|
|
sendvalue += padtemp;
|
|
}
|
|
|
|
if (padhic != 0) {
|
|
sendvalue += "&pc=";
|
|
sendvalue += padhic;
|
|
}
|
|
|
|
if (f_lastboot == 0) {
|
|
sendvalue += "&lb=20";
|
|
if (year < 10) sendvalue += "0"; sendvalue += year;
|
|
if (month < 10) sendvalue += "0"; sendvalue += month;
|
|
if (date < 10) sendvalue += "0"; sendvalue += date;
|
|
if (hours < 10) sendvalue += "0"; sendvalue += hours;
|
|
if (minutes < 10) sendvalue += "0"; sendvalue += minutes;
|
|
if (seconds < 10) sendvalue += "0"; sendvalue += seconds;
|
|
|
|
sendvalue += "&dip=";
|
|
for (byte thisByte = 0; thisByte < 4; thisByte++) {
|
|
sendvalue += Ethernet.localIP()[thisByte];
|
|
if (thisByte < 3) {
|
|
sendvalue += ".";
|
|
}
|
|
}
|
|
|
|
f_lastboot = 1;
|
|
}
|
|
|
|
if (f_overload == 0) {
|
|
sendvalue += "&wd=20";
|
|
if (year < 10) sendvalue += "0"; sendvalue += year;
|
|
if (month < 10) sendvalue += "0"; sendvalue += month;
|
|
if (date < 10) sendvalue += "0"; sendvalue += date;
|
|
if (hours < 10) sendvalue += "0"; sendvalue += hours;
|
|
if (minutes < 10) sendvalue += "0"; sendvalue += minutes;
|
|
if (seconds < 10) sendvalue += "0"; sendvalue += seconds;
|
|
sendvalue += "&wv=";
|
|
sendvalue += int(window_v);
|
|
sendvalue += ".";
|
|
sendvalue += int((window_v - int(window_v)) * 100);
|
|
|
|
f_overload = 1;
|
|
}
|
|
|
|
if (ipaddress != "") {
|
|
sendvalue += "&ip=";
|
|
sendvalue += ipaddress;
|
|
ipaddress = "";
|
|
}
|
|
|
|
if (identifier != "") {
|
|
sendvalue += "&id=";
|
|
sendvalue += identifier;
|
|
identifier = "";
|
|
}
|
|
|
|
if (command != "") {
|
|
sendvalue += "&c=";
|
|
sendvalue += command;
|
|
command = "";
|
|
}
|
|
|
|
if (useragent != "") {
|
|
sendvalue += "&ua=";
|
|
sendvalue += useragent;
|
|
useragent = "";
|
|
}
|
|
|
|
sendvalue += "&l=";
|
|
int sendvaluelength = sendvalue.length();
|
|
sendvaluelength = sendvaluelength + String(sendvaluelength).length();
|
|
sendvalue += sendvaluelength;
|
|
|
|
client.println("POST /communication.php HTTP/1.1");
|
|
client.println("Host: seo.chaegeon.com");
|
|
client.println("Content-Type: application/x-www-form-urlencoded");
|
|
client.print("Content-Length: ");
|
|
client.println(sendvalue.length());
|
|
client.println();
|
|
client.println(sendvalue);
|
|
client.stop();
|
|
// senddelay = millis();
|
|
}
|
|
// }
|
|
|
|
if (server) {
|
|
boolean currentLineIsBlank = 1;
|
|
String finder = "", temp = "", identifier_ = "", command_ = "", ipaddress_ = "", useragent_ = "";
|
|
int data_length = -1;
|
|
while (server.connected()) {
|
|
if (server.available()) {
|
|
char c = server.read();
|
|
finder += c;
|
|
|
|
if (c == '\n' && currentLineIsBlank) {
|
|
temp = finder.substring(finder.indexOf("Content-Length:") + 15); temp.trim(); data_length = temp.toInt();
|
|
while (data_length-- > 0) {
|
|
c = server.read();
|
|
finder += c;
|
|
}
|
|
|
|
ipaddress_ = finder.substring(finder.indexOf("ip=") + 3, finder.indexOf("&", finder.indexOf("ip=") + 3)); ipaddress = ipaddress_;
|
|
identifier_ = finder.substring(finder.indexOf("&") + 1, finder.indexOf("=", finder.indexOf("&") + 1)); identifier = identifier_;
|
|
command_ = finder.substring(finder.indexOf(identifier + "=") + identifier.length() + 1, finder.indexOf("\n", finder.indexOf(identifier + "=") + identifier.length() + 1)); command = command_;
|
|
useragent_ = finder.substring(finder.indexOf("User-Agent: ") + 12, finder.indexOf("\n" - 1, finder.indexOf("User-Agent: ") + 12)); useragent = useragent_;
|
|
|
|
server.println("HTTP/1.1 301 Moved Permanently");
|
|
server.println("Location: http://seo.chaegeon.com");
|
|
server.println();
|
|
break;
|
|
}
|
|
|
|
if (c == '\n') {
|
|
currentLineIsBlank = 1;
|
|
} else if (c != '\r') {
|
|
currentLineIsBlank = 0;
|
|
}
|
|
}
|
|
}
|
|
server.stop();
|
|
}
|
|
}
|
|
|
|
void serial_print() {
|
|
if (serialflag == 1) {
|
|
// String sendvalue = "datetime=20";
|
|
// sendvalue += int(year);
|
|
// sendvalue += ".";
|
|
// sendvalue += int(month);
|
|
// sendvalue += ".";
|
|
// sendvalue += int(date);
|
|
// sendvalue += ".%20";
|
|
// sendvalue += int(hours);
|
|
// sendvalue += ":";
|
|
// sendvalue += int(minutes);
|
|
// sendvalue += ":";
|
|
// sendvalue += int(seconds);
|
|
// sendvalue += "&room_t=";
|
|
// sendvalue += int(floor(room_t));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((room_t - int(floor(room_t))) * 100);
|
|
// sendvalue += "&room_h=";
|
|
// sendvalue += int(floor(room_h));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((room_h - int(floor(room_h))) * 100);
|
|
// sendvalue += "&room_hic=";
|
|
// sendvalue += int(floor(room_hic));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((room_hic - int(floor(room_hic))) * 100);
|
|
// sendvalue += "&room_index=";
|
|
// sendvalue += int(floor(room_index));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((room_index - int(floor(room_index))) * 100);
|
|
// sendvalue += "&room_lux=";
|
|
// sendvalue += int(floor(room_lux));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((room_lux - int(floor(room_lux))) * 100);
|
|
// sendvalue += "&detect=";
|
|
// sendvalue += detect;
|
|
// sendvalue += "&window_s=";
|
|
// sendvalue += EEPROM.read(6);
|
|
// sendvalue += "&window_l=";
|
|
// sendvalue += window_l;
|
|
// sendvalue += "&window_e=";
|
|
// sendvalue += EEPROM.read(7);
|
|
// sendvalue += "&window_v=";
|
|
// sendvalue += int(floor(window_v));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((window_v - int(floor(window_v))) * 100);
|
|
// sendvalue += "&window_ov=";
|
|
// sendvalue += EEPROM.read(8);
|
|
// sendvalue += ".";
|
|
// sendvalue += EEPROM.read(9);
|
|
// sendvalue += "&outdoor_t=";
|
|
// sendvalue += int(floor(outdoor_t));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((outdoor_t - int(floor(outdoor_t))) * 100);
|
|
// sendvalue += "&outdoor_h=";
|
|
// sendvalue += int(floor(outdoor_h));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((outdoor_h - int(floor(outdoor_h))) * 100);
|
|
// sendvalue += "&outdoor_hic=";
|
|
// sendvalue += int(floor(outdoor_hic));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((outdoor_hic - int(floor(outdoor_hic))) * 100);
|
|
// sendvalue += "&outdoor_index=";
|
|
// sendvalue += int(floor(outdoor_index));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((outdoor_index - int(floor(outdoor_index))) * 100);
|
|
// sendvalue += "&pad_s=";
|
|
// sendvalue += EEPROM.read(2);
|
|
// sendvalue += "&pad_r=";
|
|
// sendvalue += digitalRead(heatrelay);
|
|
// sendvalue += "&pad_t=";
|
|
// sendvalue += int(floor(pad_t));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((pad_t - int(floor(pad_t))) * 100);
|
|
// sendvalue += "&pad_h=";
|
|
// sendvalue += int(floor(pad_h));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((pad_h - int(floor(pad_h))) * 100);
|
|
// sendvalue += "&pad_hic=";
|
|
// sendvalue += int(floor(pad_hic));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((pad_hic - int(floor(pad_hic))) * 100);
|
|
// sendvalue += "&pad_low=";
|
|
// sendvalue += EEPROM.read(0);
|
|
// sendvalue += "&pad_high=";
|
|
// sendvalue += EEPROM.read(1);
|
|
// sendvalue += "&boiler_s=";
|
|
// sendvalue += EEPROM.read(5);
|
|
// sendvalue += "&boiler_r=";
|
|
// sendvalue += digitalRead(boilerrelay);
|
|
// sendvalue += "&boiler_t=";
|
|
// sendvalue += int(floor(boiler_t));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((boiler_t - int(floor(boiler_t))) * 100);
|
|
// sendvalue += "&boiler_h=";
|
|
// sendvalue += int(floor(boiler_h));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((boiler_h - int(floor(boiler_h))) * 100);
|
|
// sendvalue += "&boiler_low=";
|
|
// sendvalue += EEPROM.read(3);
|
|
// sendvalue += "&boiler_high=";
|
|
// sendvalue += EEPROM.read(4);
|
|
// sendvalue += "&gas5=";
|
|
// sendvalue += int(floor(gas5.readSensor()));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((gas5.readSensor() - int(floor(gas5.readSensor()))) * 100);
|
|
// sendvalue += "&boiler5=";
|
|
// sendvalue += int(floor(boiler5.readSensor()));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((boiler5.readSensor() - int(floor(boiler5.readSensor()))) * 100);
|
|
// sendvalue += "&gas7=";
|
|
// sendvalue += int(floor(gas7.readSensor()));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((gas7.readSensor() - int(floor(gas7.readSensor()))) * 100);
|
|
// sendvalue += "&boiler7=";
|
|
// sendvalue += int(floor(boiler7.readSensor()));
|
|
// sendvalue += ".";
|
|
// sendvalue += int((boiler7.readSensor() - int(floor(boiler7.readSensor()))) * 100);
|
|
// sendvalue += "&roomtemp=";
|
|
// sendvalue += roomtemp;
|
|
// sendvalue += "&roomhumi=";
|
|
// sendvalue += roomhumi;
|
|
// sendvalue += "&roomhic=";
|
|
// sendvalue += roomhic;
|
|
// sendvalue += "&roomindex=";
|
|
// sendvalue += roomindex;
|
|
// sendvalue += "&roomlux=";
|
|
// sendvalue += roomlux;
|
|
// sendvalue += "&outdoortemp=";
|
|
// sendvalue += outdoortemp;
|
|
// sendvalue += "&outdoorhumi=";
|
|
// sendvalue += outdoorhumi;
|
|
// sendvalue += "&outdoorhic=";
|
|
// sendvalue += outdoorhic;
|
|
// sendvalue += "&outdoorindex=";
|
|
// sendvalue += outdoorindex;
|
|
// sendvalue += "&padtemp=";
|
|
// sendvalue += padtemp;
|
|
// sendvalue += "&padhumi=";
|
|
// sendvalue += padhumi;
|
|
// sendvalue += "&padhic=";
|
|
// sendvalue += padhic;
|
|
// sendvalue += "&boilertemp=";
|
|
// sendvalue += boilertemp;
|
|
// sendvalue += "&boilerhumi=";
|
|
// sendvalue += boilerhumi;
|
|
// sendvalue += " HTTP/1.1";
|
|
// Serial.println(sendvalue);
|
|
// Serial.print("Content-Length: ");
|
|
// Serial.println(sendvalue.length());
|
|
|
|
// Serial.print("20");
|
|
// if (year < 10) {
|
|
// Serial.print("0");
|
|
// }
|
|
// Serial.print(year, DEC);
|
|
// Serial.print(" / ");
|
|
// if (month < 10) {
|
|
// Serial.print("0");
|
|
// }
|
|
// Serial.print(month, DEC);
|
|
// Serial.print(" / ");
|
|
// if (date < 10) {
|
|
// Serial.print("0");
|
|
// }
|
|
// Serial.print(date, DEC);
|
|
// Serial.print("\t");
|
|
// if (hours < 10) {
|
|
// Serial.print("0");
|
|
// }
|
|
// Serial.print(hours, DEC);
|
|
// Serial.print(" : ");
|
|
// if (minutes < 10) {
|
|
// Serial.print("0");
|
|
// }
|
|
// Serial.print(minutes, DEC);
|
|
// Serial.print(" : ");
|
|
// if (seconds < 10) {
|
|
// Serial.print("0");
|
|
// }
|
|
// Serial.print(seconds, DEC);
|
|
// Serial.println();
|
|
// Serial.print("RoomDHT(41): ");
|
|
// Serial.print(room_dht1.readTemperature(), 1);
|
|
// Serial.print(" c");
|
|
// Serial.print("\tRoomDHT(42): ");
|
|
// Serial.print(room_dht2.readTemperature(), 1);
|
|
// Serial.print(" c");
|
|
// Serial.print("\tRoomDHT(43): ");
|
|
// Serial.print(room_dht3.readTemperature(), 1);
|
|
// Serial.print(" c");
|
|
// Serial.print("\tRoomDHT(44): ");
|
|
// Serial.print(room_dht4.readTemperature(), 1);
|
|
// Serial.print(" c");
|
|
// Serial.print("\tPadDHT(46): ");
|
|
// Serial.print(pad_dht1.readTemperature(), 1);
|
|
// Serial.print(" c");
|
|
// Serial.print("\tOutdoorDHT(47): ");
|
|
// Serial.print(outdoor_dht1.readTemperature(), 1);
|
|
// Serial.print(" c");
|
|
// Serial.print("\tSENDVALUE: ");
|
|
// Serial.print(int(outdoor_t));
|
|
// Serial.print(".");
|
|
// if (int((outdoor_t - int(outdoor_t)) * 10) < 0)
|
|
// Serial.print(int((outdoor_t - int(outdoor_t)) * -10));
|
|
// else
|
|
// Serial.print(int((outdoor_t - int(outdoor_t)) * 10));
|
|
// Serial.print(" c");
|
|
// Serial.print("\tOutdoorDHT(48): ");
|
|
// Serial.print(outdoor_dht2.readTemperature(), 1);
|
|
// Serial.print(" c");
|
|
// Serial.println();
|
|
// Serial.print("BoilerDHT(40): ");
|
|
// Serial.print(boiler_dht1.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tRoomDHT(41): ");
|
|
// Serial.print(room_dht1.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tRoomDHT(42): ");
|
|
// Serial.print(room_dht2.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tRoomDHT(43): ");
|
|
// Serial.print(room_dht3.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tRoomDHT(44): ");
|
|
// Serial.print(room_dht4.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tPadDHT(46): ");
|
|
// Serial.print(pad_dht1.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tOutdoorDHT(47): ");
|
|
// Serial.print(outdoor_dht1.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tOutdoorDHT(48): ");
|
|
// Serial.print(outdoor_dht2.readHumidity(), 1);
|
|
// Serial.print(" %");
|
|
// Serial.println();
|
|
// Serial.println();
|
|
// Serial.print("Window Location: ");
|
|
// Serial.print(window_l);
|
|
// Serial.println();
|
|
// Serial.print("room_lux: ");
|
|
// Serial.print(room_lux, 1);
|
|
// Serial.print(" %");
|
|
// Serial.print("\tDETECT: ");
|
|
// if (detect == 1) {
|
|
// Serial.print("used");
|
|
// } else if (detect == 0) {
|
|
// Serial.print("not used");
|
|
// }
|
|
// Serial.println();
|
|
}
|
|
}
|
|
|
|
void value_change_check() {
|
|
// if (room_t != room_t_previous_value || room_h != room_h_previous_value || room_hic != room_hic_previous_value || room_index != room_index_previous_value || room_lux != room_lux_previous_value ||
|
|
// pad_t != pad_t_previous_value || pad_h != pad_h_previous_value || pad_hic != pad_hic_previous_value || pad_index != pad_index_previous_value) {
|
|
// Serial.print("20");
|
|
// Serial.print(year);
|
|
// Serial.print(".");
|
|
// Serial.print(month);
|
|
// Serial.print(".");
|
|
// Serial.print(date);
|
|
// Serial.print(". ");
|
|
// Serial.print(hours);
|
|
// Serial.print("_");
|
|
// Serial.print(minutes);
|
|
// Serial.print("_");
|
|
// Serial.print(seconds);
|
|
// Serial.print("_\trTemp : ");
|
|
// Serial.print(room_t);
|
|
// Serial.print("\trHumi : ");
|
|
// Serial.print(room_h);
|
|
// Serial.print("\trHic : ");
|
|
// Serial.print(room_hic);
|
|
// Serial.print("\trIndex : ");
|
|
// Serial.print(room_index);
|
|
// Serial.print("\trLux : ");
|
|
// Serial.print(room_lux);
|
|
// Serial.print("\tpTemp : ");
|
|
// Serial.print(pad_t);
|
|
// Serial.print("\tpHumi : ");
|
|
// Serial.print(pad_h);
|
|
// Serial.print("\tpHic : ");
|
|
// Serial.print(pad_hic);
|
|
// Serial.print("\tpIndex : ");
|
|
// Serial.println(pad_index);
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (room_t != room_t_previous_value) {
|
|
if (room_t > room_t_previous_value) {
|
|
roomtemp = 1;
|
|
} else if (room_t < room_t_previous_value) {
|
|
roomtemp = 2;
|
|
}
|
|
room_t_previous_value = room_t;
|
|
} else if (room_t == room_t_previous_value) {
|
|
roomtemp = 0;
|
|
}
|
|
if (room_h != room_h_previous_value) {
|
|
if (room_h > room_h_previous_value) {
|
|
roomhumi = 1;
|
|
} else if (room_h < room_h_previous_value) {
|
|
roomhumi = 2;
|
|
}
|
|
room_h_previous_value = room_h;
|
|
} else if (room_h == room_h_previous_value) {
|
|
roomhumi = 0;
|
|
}
|
|
if (room_hic != room_hic_previous_value) {
|
|
if (room_hic > room_hic_previous_value) {
|
|
roomhic = 1;
|
|
} else if (room_hic < room_hic_previous_value) {
|
|
roomhic = 2;
|
|
}
|
|
room_hic_previous_value = room_hic;
|
|
} else if (room_hic == room_hic_previous_value) {
|
|
roomhic = 0;
|
|
}
|
|
if (room_index != room_index_previous_value) {
|
|
if (room_index > room_index_previous_value) {
|
|
roomindex = 1;
|
|
} else if (room_index < room_index_previous_value) {
|
|
roomindex = 2;
|
|
}
|
|
room_index_previous_value = room_index;
|
|
} else if (room_index == room_index_previous_value) {
|
|
roomindex = 0;
|
|
}
|
|
if (room_lux != room_lux_previous_value) {
|
|
if (room_lux > room_lux_previous_value) {
|
|
roomlux = 1;
|
|
} else if (room_lux < room_lux_previous_value) {
|
|
roomlux = 2;
|
|
}
|
|
room_lux_previous_value = room_lux;
|
|
} else if (room_lux == room_lux_previous_value) {
|
|
roomlux = 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (outdoor_t != outdoor_t_previous_value) {
|
|
if (outdoor_t > outdoor_t_previous_value) {
|
|
outdoortemp = 1;
|
|
} else if (outdoor_t < outdoor_t_previous_value) {
|
|
outdoortemp = 2;
|
|
}
|
|
outdoor_t_previous_value = outdoor_t;
|
|
} else if (outdoor_t == outdoor_t_previous_value) {
|
|
outdoortemp = 0;
|
|
}
|
|
if (outdoor_h != outdoor_h_previous_value) {
|
|
if (outdoor_h > outdoor_h_previous_value) {
|
|
outdoorhumi = 1;
|
|
} else if (outdoor_h < outdoor_h_previous_value) {
|
|
outdoorhumi = 2;
|
|
}
|
|
outdoor_h_previous_value = outdoor_h;
|
|
} else if (outdoor_h == outdoor_h_previous_value) {
|
|
outdoorhumi = 0;
|
|
}
|
|
if (outdoor_hic != outdoor_hic_previous_value) {
|
|
if (outdoor_hic > outdoor_hic_previous_value) {
|
|
outdoorhic = 1;
|
|
} else if (outdoor_hic < outdoor_hic_previous_value) {
|
|
outdoorhic = 2;
|
|
}
|
|
outdoor_hic_previous_value = outdoor_hic;
|
|
} else if (outdoor_hic == outdoor_hic_previous_value) {
|
|
outdoorhic = 0;
|
|
}
|
|
if (outdoor_index != outdoor_index_previous_value) {
|
|
if (outdoor_index > outdoor_index_previous_value) {
|
|
outdoorindex = 1;
|
|
} else if (outdoor_index < outdoor_index_previous_value) {
|
|
outdoorindex = 2;
|
|
}
|
|
outdoor_index_previous_value = outdoor_index;
|
|
} else if (outdoor_index == outdoor_index_previous_value) {
|
|
outdoorindex = 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pad_t != pad_t_previous_value) {
|
|
if (pad_t > pad_t_previous_value) {
|
|
padtemp = 1;
|
|
} else if (pad_t < pad_t_previous_value) {
|
|
padtemp = 2;
|
|
}
|
|
pad_t_previous_value = pad_t;
|
|
} else if (pad_t == pad_t_previous_value) {
|
|
padtemp = 0;
|
|
}
|
|
if (pad_h != pad_h_previous_value) {
|
|
if (pad_h > pad_h_previous_value) {
|
|
padhumi = 1;
|
|
} else if (pad_h < pad_h_previous_value) {
|
|
padhumi = 2;
|
|
}
|
|
pad_h_previous_value = pad_h;
|
|
} else if (pad_h == pad_h_previous_value) {
|
|
padhumi = 0;
|
|
}
|
|
if (pad_hic != pad_hic_previous_value) {
|
|
if (pad_hic > pad_hic_previous_value) {
|
|
padhic = 1;
|
|
} else if (pad_hic < pad_hic_previous_value) {
|
|
padhic = 2;
|
|
}
|
|
pad_hic_previous_value = pad_hic;
|
|
} else if (pad_hic == pad_hic_previous_value) {
|
|
padhic = 0;
|
|
}
|
|
if (pad_index != pad_index_previous_value) {
|
|
if (pad_index > pad_index_previous_value) {
|
|
padindex = 1;
|
|
} else if (pad_index < pad_index_previous_value) {
|
|
padindex = 2;
|
|
}
|
|
pad_index_previous_value = pad_index;
|
|
} else if (pad_index == pad_index_previous_value) {
|
|
padindex = 0;
|
|
}
|
|
|
|
if (digitalRead(detect1) == 1 && digitalRead(detect2) == 1 && digitalRead(detect3) == 1) {
|
|
detect = 1;
|
|
} else if (digitalRead(detect1) == 0 || digitalRead(detect2) == 0 || digitalRead(detect3) == 0) {
|
|
detect = 0;
|
|
}
|
|
}
|
|
|
|
void set3231Date() {
|
|
year = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
|
|
month = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
|
|
date = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
|
|
hours = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
|
|
minutes = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
|
|
seconds = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
|
|
day = (byte) (Serial.read() - 48);
|
|
|
|
Wire.beginTransmission(104);
|
|
Wire.write(0x00);
|
|
Wire.write((seconds / 10 * 16) + (seconds % 10));
|
|
Wire.write((minutes / 10 * 16) + (minutes % 10));
|
|
Wire.write((hours / 10 * 16) + (hours % 10));
|
|
Wire.write((day / 10 * 16) + (day % 10));
|
|
Wire.write((date / 10 * 16) + (date % 10));
|
|
Wire.write((month / 10 * 16) + (month % 10));
|
|
Wire.write((year / 10 * 16) + (year % 10));
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void get3231Date() {
|
|
Wire.beginTransmission(104);
|
|
Wire.write(0x00);
|
|
Wire.endTransmission();
|
|
Wire.requestFrom(104, 7);
|
|
|
|
if (Wire.available()) {
|
|
seconds = Wire.read();
|
|
minutes = Wire.read();
|
|
hours = Wire.read();
|
|
day = Wire.read();
|
|
date = Wire.read();
|
|
month = Wire.read();
|
|
year = Wire.read();
|
|
|
|
seconds = (((seconds & B11110000) >> 4) * 10 + (seconds & B00001111));
|
|
minutes = (((minutes & B11110000) >> 4) * 10 + (minutes & B00001111));
|
|
hours = (((hours & B00110000) >> 4) * 10 + (hours & B00001111));
|
|
day = (day & B00000111);
|
|
date = (((date & B00110000) >> 4) * 10 + (date & B00001111));
|
|
month = (((month & B00010000) >> 4) * 10 + (month & B00001111));
|
|
year = (((year & B11110000) >> 4) * 10 + (year & B00001111));
|
|
}
|
|
|
|
// switch (day) {
|
|
// case 1:
|
|
// strcpy(weekDay, "Sun");
|
|
// break;
|
|
// case 2:
|
|
// strcpy(weekDay, "Mon");
|
|
// break;
|
|
// case 3:
|
|
// strcpy(weekDay, "Tue");
|
|
// break;
|
|
// case 4:
|
|
// strcpy(weekDay, "Wed");
|
|
// break;
|
|
// case 5:
|
|
// strcpy(weekDay, "Thu");
|
|
// break;
|
|
// case 6:
|
|
// strcpy(weekDay, "Fri");
|
|
// break;
|
|
// case 7:
|
|
// strcpy(weekDay, "Sat");
|
|
// break;
|
|
// }
|
|
}
|
|
|
|
void window_control() {
|
|
window_v = ((analogRead(wla) * 5.0) / 1024.0) / (7500.0 / 37500.0);
|
|
|
|
if (window_v <= 9 && EEPROM.read(7) == 0 && EEPROM.read(10) >= 1) { // 부하 정지
|
|
if (millis() - overloaddetectdelay >= 50) {
|
|
EEPROM.update(7, 1);
|
|
f_overload = 0;
|
|
}
|
|
} else {
|
|
overloaddetectdelay = millis();
|
|
}
|
|
|
|
switch (EEPROM.read(6)) {
|
|
case 0: // AUTO
|
|
if (day == 1 || day == 7) {
|
|
} else if (day >= 2 && day <= 6) {
|
|
}
|
|
break;
|
|
case 1: // 닫기
|
|
window_close();
|
|
break;
|
|
case 2: // 1 위치로
|
|
window_open1();
|
|
break;
|
|
case 3: // 2 위치로
|
|
window_open2();
|
|
break;
|
|
case 4: // 3 위치로
|
|
window_open3();
|
|
break;
|
|
case 5: // 4 위치로
|
|
window_open();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void w_open() {
|
|
digitalWrite(windowclose, 1);
|
|
digitalWrite(windowopen, 0);
|
|
EEPROM.update(10, 1);
|
|
}
|
|
|
|
void w_close() {
|
|
digitalWrite(windowclose, 0);
|
|
digitalWrite(windowopen, 1);
|
|
EEPROM.update(10, 2);
|
|
}
|
|
|
|
void w_stop() {
|
|
digitalWrite(windowclose, 1);
|
|
digitalWrite(windowopen, 1);
|
|
EEPROM.update(8, 0);
|
|
EEPROM.update(10, 0);
|
|
}
|
|
|
|
void window_close() {
|
|
if (EEPROM.read(8) == 1) {
|
|
if (EEPROM.read(7) == 1) {
|
|
w_open();
|
|
if (digitalRead(window0) == 0) {
|
|
w_stop();
|
|
EEPROM.update(7, 0);
|
|
} else if (digitalRead(window1) == 0 || digitalRead(window2) == 0 || digitalRead(window3) == 0 || digitalRead(window4) == 0) {
|
|
w_close();
|
|
EEPROM.update(7, 0);
|
|
}
|
|
} else if (digitalRead(window0) == 1) {
|
|
w_close();
|
|
} else if (digitalRead(window0) == 0) {
|
|
w_stop();
|
|
}
|
|
}
|
|
}
|
|
|
|
void window_open1() {
|
|
if (EEPROM.read(8) == 1) {
|
|
if (EEPROM.read(7) == 1) {
|
|
w_close();
|
|
if (digitalRead(window1) == 0) {
|
|
w_stop();
|
|
EEPROM.update(7, 0);
|
|
} else if (digitalRead(window0) == 0) {
|
|
w_open();
|
|
EEPROM.update(7, 0);
|
|
}
|
|
} else if (digitalRead(window1) == 1) {
|
|
w_open();
|
|
} else if (digitalRead(window1) == 0) {
|
|
w_stop();
|
|
}
|
|
}
|
|
}
|
|
|
|
void window_open2() {
|
|
if (EEPROM.read(8) == 1) {
|
|
if (EEPROM.read(7) == 1) {
|
|
w_close();
|
|
if (digitalRead(window2) == 0) {
|
|
w_stop();
|
|
EEPROM.update(7, 0);
|
|
} else if (digitalRead(window1) == 0 || digitalRead(window0) == 0) {
|
|
w_open();
|
|
EEPROM.update(7, 0);
|
|
}
|
|
} else if (digitalRead(window2) == 1) {
|
|
w_open();
|
|
} else if (digitalRead(window2) == 0) {
|
|
w_stop();
|
|
}
|
|
}
|
|
}
|
|
|
|
void window_open3() {
|
|
if (EEPROM.read(8) == 1) {
|
|
if (EEPROM.read(7) == 1) {
|
|
w_close();
|
|
if (digitalRead(window3) == 0) {
|
|
w_stop();
|
|
EEPROM.update(7, 0);
|
|
} else if (digitalRead(window2) == 0 || digitalRead(window1) == 0 || digitalRead(window0) == 0) {
|
|
w_open();
|
|
EEPROM.update(7, 0);
|
|
}
|
|
} else if (digitalRead(window3) == 1) {
|
|
w_open();
|
|
} else if (digitalRead(window3) == 0) {
|
|
w_stop();
|
|
}
|
|
}
|
|
}
|
|
|
|
void window_open() {
|
|
if (EEPROM.read(8) == 1) {
|
|
if (EEPROM.read(7) == 1) {
|
|
w_close();
|
|
if (digitalRead(window4) == 0) {
|
|
w_stop();
|
|
EEPROM.update(7, 0);
|
|
} else if (digitalRead(window3) == 0 || digitalRead(window2) == 0 || digitalRead(window1) == 0 || digitalRead(window0) == 0) {
|
|
w_open();
|
|
EEPROM.update(7, 0);
|
|
}
|
|
} else if (digitalRead(window4) == 1) {
|
|
w_open();
|
|
} else if (digitalRead(window4) == 0) {
|
|
w_stop();
|
|
}
|
|
}
|
|
}
|