mirror of
https://github.com/esphome/esphome.git
synced 2026-06-01 01:19:45 +08:00
[nextion] Add accessor const qualifiers, return by ref, and deprecate get_wave_chan_id() (#15204)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
This commit is contained in:
@@ -21,15 +21,15 @@ class NextionBinarySensor : public NextionComponent,
|
||||
void process_touch(uint8_t page_id, uint8_t component_id, bool state) override;
|
||||
|
||||
// Set the components page id for Nextion Touch Component
|
||||
void set_page_id(uint8_t page_id) { page_id_ = page_id; }
|
||||
void set_page_id(uint8_t page_id) { this->page_id_ = page_id; }
|
||||
// Set the components component id for Nextion Touch Component
|
||||
void set_component_id(uint8_t component_id) { component_id_ = component_id; }
|
||||
void set_component_id(uint8_t component_id) { this->component_id_ = component_id; }
|
||||
|
||||
void set_state(bool state) override { this->set_state(state, true, true); }
|
||||
void set_state(bool state, bool publish) override { this->set_state(state, publish, true); }
|
||||
void set_state(bool state, bool publish, bool send_to_nextion) override;
|
||||
|
||||
NextionQueueType get_queue_type() override { return NextionQueueType::BINARY_SENSOR; }
|
||||
NextionQueueType get_queue_type() const override { return NextionQueueType::BINARY_SENSOR; }
|
||||
void set_state_from_string(const std::string &state_value, bool publish, bool send_to_nextion) override {}
|
||||
void set_state_from_int(int state_value, bool publish, bool send_to_nextion) override {
|
||||
this->set_state(state_value != 0, publish, send_to_nextion);
|
||||
|
||||
@@ -281,7 +281,7 @@ void Nextion::print_queue_members_() {
|
||||
ESP_LOGN(TAG, "Queue null");
|
||||
} else {
|
||||
ESP_LOGN(TAG, "Queue type: %d:%s, name: %s", i->component->get_queue_type(),
|
||||
i->component->get_queue_type_string().c_str(), i->component->get_variable_name().c_str());
|
||||
i->component->get_queue_type_string(), i->component->get_variable_name().c_str());
|
||||
}
|
||||
}
|
||||
ESP_LOGN(TAG, "*******************************************");
|
||||
@@ -607,7 +607,7 @@ void Nextion::process_nextion_commands_() {
|
||||
ESP_LOGE(TAG, "String return but '%s' not text sensor", component->get_variable_name().c_str());
|
||||
} else {
|
||||
ESP_LOGN(TAG, "String resp: '%s' id: %s type: %s", to_process.c_str(), component->get_variable_name().c_str(),
|
||||
component->get_queue_type_string().c_str());
|
||||
component->get_queue_type_string());
|
||||
}
|
||||
|
||||
delete nb; // NOLINT(cppcoreguidelines-owning-memory)
|
||||
@@ -649,7 +649,7 @@ void Nextion::process_nextion_commands_() {
|
||||
component->get_queue_type());
|
||||
} else {
|
||||
ESP_LOGN(TAG, "Numeric: %s type %d:%s val %d", component->get_variable_name().c_str(),
|
||||
component->get_queue_type(), component->get_queue_type_string().c_str(), value);
|
||||
component->get_queue_type(), component->get_queue_type_string(), value);
|
||||
component->set_state_from_int(value, true, false);
|
||||
}
|
||||
|
||||
@@ -842,24 +842,10 @@ void Nextion::process_nextion_commands_() {
|
||||
if (this->max_q_age_ms_ > 0 && !this->nextion_queue_.empty() &&
|
||||
ms - this->nextion_queue_.front()->queue_time > this->max_q_age_ms_) {
|
||||
for (auto it = this->nextion_queue_.begin(); it != this->nextion_queue_.end();) {
|
||||
NextionComponentBase *component = (*it)->component;
|
||||
if (ms - (*it)->queue_time > this->max_q_age_ms_) {
|
||||
if ((*it)->queue_time == 0) {
|
||||
ESP_LOGD(TAG, "Remove old queue '%s':'%s' (t=0)", component->get_queue_type_string().c_str(),
|
||||
component->get_variable_name().c_str());
|
||||
}
|
||||
|
||||
if (component->get_variable_name() == "sleep_wake") {
|
||||
this->is_sleeping_ = false;
|
||||
}
|
||||
|
||||
if ((*it)->pending_command.empty()) {
|
||||
ESP_LOGD(TAG, "Remove old queue '%s':'%s'", component->get_queue_type_string().c_str(),
|
||||
component->get_variable_name().c_str());
|
||||
} else {
|
||||
ESP_LOGD(TAG, "Remove old queue '%s':'%s' cmd:'%s'", component->get_queue_type_string().c_str(),
|
||||
component->get_variable_name().c_str(), (*it)->pending_command.c_str());
|
||||
}
|
||||
NextionComponentBase *component = (*it)->component;
|
||||
ESP_LOGV(TAG, "Remove old queue '%s':'%s'", component->get_queue_type_string(),
|
||||
component->get_variable_name().c_str());
|
||||
|
||||
if (component->get_queue_type() == NextionQueueType::NO_RESULT) {
|
||||
if (component->get_variable_name() == "sleep_wake") {
|
||||
@@ -940,7 +926,7 @@ void Nextion::all_components_send_state_(bool force_update) {
|
||||
binarysensortype->send_state_to_nextion();
|
||||
}
|
||||
for (auto *sensortype : this->sensortype_) {
|
||||
if ((force_update || sensortype->get_needs_to_send_update()) && sensortype->get_wave_chan_id() == 0)
|
||||
if ((force_update || sensortype->get_needs_to_send_update()) && sensortype->get_wave_channel_id() == 0)
|
||||
sensortype->send_state_to_nextion();
|
||||
}
|
||||
for (auto *switchtype : this->switchtype_) {
|
||||
@@ -1236,7 +1222,7 @@ void Nextion::add_to_get_queue(NextionComponentBase *component) {
|
||||
nextion_queue->component = component;
|
||||
nextion_queue->queue_time = App.get_loop_component_start_time();
|
||||
|
||||
ESP_LOGN(TAG, "Queue %s: %s", component->get_queue_type_string().c_str(), component->get_variable_name().c_str());
|
||||
ESP_LOGN(TAG, "Queue %s: %s", component->get_queue_type_string(), component->get_variable_name().c_str());
|
||||
|
||||
std::string command = "get " + component->get_variable_name_to_send();
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include "esphome/core/defines.h"
|
||||
@@ -35,12 +37,8 @@ class NextionComponentBase {
|
||||
virtual ~NextionComponentBase() = default;
|
||||
|
||||
void set_variable_name(const std::string &variable_name, const std::string &variable_name_to_send = "") {
|
||||
variable_name_ = variable_name;
|
||||
if (variable_name_to_send.empty()) {
|
||||
variable_name_to_send_ = variable_name;
|
||||
} else {
|
||||
variable_name_to_send_ = variable_name_to_send;
|
||||
}
|
||||
this->variable_name_ = variable_name;
|
||||
this->variable_name_to_send_ = variable_name_to_send.empty() ? variable_name : variable_name_to_send;
|
||||
}
|
||||
|
||||
virtual void update_component_settings(){};
|
||||
@@ -64,14 +62,14 @@ class NextionComponentBase {
|
||||
virtual void set_state(const std::string &state, bool publish) {}
|
||||
virtual void set_state(const std::string &state, bool publish, bool send_to_nextion){};
|
||||
|
||||
uint8_t get_component_id() { return this->component_id_; }
|
||||
void set_component_id(uint8_t component_id) { component_id_ = component_id; }
|
||||
uint8_t get_component_id() const { return this->component_id_; }
|
||||
void set_component_id(uint8_t component_id) { this->component_id_ = component_id; }
|
||||
|
||||
uint8_t get_wave_channel_id() { return this->wave_chan_id_; }
|
||||
uint8_t get_wave_channel_id() const { return this->wave_chan_id_; }
|
||||
void set_wave_channel_id(uint8_t wave_chan_id) { this->wave_chan_id_ = wave_chan_id; }
|
||||
|
||||
std::vector<uint8_t> get_wave_buffer() { return this->wave_buffer_; }
|
||||
size_t get_wave_buffer_size() { return this->wave_buffer_.size(); }
|
||||
const std::vector<uint8_t> &get_wave_buffer() const { return this->wave_buffer_; }
|
||||
size_t get_wave_buffer_size() const { return this->wave_buffer_.size(); }
|
||||
void clear_wave_buffer(size_t buffer_sent) {
|
||||
if (this->wave_buffer_.size() <= buffer_sent) {
|
||||
this->wave_buffer_.clear();
|
||||
@@ -80,15 +78,17 @@ class NextionComponentBase {
|
||||
}
|
||||
}
|
||||
|
||||
std::string get_variable_name() { return this->variable_name_; }
|
||||
std::string get_variable_name_to_send() { return this->variable_name_to_send_; }
|
||||
virtual NextionQueueType get_queue_type() { return NextionQueueType::NO_RESULT; }
|
||||
virtual std::string get_queue_type_string() { return NEXTION_QUEUE_TYPE_STRINGS[this->get_queue_type()]; }
|
||||
const std::string &get_variable_name() const { return this->variable_name_; }
|
||||
const std::string &get_variable_name_to_send() const { return this->variable_name_to_send_; }
|
||||
virtual NextionQueueType get_queue_type() const { return NextionQueueType::NO_RESULT; }
|
||||
virtual const char *get_queue_type_string() const { return NEXTION_QUEUE_TYPE_STRINGS[this->get_queue_type()]; }
|
||||
virtual void set_state_from_int(int state_value, bool publish, bool send_to_nextion){};
|
||||
virtual void set_state_from_string(const std::string &state_value, bool publish, bool send_to_nextion){};
|
||||
virtual void send_state_to_nextion(){};
|
||||
bool get_needs_to_send_update() { return this->needs_to_send_update_; }
|
||||
uint8_t get_wave_chan_id() { return this->wave_chan_id_; }
|
||||
bool get_needs_to_send_update() const { return this->needs_to_send_update_; }
|
||||
// Remove before 2026.10.0
|
||||
ESPDEPRECATED("Use get_wave_channel_id() instead. Will be removed in 2026.10.0", "2026.4.0")
|
||||
uint8_t get_wave_chan_id() const { return this->get_wave_channel_id(); }
|
||||
void set_wave_max_length(int wave_max_length) { this->wave_max_length_ = wave_max_length; }
|
||||
|
||||
protected:
|
||||
|
||||
@@ -17,7 +17,7 @@ class NextionSensor : public NextionComponent, public sensor::Sensor, public Pol
|
||||
void update() override;
|
||||
void add_to_wave_buffer(float state);
|
||||
void set_precision(uint8_t precision) { this->precision_ = precision; }
|
||||
void set_component_id(uint8_t component_id) { component_id_ = component_id; }
|
||||
void set_component_id(uint8_t component_id) { this->component_id_ = component_id; }
|
||||
void set_wave_channel_id(uint8_t wave_chan_id) { this->wave_chan_id_ = wave_chan_id; }
|
||||
void set_wave_max_value(uint32_t wave_maxvalue) { this->wave_maxvalue_ = wave_maxvalue; }
|
||||
void process_sensor(const std::string &variable_name, int state) override;
|
||||
@@ -27,9 +27,8 @@ class NextionSensor : public NextionComponent, public sensor::Sensor, public Pol
|
||||
void set_state(float state, bool publish, bool send_to_nextion) override;
|
||||
|
||||
void set_waveform_send_last_value(bool send_last_value) { this->send_last_value_ = send_last_value; }
|
||||
uint8_t get_wave_chan_id() { return this->wave_chan_id_; }
|
||||
void set_wave_max_length(int wave_max_length) { this->wave_max_length_ = wave_max_length; }
|
||||
NextionQueueType get_queue_type() override {
|
||||
NextionQueueType get_queue_type() const override {
|
||||
return this->wave_chan_id_ == UINT8_MAX ? NextionQueueType::SENSOR : NextionQueueType::WAVEFORM_SENSOR;
|
||||
}
|
||||
void set_state_from_string(const std::string &state_value, bool publish, bool send_to_nextion) override {}
|
||||
|
||||
@@ -21,7 +21,7 @@ class NextionSwitch : public NextionComponent, public switch_::Switch, public Po
|
||||
void set_state(bool state, bool publish, bool send_to_nextion) override;
|
||||
|
||||
void send_state_to_nextion() override { this->set_state(this->state, false, true); };
|
||||
NextionQueueType get_queue_type() override { return NextionQueueType::SWITCH; }
|
||||
NextionQueueType get_queue_type() const override { return NextionQueueType::SWITCH; }
|
||||
void set_state_from_string(const std::string &state_value, bool publish, bool send_to_nextion) override {}
|
||||
void set_state_from_int(int state_value, bool publish, bool send_to_nextion) override {
|
||||
this->set_state(state_value != 0, publish, send_to_nextion);
|
||||
|
||||
@@ -22,7 +22,7 @@ class NextionTextSensor : public NextionComponent, public text_sensor::TextSenso
|
||||
void set_state(const std::string &state, bool publish, bool send_to_nextion) override;
|
||||
|
||||
void send_state_to_nextion() override { this->set_state(this->state, false, true); };
|
||||
NextionQueueType get_queue_type() override { return NextionQueueType::TEXT_SENSOR; }
|
||||
NextionQueueType get_queue_type() const override { return NextionQueueType::TEXT_SENSOR; }
|
||||
void set_state_from_int(int state_value, bool publish, bool send_to_nextion) override {}
|
||||
void set_state_from_string(const std::string &state_value, bool publish, bool send_to_nextion) override {
|
||||
this->set_state(state_value, publish, send_to_nextion);
|
||||
|
||||
Reference in New Issue
Block a user