#include "time.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include <vector>
#include <string.h>
const char* ssid = "Wokwi-GUEST";
const char* pass="";
#include <ArduinoJson.h>
// set pin numbers
// Konfigurasi NTP (Network Time Protocol)
//const char* ntpServer = "pool.ntp.org";
//const long gmtOffset_sec = 7*3600; // Sesuaikan dengan zona waktu Anda
//const int daylightOffset_sec = 0; //3600;
int A, B, varhour, varsecond;
//-------------------
const int ledPin1 = 23; // the number of the LED pin
const int ledPin2 = 22;
const int ledPin3 = 1;
unsigned const long interval = 1000;
unsigned long zero = 0;
String data;
String values[7];
// Array untuk menyimpan jam dan menit
//const int maxReadings = 10; // Ubah sesuai kebutuhan Anda
//int hoursArray[maxReadings];
//int minutesArray[maxReadings];
//int currentIndex = 0;
int hourA, minuteA, secondA;
int hourAA, minuteAA, secondAA;
int hourAAA, minuteAAA, secondAAA;
void setup(){
Serial.begin(9600);
WiFi.begin(ssid, pass);
while(WiFi.status() != WL_CONNECTED){
delay(100);
Serial.println(".");
}
Serial.println("WiFi Connected!");
Serial.println(WiFi.localIP());
// initialize the LED pin as an output
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void separateTime(String timeString, int &hour, int &minute, int &second) {
hour = timeString.substring(0, 2).toInt();
minute = timeString.substring(3, 5).toInt();
second = timeString.substring(6, 8).toInt();
}
void loop()
{
//printLocalTime();
if(millis()-zero > interval)
{
HTTPClient http;
http.begin("https://elektronika-unpkediri.my.id/kelompok2/one-esp-data.php");
int httpResponCode = http.GET();
//Serial.println(httpResponCode);
if(httpResponCode > 0)
{
String payload = http.getString();
Serial.print(payload);
// Create a JSON document
DynamicJsonDocument doc(1024);
// Parse the JSON data
//DeserializationError error = deserializeJson(doc, json);
DeserializationError error = deserializeJson(doc, payload);
if (error)
{
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return;
}
// Get the values from the JSON document
String row_id = doc["row_id"];
String ioA = doc["ioA"]; //STATUS ON/OFF
String xA = doc["ioA"]; //STATUS PENGALI
String shour = doc["shour"]; //Hour from server jagoanhosting.com
String sminute = doc["sminute"]; //Minutes from server jagoanhosting.com
String timeA = doc["timeA"]; //timer A - kiri
String timeAA = doc["timeAA"]; //timer AA - tengah
String timeAAA = doc["timeAAA"]; //timer AAA - kanan
String autoA = doc["autoA"]; //auto/manual A
int int_xA = xA.toInt();
int int_shour = shour.toInt();
int int_sminute = sminute.toInt();
separateTime(timeA, hourA, minuteA, secondA);
separateTime(timeAA, hourAA, minuteAA, secondAA);
separateTime(timeAAA, hourAAA, minuteAAA, secondAAA);
// Print the values
//Serial.print("ioA: "); Serial.println(ioA);
//Serial.print("xA: "); Serial.println(xA);
Serial.print("int_shour: "+ int_shour);
Serial.println("int_sminute: " + int_sminute);
Serial.print("HourA: "+ hourA);
Serial.print("MinuteA: "+ minuteA);
//Serial.print("SecondA: "); Serial.println(secondA);
Serial.print("HourAA: "+ hourAA);
Serial.print("MinuteAA: "+ minuteAA);
//Serial.print("SecondAA: "); Serial.println(secondAA);
Serial.print("HourAAA: "+ hourAAA);
Serial.print("MinuteAAA: "+ minuteAAA);
//Serial.print("SecondAAA: "); Serial.println(secondAAA);
//if(ioA =="1"){digitalWrite(ledPin1, HIGH);}else{digitalWrite(ledPin1, LOW);}
if(autoA=="1")
{
if((hourA==int_shour && minuteA==int_sminute) || (hourAA==int_shour && minuteAA==int_sminute) || (hourAAA==int_shour && minuteAAA==int_sminute))
//if((hourA==shour && minuteA==sminute) || (hourAA==shour && minuteAA==sminute) || (hourAAA==shour && minuteAAA==sminute))
// bila kondisi auto dan local time sama jadwal
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
delay(5*int_xA);
}
else // bila kondisi auto dan local time tidak sama jadwal
{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
}
}
else
{
if (ioA =="1") // bila kondisi manual dan centang on
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
else // bila kondisi manual dan centang off
{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
}
}
}
else
{
Serial.print("error ");
Serial.println(httpResponCode);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
}
zero = millis();
}
}