81 void setup()
override;
83 void dump_config()
override;
84 void register_listener(uint8_t datapoint_id,
const std::function<
void(
TuyaDatapoint)> &func);
85 void set_raw_datapoint_value(uint8_t datapoint_id,
const std::vector<uint8_t> &value);
86 void set_boolean_datapoint_value(uint8_t datapoint_id,
bool value);
87 void set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value);
89 void set_string_datapoint_value(uint8_t datapoint_id,
const std::string &value);
90 void set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
91 void set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t
length);
92 void force_set_raw_datapoint_value(uint8_t datapoint_id,
const std::vector<uint8_t> &value);
93 void force_set_boolean_datapoint_value(uint8_t datapoint_id,
bool value);
94 void force_set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value);
95 void force_set_string_datapoint_value(uint8_t datapoint_id,
const std::string &value);
96 void force_set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value);
97 void force_set_bitmask_datapoint_value(uint8_t datapoint_id, uint32_t value, uint8_t length);
103 this->ignore_mcu_update_on_datapoints_.push_back(ignore_mcu_update_on_datapoints);
106 this->initialized_callback_.add(std::move(callback));
110 void handle_char_(uint8_t c);
111 void handle_datapoints_(
const uint8_t *buffer,
size_t len);
113 bool validate_message_();
115 void handle_command_(uint8_t command, uint8_t
version,
const uint8_t *buffer,
size_t len);
117 void process_command_queue_();
120 void set_numeric_datapoint_value_(uint8_t datapoint_id,
TuyaDatapointType datapoint_type, uint32_t value,
121 uint8_t length,
bool forced);
122 void set_string_datapoint_value_(uint8_t datapoint_id,
const std::string &value,
bool forced);
123 void set_raw_datapoint_value_(uint8_t datapoint_id,
const std::vector<uint8_t> &value,
bool forced);
124 void send_datapoint_command_(uint8_t datapoint_id,
TuyaDatapointType datapoint_type, std::vector<uint8_t> data);
125 void set_status_pin_();
126 void send_wifi_status_();
127 uint8_t get_wifi_status_code_();
128 uint8_t get_wifi_rssi_();
131 void send_local_time_();
133 bool time_sync_callback_registered_{
false};
136 bool init_failed_{
false};
137 int init_retries_{0};
138 uint8_t protocol_version_ = -1;
140 int status_pin_reported_ = -1;
141 int reset_pin_reported_ = -1;
142 uint32_t last_command_timestamp_ = 0;
143 uint32_t last_rx_char_timestamp_ = 0;
144 std::string product_ =
"";
148 std::vector<uint8_t> ignore_mcu_update_on_datapoints_{};
151 uint8_t wifi_status_ = -1;
float get_setup_priority() const override
The RealTimeClock class exposes common timekeeping functions via the device's local real-time clock...
const float LATE
For components that should be initialized at the very end of the setup process.
void set_time_id(time::RealTimeClock *time_id)
std::vector< TuyaDatapointListener > listeners_
void add_on_initialized_callback(std::function< void()> callback)
std::vector< TuyaDatapoint > datapoints_
std::vector< uint8_t > rx_message_
std::function< void(TuyaDatapoint)> on_datapoint
std::vector< uint8_t > payload
void set_status_pin(InternalGPIOPin *status_pin)
std::vector< TuyaCommand > command_queue_
std::vector< uint8_t > value_raw
void add_ignore_mcu_update_on_datapoints(uint8_t ignore_mcu_update_on_datapoints)