เป็น code ที่ผมทำไว้ ใช้เป็น master ในการติดต่อ WiFi เมื่อนำไปใช้แล้ว จะแทรก code อื่นๆ ก็เพิ่มเอาได้เลยครับ เพื่อความสะดวก
อย่าลืมนะครับ : ใช้ esp8266 เวอร์ชัน 2.4.2 หรือใหม่กว่า
แบบที่ 1 ติดต่อ WiFi โดยเฉพาะ
//ใช้ esp8266 เวอร์ชัน 2.4.2 หรือใหม่กว่า
#include <IotWebConf.h>
// ชื่อเริ่มต้นของ AP SSID + AP PASSWORD ในครั้งแรก หลังจาก UPLOAD Code เข้าไปยัง ESP ตัวใหม่ ในครั้งแรก (สามารถเปลี่ยนได้เมื่อเข้าไปยังหน้า Config )
const char thingName[] = "PUY IOT FIRST";
const char wifiInitialApPassword[] = "111111111";
#define CONFIG_VERSION "dem2"
// -- Callback method declarations.
void configSaved();
#include <DNSServer.h>
DNSServer dnsServer;
#include <ESP8266WebServer.h>
ESP8266WebServer server(80);//Server on port 80
IotWebConf iotWebConf(thingName, &dnsServer, &server, wifiInitialApPassword, CONFIG_VERSION);
String SSID_NAME;
String PASSWORD_NAME;
String SSID_AP;
String PASSWORD_AP;
String IP;
String Sub_M;
String Gate_way;
#include <EEPROM.h>
#define STATUS_PIN D0 // ให้ไฟ D0 แสดงสถานะการทำงาน
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println(" ระบบเริ่มต้นทำงาน... ");
EEPROM.begin(1024);//ที่เป็น 1024 เนื่องจาก 0-511 ใช้กับ USER 512-1024 ใช้กับ Libraries IoTWebconf
iotWebConf.setStatusPin(STATUS_PIN);
iotWebConf.setConfigSavedCallback(&configSaved);
iotWebConf.getApTimeoutParameter()->visible = true;
// เริ่มต้นการกำหนดค่า
iotWebConf.init();
// ตั้งค่าตัวจัดการ URL ที่จำเป็นบนเว็บเซิร์ฟเวอร์
server.on("/", handleRoot);
server.on("/config", [] { iotWebConf.handleConfig(); });
server.onNotFound([]() {
iotWebConf.handleNotFound();
iotWebConf.handleCaptivePortal();
});
Serial.println("พร้อม");
SSID_NAME = iotWebConf.getWifiSsidParameter()->valueBuffer;
PASSWORD_NAME = iotWebConf.getWifiPasswordParameter()->valueBuffer;
SSID_AP = iotWebConf.getThingNameParameter()->valueBuffer;
PASSWORD_AP = iotWebConf.getApPasswordParameter()->valueBuffer;
}//void setup
void loop()
{
// -- ควรเรียก doLoop ให้บ่อยที่สุด
iotWebConf.doLoop();
delay(500);
}
/**
Handle web requests to "/" path.
*/
void handleRoot()
{
Serial.println(" ตั้งค่าการเชื่อมต่อ ");
Serial.println("");
// -- ให้ IotWebConf ทดสอบและจัดการคำขอแคปทีฟพอร์ทัล
if (iotWebConf.handleCaptivePortal())
{
// -- ให้ IotWebConf ทดสอบและจัดการคำขอแคปทีฟพอร์ทัล
return;
}
String s = "<!DOCTYPE html><html lang=\"en-TH\"><head><meta charset=\"UTF-8\"name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>PUY IOT</title>";
s += "<title>การจัดการการตั้งค่าด้วย IotWebConf</title></head><body>ตั้งชื่อโปรเจค";
s += "<ul>";
s += "</ul>";
s += "Go to <a href='config'>configure page</a> to change values.";
s += "</body></html>\n";
server.send(200, "text/html", s);
}
void configSaved()
{
Serial.println("อัปเดตการกำหนดค่าแล้ว");
Serial.println("");
Serial.println(" บันทึก! ค่าทั้งหมดแล้ว");
Serial.println("");
Serial.println("ยกเลิกการเชื่อมต่อ AP เดิม และเชื่อมต่อ ระบบ WiFi ปกติ");
Serial.println("");
//ให้แสดง ข้อมูล AP: SSID และ PASSORD ที่เปลี่ยนแล้วออกมา
SSID_AP = iotWebConf.getThingNameParameter()->valueBuffer;
PASSWORD_AP = iotWebConf.getApPasswordParameter()->valueBuffer;
}
แบบที่ 2 ESP8266_IoTwebconfig_4Data_3TokenLine เพิ่มข้อมูลได้ 4 ข้อมูล 3 Token line ไม่รวม Blynk
//ใช้ esp8266 เวอร์ชัน 2.4.2 หรือใหม่กว่า
#include <IotWebConf.h>
// ชื่อเริ่มต้นของ AP SSID + AP PASSWORD ในครั้งแรก หลังจาก UPLOAD Code เข้าไปยัง ESP ตัวใหม่ ในครั้งแรก (สามารถเปลี่ยนได้เมื่อเข้าไปยังหน้า Config )
const char thingName[] = "PUY IOT FIRST";
const char wifiInitialApPassword[] = "111111111";
#define CONFIG_VERSION "dem2"
// -- Callback method declarations.
void configSaved();
#include <DNSServer.h>
DNSServer dnsServer;
#include <ESP8266WebServer.h>
ESP8266WebServer server(80);//Server on port 80
String SSID_NAME;
String PASSWORD_NAME;
String SSID_AP;
String PASSWORD_AP;
String IP;
String Sub_M;
String Gate_way;
#include <EEPROM.h>
#define STATUS_PIN D0 // ให้ไฟ D0 แสดงสถานะการทำงาน
#include <TridentTD_LineNotify.h>
#define Data1 45
char Data_1[Data1];
#define Data2 45
char Data_2[Data2];
#define Data3 45
char Data_3[Data3];
#define Data4 45
char Data_4[Data4];
#define Line_Token1 45
char Line_Token_1[Line_Token1];
#define Line_Token2 45
char Line_Token_2[Line_Token2];
#define Line_Token3 45
char Line_Token_3[Line_Token3];
IotWebConf iotWebConf(thingName, &dnsServer, &server, wifiInitialApPassword, CONFIG_VERSION);
IotWebConfParameter Data__1 = IotWebConfParameter("Data1", "Data1", Data_1, Data1);
IotWebConfSeparator separator1 = IotWebConfSeparator();
IotWebConfParameter Data__2 = IotWebConfParameter("Data2", "Data2", Data_2, Data2);
IotWebConfSeparator separator2 = IotWebConfSeparator();
IotWebConfParameter Data__3 = IotWebConfParameter("Data3", "Data3", Data_3, Data3);
IotWebConfSeparator separator3 = IotWebConfSeparator();
IotWebConfParameter Data__4 = IotWebConfParameter("Data4", "Data4", Data_4, Data4);
IotWebConfSeparator separator4 = IotWebConfSeparator();
IotWebConfParameter TokenLine1 = IotWebConfParameter("Line_Token1", "Line_Token1", Line_Token_1, Line_Token1);
IotWebConfSeparator separator5 = IotWebConfSeparator();
IotWebConfParameter TokenLine2 = IotWebConfParameter("Line_Token2", "Line_Token2", Line_Token_2, Line_Token2);
IotWebConfSeparator separator6 = IotWebConfSeparator();
IotWebConfParameter TokenLine3 = IotWebConfParameter("Line_Token3", "Line_Token3", Line_Token_3, Line_Token3);
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println(" ระบบเริ่มต้นทำงาน... ");
EEPROM.begin(1024);//ที่เป็น 1024 เนื่องจาก 0-511 ใช้กับ USER 512-1024 ใช้กับ Libraries IoTWebconf
iotWebConf.setStatusPin(STATUS_PIN);
iotWebConf.addParameter(&Data__1);
iotWebConf.addParameter(&separator1);
iotWebConf.addParameter(&Data__2);
iotWebConf.addParameter(&separator2);
iotWebConf.addParameter(&Data__3);
iotWebConf.addParameter(&separator3);
iotWebConf.addParameter(&Data__4);
iotWebConf.addParameter(&separator4);
iotWebConf.addParameter(&TokenLine1);
iotWebConf.addParameter(&separator5);
iotWebConf.addParameter(&TokenLine2);
iotWebConf.addParameter(&separator6);
iotWebConf.addParameter(&TokenLine3);
iotWebConf.setConfigSavedCallback(&configSaved);
iotWebConf.getApTimeoutParameter()->visible = true;
// เริ่มต้นการกำหนดค่า
iotWebConf.init();
// ตั้งค่าตัวจัดการ URL ที่จำเป็นบนเว็บเซิร์ฟเวอร์
server.on("/", handleRoot);
server.on("/config", [] { iotWebConf.handleConfig(); });
server.onNotFound([]() {
iotWebConf.handleNotFound();
iotWebConf.handleCaptivePortal();
});
Serial.println("พร้อม");
SSID_NAME = iotWebConf.getWifiSsidParameter()->valueBuffer;
PASSWORD_NAME = iotWebConf.getWifiPasswordParameter()->valueBuffer;
SSID_AP = iotWebConf.getThingNameParameter()->valueBuffer;
PASSWORD_AP = iotWebConf.getApPasswordParameter()->valueBuffer;
}//void setup
void loop()
{
//วนไม่รู้จบละทีนี้
if (IP != "0.0.0.0") {
LINE.setToken(Line_Token_1);
LINE.notify("1");
LINE.setToken(Line_Token_2);
LINE.notify("2");
LINE.setToken(Line_Token_3);
LINE.notify("3");
}
// -- ควรเรียก doLoop ให้บ่อยที่สุด
iotWebConf.doLoop();
delay(500);
}
/**
Handle web requests to "/" path.
*/
void handleRoot()
{
Serial.println(" ตั้งค่าการเชื่อมต่อ ");
Serial.println("");
// -- ให้ IotWebConf ทดสอบและจัดการคำขอแคปทีฟพอร์ทัล
if (iotWebConf.handleCaptivePortal())
{
// -- ให้ IotWebConf ทดสอบและจัดการคำขอแคปทีฟพอร์ทัล
return;
}
String s = "<!DOCTYPE html><html lang=\"en-TH\"><head><meta charset=\"UTF-8\"name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>PUY IOT</title>";
s += "<title>การจัดการการตั้งค่าด้วย IotWebConf</title></head><body>ตั้งชื่อโปรเจค";
s += "<ul>";
s += "<li>ข้อมูล 1: ";
s += Data_1;
s += "<li>ข้อมูล 2: ";
s += Data_2;
s += "<li>ข้อมูล 3: ";
s += Data_3;
s += "<li>ข้อมูล 4: ";
s += Data_4;
s += "<li>Token Line 1: ";
s += Line_Token_1;
s += "<li>Token Line 2: ";
s += Line_Token_2;
s += "<li>Token Line 3: ";
s += Line_Token_3;
s += "</ul>";
s += "Go to <a href='config'>configure page</a> to change values.";
s += "</body></html>\n";
server.send(200, "text/html", s);
}
void configSaved()
{
Serial.println("อัปเดตการกำหนดค่าแล้ว");
Serial.println("");
Serial.println(" บันทึก! ค่าทั้งหมดแล้ว");
Serial.println("");
Serial.println("ยกเลิกการเชื่อมต่อ AP เดิม และเชื่อมต่อ ระบบ WiFi ปกติ");
Serial.println("");
//ให้แสดง ข้อมูล AP: SSID และ PASSORD ที่เปลี่ยนแล้วออกมา
SSID_AP = iotWebConf.getThingNameParameter()->valueBuffer;
PASSWORD_AP = iotWebConf.getApPasswordParameter()->valueBuffer;
}
กรณีตัวอย่างการเพิ่ม Blynk เข้าไป
//ใช้ esp8266 เวอร์ชัน 2.4.2 หรือใหม่กว่า
#include <IotWebConf.h>
// -- Initial name of the Thing. Used e.g. as SSID of the own Access Point.
const char thingName[] = "PUY IOT FIRST";
const char wifiInitialApPassword[] = "111111111";
#include <TridentTD_LineNotify.h>
String LineText;
String string1 = "ศาลา2 ระบบควบคุมเริ่มทำงาน MCU RESET ครั้งที่ ";
int blynk_Connect = 0;
int Line1_status = 0;
int Line2_status = 0;
#define Line_Token 45
#define Blynk_Token 34
#define CONFIG_VERSION "dem2"
// -- Callback method declarations.
void configSaved();
boolean formValidator();
#include <DNSServer.h>
DNSServer dnsServer;
#include <ESP8266WebServer.h>
ESP8266WebServer server(80);//Server on port 80
//WebServer server(80);
char Line_Token_1[Line_Token];
//8HBPx7WHUTjGoPWACom1i98WEHGeCDFx9L7kry
//QerWyEZdBShylI3iTTxZo1vLy2NQa7AXFgYLM
char Blynk_Token_1[Blynk_Token];
//Y2cb7t9y4zv8Ky_DHrot2YGBGZb9g
IotWebConf iotWebConf(thingName, &dnsServer, &server, wifiInitialApPassword, CONFIG_VERSION);
IotWebConfParameter Token_Line = IotWebConfParameter("Line_token", "Line_token", Line_Token_1, Line_Token);
IotWebConfSeparator separator1 = IotWebConfSeparator();
IotWebConfParameter Token_Blynk = IotWebConfParameter("Blynk_Token", "Blynk_Token", Blynk_Token_1, Blynk_Token);
String SSID_NAME;
String PASSWORD_NAME;
String IP;
String Sub_M;
String Gate_way;
String SSID_AP;
String PASSWORD_AP;
#include <BlynkSimpleEsp8266.h>
//#include <BlynkSimpleEsp32.h>
#define BLYNK_DEBUG
#define BLYNK_PRINT Serial
int blynkIsDownCount = 0;
BlynkTimer timer;
//-------------สำหรับ Server local ที่แจกให้ เพิ่ม **** แค่ 2 บรรทัดนี้--------------
//(ถ้าเป็น Blynk Server ปกติไม่ต้องใส่) ----------//
char server1[] = "oasiskit.com";
//int port = 8080;
#include <EEPROM.h>
int MCU_Reset = 0;
int count_MCU_Rset;
int Amount_Mcu_Reset;
int reset_MCU;
#define STATUS_PIN D0
const char* host = "www.google.co.th";
int Internet;
#include "DHT.h"
#define DHTPIN D5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float h ;
float t ;
//int Relay_fan = D6;
int Temp = 0;
int Humid = 0;
//Temp
float tmax;
String t_max1;
float t_max2;
float tmin;
String t_min1;
float t_min2;
//Humid
float hmax;
String h_max1;
float h_max2;
float hmin;
String h_min1;
float h_min2;
WidgetLED led_1(V10);
#define RelayFan D6
BLYNK_WRITE(V12)//reset Counter MCU Reset
{
int pinValue = param.asInt();
if (pinValue == 1 ) {
Amount_Mcu_Reset = EEPROM.put(101, 0);
EEPROM.commit();
count_MCU_Rset = EEPROM.put(150, 0);
EEPROM.commit();
Blynk.virtualWrite(V11, count_MCU_Rset);
}
if (pinValue == 0) {
}
}
BLYNK_WRITE(V1)
{
t_max1 = param.asString();//รับค่าข้อความจาก Blynk เข้ามา เก็บในรูปแบบ String
t_max2 = t_max1.toFloat();//แปลงค่าจาก String เป็น Float
EEPROM.put(300, t_max2); //เขียนค่า
EEPROM.commit(); //จบการเขียน
tmax = EEPROM.get(300, t_max2);//อ่าน ค่า
Serial.println(tmax);
delay(100);
}
BLYNK_WRITE(V2)
{
t_min1 = param.asString();//รับค่าข้อความจาก Blynk เข้ามา เก็บในรูปแบบ String
t_min2 = t_min1.toFloat();//แปลงค่าจาก String เป็น Float
EEPROM.put(310, t_min2); //เขียนค่า
EEPROM.commit(); //จบการเขียน
tmin = EEPROM.get(310, t_min2);//อ่าน ค่า
Serial.println(tmin);
delay(100);
}
BLYNK_WRITE(V3)
{
h_max1 = param.asString();//รับค่าข้อความจาก Blynk เข้ามา เก็บในรูปแบบ String
h_max2 = h_max1.toFloat();//แปลงค่าจาก String เป็น Float
EEPROM.put(320, h_max2); //เขียนค่า
EEPROM.commit(); //จบการเขียน
hmax = EEPROM.get(320, h_max2);//อ่าน ค่า
Serial.println(hmax);
delay(100);
}
BLYNK_WRITE(V4)
{
h_min1 = param.asString();//รับค่าข้อความจาก Blynk เข้ามา เก็บในรูปแบบ String
h_min2 = h_min1.toFloat();//แปลงค่าจาก String เป็น Float
EEPROM.put(330, h_min2); //เขียนค่า
EEPROM.commit(); //จบการเขียน
hmin = EEPROM.get(330, h_min2);//อ่าน ค่า
Serial.println(hmin);
delay(100);
}
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println(" Starting up... ");
pinMode(RelayFan , OUTPUT);
digitalWrite(RelayFan , 0);//D6 Relay เป็น High Active 1 on 0 oFF
EEPROM.begin(1024);
iotWebConf.setStatusPin(STATUS_PIN);
iotWebConf.addParameter(&Token_Line);
iotWebConf.addParameter(&Token_Blynk);
iotWebConf.setConfigSavedCallback(&configSaved);
iotWebConf.setFormValidator(&formValidator);
iotWebConf.getApTimeoutParameter()->visible = true;
// -- Initializing the configuration.
iotWebConf.init();
// -- Set up required URL handlers on the web server.
server.on("/", handleRoot);
server.on("/config", [] { iotWebConf.handleConfig(); });
server.onNotFound([]() {
iotWebConf.handleNotFound();
iotWebConf.handleCaptivePortal();
});
Serial.println("Ready");
Serial.println("Finish");
// Blynk.config(blynk_token);////เริ่มการเชื่อมต่อ Blynk Server แบบปกติ
Blynk.config(Blynk_Token_1, server1, 8080);
////เริ่มการเชื่อมต่อ Blynk Server*********สำหรับ Server local ที่แจกให้ เพิ่ม, server, port แค่นี้จบ
timer.setInterval(30000L, reconnecting); //Function reconnect
timer.setInterval(500L, internet);
dht.begin();
timer.setInterval(2000L, checkT_H);
tmax = EEPROM.get(300, t_max2);
Serial.print("tmax in Void setup : ");
Serial.println(tmax);
tmin = EEPROM.get(310, t_min2);
Serial.print("tmin in Void setup : ");
Serial.println(tmin);
hmax = EEPROM.get(320, h_max2);
Serial.print("hmax in Void setup : ");
Serial.println(hmax);
hmin = EEPROM.get(330, h_min2);
Serial.print("hmin in Void setup : ");
Serial.println(hmin);
// timer.setInterval(1000L, reconnecting);
SSID_NAME = iotWebConf.getWifiSsidParameter()->valueBuffer;
PASSWORD_NAME = iotWebConf.getWifiPasswordParameter()->valueBuffer;
SSID_AP = iotWebConf.getThingNameParameter()->valueBuffer;
PASSWORD_AP = iotWebConf.getApPasswordParameter()->valueBuffer;
LINE.setToken(Line_Token_1);
count_MCU_Rset = EEPROM.get(150, Amount_Mcu_Reset);
Serial.print("count_MCU_Rset = ");
Serial.println(count_MCU_Rset);
reset_MCU = count_MCU_Rset + 1;
// Serial.print("reset_MCU = ");
// Serial.println(reset_MCU);
Amount_Mcu_Reset = EEPROM.put(101, reset_MCU);
EEPROM.commit();
// Serial.print("Amount_Mcu_Reset = ");
// Serial.println(Amount_Mcu_Reset);
count_MCU_Rset = EEPROM.put(150, Amount_Mcu_Reset);
EEPROM.commit();
Serial.print("count_MCU_Rset = ");
Serial.println(count_MCU_Rset);
}//void setup
void loop()
{
if (Internet == 1 && MCU_Reset == 0) {
LineText = string1 + count_MCU_Rset;
LINE.notify(LineText);
delay (200);
MCU_Reset = 1;
}
if (Blynk.connected())
{
Blynk.run();
blynk_Connect = 1;
Blynk.virtualWrite(V11, count_MCU_Rset);
} else {
blynk_Connect = 0;
}
//แจ้งเตือน กรณี Blynk เชื่อมต่อ OK 1 ครั้ง
if (blynk_Connect == 1 && Line1_status == 0) {
LINE.notify("MCU FAN ศาลา2 เชื่อมต่อ Blynk Server ได้แล้ว");
//LINE.notify("ศาลา2 เชื่อมต่อ Blynk Server ได้แล้ว");
delay (200);
Line1_status = 1;
}
else if (blynk_Connect == 1 && Line1_status == 1) {
delay(10);
Line2_status = 0;
}
//แจ้งเตือน กรณี Blynk หลุด 1 ครั้ง กรณี Internet มา
if (Internet == 1 && blynk_Connect == 0 && Line2_status == 0) {
LINE.notify("MCU FAN!!ศาลา2 เชื่อมต่อ Blynk Server ไม่ได้");
//LINE.notify("ศาลา2!!! เชื่อมต่อ Blynk Server ไม่ได้");
delay (200);
Line2_status = 1;
}
else if (blynk_Connect == 0 && Line2_status == 1) {
delay(10);
Line1_status = 0;
}
timer.run();
// -- doLoop should be called as frequently as possible.
iotWebConf.doLoop();
delay(500);
}
void internet()
{
WiFiClient client;
if (client.connect(host, 80))
{
// Serial.println("connected");
Internet = 1;
client.stop();
delay(100);
}
else {
//Serial.println("connection failed!");
Internet = 0;
client.stop();
}
}
void reconnecting()
{
if (!Blynk.connected())
{
blynkIsDownCount++;
BLYNK_LOG("blynk server is down! %d times", blynkIsDownCount);
Blynk.connect(5000);
}
}
BLYNK_CONNECTED()
{
}
/**
Handle web requests to "/" path.
*/
void handleRoot()
{
Serial.println(" NOW! CONFIG AP ");
// -- Let IotWebConf test and handle captive portal requests.
if (iotWebConf.handleCaptivePortal())
{
// -- Captive portal request were already served.
return;
}
String s = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/>";
s += "<title>IotWebConf 03 Custom Parameters</title></head><body>ESP8266 FAN CTRL";
s += "<ul>";
s += "<li>String param value1: ";
s += Line_Token_1;
s += "<li>String param value2: ";
s += Blynk_Token_1;
s += "</ul>";
s += "Go to <a href='config'>configure page</a> to change values.";
s += "</body></html>\n";
server.send(200, "text/html", s);
}
void configSaved()
{
Serial.println("Configuration was updated.");
Serial.println(" SAVE! CONFIG AP");
Serial.println(" DISCON. CONFIG!");
SSID_AP = iotWebConf.getThingNameParameter()->valueBuffer;
PASSWORD_AP = iotWebConf.getApPasswordParameter()->valueBuffer;
}
boolean formValidator()
{
Serial.println("Validating form.");
boolean valid = true;
int l = server.arg(Token_Line.getId()).length();
if (l < 3)
{
Token_Line.errorMessage = "Please provide at least 3 characters for this test!";
valid = false;
}
return valid;
}
void checkT_H()
{
if (Internet == 1) {
loop:
t = dht.readTemperature();
h = dht.readHumidity();
//-----------------ถ้าอ่านค่าไม่ได้ ให้ t = 0 ,h = 0 เพื่อสะดวกในการวิเคราะห์ค่า---------
if (isnan(h) || isnan(t)) {
//Serial.println("Failed to read from DHT sensor!");
//delay(500);
//display.clear();
//display.drawString(5, 0, "Failed DHT22");
//t = 0;
//h = 0;
Serial.println("***");
delay(1000);
goto loop ;
}
//---------------------------------------------------------------------
else {
//Serial.println("อ่านค่าได้แล้ว");
// Serial.print("temp : ");
// Serial.println(t);
// Serial.print("Humid :");
// Serial.println(h);
Blynk.virtualWrite(V8, t);
Blynk.virtualWrite(V9, h);
if ( t > tmin && t <= tmax ) {
Temp = 0;
} else {
Temp = 1;
}
if ( h > hmin && h <= hmax ) {
Humid = 0;
} else {
Humid = 1;
}
// Serial.print("Temp = ");
// Serial.println(Temp);
//
// Serial.print("Humid = ");
// Serial.println(Humid);
//ใช้หลักการทำงานแบบ 4 สถานะ
if ( Temp == 1 && Humid == 1 ) {//temp ปกติ humit ปกติ
//digitalWrite(Relay_fan, 0);//FAN ON
led_1.on();
digitalWrite(RelayFan , 1);
}
if ( Temp == 0 && Humid == 1 ) {//temp ผิดปกติ humit ปกติ
//digitalWrite(Relay_fan, 0);//FAN ON
led_1.on();
digitalWrite(RelayFan , 1);
}
if ( Temp == 1 && Humid == 0 ) {//temp ปกติ humit ผิดกติ
//digitalWrite(Relay_fan, 0);//FAN ON
led_1.on();
digitalWrite(RelayFan , 1);
}
if ( Temp == 0 && Humid == 0 ) {//temp ผิดปกติ humit ผิดกติ
//digitalWrite(Relay_fan, 1);//FAN OFF
led_1.off();
digitalWrite(RelayFan , 0);
}
return;//ถ้าไม่ใส่มันจะไม่ return ค่า =0,h=0
}
}
iotWebConf.doLoop();
}
Library https://drive.google.com/file/d/1wYoMqNQCYDoJ1nEmKX_h2ct7OvEfy9kz/view?usp=sharing
ที่เคยลง Post ไป