mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	Merge branch 'dev' into vornado-ir
This commit is contained in:
		| @@ -104,7 +104,9 @@ std::shared_ptr<HttpContainer> HttpRequestArduino::start(std::string url, std::s | |||||||
|   static const size_t HEADER_COUNT = sizeof(header_keys) / sizeof(header_keys[0]); |   static const size_t HEADER_COUNT = sizeof(header_keys) / sizeof(header_keys[0]); | ||||||
|   container->client_.collectHeaders(header_keys, HEADER_COUNT); |   container->client_.collectHeaders(header_keys, HEADER_COUNT); | ||||||
|  |  | ||||||
|  |   App.feed_wdt(); | ||||||
|   container->status_code = container->client_.sendRequest(method.c_str(), body.c_str()); |   container->status_code = container->client_.sendRequest(method.c_str(), body.c_str()); | ||||||
|  |   App.feed_wdt(); | ||||||
|   if (container->status_code < 0) { |   if (container->status_code < 0) { | ||||||
|     ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s", url.c_str(), |     ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s", url.c_str(), | ||||||
|              HTTPClient::errorToString(container->status_code).c_str()); |              HTTPClient::errorToString(container->status_code).c_str()); | ||||||
|   | |||||||
| @@ -117,8 +117,11 @@ std::shared_ptr<HttpContainer> HttpRequestIDF::start(std::string url, std::strin | |||||||
|     return nullptr; |     return nullptr; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   App.feed_wdt(); | ||||||
|   container->content_length = esp_http_client_fetch_headers(client); |   container->content_length = esp_http_client_fetch_headers(client); | ||||||
|  |   App.feed_wdt(); | ||||||
|   container->status_code = esp_http_client_get_status_code(client); |   container->status_code = esp_http_client_get_status_code(client); | ||||||
|  |   App.feed_wdt(); | ||||||
|   if (is_success(container->status_code)) { |   if (is_success(container->status_code)) { | ||||||
|     container->duration_ms = millis() - start; |     container->duration_ms = millis() - start; | ||||||
|     return container; |     return container; | ||||||
| @@ -148,8 +151,11 @@ std::shared_ptr<HttpContainer> HttpRequestIDF::start(std::string url, std::strin | |||||||
|         return nullptr; |         return nullptr; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  |       App.feed_wdt(); | ||||||
|       container->content_length = esp_http_client_fetch_headers(client); |       container->content_length = esp_http_client_fetch_headers(client); | ||||||
|  |       App.feed_wdt(); | ||||||
|       container->status_code = esp_http_client_get_status_code(client); |       container->status_code = esp_http_client_get_status_code(client); | ||||||
|  |       App.feed_wdt(); | ||||||
|       if (is_success(container->status_code)) { |       if (is_success(container->status_code)) { | ||||||
|         container->duration_ms = millis() - start; |         container->duration_ms = millis() - start; | ||||||
|         return container; |         return container; | ||||||
|   | |||||||
| @@ -42,5 +42,12 @@ class TouchTrigger : public Trigger<uint8_t, uint8_t, bool> { | |||||||
|   } |   } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | class BufferOverflowTrigger : public Trigger<> { | ||||||
|  |  public: | ||||||
|  |   explicit BufferOverflowTrigger(Nextion *nextion) { | ||||||
|  |     nextion->add_buffer_overflow_event_callback([this]() { this->trigger(); }); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  |  | ||||||
| }  // namespace nextion | }  // namespace nextion | ||||||
| }  // namespace esphome | }  // namespace esphome | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ CONF_ON_SLEEP = "on_sleep" | |||||||
| CONF_ON_WAKE = "on_wake" | CONF_ON_WAKE = "on_wake" | ||||||
| CONF_ON_SETUP = "on_setup" | CONF_ON_SETUP = "on_setup" | ||||||
| CONF_ON_PAGE = "on_page" | CONF_ON_PAGE = "on_page" | ||||||
|  | CONF_ON_BUFFER_OVERFLOW = "on_buffer_overflow" | ||||||
| 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_START_UP_PAGE = "start_up_page" | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ from esphome.const import ( | |||||||
| from esphome.core import CORE | from esphome.core import CORE | ||||||
| from . import Nextion, nextion_ns, nextion_ref | from . import Nextion, nextion_ns, nextion_ref | ||||||
| from .base_component import ( | from .base_component import ( | ||||||
|  |     CONF_ON_BUFFER_OVERFLOW, | ||||||
|     CONF_ON_SLEEP, |     CONF_ON_SLEEP, | ||||||
|     CONF_ON_WAKE, |     CONF_ON_WAKE, | ||||||
|     CONF_ON_SETUP, |     CONF_ON_SETUP, | ||||||
| @@ -36,6 +37,9 @@ SleepTrigger = nextion_ns.class_("SleepTrigger", automation.Trigger.template()) | |||||||
| WakeTrigger = nextion_ns.class_("WakeTrigger", automation.Trigger.template()) | WakeTrigger = nextion_ns.class_("WakeTrigger", automation.Trigger.template()) | ||||||
| PageTrigger = nextion_ns.class_("PageTrigger", automation.Trigger.template()) | PageTrigger = nextion_ns.class_("PageTrigger", automation.Trigger.template()) | ||||||
| TouchTrigger = nextion_ns.class_("TouchTrigger", automation.Trigger.template()) | TouchTrigger = nextion_ns.class_("TouchTrigger", automation.Trigger.template()) | ||||||
|  | BufferOverflowTrigger = nextion_ns.class_( | ||||||
|  |     "BufferOverflowTrigger", automation.Trigger.template() | ||||||
|  | ) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = ( | CONFIG_SCHEMA = ( | ||||||
|     display.BASIC_DISPLAY_SCHEMA.extend( |     display.BASIC_DISPLAY_SCHEMA.extend( | ||||||
| @@ -68,6 +72,13 @@ CONFIG_SCHEMA = ( | |||||||
|                     cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(TouchTrigger), |                     cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(TouchTrigger), | ||||||
|                 } |                 } | ||||||
|             ), |             ), | ||||||
|  |             cv.Optional(CONF_ON_BUFFER_OVERFLOW): automation.validate_automation( | ||||||
|  |                 { | ||||||
|  |                     cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id( | ||||||
|  |                         BufferOverflowTrigger | ||||||
|  |                     ), | ||||||
|  |                 } | ||||||
|  |             ), | ||||||
|             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.uint8_t, |             cv.Optional(CONF_WAKE_UP_PAGE): cv.uint8_t, | ||||||
|             cv.Optional(CONF_START_UP_PAGE): cv.uint8_t, |             cv.Optional(CONF_START_UP_PAGE): cv.uint8_t, | ||||||
| @@ -151,3 +162,7 @@ async def to_code(config): | |||||||
|             ], |             ], | ||||||
|             conf, |             conf, | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|  |     for conf in config.get(CONF_ON_BUFFER_OVERFLOW, []): | ||||||
|  |         trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var) | ||||||
|  |         await automation.build_automation(trigger, [], conf) | ||||||
|   | |||||||
| @@ -190,6 +190,10 @@ void Nextion::add_touch_event_callback(std::function<void(uint8_t, uint8_t, bool | |||||||
|   this->touch_callback_.add(std::move(callback)); |   this->touch_callback_.add(std::move(callback)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void Nextion::add_buffer_overflow_event_callback(std::function<void()> &&callback) { | ||||||
|  |   this->buffer_overflow_callback_.add(std::move(callback)); | ||||||
|  | } | ||||||
|  |  | ||||||
| void Nextion::update_all_components() { | void Nextion::update_all_components() { | ||||||
|   if ((!this->is_setup() && !this->ignore_is_setup_) || this->is_sleeping()) |   if ((!this->is_setup() && !this->ignore_is_setup_) || this->is_sleeping()) | ||||||
|     return; |     return; | ||||||
| @@ -458,7 +462,9 @@ void Nextion::process_nextion_commands_() { | |||||||
|         this->remove_from_q_(); |         this->remove_from_q_(); | ||||||
|         break; |         break; | ||||||
|       case 0x24:  //  Serial Buffer overflow occurs |       case 0x24:  //  Serial Buffer overflow occurs | ||||||
|         ESP_LOGW(TAG, "Nextion reported Serial Buffer overflow!"); |         // Buffer will continue to receive the current instruction, all previous instructions are lost. | ||||||
|  |         ESP_LOGE(TAG, "Nextion reported Serial Buffer overflow!"); | ||||||
|  |         this->buffer_overflow_callback_.call(); | ||||||
|         break; |         break; | ||||||
|       case 0x65: {  // touch event return data |       case 0x65: {  // touch event return data | ||||||
|         if (to_process_length != 3) { |         if (to_process_length != 3) { | ||||||
|   | |||||||
| @@ -1134,6 +1134,12 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | |||||||
|    */ |    */ | ||||||
|   void add_touch_event_callback(std::function<void(uint8_t, uint8_t, bool)> &&callback); |   void add_touch_event_callback(std::function<void(uint8_t, uint8_t, bool)> &&callback); | ||||||
|  |  | ||||||
|  |   /** Add a callback to be notified when the nextion reports a buffer overflow. | ||||||
|  |    * | ||||||
|  |    * @param callback The void() callback. | ||||||
|  |    */ | ||||||
|  |   void add_buffer_overflow_event_callback(std::function<void()> &&callback); | ||||||
|  |  | ||||||
|   void update_all_components(); |   void update_all_components(); | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
| @@ -1323,6 +1329,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | |||||||
|   CallbackManager<void()> wake_callback_{}; |   CallbackManager<void()> wake_callback_{}; | ||||||
|   CallbackManager<void(uint8_t)> page_callback_{}; |   CallbackManager<void(uint8_t)> page_callback_{}; | ||||||
|   CallbackManager<void(uint8_t, uint8_t, bool)> touch_callback_{}; |   CallbackManager<void(uint8_t, uint8_t, bool)> touch_callback_{}; | ||||||
|  |   CallbackManager<void()> buffer_overflow_callback_{}; | ||||||
|  |  | ||||||
|   optional<nextion_writer_t> writer_; |   optional<nextion_writer_t> writer_; | ||||||
|   float brightness_{1.0}; |   float brightness_{1.0}; | ||||||
|   | |||||||
| @@ -98,6 +98,7 @@ CONFIG_SCHEMA = cv.Schema( | |||||||
|             # esp8266_arduino=cv.Version(2, 7, 0), |             # esp8266_arduino=cv.Version(2, 7, 0), | ||||||
|             esp32_arduino=cv.Version(0, 0, 0), |             esp32_arduino=cv.Version(0, 0, 0), | ||||||
|             esp_idf=cv.Version(4, 0, 0), |             esp_idf=cv.Version(4, 0, 0), | ||||||
|  |             rp2040_arduino=cv.Version(0, 0, 0), | ||||||
|         ), |         ), | ||||||
|     ) |     ) | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ bool RawDumper::dump(RemoteReceiveData src) { | |||||||
|       ESP_LOGI(TAG, "%s", buffer); |       ESP_LOGI(TAG, "%s", buffer); | ||||||
|       buffer_offset = 0; |       buffer_offset = 0; | ||||||
|       written = sprintf(buffer, "  "); |       written = sprintf(buffer, "  "); | ||||||
|       if (i + 1 < src.size()) { |       if (i + 1 < src.size() - 1) { | ||||||
|         written += sprintf(buffer + written, "%" PRId32 ", ", value); |         written += sprintf(buffer + written, "%" PRId32 ", ", value); | ||||||
|       } else { |       } else { | ||||||
|         written += sprintf(buffer + written, "%" PRId32, value); |         written += sprintf(buffer + written, "%" PRId32, value); | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ pyserial==3.5 | |||||||
| platformio==6.1.16  # When updating platformio, also update Dockerfile | platformio==6.1.16  # When updating platformio, also update Dockerfile | ||||||
| esptool==4.7.0 | esptool==4.7.0 | ||||||
| click==8.1.7 | click==8.1.7 | ||||||
| esphome-dashboard==20241118.0 | esphome-dashboard==20241120.0 | ||||||
| aioesphomeapi==24.6.2 | aioesphomeapi==24.6.2 | ||||||
| zeroconf==0.132.2 | zeroconf==0.132.2 | ||||||
| puremagic==1.27 | puremagic==1.27 | ||||||
|   | |||||||
| @@ -58,3 +58,6 @@ display: | |||||||
|     on_page: |     on_page: | ||||||
|       then: |       then: | ||||||
|         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' |         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' | ||||||
|  |     on_buffer_overflow: | ||||||
|  |       then: | ||||||
|  |         logger.log: "Nextion reported a buffer overflow!" | ||||||
|   | |||||||
| @@ -58,3 +58,6 @@ display: | |||||||
|     on_page: |     on_page: | ||||||
|       then: |       then: | ||||||
|         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' |         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' | ||||||
|  |     on_buffer_overflow: | ||||||
|  |       then: | ||||||
|  |         logger.log: "Nextion reported a buffer overflow!" | ||||||
|   | |||||||
| @@ -58,3 +58,6 @@ display: | |||||||
|     on_page: |     on_page: | ||||||
|       then: |       then: | ||||||
|         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' |         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' | ||||||
|  |     on_buffer_overflow: | ||||||
|  |       then: | ||||||
|  |         logger.log: "Nextion reported a buffer overflow!" | ||||||
|   | |||||||
| @@ -58,3 +58,6 @@ display: | |||||||
|     on_page: |     on_page: | ||||||
|       then: |       then: | ||||||
|         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' |         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' | ||||||
|  |     on_buffer_overflow: | ||||||
|  |       then: | ||||||
|  |         logger.log: "Nextion reported a buffer overflow!" | ||||||
|   | |||||||
| @@ -58,3 +58,6 @@ display: | |||||||
|     on_page: |     on_page: | ||||||
|       then: |       then: | ||||||
|         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' |         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' | ||||||
|  |     on_buffer_overflow: | ||||||
|  |       then: | ||||||
|  |         logger.log: "Nextion reported a buffer overflow!" | ||||||
|   | |||||||
| @@ -53,3 +53,6 @@ display: | |||||||
|     on_page: |     on_page: | ||||||
|       then: |       then: | ||||||
|         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' |         lambda: 'ESP_LOGD("display","Display shows new page %u", x);' | ||||||
|  |     on_buffer_overflow: | ||||||
|  |       then: | ||||||
|  |         logger.log: "Nextion reported a buffer overflow!" | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								tests/components/online_image/common-rp2040.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								tests/components/online_image/common-rp2040.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | <<: !include common.yaml | ||||||
|  |  | ||||||
|  | spi: | ||||||
|  |   - id: spi_main_lcd | ||||||
|  |     clk_pin: 18 | ||||||
|  |     mosi_pin: 19 | ||||||
|  |     miso_pin: 16 | ||||||
|  |  | ||||||
|  | display: | ||||||
|  |   - platform: ili9xxx | ||||||
|  |     id: main_lcd | ||||||
|  |     model: ili9342 | ||||||
|  |     cs_pin: 20 | ||||||
|  |     dc_pin: 17 | ||||||
|  |     reset_pin: 21 | ||||||
|  |     invert_colors: true | ||||||
|  |     lambda: |- | ||||||
|  |       it.fill(Color(0, 0, 0)); | ||||||
|  |       it.image(0, 0, id(online_rgba_image)); | ||||||
							
								
								
									
										4
									
								
								tests/components/online_image/test.rp2040-ard.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tests/components/online_image/test.rp2040-ard.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | <<: !include common-rp2040.yaml | ||||||
|  |  | ||||||
|  | http_request: | ||||||
|  |   verify_ssl: false | ||||||
		Reference in New Issue
	
	Block a user