ตอนนี้คุมอุณหภูมิและความชื้นในดินได้แล้วค่ะ เหลือแค่ควบคุมไฟ แต่ปัญหาคือ ตั้งให้ปิดไฟ 2 ช่วง ตอนเช้า 08.00 - 09.00 และช่วงเย็น 18.00-19.00 แต่ตอนนี้ไฟไม่ยอมปิดตามที่ตั้งไว้ค่ะ ช่วยแนะนำทีค่ะ
อันนี้คือตัวโค้ดค่ะ
//#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
//#include <BlynkSimpleEsp8266.h>
char auth[] = "Yz0iabYc6OYGHCoZW0pNiB3Ar_Mdyen-"; //Token key
char ssid[] = "BTHOME2.4";
char pass[] = "22Bil14Tae";
#include <time.h>
int timezone = 7 * 3600;
int dst = 0; //กำหนดค่า Date Swing Time
char ntp_server1[20] = "pool.ntp.org";
char ntp_server2[20] = "time.nist.gov";
char ntp_server3[20] = "time.uni.net.th";
int RelayOnPump = D7; //ปล่อยน้ำ
int RelayOnPump1 = D8; //พัดลม
int RelayOnPump2 = D5; //หลอดไฟ
float sensorValue = 0;
const int Sensor = 0;
int i =0;
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include "DHT.h"
#define DHTPIN D6
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#include "TSL2561.h"
TSL2561 tsl(TSL2561_ADDR_FLOAT);
#include <TridentTD_LineNotify.h> //ประกาศไลบารี่ เพื่อสร้าง ไลน์ bot
#define LINE_TOKEN "FtjcMZ8Cb0IKwr9lHkdS3ObBD6kSkrFQFtg6UrAPt15" // กำหนด Key ที่ได้จาก ไลน์
void setup()
{
Serial.begin(115200);
//Blynk.begin(auth, ssid, pass);
LINE.setToken(LINE_TOKEN);
pinMode(RelayOnPump, OUTPUT);
pinMode(RelayOnPump1, OUTPUT);
pinMode(RelayOnPump2, OUTPUT);
digitalWrite(RelayOnPump2, HIGH);
lcd.begin();
lcd.backlight();
dht.begin();
pinMode (Sensor, INPUT);
if (tsl.begin()) {
Serial.println("Found sensor");
} else {
Serial.println("No sensor?");
while (1);
}
tsl.setGain(TSL2561_GAIN_16X);
tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);
}
void loop()
{
time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);
Serial.print(p_tm->tm_hour); Serial.print(":");
Serial.print(p_tm->tm_min); Serial.print(":");
Serial.println(p_tm->tm_sec);
Serial.println(ctime(&now));
if( p_tm->tm_hour == 6 &&p_tm->tm_min == 00 )
{
digitalWrite(RelayOnPump2, HIGH);
LINE.notify("พักหลอดไฟ 6.00 น. ");
}
else if( p_tm->tm_hour == 18 &&p_tm->tm_min == 00)
{
digitalWrite(RelayOnPump2, HIGH);
LINE.notify("พักหลอดไฟ 18.00 น. ");
}
else{
digitalWrite(RelayOnPump2, LOW);
LINE.notify("เปิดไฟตามปกติ");
}
uint16_t x = tsl.getLuminosity(TSL2561_VISIBLE);
Serial.println(x, DEC);
uint32_t lum = tsl.getFullLuminosity();
uint16_t ir, full;
ir = lum >> 16;
full = lum & 0xFFFF;
Serial.print("IR: "); Serial.print(ir); Serial.print("\t\t");
Serial.print("Full: "); Serial.print(full); Serial.print("\t");
Serial.print("Visible: "); Serial.print(full - ir); Serial.print("\t");
Serial.print("Lux: "); Serial.println(tsl.calculateLux(full, ir));
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
sensorValue = analogRead(Sensor);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.println(t);
lcd.begin();
lcd.setCursor(0, 0);
lcd.print("sensorValue :");
lcd.print(sensorValue);
lcd.setCursor(0, 1);
lcd.print("::H:");
lcd.print(h);
lcd.print("::T:");
lcd.print(t);
lcd.setCursor(0, 2);
lcd.print("full :");
lcd.print(full);
if( t >= 30){
LINE.notify("อุณหภูมิสูงกว่าค่าที่กำหนด ค่าที่วัดได้"+String(t) );
digitalWrite(RelayOnPump1, LOW);
LINE.notify("เปิดพัดลม");
}else{
digitalWrite(RelayOnPump1, HIGH);
}
if (sensorValue >= 440){
LINE.notify("ค่าความชื่นในดินสูงกว่ากำหนด ค่าที่วัดได้"+String(sensorValue) );
LINE.notify("กำลังปล่อยน้ำ");
Serial.print("ค่าความชื้น = ");
Serial.print(sensorValue);
Serial.println("%");
digitalWrite(RelayOnPump, LOW);
delay(5000);
digitalWrite(RelayOnPump, HIGH);
LINE.notify("ปิดน้ำ");
} else {
Serial.print("ค่าความชื้น = ");
Serial.print(sensorValue);
Serial.println("%");
digitalWrite(RelayOnPump, HIGH);
}
delay(1000);
//Blynk.run();
}