mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Merge branch 'integration' into memory_api
This commit is contained in:
		| @@ -6,8 +6,6 @@ from esphome.components.esp32 import add_idf_sdkconfig_option | ||||
| from esphome.components.esp32_ble import BTLoggers | ||||
| import esphome.config_validation as cv | ||||
| from esphome.const import CONF_ACTIVE, CONF_ID | ||||
| from esphome.core import CORE | ||||
| from esphome.log import AnsiFore, color | ||||
|  | ||||
| AUTO_LOAD = ["esp32_ble_client", "esp32_ble_tracker"] | ||||
| DEPENDENCIES = ["api", "esp32"] | ||||
| @@ -48,26 +46,6 @@ def validate_connections(config): | ||||
|             config | ||||
|         ) | ||||
|  | ||||
|         # Warn about connection slot waste when using Arduino framework | ||||
|         if CORE.using_arduino and connection_slots: | ||||
|             _LOGGER.warning( | ||||
|                 "Bluetooth Proxy with active connections on Arduino framework has suboptimal performance.\n" | ||||
|                 "If BLE connections fail, they can waste connection slots for 10 seconds because\n" | ||||
|                 "Arduino doesn't allow configuring the BLE connection timeout (fixed at 30s).\n" | ||||
|                 "ESP-IDF framework allows setting it to 20s to match client timeouts.\n" | ||||
|                 "\n" | ||||
|                 "To switch to ESP-IDF, add this to your YAML:\n" | ||||
|                 "  esp32:\n" | ||||
|                 "    framework:\n" | ||||
|                 "      type: esp-idf\n" | ||||
|                 "\n" | ||||
|                 "For detailed migration instructions, see:\n" | ||||
|                 "%s", | ||||
|                 color( | ||||
|                     AnsiFore.BLUE, "https://esphome.io/guides/esp32_arduino_to_idf.html" | ||||
|                 ), | ||||
|             ) | ||||
|  | ||||
|         return { | ||||
|             **config, | ||||
|             CONF_CONNECTIONS: [CONNECTION_SCHEMA({}) for _ in range(connection_slots)], | ||||
| @@ -89,11 +67,11 @@ CONFIG_SCHEMA = cv.All( | ||||
|                     default=DEFAULT_CONNECTION_SLOTS, | ||||
|                 ): cv.All( | ||||
|                     cv.positive_int, | ||||
|                     cv.Range(min=1, max=esp32_ble_tracker.max_connections()), | ||||
|                     cv.Range(min=1, max=esp32_ble_tracker.IDF_MAX_CONNECTIONS), | ||||
|                 ), | ||||
|                 cv.Optional(CONF_CONNECTIONS): cv.All( | ||||
|                     cv.ensure_list(CONNECTION_SCHEMA), | ||||
|                     cv.Length(min=1, max=esp32_ble_tracker.max_connections()), | ||||
|                     cv.Length(min=1, max=esp32_ble_tracker.IDF_MAX_CONNECTIONS), | ||||
|                 ), | ||||
|             } | ||||
|         ) | ||||
|   | ||||
| @@ -150,10 +150,6 @@ def as_reversed_hex_array(value): | ||||
|     ) | ||||
|  | ||||
|  | ||||
| def max_connections() -> int: | ||||
|     return IDF_MAX_CONNECTIONS if CORE.using_esp_idf else DEFAULT_MAX_CONNECTIONS | ||||
|  | ||||
|  | ||||
| def consume_connection_slots( | ||||
|     value: int, consumer: str | ||||
| ) -> Callable[[MutableMapping], MutableMapping]: | ||||
| @@ -172,7 +168,7 @@ CONFIG_SCHEMA = cv.All( | ||||
|             cv.GenerateID(): cv.declare_id(ESP32BLETracker), | ||||
|             cv.GenerateID(esp32_ble.CONF_BLE_ID): cv.use_id(esp32_ble.ESP32BLE), | ||||
|             cv.Optional(CONF_MAX_CONNECTIONS, default=DEFAULT_MAX_CONNECTIONS): cv.All( | ||||
|                 cv.positive_int, cv.Range(min=0, max=max_connections()) | ||||
|                 cv.positive_int, cv.Range(min=0, max=IDF_MAX_CONNECTIONS) | ||||
|             ), | ||||
|             cv.Optional(CONF_SCAN_PARAMETERS, default={}): cv.All( | ||||
|                 cv.Schema( | ||||
| @@ -238,9 +234,8 @@ def validate_remaining_connections(config): | ||||
|     if used_slots <= config[CONF_MAX_CONNECTIONS]: | ||||
|         return config | ||||
|     slot_users = ", ".join(slots) | ||||
|     hard_limit = max_connections() | ||||
|  | ||||
|     if used_slots < hard_limit: | ||||
|     if used_slots < IDF_MAX_CONNECTIONS: | ||||
|         _LOGGER.warning( | ||||
|             "esp32_ble_tracker exceeded `%s`: components attempted to consume %d " | ||||
|             "connection slot(s) out of available configured maximum %d connection " | ||||
| @@ -262,9 +257,9 @@ def validate_remaining_connections(config): | ||||
|         f"out of available configured maximum {config[CONF_MAX_CONNECTIONS]} " | ||||
|         f"connection slot(s); Decrease the number of BLE clients ({slot_users})" | ||||
|     ) | ||||
|     if config[CONF_MAX_CONNECTIONS] < hard_limit: | ||||
|     if config[CONF_MAX_CONNECTIONS] < IDF_MAX_CONNECTIONS: | ||||
|         msg += f" or increase {CONF_MAX_CONNECTIONS}` to {used_slots}" | ||||
|     msg += f" to stay under the {hard_limit} connection slot(s) limit." | ||||
|     msg += f" to stay under the {IDF_MAX_CONNECTIONS} connection slot(s) limit." | ||||
|     raise cv.Invalid(msg) | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user