Compare commits
No commits in common. "553eae056618e6b7513595921a7766756178cb68" and "d4604d28c3041aa58ab97a8570175ce84feb5502" have entirely different histories.
553eae0566
...
d4604d28c3
16 changed files with 183 additions and 536 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -26,8 +26,7 @@ void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCar
|
|||
this->user_mode = 2; // initialized to cool by default
|
||||
this->ac_lock_state = strcmp(ac_lock->getValue(), "on") == 0; // initialized to get value
|
||||
this->pm_lock_state = strcmp(pm_lock->getValue(), "on") == 0; // initialized to get value
|
||||
this->pm_fan_speed = 18;
|
||||
remote_pm_fan_speed->setIntValue(this->pm_fan_speed);
|
||||
this->pm_fan_speed = 10;
|
||||
// remote_pm_fan_speed->setValue(pm_fan_speed);
|
||||
this->ac_fan_speed = 0;
|
||||
this->ac_mode = 0;
|
||||
|
|
@ -38,8 +37,6 @@ void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCar
|
|||
this->lightLevelRow4 = 0;
|
||||
this->time_since_last_ac_change = 0;
|
||||
this->ac_press_pending = false;
|
||||
this->time_since_ac_staggered_start_call = 0;
|
||||
this->ac_staggered_start_call_pending = false;
|
||||
// this->time_since_last_screen_update = 0;
|
||||
this->registerTouchCallback(bindedHandleTouch);
|
||||
this->reset();
|
||||
|
|
@ -49,7 +46,6 @@ void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCar
|
|||
delay(100);
|
||||
this->updateAirPurifierState();
|
||||
this->updateSystemtoggle();
|
||||
this->updateAllStandbyToggle();
|
||||
this->updateACState();
|
||||
this->updateLightGroupStatePageDashboard();
|
||||
|
||||
|
|
@ -66,7 +62,7 @@ void ISEDisplay::loop()
|
|||
recieveSerialCommand();
|
||||
|
||||
// Check if the AC state has been changed
|
||||
if (ac_press_pending && (millis() - time_since_last_ac_change) > 500)
|
||||
if (ac_press_pending && (millis() - time_since_last_ac_change) > 5000)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "Sending AC IR code");
|
||||
sendACIRcode();
|
||||
|
|
@ -74,15 +70,6 @@ void ISEDisplay::loop()
|
|||
ac_press_pending = false;
|
||||
ESP_LOGI("ISEDisplay", "AC press pending set to false");
|
||||
}
|
||||
// check for ac staggered start
|
||||
if (ac_staggered_start_call_pending && (millis() - time_since_ac_staggered_start_call) > 3000)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "Sending Staggered AC IR code (York)");
|
||||
sendACIRcode();
|
||||
ESP_LOGI("ISEDisplay", "AC Staggered AC IR code (York) sent");
|
||||
ac_staggered_start_call_pending = false;
|
||||
ESP_LOGI("ISEDisplay", "AC staggered start call pending set to false");
|
||||
}
|
||||
|
||||
// Check if the MQTT connection has been lost
|
||||
static uint32_t last_mqtt_connected_check = 0;
|
||||
|
|
@ -149,15 +136,10 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
{
|
||||
switch (component)
|
||||
{
|
||||
case COMPONENT_OBJ_STANDBY_LOGO:
|
||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
//this->jumpToPage(2);
|
||||
break;
|
||||
case COMPONENT_OBJ_STANDBY_BTN_OPEN_ALL_TOGGLE:
|
||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
//allToggleStandby();
|
||||
allOn();
|
||||
this->jumpToPage(2);
|
||||
// the function of the button is to open the dashboard from standby
|
||||
break;
|
||||
|
|
@ -169,8 +151,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
case COMPONENT_OBJ_STANDBY_BTN_AC_TOGGLE:
|
||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
if (this->ac_lock_state == true)
|
||||
{
|
||||
if (this->ac_lock_state == true){
|
||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||
break;
|
||||
}
|
||||
|
|
@ -220,8 +201,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
// if ac_lock is true do nothing
|
||||
if (this->ac_lock_state == true)
|
||||
{
|
||||
if (this->ac_lock_state == true){
|
||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||
break;
|
||||
}
|
||||
|
|
@ -237,8 +217,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
// if ac_lock is true do nothing
|
||||
if (this->ac_lock_state == true)
|
||||
{
|
||||
if (this->ac_lock_state == true){
|
||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||
break;
|
||||
}
|
||||
|
|
@ -250,8 +229,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
// if ac_lock is true do nothing
|
||||
if (this->ac_lock_state == true)
|
||||
{
|
||||
if (this->ac_lock_state == true){
|
||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||
break;
|
||||
}
|
||||
|
|
@ -263,8 +241,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
// if pm_lock is true do nothing
|
||||
if (this->pm_lock_state == true)
|
||||
{
|
||||
if (this->pm_lock_state == true){
|
||||
ESP_LOGI("ISEDisplay", "PM lock is on, do nothing");
|
||||
break;
|
||||
}
|
||||
|
|
@ -321,7 +298,6 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
break;
|
||||
// implement pm speed change
|
||||
changePMfanspeed();
|
||||
break;
|
||||
case COMPONENT_OBJ_DASHBOARD_BTN_PM_MODE:
|
||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
|
|
@ -331,7 +307,6 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
|||
case COMPONENT_OBJ_DASHBOARD_HOLDER_PIC_MASTER_LIGHT:
|
||||
break;
|
||||
case COMPONENT_OBJ_DASHBOARD_LOGO:
|
||||
jumpToPage(1);
|
||||
break;
|
||||
case COMPONENT_OBJ_DASHBOARD_HOLDER_PIC_PM_LOCK:
|
||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||
|
|
@ -451,7 +426,6 @@ void ISEDisplay::handlePWMChange(uint8_t pin, bool state, uint16_t value)
|
|||
{
|
||||
// Light
|
||||
updateLightGroupStatePageStandby();
|
||||
updateAllStandbyToggle();
|
||||
// time_since_last_screen_update = millis(); // update time since last activity
|
||||
}
|
||||
}
|
||||
|
|
@ -461,7 +435,6 @@ void ISEDisplay::handlePWMChange(uint8_t pin, bool state, uint16_t value)
|
|||
{
|
||||
// Light
|
||||
updateLightGroupStatePageDashboard();
|
||||
updateSystemtoggle();
|
||||
// time_since_last_screen_update = millis(); // update time since last activity
|
||||
}
|
||||
}
|
||||
|
|
@ -556,7 +529,6 @@ void ISEDisplay::setAClockstate(bool is_ac_lock_on)
|
|||
|
||||
void ISEDisplay::setACstate(uint8_t ac_fan_speed, uint8_t ac_mode, uint8_t ac_temperature)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "AC state before change is: fan speed: %d, mode: %d, temperature: %d", this->ac_fan_speed, this->ac_mode, this->ac_temperature);
|
||||
ESP_LOGI("ISEDisplay", "Setting AC state in memory to: = fan speed: %d, mode: %d, temperature: %d", ac_fan_speed, ac_mode, ac_temperature);
|
||||
|
||||
this->ac_fan_speed = ac_fan_speed;
|
||||
|
|
@ -574,30 +546,21 @@ void ISEDisplay::setACstate(uint8_t ac_fan_speed, uint8_t ac_mode, uint8_t ac_te
|
|||
this->time_since_last_ac_change = millis();
|
||||
this->ac_press_pending = true;
|
||||
updateACState();
|
||||
updateSystemtoggle();
|
||||
updateAllStandbyToggle();
|
||||
}
|
||||
void ISEDisplay::sendACIRcode()
|
||||
{
|
||||
uint8_t cur_ac_fan_speed = this->ac_fan_speed;
|
||||
uint8_t cur_ac_mode = this->ac_mode;
|
||||
uint8_t before_change_ac_mode = this->climateCard_daikin->getMode();
|
||||
uint8_t cur_ac_temperature = this->ac_temperature;
|
||||
uint8_t york_temp = cur_ac_temperature;
|
||||
// this->climateCard->setFanSpeed(ac_fan_speed);
|
||||
ESP_LOGI("ISEDisplay", "AC fan speed set to: %d", cur_ac_fan_speed);
|
||||
// this->climateCard->setMode(ac_mode);
|
||||
ESP_LOGI("ISEDisplay", "AC mode before change is set to: %d", before_change_ac_mode);
|
||||
ESP_LOGI("ISEDisplay", "AC mode set to: %d", cur_ac_mode);
|
||||
// this->climateCard->setTemperature(ac_temperature);
|
||||
ESP_LOGI("ISEDisplay", "AC temperature set to: %d", cur_ac_temperature);
|
||||
// check if temp is within range of min and max for york if not set an min or max for only york
|
||||
if (ac_staggered_start_call_pending == false)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "AC Staggered start call pending is false");
|
||||
this->climateCard_daikin->setState(cur_ac_mode, cur_ac_fan_speed, cur_ac_temperature);
|
||||
ESP_LOGI("ISEDisplay", "Daikin AC IR code sent");
|
||||
}
|
||||
if (cur_ac_temperature < YORK_MIN_TEMP)
|
||||
{
|
||||
york_temp = YORK_MIN_TEMP;
|
||||
|
|
@ -606,37 +569,16 @@ void ISEDisplay::sendACIRcode()
|
|||
{
|
||||
york_temp = YORK_MAX_TEMP;
|
||||
}
|
||||
if (cur_ac_mode == 3 && ac_staggered_start_call_pending == false)
|
||||
if (ac_mode == 3)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "AC Staggered start call pending is false");
|
||||
this->climateCard_york->setState(0, cur_ac_fan_speed, york_temp);
|
||||
ESP_LOGI("ISEDisplay", "York AC IR code sent to off mode due to swtiching to dry on Daikin");
|
||||
}
|
||||
else
|
||||
{
|
||||
// want to stagger start york ac when change state from off (mode 0) to on (mode 1,2,3) by 1 sec without delaying other code
|
||||
if (before_change_ac_mode == 0 && ac_staggered_start_call_pending == false)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "cur_ac_mode is 0 and ac_staggered_start_call_pending is false");
|
||||
this->time_since_ac_staggered_start_call = millis();
|
||||
this->ac_staggered_start_call_pending = true;
|
||||
ESP_LOGI("ISEDisplay", "AC staggered start call pending set to true and call time set to current time");
|
||||
}
|
||||
else
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "AC Staggered start call pending is true or cur_ac_mode is not 0");
|
||||
this->climateCard_york->setState(cur_ac_mode, cur_ac_fan_speed, york_temp);
|
||||
ESP_LOGI("ISEDisplay", "York AC IR code sent");
|
||||
// wondering if there is a case where the ac_staggered_start_call_pending is not set to false after setState have been called
|
||||
}
|
||||
}
|
||||
// get value of mode fanspeed and temp and print compare to store value
|
||||
ESP_LOGI("ISEDisplay", "AC IR code sent");
|
||||
ESP_LOGI("ISEDisplay", "NOTE: ac_staggered_start_call_pending is %d", ac_staggered_start_call_pending);
|
||||
if (ac_staggered_start_call_pending == true)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "thus the york ac will not be set to current mode if ac_staggered_start_call_pending is true will be trigger after 1 sec");
|
||||
}
|
||||
ESP_LOGI("ISEDisplay", "Daikin fan speed: %d, Daikin mode: %d, Daikin temperature: %d", cur_ac_fan_speed, cur_ac_mode, cur_ac_temperature);
|
||||
ESP_LOGI("ISEDisplay", "York fan speed: %d, York mode: %d, York temperature: %d", cur_ac_fan_speed, cur_ac_mode, york_temp);
|
||||
ESP_LOGI("ISEDisplay", "getting value of mode, fanspeed and temp from climate card");
|
||||
|
|
@ -654,7 +596,6 @@ void ISEDisplay::toggleLightGroupState()
|
|||
{
|
||||
setLightLevel(i, state ? 0 : 3);
|
||||
}
|
||||
// for loop might slow it down maybe? idk
|
||||
}
|
||||
void ISEDisplay::setLightGroupState(uint8_t level)
|
||||
{
|
||||
|
|
@ -681,14 +622,6 @@ void ISEDisplay::toggleLightGroupStateStandby()
|
|||
void ISEDisplay::togglePM()
|
||||
{
|
||||
// Get the current group state
|
||||
bool ispmlock = this->pm_lock_state;
|
||||
if (ispmlock)
|
||||
{
|
||||
ESP_LOGI("ISEDisplay", "PM lock is on, do nothing");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool state = strcmp(pm_switch->getValue(), "on") == 0;
|
||||
ESP_LOGI("ISEDisplay", "Current PM state: %d", state);
|
||||
// Toggle the state
|
||||
|
|
@ -696,7 +629,6 @@ void ISEDisplay::togglePM()
|
|||
ESP_LOGI("ISEDisplay", "New PM state: %d", state);
|
||||
// updateAirPurifierState();
|
||||
}
|
||||
}
|
||||
void ISEDisplay::toggleACLock()
|
||||
{
|
||||
// Get the current group state
|
||||
|
|
@ -767,71 +699,23 @@ void ISEDisplay::changeUserACmode()
|
|||
// uint8_t mode = this->climateCard_daikin->getMode();
|
||||
ESP_LOGI("ISEDisplay", "Current actual AC mode: %d", mode);
|
||||
// Toggle the state
|
||||
// user mode alternate between 1, 2, and 3
|
||||
// user mode alternate between 1 and 2
|
||||
ESP_LOGI("ISEDisplay", "User mode BEFORE: %d", user_mode);
|
||||
// user_mode = (user_mode) % 3 + 1; //loop from 1 to 2 to 3 then back to 1
|
||||
// Cycle user_mode from 2 to 1 to 3
|
||||
switch (user_mode)
|
||||
{
|
||||
case 2: // If current mode is cool (2), change to fan (1)
|
||||
user_mode = 1;
|
||||
break;
|
||||
case 1: // If current mode is fan (1), change to dry (3)
|
||||
user_mode = 3;
|
||||
break;
|
||||
case 3: // If current mode is dry (3), change to cool (2)
|
||||
default:
|
||||
user_mode = 2;
|
||||
break;
|
||||
}
|
||||
user_mode = (user_mode) % 2 + 1;
|
||||
ESP_LOGI("ISEDisplay", "User mode AFTER: %d", user_mode);
|
||||
if (mode != 0)
|
||||
{
|
||||
// update mode to new mode
|
||||
mode = user_mode;
|
||||
ESP_LOGI("ISEDisplay", "change actual AC mode to user mode: %d", mode);
|
||||
setACstate(this->ac_fan_speed, mode, this->ac_temperature);
|
||||
}
|
||||
else
|
||||
{ // ie mode is off
|
||||
// do nothing as the state is keep in user_mode
|
||||
// the mode will change to user_mode when turn on by toggleAC()
|
||||
ESP_LOGI("ISEDisplay", "update just user mode display; user mode: %d , actual mode: %d", user_mode, mode);
|
||||
updateuserACmode();
|
||||
ESP_LOGI("ISEDisplay", "do nothing; user mode: %d , actual mode: %d", user_mode, mode);
|
||||
}
|
||||
|
||||
// updateuserACmode(); // call to update mode part of the display seperately
|
||||
}
|
||||
void ISEDisplay::changePMfanspeed()
|
||||
{
|
||||
// Get the current group state
|
||||
uint8_t fan_speed = this->pm_fan_speed;
|
||||
uint8_t new_fan_speed = fan_speed;
|
||||
// uint8_t fan_speed = this->climateCard_york->getFanSpeed();
|
||||
ESP_LOGI("ISEDisplay", "Current PM fan speed: %d", fan_speed);
|
||||
// Toggle the state
|
||||
// fan_speed have 3 state high mid low switch between them
|
||||
switch (fan_speed)
|
||||
{
|
||||
case PM_FAN_SPEED_LOW:
|
||||
new_fan_speed = PM_FAN_SPEED_MID;
|
||||
break;
|
||||
case PM_FAN_SPEED_MID:
|
||||
new_fan_speed = PM_FAN_SPEED_HIGH;
|
||||
break;
|
||||
case PM_FAN_SPEED_HIGH:
|
||||
new_fan_speed = PM_FAN_SPEED_LOW;
|
||||
break;
|
||||
default:
|
||||
new_fan_speed = PM_FAN_SPEED_HIGH;
|
||||
break;
|
||||
}
|
||||
ESP_LOGI("ISEDisplay", "New PM fan speed: %d", new_fan_speed);
|
||||
this->pm_fan_speed = new_fan_speed;
|
||||
ESP_LOGI("ISEDisplay", "Setting PM fan speed in memory to: %d", this->pm_fan_speed);
|
||||
remote_pm_fan_speed->setIntValue(this->pm_fan_speed);
|
||||
ESP_LOGI("ISEDisplay", "Setting PM fan speed in remote var to: %d", remote_pm_fan_speed->getValueAsInt());
|
||||
updateAirPurifierState();
|
||||
updateuserACmode(); // call to update mode part of the display seperately
|
||||
}
|
||||
void ISEDisplay::setLightLevel(uint8_t row, uint8_t level)
|
||||
{
|
||||
|
|
@ -956,10 +840,64 @@ void ISEDisplay::updateLightGroupStatePageStandby()
|
|||
void ISEDisplay::updateLightGroupStatePageDashboard()
|
||||
{
|
||||
// Calculate the state
|
||||
bool state_master = calculateLightGroupState();
|
||||
uint8_t firstState = getLightLevel(1);
|
||||
bool allMatch = true;
|
||||
bool state = calculateLightGroupState();
|
||||
// Send the state to the display
|
||||
if (!this->takeSerialMutex())
|
||||
return;
|
||||
|
||||
this->displayAdapter->print("light_m_sw.pic=");
|
||||
this->displayAdapter->print(state ? COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_ON : COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_OFF);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_m_sw.pic2=");
|
||||
this->displayAdapter->print(state ? COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_ON_PRESSED : COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
|
||||
for (uint8_t i = 1; i <= 4; i++)
|
||||
{
|
||||
u_int8_t state = getLightLevel(i);
|
||||
updateLightSwitch();
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_0);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 1:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_1);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 2:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_2);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 3:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_3);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this->giveSerialMutex();
|
||||
}
|
||||
void ISEDisplay::updateLightSwitch()
|
||||
{
|
||||
// Calculate the state
|
||||
bool state_master = calculateLightGroupState();
|
||||
// Send the state to the display
|
||||
if (!this->takeSerialMutex())
|
||||
return;
|
||||
|
|
@ -972,32 +910,16 @@ void ISEDisplay::updateLightGroupStatePageDashboard()
|
|||
this->displayAdapter->print(state_master ? COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_ON_PRESSED : COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
|
||||
// this->displayAdapter->print("light_m_sw.pic=");
|
||||
// this->displayAdapter->print(state ? COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_ON : COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_OFF);
|
||||
// this->sendStopBytes();
|
||||
this->giveSerialMutex();
|
||||
|
||||
// this->displayAdapter->print("light_m_sw.pic2=");
|
||||
// this->displayAdapter->print(state ? COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_ON_PRESSED : COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_OFF_PRESSED);
|
||||
// this->sendStopBytes();
|
||||
// check state and set for each individual light row
|
||||
// if state is 0 set to off and other(1,2,3) to on
|
||||
|
||||
for (uint8_t i = 1; i <= 4; i++)
|
||||
{
|
||||
u_int8_t state = getLightLevel(i);
|
||||
|
||||
if (i > 1 && state != firstState)
|
||||
if (state == 0)
|
||||
{
|
||||
allMatch = false;
|
||||
}
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_0);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
|
|
@ -1009,119 +931,22 @@ void ISEDisplay::updateLightGroupStatePageDashboard()
|
|||
this->displayAdapter->print("_sw.pic2=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 1:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_1);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON_PRESSED);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 2:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_2);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON_PRESSED);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 3:
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print(".pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_ROW_LEVEL_3);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON_PRESSED);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (allMatch)
|
||||
{
|
||||
// All states match, change the master light level which is the firststate
|
||||
// use switch case
|
||||
switch (firstState)
|
||||
{
|
||||
case 0:
|
||||
this->displayAdapter->print("master_light.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_LEVEL_0);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 1:
|
||||
this->displayAdapter->print("master_light.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_LEVEL_1);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 2:
|
||||
this->displayAdapter->print("master_light.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_LEVEL_2);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
case 3:
|
||||
this->displayAdapter->print("master_light.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_LEVEL_3);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
default:
|
||||
this->displayAdapter->print("master_light.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_LEVEL_D);
|
||||
this->sendStopBytes();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this->displayAdapter->print("master_light.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_LEVEL_D);
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("light_row");
|
||||
this->displayAdapter->print(i);
|
||||
this->displayAdapter->print("_sw.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_ON_PRESSED);
|
||||
this->sendStopBytes();
|
||||
}
|
||||
|
||||
this->giveSerialMutex();
|
||||
}
|
||||
void ISEDisplay::updateLightSwitch()
|
||||
{
|
||||
// DEPRECATED
|
||||
// Calculate the state
|
||||
// not in use due to worse performance
|
||||
|
||||
// check state and set for each individual light row
|
||||
// if state is 0 set to off and other(1,2,3) to on
|
||||
}
|
||||
bool ISEDisplay::calculateLightGroupState()
|
||||
{
|
||||
|
|
@ -1171,50 +996,13 @@ void ISEDisplay::toggleSystem()
|
|||
togglePM();
|
||||
}
|
||||
}
|
||||
void ISEDisplay::allToggleStandby()
|
||||
{
|
||||
bool lightState = calculateLightGroupState();
|
||||
bool pmState = strcmp(pm_switch->getValue(), "on") == 0;
|
||||
if (ac_mode != 0)
|
||||
{
|
||||
setACstate(0, ac_fan_speed, ac_temperature);
|
||||
}
|
||||
else{
|
||||
setACstate(2, ac_fan_speed, ac_temperature);
|
||||
}
|
||||
if (lightState)
|
||||
{
|
||||
setLightGroupState(0);
|
||||
}
|
||||
else
|
||||
void ISEDisplay::allOn()
|
||||
{
|
||||
setLightGroupState(3);
|
||||
}
|
||||
if (pmState)
|
||||
{
|
||||
setPMstate(false, pm_fan_speed);
|
||||
}
|
||||
else
|
||||
{
|
||||
setPMstate(true, pm_fan_speed);
|
||||
setACstate(2, ac_fan_speed, ac_temperature);
|
||||
}
|
||||
|
||||
}
|
||||
void ISEDisplay::updateAllStandbyToggle()
|
||||
{
|
||||
bool state = calculateAllState();
|
||||
if (!this->takeSerialMutex())
|
||||
return;
|
||||
this->displayAdapter->print("s_open_all.pic=");
|
||||
this->displayAdapter->print(state ? COMPONENT_STANDBY_PIC_OPEN_ALL_TOGGLE_ON : COMPONENT_STANDBY_PIC_OPEN_ALL_TOGGLE_OFF);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("s_open_all.pic2=");
|
||||
this->displayAdapter->print(state ? COMPONENT_STANDBY_PIC_OPEN_ALL_TOGGLE_ON_PRESSED : COMPONENT_STANDBY_PIC_OPEN_ALL_TOGGLE_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->giveSerialMutex();
|
||||
}
|
||||
void ISEDisplay::toggleLightIndividual(uint8_t row)
|
||||
{
|
||||
// Get the current state
|
||||
|
|
@ -1275,8 +1063,7 @@ void ISEDisplay::updateAirPurifierState()
|
|||
bool state = strcmp(pm_switch->getValue(), "on") == 0;
|
||||
this->pm_lock_state = strcmp(pm_lock->getValue(), "on") == 0;
|
||||
ESP_LOGI("ISEDisplay", "Updating air purifier state to: %d", state);
|
||||
pm_fan_speed = this->pm_fan_speed;
|
||||
ESP_LOGI("ISEDisplay", "Updating air purifier fan speed to: %d", pm_fan_speed);
|
||||
pm_fan_speed = (int)atof(remote_pm_fan_speed->getValue());
|
||||
// Send the state to the display
|
||||
if (!this->takeSerialMutex())
|
||||
return;
|
||||
|
|
@ -1293,86 +1080,6 @@ void ISEDisplay::updateAirPurifierState()
|
|||
this->displayAdapter->print(this->pm_lock_state ? COMPONENT_DASHBOARD_PIC_LOCK : COMPONENT_DASHBOARD_PIC_UNLOCK);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_mode.pic=");
|
||||
this->displayAdapter->print(state ? COMPONENT_DASHBOARD_PIC_AC_MODE_FAN_ON : COMPONENT_DASHBOARD_PIC_AC_MODE_FAN_OFF);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_mode.pic2=");
|
||||
this->displayAdapter->print(state ? COMPONENT_DASHBOARD_PIC_AC_MODE_FAN_ON_PRESSED : COMPONENT_DASHBOARD_PIC_AC_MODE_FAN_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
|
||||
switch (pm_fan_speed)
|
||||
{
|
||||
case PM_FAN_SPEED_LOW:
|
||||
if (state)
|
||||
{ // state is on
|
||||
this->displayAdapter->print("pm_speed.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_LOW_ON);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_speed.pic2=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_LOW_ON_PRESSED);
|
||||
this->sendStopBytes();
|
||||
}
|
||||
else
|
||||
{ // state is off
|
||||
this->displayAdapter->print("pm_speed.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_LOW_OFF);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_speed.pic2=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_LOW_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
}
|
||||
break;
|
||||
case PM_FAN_SPEED_MID:
|
||||
if (state)
|
||||
{ // state is on
|
||||
this->displayAdapter->print("pm_speed.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_MID_ON);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_speed.pic2=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_MID_ON_PRESSED);
|
||||
this->sendStopBytes();
|
||||
}
|
||||
else
|
||||
{ // state is off
|
||||
this->displayAdapter->print("pm_speed.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_MID_OFF);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_speed.pic2=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_MID_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
}
|
||||
break;
|
||||
case PM_FAN_SPEED_HIGH:
|
||||
if (state)
|
||||
{ // state is on
|
||||
this->displayAdapter->print("pm_speed.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_HIGH_ON);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_speed.pic2=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_HIGH_ON_PRESSED);
|
||||
this->sendStopBytes();
|
||||
}
|
||||
else
|
||||
{ // state is off
|
||||
this->displayAdapter->print("pm_speed.pic=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_HIGH_OFF);
|
||||
this->sendStopBytes();
|
||||
|
||||
this->displayAdapter->print("pm_speed.pic2=");
|
||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_AC_FAN_HIGH_OFF_PRESSED);
|
||||
this->sendStopBytes();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// this->displayAdapter->print("pm_speed.val=");
|
||||
// this->displayAdapter->print(pm_fan_speed);
|
||||
// // this->displayAdapter->print("\"");
|
||||
|
|
@ -1395,8 +1102,6 @@ void ISEDisplay::handleACChange(uint8_t mode, uint8_t fan_speed, uint8_t tempera
|
|||
{
|
||||
ESP_LOGI("ISEDisplay", "AC state changed: mode: %d, fan speed: %d, temperature: %d", mode, fan_speed, temperature);
|
||||
updateACState();
|
||||
updateSystemtoggle();
|
||||
updateAllStandbyToggle();
|
||||
}
|
||||
void ISEDisplay::updateuserACmode()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ class ISEDisplay : public ESPMegaDisplay {
|
|||
void updateAirPurifierState();
|
||||
void updateAirPurifierStateStandby();
|
||||
void updateSystemtoggle();
|
||||
void updateAllStandbyToggle();
|
||||
void updateDateTimeText(rtctime_t time);
|
||||
void updateWeather(char *weather_string);
|
||||
void updateTempOutside(float temp_outside);
|
||||
|
|
@ -70,8 +69,6 @@ class ISEDisplay : public ESPMegaDisplay {
|
|||
uint8_t outputCallbackHandle;
|
||||
uint8_t climateCallbackHandle;
|
||||
uint32_t time_since_last_ac_change;
|
||||
uint32_t time_since_ac_staggered_start_call;
|
||||
bool ac_staggered_start_call_pending;
|
||||
uint8_t user_mode;
|
||||
uint8_t ac_lock_state;
|
||||
uint8_t pm_lock_state;
|
||||
|
|
@ -98,7 +95,7 @@ class ISEDisplay : public ESPMegaDisplay {
|
|||
void setAClockstate(bool is_ac_lock_on);
|
||||
void toggleACLock();
|
||||
void togglePMLock();
|
||||
void allToggleStandby();
|
||||
void allOn();
|
||||
void toggleLightGroupState();
|
||||
void toggleLightGroupStateStandby();
|
||||
void toggleLightIndividual(uint8_t row);
|
||||
|
|
@ -108,6 +105,5 @@ class ISEDisplay : public ESPMegaDisplay {
|
|||
void setLightGroupState(uint8_t level);
|
||||
void toggleACStandby();
|
||||
void changeUserACmode();
|
||||
void changePMfanspeed();
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -66,10 +66,6 @@ lights have 4 states
|
|||
#define MOTION_FRONT 8
|
||||
#define MOTION_REAR 9
|
||||
|
||||
//PM fanspeed setting
|
||||
#define PM_FAN_SPEED_LOW 3
|
||||
#define PM_FAN_SPEED_MID 10
|
||||
#define PM_FAN_SPEED_HIGH 18
|
||||
|
||||
//
|
||||
#define DISPLAY_TIMEOUT 5*60*1000 // 5 minutes
|
||||
|
|
|
|||
191
src/main.cpp
191
src/main.cpp
|
|
@ -1,32 +1,20 @@
|
|||
#include <main.hpp>
|
||||
|
||||
|
||||
/***********************************************
|
||||
* Begin Configuration *
|
||||
***********************************************/
|
||||
|
||||
// Analog Card & Current Transformer Configuration
|
||||
#ifdef ANALOG_ENABLE
|
||||
bool analogCardAvailable = false;
|
||||
AnalogCard analogCard = AnalogCard();
|
||||
float voltage = CT_RMS_VOLTAGE;
|
||||
#define CT_INTERVAL 5000
|
||||
CurrentTransformerCard ct1 = CurrentTransformerCard(&analogCard, 0, &voltage, &adc2current, CT_INTERVAL);
|
||||
CurrentTransformerCard ct2 = CurrentTransformerCard(&analogCard, 1, &voltage, &adc2current, CT_INTERVAL);
|
||||
CurrentTransformerCard ct3 = CurrentTransformerCard(&analogCard, 2, &voltage, &adc2current, CT_INTERVAL);
|
||||
CurrentTransformerCard ct4 = CurrentTransformerCard(&analogCard, 3, &voltage, &adc2current, CT_INTERVAL);
|
||||
CurrentTransformerCard ct5 = CurrentTransformerCard(&analogCard, 6, &voltage, &adc2current, CT_INTERVAL);
|
||||
CurrentTransformerCard ct6 = CurrentTransformerCard(&analogCard, 7, &voltage, &adc2current, CT_INTERVAL);
|
||||
float adc2current(uint16_t adc_val)
|
||||
{
|
||||
// float voltage = adc_val * 0.0007-0.1994;
|
||||
float adc_voltage = adc_val * 0.0007;
|
||||
// 0-10V Output with 30A Current Rating CT
|
||||
float ct_current = adc_voltage / 10.0 * 30.0;
|
||||
return ct_current;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// bool analogCardAvailable = false;
|
||||
// AnalogCard analogCard = AnalogCard();
|
||||
// float voltage = CT_RMS_VOLTAGE;
|
||||
// CurrentTransformerCard ct1 = CurrentTransformerCard(&analogCard, 0, &voltage, &adc2current, 5000);
|
||||
// CurrentTransformerCard ct2 = CurrentTransformerCard(&analogCard, 1, &voltage, &adc2current, 5000);
|
||||
// CurrentTransformerCard ct3 = CurrentTransformerCard(&analogCard, 2, &voltage, &adc2current, 5000);
|
||||
// CurrentTransformerCard ct4 = CurrentTransformerCard(&analogCard, 3, &voltage, &adc2current, 5000);
|
||||
// CurrentTransformerCard ct5 = CurrentTransformerCard(&analogCard, 4, &voltage, &adc2current, 5000);
|
||||
// CurrentTransformerCard ct6 = CurrentTransformerCard(&analogCard, 5, &voltage, &adc2current, 5000);
|
||||
|
||||
// Remote Variables
|
||||
RemoteVariable pm25_in = RemoteVariable();
|
||||
|
|
@ -38,7 +26,11 @@ RemoteVariable pm_fan_speed = RemoteVariable();
|
|||
RemoteVariable pm_lock = RemoteVariable();
|
||||
RemoteVariable ac_lock = RemoteVariable();
|
||||
|
||||
float adc2current(uint16_t adc_val) {
|
||||
return adc_val * 1.0;
|
||||
}
|
||||
|
||||
#define CT_INTERVAL 5000
|
||||
|
||||
// Light Configuration
|
||||
uint8_t row = 4;
|
||||
|
|
@ -50,8 +42,8 @@ const uint8_t light_array[4][2] = {
|
|||
{LIGHT_ROW4_COLUMN1, LIGHT_ROW4_COLUMN2}};
|
||||
|
||||
// Air Conditioner Configuration
|
||||
const char *mode_names_daikin[] = {"off", "fan_only", "cool", "dry"};
|
||||
const char *mode_names_york[] = {"off", "fan_only", "cool"};
|
||||
const char *mode_names_daikin[] = {"off", "cool", "fan_only", "dry"};
|
||||
const char *mode_names_york[] = {"off", "cool", "fan_only"};
|
||||
const char *fan_speed_names[] = {"auto", "high", "medium", "low"};
|
||||
|
||||
AirConditioner ac_daikin = {
|
||||
|
|
@ -78,9 +70,6 @@ AirConditioner ac_york = {
|
|||
ESPMegaPRO espmega = ESPMegaPRO();
|
||||
ISEDisplay iseDisplay = ISEDisplay(&iseDisplayAdapter, &light_array[0][0], row, column);
|
||||
|
||||
ESPMegaDisplayOTA iseDisplayOTA = ESPMegaDisplayOTA();
|
||||
ESPMegaDisplayOTA internalDisplayOTA = ESPMegaDisplayOTA();
|
||||
|
||||
ClimateCard climateCard_daikin = ClimateCard(AIR_CONDITIONER_DAIKIN_IR_PIN, ac_daikin,
|
||||
AIR_CONDITIONER_SENSOR_TYPE, AIR_CONDITIONER_SENSOR_PIN,
|
||||
AIR_CONDITIONER_RMT_CHANNEL0);
|
||||
|
|
@ -130,21 +119,10 @@ void setup()
|
|||
espmega.inputs.loop();
|
||||
|
||||
//set debounce time to 200 for pin 0-7
|
||||
for (uint16_t i = 0; i < 8; i++)
|
||||
{
|
||||
for (uint16_t i = 0; i < 8; i++){
|
||||
espmega.inputs.setDebounceTime(i,200);
|
||||
}
|
||||
|
||||
// if (clear_fram)
|
||||
// {
|
||||
// Serial.print("boot_state.txt=\"Factory Resetting . . .\"");
|
||||
// sendStopBytes();
|
||||
// for (uint16_t i = 0; i < 32768; i++)
|
||||
// {
|
||||
// espmega.fram.write8(i, 0);
|
||||
// }
|
||||
// esp_restart();
|
||||
// }
|
||||
// // ------------ End Factory Reset Routine ------------
|
||||
|
||||
|
||||
|
|
@ -187,28 +165,29 @@ void setup()
|
|||
climateCard_daikin.setFRAMAutoSave(true);
|
||||
espmega.display->bindClimateCard(&climateCard_daikin);
|
||||
|
||||
// Current Transformers
|
||||
#ifdef ANALOG_ENABLE
|
||||
espmega.installCard(4, &analogCard);
|
||||
espmega.installCard(5, &ct1);
|
||||
ct1.bindFRAM(&espmega.fram, 6000);
|
||||
espmega.iot->registerCard(5);
|
||||
espmega.installCard(6, &ct2);
|
||||
ct2.bindFRAM(&espmega.fram, 6100);
|
||||
espmega.iot->registerCard(6);
|
||||
espmega.installCard(7, &ct3);
|
||||
ct3.bindFRAM(&espmega.fram, 6200);
|
||||
espmega.iot->registerCard(7);
|
||||
espmega.installCard(8, &ct4);
|
||||
ct4.bindFRAM(&espmega.fram, 6300);
|
||||
espmega.iot->registerCard(8);
|
||||
espmega.installCard(9, &ct5);
|
||||
ct5.bindFRAM(&espmega.fram, 6400);
|
||||
espmega.iot->registerCard(9);
|
||||
espmega.installCard(10, &ct6);
|
||||
ct6.bindFRAM(&espmega.fram, 6500);
|
||||
espmega.iot->registerCard(10);
|
||||
#endif
|
||||
// // Current Transformers
|
||||
// espmega.installCard(4, &analogCard);
|
||||
|
||||
// espmega.installCard(5, &ct1);
|
||||
// ct1.bindFRAM(&espmega.fram, 6000);
|
||||
// espmega.iot->registerCard(5);
|
||||
|
||||
// espmega.installCard(6, &ct2);
|
||||
// ct2.bindFRAM(&espmega.fram, 6100);
|
||||
// espmega.iot->registerCard(6);
|
||||
|
||||
// espmega.installCard(7, &ct3);
|
||||
// ct3.bindFRAM(&espmega.fram, 6200);
|
||||
// espmega.iot->registerCard(7);
|
||||
// espmega.installCard(8, &ct4);
|
||||
// ct4.bindFRAM(&espmega.fram, 6300);
|
||||
// espmega.iot->registerCard(8);
|
||||
// espmega.installCard(9, &ct5);
|
||||
// ct5.bindFRAM(&espmega.fram, 6400);
|
||||
// espmega.iot->registerCard(9);
|
||||
// espmega.installCard(10, &ct6);
|
||||
// ct6.bindFRAM(&espmega.fram, 6500);
|
||||
// espmega.iot->registerCard(10);
|
||||
|
||||
// ------------ Climate Cards Initialization Routine ------------
|
||||
ESP_LOGD("ISE OS", "Setting up climate cards");
|
||||
|
|
@ -224,48 +203,47 @@ void setup()
|
|||
|
||||
// York Climate Card
|
||||
ESP_LOGD("ISE OS", "Installing york climate card");
|
||||
espmega.installCard(3, &climateCard_york);
|
||||
espmega.installCard(10, &climateCard_york);
|
||||
climateCard_york.bindFRAM(&espmega.fram, 5005);
|
||||
climateCard_york.loadStateFromFRAM();
|
||||
climateCard_york.setFRAMAutoSave(true);
|
||||
// ------------ End Climate Cards Initialization Routine ------------
|
||||
|
||||
// ------------ Current Transformer Cards Initialization Routine ------------
|
||||
#ifdef ANALOG_ENABLE
|
||||
ESP_LOGD("ISE OS", "Installing current transformer cards");
|
||||
//ESP_LOGD("ISE OS", "Installing current transformer cards");
|
||||
// First try to install the analog card
|
||||
analogCardAvailable = espmega.installCard(4, &analogCard);
|
||||
//analogCardAvailable = espmega.installCard(4, &analogCard);
|
||||
// If the analog card is available, install the current transformer cards
|
||||
// If the analog card is not available, current transformer cards will not be installed
|
||||
// Unless CT_FORCE_ENABLE is set to true
|
||||
// This is to prevent soft locking the device when the device tries to read from an ADC channel that does not exist
|
||||
if (analogCardAvailable || CT_FORCE_ENABLE)
|
||||
{
|
||||
ESP_LOGV("ISE OS", "Analog card available, installing current transformer cards");
|
||||
espmega.installCard(5, &ct1);
|
||||
ct1.bindFRAM(&espmega.fram, 5010);
|
||||
espmega.installCard(6, &ct2);
|
||||
ct2.bindFRAM(&espmega.fram, 5020);
|
||||
espmega.installCard(7, &ct3);
|
||||
ct3.bindFRAM(&espmega.fram, 5030);
|
||||
espmega.installCard(8, &ct4);
|
||||
ct4.bindFRAM(&espmega.fram, 5040);
|
||||
espmega.installCard(9, &ct5);
|
||||
ct5.bindFRAM(&espmega.fram, 5050);
|
||||
espmega.installCard(10, &ct5);
|
||||
ct6.bindFRAM(&espmega.fram, 5060);
|
||||
espmega.iot->registerCard(5);
|
||||
espmega.iot->registerCard(6);
|
||||
espmega.iot->registerCard(7);
|
||||
espmega.iot->registerCard(8);
|
||||
espmega.iot->registerCard(9);
|
||||
espmega.iot->registerCard(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
ESP_LOGE("ISE OS", "Analog card not available, current transformer cards cannot and will not be installed.");
|
||||
}
|
||||
#endif
|
||||
// if (analogCardAvailable || CT_FORCE_ENABLE)
|
||||
// {
|
||||
// ESP_LOGV("ISE OS", "Analog card available, installing current transformer cards");
|
||||
// // espmega.installCard(5, &ct1);
|
||||
// // ct1.bindFRAM(&espmega.fram, 5010);
|
||||
// // espmega.installCard(6, &ct2);
|
||||
// // ct2.bindFRAM(&espmega.fram, 5020);
|
||||
// // espmega.installCard(7, &ct3);
|
||||
// // ct3.bindFRAM(&espmega.fram, 5030);
|
||||
// // espmega.installCard(8, &ct4);
|
||||
// // ct4.bindFRAM(&espmega.fram, 5040);
|
||||
// // espmega.installCard(9, &ct5);
|
||||
// // ct5.bindFRAM(&espmega.fram, 5050);
|
||||
// // espmega.installCard(10, &ct5);
|
||||
// // ct6.bindFRAM(&espmega.fram, 5060);
|
||||
// espmega.iot->registerCard(5);
|
||||
// espmega.iot->registerCard(6);
|
||||
// espmega.iot->registerCard(7);
|
||||
// espmega.iot->registerCard(8);
|
||||
// espmega.iot->registerCard(9);
|
||||
// espmega.iot->registerCard(10);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// ESP_LOGE("ISE OS", "Analog card not available, current transformer cards cannot and will not be installed.");
|
||||
// }
|
||||
//ESP_LOGD("ISE OS", "Registering Current Transformer Cards with IoT Module")
|
||||
// ------------ End Current Transformer Cards Initialization Routine ------------
|
||||
|
||||
|
||||
|
|
@ -307,7 +285,7 @@ void setup()
|
|||
espmega.iot->registerCard(0); // Register the Input Card
|
||||
espmega.iot->registerCard(1); // Register the Output Card
|
||||
espmega.iot->registerCard(2); // Register the Climate Card Daikin
|
||||
espmega.iot->registerCard(3); // Register the Climate Card York
|
||||
espmega.iot->registerCard(10); // Register the Climate Card York
|
||||
// ------------ End IoT Card Registration Routine ------------
|
||||
|
||||
|
||||
|
|
@ -315,8 +293,6 @@ void setup()
|
|||
auto bindedGetTime = std::bind(&ESPMegaPRO::getTime, &espmega);
|
||||
iseDisplay.begin(&espmega.inputs, &espmega.outputs, &climateCard_daikin, &climateCard_york, &pm_switch, &pm_fan_speed, &pm_lock, &ac_lock, espmega.iot);
|
||||
espmega.iot->registerRelativeMqttCallback(&handleMqttMessage);
|
||||
iseDisplayOTA.begin("/isedisp", &iseDisplay, espmega.webServer);
|
||||
internalDisplayOTA.begin("/intdisp", espmega.display, espmega.webServer);
|
||||
iseDisplay.registerPageChangeCallback(&handlePageChange);
|
||||
// ------------ End External Display Initialization Routine ------------
|
||||
}
|
||||
|
|
@ -345,8 +321,6 @@ void pmswitchupdatedisplay(char *value)
|
|||
{
|
||||
ESP_LOGI("PM switch", "getting PM switch state from MQTT: %d", pm_switch.getValue());
|
||||
iseDisplay.updateAirPurifierState();
|
||||
iseDisplay.updateSystemtoggle();
|
||||
iseDisplay.updateAllStandbyToggle();
|
||||
ESP_LOGI("PM switch", "toggling PM switch state from: %d to %d", pm_switch.getValue(), !pm_switch.getValue());
|
||||
}
|
||||
void pmlockupdatedisplay(char *value)
|
||||
|
|
@ -376,28 +350,6 @@ void loop()
|
|||
iseDisplay.updateDateTimeText(time);
|
||||
last_time_updated = millis();
|
||||
}
|
||||
#ifdef ANALOG_ENABLE
|
||||
// Send out analog Data every 6 seconds
|
||||
static uint32_t last_analog_sent = 0;
|
||||
if (millis() - last_analog_sent > 6000)
|
||||
{
|
||||
espmega.iot->publish("/debug/up", "1");
|
||||
if (analogCardAvailable || CT_FORCE_ENABLE)
|
||||
{
|
||||
espmega.iot->publish("/debug/log", "Sending Analog Card Data");
|
||||
char topic_buffer[50];
|
||||
char payload_buffer[50];
|
||||
// Publish ADC Pin 0-7
|
||||
for (uint8_t i = 0; i < 8; i++)
|
||||
{
|
||||
sprintf(topic_buffer, "/debug/analog/%d", i);
|
||||
sprintf(payload_buffer, "%d", analogCard.analogRead(i));
|
||||
espmega.iot->publish(topic_buffer, payload_buffer);
|
||||
}
|
||||
}
|
||||
last_analog_sent = millis();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void on_pin_change(uint8_t pin, uint8_t value)
|
||||
|
|
@ -534,7 +486,6 @@ void handlePageChange(uint8_t page)
|
|||
case PAGE_STANDBY:
|
||||
iseDisplay.updateLightGroupStatePageStandby();
|
||||
iseDisplay.updateAirPurifierStateStandby();
|
||||
iseDisplay.updateAllStandbyToggle();
|
||||
break;
|
||||
case PAGE_DASHBOARD:
|
||||
iseDisplay.updateLightGroupStatePageDashboard();
|
||||
|
|
|
|||
21
src/main.hpp
21
src/main.hpp
|
|
@ -5,7 +5,6 @@ SET_LOOP_TASK_STACK_SIZE(32*1024);
|
|||
#include <ir_codes_daikin.hpp>
|
||||
#include <ir_codes_york.hpp>
|
||||
#include <CurrentTransformerCard.hpp>
|
||||
#include <ESPMegaDisplayOTA.hpp>
|
||||
|
||||
|
||||
|
||||
|
|
@ -26,16 +25,16 @@ SET_LOOP_TASK_STACK_SIZE(32*1024);
|
|||
#define AIR_CONDITIONER_YORK_IR_PIN 15
|
||||
#define AIR_CONDITIONER_RMT_CHANNEL0 RMT_CHANNEL_0
|
||||
#define AIR_CONDITIONER_RMT_CHANNEL1 RMT_CHANNEL_1
|
||||
// CT Configuration
|
||||
#define ANALOG_ENABLE
|
||||
#define CT_FORCE_ENABLE true
|
||||
#define CT_RMS_VOLTAGE 220.0
|
||||
#define CT_PIN_LIGHT_PHASE1 0
|
||||
#define CT_PIN_LIGHT_PHASE2 1
|
||||
#define CT_PIN_SOCKET 2
|
||||
#define CT_PIN_AC_PHASE1 3
|
||||
#define CT_PIN_AC_PHASE2 4
|
||||
#define CT_PIN_AC_PHASE3 5
|
||||
|
||||
// // CT Configuration
|
||||
// #define CT_FORCE_ENABLE false
|
||||
// #define CT_RMS_VOLTAGE 1.0
|
||||
// #define CT_PIN_LIGHT_PHASE1 0
|
||||
// #define CT_PIN_LIGHT_PHASE2 1
|
||||
// #define CT_PIN_SOCKET 2
|
||||
// #define CT_PIN_AC_PHASE1 3
|
||||
// #define CT_PIN_AC_PHASE2 4
|
||||
// #define CT_PIN_AC_PHASE3 5
|
||||
|
||||
void handleMqttMessage(char *topic, char *payload);
|
||||
void subscribeToMqttTopics();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue