#include "RTClib.h"
#include <ArduinoJson.h>
#include "cls.h"
RTC_DS1307 rtc;
DateTime DateNow;
uint8_t WeekTable[7] = {7,1,2,3,4,5,6};
DynamicJsonDocument JConfig(2500);
void test(cls::Ps p)
{
Serial.println("oldu");
}
cls sx;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
sx.wrapper(test);
sx.fire(sx.PortsProperties[0]);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, OUTPUT);
pinMode(18, OUTPUT);
if (rtc.begin()) {
Serial.println("->RTC_DS1307 init.ok");
} else {
Serial.println("->!RTC_DS1307 init.fail");
while (1);
}
Serial.println((int)cls::PActTyp::ManualStart);
JsonArray Ja =JConfig.createNestedArray("Schedule");
JsonObject date1 = Ja.createNestedObject();
date1["P"] = 1;
date1["SHH"] = 21;
date1["SMM"] = 39;
date1["EHH"] = 21;
date1["EMM"] = 40;
JsonArray days1=date1.createNestedArray("Days");
days1[0]=3;
days1[1]=4;
days1[2]=5;
JsonObject date2 = Ja.createNestedObject();
date2["P"] = 2;
date2["SHH"] = 20;
date2["SMM"] = 50;
date2["EHH"] = 21;
date2["EMM"] = 0;
JsonArray days2=date2.createNestedArray("Days");
days2[0]=6;
days2[1]=7;
String x="";
serializeJson(JConfig,x);
Serial.println(x);
}
void loop() {
return;
bool PortInTime[4]={false,false,false,false};
unsigned char PortMap[4]={4,5,2,18};
DateNow = rtc.now();
JsonArray j = JConfig["Schedule"];
for (JsonArray::iterator it = j.begin(); it != j.end(); ++it) {
JsonObject oc=(*it);
JsonArray Jweekdays=oc["Days"];
int P=oc["P"];
int SHH=oc["SHH"];
int SMM=oc["SMM"];
int EHH=oc["EHH"];
int EMM=oc["EMM"];
DateTime DateStart=DateTime(DateNow.year(),DateNow.month(),DateNow.day(),SHH,SMM,0);
DateTime DateEnd=DateTime(DateNow.year(),DateNow.month(),DateNow.day(),EHH,EMM,0);
for (unsigned char Index = 0; Index < Jweekdays.size(); Index++)
{
unsigned char day=Jweekdays[Index];
if(DateNow>=DateStart && DateNow<=DateEnd && WeekTable[DateNow.dayOfTheWeek()]==day){
PortInTime[P-1]=true;
digitalWrite(PortMap[P-1],HIGH);
}
}
}
for (unsigned char i = 0; i < sizeof(PortInTime); i++)
{
if(PortInTime[i]==false){digitalWrite(PortMap[i],LOW);}
Serial.println(PortInTime[i]);
}
ShowDate(DateNow);
//Serial.println("----");
//Serial.println(PortInTime[0]);
//Serial.println(PortInTime[1]);
//Serial.println(PortInTime[2]);
//Serial.println(PortInTime[3]);
//Serial.println("----------");
delay(1000);
return;
DateNow = rtc.now();
ShowDate(DateNow);
delay(1000);
DateTime DateCustom1=DateTime(2022,10,21,11,10,0);
DateTime DateCustom2=DateTime(2022,10,21,11,11,0);
ShowDate(DateCustom1);
ShowDate(DateCustom2);
if(DateNow>=DateCustom1 && DateNow<=DateCustom2){
Serial.println("Başladı");
}else
{
Serial.println("Duruyor");
}
}
void ShowDate(DateTime x)
{
Serial.println("---------");
Serial.print(x.day(),DEC);Serial.print(".");Serial.print(x.month(),DEC);Serial.print(".");Serial.print(x.year(), DEC);Serial.print(" ");
Serial.print(x.hour(), DEC);Serial.print(":");Serial.print(x.minute(), DEC);Serial.print(":");Serial.print(x.second(), DEC);Serial.print(" | DOW:");Serial.println(WeekTable[DateNow.dayOfTheWeek()],DEC);
Serial.println("---------");
}