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 | from esphome.components.esp32_ble import BTLoggers | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ACTIVE, CONF_ID | 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"] | AUTO_LOAD = ["esp32_ble_client", "esp32_ble_tracker"] | ||||||
| DEPENDENCIES = ["api", "esp32"] | DEPENDENCIES = ["api", "esp32"] | ||||||
| @@ -48,26 +46,6 @@ def validate_connections(config): | |||||||
|             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 { |         return { | ||||||
|             **config, |             **config, | ||||||
|             CONF_CONNECTIONS: [CONNECTION_SCHEMA({}) for _ in range(connection_slots)], |             CONF_CONNECTIONS: [CONNECTION_SCHEMA({}) for _ in range(connection_slots)], | ||||||
| @@ -89,11 +67,11 @@ CONFIG_SCHEMA = cv.All( | |||||||
|                     default=DEFAULT_CONNECTION_SLOTS, |                     default=DEFAULT_CONNECTION_SLOTS, | ||||||
|                 ): cv.All( |                 ): cv.All( | ||||||
|                     cv.positive_int, |                     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.Optional(CONF_CONNECTIONS): cv.All( | ||||||
|                     cv.ensure_list(CONNECTION_SCHEMA), |                     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( | def consume_connection_slots( | ||||||
|     value: int, consumer: str |     value: int, consumer: str | ||||||
| ) -> Callable[[MutableMapping], MutableMapping]: | ) -> Callable[[MutableMapping], MutableMapping]: | ||||||
| @@ -172,7 +168,7 @@ CONFIG_SCHEMA = cv.All( | |||||||
|             cv.GenerateID(): cv.declare_id(ESP32BLETracker), |             cv.GenerateID(): cv.declare_id(ESP32BLETracker), | ||||||
|             cv.GenerateID(esp32_ble.CONF_BLE_ID): cv.use_id(esp32_ble.ESP32BLE), |             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.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.Optional(CONF_SCAN_PARAMETERS, default={}): cv.All( | ||||||
|                 cv.Schema( |                 cv.Schema( | ||||||
| @@ -238,9 +234,8 @@ def validate_remaining_connections(config): | |||||||
|     if used_slots <= config[CONF_MAX_CONNECTIONS]: |     if used_slots <= config[CONF_MAX_CONNECTIONS]: | ||||||
|         return config |         return config | ||||||
|     slot_users = ", ".join(slots) |     slot_users = ", ".join(slots) | ||||||
|     hard_limit = max_connections() |  | ||||||
|  |  | ||||||
|     if used_slots < hard_limit: |     if used_slots < IDF_MAX_CONNECTIONS: | ||||||
|         _LOGGER.warning( |         _LOGGER.warning( | ||||||
|             "esp32_ble_tracker exceeded `%s`: components attempted to consume %d " |             "esp32_ble_tracker exceeded `%s`: components attempted to consume %d " | ||||||
|             "connection slot(s) out of available configured maximum %d connection " |             "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"out of available configured maximum {config[CONF_MAX_CONNECTIONS]} " | ||||||
|         f"connection slot(s); Decrease the number of BLE clients ({slot_users})" |         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" 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) |     raise cv.Invalid(msg) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user