climate display implementation
This commit is contained in:
parent
2d0d38ecf3
commit
ea2c2e076b
14 changed files with 213 additions and 342 deletions
|
@ -121,6 +121,10 @@ void InternalDisplay::refreshPage(uint8_t page) {
|
|||
this->refreshOutput();
|
||||
break;
|
||||
case INTERNAL_DISPLAY_AC_PAGE:
|
||||
if (this->climateCard == nullptr) {
|
||||
this->jumpToPage(INTERNAL_DISPLAY_CLIMATE_NULL_PTR_PAGE);
|
||||
break;
|
||||
}
|
||||
this->refreshAC();
|
||||
break;
|
||||
case INTERNAL_DISPLAY_PWM_ADJUSTMENT_PAGE:
|
||||
|
@ -145,8 +149,6 @@ void InternalDisplay::refreshDashboard() {
|
|||
// Send the MQTT server and port
|
||||
this->displayAdapter->print("server_address.txt=\"");
|
||||
this->displayAdapter->print(this->mqttConfig->mqtt_server);
|
||||
this->displayAdapter->print(":");
|
||||
this->displayAdapter->print(this->mqttConfig->mqtt_port);
|
||||
this->displayAdapter->print("\"");
|
||||
this->sendStopBytes();
|
||||
// Send the MQTT connection status
|
||||
|
@ -167,7 +169,52 @@ void InternalDisplay::refreshOutput() {
|
|||
}
|
||||
|
||||
void InternalDisplay::refreshAC() {
|
||||
// TODO: implementation
|
||||
this->displayAdapter->print("temp.txt=\"");
|
||||
this->displayAdapter->print(this->climateCard->getTemperature());
|
||||
this->displayAdapter->print(" C\"");
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("fan_auto.pic=");
|
||||
this->displayAdapter->print(this->climateCard->getFanSpeed() == AC_FAN_SPEED_AUTO ? PIC_AC_FAN_SPEED_AUTO_ACTIVE : PIC_AC_FAN_SPEED_AUTO_INACTIVE);
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("fan_low.pic=");
|
||||
this->displayAdapter->print(this->climateCard->getFanSpeed() == AC_FAN_SPEED_LOW ? PIC_AC_FAN_SPEED_LOW_ACTIVE : PIC_AC_FAN_SPEED_LOW_INACTIVE);
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("fan_med.pic=");
|
||||
this->displayAdapter->print(this->climateCard->getFanSpeed() == AC_FAN_SPEED_MEDIUM ? PIC_AC_FAN_SPEED_MEDIUM_ACTIVE : PIC_AC_FAN_SPEED_MEDIUM_INACTIVE);
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("fan_high.pic=");
|
||||
this->displayAdapter->print(this->climateCard->getFanSpeed() == AC_FAN_SPEED_HIGH ? PIC_AC_FAN_SPEED_HIGH_ACTIVE : PIC_AC_FAN_SPEED_HIGH_INACTIVE);
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("mode_off.pic=");
|
||||
this->displayAdapter->print(this->climateCard->getMode() == AC_MODE_OFF ? PIC_AC_MODE_OFF_ACTIVE : PIC_AC_MODE_OFF_INACTIVE);
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("mode_fan.pic=");
|
||||
this->displayAdapter->print(this->climateCard->getMode() == AC_MODE_FAN_ONLY ? PIC_AC_MODE_FAN_ACTIVE : PIC_AC_MODE_FAN_INACTIVE);
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("mode_cool.pic=");
|
||||
this->displayAdapter->print(this->climateCard->getMode() == AC_MODE_COOL ? PIC_AC_MODE_COOL_ACTIVE : PIC_AC_MODE_COOL_INACTIVE);
|
||||
this->sendStopBytes();
|
||||
if (this->climateCard->getSensorType() == AC_SENSOR_TYPE_DHT22) {
|
||||
this->displayAdapter->print("roomtemp.txt=\"");
|
||||
this->displayAdapter->print(this->climateCard->getRoomTemperature());
|
||||
this->displayAdapter->print("C\"");
|
||||
this->sendStopBytes();
|
||||
this->displayAdapter->print("roomhumid.txt=\"");
|
||||
this->displayAdapter->print(this->climateCard->getHumidity());
|
||||
this->displayAdapter->print("%\"");
|
||||
this->sendStopBytes();
|
||||
}
|
||||
else if(this->climateCard->getSensorType() == AC_SENSOR_TYPE_DS18B20) {
|
||||
this->displayAdapter->print("roomtemp.txt=\"");
|
||||
this->displayAdapter->print(this->climateCard->getRoomTemperature());
|
||||
this->displayAdapter->print("C\"");
|
||||
this->sendStopBytes();
|
||||
this->setString("roomhumid.txt", "N/A");
|
||||
}
|
||||
else {
|
||||
this->setString("roomtemp.txt", "N/A");
|
||||
this->setString("roomhumid.txt", "N/A");
|
||||
}
|
||||
}
|
||||
|
||||
void InternalDisplay::setPWMAdjustmentSlider(uint16_t value) {
|
||||
|
@ -225,6 +272,9 @@ void InternalDisplay::bindOutputCard(DigitalOutputCard *outputCard) {
|
|||
this->outputCard = outputCard;
|
||||
}
|
||||
|
||||
// This assume that your ClimeateCard has the mode and fan speed names in the following order:
|
||||
// mode: [off, fan_only, cool]
|
||||
// fan_speed: [auto, low, medium, high]
|
||||
void InternalDisplay::bindClimateCard(ClimateCard *climateCard) {
|
||||
this->climateCard = climateCard;
|
||||
}
|
||||
|
@ -281,7 +331,64 @@ void InternalDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t type)
|
|||
}
|
||||
|
||||
void InternalDisplay::handleACTouch(uint8_t type, uint8_t component) {
|
||||
// b1 [component 18] -> inclement AC temperature by 1
|
||||
// b0 [component 17] -> declement AC temperature by 1
|
||||
// fan_auto [component 4] -> set the fan speed to auto
|
||||
// fan_low [component 5] -> set the fan speed to low
|
||||
// fan_med [component 6] -> set the fan speed to medium
|
||||
// fan_high [component 7] -> set the fan speed to high
|
||||
// mode_off [component 10] -> set the mode to off
|
||||
// mode_fan [component 9] -> set the mode to fan only
|
||||
// mode_cool [component 8] -> set the mode to cool
|
||||
|
||||
// For b0 and b1, if the type is not release then return
|
||||
// For other components, if the type is not press then return
|
||||
if ((component == 17 || component == 18) && type != TOUCH_TYPE_RELEASE) return;
|
||||
if ((component != 17 && component != 18) && type != TOUCH_TYPE_PRESS) return;
|
||||
|
||||
// Switch based on the component
|
||||
switch (component) {
|
||||
case 17:
|
||||
// Decrement the temperature
|
||||
this->climateCard->setTemperature(this->climateCard->getTemperature() - 1);
|
||||
break;
|
||||
case 18:
|
||||
// Increment the temperature
|
||||
this->climateCard->setTemperature(this->climateCard->getTemperature() + 1);
|
||||
break;
|
||||
case 4:
|
||||
// Set the fan speed to auto
|
||||
this->climateCard->setFanSpeed(AC_FAN_SPEED_AUTO);
|
||||
break;
|
||||
case 5:
|
||||
// Set the fan speed to low
|
||||
this->climateCard->setFanSpeed(AC_FAN_SPEED_LOW);
|
||||
break;
|
||||
case 6:
|
||||
// Set the fan speed to medium
|
||||
this->climateCard->setFanSpeed(AC_FAN_SPEED_MEDIUM);
|
||||
break;
|
||||
case 7:
|
||||
// Set the fan speed to high
|
||||
this->climateCard->setFanSpeed(AC_FAN_SPEED_HIGH);
|
||||
break;
|
||||
case 10:
|
||||
// Set the mode to off
|
||||
this->climateCard->setMode(AC_MODE_OFF);
|
||||
break;
|
||||
case 9:
|
||||
// Set the mode to fan only
|
||||
this->climateCard->setMode(AC_MODE_FAN_ONLY);
|
||||
break;
|
||||
case 8:
|
||||
// Set the mode to cool
|
||||
this->climateCard->setMode(AC_MODE_COOL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// Refresh the AC page
|
||||
this->refreshAC();
|
||||
}
|
||||
|
||||
void InternalDisplay::handlePWMAdjustmentTouch(uint8_t type, uint8_t component) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue