Tuya Cover improvements (#2637)

This commit is contained in:
Paul Nicholls
2021-12-02 15:26:56 +13:00
committed by GitHub
parent 54106179a1
commit caf352ff06
5 changed files with 215 additions and 53 deletions
+15 -1
View File
@@ -2,6 +2,7 @@
#include "esphome/core/component.h"
#include "esphome/core/defines.h"
#include "esphome/core/helpers.h"
#include "esphome/components/uart/uart.h"
#ifdef USE_TIME
@@ -81,12 +82,22 @@ class Tuya : public Component, public uart::UARTDevice {
void set_string_datapoint_value(uint8_t datapoint_id, const std::string &value);
void set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
void set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t length);
void force_set_raw_datapoint_value(uint8_t datapoint_id, const std::vector<uint8_t> &value);
void force_set_boolean_datapoint_value(uint8_t datapoint_id, bool value);
void force_set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value);
void force_set_string_datapoint_value(uint8_t datapoint_id, const std::string &value);
void force_set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
void force_set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t length);
TuyaInitState get_init_state();
#ifdef USE_TIME
void set_time_id(time::RealTimeClock *time_id) { this->time_id_ = time_id; }
#endif
void add_ignore_mcu_update_on_datapoints(uint8_t ignore_mcu_update_on_datapoints) {
this->ignore_mcu_update_on_datapoints_.push_back(ignore_mcu_update_on_datapoints);
}
void add_on_initialized_callback(std::function<void()> callback) {
this->initialized_callback_.add(std::move(callback));
}
protected:
void handle_char_(uint8_t c);
@@ -100,7 +111,9 @@ class Tuya : public Component, public uart::UARTDevice {
void send_command_(const TuyaCommand &command);
void send_empty_command_(TuyaCommandType command);
void set_numeric_datapoint_value_(uint8_t datapoint_id, TuyaDatapointType datapoint_type, uint32_t value,
uint8_t length);
uint8_t length, bool forced);
void set_string_datapoint_value_(uint8_t datapoint_id, const std::string &value, bool forced);
void set_raw_datapoint_value_(uint8_t datapoint_id, const std::vector<uint8_t> &value, bool forced);
void send_datapoint_command_(uint8_t datapoint_id, TuyaDatapointType datapoint_type, std::vector<uint8_t> data);
void send_wifi_status_();
@@ -122,6 +135,7 @@ class Tuya : public Component, public uart::UARTDevice {
std::vector<TuyaCommand> command_queue_;
optional<TuyaCommandType> expected_response_{};
uint8_t wifi_status_ = -1;
CallbackManager<void()> initialized_callback_{};
};
} // namespace tuya