mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Merge branch 'dev' into multi_device
This commit is contained in:
		| @@ -3,7 +3,7 @@ import esphome.config_validation as cv | ||||
| from esphome.const import CONF_SIZE, CONF_TEXT | ||||
| from esphome.cpp_generator import MockObjClass | ||||
|  | ||||
| from ..defines import CONF_MAIN, literal | ||||
| from ..defines import CONF_MAIN | ||||
| from ..lv_validation import color, color_retmapper, lv_text | ||||
| from ..lvcode import LocalVariable, lv, lv_expr | ||||
| from ..schemas import TEXT_SCHEMA | ||||
| @@ -34,7 +34,7 @@ class QrCodeType(WidgetType): | ||||
|         ) | ||||
|  | ||||
|     def get_uses(self): | ||||
|         return ("canvas", "img") | ||||
|         return ("canvas", "img", "label") | ||||
|  | ||||
|     def obj_creator(self, parent: MockObjClass, config: dict): | ||||
|         dark_color = color_retmapper(config[CONF_DARK_COLOR]) | ||||
| @@ -45,10 +45,8 @@ class QrCodeType(WidgetType): | ||||
|     async def to_code(self, w: Widget, config): | ||||
|         if (value := config.get(CONF_TEXT)) is not None: | ||||
|             value = await lv_text.process(value) | ||||
|             with LocalVariable( | ||||
|                 "qr_text", cg.const_char_ptr, value, modifier="" | ||||
|             ) as str_obj: | ||||
|                 lv.qrcode_update(w.obj, str_obj, literal(f"strlen({str_obj})")) | ||||
|             with LocalVariable("qr_text", cg.std_string, value, modifier="") as str_obj: | ||||
|                 lv.qrcode_update(w.obj, str_obj.c_str(), str_obj.size()) | ||||
|  | ||||
|  | ||||
| qr_code_spec = QrCodeType() | ||||
|   | ||||
| @@ -68,6 +68,7 @@ def AUTO_LOAD(): | ||||
|  | ||||
| CONF_DISCOVER_IP = "discover_ip" | ||||
| CONF_IDF_SEND_ASYNC = "idf_send_async" | ||||
| CONF_WAIT_FOR_CONNECTION = "wait_for_connection" | ||||
|  | ||||
|  | ||||
| def validate_message_just_topic(value): | ||||
| @@ -298,6 +299,7 @@ CONFIG_SCHEMA = cv.All( | ||||
|                 } | ||||
|             ), | ||||
|             cv.Optional(CONF_PUBLISH_NAN_AS_NONE, default=False): cv.boolean, | ||||
|             cv.Optional(CONF_WAIT_FOR_CONNECTION, default=False): cv.boolean, | ||||
|         } | ||||
|     ), | ||||
|     validate_config, | ||||
| @@ -453,6 +455,8 @@ async def to_code(config): | ||||
|  | ||||
|     cg.add(var.set_publish_nan_as_none(config[CONF_PUBLISH_NAN_AS_NONE])) | ||||
|  | ||||
|     cg.add(var.set_wait_for_connection(config[CONF_WAIT_FOR_CONNECTION])) | ||||
|  | ||||
|  | ||||
| MQTT_PUBLISH_ACTION_SCHEMA = cv.Schema( | ||||
|     { | ||||
|   | ||||
| @@ -176,7 +176,8 @@ void MQTTClientComponent::dump_config() { | ||||
|   } | ||||
| } | ||||
| bool MQTTClientComponent::can_proceed() { | ||||
|   return network::is_disabled() || this->state_ == MQTT_CLIENT_DISABLED || this->is_connected(); | ||||
|   return network::is_disabled() || this->state_ == MQTT_CLIENT_DISABLED || this->is_connected() || | ||||
|          !this->wait_for_connection_; | ||||
| } | ||||
|  | ||||
| void MQTTClientComponent::start_dnslookup_() { | ||||
|   | ||||
| @@ -4,11 +4,11 @@ | ||||
|  | ||||
| #ifdef USE_MQTT | ||||
|  | ||||
| #include "esphome/core/component.h" | ||||
| #include "esphome/core/automation.h" | ||||
| #include "esphome/core/log.h" | ||||
| #include "esphome/components/json/json_util.h" | ||||
| #include "esphome/components/network/ip_address.h" | ||||
| #include "esphome/core/automation.h" | ||||
| #include "esphome/core/component.h" | ||||
| #include "esphome/core/log.h" | ||||
| #if defined(USE_ESP32) | ||||
| #include "mqtt_backend_esp32.h" | ||||
| #elif defined(USE_ESP8266) | ||||
| @@ -267,6 +267,8 @@ class MQTTClientComponent : public Component { | ||||
|   void set_publish_nan_as_none(bool publish_nan_as_none); | ||||
|   bool is_publish_nan_as_none() const; | ||||
|  | ||||
|   void set_wait_for_connection(bool wait_for_connection) { this->wait_for_connection_ = wait_for_connection; } | ||||
|  | ||||
|  protected: | ||||
|   void send_device_info_(); | ||||
|  | ||||
| @@ -334,6 +336,7 @@ class MQTTClientComponent : public Component { | ||||
|   optional<MQTTClientDisconnectReason> disconnect_reason_{}; | ||||
|  | ||||
|   bool publish_nan_as_none_{false}; | ||||
|   bool wait_for_connection_{false}; | ||||
| }; | ||||
|  | ||||
| extern MQTTClientComponent *global_mqtt_client;  // NOLINT(cppcoreguidelines-avoid-non-const-global-variables) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user