#include // Display Componets NexText clock_txt = NexText(1, 2, "clock"); NexDSButton lt_bt = NexDSButton(1, 3, "lt_bt"); NexDSButton fan_bt = NexDSButton(1, 4, "fan_bt"); NexDSButton puri_bt = NexDSButton(1, 5, "puri_bt"); NexButton up_bt = NexButton(1, 6, "up_bt"); NexButton down_bt = NexButton(1, 7, "down_bt"); NexButton mode_off_btn = NexButton(1, 8, "mode_off_btn"); NexButton mode_fan_btn = NexButton(1, 9, "mode_fan_btn"); NexButton mode_cool_btn = NexButton(1, 10, "mode_cool_btn"); NexButton fan_auto_btn = NexButton(1, 11, "fan_auto_btn"); NexButton fan_1_btn = NexButton(1, 12, "fan_1_btn"); NexButton fan_2_btn = NexButton(1, 13, "fan_2_btn"); NexButton fan_3_btn = NexButton(1, 14, "fan_3_btn"); // List of Component ID Message to listen to NexTouch *nex_listen_list[] = { <_bt, &fan_bt, &puri_bt, &up_bt, &down_bt, &mode_off_btn, &mode_fan_btn, &mode_cool_btn, &fan_auto_btn, &fan_1_btn, &fan_2_btn, &fan_3_btn, NULL}; /* This Code will run right after ESPMega PRO's Peripheral Initialization Routine */ void user_pre_init() { nexInit(); } /* This code will run after every component is initialized */ void user_init() { ESPMega_EXTLCD.print("page dashboard"); ESPMega_EXTLCD.write(0xFF); ESPMega_EXTLCD.write(0xFF); ESPMega_EXTLCD.write(0xFF); lt_bt.attachPop(lt_btn_cb, <_bt); fan_bt.attachPop(fan_btn_cb, &fan_bt); puri_bt.attachPop(puri_btn_cb, &puri_bt); up_bt.attachPop(ac_temp_adj_btn_cb, &up_bt); down_bt.attachPop(ac_temp_adj_btn_cb, &down_bt); mode_off_btn.attachPop(ac_mode_adj_btn_cb, &mode_off_btn); mode_fan_btn.attachPop(ac_mode_adj_btn_cb, &mode_fan_btn); mode_cool_btn.attachPop(ac_mode_adj_btn_cb, &mode_cool_btn); fan_auto_btn.attachPop(ac_fan_adj_btn_cb, &fan_auto_btn); fan_1_btn.attachPop(ac_fan_adj_btn_cb, &fan_1_btn); fan_2_btn.attachPop(ac_fan_adj_btn_cb, &fan_2_btn); fan_3_btn.attachPop(ac_fan_adj_btn_cb, &fan_3_btn); } /* This code will run once every event loop */ void user_loop() { nexLoop(nex_listen_list); } /* This code will run when an input pin changed state */ void virtual_interrupt_user_callback(int pin, int state) { } void pwm_changed_user_callback(int pin) { if ((pin == LIGHT1_PIN) || (pin == LIGHT2_PIN) || (pin == LIGHT3_PIN) || (pin = LIGHT4_PIN)) { lt_bt.setValue(cud_light_group_state()); } else if (pin == FAN1_PIN || pin == FAN2_PIN || pin == FAN3_PIN) { fan_bt.setValue(cud_fan_group_state()); } else if (pin == AIR_PURIFIER_PIN) { puri_bt.setValue(pwm_get_state(pin)); } } /* This code will run every 15 seconds */ void timer_tick_callback() { char time_buffer[15]; rtctime_t time = ESPMega_getTime(); sprintf(time_buffer, "%02d:%02d", time.hours, time.minutes); clock_txt.setText(time_buffer); } void lt_btn_cb(void *comp) { cud_light_toggle(); } void fan_btn_cb(void *comp) { cud_fan_toggle(); } void puri_btn_cb(void *comp) { pwm_toggle(AIR_PURIFIER_PIN); } void ac_temp_adj_btn_cb(void *comp) { } void ac_mode_adj_btn_cb(void *comp) { } void ac_fan_adj_btn_cb(void *comp) { } void cud_light_toggle() { bool new_state = !cud_light_group_state(); pwm_set_state(LIGHT1_PIN, new_state); pwm_set_state(LIGHT2_PIN, new_state); pwm_set_state(LIGHT3_PIN, new_state); pwm_set_state(LIGHT4_PIN, new_state); } bool cud_light_group_state() { return pwm_get_state(LIGHT1_PIN) || pwm_get_state(LIGHT2_PIN) || pwm_get_state(LIGHT3_PIN) || pwm_get_state(LIGHT4_PIN); } void cud_fan_toggle() { bool new_state = !cud_fan_group_state(); pwm_set_state(FAN1_PIN, new_state); pwm_set_state(FAN2_PIN, new_state); pwm_set_state(FAN3_PIN, new_state); } bool cud_fan_group_state() { return pwm_get_state(FAN1_PIN) || pwm_get_state(FAN2_PIN) || pwm_get_state(FAN3_PIN); }