mirror of
https://github.com/esphome/esphome.git
synced 2026-10-06 19:06:37 +00:00
[haier] Migrate triggers to callback automation (#15229)
This commit is contained in:
@@ -22,7 +22,6 @@ from esphome.const import (
|
|||||||
CONF_SUPPORTED_SWING_MODES,
|
CONF_SUPPORTED_SWING_MODES,
|
||||||
CONF_TARGET_TEMPERATURE,
|
CONF_TARGET_TEMPERATURE,
|
||||||
CONF_TEMPERATURE_STEP,
|
CONF_TEMPERATURE_STEP,
|
||||||
CONF_TRIGGER_ID,
|
|
||||||
CONF_VISUAL,
|
CONF_VISUAL,
|
||||||
CONF_WIFI,
|
CONF_WIFI,
|
||||||
)
|
)
|
||||||
@@ -122,21 +121,6 @@ SUPPORTED_HON_CONTROL_METHODS = {
|
|||||||
"SET_SINGLE_PARAMETER": HonControlMethod.SET_SINGLE_PARAMETER,
|
"SET_SINGLE_PARAMETER": HonControlMethod.SET_SINGLE_PARAMETER,
|
||||||
}
|
}
|
||||||
|
|
||||||
HaierAlarmStartTrigger = haier_ns.class_(
|
|
||||||
"HaierAlarmStartTrigger",
|
|
||||||
automation.Trigger.template(cg.uint8, cg.const_char_ptr),
|
|
||||||
)
|
|
||||||
|
|
||||||
HaierAlarmEndTrigger = haier_ns.class_(
|
|
||||||
"HaierAlarmEndTrigger",
|
|
||||||
automation.Trigger.template(cg.uint8, cg.const_char_ptr),
|
|
||||||
)
|
|
||||||
|
|
||||||
StatusMessageTrigger = haier_ns.class_(
|
|
||||||
"StatusMessageTrigger",
|
|
||||||
automation.Trigger.template(cg.const_char_ptr, cg.size_t),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def validate_visual(config):
|
def validate_visual(config):
|
||||||
if CONF_VISUAL in config:
|
if CONF_VISUAL in config:
|
||||||
@@ -203,13 +187,7 @@ def _base_config_schema(class_: MockObjClass) -> cv.Schema:
|
|||||||
cv.Optional(
|
cv.Optional(
|
||||||
CONF_ANSWER_TIMEOUT,
|
CONF_ANSWER_TIMEOUT,
|
||||||
): cv.positive_time_period_milliseconds,
|
): cv.positive_time_period_milliseconds,
|
||||||
cv.Optional(CONF_ON_STATUS_MESSAGE): automation.validate_automation(
|
cv.Optional(CONF_ON_STATUS_MESSAGE): automation.validate_automation({}),
|
||||||
{
|
|
||||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
|
||||||
StatusMessageTrigger
|
|
||||||
),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.extend(uart.UART_DEVICE_SCHEMA)
|
.extend(uart.UART_DEVICE_SCHEMA)
|
||||||
@@ -264,19 +242,9 @@ CONFIG_SCHEMA = cv.All(
|
|||||||
f"The {CONF_OUTDOOR_TEMPERATURE} option is deprecated, use a sensor for a haier platform instead"
|
f"The {CONF_OUTDOOR_TEMPERATURE} option is deprecated, use a sensor for a haier platform instead"
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_ON_ALARM_START): automation.validate_automation(
|
cv.Optional(CONF_ON_ALARM_START): automation.validate_automation(
|
||||||
{
|
{}
|
||||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
|
||||||
HaierAlarmStartTrigger
|
|
||||||
),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
cv.Optional(CONF_ON_ALARM_END): automation.validate_automation(
|
|
||||||
{
|
|
||||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
|
||||||
HaierAlarmEndTrigger
|
|
||||||
),
|
|
||||||
}
|
|
||||||
),
|
),
|
||||||
|
cv.Optional(CONF_ON_ALARM_END): automation.validate_automation({}),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
@@ -530,19 +498,25 @@ async def to_code(config):
|
|||||||
var.set_status_message_header_size(config[CONF_STATUS_MESSAGE_HEADER_SIZE])
|
var.set_status_message_header_size(config[CONF_STATUS_MESSAGE_HEADER_SIZE])
|
||||||
)
|
)
|
||||||
for conf in config.get(CONF_ON_ALARM_START, []):
|
for conf in config.get(CONF_ON_ALARM_START, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
await automation.build_callback_automation(
|
||||||
await automation.build_automation(
|
var,
|
||||||
trigger, [(cg.uint8, "code"), (cg.const_char_ptr, "message")], conf
|
"add_alarm_start_callback",
|
||||||
|
[(cg.uint8, "code"), (cg.const_char_ptr, "message")],
|
||||||
|
conf,
|
||||||
)
|
)
|
||||||
for conf in config.get(CONF_ON_ALARM_END, []):
|
for conf in config.get(CONF_ON_ALARM_END, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
await automation.build_callback_automation(
|
||||||
await automation.build_automation(
|
var,
|
||||||
trigger, [(cg.uint8, "code"), (cg.const_char_ptr, "message")], conf
|
"add_alarm_end_callback",
|
||||||
|
[(cg.uint8, "code"), (cg.const_char_ptr, "message")],
|
||||||
|
conf,
|
||||||
)
|
)
|
||||||
for conf in config.get(CONF_ON_STATUS_MESSAGE, []):
|
for conf in config.get(CONF_ON_STATUS_MESSAGE, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
await automation.build_callback_automation(
|
||||||
await automation.build_automation(
|
var,
|
||||||
trigger, [(cg.const_char_ptr, "data"), (cg.size_t, "data_size")], conf
|
"add_status_message_callback",
|
||||||
|
[(cg.const_char_ptr, "data"), (cg.size_t, "data_size")],
|
||||||
|
conf,
|
||||||
)
|
)
|
||||||
# https://github.com/paveldn/HaierProtocol
|
# https://github.com/paveldn/HaierProtocol
|
||||||
cg.add_library("pavlodn/HaierProtocol", "0.9.31")
|
cg.add_library("pavlodn/HaierProtocol", "0.9.31")
|
||||||
|
|||||||
@@ -177,12 +177,5 @@ class HaierClimateBase : public esphome::Component,
|
|||||||
ESPPreferenceObject base_rtc_;
|
ESPPreferenceObject base_rtc_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class StatusMessageTrigger : public Trigger<const char *, size_t> {
|
|
||||||
public:
|
|
||||||
explicit StatusMessageTrigger(HaierClimateBase *parent) {
|
|
||||||
parent->add_status_message_callback([this](const char *data, size_t data_size) { this->trigger(data, data_size); });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace haier
|
} // namespace haier
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|||||||
@@ -200,21 +200,5 @@ class HonClimate : public HaierClimateBase {
|
|||||||
SwitchState quiet_mode_state_{SwitchState::OFF};
|
SwitchState quiet_mode_state_{SwitchState::OFF};
|
||||||
};
|
};
|
||||||
|
|
||||||
class HaierAlarmStartTrigger : public Trigger<uint8_t, const char *> {
|
|
||||||
public:
|
|
||||||
explicit HaierAlarmStartTrigger(HonClimate *parent) {
|
|
||||||
parent->add_alarm_start_callback(
|
|
||||||
[this](uint8_t alarm_code, const char *alarm_message) { this->trigger(alarm_code, alarm_message); });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class HaierAlarmEndTrigger : public Trigger<uint8_t, const char *> {
|
|
||||||
public:
|
|
||||||
explicit HaierAlarmEndTrigger(HonClimate *parent) {
|
|
||||||
parent->add_alarm_end_callback(
|
|
||||||
[this](uint8_t alarm_code, const char *alarm_message) { this->trigger(alarm_code, alarm_message); });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace haier
|
} // namespace haier
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|||||||
Reference in New Issue
Block a user