From bcc64b4a2809bb95d10a7ace1e33973be00cd69c Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Fri, 28 Jun 2024 18:35:29 +0700 Subject: [PATCH] Update main.cpp --- src/main.cpp | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 37f89ca..8398ba2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,11 +28,18 @@ void setup() // Initialize the ESPMegaPRO ESP_LOGV("CUD IoT OS", "Initializing ESPMegaPRO"); espmega.begin(); + // Initialize Inputs espmega.inputs.preloadInputBuffer(); espmega.inputs.setDebounceTime(RIGHT_STADIUM_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS); espmega.inputs.setDebounceTime(LEFT_STADIUM_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS); espmega.inputs.setDebounceTime(GIRLS_TOILET_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS); espmega.inputs.setDebounceTime(BOYS_TOILET_LIGHT_SWITCH_PIN, SWITCH_DEBOUNCE_TIME_MS); + // Initialize Outputs + for (uint8_t i = 0; i < 16; i++) + { + // Digital Pin Mode + espmega.outputs.setValue(i, 4095); + } // Initialize IoT Modules ESP_LOGV("CUD IoT OS", "Initializing IoT Modules"); espmega.setTimezone("ICT-7"); @@ -76,6 +83,8 @@ void smartvar_init() { // Initialize Smart Variables ESP_LOGV("CUD IoT OS", "Initializing Smart Variables"); toiletLightsLock.begin(5); + toiletLightsLock.bindFRAM(&espmega.fram, 10000); + toiletLightsLock.setValueAutoSave(true); // Construct the topic char* toilet_lock_topic = (char*)malloc(strlen(TOPIC_TOILET_LIGHT_LOCK) + strlen(espmega.iot->getMqttConfig()->base_topic) + 5); sprintf(toilet_lock_topic, "%s%s", espmega.iot->getMqttConfig()->base_topic, TOPIC_TOILET_LIGHT_LOCK); @@ -88,6 +97,8 @@ void smartvar_init() { toiletLightsLock.enableValueRequest(toilet_lock_request_topic); gymLightsLock.begin(5); + gymLightsLock.bindFRAM(&espmega.fram, 10010); + gymLightsLock.setValueAutoSave(true); // Construct the topic char* gym_lock_topic = (char*)malloc(strlen(TOPIC_GYM_LIGHT_LOCK) + strlen(espmega.iot->getMqttConfig()->base_topic) + 5); sprintf(gym_lock_topic, "%s%s", espmega.iot->getMqttConfig()->base_topic, TOPIC_GYM_LIGHT_LOCK); @@ -112,14 +123,14 @@ void button_init() if (get_gym_light_lock()) return; // Turn on right light - espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, HIGH); }); + espmega.outputs.setState(RIGHT_LIGHT_RELAY_PIN, HIGH); }); rightOnButton.setLongPressCallback([]() { if (get_gym_light_lock()) return; // Turn on both lights - espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, HIGH); - espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH); }); + espmega.outputs.setState(RIGHT_LIGHT_RELAY_PIN, HIGH); + espmega.outputs.setState(LEFT_LIGHT_RELAY_PIN, HIGH); }); rightOnButton.begin(); // Right Off Button @@ -130,14 +141,14 @@ void button_init() if (get_gym_light_lock()) return; // Turn off right light - espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, LOW); }); + espmega.outputs.setState(RIGHT_LIGHT_RELAY_PIN, LOW); }); rightOffButton.setLongPressCallback([]() { if (get_gym_light_lock()) return; // Turn off both lights - espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, LOW); - espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW); }); + espmega.outputs.setState(RIGHT_LIGHT_RELAY_PIN, LOW); + espmega.outputs.setState(LEFT_LIGHT_RELAY_PIN, LOW); }); rightOffButton.begin(); // Left On Button @@ -148,14 +159,14 @@ void button_init() if (get_gym_light_lock()) return; // Turn on left light - espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH); }); + espmega.outputs.setState(LEFT_LIGHT_RELAY_PIN, HIGH); }); leftOnButton.setLongPressCallback([]() { if (get_gym_light_lock()) return; // Turn on both lights - espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, HIGH); - espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, HIGH); }); + espmega.outputs.setState(RIGHT_LIGHT_RELAY_PIN, HIGH); + espmega.outputs.setState(LEFT_LIGHT_RELAY_PIN, HIGH); }); leftOnButton.begin(); // Left Off Button @@ -164,12 +175,12 @@ void button_init() leftOffButton.setShortPressCallback([]() { // Turn off left light - espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW); }); + espmega.outputs.setState(LEFT_LIGHT_RELAY_PIN, LOW); }); leftOffButton.setLongPressCallback([]() { // Turn off both lights - espmega.outputs.digitalWrite(RIGHT_LIGHT_RELAY_PIN, LOW); - espmega.outputs.digitalWrite(LEFT_LIGHT_RELAY_PIN, LOW); }); + espmega.outputs.setState(RIGHT_LIGHT_RELAY_PIN, LOW); + espmega.outputs.setState(LEFT_LIGHT_RELAY_PIN, LOW); }); leftOffButton.begin(); } @@ -198,7 +209,7 @@ void handle_input_change(uint8_t pin, bool state) { return; } - espmega.outputs.digitalWrite(RIGHT_STADIUM_LIGHT_RELAY_PIN, + espmega.outputs.setState(RIGHT_STADIUM_LIGHT_RELAY_PIN, !espmega.outputs.getState(RIGHT_STADIUM_LIGHT_RELAY_PIN)); break; case LEFT_STADIUM_LIGHT_SWITCH_PIN: @@ -206,7 +217,7 @@ void handle_input_change(uint8_t pin, bool state) { return; } - espmega.outputs.digitalWrite(LEFT_STADIUM_LIGHT_RELAY_PIN, + espmega.outputs.setState(LEFT_STADIUM_LIGHT_RELAY_PIN, !espmega.outputs.getState(LEFT_STADIUM_LIGHT_RELAY_PIN)); break; case GIRLS_TOILET_LIGHT_SWITCH_PIN: @@ -214,7 +225,7 @@ void handle_input_change(uint8_t pin, bool state) { return; } - espmega.outputs.digitalWrite(GIRLS_TOILET_LIGHT_RELAY_PIN, + espmega.outputs.setState(GIRLS_TOILET_LIGHT_RELAY_PIN, !espmega.outputs.getState(GIRLS_TOILET_LIGHT_RELAY_PIN)); break; case BOYS_TOILET_LIGHT_SWITCH_PIN: @@ -222,7 +233,7 @@ void handle_input_change(uint8_t pin, bool state) { return; } - espmega.outputs.digitalWrite(BOYS_TOILET_LIGHT_RELAY_PIN, + espmega.outputs.setState(BOYS_TOILET_LIGHT_RELAY_PIN, !espmega.outputs.getState(BOYS_TOILET_LIGHT_RELAY_PIN)); break; default: