13static const char *
const TAG =
"tuya.cover";
28 if (restore.has_value())
34 if (restore.has_value()) {
35 restore->to_call(
this).perform();
50 ESP_LOGD(TAG,
"Ignoring MCU position report - not calibrated");
60 if (
call.get_stop()) {
66 auto position_int =
static_cast<uint32_t
>(pos * this->
value_range_);
67 position_int = position_int + this->
min_value_;
72 if (
call.get_position().has_value()) {
73 auto pos = *
call.get_position();
82 auto position_int =
static_cast<uint32_t
>(pos * this->
value_range_);
83 position_int = position_int + this->
min_value_;
98 ESP_LOGD(TAG,
"Setting direction: inverted");
100 ESP_LOGD(TAG,
"Setting direction: normal");
107 ESP_LOGCONFIG(TAG,
"Tuya Cover:");
110 ESP_LOGCONFIG(TAG,
" Inverted");
112 ESP_LOGCONFIG(TAG,
" Configured as Inverted, but direction_datapoint isn't configured");
116 ESP_LOGCONFIG(TAG,
" Position Reporting Inverted");
119 ESP_LOGCONFIG(TAG,
" Control has datapoint ID %u", *this->
control_id_);
122 ESP_LOGCONFIG(TAG,
" Direction has datapoint ID %u", *this->
direction_id_);
125 ESP_LOGCONFIG(TAG,
" Position has datapoint ID %u", *this->
position_id_);
134 traits.set_supports_stop(
true);
135 traits.set_supports_position(
true);
optional< CoverRestoreState > restore_state_()
void publish_state(bool save=true)
Publish the current state of the cover.
float position
The position of the cover from 0.0 (fully closed) to 1.0 (fully open).
void dump_config() override
optional< uint8_t > control_id_
cover::CoverTraits get_traits() override
optional< uint8_t > position_report_id_
bool invert_position_report_
void set_direction_(bool inverted)
optional< uint8_t > direction_id_
optional< uint8_t > position_id_
void control(const cover::CoverCall &call) override
TuyaCoverRestoreMode restore_mode_
void add_on_initialized_callback(std::function< void()> callback)
void set_boolean_datapoint_value(uint8_t datapoint_id, bool value)
void force_set_integer_datapoint_value(uint8_t datapoint_id, uint32_t value)
void register_listener(uint8_t datapoint_id, const std::function< void(TuyaDatapoint)> &func)
void force_set_enum_datapoint_value(uint8_t datapoint_id, uint8_t value)
const uint8_t COMMAND_OPEN
const uint8_t COMMAND_CLOSE
const uint8_t COMMAND_STOP
Providing packet encoding functions for exchanging data with a remote host.