mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 16:38:16 +01:00
Remove page jump on Nextion startup (#5673)
This commit is contained in:
parent
defe8ac97b
commit
a8a9c6192d
5 changed files with 46 additions and 1 deletions
|
@ -21,6 +21,7 @@ CONF_ON_SETUP = "on_setup"
|
||||||
CONF_ON_PAGE = "on_page"
|
CONF_ON_PAGE = "on_page"
|
||||||
CONF_TOUCH_SLEEP_TIMEOUT = "touch_sleep_timeout"
|
CONF_TOUCH_SLEEP_TIMEOUT = "touch_sleep_timeout"
|
||||||
CONF_WAKE_UP_PAGE = "wake_up_page"
|
CONF_WAKE_UP_PAGE = "wake_up_page"
|
||||||
|
CONF_START_UP_PAGE = "start_up_page"
|
||||||
CONF_AUTO_WAKE_ON_TOUCH = "auto_wake_on_touch"
|
CONF_AUTO_WAKE_ON_TOUCH = "auto_wake_on_touch"
|
||||||
CONF_WAVE_MAX_LENGTH = "wave_max_length"
|
CONF_WAVE_MAX_LENGTH = "wave_max_length"
|
||||||
CONF_BACKGROUND_COLOR = "background_color"
|
CONF_BACKGROUND_COLOR = "background_color"
|
||||||
|
|
|
@ -18,6 +18,7 @@ from .base_component import (
|
||||||
CONF_TFT_URL,
|
CONF_TFT_URL,
|
||||||
CONF_TOUCH_SLEEP_TIMEOUT,
|
CONF_TOUCH_SLEEP_TIMEOUT,
|
||||||
CONF_WAKE_UP_PAGE,
|
CONF_WAKE_UP_PAGE,
|
||||||
|
CONF_START_UP_PAGE,
|
||||||
CONF_AUTO_WAKE_ON_TOUCH,
|
CONF_AUTO_WAKE_ON_TOUCH,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -59,6 +60,7 @@ CONFIG_SCHEMA = (
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_TOUCH_SLEEP_TIMEOUT): cv.int_range(min=3, max=65535),
|
cv.Optional(CONF_TOUCH_SLEEP_TIMEOUT): cv.int_range(min=3, max=65535),
|
||||||
cv.Optional(CONF_WAKE_UP_PAGE): cv.positive_int,
|
cv.Optional(CONF_WAKE_UP_PAGE): cv.positive_int,
|
||||||
|
cv.Optional(CONF_START_UP_PAGE): cv.positive_int,
|
||||||
cv.Optional(CONF_AUTO_WAKE_ON_TOUCH, default=True): cv.boolean,
|
cv.Optional(CONF_AUTO_WAKE_ON_TOUCH, default=True): cv.boolean,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -95,6 +97,9 @@ async def to_code(config):
|
||||||
if CONF_WAKE_UP_PAGE in config:
|
if CONF_WAKE_UP_PAGE in config:
|
||||||
cg.add(var.set_wake_up_page_internal(config[CONF_WAKE_UP_PAGE]))
|
cg.add(var.set_wake_up_page_internal(config[CONF_WAKE_UP_PAGE]))
|
||||||
|
|
||||||
|
if CONF_START_UP_PAGE in config:
|
||||||
|
cg.add(var.set_start_up_page_internal(config[CONF_START_UP_PAGE]))
|
||||||
|
|
||||||
if CONF_AUTO_WAKE_ON_TOUCH in config:
|
if CONF_AUTO_WAKE_ON_TOUCH in config:
|
||||||
cg.add(var.set_auto_wake_on_touch_internal(config[CONF_AUTO_WAKE_ON_TOUCH]))
|
cg.add(var.set_auto_wake_on_touch_internal(config[CONF_AUTO_WAKE_ON_TOUCH]))
|
||||||
|
|
||||||
|
|
|
@ -134,6 +134,10 @@ void Nextion::dump_config() {
|
||||||
if (this->wake_up_page_ != -1) {
|
if (this->wake_up_page_ != -1) {
|
||||||
ESP_LOGCONFIG(TAG, " Wake Up Page : %d", this->wake_up_page_);
|
ESP_LOGCONFIG(TAG, " Wake Up Page : %d", this->wake_up_page_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this->start_up_page_ != -1) {
|
||||||
|
ESP_LOGCONFIG(TAG, " Start Up Page : %d", this->start_up_page_);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float Nextion::get_setup_priority() const { return setup_priority::DATA; }
|
float Nextion::get_setup_priority() const { return setup_priority::DATA; }
|
||||||
|
@ -231,7 +235,11 @@ void Nextion::loop() {
|
||||||
this->send_command_("bkcmd=3"); // Always, returns 0x00 to 0x23 result of serial command.
|
this->send_command_("bkcmd=3"); // Always, returns 0x00 to 0x23 result of serial command.
|
||||||
|
|
||||||
this->set_backlight_brightness(this->brightness_);
|
this->set_backlight_brightness(this->brightness_);
|
||||||
this->goto_page("0");
|
|
||||||
|
// Check if a startup page has been set and send the command
|
||||||
|
if (this->start_up_page_ != -1) {
|
||||||
|
this->goto_page(this->start_up_page_);
|
||||||
|
}
|
||||||
|
|
||||||
this->set_auto_wake_on_touch(this->auto_wake_on_touch_);
|
this->set_auto_wake_on_touch(this->auto_wake_on_touch_);
|
||||||
|
|
||||||
|
|
|
@ -334,6 +334,18 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
||||||
* Switches to the page named `main`. Pages are named in the Nextion Editor.
|
* Switches to the page named `main`. Pages are named in the Nextion Editor.
|
||||||
*/
|
*/
|
||||||
void goto_page(const char *page);
|
void goto_page(const char *page);
|
||||||
|
/**
|
||||||
|
* Show the page with a given id.
|
||||||
|
* @param page The id of the page.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* ```cpp
|
||||||
|
* it.goto_page(2);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Switches to the page named `main`. Pages are named in the Nextion Editor.
|
||||||
|
*/
|
||||||
|
void goto_page(uint8_t page);
|
||||||
/**
|
/**
|
||||||
* Hide a component.
|
* Hide a component.
|
||||||
* @param component The component name.
|
* @param component The component name.
|
||||||
|
@ -605,6 +617,20 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
||||||
* The display will wake up to page 2.
|
* The display will wake up to page 2.
|
||||||
*/
|
*/
|
||||||
void set_wake_up_page(uint8_t page_id = 255);
|
void set_wake_up_page(uint8_t page_id = 255);
|
||||||
|
/**
|
||||||
|
* Sets which page Nextion loads when connecting to ESPHome.
|
||||||
|
* @param page_id The page id, from 0 to the lage page in Nextion. Set 255 (not set to any existing page) to
|
||||||
|
* wakes up to current page.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* ```cpp
|
||||||
|
* it.set_start_up_page(2);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* The display will go to page 2 when it establishes a connection to ESPHome.
|
||||||
|
*/
|
||||||
|
void set_start_up_page(uint8_t page_id = 255);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets if Nextion should auto-wake from sleep when touch press occurs.
|
* Sets if Nextion should auto-wake from sleep when touch press occurs.
|
||||||
* @param auto_wake True or false. When auto_wake is true and Nextion is in sleep mode,
|
* @param auto_wake True or false. When auto_wake is true and Nextion is in sleep mode,
|
||||||
|
@ -736,6 +762,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
||||||
this->touch_sleep_timeout_ = touch_sleep_timeout;
|
this->touch_sleep_timeout_ = touch_sleep_timeout;
|
||||||
}
|
}
|
||||||
void set_wake_up_page_internal(uint8_t wake_up_page) { this->wake_up_page_ = wake_up_page; }
|
void set_wake_up_page_internal(uint8_t wake_up_page) { this->wake_up_page_ = wake_up_page; }
|
||||||
|
void set_start_up_page_internal(uint8_t start_up_page) { this->start_up_page_ = start_up_page; }
|
||||||
void set_auto_wake_on_touch_internal(bool auto_wake_on_touch) { this->auto_wake_on_touch_ = auto_wake_on_touch; }
|
void set_auto_wake_on_touch_internal(bool auto_wake_on_touch) { this->auto_wake_on_touch_ = auto_wake_on_touch; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -758,6 +785,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
||||||
bool is_updating_ = false;
|
bool is_updating_ = false;
|
||||||
uint32_t touch_sleep_timeout_ = 0;
|
uint32_t touch_sleep_timeout_ = 0;
|
||||||
int wake_up_page_ = -1;
|
int wake_up_page_ = -1;
|
||||||
|
int start_up_page_ = -1;
|
||||||
bool auto_wake_on_touch_ = true;
|
bool auto_wake_on_touch_ = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,6 +13,8 @@ void Nextion::set_wake_up_page(uint8_t page_id) {
|
||||||
this->add_no_result_to_queue_with_set_internal_("wake_up_page", "wup", page_id, true);
|
this->add_no_result_to_queue_with_set_internal_("wake_up_page", "wup", page_id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Nextion::set_start_up_page(uint8_t page_id) { this->start_up_page_ = page_id; }
|
||||||
|
|
||||||
void Nextion::set_touch_sleep_timeout(uint16_t timeout) {
|
void Nextion::set_touch_sleep_timeout(uint16_t timeout) {
|
||||||
if (timeout < 3) {
|
if (timeout < 3) {
|
||||||
ESP_LOGD(TAG, "Sleep timeout out of bounds, range 3-65535");
|
ESP_LOGD(TAG, "Sleep timeout out of bounds, range 3-65535");
|
||||||
|
@ -124,6 +126,7 @@ void Nextion::set_component_text_printf(const char *component, const char *forma
|
||||||
|
|
||||||
// General Nextion
|
// General Nextion
|
||||||
void Nextion::goto_page(const char *page) { this->add_no_result_to_queue_with_printf_("goto_page", "page %s", page); }
|
void Nextion::goto_page(const char *page) { this->add_no_result_to_queue_with_printf_("goto_page", "page %s", page); }
|
||||||
|
void Nextion::goto_page(uint8_t page) { this->add_no_result_to_queue_with_printf_("goto_page", "page %i", page); }
|
||||||
|
|
||||||
void Nextion::set_backlight_brightness(float brightness) {
|
void Nextion::set_backlight_brightness(float brightness) {
|
||||||
if (brightness < 0 || brightness > 1.0) {
|
if (brightness < 0 || brightness > 1.0) {
|
||||||
|
|
Loading…
Reference in a new issue