diff --git a/lib/ETH/WS_ETH.cpp b/lib/ETH/WS_ETH.cpp index 029516a..a2a1c11 100644 --- a/lib/ETH/WS_ETH.cpp +++ b/lib/ETH/WS_ETH.cpp @@ -8,7 +8,7 @@ static bool eth_connected_Old = false; IPAddress ETH_ip; // NTP setup WiFiUDP udp; -NTPClient timeClient(udp, "pool.ntp.org", timezone*3600, 60000); // NTP server, time offset in seconds, update interval +NTPClient timeClient(udp, "pool.ntp.org", TZ*3600, 60000); // NTP server, time offset in seconds, update interval void onEvent(arduino_event_id_t event, arduino_event_info_t info) { switch (event) { diff --git a/lib/ETH/WS_ETH.h b/lib/ETH/WS_ETH.h index e5976ba..f0d0f5b 100644 --- a/lib/ETH/WS_ETH.h +++ b/lib/ETH/WS_ETH.h @@ -3,10 +3,6 @@ #include #include -#include "WS_PCF85063.h" -#include "WS_GPIO.h" -#include "WS_RTC.h" - // Set this to 1 to enable dual Ethernet support #define USE_TWO_ETH_PORTS 0 @@ -35,7 +31,7 @@ ETHClass ETH1(1); #endif -#define timezone 8 // china +#define TZ 1 // rome void ETH_Init(void); void ETH_Loop(void); diff --git a/lib/ETH/WS_RTC.cpp b/lib/ETH/WS_RTC.cpp deleted file mode 100644 index 8e37f11..0000000 --- a/lib/ETH/WS_RTC.cpp +++ /dev/null @@ -1,350 +0,0 @@ -#include "WS_RTC.h" - -Timing_RTC CHx_State[Timing_events_Number_MAX]; // Set a maximum of Timing_events_Number_MAX timers -char Event_str[Timing_events_Number_MAX][1000]; -static Timing_RTC CHx_State_Default; // Event initial state -const unsigned char Event_cycle[4][13] = {"Aperiodicity","everyday","Weekly","monthly"}; - -void RTC_Init(void){ - PCF85063_Init(); - xTaskCreatePinnedToCore( - RTCTask, - "RTCTask", - 4096, - NULL, - 3, - NULL, - 0 - ); -} -uint8_t Timing_events_Num = 0; -void RTCTask(void *parameter) -{ - static uint8_t Time_Old = 0; - while(1){ - if(Timing_events_Num){ - for (int i = 0; i < Timing_events_Number_MAX; i++){ - if(CHx_State[i].Enable_Flag){ - if(CHx_State[i].Time.hour == datetime.hour && CHx_State[i].Time.minute == datetime.minute && CHx_State[i].Time.second == datetime.second && datetime.second != Time_Old){ // The event time is consistent with the current time - switch(CHx_State[i].repetition_State){ - case Repetition_NONE: - if(CHx_State[i].Time.year == datetime.year && CHx_State[i].Time.month == datetime.month && CHx_State[i].Time.day == datetime.day){ // Executes at the defined date and time - TimerEvent_handling(CHx_State[i]); - TimerEvent_Del(CHx_State[i]); - } - break; - case Repetition_everyday: - TimerEvent_handling(CHx_State[i]); - break; - case Repetition_Weekly: - if(CHx_State[i].Time.dotw == datetime.dotw){ - TimerEvent_handling(CHx_State[i]); - } - break; - case Repetition_monthly: - if(CHx_State[i].Time.day == datetime.day){ - TimerEvent_handling(CHx_State[i]); - } - break; - default: - printf("Event error!!!!\n"); - break; - } - } - } - } - } - Time_Old = datetime.second; - vTaskDelay(pdMS_TO_TICKS(100)); - } - vTaskDelete(NULL); -} - -void TimerEvent_handling(Timing_RTC event){ - uint8_t Retain_channels = 0; - printf("Event %d : \r\n", event.Event_Number); - char datetime_str[50]; - datetime_to_str(datetime_str,event.Time); - for (int i = 0; i < Relay_Number_MAX; i++) { - if(*(&(event.Relay_CH1)+i) == STATE_Retain) // Find the modified channel - Retain_channels ++; // Number of unmodified channels - } - if(Retain_channels < Relay_Number_MAX - 1){ - printf("%s\r\n", datetime_str); - printf("CHx Open : "); - int j = 0; - for (j = 0; j < Relay_Number_MAX; j++) { - if(*(&(event.Relay_CH1)+j) == STATE_Open) - printf("CH%d ", j+1); - } - printf("\r\nCHx Closs : "); - for (j = 0; j < Relay_Number_MAX; j++) { - if(*(&(event.Relay_CH1)+j) == STATE_Close) - printf("CH%d ", j+1); - } - if(Retain_channels){ - printf("\r\nCHx Retain : "); - for (j = 0; j < Relay_Number_MAX; j++) { - if(*(&(event.Relay_CH1)+j) == STATE_Retain) - printf("CH%d ", j+1); - } - } - printf("\r\n"); - Relay_Immediate_CHxn(&(event.Relay_CH1), RTC_Mode); - printf("\r\n"); - } - else if(Retain_channels == Relay_Number_MAX - 1){ // Modified a channel (use TimerEvent_CHx_Set()) - printf("%s\r\n", datetime_str); - for (int x = 0; x < Relay_Number_MAX; x++) { - if(*(&(event.Relay_CH1)+x) != STATE_Retain){ // Find the modified channel - if(*(&(event.Relay_CH1)+x)){ - printf("CH%d Open\r\n", x); - Relay_Immediate(x, true, RTC_Mode); - printf("\r\n"); - } - else{ - printf("CH%d Closs\r\n", x); - Relay_Immediate(x, false, RTC_Mode); - printf("\r\n"); - } - break; - } - } - } - else{ - printf("Event error or no relay control!!!\r\n"); - } -} - -void TimerEvent_CHx_Set(datetime_t time,uint8_t CHx, bool State, Repetition_event Repetition) -{ - char datetime_str[50]; - datetime_to_str(datetime_str,datetime); - printf("Now Time: %s!!!!\r\n", datetime_str); - if(CHx > Relay_Number_MAX){ - printf("Timing_CHx_Set(function): Error passing parameter CHx!!!!\r\n"); - return; - } - if(Timing_events_Num + 1 >= Timing_events_Number_MAX) - { - printf("Note : The number of scheduled events is full.\r\n"); - } - else{ - RGB_Open_Time(50, 36, 0, 1000, 0); - CHx_State[Timing_events_Num].Enable_Flag = true; - CHx_State[Timing_events_Num].Event_Number = Timing_events_Num + 1; - *(&(CHx_State[Timing_events_Num].Relay_CH1)+CHx) = (Status_adjustment)State; - CHx_State[Timing_events_Num].Time = time; - CHx_State[Timing_events_Num].repetition_State = Repetition; - Timing_events_Num ++; - datetime_to_str(datetime_str,time); - if(State){ - printf("New timing event%d :\r\n %s set CH%d Open ----- %s\r\n\r\n", Timing_events_Num, datetime_str, CHx, Event_cycle[Repetition]); - sprintf(Event_str[Timing_events_Num-1], "Event %d : %s set CH%d Open ----- %s\\n\\n", Timing_events_Num, datetime_str, CHx, Event_cycle[Repetition]); - } - else{ - printf("New timing event%d :\r\n %s set CH%d Closs ----- %s\r\n\r\n", Timing_events_Num, datetime_str, CHx, Event_cycle[Repetition]); - sprintf(Event_str[Timing_events_Num-1], "Event %d : %s set CH%d Closs ----- %s\\n\\n", Timing_events_Num, datetime_str, CHx, Event_cycle[Repetition]); - } - Buzzer_Open_Time(700, 0); - } -} - -void TimerEvent_CHxs_Set(datetime_t time,uint8_t PinState, Repetition_event Repetition) -{ - - char datetime_str[50]; - datetime_to_str(datetime_str,datetime); - printf("Now Time: %s!!!!\r\n", datetime_str); - if(Timing_events_Num + 1 >= Timing_events_Number_MAX) - { - printf("Note : The number of scheduled events is full.\r\n"); - } - else{ - RGB_Open_Time(50, 36, 0, 1000, 0); - CHx_State[Timing_events_Num].Enable_Flag = true; - CHx_State[Timing_events_Num].Event_Number = Timing_events_Num + 1; - for (int i = 0; i < Relay_Number_MAX; i++) { - *(&(CHx_State[Timing_events_Num].Relay_CH1)+i) = (Status_adjustment)((PinState >> i) & 0x01); - } - CHx_State[Timing_events_Num].Time = time; - CHx_State[Timing_events_Num].repetition_State = Repetition; - Timing_events_Num ++; - datetime_to_str(datetime_str,time); - printf("New timing event%d :\r\n %s \r\n",Timing_events_Num, datetime_str); - printf(" CHx :"); - for (int i = 0; i < Relay_Number_MAX; i++) - printf("CH%d ", i+1); - printf("\r\n State :"); - for (int i = 0; i < Relay_Number_MAX; i++) { - if((PinState >> i) & 0x01) - printf("Open "); - else - printf("Closs "); - } - printf("\r\n"); - printf(" ----- %s\r\n\r\n", Event_cycle[Repetition]); - printf("\r\n"); - Buzzer_Open_Time(700, 0); - - int len = 0; - char Event_content[1000]; - len += snprintf(Event_content + len, sizeof(Event_content) - len, "    CHx  :"); - for (int i = 0; i < Relay_Number_MAX; i++) { - len += snprintf(Event_content + len, sizeof(Event_content) - len, "CH%d       ", i + 1); - } - len += snprintf(Event_content + len, sizeof(Event_content) - len, "\\n     State :"); - for (int i = 0; i < Relay_Number_MAX; i++) { - if ((PinState >> i) & 0x01) - len += snprintf(Event_content + len, sizeof(Event_content) - len, "Open     "); - else - len += snprintf(Event_content + len, sizeof(Event_content) - len, "Closs     "); - } - len += snprintf(Event_content + len, sizeof(Event_content) - len, "\\n    ----- %s\\n\\n", Event_cycle[Repetition]); - // printf("%s\r\n", Event_content); - sprintf(Event_str[Timing_events_Num-1], "Event %d : %s \\n%s", Timing_events_Num, datetime_str,Event_content); - } -} -void TimerEvent_CHxn_Set(datetime_t time,Status_adjustment *Relay_n, Repetition_event Repetition) -{ - char datetime_str[50]; - datetime_to_str(datetime_str,datetime); - printf("Now Time: %s!!!!\r\n", datetime_str); - if(Timing_events_Num + 1 >= Timing_events_Number_MAX) - { - printf("Note : The number of scheduled events is full.\r\n"); - } - else{ - RGB_Open_Time(50, 36, 0, 1000, 0); - CHx_State[Timing_events_Num].Enable_Flag = true; - CHx_State[Timing_events_Num].Event_Number = Timing_events_Num + 1; - for (int i = 0; i < Relay_Number_MAX; i++) { - *(&(CHx_State[Timing_events_Num].Relay_CH1)+i) = Relay_n[i]; - } - CHx_State[Timing_events_Num].Time = time; - CHx_State[Timing_events_Num].repetition_State = Repetition; - Timing_events_Num ++; - datetime_to_str(datetime_str,time); - printf("New timing event%d :\r\n %s \r\n",Timing_events_Num, datetime_str); - printf(" CHx :"); - for (int i = 0; i < Relay_Number_MAX; i++) - printf("CH%d ", i+1); - printf("\r\n State :"); - for (int i = 0; i < Relay_Number_MAX; i++) { - if(Relay_n[i] == STATE_Open) - printf("Open "); - else if(Relay_n[i] == STATE_Close) - printf("Closs "); - else if(Relay_n[i] == STATE_Retain) - printf("Retain "); - } - printf("\r\n"); - printf(" ----- %s\r\n\r\n", Event_cycle[Repetition]); - printf("\r\n"); - Buzzer_Open_Time(700, 0); - - int len = 0; - char Event_content[1000]; - len += snprintf(Event_content + len, sizeof(Event_content) - len, "    CHx  :"); - for (int i = 0; i < Relay_Number_MAX; i++) { - len += snprintf(Event_content + len, sizeof(Event_content) - len, "CH%d       ", i + 1); - } - len += snprintf(Event_content + len, sizeof(Event_content) - len, "\\n    State :"); - for (int i = 0; i < Relay_Number_MAX; i++) { - if (Relay_n[i] == STATE_Open) - len += snprintf(Event_content + len, sizeof(Event_content) - len, "Open     "); - else if(Relay_n[i] == STATE_Close) - len += snprintf(Event_content + len, sizeof(Event_content) - len, "Closs     "); - else if(Relay_n[i] == STATE_Retain) - len += snprintf(Event_content + len, sizeof(Event_content) - len, "Retain   "); - } - len += snprintf(Event_content + len, sizeof(Event_content) - len, "\\n    ----- %s\\n\\n", Event_cycle[Repetition]); - // printf("%s\r\n", Event_content); - sprintf(Event_str[Timing_events_Num-1], "Event %d : %s \\n%s", Timing_events_Num, datetime_str,Event_content); - } -} - -void TimerEvent_printf(Timing_RTC event){ - uint8_t Retain_channels = 0; - uint8_t open[8]={0}; - printf("Event %d : \r\n", event.Event_Number); - char datetime_str[50]; - datetime_to_str(datetime_str,event.Time); - for (int i = 0; i < Relay_Number_MAX; i++) { - if(*(&(event.Relay_CH1)+i) == STATE_Retain) // Find the modified channel - Retain_channels ++; // Number of unmodified channels - else - open[i] = *(&(event.Relay_CH1)+i); - } - if(Retain_channels == 0){ // All channels have been modified (use TimerEvent_CHxs_Set()) - printf("%s\r\n", datetime_str); - printf(" CHx Open : "); - for (int j = 0; j < Relay_Number_MAX; j++) { - if(open[j]) - printf("CH%d ", j); - } - printf("\r\n CHx Closs : "); - for (int k = 0; k < Relay_Number_MAX; k++) { - if(!open[k]) - printf("CH%d ", k); - } - printf("\r\n"); - } - else if(Retain_channels == Relay_Number_MAX - 1){ // Modified a channel (use TimerEvent_CHx_Set()) - printf("%s ,", datetime_str); - for (int x = 0; x < Relay_Number_MAX; x++) { - if(*(&(event.Relay_CH1)+x) != STATE_Retain){ // Find the modified channel - if(*(&(event.Relay_CH1)+x)) - printf("CH%d Open\r\n", x); - else - printf("CH%d Closs\r\n", x); - break; - } - } - } - else{ - printf("%s\r\n", datetime_str); - printf("CHx Open : "); - int j = 0; - for (j = 0; j < Relay_Number_MAX; j++) { - if(open[j] == STATE_Open) - printf("CH%d ", j+1); - } - printf("\r\nCHx Closs : "); - for (j = 0; j < Relay_Number_MAX; j++) { - if(open[j] == STATE_Close) - printf("CH%d ", j+1); - } - printf("\r\nCHx Retain : "); - for (j = 0; j < Relay_Number_MAX; j++) { - if(open[j] == STATE_Retain) - printf("CH%d ", j+1); - } - printf("\r\n"); - } -} - -void TimerEvent_printf_ALL(void) -{ - printf("/******************* Current RTC event *******************/ \r\n"); - for (int i = 0; i < Timing_events_Number_MAX; i++) { - if(CHx_State[i].Enable_Flag) - TimerEvent_printf(CHx_State[i]); - } - printf("/******************* Current RTC event *******************/\r\n\r\n "); -} -void TimerEvent_Del(Timing_RTC event){ - RGB_Open_Time(20, 0, 50, 1000, 0); - printf("Example Delete an RTC event%d\r\n\r\n",event.Event_Number); - for (int i = event.Event_Number; i < Timing_events_Number_MAX; i++) { - CHx_State[i].Event_Number = CHx_State[i].Event_Number -1; - CHx_State[i-1] = CHx_State[i]; - } - CHx_State[Timing_events_Number_MAX - 1] = CHx_State_Default; - memset(Event_str[Timing_events_Number_MAX - 1], 0, sizeof(Event_str[Timing_events_Number_MAX - 1])); - Timing_events_Num --; -} -void TimerEvent_Del_Number(uint8_t Event_Number){ - TimerEvent_Del(CHx_State[Event_Number - 1]); - Buzzer_Open_Time(700, 300); -} \ No newline at end of file diff --git a/lib/ETH/WS_RTC.h b/lib/ETH/WS_RTC.h deleted file mode 100644 index 5640e11..0000000 --- a/lib/ETH/WS_RTC.h +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include "WS_PCF85063.h" -#include "WS_Relay.h" -#include "WS_GPIO.h" - -#define Timing_events_Number_MAX 10 // Indicates the number of timers that can be set - -typedef enum { - Repetition_NONE = 0, // aperiodicity - Repetition_everyday = 1, // The event is repeated at this time every day - Repetition_Weekly = 2, // This event is repeated every week at this time - Repetition_monthly = 3, // This event is repeated every month at this time -} Repetition_event; - -typedef struct { - bool Enable_Flag = false; // The timer event enabled flag. - uint8_t Event_Number = 0; // Current event sequence number - Status_adjustment Relay_CH1 = STATE_Retain; // The CH1 status is changed periodically - Status_adjustment Relay_CH2 = STATE_Retain; // The CH2 status is changed periodically - Status_adjustment Relay_CH3 = STATE_Retain; // The CH3 status is changed periodically - Status_adjustment Relay_CH4 = STATE_Retain; // The CH4 status is changed periodically - Status_adjustment Relay_CH5 = STATE_Retain; // The CH5 status is changed periodically - Status_adjustment Relay_CH6 = STATE_Retain; // The CH6 status is changed periodically - Status_adjustment Relay_CH7 = STATE_Retain; // The CH7 status is changed periodically - Status_adjustment Relay_CH8 = STATE_Retain; // The CH8 status is changed periodically - datetime_t Time; - Repetition_event repetition_State = Repetition_NONE; // Periodic execution -}Timing_RTC; - -extern uint8_t Timing_events_Num; -extern Timing_RTC CHx_State[Timing_events_Number_MAX]; -extern char Event_str[Timing_events_Number_MAX][1000]; - -void RTCTask(void *parameter); -void TimerEvent_handling(Timing_RTC event); -void TimerEvent_printf(Timing_RTC event); -void TimerEvent_Del(Timing_RTC event); - -void RTC_Init(void); -void TimerEvent_CHx_Set(datetime_t time,uint8_t CHx, bool State, Repetition_event Repetition); -void TimerEvent_CHxs_Set(datetime_t time,uint8_t PinState, Repetition_event Repetition); -void TimerEvent_CHxn_Set(datetime_t time,Status_adjustment *Relay_n, Repetition_event Repetition); -void TimerEvent_printf_ALL(void); -void TimerEvent_Del_Number(uint8_t Event_Number); \ No newline at end of file diff --git a/lib/GPIO/WS_TCA9554PWR.cpp b/lib/GPIO/TCA9554PWR_Driver.cpp similarity index 100% rename from lib/GPIO/WS_TCA9554PWR.cpp rename to lib/GPIO/TCA9554PWR_Driver.cpp diff --git a/lib/GPIO/WS_TCA9554PWR.h b/lib/GPIO/TCA9554PWR_Driver.h similarity index 100% rename from lib/GPIO/WS_TCA9554PWR.h rename to lib/GPIO/TCA9554PWR_Driver.h diff --git a/lib/RTC/WS_PCF85063.cpp b/lib/RTC/PCF85063_Driver.cpp similarity index 100% rename from lib/RTC/WS_PCF85063.cpp rename to lib/RTC/PCF85063_Driver.cpp diff --git a/lib/RTC/WS_PCF85063.h b/lib/RTC/PCF85063_Driver.h similarity index 100% rename from lib/RTC/WS_PCF85063.h rename to lib/RTC/PCF85063_Driver.h