Теперь режимы качания и фиксации шторок без явного объявления выставляются по умолчанию в центре и на всю ширь. Понимайте, как хотите.

This commit is contained in:
I-am-nightingale
2024-04-12 03:50:34 +03:00
parent 8bdafbe5b4
commit d9f702985c
3 changed files with 30 additions and 25 deletions

View File

@@ -9,6 +9,7 @@ from esphome.const import (
CONF_MAX_TEMPERATURE,
CONF_MIN_TEMPERATURE,
CONF_SUPPORTED_MODES,
CONF_TEMPERATURE_STEP,
CONF_SUPPORTED_FAN_MODES,
CONF_SUPPORTED_SWING_MODES,
)
@@ -22,12 +23,13 @@ from esphome.components.climate import (
AUTO_LOAD = ["climate"]
CODEOWNERS = ["@I-am-nightingale"]
DEPENDENCIES = ["climate", "uart"]
CONF_RX_LED = "rx_led"
CONF_TX_LED = "tx_led"
CONF_DISPLAY = "show_display"
CONF_FORCE_MODE = "force_mode"
CONF_MODULE_DISPLAY = "show_module_display"
CONF_VERTICAL_AIRFLOW = "vertical_airflow"
CONF_MODULE_DISPLAY = "show_module_display"
CONF_HORIZONTAL_AIRFLOW = "horizontal_airflow"
CONF_VERTICAL_SWING_MODE = "vertical_swing_mode"
CONF_HORIZONTAL_SWING_MODE = "horizontal_swing_mode"
@@ -97,6 +99,7 @@ AIRFLOW_HORIZONTAL_DIRECTION_OPTIONS = {
"MAX_RIGHT": AirflowHorizontalDirection.MAX_RIGHT,
}
# Проверка данных конфигурации и принятие значений по умолчанию
CONFIG_SCHEMA = cv.All(
climate.CLIMATE_SCHEMA.extend(
{
@@ -107,6 +110,10 @@ CONFIG_SCHEMA = cv.All(
cv.Optional(CONF_TX_LED): pins.gpio_output_pin_schema,
cv.Optional(CONF_FORCE_MODE, default=True): cv.boolean,
cv.Optional(CONF_MODULE_DISPLAY, default=True): cv.boolean,
cv.Optional(CONF_VERTICAL_AIRFLOW, default="CENTER"): cv.ensure_list(cv.enum(AIRFLOW_VERTICAL_DIRECTION_OPTIONS, upper=True)),
cv.Optional(CONF_VERTICAL_SWING_MODE, default="UP_DOWN"): cv.ensure_list(cv.enum(VERTICAL_SWING_DIRECTION_OPTIONS, upper=True)),
cv.Optional(CONF_HORIZONTAL_AIRFLOW, default="CENTER"): cv.ensure_list(cv.enum(AIRFLOW_HORIZONTAL_DIRECTION_OPTIONS, upper=True)),
cv.Optional(CONF_HORIZONTAL_SWING_MODE, default="LEFT_RIGHT"): cv.ensure_list(cv.enum(HORIZONTAL_SWING_DIRECTION_OPTIONS, upper=True)),
cv.Optional(CONF_SUPPORTED_SWING_MODES,default=["OFF","VERTICAL","HORIZONTAL","BOTH",],): cv.ensure_list(cv.enum(SUPPORTED_SWING_MODES_OPTIONS, upper=True)),
cv.Optional(CONF_SUPPORTED_MODES,default=["OFF","AUTO","COOL","HEAT","DRY","FAN_ONLY",],): cv.ensure_list(cv.enum(SUPPORTED_CLIMATE_MODES_OPTIONS, upper=True)),
cv.Optional(CONF_SUPPORTED_FAN_MODES,default=["AUTO","QUIET","LOW","MIDDLE","MEDIUM","HIGH","FOCUS","DIFFUSE",],): cv.ensure_list(cv.enum(SUPPORTED_FAN_MODES_OPTIONS, upper=True)),
@@ -123,8 +130,8 @@ BeeperOffAction = tclac_ns.class_("BeeperOffAction", automation.Action)
DisplayOnAction = tclac_ns.class_("DisplayOnAction", automation.Action)
DisplayOffAction = tclac_ns.class_("DisplayOffAction", automation.Action)
ModuleDisplayOnAction = tclac_ns.class_("ModuleDisplayOnAction", automation.Action)
ModuleDisplayOffAction = tclac_ns.class_("ModuleDisplayOffAction", automation.Action)
VerticalAirflowAction = tclac_ns.class_("VerticalAirflowAction", automation.Action)
ModuleDisplayOffAction = tclac_ns.class_("ModuleDisplayOffAction", automation.Action)
HorizontalAirflowAction = tclac_ns.class_("HorizontalAirflowAction", automation.Action)
VerticalSwingDirectionAction = tclac_ns.class_("VerticalSwingDirectionAction", automation.Action)
HorizontalSwingDirectionAction = tclac_ns.class_("HorizontalSwingDirectionAction", automation.Action)

View File

@@ -88,7 +88,6 @@ void tclacClimate::loop() {
}
void tclacClimate::update() {
tclacClimate::dataShow(1,1);
this->esphome::uart::UARTDevice::write_array(poll, sizeof(poll));
auto raw = tclacClimate::getHex(poll, sizeof(poll));

View File

@@ -18,36 +18,36 @@ namespace tclac {
#define SET_TEMP_MASK 0b00001111
#define MODE_POS 7
#define MODE_POS 7
#define MODE_MASK 0b00111111
#define MODE_AUTO 0b00110101
#define MODE_COOL 0b00110001
#define MODE_DRY 0b00110011
#define MODE_FAN_ONLY 0b00110010
#define MODE_HEAT 0b00110100
#define MODE_AUTO 0b00110101
#define MODE_COOL 0b00110001
#define MODE_DRY 0b00110011
#define MODE_FAN_ONLY 0b00110010
#define MODE_HEAT 0b00110100
#define FAN_SPEED_POS 8
#define FAN_QUIET_POS 33
#define FAN_AUTO 0b10000000 //auto
#define FAN_QUIET 0x80 //silent
#define FAN_LOW 0b10010000 // |
#define FAN_MIDDLE 0b11000000 // ||
#define FAN_MEDIUM 0b10100000 // |||
#define FAN_HIGH 0b11010000 // ||||
#define FAN_FOCUS 0b10110000 // |||||
#define FAN_AUTO 0b10000000 //auto
#define FAN_QUIET 0x80 //silent
#define FAN_LOW 0b10010000 // |
#define FAN_MIDDLE 0b11000000 // ||
#define FAN_MEDIUM 0b10100000 // |||
#define FAN_HIGH 0b11010000 // ||||
#define FAN_FOCUS 0b10110000 // |||||
#define FAN_DIFFUSE 0b10000000 // POWER [7]
#define FAN_SPEED_MASK 0b11110000 //FAN SPEED MASK
#define SWING_POS 10
#define SWING_OFF 0b00000000
#define SWING_HORIZONTAL 0b00100000
#define SWING_VERTICAL 0b01000000
#define SWING_BOTH 0b01100000
#define SWING_MODE_MASK 0b01100000
#define SWING_OFF 0b00000000
#define SWING_HORIZONTAL 0b00100000
#define SWING_VERTICAL 0b01000000
#define SWING_BOTH 0b01100000
#define SWING_MODE_MASK 0b01100000
#define STEP_TEMPERATURE 1
#define MIN_SET_TEMPERATURE 16
@@ -103,13 +103,12 @@ class tclacClimate : public climate::Climate, public esphome::uart::UARTDevice,
bool display_status_;
bool force_mode_status_;
bool module_display_status_;
esphome::climate::ClimateTraits traits_;
uint8_t switch_climate_mode = 0;
uint8_t switch_fan_mode = 0;
uint8_t switch_swing_mode = 0;
int target_temperature_set = 0;
uint8_t switch_climate_mode = 0;
bool allow_take_control = false;
esphome::climate::ClimateTraits traits_;
public:
@@ -118,10 +117,10 @@ class tclacClimate : public climate::Climate, public esphome::uart::UARTDevice,
}
void readData();
void takeControl();
void loop() override;
void setup() override;
void update() override;
void takeControl();
void dataShow(bool flow, bool shine);
void sendData(byte * message, byte size);
static String getHex(byte *message, byte size);