ESPHome 2025.6.0 - 18th June 2025¶
ESP-IDF Updates¶
New Version: 5.3.2¶
In this release, we have updated the ESP-IDF framework to version 5.3.2. This version has been thoroughly tested in the background by our development team and is now the default for all configurations using ESP-IDF as the framework.
This version bump brings expanded microcontroller support. ESPHome now officially supports the following ESP32 variants:
ESP32 - The original ESP32 with dual-core Xtensa LX6
ESP32-C3 - Single-core RISC-V with Wi-Fi and Bluetooth 5 (LE)
ESP32-C6 - Single-core RISC-V with Wi-Fi 6, Bluetooth 5 (LE), and Thread/Zigbee (new)
ESP32-H2 - Single-core RISC-V with Bluetooth 5 (LE) and Thread/Zigbee (new)
ESP32-S2 - Single-core Xtensa LX7 with Wi-Fi
ESP32-S3 - Dual-core Xtensa LX7 with Wi-Fi and Bluetooth 5 (LE)
ESP32-P4 - Dual-core RISC-V high-performance variant (new)
Note
The newly supported variants (ESP32-C6, ESP32-H2, ESP32-P4) are still being refined. Some components may not yet be fully compatible with these chips. Additional component updates are planned for ESPHome 2025.7.0.
They also currently only support using the ESP-IDF framework, and do not work with the Arduino framework in this release.
Please check our Pull Requests for the latest compatibility status before reporting issues with these new variants.
ESP-IDF 4.x Support¶
This release is the last release which will support ESP-IDF 4.x versions; in the July release (2025.7.0) we will bump the default Arduino version to 3.1.3, which is now built on IDF 5.x and, as such, ESPHome will no longer require ESP-IDF 4.x support to maintain compatibility with Arduino. Please see our developer blog for more details.
Warning
Device configurations held back on ESP-IDF 4.x are unlikely to compile with the next ESPHome release (2025.7.0).
You can continue to use older versions of ESPHome, but you’ll need to ensure your device configurations are using IDF 5.x if you wish to upgrade to 2025.7.0 or later releases of ESPHome.
OpenThread¶
With the ESP-IDF 5.3.2 update, we’ve introduced basic OpenThread support for ESP-IDF based configurations. This exciting addition enables ESP32-C6 and ESP32-H2 devices to join Thread networks, expanding your connectivity options beyond traditional Wi-Fi and Ethernet.
Thread Network Integration
Your ESPHome devices can now connect to Thread networks and communicate with Home Assistant through the Native API, provided you have:
Thread support enabled in Home Assistant
An OpenThread border router configured and running on your network
Important Considerations
Thread is designed as a low-power, low-bandwidth networking protocol. It’s specifically optimized for:
IoT devices with minimal data transmission needs
Battery-powered or energy-efficient applications
Mesh networking scenarios
Current Limitations
ESPHome does not yet support Thread “Sleepy End Device” mode (low-power sleep functionality)
Not recommended for applications requiring high-frequency sensor data transmission
Best suited for simple control and monitoring use cases
Think of Thread support as providing you with a third networking option alongside Wi-Fi and Ethernet, particularly valuable for ESP32-C6 and ESP32-H2 deployments in mesh network environments.
Python 3.10 Requirement¶
Starting with ESPHome 2025.6.0, Python 3.10 or higher is required to run ESPHome. This change enables us to:
Utilize modern Python features and improvements
Remove legacy compatibility code that was needed for older Python versions
Maintain a more secure and efficient codebase
Why This Change?
Python 3.9 reaches its end of life in October 2025, making this upgrade both timely and necessary for long-term security and maintainability.
What You Need to Do
Installation Method |
Action Required |
---|---|
Home Assistant Add-on |
No action needed - Already uses Python 3.12 |
Container Images (Docker) |
No action needed - Already uses Python 3.12 |
Direct Installation (pip) |
Ensure Python 3.10+ is installed before running |
Warning
If you’re running ESPHome directly on your machine with Python 3.9 or older, running pip install -U esphome
will not upgrade beyond version 2025.5.2. You must upgrade your Python installation first.
Performance Optimizations¶
This release includes extensive performance improvements across multiple areas of ESPHome. Our optimization efforts focus on three key areas:
- 1. Native API Speed
Enhanced Native API performance for faster communication between ESPHome devices and Home Assistant.
- 2. Memory Footprint Reduction
Significant RAM usage optimizations to improve stability and allow for more complex configurations, especially on memory-constrained devices.
- 3. Flash Storage Efficiency
Reduced compiled firmware size, leaving more flash storage available for your applications and OTA updates.
These optimizations are part of an ongoing effort to make ESPHome more efficient and reliable. More performance improvements are planned for future releases.
BME68x BSEC2 Arduino Independence¶
Great news for BME68x sensor users! Bosch has merged and released a community contribution to their BSEC2 library that removes the Arduino framework dependency. This improvement means:
Better ESP-IDF compatibility - BME68x sensors now work seamlessly with ESP-IDF based configurations
Reduced dependencies - Cleaner builds without unnecessary Arduino components
Improved reliability - More stable sensor operation across different ESP32 variants
This change makes the BME68x environmental sensors more versatile and easier to integrate into ESP-IDF projects, continuing ESPHome’s move toward framework flexibility.
Release 2025.6.1 - June 23¶
Show
Eliminate memory fragmentation with BLE event pool esphome#9101 by @bdraco
[nextion] Fix command spacing double timing and response blocking issues esphome#9134 by @edwardtfn
Fix missing BLE GAP events causing RSSI sensor and beacon failures esphome#9138 by @bdraco
[config validation] Add more ip address / network validators esphome#9181 by @jesserockz
Fixes for setup of OpenThread either using TLV or entering Credentials directly esphome#9157 by @rwrozelle
Restore access to BLEScanResult as get_scan_result esphome#9148 by @myhomeiot
Release 2025.6.2 - June 27¶
Show
[lvgl] Fix dangling pointer issue with qrcode esphome#9190 by @clydebarrow
[audio] Bugfix: improve timeout handling esphome#9221 by @kahrendt
[speaker] bugfix: continue to block tasks if stop flag is set esphome#9222 by @kahrendt
[voice_assistant] Support streaming TTS responses and fixes crash for long responses esphome#9224 by @kahrendt
[esp32] Change
enable_lwip_mdns_queries
default toTrue
esphome#9188 by @scaiper[i2c] Disable i2c scan on certain idf versions esphome#9237 by @swoboda1337
[mcp23xxx_base] fix pin interrupts esphome#9244 by @ssieb
Full list of changes¶
New Components¶
Add CUBIC CM1106 Single Beam NDIR CO2 Sensor Module esphome#8293 by @andrewjswan (new-integration)
[usb_uart] Implement USB Host mode UART esphome#8334 by @clydebarrow (new-integration)
Add es8388 audio_dac esphome#8342 by @P4uLT (new-integration)
[lc709203f] Add battery monitor esphome#8037 by @ilikecake (new-integration)
[esp_ldo] Implement support for ESP32-P4 LDO esphome#9009 by @clydebarrow (new-integration)
Add OpenThread support on ESP-IDF esphome#7506 by @mrene (new-integration)
Breaking Changes¶
update minimal python version to 3.10 esphome#8850 by @ximex (breaking-change)
Add LWIP optimization options to reduce flash usage esphome#8946 by @bdraco (breaking-change)
Replace API deferred queue with efficient message batching system esphome#9012 by @bdraco (breaking-change)
Optimize Component and Application state storage from uint32_t to uint8_t esphome#9082 by @bdraco (breaking-change)
Reduce entity memory usage by eliminating field shadowing and bit-packing esphome#9076 by @bdraco (breaking-change)
Optimize Application
area_
fromstd::string
toconst char*
esphome#9085 by @bdraco (breaking-change)
Beta Changes¶
Show
Fix dashboard logging being escaped before parser esphome#9054 by @bdraco
Always perform select() when loop duration exceeds interval esphome#9058 by @bdraco
[nextion] Remove upload flags reset from success path to prevent TFT corruption esphome#9064 by @edwardtfn
Fix BYPASS_AUTO feature to work with or without an arming delay esphome#9051 by @heythisisnate
Fix misleading comment in API esphome#9069 by @bdraco
[prometheus] Remove
cv.only_with_arduino
esphome#9061 by @jesserockz[esp32] Dynamically set default framework based on variant esphome#9060 by @jesserockz
Fix
captive_portal
loading entireweb_server
esphome#9066 by @bdracoMake ParseOnOffState enum uint8_t esphome#9083 by @bdraco
Optimize Component and Application state storage from uint32_t to uint8_t esphome#9082 by @bdraco (breaking-change)
Small optimizations to api buffer helper esphome#9071 by @bdraco
Reduce entity memory usage by eliminating field shadowing and bit-packing esphome#9076 by @bdraco (breaking-change)
Optimize memory usage by lazy-allocating raw callbacks in sensors esphome#9077 by @bdraco
Fix API message encoding to return actual size instead of calculated size esphome#9073 by @bdraco
Optimize Application
area_
fromstd::string
toconst char*
esphome#9085 by @bdraco (breaking-change)Fix unbound BLE event queue growth and reduce memory usage esphome#9052 by @bdraco
Bump aioesphomeapi from 32.2.1 to 32.2.3 esphome#9091 by @dependabot[bot]
[fan] fix initial FanCall to properly set speed esphome#8277 by @dhewg
Implement a lock free ring buffer for BLEScanResult to avoid drops esphome#9087 by @bdraco
Make BLE queue lock free esphome#9088 by @bdraco
Fix protobuf encoding size mismatch by passing force parameter in encode_string esphome#9074 by @bdraco
[i2s_audio] Check for a nullptr before disabling and deleting channel esphome#9062 by @kahrendt
Ensure we can send batches where the first message exceeds MAX_PACKET_SIZE esphome#9068 by @bdraco
Add common base classes for entity protobuf messages to reduce duplicate code esphome#9090 by @bdraco
Reduce Component blocking threshold memory usage by 2 bytes per component esphome#9081 by @bdraco
Remove
std::
prefix as not all platforms have access yet. esphome#9095 by @jesserockz[i2s_audio] Add
dump_config
methods, shorten log messages esphome#9099 by @kbx81[i2s_audio] Bugfix: crashes when unlocking i2s bus multiple times esphome#9100 by @kahrendt
[spi] Cater for non-word-aligned buffers on esp8266 esphome#9108 by @clydebarrow
Optimize LightState memory layout esphome#9113 by @bdraco
Reduce Switch component memory usage by 8 bytes per instance esphome#9112 by @bdraco
Notable Changes¶
[bme68x_bsec2_i2c] Remove arduino dependency esphome#7815 by @luar123 (notable-change)
All changes¶
Show
add actions to the MAX7219Component esphome#6462 by @nielsnl68
[api] Update api proto to add legacy value esphome#8802 by @jesserockz
[script] Use local import for zephyr esphome#8822 by @clydebarrow
Bump cryptography to 45.0.1 esphome#8826 by @bdraco
unify and add missing metric suffixes esphome#8816 by @ximex
Improve stability for a test that crashes intermittently in CI esphome#8699 by @dala318
update ruff version to
0.11.10
in.pre-commit-config.yaml
esphome#8851 by @ximexadd python 3.13 to ci pipeline esphome#8855 by @ximex
[esp32] Use IDF 5.3.2 as default for IDF builds esphome#8464 by @swoboda1337
update minimal python version to 3.10 esphome#8850 by @ximex (breaking-change)
[esp32, logger] Add initial P4 support esphome#8439 by @swoboda1337
Add CUBIC CM1106 Single Beam NDIR CO2 Sensor Module esphome#8293 by @andrewjswan (new-integration)
Updates for development environment esphome#8801 by @jesserockz
[sync] Update and fix sync workflow esphome#8873 by @jesserockz
[lvgl] Try to allocate smaller buffer on failure esphome#8814 by @clydebarrow
[lvgl] Add content styling to tabview esphome#8823 by @clydebarrow
[usb_uart] Implement USB Host mode UART esphome#8334 by @clydebarrow (new-integration)
OTA: Close and clean up client when setsockopt fails esphome#8865 by @luuoaoa
Add const DEVICE_CLASS_WIND_DIRECTION esphome#8870 by @Pi57
Synchronise Device Classes from Home Assistant esphome#8874 by @esphomebot
Optimize API frame helper buffer management esphome#8805 by @bdraco
Use UINT16_MAX instead of hard coded 65535 in api esphome#8884 by @bdraco
feat:
wifi.configure
now emits error after reconnecting to old AP esphome#8653 by @Rapsssito[modbus_controller] Add assumed_state to switch esphome#8880 by @gotnone
[const] Move
CONF_RESET
to const.py esphome#8889 by @jesserockz[bme68x_bsec2_i2c] Remove arduino dependency esphome#7815 by @luar123 (notable-change)
[i2s_audio] Add basic support for esp32-p4 esphome#8887 by @jesserockz
[esp32, logger, core] Add initial c5 support esphome#8895 by @swoboda1337
Resolve regex library warnings esphome#8890 by @emmanuel-ferdman
Add integration tests for host esphome#8912 by @bdraco
Fix flakey tests esphome#8914 by @bdraco
[sx1509] add support for keys esphome#8413 by @ssieb
Add es8388 audio_dac esphome#8342 by @P4uLT (new-integration)
[online_image] Last-Modified-Date and ETag response caching esphome#8782 by @candrews
[aht10] Various optimizations/clean-up esphome#8921 by @kbx81
[rtttl] Various optimizations/clean-up esphome#8923 by @kbx81
[ledc] Various optimizations/clean-up esphome#8922 by @kbx81
Streamline setup() logging (a, b) esphome#8924 by @kbx81
Streamline setup() logging (c, d) esphome#8925 by @kbx81
Streamline setup() logging (e, f) esphome#8926 by @kbx81
Streamline setup() logging (g, h, i) esphome#8927 by @kbx81
Streamline setup() logging (k, l, m) esphome#8928 by @kbx81
Streamline setup() logging (n, o, p, q, r) esphome#8929 by @kbx81
Streamline setup() logging (s, t, u, v, w, x, y, z) esphome#8930 by @kbx81
[speaker mediaplayer] Yaml config initial volume (on first boot) esphome#8898 by @mrtoy-me
[i2s_audio] Bump esphome/ESP32-audioI2S to 2.2.0 esphome#8920 by @jesserockz
Add more demo platforms esphome#8903 by @jesserockz
Migrate wifi component to use App.get_loop_component_start_time esphome#8931 by @bdraco
Optimize socket operations by checking readiness in the main loop esphome#8918 by @bdraco
Improve logging in integration tests when port does not open esphome#8932 by @bdraco
[pmwcs3] Optimize logging esphome#8936 by @kbx81
[tmp102] Remove
setup()
, optimize logging esphome#8937 by @kbx81Optimize plaintext API header reading to reduce system calls esphome#8941 by @bdraco
[gcja5] Remove unused
setup()
method esphome#8935 by @kbx81[alarm_control_panel] BYPASS_AUTO option for Template Alarm Control Panel sensors left open when armed esphome#8795 by @heythisisnate
Fix select() logging flood in very verbose mode esphome#8942 by @bdraco
particle matter improvements esphome#8846 by @ximex
Fix colors in update all esphome#8854 by @swoboda1337
Add flip X and Y on inkplate6 component esphome#7904 by @Leicas
[modbus] [modbus_controller] Fix server role read coil 0x1 crc esphome#8859 by @gotnone
[rp2040] Allow changing watchdog timeout esphome#8868 by @kuba2k2
[esp32] Regenerate boards from recommended platform version esphome#8938 by @jesserockz
Introduce “communication failed” log macro esphome#8939 by @kbx81
[demo] FIx some of the entities esphome#8943 by @jesserockz
Redundant Log Messages Cleanup esphome#8944 by @bdraco
[dht] Clean-up, shorten some log messages esphome#8949 by @kbx81
Have ESPHome’s YAML dumper comply with its own yamllint rules esphome#8957 by @jpeletier
Allow Weikai to pass data_bit validation esphome#8917 by @timdaman
[max9611] Remove redundant “max9611” from log messages esphome#8967 by @kbx81
[nextion] Allocate NextionQueue in PSRAM (if available) esphome#8979 by @edwardtfn
[esp32c6] Add test base file and platformio env esphome#8973 by @jesserockz
Add missing icons and device classes to BME680 sensors esphome#8960 by @tronikos
[preferences] Shorten log messages esphome#8982 by @kbx81
[lc709203f] Add battery monitor esphome#8037 by @ilikecake (new-integration)
[mdns] Set up only after API is set up esphome#9000 by @jesserockz
[const] Move CONF_X and CONF_Y to const.py esphome#8999 by @Hannah-GBS
[core] Update defines.h esp-idf version esphome#8974 by @jesserockz
[spi] Remove redundant “SPI” from log messages esphome#8970 by @kbx81
[sdp3x] Remove redundant “sdp3x” from log messages esphome#8969 by @kbx81
[ethernet] Remove redundant “ethernet” from log messages esphome#8966 by @kbx81
[bmp3xx] Remove redundant “bmp3xx” from log messages esphome#8965 by @kbx81
Remove unnecessary ellipsis esphome#8964 by @kbx81
[wireguard] Remove redundant “wireguard” from log messages esphome#8963 by @kbx81
[dashboard] Fix logging colors esphome#8984 by @swoboda1337
[sps30] Shorten log messages esphome#8971 by @kbx81
[bmp581] Shorten some log messages esphome#8948 by @kbx81
[api] Streamline some log strings esphome#8962 by @kbx81
[mqtt] Remove redundant “mqtt” from log messages esphome#8968 by @kbx81
[ci, nrf52] make zephyr clang mandatory esphome#8992 by @tomaszduda23
[sdl] Add config for SDL window flags esphome#8998 by @Hannah-GBS
[nextion] Add optional
max_queue_size
limit to prevent queue overflows esphome#8976 by @edwardtfnMove CONF_REQUEST_HEADERS to const.py esphome#9002 by @numo68
[api] Fix build error in IDF 5.5 esphome#9007 by @swoboda1337
[list-components.py] Only add platforms that are actually platforms. esphome#9005 by @clydebarrow
[qwiic_pir] Clean-up, shorten some log messages esphome#8951 by @kbx81
[esp32] Add config vars for compiler esphome#9023 by @kbx81
Implement proper API connection teardown before deep sleep/reboot esphome#9008 by @bdraco
[config] Clean build on ESP-IDF when component/platform combos change esphome#9028 by @clydebarrow
Disable ruff rule UP038 esphome#9029 by @bdraco
Update webserver local assets to 20250608-225410 esphome#9030 by @esphomebot
Reduce ESP_LOGCONFIG calls esphome#9026 by @bdraco
Force socket ready when high frequency looping esphome#9032 by @juanboro
[psram] Add P4 support esphome#8545 by @clydebarrow
[nextion] Use safe restart to properly handle globals and restart logging esphome#9010 by @edwardtfn
[max7219digit, servo, tsl2591] ESP_LOGCONFIG call reduction (Extend #9026) esphome#9033 by @kbx81
[tsl2561, tsl2591] Shorten log messages esphome#9034 by @kbx81
Change RP2040 PIO SK6812 timings esphome#9020 by @pseud0sphere
Add LWIP optimization options to reduce flash usage esphome#8946 by @bdraco (breaking-change)
[globals] Prevent redundant oversized string checks in loop esphome#9001 by @edwardtfn
[nextion] Optimize log messages to reduce memory usage esphome#9039 by @edwardtfn
[nextion] Add configurable limit for commands processed per loop esphome#8972 by @edwardtfn
[lvgl] Fix templated argument to
lvgl.is_idle
esphome#9014 by @clydebarrowReplace API deferred queue with efficient message batching system esphome#9012 by @bdraco (breaking-change)
Reduce Bluetooth overhead by disabling unused logging categories esphome#8945 by @bdraco
[inkplate] Remove arduino dependency esphome#9031 by @jesserockz
[core] Include esp_mac.h on Arduino too esphome#9040 by @swoboda1337
Use a
define
for log message constants esphome#8952 by @kbx81[esp_ldo] Implement support for ESP32-P4 LDO esphome#9009 by @clydebarrow (new-integration)
Fix: Seeed Studio MR60FDA2 threshold height could not be set esphome#9011 by @limengdu
[esp32] Use release zip from pioarduino/platform-espressif32 instead of git tag esphome#8975 by @jesserockz
[esp32_rmt] Add variant validation for use_dma esphome#8897 by @swoboda1337
Ensure components only powerdown after teardown esphome#9044 by @bdraco
use
encode_uintXX
esphome#8847 by @ximexAdd OpenThread support on ESP-IDF esphome#7506 by @mrene (new-integration)
[shtcx] Shorten log messages esphome#9046 by @kbx81
[application] Fix build error on some IDF versions esphome#9045 by @kbx81
[spi] Restrict octal spi to S3/S2/P4 esphome#9041 by @clydebarrow
Reserve memory for component and platform vectors esphome#9042 by @bdraco
Improve shutdown reliability when tx buffer is full esphome#9043 by @bdraco
Add support for custom request headers in online_image component esphome#8985 by @numo68
Openthread code updates esphome#9047 by @jesserockz
[sgp4x] Shorten log messages, various clean-up esphome#9048 by @kbx81
Fix dashboard logging being escaped before parser esphome#9054 by @bdraco
Always perform select() when loop duration exceeds interval esphome#9058 by @bdraco
[nextion] Remove upload flags reset from success path to prevent TFT corruption esphome#9064 by @edwardtfn
Fix BYPASS_AUTO feature to work with or without an arming delay esphome#9051 by @heythisisnate
Fix misleading comment in API esphome#9069 by @bdraco
[prometheus] Remove
cv.only_with_arduino
esphome#9061 by @jesserockz[esp32] Dynamically set default framework based on variant esphome#9060 by @jesserockz
Fix
captive_portal
loading entireweb_server
esphome#9066 by @bdracoMake ParseOnOffState enum uint8_t esphome#9083 by @bdraco
Optimize Component and Application state storage from uint32_t to uint8_t esphome#9082 by @bdraco (breaking-change)
Small optimizations to api buffer helper esphome#9071 by @bdraco
Reduce entity memory usage by eliminating field shadowing and bit-packing esphome#9076 by @bdraco (breaking-change)
Optimize memory usage by lazy-allocating raw callbacks in sensors esphome#9077 by @bdraco
Fix API message encoding to return actual size instead of calculated size esphome#9073 by @bdraco
Optimize Application
area_
fromstd::string
toconst char*
esphome#9085 by @bdraco (breaking-change)Fix unbound BLE event queue growth and reduce memory usage esphome#9052 by @bdraco
[fan] fix initial FanCall to properly set speed esphome#8277 by @dhewg
Implement a lock free ring buffer for BLEScanResult to avoid drops esphome#9087 by @bdraco
Make BLE queue lock free esphome#9088 by @bdraco
Fix protobuf encoding size mismatch by passing force parameter in encode_string esphome#9074 by @bdraco
[i2s_audio] Check for a nullptr before disabling and deleting channel esphome#9062 by @kahrendt
Ensure we can send batches where the first message exceeds MAX_PACKET_SIZE esphome#9068 by @bdraco
Add common base classes for entity protobuf messages to reduce duplicate code esphome#9090 by @bdraco
Reduce Component blocking threshold memory usage by 2 bytes per component esphome#9081 by @bdraco
Remove
std::
prefix as not all platforms have access yet. esphome#9095 by @jesserockz[i2s_audio] Add
dump_config
methods, shorten log messages esphome#9099 by @kbx81[i2s_audio] Bugfix: crashes when unlocking i2s bus multiple times esphome#9100 by @kahrendt
[spi] Cater for non-word-aligned buffers on esp8266 esphome#9108 by @clydebarrow
Optimize LightState memory layout esphome#9113 by @bdraco
Reduce Switch component memory usage by 8 bytes per instance esphome#9112 by @bdraco
Dependency Changes¶
Show
Bump aioesphomeapi from 30.2.0 to 31.0.0 esphome#8779 by @dependabot[bot]
Bump cairosvg from 2.7.1 to 2.8.0 esphome#8780 by @dependabot[bot]
Bump cairosvg from 2.8.0 to 2.8.1 esphome#8799 by @dependabot[bot]
Bump aioesphomeapi from 31.0.0 to 31.0.1 esphome#8809 by @dependabot[bot]
Bump setuptools from 80.4.0 to 80.7.1 esphome#8808 by @dependabot[bot]
Bump ruff from 0.11.9 to 0.11.10 esphome#8818 by @dependabot[bot]
Bump cairosvg from 2.8.1 to 2.8.2 esphome#8817 by @dependabot[bot]
Bump codecov/codecov-action from 5.4.2 to 5.4.3 esphome#8820 by @dependabot[bot]
Bump aioesphomeapi from 31.0.1 to 31.1.0 esphome#8849 by @dependabot[bot]
Bump setuptools from 80.7.1 to 80.8.0 esphome#8858 by @dependabot[bot]
Bump tornado from 6.4.2 to 6.5.1 esphome#8882 by @dependabot[bot]
Bump ruff from 0.11.10 to 0.11.11 esphome#8883 by @dependabot[bot]
Bump pyupgrade from 3.19.1 to 3.20.0 esphome#8891 by @dependabot[bot]
Bump actions/checkout from 4.1.7 to 4.2.2 esphome#8904 by @jesserockz
Bump ruamel-yaml from 0.18.10 to 0.18.11 esphome#8910 by @dependabot[bot]
Bump pytest-mock from 3.14.0 to 3.14.1 esphome#8909 by @dependabot[bot]
Bump setuptools from 80.8.0 to 80.9.0 esphome#8915 by @dependabot[bot]
Bump pytest-xdist from 3.6.1 to 3.7.0 esphome#8916 by @dependabot[bot]
Bump docker/build-push-action from 6.17.0 to 6.18.0 in /.github/actions/build-image esphome#8919 by @dependabot[bot]
Bump pytest from 8.3.5 to 8.4.0 esphome#8993 by @dependabot[bot]
Bump ruamel-yaml from 0.18.11 to 0.18.12 esphome#8977 by @dependabot[bot]
Bump aioesphomeapi from 31.1.0 to 32.0.0 esphome#9004 by @dependabot[bot]
Bump ruff from 0.11.11 to 0.11.13 esphome#9017 by @dependabot[bot]
Bump ruamel-yaml from 0.18.12 to 0.18.13 esphome#9018 by @dependabot[bot]
Bump aioesphomeapi from 32.0.0 to 32.1.0 esphome#9024 by @dependabot[bot]
Bump aioesphomeapi from 32.1.0 to 32.2.0 esphome#9025 by @dependabot[bot]
Bump aioesphomeapi from 32.2.0 to 32.2.1 esphome#9038 by @dependabot[bot]
Bump ruamel-yaml from 0.18.13 to 0.18.14 esphome#9037 by @dependabot[bot]
Bump aioesphomeapi from 32.2.1 to 32.2.3 esphome#9091 by @dependabot[bot]