mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +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]); | ||||
|   container->client_.collectHeaders(header_keys, HEADER_COUNT); | ||||
|  | ||||
|   App.feed_wdt(); | ||||
|   container->status_code = container->client_.sendRequest(method.c_str(), body.c_str()); | ||||
|   App.feed_wdt(); | ||||
|   if (container->status_code < 0) { | ||||
|     ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s", url.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; | ||||
|   } | ||||
|  | ||||
|   App.feed_wdt(); | ||||
|   container->content_length = esp_http_client_fetch_headers(client); | ||||
|   App.feed_wdt(); | ||||
|   container->status_code = esp_http_client_get_status_code(client); | ||||
|   App.feed_wdt(); | ||||
|   if (is_success(container->status_code)) { | ||||
|     container->duration_ms = millis() - start; | ||||
|     return container; | ||||
| @@ -148,8 +151,11 @@ std::shared_ptr<HttpContainer> HttpRequestIDF::start(std::string url, std::strin | ||||
|         return nullptr; | ||||
|       } | ||||
|  | ||||
|       App.feed_wdt(); | ||||
|       container->content_length = esp_http_client_fetch_headers(client); | ||||
|       App.feed_wdt(); | ||||
|       container->status_code = esp_http_client_get_status_code(client); | ||||
|       App.feed_wdt(); | ||||
|       if (is_success(container->status_code)) { | ||||
|         container->duration_ms = millis() - start; | ||||
|         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 esphome | ||||
|   | ||||
| @@ -18,6 +18,7 @@ CONF_ON_SLEEP = "on_sleep" | ||||
| CONF_ON_WAKE = "on_wake" | ||||
| CONF_ON_SETUP = "on_setup" | ||||
| CONF_ON_PAGE = "on_page" | ||||
| CONF_ON_BUFFER_OVERFLOW = "on_buffer_overflow" | ||||
| CONF_TOUCH_SLEEP_TIMEOUT = "touch_sleep_timeout" | ||||
| CONF_WAKE_UP_PAGE = "wake_up_page" | ||||
| CONF_START_UP_PAGE = "start_up_page" | ||||
|   | ||||
| @@ -13,6 +13,7 @@ from esphome.const import ( | ||||
| from esphome.core import CORE | ||||
| from . import Nextion, nextion_ns, nextion_ref | ||||
| from .base_component import ( | ||||
|     CONF_ON_BUFFER_OVERFLOW, | ||||
|     CONF_ON_SLEEP, | ||||
|     CONF_ON_WAKE, | ||||
|     CONF_ON_SETUP, | ||||
| @@ -36,6 +37,9 @@ SleepTrigger = nextion_ns.class_("SleepTrigger", automation.Trigger.template()) | ||||
| WakeTrigger = nextion_ns.class_("WakeTrigger", automation.Trigger.template()) | ||||
| PageTrigger = nextion_ns.class_("PageTrigger", automation.Trigger.template()) | ||||
| TouchTrigger = nextion_ns.class_("TouchTrigger", automation.Trigger.template()) | ||||
| BufferOverflowTrigger = nextion_ns.class_( | ||||
|     "BufferOverflowTrigger", automation.Trigger.template() | ||||
| ) | ||||
|  | ||||
| CONFIG_SCHEMA = ( | ||||
|     display.BASIC_DISPLAY_SCHEMA.extend( | ||||
| @@ -68,6 +72,13 @@ CONFIG_SCHEMA = ( | ||||
|                     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_WAKE_UP_PAGE): cv.uint8_t, | ||||
|             cv.Optional(CONF_START_UP_PAGE): cv.uint8_t, | ||||
| @@ -151,3 +162,7 @@ async def to_code(config): | ||||
|             ], | ||||
|             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)); | ||||
| } | ||||
|  | ||||
| void Nextion::add_buffer_overflow_event_callback(std::function<void()> &&callback) { | ||||
|   this->buffer_overflow_callback_.add(std::move(callback)); | ||||
| } | ||||
|  | ||||
| void Nextion::update_all_components() { | ||||
|   if ((!this->is_setup() && !this->ignore_is_setup_) || this->is_sleeping()) | ||||
|     return; | ||||
| @@ -458,7 +462,9 @@ void Nextion::process_nextion_commands_() { | ||||
|         this->remove_from_q_(); | ||||
|         break; | ||||
|       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; | ||||
|       case 0x65: {  // touch event return data | ||||
|         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); | ||||
|  | ||||
|   /** 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(); | ||||
|  | ||||
|   /** | ||||
| @@ -1323,6 +1329,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | ||||
|   CallbackManager<void()> wake_callback_{}; | ||||
|   CallbackManager<void(uint8_t)> page_callback_{}; | ||||
|   CallbackManager<void(uint8_t, uint8_t, bool)> touch_callback_{}; | ||||
|   CallbackManager<void()> buffer_overflow_callback_{}; | ||||
|  | ||||
|   optional<nextion_writer_t> writer_; | ||||
|   float brightness_{1.0}; | ||||
|   | ||||
| @@ -98,6 +98,7 @@ CONFIG_SCHEMA = cv.Schema( | ||||
|             # esp8266_arduino=cv.Version(2, 7, 0), | ||||
|             esp32_arduino=cv.Version(0, 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); | ||||
|       buffer_offset = 0; | ||||
|       written = sprintf(buffer, "  "); | ||||
|       if (i + 1 < src.size()) { | ||||
|       if (i + 1 < src.size() - 1) { | ||||
|         written += sprintf(buffer + written, "%" PRId32 ", ", value); | ||||
|       } else { | ||||
|         written += sprintf(buffer + written, "%" PRId32, value); | ||||
|   | ||||
| @@ -12,7 +12,7 @@ pyserial==3.5 | ||||
| platformio==6.1.16  # When updating platformio, also update Dockerfile | ||||
| esptool==4.7.0 | ||||
| click==8.1.7 | ||||
| esphome-dashboard==20241118.0 | ||||
| esphome-dashboard==20241120.0 | ||||
| aioesphomeapi==24.6.2 | ||||
| zeroconf==0.132.2 | ||||
| puremagic==1.27 | ||||
|   | ||||
| @@ -58,3 +58,6 @@ display: | ||||
|     on_page: | ||||
|       then: | ||||
|         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: | ||||
|       then: | ||||
|         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: | ||||
|       then: | ||||
|         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: | ||||
|       then: | ||||
|         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: | ||||
|       then: | ||||
|         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: | ||||
|       then: | ||||
|         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