ESPHome 2025.2.0 - 19th February 2025¶
🎉 Happy New Year! 🎉
We’re kicking off 2025 with a number of updates, several of which are focused on removing old code. Unfortunately, this means we have a few breaking changes, but this work helps keep ESPHome more maintainable in the long-run.
Join us below for the ESPHome New Year Release Party.
Removal of “old style” Platform Configuration¶
Three years ago, we added support for using ESP-IDF directly (as an alternative to Arduino). This brought about a number of benefits and a new syntax was introduced to facilitate greater flexibility when specifying and configuring your microcontroller/board.
In this release, we’ve removed support for the “old style” of configuring your microcontroller/board. If you’re still using it, you’ll need to update your configurations to use the new style. A brief explanation is here, but for more detail, please see the documentation for your microcontroller platform.
Removal of Custom Components¶
Custom components were deprecated over a year ago and, as promised, support for them was removed in this release. We encourage all developers to migrate their custom components to External Components. Please see A Note About Custom Components for a detailed explanation and next steps.
Removal of armv7
Docker Support¶
ESPHome no longer supports armv7
hardware. This is due to both waning support as it relates to tooling and
performance reasons. We strongly recommend moving to a more modern architecture, especially if you’re using the ESPHome
Device Builder to build/compile firmware for your devices.
esp32_rmt
Updates¶
Components which utilize the RMT hardware found on the ESP32 and its variants have been updated to use the new interface available in ESP-IDF versions 5 and above. This eliminates related warnings seen in the compiler logs while building ESPHome configurations. In most cases, you won’t notice any difference, but this change could result in some issues, particularly for External Components. You may need to make a minor change or two in your device configurations; the configuration validator will tell you if this is necessary as you update your devices.
Audio Components¶
This release includes support for a number of new audio-related components/hardware. These are primarily aimed at supporting hardware found in Espressif’s S3-Box series of products, eliminating the need to use the ESP-ADF and thus offering better integration with ESPHome in general. If you’re using an S3-Box (or one of the variants), we strongly recommend updating your device either OTA or by using our Ready-Made Projects web installer. If you have “taken control” of or “adopted” your S3-Box, we strongly recommend updating your device’s local configuration based on our updated configuration files found here.
In addition, new speaker
components have been introduced to provide more advanced functionality when using
Voice Assistant. These components extend our work to help you create the ultimate personal voice
assistant hardware.
The new speaker media player component adds several features for building a well-rounded audio device. It supports playing two different streams of audio: one for announcements and another for music.
The new mixer speaker component lets you combine the two streams. The mixer even supports audio ducking, so you can lower the volume of the music while your announcement plays!
Image Components¶
This release adds support for alpha-blending images when using LVGL. To facilitate this, the use_transparency
configuration variable in Images and related components was renamed to transparency
and changed
from a boolean to an enum; in addition, the type
configuration variable is now mandatory. See the
Images documentation for more detail.
Finally, the Online Image Component was updated to add support for both BMP and JPEG image formats.
Full list of changes¶
New Components¶
[es7210] add support for es7210 ADC esphome#8007 by @kahrendt (new-integration)
[audio_adc] Add new
audio_adc
component esphome#8094 by @kbx81 (new-integration)[es8156] Add support for ES8156 audio DAC esphome#8085 by @kbx81 (new-integration)
[es7243e] Add support for ES7243E audio ADC esphome#8098 by @kbx81 (new-integration)
[esp32_ble_server] Create custom services, characteristics and descriptors esphome#7009 by @Rapsssito (new-integration)
[resampler] Media Player Components PR7 esphome#8169 by @kahrendt (new-integration)
[mixer] Media Player Components PR8 esphome#8170 by @kahrendt (new-integration)
[xxtea] Extract encryption functions to separate component esphome#8183 by @clydebarrow (new-integration)
[logger] Add runtime level select esphome#8222 by @clydebarrow (new-integration)
[speaker] Media Player Components PR9 esphome#8171 by @kahrendt (new-integration)
New Platforms¶
[uptime] Add text_sensor esphome#8028 by @clydebarrow (new-platform)
Add: Human Presence and Target Count to the Seeed Studio MR60BHA2 esphome#8010 by @limengdu (new-platform)
[sdl] Implement binary sensors from keystrokes esphome#8207 by @bdm310 (new-platform)
Breaking Changes¶
[esp32_rmt] Updates for IDF 5+ esphome#7770 by @swoboda1337 (breaking-change)
[lvgl] remove default state esphome#8038 by @clydebarrow (breaking-change)
[nextion] Brightness control tweaks esphome#8027 by @kbx81 (breaking-change)
[image] Transparency changes; code refactor esphome#7908 by @clydebarrow (breaking-change)
[ili9xxx] psram and 8 bit changes esphome#8084 by @clydebarrow (breaking-change)
[core] Remove old style platform configuration esphome#8118 by @jesserockz (breaking-change)
[custom] Remove platforms esphome#8119 by @kbx81 (breaking-change)
Remove arm/v7 container image support esphome#8194 by @jesserockz (breaking-change)
[esp32_rmt] Set pull-up and open-drain modes based on pin schema esphome#8178 by @swoboda1337 (breaking-change)
[scd30] Increase minimal CONF_UPDATE_INTERVAL from 1 to 2 seconds esphome#8256 by @DjordjeMandic (breaking-change)
Beta Changes¶
[online_image]Fix reset if buffer not allocated esphome#8236 by @guillempages
[core] Ignore dot-prefixed config entries when looking for target platform esphome#8240 by @jesserockz
Bump zeroconf to 0.144.1 esphome#8238 by @bdraco
[core] Fix
config_dir
for dashboard esphome#8242 by @jesserockz[cse7766] Remove
stream
dependency esphome#7720 by @gabest11[graph] Remove
stream
dependency esphome#8243 by @kbx81[modbus_controller] Remove stream dependency esphome#8244 by @kbx81
[logger] Fix bug causing global log level to be overwritten esphome#8248 by @swoboda1337
Add support for the DAC on the S2 esphome#8030 by @maraid
Fix crash when storage file doesnt exist yet esphome#8249 by @jesserockz
don’t crash on null pages esphome#8254 by @ssieb
[scd30] Increase minimal CONF_UPDATE_INTERVAL from 1 to 2 seconds esphome#8256 by @DjordjeMandic (breaking-change)
Bump zeroconf to 0.144.3 esphome#8253 by @bdraco
DHT platform now supports modules with inbuilt external resistor esphome#8257 by @deCodeIt
Replace glyphsets with esphome_glyphsets esphome#8261 by @bdraco
Bump aioesphomeapi to 29.1.0 esphome#8105 by @bdraco
Bump openssh-client to 1:9.2p1-2+deb12u4 to fix docker builds esphome#8269 by @bdraco
Increase default repeat delay for Toto remote transmitter protocol esphome#8265 by @G-Two
Bump zeroconf to 0.145.1 esphome#8267 by @bdraco
All changes¶
[rotary_encoder] Fix volatile increment/decrement deprecation warnings esphome#7958 by @edwardtfn
[pulse_counter] Fix volatile increment/decrement deprecation warnings esphome#7954 by @edwardtfn
[nextion] Publishes is_connected() esphome#7961 by @edwardtfn
Fix adc channel for ESP32-H2 esphome#7964 by @luar123
[nextion] Remove
_internal
from non-protected functions esphome#7656 by @edwardtfn[opentherm] Message ordering, on-the-fly message editing, code improvements esphome#7903 by @olegtarasov
[debug] Detailed reset reason esphome#7729 by @edwardtfn
[uart] Use
SOC_UART_NUM
as number of uarts instead ofUART_NUM_MAX
esphome#7967 by @jesserockz[ci] Dont run main ci suite on docker files esphome#7966 by @jesserockz
Bump docker/setup-buildx-action from 3.7.1 to 3.8.0 in the docker-actions group esphome#7969 by @dependabot[bot]
[core] Add c6 and h2 to split default esphome#7974 by @swoboda1337
[midea] Add Fahrenheit support to midea_ac.follow_me action esphome#7762 by @DjordjeMandic
[esp32_rmt] Updates for IDF 5+ esphome#7770 by @swoboda1337 (breaking-change)
[qspi_dbi] Bugfix and new features esphome#7979 by @clydebarrow
[helpers] Provide calls to get free heap and largest available block. esphome#7978 by @clydebarrow
Bump actions/upload-artifact from 4.4.3 to 4.5.0 esphome#7981 by @dependabot[bot]
[esp32_ble] do not skip events if queue is blocked esphome#7960 by @tomaszduda23
[ble_client, bluetooth_proxy, esp32_ble_client, esp32_ble_tracker] fix ble proxy stop working esphome#7901 by @tomaszduda23
[esp32_rmt] IDF 5+ update fixes esphome#8002 by @swoboda1337
Initialize esp32_rmt_led_strip buffer esphome#8036 by @pzich
[addressable_light] Remove rmt channel from idf tests esphome#7987 by @clydebarrow
Remove rmt channel from idf tests esphome#8054 by @clydebarrow
Fixed comment typo in light_color_values.h esphome#8050 by @samunemeth
Fix braceless else statements esphome#7799 by @pzich
Enable udp to work (on ipv4) when ipv6 is enabled esphome#8060 by @HeMan
Update sprinkler.cpp esphome#7996 by @jotaj91
[lvgl] remove default state esphome#8038 by @clydebarrow (breaking-change)
[lvgl] fix bg_image_src esphome#8005 by @clydebarrow
[lgvl] disp_bg_image and disp_bg_opa changes esphome#8025 by @clydebarrow
[spi_led_strip] Fix priority esphome#8021 by @clydebarrow
[config] Early check for required version esphome#8000 by @clydebarrow
[lvgl] Implement lvgl.page.is_showing: condition esphome#8055 by @clydebarrow
[display] auto_clear_enabled defaults esphome#7986 by @clydebarrow
Convert IPAddress to use Pythonmodule ipaddress esphome#8072 by @HeMan
Add log level env var esphome#7604 by @briancw
[spi] relay on KEY_TARGET_PLATFORM as the other platforms does esphome#8066 by @tomaszduda23
Bump actions/upload-artifact from 4.5.0 to 4.6.0 esphome#8058 by @dependabot[bot]
Bump peter-evans/create-pull-request from 7.0.5 to 7.0.6 esphome#8024 by @dependabot[bot]
Bump docker/setup-qemu-action from 3.2.0 to 3.3.0 in the docker-actions group esphome#8052 by @dependabot[bot]
Bump docker/build-push-action from 6.10.0 to 6.11.0 in /.github/actions/build-image esphome#8053 by @dependabot[bot]
Allow CONF_RMT_CHANNEL parameter for IDF 4.X esphome#8035 by @gnumpi
[esp32] Fix arch_get_cpu_freq_hz esphome#8047 by @swoboda1337
Fix Waveshare 7in5bv3bwr image quality in BWR mode esphome#8043 by @zbikmarc
[json] use correct formatting esphome#8039 by @clydebarrow
[nextion] Brightness control tweaks esphome#8027 by @kbx81 (breaking-change)
[image] Transparency changes; code refactor esphome#7908 by @clydebarrow (breaking-change)
Added VERY_VERBOSE dfplayer printing esphome#8026 by @solarkennedy
[core] fix comment for crc8 function in helpers.h esphome#8016 by @DjordjeMandic
[debug] Add framework type to debug info esphome#8013 by @edwardtfn
[debug] Add ESP32 partition table logging to dump_config esphome#8012 by @edwardtfn
[psram] Improve total PSRAM display in logs by using rounded KB values esphome#8008 by @edwardtfn
Use ESPHome logo on readme page according to theme (light/dark) esphome#7992 by @dougiteixeira
Fix compile errors with pioarduino/platform-espressif32: wifi_component_esp32_arduino.cpp esphome#7998 by @bitflippersanonymous
Include esp_mac.h and C++20 str_startswith/str_ends esphome#7999 by @bitflippersanonymous
[esp32_wifi] Enhance WiFi component with TCPIP core locking. esphome#7997 by @bitflippersanonymous
add missing include in base_automation.h esphome#8001 by @nielsnl68
Fixed topic when mac is used esphome#7988 by @Hadatko
web_server: Adds REST API POST endpoints to arm and disarm esphome#7985 by @heythisisnate
[lvgl] fix tests esphome#8075 by @clydebarrow
Allow external libraries to use ESP_LOGx macros esphome#8078 by @kroimon
[uptime] Add text_sensor esphome#8028 by @clydebarrow (new-platform)
[image] Fix mdi images esphome#8082 by @clydebarrow
[ili9xxx] psram and 8 bit changes esphome#8084 by @clydebarrow (breaking-change)
[spi] Restore
SPIDelegateDummy
esphome#8019 by @clydebarrow[lvgl] fix lvgl.widget.update and friends esphome#8087 by @clydebarrow
fix(web_server/fan): send speed update values even when fan is off esphome#8086 by @distante
[es7210] add support for es7210 ADC esphome#8007 by @kahrendt (new-integration)
[event] Store
last_event_type
in class esphome#8088 by @jesserockz[prometheus] Select, media_player, and number prometheus metrics esphome#7895 by @jzucker2
Bump docker/build-push-action from 6.11.0 to 6.12.0 in /.github/actions/build-image esphome#8090 by @dependabot[bot]
Revert “Add resistance_sampler interface for config validation” esphome#8093 by @clydebarrow
Fix running pre-commit on Windows esphome#8095 by @stellar-aria
Remove black-formatter from pre-commit hooks esphome#8097 by @stellar-aria
Increase Daly-BMS coltage cells from 16 to 18 cells esphome#8057 by @j-sepul
[image]Rename option “use_transparency” esphome#8113 by @guillempages
[online_image] Use RAMAllocator esphome#8114 by @guillempages
Fixed incorrect display dimension esphome#8110 by @Duckle29
Update defines.h for esp-idf 5.1.5 esphome#8117 by @jesserockz
[audio_adc] Add new
audio_adc
component esphome#8094 by @kbx81 (new-integration)[uptime] Cosmetic improvements for uptime text_sensor esphome#8101 by @clydebarrow
[es8156] Add support for ES8156 audio DAC esphome#8085 by @kbx81 (new-integration)
[esp32_touch] Fix deprecated warning esphome#8092 by @swoboda1337
[core] Remove old style platform configuration esphome#8118 by @jesserockz (breaking-change)
Bump actions/stale from 9.0.0 to 9.1.0 esphome#8120 by @dependabot[bot]
[custom] Remove platforms esphome#8119 by @kbx81 (breaking-change)
Add: Human Presence and Target Count to the Seeed Studio MR60BHA2 esphome#8010 by @limengdu (new-platform)
[es7243e] Add support for ES7243E audio ADC esphome#8098 by @kbx81 (new-integration)
[debug] fix debug_esp32 printf for partition size and address esphome#8122 by @fightforlife
[esp32] Set logger default interface for C6 esphome#8126 by @kbx81
[core] add support for custom platform esphome#7616 by @tomaszduda23
Add verbose logging for pulse width calculation in pulse_meter esphome#8124 by @DjordjeMandic
[ads1115] Add sample rate control esphome#8102 by @brambo123
Fix mqtt climate step rounding esphome#8121 by @olemmela
[spi] Fix data type in bitbash transfer_() esphome#8125 by @oliv3r
[online_image] Add binary bmp support esphome#8116 by @jesserockz
[online_image] Code Improvements esphome#8130 by @guillempages
Update mdns for ESP-IDF esphome#8145 by @HeMan
Include Bluetooth connection slot allocations in connections free message esphome#8148 by @bdraco
[esp32_ble_server] Create custom services, characteristics and descriptors esphome#7009 by @Rapsssito (new-integration)
[online_image] Add JPEG support to online_image esphome#8127 by @guillempages
[logger] Ensure PRIu32 and friends are available esphome#8155 by @clydebarrow
Fix forgotten uses of use_transparency esphome#8115 by @kroimon
Add multicast support to udp component esphome#8051 by @HeMan
[display] Properly handle case of auto_clear_enabled: false esphome#8156 by @clydebarrow
[esp32_rmt] Increase default symbols in led strip and remove IRAM config esphome#8133 by @swoboda1337
[climate] Accept °K as intended esphome#8134 by @oliv3r
Bump docker/build-push-action from 6.12.0 to 6.13.0 in /.github/actions/build-image esphome#8136 by @dependabot[bot]
Bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4 esphome#8137 by @dependabot[bot]
Bump actions/setup-python from 5.3.0 to 5.4.0 esphome#8154 by @dependabot[bot]
Bump actions/setup-python from 5.3.0 to 5.4.0 in /.github/actions/restore-python esphome#8153 by @dependabot[bot]
[remote_transmitter] Fix issues with 32bit rollover on esp8266 and libretiny esphome#8056 by @swoboda1337
Use abspath for config path dir esphome#8044 by @NicoIIT
[remote_base] Add default value for offset in is_valid esphome#8159 by @swoboda1337
feat(core): Add support for <…> includes esphome#8132 by @Rapsssito
Bump zeroconf to 0.143.0 esphome#8104 by @bdraco
[i2s_audio] Media Player Components PR1 esphome#8163 by @kahrendt
[audio, i2s_audio, speaker] Media Player Components PR2 esphome#8164 by @kahrendt
[audio] Media Player Components PR3 esphome#8165 by @kahrendt
Add virtual get_flags() to GPIOPin and implementation in InternalGPIOPin derivatives esphome#8151 by @DjordjeMandic
Make get_flags() in GPIOPin mandatory esphome#8182 by @DjordjeMandic
[audio] Media Player Components PR4 esphome#8166 by @kahrendt
[audio] Media Player Components PR5 esphome#8167 by @kahrendt
[audio] Media Player Components PR6 esphome#8168 by @kahrendt
Remove arm/v7 container image support esphome#8194 by @jesserockz (breaking-change)
[resampler] Media Player Components PR7 esphome#8169 by @kahrendt (new-integration)
[mixer] Media Player Components PR8 esphome#8170 by @kahrendt (new-integration)
[CI] Consolidate some tests (A) esphome#8184 by @kbx81
[CI] Consolidate some tests (B) esphome#8185 by @kbx81
[CI] Consolidate some tests (C) esphome#8186 by @kbx81
[CI] Consolidate some tests (D) esphome#8189 by @kbx81
[CI] Consolidate some tests (E) esphome#8191 by @kbx81
[CI] Consolidate some tests (F) esphome#8195 by @kbx81
[CI] Consolidate some tests (G) esphome#8196 by @kbx81
[CI] Consolidate some tests (H) esphome#8198 by @kbx81
[CI] Consolidate some tests (K, L) esphome#8201 by @kbx81
[CI] Consolidate some tests (M) esphome#8202 by @kbx81
[CI] Consolidate some tests (I, J) esphome#8200 by @kbx81
[i2c] Workaround for i2c on s2 esphome#8188 by @swoboda1337
[lvgl] add triggers for swipe gestures esphome#8190 by @clydebarrow
[xxtea] Extract encryption functions to separate component esphome#8183 by @clydebarrow (new-integration)
[lvgl] Make layouts work properly on base display esphome#8193 by @clydebarrow
[preferences] Better handling of flash_write_interval esphome#8199 by @clydebarrow
[CI] Consolidate some tests (N, O, P) esphome#8204 by @kbx81
[CI] Consolidate some tests (Q, R) esphome#8205 by @kbx81
[prometheus] Add update entity to prometheus metrics esphome#8173 by @jzucker2
[uponor_smatrix] add target temperature as sensor esphome#7745 by @janschroeter
[sdl] Implement binary sensors from keystrokes esphome#8207 by @bdm310 (new-platform)
Bump the docker-actions group with 2 updates esphome#8215 by @dependabot[bot]
[esp32_rmt] Set pull-up and open-drain modes based on pin schema esphome#8178 by @swoboda1337 (breaking-change)
Add Toto protocol to remote receiver and transmitter esphome#8177 by @G-Two
Markdown tweaks/updates esphome#8211 by @kbx81
[CI] Consolidate some tests (S) esphome#8206 by @kbx81
[CI] Consolidate some tests (U, V, W, X, Y, Z) esphome#8210 by @kbx81
[CI] Consolidate some tests (T) esphome#8208 by @kbx81
[online_image]Pin specific version of JPEG library esphome#8217 by @guillempages
[logger] Add runtime level select esphome#8222 by @clydebarrow (new-integration)
[online_image] Set Accept header esphome#8216 by @candrews
[waveshare_epaper] Rationalise and complete tests esphome#8221 by @clydebarrow
Fix pref conflict of WiFi creds and fast_connect esphome#8219 by @QRPp
Don’t activate venv in devcontainer esphome#8128 by @kroimon
Add ADC sampling method option esphome#8131 by @blind-oracle
[ota] Increase socket timeout earlier in OTA script esphome#8129 by @swoboda1337
[speaker] Media Player Components PR9 esphome#8171 by @kahrendt (new-integration)
Add partial update of GDEW029T5 e-paper display esphome#8162 by @mystster
Add waveshare 2.9inch e-Paper HAT (D) esphome#7906 by @TataGEEK
[http_request]Use std::string for headers esphome#8225 by @guillempages
[online_image] Improve error handling esphome#8212 by @guillempages
[speaker] Bugfix: Ensure all audio is played after completely decoding a file esphome#8231 by @kahrendt
[voice_assistant] Add announce support esphome#8232 by @kahrendt
[prometheus] Adding valve entity metrics esphome#8223 by @jzucker2
Added Waveshare e-paper display model “7.50inv2p” to the waveshare_epaper component. esphome#7751 by @tmpeh
added Waveshare BWR Mode for the 4.2in Display esphome#7995 by @itpcc
Add GDEY029T94 support esphome#7931 by @danielkoek
GDEY042T81 e-paper displays support esphome#8061 by @mgruener
Add support for Waveshare 7.3” ACeP 7-Color display esphome#6380 by @NeilSCGH
Bump esphome-dashboard to 20250212.0 esphome#8235 by @jesserockz
[online_image]Fix reset if buffer not allocated esphome#8236 by @guillempages
[core] Ignore dot-prefixed config entries when looking for target platform esphome#8240 by @jesserockz
Bump zeroconf to 0.144.1 esphome#8238 by @bdraco
[core] Fix
config_dir
for dashboard esphome#8242 by @jesserockz[cse7766] Remove
stream
dependency esphome#7720 by @gabest11[graph] Remove
stream
dependency esphome#8243 by @kbx81[modbus_controller] Remove stream dependency esphome#8244 by @kbx81
[logger] Fix bug causing global log level to be overwritten esphome#8248 by @swoboda1337
Add support for the DAC on the S2 esphome#8030 by @maraid
Fix crash when storage file doesnt exist yet esphome#8249 by @jesserockz
don’t crash on null pages esphome#8254 by @ssieb
[scd30] Increase minimal CONF_UPDATE_INTERVAL from 1 to 2 seconds esphome#8256 by @DjordjeMandic (breaking-change)
Bump zeroconf to 0.144.3 esphome#8253 by @bdraco
DHT platform now supports modules with inbuilt external resistor esphome#8257 by @deCodeIt
Replace glyphsets with esphome_glyphsets esphome#8261 by @bdraco
Bump aioesphomeapi to 29.1.0 esphome#8105 by @bdraco
Bump openssh-client to 1:9.2p1-2+deb12u4 to fix docker builds esphome#8269 by @bdraco
Increase default repeat delay for Toto remote transmitter protocol esphome#8265 by @G-Two
Bump zeroconf to 0.145.1 esphome#8267 by @bdraco