//แก้ไขล่าสุด 02/02/2023
#include <TM1637.h>
#include<WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
//เว็บตัวอย่าง https://arduinojson.org/
const char* ssid = "ben02";
const char* password = "bbbbbbbb";
String serverName = "https://iot.rueangwit.com/bws8espiot/public/";
String response = "";
String response2 = "";
#define CLK 14
#define DIO 12
TM1637 Display1(CLK, DIO);
#define CHAR_BLANK 127
//int numCounter = 0;
//int numCounter2 = 0;
//int numCounter3 = 0;
const int relay = 13;//
const int relay2 = 18;
//int analogPin = 2;
int val=0;
int er=0;
//const int p4 = 4;
int p3v=27;
int p3vd23=23;
int ptime3v=26;
int ledpin = 16;
int ledchack=32;//ไฟแสดงการเชื่อมต่อ wifi ต่อสำเร็จ ไฟติด
int ledchackoff=33;//ต่อ wifi ไม่ได้ ไฟกระพริบ
int ledserver=25;//ไฟแสดงการเชื่อมต่อกับ server ไฟติด เชื่อมต่อไม่ได้
//int digitalPin = 15;
void setup() {
// put your setup code here, to run once:
//pinMode(Ledpin, OUTPUT);
Serial.begin(115200);
Display1.init();
//Display1.set(3); // กำหนดความสว่าง 0-7 หรือกำหนดผ่านค่าคง
WiFi.mode(WIFI_STA);
pinMode(ledchack, OUTPUT);
pinMode(ledchackoff, OUTPUT);
pinMode(ledserver, OUTPUT);
//pinMode(digitalPin, INPUT);
pinMode(p3v, OUTPUT);
pinMode(p3vd23, OUTPUT);
pinMode(ptime3v, OUTPUT);
pinMode(ledpin, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(relay2, OUTPUT);
//pinMode(p2, OUTPUT);
digitalWrite(relay, HIGH);
digitalWrite(relay2, HIGH);
//digitalWrite(ledchack, HIGH);
// digitalWrite(relay, LOW);
// pinMode(LED_BUILTIN, OUTPUT);
//connect wifi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
digitalWrite(ledchackoff, HIGH);
delay(1000);
digitalWrite(ledchackoff, LOW);
delay(1000);
Serial.println("Connecting to WiFi ..");
Serial.print(".");
//digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
//Serial.println("Connected to the WiFi network");
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
Serial.println("Timer set to 5 seconds (timerDelay variable), it will take 5 seconds before publishing the first reading.");
Serial.println();
}
void loop() {
//val = digitalRead(digitalPin);
//Serial.print("val = ");
//Serial.println(val);
//display1.clear();
Display1.display(0, 5);
Display1.display(1, 4);
Display1.display(2, 3);
Display1.display(3, 2);
digitalWrite(ledchack, HIGH);
//digitalWrite(ledchackoff, HIGH);
//Display1.display(0, 1); // แสดงเลข 1 ที่หลัก 0
//Display1.point(POINT_ON);
//Display1.clearDisplay();
digitalWrite(p3v, HIGH);
digitalWrite(ptime3v, HIGH);
digitalWrite(p3vd23, HIGH);
if(WiFi.status()== WL_CONNECTED){
digitalWrite(ledchackoff, LOW);
DynamicJsonDocument doc(1024);//ปกติ 2048
DynamicJsonDocument doc2(1024);//ปกติ 2048
//DynamicJsonDocument docsent(500);
// String request = "http://192.168.94.188/bws8espiot/public/api/onoffdevicetest/1";
//String urlget2 = "http://192.168.94.188/bws8espiot/public/api/onoffdevicetest/4";
String urlget2 = "https://iot.rueangwit.com/bws8espiot/public/api/onoffdevicetest/4";
String request = "https://iot.rueangwit.com/bws8espiot/public/api/onoffdevicetest/1";
HTTPClient http;
HTTPClient http2;
//HTTPClient http3;
Serial.println("WiFi connect");
http.begin(request);
http.GET();
response = http.getString();
DeserializationError error = deserializeJson(doc, response);
if(error) {
er++;
if(er==10){
WiFi.disconnect();
WiFi.reconnect();
Serial.print("WiFi reconnect failed");
delay(3000);
er=0;
}
digitalWrite(relay, HIGH);
//digitalWrite(ledchack, LOW);
digitalWrite(ledserver, HIGH);
//digitalWrite(relay, LOW);
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
}else{
digitalWrite(ledserver, LOW);
digitalWrite(ledchack, HIGH);
//digitalWrite(ledserver, LOW);
//digitalWrite(ledserver, HIGH);
int h1 = doc["h1"];
int h2 = doc["h2"];
int i1 = doc["i1"];
int i2 = doc["i2"];
//int btnON=doc["btn"];
int btnON = doc["relay_status"];
Serial.println(btnON);
Display1.display(0, h1);
Display1.display(1, h2);
Display1.display(2, i1);
Display1.display(3, i2);
if(btnON==1)
{
//digitalWrite(p3v, HIGH);
//digitalWrite(relay, HIGH);
digitalWrite(relay, LOW);
//digitalWrite(relay, HIGH);
//http2.begin(sentdt);
//http2.GET();
//sentresponse = http2.getString();
//DeserializationError sent_error = deserializeJson(docsent, sentresponse);
}
else if(btnON==0)
{
//digitalWrite(relay, LOW);
digitalWrite(relay, HIGH);
}
http.end();
}
http2.begin(urlget2);
http2.GET();
response2 = http2.getString();
DeserializationError error2 = deserializeJson(doc2, response2);
if(error2){
digitalWrite(relay2, HIGH);
}else{
int btnON2 = doc2["relay_status"];
if(btnON2==1)
{
digitalWrite(relay2, LOW);
}
else if(btnON2==0)
{
//digitalWrite(relay, LOW);
digitalWrite(relay2, HIGH);
}
http2.end();
}
}
else
{
//digitalWrite(relay, LOW);
digitalWrite(ledchack, LOW);
digitalWrite(relay, HIGH);
WiFi.disconnect();
WiFi.reconnect();
Serial.println("WiFi Disconnected");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
digitalWrite(ledchack, LOW);
digitalWrite(ledchackoff, HIGH);
delay(1000);
digitalWrite(ledchackoff, LOW);
delay(1000);
Serial.println("Connecting to WiFi ..");
Serial.print(".");
//digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
}
delay(3000);
}