adjust IR behaviour
This commit is contained in:
parent
6a15d99e52
commit
d4604d28c3
4 changed files with 253 additions and 133 deletions
|
|
@ -6,8 +6,9 @@ ISEDisplay::ISEDisplay(HardwareSerial *adapter, const uint8_t *light_array, uint
|
||||||
this->column = column;
|
this->column = column;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCard, ClimateCard *climateCard_daikin, ClimateCard *climateCard_york, RemoteVariable *pm_switch, RemoteVariable *pm_fan_speed, RemoteVariable *ac_lock, RemoteVariable *pm_lock)
|
void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCard, ClimateCard *climateCard_daikin, ClimateCard *climateCard_york, RemoteVariable *pm_switch, RemoteVariable *pm_fan_speed, RemoteVariable *ac_lock, RemoteVariable *pm_lock, ESPMegaIoT *iot)
|
||||||
{
|
{
|
||||||
|
this->iot = iot;
|
||||||
this->inputCard = inputCard;
|
this->inputCard = inputCard;
|
||||||
this->outputCard = outputCard;
|
this->outputCard = outputCard;
|
||||||
this->climateCard_daikin = climateCard_daikin;
|
this->climateCard_daikin = climateCard_daikin;
|
||||||
|
|
@ -53,7 +54,6 @@ void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCar
|
||||||
{
|
{
|
||||||
setACstate(ac_fan_speed, ac_mode, ac_temperature); // default to off with temp 25 and fan on Auto
|
setACstate(ac_fan_speed, ac_mode, ac_temperature); // default to off with temp 25 and fan on Auto
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
void ISEDisplay::loop()
|
void ISEDisplay::loop()
|
||||||
{
|
{
|
||||||
|
|
@ -64,8 +64,11 @@ void ISEDisplay::loop()
|
||||||
// Check if the AC state has been changed
|
// Check if the AC state has been changed
|
||||||
if (ac_press_pending && (millis() - time_since_last_ac_change) > 5000)
|
if (ac_press_pending && (millis() - time_since_last_ac_change) > 5000)
|
||||||
{
|
{
|
||||||
|
ESP_LOGI("ISEDisplay", "Sending AC IR code");
|
||||||
sendACIRcode();
|
sendACIRcode();
|
||||||
|
ESP_LOGI("ISEDisplay", "AC IR code sent");
|
||||||
ac_press_pending = false;
|
ac_press_pending = false;
|
||||||
|
ESP_LOGI("ISEDisplay", "AC press pending set to false");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the MQTT connection has been lost
|
// Check if the MQTT connection has been lost
|
||||||
|
|
@ -73,23 +76,28 @@ void ISEDisplay::loop()
|
||||||
if (last_mqtt_connected_check == 0)
|
if (last_mqtt_connected_check == 0)
|
||||||
{
|
{
|
||||||
last_mqtt_connected_check = millis() + 15000; // Wait 15 seconds before checking
|
last_mqtt_connected_check = millis() + 15000; // Wait 15 seconds before checking
|
||||||
|
ESP_LOGD("ISE Display", "Waiting 15 seconds before checking MQTT connection");
|
||||||
}
|
}
|
||||||
static bool first_disconnect = true;
|
static bool first_disconnect = true;
|
||||||
|
// ESP_LOGI("ISEDisplay", "init first disconnect set to true");
|
||||||
if (millis() - last_mqtt_connected_check > 3000)
|
if (millis() - last_mqtt_connected_check > 3000)
|
||||||
{
|
{
|
||||||
ESP_LOGD("ISE Display", "Checking MQTT Connection, Connection is %s", this->cards.iot->mqttConnected() ? "true" : "false");
|
ESP_LOGD("ISE Display", "Checking MQTT Connection, Connection is %s", this->iot->mqttConnected() ? "true" : "false");
|
||||||
if (!this->iot->mqttConnected())
|
if (!this->iot->mqttConnected())
|
||||||
|
|
||||||
{
|
{
|
||||||
|
ESP_LOGI("ISEDisplay", "MQTT is disconnected");
|
||||||
if (first_disconnect)
|
if (first_disconnect)
|
||||||
{
|
{
|
||||||
// When MQTT is disconnected, enter standalone mode
|
// When MQTT is disconnected, enter standalone mode
|
||||||
// A/C lock is lifted
|
// A/C lock is lifted
|
||||||
// PM lock are lifted
|
// PM lock are lifted
|
||||||
|
ESP_LOGI("ISEDisplay", "Entering standalone mode");
|
||||||
this->ac_lock_state = false;
|
this->ac_lock_state = false;
|
||||||
|
ESP_LOGI("ISEDisplay", "AC lock state set to false");
|
||||||
this->pm_lock_state = false;
|
this->pm_lock_state = false;
|
||||||
|
ESP_LOGI("ISEDisplay", "PM lock state set to false");
|
||||||
first_disconnect = false;
|
first_disconnect = false;
|
||||||
|
ESP_LOGI("ISEDisplay", "first disconnect set to false");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -97,18 +105,27 @@ void ISEDisplay::loop()
|
||||||
if (first_disconnect == false)
|
if (first_disconnect == false)
|
||||||
{
|
{
|
||||||
// When MQTT is connected, exit standalone mode
|
// When MQTT is connected, exit standalone mode
|
||||||
// In standalone mode, socket contactor is turned off
|
|
||||||
// A/C lock is set
|
// A/C lock is set
|
||||||
|
// PM lock is set
|
||||||
|
|
||||||
|
ESP_LOGI("ISEDisplay", "Exiting standalone mode");
|
||||||
|
|
||||||
first_disconnect = true;
|
first_disconnect = true;
|
||||||
|
ESP_LOGI("ISEDisplay", "first disconnect set to true");
|
||||||
this->ac_lock_state = strcmp(ac_lock->getValue(), "on") == 0;
|
this->ac_lock_state = strcmp(ac_lock->getValue(), "on") == 0;
|
||||||
|
ESP_LOGI("ISEDisplay", "AC lock state set to %d", this->ac_lock_state);
|
||||||
this->pm_lock_state = strcmp(pm_lock->getValue(), "on") == 0;
|
this->pm_lock_state = strcmp(pm_lock->getValue(), "on") == 0;
|
||||||
|
ESP_LOGI("ISEDisplay", "PM lock state set to %d", this->pm_lock_state);
|
||||||
updateACState();
|
updateACState();
|
||||||
|
ESP_LOGI("ISEDisplay", "AC state updated");
|
||||||
updateAirPurifierState();
|
updateAirPurifierState();
|
||||||
|
ESP_LOGI("ISEDisplay", "Air purifier state updated");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
last_mqtt_connected_check = millis();
|
last_mqtt_connected_check = millis();
|
||||||
|
ESP_LOGI("ISEDisplay", "last mqtt connected check set to current time");
|
||||||
}
|
}
|
||||||
|
// ESP_LOGV("ISEDisplay", "this Loop is finish");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type)
|
void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type)
|
||||||
|
|
@ -134,6 +151,10 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
||||||
case COMPONENT_OBJ_STANDBY_BTN_AC_TOGGLE:
|
case COMPONENT_OBJ_STANDBY_BTN_AC_TOGGLE:
|
||||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||||
break;
|
break;
|
||||||
|
if (this->ac_lock_state == true){
|
||||||
|
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||||
|
break;
|
||||||
|
}
|
||||||
toggleAC();
|
toggleAC();
|
||||||
break;
|
break;
|
||||||
case COMPONENT_OBJ_STANDBY_BTN_PM_TOGGLE:
|
case COMPONENT_OBJ_STANDBY_BTN_PM_TOGGLE:
|
||||||
|
|
@ -155,29 +176,37 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
||||||
case COMPONENT_OBJ_DASHBOARD_BTN_AC_TOGGLE:
|
case COMPONENT_OBJ_DASHBOARD_BTN_AC_TOGGLE:
|
||||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// if ac_lock is true do nothing
|
// if ac_lock is true do nothing
|
||||||
if (strcmp(ac_lock->getValue(), "on") == 0)
|
if (this->ac_lock_state == true)
|
||||||
|
{
|
||||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
toggleAC();
|
toggleAC();
|
||||||
break;
|
break;
|
||||||
case COMPONENT_OBJ_DASHBOARD_BTN_AC_MODE:
|
case COMPONENT_OBJ_DASHBOARD_BTN_AC_MODE:
|
||||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||||
break;
|
break;
|
||||||
// if ac_lock is true do nothing
|
// if ac_lock is true do nothing
|
||||||
if (strcmp(ac_lock->getValue(), "on") == 0)
|
if (this->ac_lock_state == true)
|
||||||
|
{
|
||||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
changeUserACmode();
|
changeUserACmode();
|
||||||
break;
|
break;
|
||||||
case COMPONENT_OBJ_DASHBOARD_BTN_AC_FAN_SPEED:
|
case COMPONENT_OBJ_DASHBOARD_BTN_AC_FAN_SPEED:
|
||||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||||
break;
|
break;
|
||||||
// if ac_lock is true do nothing
|
// if ac_lock is true do nothing
|
||||||
if (strcmp(ac_lock->getValue(), "on") == 0)
|
if (this->ac_lock_state == true){
|
||||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||||
break;
|
break;
|
||||||
ac_fan_speed = this->climateCard_daikin->getFanSpeed();
|
}
|
||||||
|
// ac_fan_speed = this->climateCard_daikin->getFanSpeed();
|
||||||
|
ac_fan_speed = this->ac_fan_speed;
|
||||||
// mode= auto, high, mid, low
|
// mode= auto, high, mid, low
|
||||||
ESP_LOGI("ISEDisplay", "Current AC fan speed: %d", ac_fan_speed);
|
ESP_LOGI("ISEDisplay", "Current AC fan speed: %d", ac_fan_speed);
|
||||||
ac_fan_speed = (ac_fan_speed + 1) % 4;
|
ac_fan_speed = (ac_fan_speed + 1) % 4;
|
||||||
|
|
@ -188,29 +217,34 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type
|
||||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||||
break;
|
break;
|
||||||
// if ac_lock is true do nothing
|
// if ac_lock is true do nothing
|
||||||
if (strcmp(ac_lock->getValue(), "on") == 0)
|
if (this->ac_lock_state == true){
|
||||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||||
break;
|
break;
|
||||||
ac_temperature = this->climateCard_daikin->getTemperature() - 1;
|
}
|
||||||
|
// ac_temperature = this->climateCard_daikin->getTemperature() - 1;
|
||||||
|
ac_temperature = this->ac_temperature - 1;
|
||||||
setACstate(ac_fan_speed, ac_mode, ac_temperature);
|
setACstate(ac_fan_speed, ac_mode, ac_temperature);
|
||||||
break;
|
break;
|
||||||
case COMPONENT_OBJ_DASHBOARD_BTN_AC_TEMP_PLUS:
|
case COMPONENT_OBJ_DASHBOARD_BTN_AC_TEMP_PLUS:
|
||||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||||
break;
|
break;
|
||||||
// if ac_lock is true do nothing
|
// if ac_lock is true do nothing
|
||||||
if (strcmp(ac_lock->getValue(), "on") == 0)
|
if (this->ac_lock_state == true){
|
||||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||||
break;
|
break;
|
||||||
ac_temperature = this->climateCard_daikin->getTemperature() + 1;
|
}
|
||||||
|
// ac_temperature = this->climateCard_daikin->getTemperature() + 1;
|
||||||
|
ac_temperature = this->ac_temperature + 1;
|
||||||
setACstate(ac_fan_speed, ac_mode, ac_temperature);
|
setACstate(ac_fan_speed, ac_mode, ac_temperature);
|
||||||
break;
|
break;
|
||||||
case COMPONENT_OBJ_DASHBOARD_BTN_PM_TOGGLE:
|
case COMPONENT_OBJ_DASHBOARD_BTN_PM_TOGGLE:
|
||||||
if (touch_type != TOUCH_TYPE_RELEASE)
|
if (touch_type != TOUCH_TYPE_RELEASE)
|
||||||
break;
|
break;
|
||||||
// if pm_lock is true do nothing
|
// if pm_lock is true do nothing
|
||||||
if (strcmp(pm_lock->getValue(), "on") == 0)
|
if (this->pm_lock_state == true){
|
||||||
ESP_LOGI("ISEDisplay", "PM lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "PM lock is on, do nothing");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
togglePM();
|
togglePM();
|
||||||
break;
|
break;
|
||||||
case COMPONENT_OBJ_DASHBOARD_TXT_PM_INSIDE:
|
case COMPONENT_OBJ_DASHBOARD_TXT_PM_INSIDE:
|
||||||
|
|
@ -410,6 +444,8 @@ void ISEDisplay::handlePWMChange(uint8_t pin, bool state, uint16_t value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void ISEDisplay::updateDateTimeText(rtctime_t time)
|
void ISEDisplay::updateDateTimeText(rtctime_t time)
|
||||||
|
{
|
||||||
|
if (this->currentPage == 1)
|
||||||
{
|
{
|
||||||
if (!this->takeSerialMutex())
|
if (!this->takeSerialMutex())
|
||||||
return;
|
return;
|
||||||
|
|
@ -423,6 +459,7 @@ void ISEDisplay::updateDateTimeText(rtctime_t time)
|
||||||
|
|
||||||
this->giveSerialMutex();
|
this->giveSerialMutex();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// TODO : Implement
|
// TODO : Implement
|
||||||
// user remote var
|
// user remote var
|
||||||
// appdeamon
|
// appdeamon
|
||||||
|
|
@ -497,9 +534,17 @@ void ISEDisplay::setACstate(uint8_t ac_fan_speed, uint8_t ac_mode, uint8_t ac_te
|
||||||
this->ac_fan_speed = ac_fan_speed;
|
this->ac_fan_speed = ac_fan_speed;
|
||||||
this->ac_mode = ac_mode;
|
this->ac_mode = ac_mode;
|
||||||
this->ac_temperature = ac_temperature;
|
this->ac_temperature = ac_temperature;
|
||||||
|
//check ac_temp is within bound of daikin
|
||||||
|
if (this->ac_temperature < DAIKIN_MIN_TEMP)
|
||||||
|
{
|
||||||
|
this->ac_temperature = DAIKIN_MIN_TEMP;
|
||||||
|
}
|
||||||
|
else if (this->ac_temperature > DAIKIN_MAX_TEMP)
|
||||||
|
{
|
||||||
|
this->ac_temperature = DAIKIN_MAX_TEMP;
|
||||||
|
}
|
||||||
this->time_since_last_ac_change = millis();
|
this->time_since_last_ac_change = millis();
|
||||||
this->ac_press_pending = true;
|
this->ac_press_pending = true;
|
||||||
|
|
||||||
updateACState();
|
updateACState();
|
||||||
}
|
}
|
||||||
void ISEDisplay::sendACIRcode()
|
void ISEDisplay::sendACIRcode()
|
||||||
|
|
@ -532,6 +577,13 @@ void ISEDisplay::sendACIRcode()
|
||||||
{
|
{
|
||||||
this->climateCard_york->setState(cur_ac_mode, cur_ac_fan_speed, york_temp);
|
this->climateCard_york->setState(cur_ac_mode, cur_ac_fan_speed, york_temp);
|
||||||
}
|
}
|
||||||
|
// get value of mode fanspeed and temp and print compare to store value
|
||||||
|
ESP_LOGI("ISEDisplay", "AC IR code sent");
|
||||||
|
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");
|
||||||
|
ESP_LOGI("ISEDisplay", "Daikin fan speed: %d, Daikin mode: %d, Daikin temperature: %d", this->climateCard_daikin->getFanSpeed(), this->climateCard_daikin->getMode(), this->climateCard_daikin->getTemperature());
|
||||||
|
ESP_LOGI("ISEDisplay", "York fan speed: %d, York mode: %d, York temperature: %d", this->climateCard_york->getFanSpeed(), this->climateCard_york->getMode(), this->climateCard_york->getTemperature());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ISEDisplay::toggleLightGroupState()
|
void ISEDisplay::toggleLightGroupState()
|
||||||
|
|
@ -610,32 +662,41 @@ void ISEDisplay::togglePMStandby()
|
||||||
void ISEDisplay::toggleAC()
|
void ISEDisplay::toggleAC()
|
||||||
{
|
{
|
||||||
// Get the current group state
|
// Get the current group state
|
||||||
uint8_t mode = this->climateCard_daikin->getMode();
|
// uint8_t mode = this->climateCard_daikin->getMode();
|
||||||
// get fan speed and temperature
|
uint8_t mode = this->ac_mode;
|
||||||
uint8_t fan_speed = this->climateCard_daikin->getFanSpeed();
|
|
||||||
uint8_t temperature = this->climateCard_daikin->getTemperature();
|
|
||||||
|
|
||||||
ESP_LOGI("ISEDisplay", "Current AC mode: %d", mode);
|
ESP_LOGI("ISEDisplay", "Current AC mode: %d", mode);
|
||||||
|
ESP_LOGI("ISEDisplay", "Current user mode: %d", user_mode);
|
||||||
|
// get value of mode, fanspeed and temp and print compare to store value
|
||||||
|
ESP_LOGI("ISEDisplay", "Daikin fan speed: %d, Daikin mode: %d, Daikin temperature: %d", this->climateCard_daikin->getFanSpeed(), this->climateCard_daikin->getMode(), this->climateCard_daikin->getTemperature());
|
||||||
|
ESP_LOGI("ISEDisplay", "York fan speed: %d, York mode: %d, York temperature: %d", this->climateCard_york->getFanSpeed(), this->climateCard_york->getMode(), this->climateCard_york->getTemperature());
|
||||||
// Toggle the state
|
// Toggle the state
|
||||||
if (mode == 0)
|
if (mode != 0)
|
||||||
{
|
{
|
||||||
ESP_LOGI("ISEDisplay", " User mode: %d", user_mode);
|
// update mode to new mode
|
||||||
setACstate(fan_speed, user_mode, temperature);
|
mode = 0;
|
||||||
|
ESP_LOGI("ISEDisplay", "change actual AC mode to off: %d", mode);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // ie mode is off
|
||||||
ESP_LOGI("ISEDisplay", "User mode BEFORE: %d", user_mode);
|
// do nothing as the state is keep in user_mode
|
||||||
// update user mode to new mode
|
// the mode will change to user_mode when turn on by toggleAC()
|
||||||
user_mode = mode;
|
ESP_LOGI("ISEDisplay", "do nothing; user mode: %d , actual mode: %d", user_mode, mode);
|
||||||
// change actual mode to off
|
mode = user_mode;
|
||||||
ESP_LOGI("ISEDisplay", "User mode AFTER: %d", user_mode);
|
|
||||||
setACstate(fan_speed, 0, temperature);
|
|
||||||
}
|
}
|
||||||
|
// get fan speed and temperature
|
||||||
|
// uint8_t fan_speed = this->climateCard_daikin->getFanSpeed();
|
||||||
|
// uint8_t temperature = this->climateCard_daikin->getTemperature();
|
||||||
|
uint8_t fan_speed = this->ac_fan_speed;
|
||||||
|
uint8_t temperature = this->ac_temperature;
|
||||||
|
ESP_LOGI("ISEDisplay", "Current AC mode: %d", mode);
|
||||||
|
// Toggle the state
|
||||||
|
setACstate(fan_speed, mode, temperature);
|
||||||
}
|
}
|
||||||
void ISEDisplay::changeUserACmode()
|
void ISEDisplay::changeUserACmode()
|
||||||
{
|
{
|
||||||
// Get the current group state
|
// Get the current group state
|
||||||
uint8_t mode = this->climateCard_daikin->getMode();
|
uint8_t mode = this->ac_mode;
|
||||||
|
// uint8_t mode = this->climateCard_daikin->getMode();
|
||||||
ESP_LOGI("ISEDisplay", "Current actual AC mode: %d", mode);
|
ESP_LOGI("ISEDisplay", "Current actual AC mode: %d", mode);
|
||||||
// Toggle the state
|
// Toggle the state
|
||||||
// user mode alternate between 1 and 2
|
// user mode alternate between 1 and 2
|
||||||
|
|
@ -795,6 +856,7 @@ void ISEDisplay::updateLightGroupStatePageDashboard()
|
||||||
for (uint8_t i = 1; i <= 4; i++)
|
for (uint8_t i = 1; i <= 4; i++)
|
||||||
{
|
{
|
||||||
u_int8_t state = getLightLevel(i);
|
u_int8_t state = getLightLevel(i);
|
||||||
|
updateLightSwitch();
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
|
@ -832,6 +894,60 @@ void ISEDisplay::updateLightGroupStatePageDashboard()
|
||||||
|
|
||||||
this->giveSerialMutex();
|
this->giveSerialMutex();
|
||||||
}
|
}
|
||||||
|
void ISEDisplay::updateLightSwitch()
|
||||||
|
{
|
||||||
|
// Calculate the state
|
||||||
|
bool state_master = calculateLightGroupState();
|
||||||
|
// Send the state to the display
|
||||||
|
if (!this->takeSerialMutex())
|
||||||
|
return;
|
||||||
|
|
||||||
|
this->displayAdapter->print("light_m_sw.pic=");
|
||||||
|
this->displayAdapter->print(state_master ? 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_master ? COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_ON_PRESSED : COMPONENT_DASHBOARD_PIC_LIGHT_MASTER_OFF_PRESSED);
|
||||||
|
this->sendStopBytes();
|
||||||
|
|
||||||
|
this->giveSerialMutex();
|
||||||
|
|
||||||
|
// 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 (state == 0)
|
||||||
|
{
|
||||||
|
this->displayAdapter->print("light_row");
|
||||||
|
this->displayAdapter->print(i);
|
||||||
|
this->displayAdapter->print("_sw.pic=");
|
||||||
|
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_OFF);
|
||||||
|
this->sendStopBytes();
|
||||||
|
|
||||||
|
this->displayAdapter->print("light_row");
|
||||||
|
this->displayAdapter->print(i);
|
||||||
|
this->displayAdapter->print("_sw.pic2=");
|
||||||
|
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_LIGHT_SWITCH_OFF_PRESSED);
|
||||||
|
this->sendStopBytes();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
bool ISEDisplay::calculateLightGroupState()
|
bool ISEDisplay::calculateLightGroupState()
|
||||||
{
|
{
|
||||||
// Check if all lights are on
|
// Check if all lights are on
|
||||||
|
|
@ -863,7 +979,7 @@ void ISEDisplay::toggleSystem()
|
||||||
{
|
{
|
||||||
toggleLightGroupState();
|
toggleLightGroupState();
|
||||||
// check for ac lock and pm lock, if lock is on do nothing
|
// check for ac lock and pm lock, if lock is on do nothing
|
||||||
if (strcmp(ac_lock->getValue(), "on") == 0)
|
if (this->ac_lock_state == true)
|
||||||
{
|
{
|
||||||
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "AC lock is on, do nothing");
|
||||||
}
|
}
|
||||||
|
|
@ -871,7 +987,7 @@ void ISEDisplay::toggleSystem()
|
||||||
{
|
{
|
||||||
toggleAC();
|
toggleAC();
|
||||||
}
|
}
|
||||||
if (strcmp(pm_lock->getValue(), "on") == 0)
|
if (this->pm_lock_state == true)
|
||||||
{
|
{
|
||||||
ESP_LOGI("ISEDisplay", "PM lock is on, do nothing");
|
ESP_LOGI("ISEDisplay", "PM lock is on, do nothing");
|
||||||
}
|
}
|
||||||
|
|
@ -884,7 +1000,7 @@ void ISEDisplay::allOn()
|
||||||
{
|
{
|
||||||
setLightGroupState(3);
|
setLightGroupState(3);
|
||||||
setPMstate(true, pm_fan_speed);
|
setPMstate(true, pm_fan_speed);
|
||||||
setACstate(ac_mode, ac_fan_speed, ac_temperature);
|
setACstate(2, ac_fan_speed, ac_temperature);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ISEDisplay::toggleLightIndividual(uint8_t row)
|
void ISEDisplay::toggleLightIndividual(uint8_t row)
|
||||||
|
|
@ -927,11 +1043,11 @@ void ISEDisplay::updateAirPurifierStateStandby()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this->displayAdapter->print("s_pm_toggle.pic=");
|
this->displayAdapter->print("s_pm_toggle.pic=");
|
||||||
this->displayAdapter->print(state ? COMPONENT_STANDBY_PIC_AC_TOGGLE_ON : COMPONENT_STANDBY_PIC_AC_TOGGLE_OFF);
|
this->displayAdapter->print(state ? COMPONENT_STANDBY_PIC_PM_TOGGLE_ON : COMPONENT_STANDBY_PIC_PM_TOGGLE_OFF);
|
||||||
this->sendStopBytes();
|
this->sendStopBytes();
|
||||||
|
|
||||||
this->displayAdapter->print("s_pm_toggle.pic2=");
|
this->displayAdapter->print("s_pm_toggle.pic2=");
|
||||||
this->displayAdapter->print(state ? COMPONENT_STANDBY_PIC_AC_TOGGLE_ON_PRESSED : COMPONENT_STANDBY_PIC_AC_TOGGLE_OFF_PRESSED);
|
this->displayAdapter->print(state ? COMPONENT_STANDBY_PIC_PM_TOGGLE_ON_PRESSED : COMPONENT_STANDBY_PIC_PM_TOGGLE_OFF_PRESSED);
|
||||||
this->sendStopBytes();
|
this->sendStopBytes();
|
||||||
|
|
||||||
this->giveSerialMutex();
|
this->giveSerialMutex();
|
||||||
|
|
@ -989,7 +1105,8 @@ void ISEDisplay::handleACChange(uint8_t mode, uint8_t fan_speed, uint8_t tempera
|
||||||
}
|
}
|
||||||
void ISEDisplay::updateuserACmode()
|
void ISEDisplay::updateuserACmode()
|
||||||
{
|
{
|
||||||
uint8_t mode = this->climateCard_daikin->getMode();
|
// uint8_t mode = this->climateCard_daikin->getMode();
|
||||||
|
uint8_t mode = this->ac_mode;
|
||||||
if (!this->takeSerialMutex())
|
if (!this->takeSerialMutex())
|
||||||
return;
|
return;
|
||||||
ESP_LOGI("ISEDisplay", "updating display user AC mode to: %d", user_mode);
|
ESP_LOGI("ISEDisplay", "updating display user AC mode to: %d", user_mode);
|
||||||
|
|
@ -1063,8 +1180,10 @@ void ISEDisplay::updateuserACmode()
|
||||||
}
|
}
|
||||||
void ISEDisplay::updateACfanSpeed()
|
void ISEDisplay::updateACfanSpeed()
|
||||||
{
|
{
|
||||||
uint8_t fan_speed = this->climateCard_daikin->getFanSpeed();
|
// uint8_t fan_speed = this->climateCard_daikin->getFanSpeed();
|
||||||
uint8_t mode = this->climateCard_daikin->getMode();
|
// uint8_t mode = this->climateCard_daikin->getMode();
|
||||||
|
uint8_t fan_speed = this->ac_fan_speed;
|
||||||
|
uint8_t mode = this->ac_mode;
|
||||||
this->ac_lock_state = strcmp(ac_lock->getValue(), "on") == 0;
|
this->ac_lock_state = strcmp(ac_lock->getValue(), "on") == 0;
|
||||||
|
|
||||||
ESP_LOGI("ISEDisplay", "updating display AC fan speed to: %d", fan_speed);
|
ESP_LOGI("ISEDisplay", "updating display AC fan speed to: %d", fan_speed);
|
||||||
|
|
@ -1162,8 +1281,10 @@ void ISEDisplay::updateACState()
|
||||||
// TODOlater : The cognitive complexity here is so high, maybe break up the method a bit?
|
// TODOlater : The cognitive complexity here is so high, maybe break up the method a bit?
|
||||||
|
|
||||||
// Get the state
|
// Get the state
|
||||||
uint8_t mode = this->climateCard_daikin->getMode();
|
// uint8_t mode = this->climateCard_daikin->getMode();
|
||||||
uint8_t temperature = this->climateCard_daikin->getTemperature();
|
// uint8_t temperature = this->climateCard_daikin->getTemperature();
|
||||||
|
uint8_t mode = this->ac_mode;
|
||||||
|
uint8_t temperature = this->ac_temperature;
|
||||||
this->ac_lock_state = strcmp(ac_lock->getValue(), "on") == 0;
|
this->ac_lock_state = strcmp(ac_lock->getValue(), "on") == 0;
|
||||||
|
|
||||||
if (currentPage != 1)
|
if (currentPage != 1)
|
||||||
|
|
@ -1191,8 +1312,6 @@ void ISEDisplay::updateACState()
|
||||||
this->displayAdapter->print("c_degree.pic=");
|
this->displayAdapter->print("c_degree.pic=");
|
||||||
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_DEGREE_C_ON);
|
this->displayAdapter->print(COMPONENT_DASHBOARD_PIC_DEGREE_C_ON);
|
||||||
this->sendStopBytes();
|
this->sendStopBytes();
|
||||||
|
|
||||||
user_mode = mode;
|
|
||||||
}
|
}
|
||||||
this->displayAdapter->print("ac_sw.pic=");
|
this->displayAdapter->print("ac_sw.pic=");
|
||||||
this->displayAdapter->print(mode != 0 ? COMPONENT_DASHBOARD_PIC_AC_TOGGLE_ON : COMPONENT_DASHBOARD_PIC_AC_TOGGLE_OFF);
|
this->displayAdapter->print(mode != 0 ? COMPONENT_DASHBOARD_PIC_AC_TOGGLE_ON : COMPONENT_DASHBOARD_PIC_AC_TOGGLE_OFF);
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ struct lightPosition {
|
||||||
class ISEDisplay : public ESPMegaDisplay {
|
class ISEDisplay : public ESPMegaDisplay {
|
||||||
public:
|
public:
|
||||||
ISEDisplay(HardwareSerial* adapter, const uint8_t *light_array, uint8_t row, uint8_t column);
|
ISEDisplay(HardwareSerial* adapter, const uint8_t *light_array, uint8_t row, uint8_t column);
|
||||||
void begin(DigitalInputCard* inputCard, DigitalOutputCard* outputCard, ClimateCard* climateCard_daikin, ClimateCard* climateCard_york, RemoteVariable* pm_switch, RemoteVariable* pm_fan_speed, RemoteVariable* ac_lock, RemoteVariable* pm_lock);
|
void begin(DigitalInputCard* inputCard, DigitalOutputCard* outputCard, ClimateCard* climateCard_daikin, ClimateCard* climateCard_york, RemoteVariable* pm_switch, RemoteVariable* pm_fan_speed, RemoteVariable* ac_lock, RemoteVariable* pm_lock, ESPMegaIoT *iot);
|
||||||
void updateLightGroupStatePageDashboard();
|
void updateLightGroupStatePageDashboard();
|
||||||
void updateLightGroupStatePageStandby();
|
void updateLightGroupStatePageStandby();
|
||||||
void updateAirPurifierState();
|
void updateAirPurifierState();
|
||||||
|
|
@ -68,7 +68,7 @@ class ISEDisplay : public ESPMegaDisplay {
|
||||||
RemoteVariable *pm_lock;
|
RemoteVariable *pm_lock;
|
||||||
uint8_t outputCallbackHandle;
|
uint8_t outputCallbackHandle;
|
||||||
uint8_t climateCallbackHandle;
|
uint8_t climateCallbackHandle;
|
||||||
uint8_t time_since_last_ac_change;
|
uint32_t time_since_last_ac_change;
|
||||||
uint8_t user_mode;
|
uint8_t user_mode;
|
||||||
uint8_t ac_lock_state;
|
uint8_t ac_lock_state;
|
||||||
uint8_t pm_lock_state;
|
uint8_t pm_lock_state;
|
||||||
|
|
@ -86,6 +86,7 @@ class ISEDisplay : public ESPMegaDisplay {
|
||||||
|
|
||||||
void updateuserACmode();
|
void updateuserACmode();
|
||||||
void updateACfanSpeed();
|
void updateACfanSpeed();
|
||||||
|
void updateLightSwitch();
|
||||||
bool calculateLightGroupState();
|
bool calculateLightGroupState();
|
||||||
bool calculateAllState();
|
bool calculateAllState();
|
||||||
void toggleSystem();
|
void toggleSystem();
|
||||||
|
|
|
||||||
118
src/main.cpp
118
src/main.cpp
|
|
@ -6,15 +6,15 @@
|
||||||
***********************************************/
|
***********************************************/
|
||||||
|
|
||||||
// Analog Card & Current Transformer Configuration
|
// Analog Card & Current Transformer Configuration
|
||||||
bool analogCardAvailable = false;
|
// bool analogCardAvailable = false;
|
||||||
AnalogCard analogCard = AnalogCard();
|
// AnalogCard analogCard = AnalogCard();
|
||||||
float voltage = CT_RMS_VOLTAGE;
|
// float voltage = CT_RMS_VOLTAGE;
|
||||||
CurrentTransformerCard ct1 = CurrentTransformerCard(&analogCard, 0, &voltage, &adc2current, 5000);
|
// CurrentTransformerCard ct1 = CurrentTransformerCard(&analogCard, 0, &voltage, &adc2current, 5000);
|
||||||
CurrentTransformerCard ct2 = CurrentTransformerCard(&analogCard, 1, &voltage, &adc2current, 5000);
|
// CurrentTransformerCard ct2 = CurrentTransformerCard(&analogCard, 1, &voltage, &adc2current, 5000);
|
||||||
CurrentTransformerCard ct3 = CurrentTransformerCard(&analogCard, 2, &voltage, &adc2current, 5000);
|
// CurrentTransformerCard ct3 = CurrentTransformerCard(&analogCard, 2, &voltage, &adc2current, 5000);
|
||||||
CurrentTransformerCard ct4 = CurrentTransformerCard(&analogCard, 3, &voltage, &adc2current, 5000);
|
// CurrentTransformerCard ct4 = CurrentTransformerCard(&analogCard, 3, &voltage, &adc2current, 5000);
|
||||||
CurrentTransformerCard ct5 = CurrentTransformerCard(&analogCard, 4, &voltage, &adc2current, 5000);
|
// CurrentTransformerCard ct5 = CurrentTransformerCard(&analogCard, 4, &voltage, &adc2current, 5000);
|
||||||
CurrentTransformerCard ct6 = CurrentTransformerCard(&analogCard, 5, &voltage, &adc2current, 5000);
|
// CurrentTransformerCard ct6 = CurrentTransformerCard(&analogCard, 5, &voltage, &adc2current, 5000);
|
||||||
|
|
||||||
// Remote Variables
|
// Remote Variables
|
||||||
RemoteVariable pm25_in = RemoteVariable();
|
RemoteVariable pm25_in = RemoteVariable();
|
||||||
|
|
@ -165,29 +165,29 @@ void setup()
|
||||||
climateCard_daikin.setFRAMAutoSave(true);
|
climateCard_daikin.setFRAMAutoSave(true);
|
||||||
espmega.display->bindClimateCard(&climateCard_daikin);
|
espmega.display->bindClimateCard(&climateCard_daikin);
|
||||||
|
|
||||||
// Current Transformers
|
// // Current Transformers
|
||||||
espmega.installCard(4, &analogCard);
|
// espmega.installCard(4, &analogCard);
|
||||||
|
|
||||||
espmega.installCard(5, &ct1);
|
// espmega.installCard(5, &ct1);
|
||||||
ct1.bindFRAM(&espmega.fram, 6000);
|
// ct1.bindFRAM(&espmega.fram, 6000);
|
||||||
espmega.iot->registerCard(5);
|
// espmega.iot->registerCard(5);
|
||||||
|
|
||||||
espmega.installCard(6, &ct2);
|
// espmega.installCard(6, &ct2);
|
||||||
ct2.bindFRAM(&espmega.fram, 6100);
|
// ct2.bindFRAM(&espmega.fram, 6100);
|
||||||
espmega.iot->registerCard(6);
|
// espmega.iot->registerCard(6);
|
||||||
|
|
||||||
espmega.installCard(7, &ct3);
|
// espmega.installCard(7, &ct3);
|
||||||
ct3.bindFRAM(&espmega.fram, 6200);
|
// ct3.bindFRAM(&espmega.fram, 6200);
|
||||||
espmega.iot->registerCard(7);
|
// espmega.iot->registerCard(7);
|
||||||
espmega.installCard(8, &ct4);
|
// espmega.installCard(8, &ct4);
|
||||||
ct4.bindFRAM(&espmega.fram, 6300);
|
// ct4.bindFRAM(&espmega.fram, 6300);
|
||||||
espmega.iot->registerCard(8);
|
// espmega.iot->registerCard(8);
|
||||||
espmega.installCard(9, &ct5);
|
// espmega.installCard(9, &ct5);
|
||||||
ct5.bindFRAM(&espmega.fram, 6400);
|
// ct5.bindFRAM(&espmega.fram, 6400);
|
||||||
espmega.iot->registerCard(9);
|
// espmega.iot->registerCard(9);
|
||||||
espmega.installCard(10, &ct6);
|
// espmega.installCard(10, &ct6);
|
||||||
ct6.bindFRAM(&espmega.fram, 6500);
|
// ct6.bindFRAM(&espmega.fram, 6500);
|
||||||
espmega.iot->registerCard(10);
|
// espmega.iot->registerCard(10);
|
||||||
|
|
||||||
// ------------ Climate Cards Initialization Routine ------------
|
// ------------ Climate Cards Initialization Routine ------------
|
||||||
ESP_LOGD("ISE OS", "Setting up climate cards");
|
ESP_LOGD("ISE OS", "Setting up climate cards");
|
||||||
|
|
@ -210,40 +210,40 @@ void setup()
|
||||||
// ------------ End Climate Cards Initialization Routine ------------
|
// ------------ End Climate Cards Initialization Routine ------------
|
||||||
|
|
||||||
// ------------ Current Transformer Cards Initialization Routine ------------
|
// ------------ Current Transformer Cards Initialization Routine ------------
|
||||||
ESP_LOGD("ISE OS", "Installing current transformer cards");
|
//ESP_LOGD("ISE OS", "Installing current transformer cards");
|
||||||
// First try to install the analog card
|
// 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 available, install the current transformer cards
|
||||||
// If the analog card is not available, current transformer cards will not be installed
|
// If the analog card is not available, current transformer cards will not be installed
|
||||||
// Unless CT_FORCE_ENABLE is set to true
|
// 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
|
// 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)
|
// if (analogCardAvailable || CT_FORCE_ENABLE)
|
||||||
{
|
// {
|
||||||
ESP_LOGV("ISE OS", "Analog card available, installing current transformer cards");
|
// ESP_LOGV("ISE OS", "Analog card available, installing current transformer cards");
|
||||||
espmega.installCard(5, &ct1);
|
// // espmega.installCard(5, &ct1);
|
||||||
ct1.bindFRAM(&espmega.fram, 5010);
|
// // ct1.bindFRAM(&espmega.fram, 5010);
|
||||||
espmega.installCard(6, &ct2);
|
// // espmega.installCard(6, &ct2);
|
||||||
ct2.bindFRAM(&espmega.fram, 5020);
|
// // ct2.bindFRAM(&espmega.fram, 5020);
|
||||||
espmega.installCard(7, &ct3);
|
// // espmega.installCard(7, &ct3);
|
||||||
ct3.bindFRAM(&espmega.fram, 5030);
|
// // ct3.bindFRAM(&espmega.fram, 5030);
|
||||||
espmega.installCard(8, &ct4);
|
// // espmega.installCard(8, &ct4);
|
||||||
ct4.bindFRAM(&espmega.fram, 5040);
|
// // ct4.bindFRAM(&espmega.fram, 5040);
|
||||||
espmega.installCard(9, &ct5);
|
// // espmega.installCard(9, &ct5);
|
||||||
ct5.bindFRAM(&espmega.fram, 5050);
|
// // ct5.bindFRAM(&espmega.fram, 5050);
|
||||||
espmega.installCard(10, &ct5);
|
// // espmega.installCard(10, &ct5);
|
||||||
ct6.bindFRAM(&espmega.fram, 5060);
|
// // ct6.bindFRAM(&espmega.fram, 5060);
|
||||||
espmega.iot->registerCard(5);
|
// espmega.iot->registerCard(5);
|
||||||
espmega.iot->registerCard(6);
|
// espmega.iot->registerCard(6);
|
||||||
espmega.iot->registerCard(7);
|
// espmega.iot->registerCard(7);
|
||||||
espmega.iot->registerCard(8);
|
// espmega.iot->registerCard(8);
|
||||||
espmega.iot->registerCard(9);
|
// espmega.iot->registerCard(9);
|
||||||
espmega.iot->registerCard(10);
|
// espmega.iot->registerCard(10);
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
ESP_LOGE("ISE OS", "Analog card not available, current transformer cards cannot and will not be installed.");
|
// 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");
|
//ESP_LOGD("ISE OS", "Registering Current Transformer Cards with IoT Module")
|
||||||
// ------------ End Current Transformer Cards Initialization Routine ------------
|
// ------------ End Current Transformer Cards Initialization Routine ------------
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -291,7 +291,7 @@ void setup()
|
||||||
|
|
||||||
// ------------ External Display Initialization Routine ------------
|
// ------------ External Display Initialization Routine ------------
|
||||||
auto bindedGetTime = std::bind(&ESPMegaPRO::getTime, &espmega);
|
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);
|
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);
|
espmega.iot->registerRelativeMqttCallback(&handleMqttMessage);
|
||||||
iseDisplay.registerPageChangeCallback(&handlePageChange);
|
iseDisplay.registerPageChangeCallback(&handlePageChange);
|
||||||
// ------------ End External Display Initialization Routine ------------
|
// ------------ End External Display Initialization Routine ------------
|
||||||
|
|
|
||||||
18
src/main.hpp
18
src/main.hpp
|
|
@ -26,15 +26,15 @@ SET_LOOP_TASK_STACK_SIZE(32*1024);
|
||||||
#define AIR_CONDITIONER_RMT_CHANNEL0 RMT_CHANNEL_0
|
#define AIR_CONDITIONER_RMT_CHANNEL0 RMT_CHANNEL_0
|
||||||
#define AIR_CONDITIONER_RMT_CHANNEL1 RMT_CHANNEL_1
|
#define AIR_CONDITIONER_RMT_CHANNEL1 RMT_CHANNEL_1
|
||||||
|
|
||||||
// CT Configuration
|
// // CT Configuration
|
||||||
#define CT_FORCE_ENABLE false
|
// #define CT_FORCE_ENABLE false
|
||||||
#define CT_RMS_VOLTAGE 1.0
|
// #define CT_RMS_VOLTAGE 1.0
|
||||||
#define CT_PIN_LIGHT_PHASE1 0
|
// #define CT_PIN_LIGHT_PHASE1 0
|
||||||
#define CT_PIN_LIGHT_PHASE2 1
|
// #define CT_PIN_LIGHT_PHASE2 1
|
||||||
#define CT_PIN_SOCKET 2
|
// #define CT_PIN_SOCKET 2
|
||||||
#define CT_PIN_AC_PHASE1 3
|
// #define CT_PIN_AC_PHASE1 3
|
||||||
#define CT_PIN_AC_PHASE2 4
|
// #define CT_PIN_AC_PHASE2 4
|
||||||
#define CT_PIN_AC_PHASE3 5
|
// #define CT_PIN_AC_PHASE3 5
|
||||||
|
|
||||||
void handleMqttMessage(char *topic, char *payload);
|
void handleMqttMessage(char *topic, char *payload);
|
||||||
void subscribeToMqttTopics();
|
void subscribeToMqttTopics();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue