Compare commits

..

3093 Commits

Author SHA1 Message Date
Jesse Hills ebc0f5f7c9 Merge pull request #11387 from esphome/bump-2025.10.2
2025.10.2
2025-10-20 13:42:48 +13:00
J. Nick Koston 87ca8784ef [openthread] Backport address resolution support to prevent OTA crash (#11312)
Co-authored-by: Daniel Stiner <danstiner@gmail.com>
2025-10-20 10:12:56 +13:00
Jesse Hills a186c1062f Bump version to 2025.10.2 2025-10-20 10:06:43 +13:00
Jonathan Swoboda ea38237f29 [esp32] Fix OTA rollback (#11300)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-10-20 10:06:43 +13:00
J. Nick Koston 6aff1394ad [core] Fix IndexError when OTA devices cannot be resolved (#11311) 2025-10-20 10:06:43 +13:00
Spectre5 0e34d1b64d Change all temperature offsets to temperature_delta (#11347) 2025-10-20 10:06:43 +13:00
tomaszduda23 1483cee0fb [dashboard] fix migration to Path (#11342)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-10-20 10:06:43 +13:00
J. Nick Koston 8c1bd2fd85 [dashboard] Fix binary download with packages using secrets after Path migration (#11313) 2025-10-20 10:06:43 +13:00
Daniel Stiner ea609dc0f6 [const] Add CONF_OPENTHREAD (#11318) 2025-10-20 10:06:42 +13:00
Jonathan Swoboda 913095f6be [esp32] Reduce tx power on Arduino (#11304) 2025-10-20 10:06:42 +13:00
Jonathan Swoboda bb24ad4a30 [htu21d] Revert register address change (#11291) 2025-10-20 10:06:42 +13:00
Jonathan Swoboda 0d612fecfc [core] Add ESP32 ROM functions to reserved ids (#11293) 2025-10-20 10:06:42 +13:00
J. Nick Koston 9c235b4140 [datetime] Fix DateTimeStateTrigger compilation when time component is not used (#11287) 2025-10-20 10:06:42 +13:00
Jesse Hills 070b0882b8 Merge pull request #11284 from esphome/bump-2025.10.1
2025.10.1
2025-10-16 23:00:00 +13:00
Jesse Hills 7f1173fcba Bump version to 2025.10.1 2025-10-16 17:17:07 +13:00
J. Nick Koston a75ccf841c [substitutions] Fix AttributeError when using packages with substitutions (#11274)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-16 17:17:07 +13:00
Jonathan Swoboda 56eb605ec9 [wifi] Fix enterprise wifi (#11276)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-10-16 17:17:07 +13:00
J. Nick Koston 2c4818de00 [tests] Fix OTA password test assertions after merge collision (#11275) 2025-10-16 17:17:06 +13:00
Jesse Hills 2b94de8732 [ota.esphome] Handle blank password the same as no password defined (#11271) 2025-10-16 17:17:06 +13:00
J. Nick Koston f71aed3a5c [ota] Fix MQTT resolution when static IP appears first in device list (#11272) 2025-10-16 17:17:06 +13:00
Clyde Stubbs 353e097085 [mipi_spi] Rotation fixes (#11226) 2025-10-16 17:17:06 +13:00
Jesse Hills 9a29dec6d9 Merge pull request #11245 from esphome/bump-2025.10.0
2025.10.0
2025-10-15 17:30:30 +13:00
Jesse Hills 63b113d823 Bump version to 2025.10.0 2025-10-15 14:01:02 +13:00
Jesse Hills 0381644605 Merge pull request #11241 from esphome/bump-2025.10.0b4
2025.10.0b4
2025-10-15 12:44:15 +13:00
Jesse Hills 48a557b005 [netlify] Pin python version (#11244) 2025-10-15 12:37:55 +13:00
Jesse Hills 780ece73ff Bump version to 2025.10.0b4 2025-10-15 11:35:52 +13:00
J. Nick Koston d7fcf8d57b [pzemac, pzemdc, sdm_meter] Fix pin conflicts in ESP32-IDF tests (#11240) 2025-10-15 11:35:52 +13:00
TJQ 82a3ca575f [mipi_dsi] Update waveshare P4-86 display parameters (#10562) 2025-10-15 11:35:52 +13:00
dependabot[bot] 5913da5a89 Bump aioesphomeapi from 41.16.0 to 41.16.1 (#11221)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-15 11:35:52 +13:00
dependabot[bot] 8c13105ce1 Bump aioesphomeapi from 41.14.0 to 41.16.0 (#11215)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-15 11:35:52 +13:00
Jesse Hills c3fd07f8bc Merge pull request #11219 from esphome/bump-2025.10.0b3
2025.10.0b3
2025-10-14 16:35:13 +13:00
Jesse Hills d02ed41eb4 Bump version to 2025.10.0b3 2025-10-14 15:38:15 +13:00
J. Nick Koston 07504c8208 Fix log retrieval with FQDN when mDNS is disabled (#11202) 2025-10-14 15:38:15 +13:00
Jonathan Swoboda b666b8e261 [core] Properly clean the build dir in the HA addon (#11208) 2025-10-14 15:38:15 +13:00
dependabot[bot] 8627b56e36 Bump esphome-dashboard from 20251009.0 to 20251013.0 (#11212)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 15:38:15 +13:00
Jesse Hills 69df07ddcf [media_player.speaker] Dynamic auto load (#11084)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-10-14 15:38:15 +13:00
Jesse Hills 13cfa30c67 Merge pull request #11199 from esphome/bump-2025.10.0b2
2025.10.0b2
2025-10-13 10:55:34 +13:00
Jesse Hills da1959ab5d Bump version to 2025.10.0b2 2025-10-13 08:49:29 +13:00
J. Nick Koston 2b42903e9c [usb_host] Fix transfer slot exhaustion at high data rates and add configurable max_transfer_requests (#11174)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-13 08:49:29 +13:00
J. Nick Koston 742c9cbb53 [esp32_improv] Fix state not transitioning to PROVISIONED when WiFi configured via captive portal (#11181) 2025-10-13 08:49:29 +13:00
J. Nick Koston e4bc465a3d [ota] Increase handshake timeout to 20s now that auth is non-blocking (#11186) 2025-10-13 08:49:29 +13:00
J. Nick Koston 5cec0941f8 [wifi] Fix missed string literal in flash on ESP8266 (#11187) 2025-10-13 08:49:29 +13:00
J. Nick Koston 72a7aeb430 [ci] Dynamic runner allocation: 8 for releases, 4 for dev (#11191) 2025-10-13 08:49:29 +13:00
J. Nick Koston 53e6b28092 [mipi_rgb] Fix pin conflicts introduced by shared SPI bus in #11134 (#11185) 2025-10-13 08:49:28 +13:00
dependabot[bot] 7f3c7bb5c6 Bump aioesphomeapi from 41.13.0 to 41.14.0 (#11188)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 08:49:28 +13:00
Jonathan Swoboda c02c0b2a96 [esp32] Change Arduino dev & latest to 3.3.2 (#11169) 2025-10-13 08:49:28 +13:00
J. Nick Koston 5f5092e29f [ci] Filter out components without tests from CI test jobs (#11134 followup) (#11178) 2025-10-13 08:49:28 +13:00
J. Nick Koston 2864bf1674 Group component tests to reduce CI time (#11134) 2025-10-13 08:49:28 +13:00
J. Nick Koston 132e949927 [mdns] Restore mdns_txt_record() public API for external components (#11158) 2025-10-13 08:49:28 +13:00
J. Nick Koston 8fa44e471d [esp32_ble] Partial revert of #10862 - Fix GATT client notifications (#11171) 2025-10-13 08:49:28 +13:00
J. Nick Koston ccedcfb600 [json] Fix PSRAM allocator dangling pointer crash (#11165) 2025-10-13 08:49:28 +13:00
J. Nick Koston 8b0ec0afe3 [ci][tests] Remove all redundant ESP32-C3 Arduino tests (#11154) 2025-10-13 08:49:28 +13:00
J. Nick Koston dca29ed89b [datetime][ci][tests] Replace test.all.yaml with minimal platform cover (#11151) 2025-10-13 08:49:28 +13:00
J. Nick Koston 728726e29e [ci][tests] Remove redundant ESP32-C3 Arduino tests for non-variant-specific components (#11152) 2025-10-13 08:49:28 +13:00
J. Nick Koston 79f4ca20b8 [opentherm][ci][tests] Remove redundant ESP32 Arduino tests and simplify conditionals (#11149) 2025-10-13 08:49:28 +13:00
J. Nick Koston 3eca72e0b8 [ci][logger][tests] Remove redundant ESP32 Arduino test files (#11144) 2025-10-13 08:49:28 +13:00
J. Nick Koston 22c0f55cef [ci][debug][tests] Remove redundant ESP32 variant Arduino test files (#11146) 2025-10-13 08:49:28 +13:00
J. Nick Koston fd8ecc9608 [ci][time][tests] Remove redundant ESP32 Arduino test files (#11147) 2025-10-13 08:49:27 +13:00
J. Nick Koston ac96a59d58 [network][ci][tests] Remove redundant ESP32 Arduino test files (#11148) 2025-10-13 08:49:27 +13:00
J. Nick Koston dceed992d8 [esp32_ble_beacon, esp32_ble_tracker] Remove unused Arduino includes and redundant tests (#11140) 2025-10-13 08:49:27 +13:00
J. Nick Koston b0c66c1c09 [ci][mdns][tests] Remove redundant ESP32 Arduino test files (#11143) 2025-10-13 08:49:27 +13:00
J. Nick Koston 8f04a5b944 [esp32] Update migration warning for Arduino-as-IDF-component transition (#11142) 2025-10-13 08:49:27 +13:00
Jonathan Swoboda e6c21df30b [esp32] Update IDF 5.5 and Arduino 3.3 to use 55.03.31-1 (#11120) 2025-10-13 08:49:27 +13:00
J. Nick Koston 842cb9033a [mdns] Store TXT record values in flash to reduce heap usage (#11114) 2025-10-13 08:49:27 +13:00
J. Nick Koston a2cb415dfa [ci][improv_serial][tests] Remove redundant ESP32 Arduino test files (#11138) 2025-10-13 08:49:27 +13:00
J. Nick Koston 1fac193535 [ci][ethernet][tests] Remove redundant Arduino tests for ethernet PHYs (#11137) 2025-10-13 08:49:27 +13:00
J. Nick Koston 34632f78cf [ci][tests] Remove redundant ESP32 Arduino test files (#11136) 2025-10-13 08:49:27 +13:00
J. Nick Koston b93c60e85a [canbus][mcp23xxx_base] Mark virtual methods as pure virtual to fix linker errors (#11133) 2025-10-13 08:49:27 +13:00
dependabot[bot] 60dc055509 Bump esphome-dashboard from 20250904.0 to 20251009.0 (#11123)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 08:49:27 +13:00
Jesse Hills 9ad462d8c6 Merge pull request #11115 from esphome/bump-2025.10.0b1
2025.10.0b1
2025-10-10 07:28:02 +13:00
J. Nick Koston f1af9d978c [ci] Reduce component test group size to 10 to prevent runner disk exhaustion (#11122) 2025-10-09 10:36:13 +13:00
J. Nick Koston 785df05631 [ci] Reduce component test group size to prevent runner disk exhaustion (#11121) 2025-10-09 07:53:49 +13:00
Jesse Hills 93266ad08f Bump version to 2025.10.0b1 2025-10-08 21:14:44 +13:00
Jesse Hills 2fac813f18 [epaper_spi] New epaper component (#10462)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Tudor Sandu <tm.sandu@gmail.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-08 21:11:06 +13:00
Jesse Hills a62c7a03dd [api] Add support for getting action responses from home-assistant (#10948)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-10-08 20:47:36 +13:00
J. Nick Koston ec63247ae0 [mdns] Fix delete/malloc bug and store string constants in flash (#11105) 2025-10-08 04:19:29 +00:00
carlessolegrau 0fe6e7169c [modbus_controller] courtesy response (#10027)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-08 16:40:49 +13:00
dependabot[bot] a0f4de1bfb Bump aioesphomeapi from 41.12.0 to 41.13.0 (#11113)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-08 03:35:17 +00:00
Jesse Hills a541549d23 [core] Fix dynamic auto load priority (#11112) 2025-10-07 17:05:09 -10:00
Jonathan Swoboda b74715fe14 [esp32] Fix issue when framework source is set (#11106) 2025-10-07 22:55:59 -04:00
J. Nick Koston 5aff20a624 [api] Add message size limits to prevent memory exhaustion (#10936) 2025-10-08 00:47:31 +00:00
Kevin Ahrendt 7682b4e9a3 [audio] Update esp-audio-libs 2.0.1 to use new FLAC decoder (#10974)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-10-07 23:35:42 +00:00
Jonathan Swoboda 6eabf709c6 [esp32] Hide build warnings (#11102) 2025-10-08 10:27:56 +13:00
J. Nick Koston 6209d4b493 [api] Optimize frame helpers to eliminate double-move overhead (#11092) 2025-10-08 10:16:44 +13:00
J. Nick Koston f10c361454 [esp32_ble] Refactor ESPBTUUID comparison with direct returns and memcmp (#11074) 2025-10-08 09:34:08 +13:00
J. Nick Koston 27456c1370 [esp32_ble] Refactor ESPBTUUID::from_raw to use parse_hex helpers (#11073) 2025-10-08 09:32:47 +13:00
J. Nick Koston 1aeefbe547 [light] Reduce flash usage by eliminating duplicate validation code (#11030)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-08 09:23:57 +13:00
dependabot[bot] 3f3bce7ef4 Bump ruff from 0.13.3 to 0.14.0 (#11107)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-10-07 19:27:21 +00:00
Jesse Hills 0acc58d5a1 [core] Update helpers for new auto load functionality (#11097) 2025-10-07 14:24:28 -05:00
dependabot[bot] 0b4ef0fea2 Bump github/codeql-action from 3.30.6 to 4.30.7 (#11109)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-07 14:22:36 -05:00
dependabot[bot] a067bdb769 Bump aioesphomeapi from 41.11.0 to 41.12.0 (#11108)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-07 14:21:35 -05:00
Jesse Hills 301e7a7ac5 [const] Move CONF_CAPTURE_RESPONSE to const.py (#11096) 2025-10-07 03:15:56 -05:00
J. Nick Koston ac566b7fd6 [clang-tidy] Include sdkconfig.defaults in hash calculation (#11091) 2025-10-06 22:06:30 +00:00
J. Nick Koston fddb8b35f2 [esp32] Fix clang-tidy error for Arduino watchdog function declarations (#11085) 2025-10-06 16:54:13 -04:00
Jesse Hills 27e1095cd7 [core] Allow AUTO_LOAD to receive the component config to determine if it should load other components (#10961)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-10-06 15:36:27 -05:00
Mariusz Kryński fa4541a4f3 [mcp2515] setup filters (#10486) 2025-10-06 16:10:46 -04:00
J. Nick Koston 24dcc1843e [time] Fix clang-tidy sign comparison errors (#11080) 2025-10-06 14:34:40 -05:00
J. Nick Koston f670d775ac [api] Fix clang-tidy sign comparison error (#11081) 2025-10-06 19:26:58 +00:00
J. Nick Koston 59a31adac2 [waveshare_epaper] Fix clang-tidy sign comparison errors (#11079) 2025-10-07 08:14:28 +13:00
dependabot[bot] a3c0acc7c9 Bump pylint from 3.3.8 to 3.3.9 (#11082)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 14:13:48 -05:00
dependabot[bot] ad2c5b96a9 Bump zeroconf from 0.147.2 to 0.148.0 (#11083)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 19:11:04 +00:00
J. Nick Koston 9adc3bd943 [veml7700] Fix clang-tidy sign comparison errors (#11078) 2025-10-06 18:24:05 +00:00
J. Nick Koston ad296a7d74 [uponor_smatrix] Fix clang-tidy sign comparison errors (#11076) 2025-10-06 18:20:56 +00:00
J. Nick Koston fdd422c42a [tormatic] Fix clang-tidy sign comparison error (#11075) 2025-10-06 13:14:52 -05:00
J. Nick Koston 3d82301c3d [graph] Fix clang-tidy sign comparison error (#11051) 2025-10-06 13:28:43 -04:00
J. Nick Koston 2fa49be17d [haier] Fix clang-tidy sign comparison error (#11053) 2025-10-06 13:27:15 -04:00
J. Nick Koston 75867842ea [rtttl] Fix clang-tidy sign comparison error (#11065) 2025-10-06 13:26:59 -04:00
Stephen Kent cba85c0925 [remote_receiver] Add signal demodulation support on ESP32 (#8711)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2025-10-06 13:24:58 -04:00
J. Nick Koston 42d1269aaf [esp32_ble_server] Use early returns in is_created() and is_failed() methods (#11072) 2025-10-06 17:16:25 +00:00
J. Nick Koston f4df17673b [esp32_ble_server] Refactor property setters to reduce code duplication (#11071) 2025-10-06 12:15:06 -05:00
J. Nick Koston e340397b41 [mipi_spi] Fix clang-tidy sign comparison errors (#11070) 2025-10-06 13:10:41 -04:00
J. Nick Koston abeadc7830 [remote_base] Fix clang-tidy sign comparison error (#11064) 2025-10-06 11:49:50 -05:00
Beormund 8d4b347e5c [lm75b] Add LM75B temperature sensor component (#10534) 2025-10-06 12:36:33 -04:00
J. Nick Koston a7f556c25f [esp32_ble] Fix clang-tidy sign comparison error (#11048) 2025-10-06 11:28:41 -05:00
J. Nick Koston 3f4250fcd7 [st7567_i2c] Fix clang-tidy sign comparison warning (#11067) 2025-10-06 12:27:34 -04:00
J. Nick Koston b532e04ae4 [st7789v] Fix clang-tidy sign comparison errors (#11068)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-06 16:24:52 +00:00
Jesse Hills 697cab45dd [json] Add parse_json overload for const char * (#11039)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-10-06 11:19:31 -05:00
J. Nick Koston a88182c8e3 [statsd] Fix clang-tidy sign comparison error (#11069) 2025-10-06 12:12:39 -04:00
J. Nick Koston 8cfb6578d1 [graphical_display_menu] Fix clang-tidy sign comparison errors (#11052) 2025-10-06 12:10:54 -04:00
J. Nick Koston eb16d322cd [audio, i2s_audio] Fix clang-tidy sign comparison errors (#11044) 2025-10-06 12:07:44 -04:00
J. Nick Koston 22e06ba063 [matrix_keypad] Fix clang-tidy sign comparison error (#11059)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2025-10-06 11:53:24 -04:00
Mort 7147479f90 [qmc5883l] Added drdy_pin option to allow it to run max rate (#10901)
Co-authored-by: Lamer Mortification <lamer_mortification@yahoo.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2025-10-06 11:48:05 -04:00
J. Nick Koston e55df1babc [key_collector] Fix clang-tidy sign comparison errors (#11056)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2025-10-06 11:34:18 -04:00
J. Nick Koston 4c8fc5f4e6 [pid] Fix clang-tidy sign comparison error (#11063) 2025-10-06 11:20:59 -04:00
J. Nick Koston 646508006c [ili9xxx] Fix clang-tidy sign comparison errors (#11054) 2025-10-06 11:02:54 -04:00
J. Nick Koston 9384f0683b [kamstrup_kmp] Fix clang-tidy sign comparison errors (#11055) 2025-10-06 11:02:02 -04:00
J. Nick Koston 5e7f5bf890 [ltr501] Fix clang-tidy sign comparison errors (#11057) 2025-10-06 10:59:36 -04:00
J. Nick Koston 2a8796437d [ltr_als_ps] Fix clang-tidy sign comparison errors (#11058) 2025-10-06 10:59:02 -04:00
J. Nick Koston 1635767aa2 [max7219digit] Fix clang-tidy sign comparison error (#11060) 2025-10-06 10:56:44 -04:00
J. Nick Koston 192856e8d1 [nau7802] Fix clang-tidy sign comparison errors (#11062) 2025-10-06 09:52:47 -05:00
J. Nick Koston 71be5a5f65 [mixer] Fix clang-tidy sign comparison errors (#11061) 2025-10-06 14:48:39 +00:00
J. Nick Koston f86b83cda5 [fingerprint_grow] Fix clang-tidy sign comparison error (#11050) 2025-10-06 10:15:56 -04:00
J. Nick Koston 74c055745f [esp32_can] Fix clang-tidy sign comparison error (#11049) 2025-10-06 10:14:24 -04:00
J. Nick Koston 3edcdc7d80 [es7210] Fix clang-tidy sign comparison errors (#11047) 2025-10-06 10:13:12 -04:00
J. Nick Koston 94fea68e3e [daikin_arc] Fix clang-tidy sign comparison errors (#11046) 2025-10-06 10:12:40 -04:00
J. Nick Koston 6880f9fc5c [cm1106] Fix clang-tidy sign comparison error (#11045) 2025-10-06 10:09:10 -04:00
J. Nick Koston 26ebac8cb8 [bl0906, bl0942] Fix clang-tidy sign comparison errors (#11043)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-06 10:08:33 -04:00
J. Nick Koston 5cf0046601 [animation] Fix clang-tidy sign comparison errors (#11042) 2025-10-06 10:07:44 -04:00
J. Nick Koston c68017ddb4 [online_image] Fix clang-tidy sign comparison errors (#11041) 2025-10-06 10:07:04 -04:00
Keith Burzinski cfd241ff29 [zwave_proxy] Send HomeID upon client connect (#11037) 2025-10-06 03:47:55 +00:00
Clyde Stubbs f757a19e82 [mipi] Fix rotation handling (#11010) 2025-10-06 14:05:44 +11:00
J. Nick Koston e8854e0659 [esp32_ble] Fix max_connections architecture (shared client+server limit) (#11006) 2025-10-06 02:45:44 +00:00
Edward Firmo a3622d878d [nextion] Reduce DEBUG logs on events (#11014) 2025-10-05 21:11:36 -04:00
Jonathan Swoboda da2089c8be [core] Remove platformio install from setup (#10997) 2025-10-06 13:10:05 +13:00
J. Nick Koston 118663f9e2 [web_server] Use IDF web server for ESP32 Arduino builds (#10991) 2025-10-05 19:07:52 -05:00
J. Nick Koston 4a99987bfe [tuya] Fix clang-tidy signed/unsigned comparison warning (#11035) 2025-10-06 13:07:00 +13:00
J. Nick Koston d164c06f01 [sonoff_d1] Fix clang-tidy signed/unsigned comparison warning (#11034) 2025-10-06 13:06:43 +13:00
J. Nick Koston 972987acdf [esp32_rmt_led_strip] Fix clang-tidy signed/unsigned comparison warning (#11033) 2025-10-06 13:06:26 +13:00
J. Nick Koston eea2b6b81b [esp32_ble] Optimize string operations to reduce flash usage by 264 bytes (#11023) 2025-10-06 13:04:50 +13:00
J. Nick Koston f62e06104e [wifi] Optimize logging to reduce flash usage by 284 bytes on ESP8266 (#11022) 2025-10-06 13:03:26 +13:00
J. Nick Koston f26e71bae6 [ci] Fix clang-tidy after Arduino-as-IDF-component migration (#11031) 2025-10-05 22:16:09 +00:00
Jonathan Swoboda c6e4a7911c [esp32] Improve version handling (#10899)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-10-05 22:10:23 +00:00
J. Nick Koston e2c5eeef97 [scheduler] Deduplicate item removal code with template helper (#11017) 2025-10-05 16:32:51 -05:00
J. Nick Koston 7ea51b1865 [esphome.ota] Fix ESP32-S3 OTA authentication with hardware SHA acceleration (#11011) 2025-10-06 10:17:28 +13:00
J. Nick Koston aa1afbd152 [wifi] Optimize WPA2 EAP phase2 logging to reduce memory overhead (#11005)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-06 10:02:41 +13:00
J. Nick Koston 20d9ae699c [logger] Conditionally compile runtime tag-specific log levels for performance (#11004) 2025-10-06 09:59:52 +13:00
J. Nick Koston c0fb0ae06f [web_server_idf] Optimize parameter storage to reduce flash usage and memory overhead (#11003) 2025-10-06 09:57:59 +13:00
J. Nick Koston 9b6d62cd69 [web_server_idf] Fix watchdog timeout with unreliable event source connections (#11002)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-06 09:55:39 +13:00
J. Nick Koston 5932a4bd0e [web_server] Reduce flash and RAM usage by optimizing string construction (#10986) 2025-10-06 09:42:23 +13:00
J. Nick Koston 84c3cf5f17 [core] Replace std::pair with purpose-built named structs for component metadata (#10984) 2025-10-06 09:38:58 +13:00
J. Nick Koston 120a445abf [number] Reduce flash usage in NumberCall logging (#10983) 2025-10-06 09:37:47 +13:00
J. Nick Koston 41c073a451 [lock] Replace std::set with bitmask (saves 388B flash + 23B RAM per lock) (#10977) 2025-10-06 09:33:58 +13:00
J. Nick Koston 0fd71ca211 [mdns][openthread] Use StaticVector for services storage with compile-time capacity (#10976) 2025-10-06 09:30:17 +13:00
J. Nick Koston 19439199cc [api] Add configurable send queue limit to prevent OOM crashes (#10973) 2025-10-06 09:25:04 +13:00
J. Nick Koston 39d5cbc74a [esp32_ble_server] Replace EventEmitter with direct callbacks to reduce memory usage (#10946) 2025-10-06 09:20:40 +13:00
Jonathan Swoboda 722c5a94f2 [sps30] Clean up (#10998) 2025-10-05 09:24:09 -05:00
J. Nick Koston 7b48fc292f [api] Consolidate fatal error logging to reduce flash usage (#11015) 2025-10-05 09:56:30 -04:00
J. Nick Koston 6c7d92e726 [ethernet] Consolidate error handling to reduce flash usage (#11019) 2025-10-04 20:47:46 -05:00
J. Nick Koston b1859c50bd [api] Simplify message reading conditional (#11016) 2025-10-04 21:42:21 -04:00
J. Nick Koston 3f9924eac2 [core] Merge duplicate loops in mac_address_is_valid() (#11018) 2025-10-04 21:42:07 -04:00
mrtoy-me 874db20b7d [mpr121] cleaner setup (#11013) 2025-10-04 08:54:31 -04:00
J. Nick Koston 2eea674c04 [json] Fix missing defines.h include causing PSRAM allocator to be unused (#11008) 2025-10-03 23:52:40 -05:00
J. Nick Koston 0137954f2b [const] Move CONF_MAX_CONNECTIONS to const.py (#11007) 2025-10-03 18:20:00 -05:00
Patrick 0a40a30e4a [esp32_can] support multiple CAN instances for platforms that support it (#10712)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2025-10-03 23:10:19 +00:00
dependabot[bot] d43b844e06 Bump ruff from 0.13.2 to 0.13.3 (#11000)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-10-03 14:28:58 -05:00
Tucker Kern 2596b6096f Fix log level selector when selecting levels above INFO (#10368)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-10-03 14:28:38 -05:00
dependabot[bot] 6f8e82aeb6 Bump actions/stale from 10.0.0 to 10.1.0 (#11001)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-03 14:27:29 -05:00
J. Nick Koston ca0e738799 [logger] Fix line number wrapping bug for files with >999 lines (#10979) 2025-10-03 10:50:21 -05:00
Jonathan Swoboda 14a23101f2 [core] Fix MQTT import (#10982) 2025-10-03 11:35:55 -04:00
mrtoy-me 2b389bb8f2 [sps30] remove delay (#10964)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-03 09:40:43 -04:00
mrtoy-me 89c3340ef6 [mpr121] remove delay (#10963)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-03 09:06:16 -04:00
Oliver Gründel ba0532cda7 Fix UNIT_KILOVOLT_AMPS_REACTIVE constant definition (#10992) 2025-10-03 07:36:14 -04:00
J. Nick Koston 5419b8bddb [ci] Fix pre-commit action to comply with pinned SHA security policy (#10990) 2025-10-02 21:53:16 -05:00
dependabot[bot] 624868bb05 Bump github/codeql-action from 3.30.5 to 3.30.6 (#10985)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-02 22:58:06 +02:00
J. Nick Koston f2aa5a754c [api] Remove ClientInfo::get_combined_info() to eliminate heap fragmentation (#10970) 2025-10-02 12:44:30 +13:00
J. Nick Koston 638c6cc14e [api] Reduce flash usage in user services by eliminating vector copy (#10971) 2025-10-01 20:26:47 +02:00
Jonathan Swoboda 8137d7600a [rtttl] Fix warning (#10972) 2025-10-01 20:26:25 +02:00
Carl Reid 08afc3030a [psram] raise instead of returning invalid object (#10954)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-01 09:47:32 -04:00
Jesse Hills 1deb79a24b [core] Add some types to loader.py (#10967)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-01 15:36:17 +02:00
J. Nick Koston de21c61b6a [logger] Optimize log formatting performance (35-72% faster) (#10960) 2025-10-01 15:33:30 +02:00
J. Nick Koston db1aa82350 [core] Fix ComponentIterator alignment for 32-bit platforms (#10969) 2025-10-01 15:33:14 +02:00
Jesse Hills fe4799b300 Merge branch 'release' into dev 2025-10-02 00:30:42 +13:00
Jesse Hills 93e18e850e Merge pull request #10966 from esphome/bump-2025.9.3
2025.9.3
2025-10-02 00:29:56 +13:00
mrtoy-me 5cef75dbe1 [hdc1080] remove delays and fix no check for sensor nullptr (#10947)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-01 07:22:02 -04:00
Piotr Szulc 4194a940ae [remote_transmitter] fix sending codes on libretiny (#10959)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-01 07:10:37 -04:00
Jesse Hills 59c0ffb98b Bump version to 2025.9.3 2025-10-01 23:41:42 +13:00
Abílio Costa 29658b79bc [voice_assistant] Fix wakeword string being reset while referenced (#10945)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-10-01 23:41:42 +13:00
Vladimir Makeev 158a59aa83 [sim800l] Fixed ignoring incoming calls. (#10865)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-01 23:41:42 +13:00
J. Nick Koston c95180504a [api] Prevent API from overriding noise encryption keys set in YAML (#10927) 2025-10-01 23:41:42 +13:00
Jesse Hills 848ba6b717 [psram] Fix invalid variant error, add supported() check (#10962) 2025-10-01 23:29:10 +13:00
J. Nick Koston 922f4b6352 [web_server] Optimize handler methods with lookup tables to reduce flash usage (#10951) 2025-10-01 15:52:35 +13:00
Javier Peletier fd3c05b42e [substitutions] fix #10825 set evaluation error (#10830) 2025-10-01 14:33:56 +13:00
Jesse Hills ab1f8326ee [const] Move CONF_ON_RESPONSE to const.py (#10958) 2025-10-01 11:12:45 +13:00
J. Nick Koston 2a915e4efd [deep_sleep] esp32 fixes to align with variant support (#10929) 2025-10-01 08:42:42 +13:00
dependabot[bot] f5e85a424f Bump docker/login-action from 3.5.0 to 3.6.0 in the docker-actions group (#10943)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-01 08:29:49 +13:00
J. Nick Koston c69603d916 [dashboard] Replace polling with WebSocket for real-time updates (#10893) 2025-09-30 14:03:52 -04:00
Jonathan Swoboda d75b7708a5 [sx126x] Add additional FSK CRC options (#10928) 2025-09-30 12:08:28 -04:00
J. Nick Koston b023453e81 [captive_portal] Add DHCP Option 114 support for ESP32 (#10952) 2025-09-30 17:52:37 +02:00
Stephen Boyle a5ba6237cb [ethernet] Add mac_address yaml configuration option (#10861)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-30 08:59:08 -04:00
Patrick 0e623055df [mcp2515, canbus] error handling improvments (#10526) 2025-09-30 08:56:28 -04:00
J. Nick Koston 6018f5f5d1 [api] Add configurable connection limits (#10939) 2025-09-30 22:24:19 +13:00
J. Nick Koston 96868aa754 [socket] Reduce memory overhead for LWIP TCP accept queue on ESP8266/RP2040 (#10938) 2025-09-30 16:52:47 +13:00
J. Nick Koston 83d86c8c59 [ota] Complete non-blocking authentication implementation (#10912) 2025-09-30 16:46:47 +13:00
Abílio Costa 7703cabb7b [voice_assistant] Fix wakeword string being reset while referenced (#10945)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-30 02:29:16 +00:00
dependabot[bot] 300f1de11c Bump aioesphomeapi from 41.10.0 to 41.11.0 (#10942)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 17:00:23 -05:00
J. Nick Koston 3b73738d9f [script] Reduce RAM usage by storing names in flash (#10941) 2025-09-30 10:35:53 +13:00
Jonathan Swoboda b176d1f890 [core] Don't remove storage in clean-all (#10921) 2025-09-29 15:24:42 -04:00
Jesse Hills 2aaafd6ebb Merge branch 'release' into dev 2025-09-30 07:51:02 +13:00
Jesse Hills a96c013eb1 Merge pull request #10932 from esphome/bump-2025.9.2
2025.9.2
2025-09-30 07:50:17 +13:00
tomaszduda23 054b215d8d [nrf52] add more tests (#10694) 2025-09-29 14:11:57 -04:00
tomaszduda23 e3e98e2568 [nrf52] add more tests (#10695)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2025-09-29 14:09:41 -04:00
Vladimir Makeev 29db576f79 [sim800l] Fixed ignoring incoming calls. (#10865)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-29 09:08:51 -04:00
Jesse Hills 58166b3e71 Bump version to 2025.9.2 2025-09-29 21:39:17 +13:00
Clyde Stubbs 345fc0b6ca [mipi_spi] Fix t-display-amoled (#10922) 2025-09-29 21:39:17 +13:00
Oliver Kleinecke 127058e700 [usb_uart] Disable flow control on ch34x 2025-09-29 21:39:17 +13:00
Jonathan Swoboda 57f7a709cf [sx126x] Fix issues with variable length FSK packets (#10911) 2025-09-29 21:39:17 +13:00
J. Nick Koston f2a9e9265e [esp32_improv] Fix crashes from uninitialized pointers and missing null checks (#10902) 2025-09-29 21:39:16 +13:00
Stuart Parmenter 1ecd26adb5 Set color_order to RGB for the Waveshare ESP32-S3-TOUCH-LCD-4.3 and ESP32-S3-TOUCH-LCD-7-800X480 (#10835) 2025-09-29 21:39:16 +13:00
Jonathan Swoboda 6d9fc672d5 [libretiny] Fix lib_ignore handling and ignore incompatible libraries (#10846) 2025-09-29 21:39:16 +13:00
J. Nick Koston b9361b0868 [esp32_improv] Disable loop by default until provisioning needed (#10764) 2025-09-29 21:39:16 +13:00
J. Nick Koston 0246a8eb1d [usb_host] Fix double-free crash with lock-free atomic pool allocation (#10926) 2025-09-29 14:48:51 +10:00
J. Nick Koston a56d044d98 [api] Prevent API from overriding noise encryption keys set in YAML (#10927) 2025-09-28 22:42:58 -05:00
J. Nick Koston f6253d52b4 [esp32_ble_server] Conditionally compile BLE automation features to save memory (#10910)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-29 14:28:03 +13:00
Clyde Stubbs 77dff52183 [mipi_spi] Fix t-display-amoled (#10922) 2025-09-29 12:12:06 +13:00
J. Nick Koston 4b86f31b66 [core] Fix platform component normalization happening too late in validation pipeline (#10908) 2025-09-29 12:09:08 +13:00
J. Nick Koston 78655968df [event_emitter] Replace unordered_map with vector - saves 2.6KB flash, 2.3x faster (#10900) 2025-09-29 12:07:13 +13:00
J. Nick Koston ab79e596b5 [esp32_ble_server] Optimize notification and action managers for typical use cases (#10897) 2025-09-29 11:32:16 +13:00
J. Nick Koston ef73ae2116 [esp32_ble_server] Replace HashMap with vector for services - saves 1KB flash, 26x faster (#10894) 2025-09-29 10:36:40 +13:00
J. Nick Koston 0111f725ff [esp32_ble_tracker] Reduce gap_scan_result log verbosity to VV (#10917) 2025-09-29 10:34:32 +13:00
J. Nick Koston 34b4cb46f6 [esp32_improv] Make device name visible to passive BLE scanners (#10918) 2025-09-29 10:33:36 +13:00
J. Nick Koston a2f833d665 [captive_portal] Add DNS server support for ESP-IDF framework (#10919) 2025-09-29 10:07:26 +13:00
Brandon Ibach a7042687c1 [spi] fix SPI interface selection on ESP32-S2 and -S3 (#10732) (#10766) 2025-09-28 10:58:42 +00:00
Oliver Kleinecke 0d2d18c198 [usb_uart] Disable flow control on ch34x 2025-09-28 19:35:40 +10:00
Oliver Kleinecke 3f03e8c423 [usb_host][usb_uart] Allow on ESP32-P4 (#10815) 2025-09-28 07:15:18 +00:00
Keith Burzinski 9dd6be4061 [zwave_proxy, api] Add notification message when Z-Wave HomeID changes (#10860) 2025-09-27 17:50:18 -05:00
Jonathan Swoboda 2bf79a607f [sx126x] Fix issues with variable length FSK packets (#10911) 2025-09-27 15:55:14 -04:00
J. Nick Koston 61a11547ca [esp32_improv] Fix crashes from uninitialized pointers and missing null checks (#10902) 2025-09-27 09:24:17 -05:00
J. Nick Koston abf522bbb9 [ota] Add SHA256 password authentication with backward compatibility (#10809)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-26 17:50:27 -05:00
Patrick Van Oosterwijck 25fc16163b [ethernet] Fix Ethernet RMII capable variant validation (#10909) 2025-09-26 17:34:22 -05:00
dependabot[bot] 55593628ef Bump github/codeql-action from 3.30.4 to 3.30.5 (#10905)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 16:22:32 -05:00
dependabot[bot] 1f90d89731 Bump pyyaml from 6.0.2 to 6.0.3 (#10904)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 16:22:09 -05:00
J. Nick Koston 1560b8b8e2 [climate] Remove STL algorithm overhead in save_state() method (#10888) 2025-09-26 12:19:48 +12:00
J. Nick Koston b26776fad4 [select] Remove STL algorithm overhead to reduce flash usage (#10887) 2025-09-26 12:19:06 +12:00
J. Nick Koston 875ada86b0 [web_server] Remove std::find_if overhead matching IDF implementation (#10889) 2025-09-26 12:14:16 +12:00
J. Nick Koston 195d1be4a9 [version] Reduce flash usage by optimizing string concatenation in setup() (#10890) 2025-09-26 12:12:39 +12:00
J. Nick Koston 2b12ff5874 [esp32_ble] Reduce RAM usage and firmware size by disabling unused GATT functionality (#10862) 2025-09-26 12:11:13 +12:00
J. Nick Koston 250b94d113 [text_sensor] Convert LOG_TEXT_SENSOR macro to function to reduce flash usage (#10884) 2025-09-26 12:10:31 +12:00
Jesse Hills 28199c1cf8 [stale] Clean up stale job (#10892) 2025-09-26 12:02:51 +12:00
Jesse Hills eeb3ccaef7 Update stale bot rules (#10891) 2025-09-26 11:13:23 +12:00
Patrick Van Oosterwijck 460eb219ba [ethernet] Add LAN8670 PHY support (#10874)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-25 21:45:07 +00:00
Jonathan Swoboda cef9cf49bf [htu21d] Fix I2C NACK issue and buffer overrun (#10801) 2025-09-25 15:54:38 -05:00
Jonathan Swoboda 28f09f9ed1 [dashboard] Fix progress bars on Windows (#10858) 2025-09-25 15:53:34 -05:00
J. Nick Koston 3eb502b328 Add sha256 support (#10882) 2025-09-26 08:53:21 +12:00
dependabot[bot] 7af77d0f82 Bump ruff from 0.13.1 to 0.13.2 (#10885)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-25 19:39:14 +00:00
dependabot[bot] 1c229947a8 Bump github/codeql-action from 3.30.3 to 3.30.4 (#10886)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-25 14:34:23 -05:00
Jonathan Swoboda 74f09a2b59 [core] Rename to clean-platform to clean-all (#10876) 2025-09-25 11:55:43 -04:00
J. Nick Koston 549626bee2 Fix flakey password auth failure integration test (#10883) 2025-09-25 11:39:56 -04:00
Jonathan Swoboda 65a1d2b2ff [scd30] Fix temp offset (#10847) 2025-09-25 09:13:27 -05:00
Antoine Lépée f7ed127182 Add WTS01 temperature sensor component (#8539)
Co-authored-by: Antoine Lépée <alepee@MacBook-Pro-de-Antoine.local>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-25 13:38:31 +00:00
Jesse Hills 44767c32cf Pin SHA for github actions (#10879) 2025-09-25 08:08:16 -05:00
Jesse Hills 0cc03dfe32 [json] Parsing json without a lambda (#10838) 2025-09-25 16:35:19 +12:00
J. Nick Koston 1922b7b3ed [api] Make password and encryption mutually exclusive, add deprecation warning for password auth (#10871) 2025-09-24 22:20:35 -05:00
Michael Hansen f22143f090 Add external wake word message (#10850) 2025-09-24 19:08:29 -05:00
dependabot[bot] be92903a6f Bump actions/cache from 4.2.4 to 4.3.0 (#10868)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 19:06:31 -05:00
dependabot[bot] 538941b3fd Bump actions/cache from 4.2.4 to 4.3.0 in /.github/actions/restore-python (#10869)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 19:06:18 -05:00
dependabot[bot] ce8ac8b89d Bump aioesphomeapi from 41.9.1 to 41.10.0 (#10872)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-24 23:11:53 +00:00
Stuart Parmenter 6d0f134ff1 Set color_order to RGB for the Waveshare ESP32-S3-TOUCH-LCD-4.3 and ESP32-S3-TOUCH-LCD-7-800X480 (#10835) 2025-09-24 08:59:16 -05:00
J. Nick Koston 11ccf0e591 [usb_host] Prevent USB data corruption from missed events (#10859) 2025-09-24 08:58:42 -05:00
J. Nick Koston adfacdf1b7 [api] Consolidate authentication checks to reduce function call overhead (#10852) 2025-09-23 19:43:55 -05:00
J. Nick Koston f8226cd481 [esp32_ble] Remove Arduino-specific BLE limitations and SplitDefaults (#10780) 2025-09-23 19:42:46 -05:00
Jesse Hills 63326cbd6d [api] Rename HomeassistantServiceResponse to HomeassistantActionRequest (#10839)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-09-23 17:58:24 -05:00
J. Nick Koston d0d7abb542 Implement zero-copy for strings in base API calls (#10851) 2025-09-23 16:15:28 -05:00
dependabot[bot] cd7922faaf Bump aioesphomeapi from 41.9.0 to 41.9.1 (#10857)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-23 20:58:49 +00:00
J. Nick Koston 365e3afa9b Implement zero-copy API for zwave_proxy (#10836)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-09-23 20:12:54 +00:00
dependabot[bot] e9c2e211ef Bump aioesphomeapi from 41.8.0 to 41.9.0 (#10855)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-23 20:09:04 +00:00
J. Nick Koston afda9500bf [zwave_proxy] Fix race condition sending zero home ID on reboot (#10848)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-09-23 19:21:49 +00:00
dependabot[bot] bc7fc8df18 Bump aioesphomeapi from 41.7.0 to 41.8.0 (#10853)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-23 14:19:43 -05:00
J. Nick Koston 2f8a4d0caa [api] Implement zero-copy API for bluetooth_proxy writes (#10840) 2025-09-23 13:48:57 -05:00
J. Nick Koston a7ee7b962e [wifi] Unify ESP32 WiFi implementation to use ESP-IDF driver (#10849) 2025-09-23 12:15:12 -05:00
Jonathan Swoboda 3cb2a4569c [core] Add a clean-platform option (#10831) 2025-09-23 12:41:25 -04:00
Jesse Hills 3b20969171 [core] Add typing to some core files (#10843) 2025-09-23 09:32:13 -05:00
Jonathan Swoboda 3b40172073 [libretiny] Fix lib_ignore handling and ignore incompatible libraries (#10846) 2025-09-23 10:21:19 -04:00
Jesse Hills 2e220fcca2 [camera-encoder] Use defines instead of build flags (#10824)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-23 08:44:43 -05:00
dependabot[bot] 56e8af79c3 Bump aioesphomeapi from 41.6.0 to 41.7.0 (#10841)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-23 00:18:13 -05:00
dependabot[bot] 25e9ec1782 Bump aioesphomeapi from 41.4.0 to 41.6.0 (#10833)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-22 23:06:11 -05:00
J. Nick Koston 1771c852af Pin ruamel.yaml.clib to 0.2.12 (#10837) 2025-09-22 23:01:37 -05:00
Nerdiy.de 8714a45a5c Fix incorrect factor for value calculation in MMC5603 component (#9925) 2025-09-22 21:48:34 -04:00
Jesse Hills 5e94460608 [CI] Format files after sync (#10828) 2025-09-23 07:48:39 +12:00
brambo123 d302c0c600 [uart] Multiple ESP32 features and fixes (#8103)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-22 12:15:19 -05:00
Sam 5c943d7c13 tuya: handle WIFI_SELECT and WIFI_RESET (#10822)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-22 17:05:41 +12:00
Javier Peletier 7629903afb [substitutions] implement !literal (#10785) 2025-09-22 16:32:59 +12:00
Javier Peletier 68eb4091b8 [substitutions] add missing safe globals tests (#10814) 2025-09-22 16:29:15 +12:00
J. Nick Koston 5062e7a0e1 Fix missing os import after merge collisions (#10823) 2025-09-21 15:59:44 -06:00
J. Nick Koston 30bb640c89 Skip external component updates when running logs command (#10756)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-21 21:15:49 +00:00
J. Nick Koston fbb48c504f [esp32_improv] Disable loop by default until provisioning needed (#10764) 2025-09-22 09:08:55 +12:00
J. Nick Koston 440b0b5574 [tests] Add integration tests for oversized payload handling in API (#10788) 2025-09-22 09:07:47 +12:00
J. Nick Koston c64d385fa6 [web_server] Reduce flash usage by eliminating lambda overhead in JSON generation (#10749) 2025-09-22 09:06:59 +12:00
J. Nick Koston 0432a10543 Add coverage for Path to str fix in #10807 (#10808) 2025-09-22 08:59:19 +12:00
J. Nick Koston 4729bc87fa [core] Fix TypeError in update-all command after Path migration (#10821) 2025-09-21 13:07:27 -04:00
Jonathan Swoboda e3b64103cc [sensirion] Fix warning (#10813) 2025-09-20 21:23:33 -05:00
esphomebot ebdcb3e4d9 Synchronise Device Classes from Home Assistant (#10803)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-20 13:09:21 +00:00
J. Nick Koston 971522574d [http_request] Fix Path object passed to C++ codegen (#10812) 2025-09-19 20:10:02 -04:00
J. Nick Koston 73e939dbbc [zephyr] Fix compilation after Path migration (#10811) 2025-09-19 20:09:32 -04:00
dependabot[bot] a96798ef98 Bump esptool from 5.0.2 to 5.1.0 (#10758)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-19 15:13:47 -06:00
dependabot[bot] 923e7049f1 Bump aioesphomeapi from 41.1.0 to 41.4.0 (#10805)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-19 15:04:43 -06:00
Paulus Schoutsen 26df542036 Fix esphome run (#10807) 2025-09-19 15:36:46 -05:00
Keith Burzinski 1ccec6950a [zwave_proxy] Send Home ID in DeviceInfoResponse (#10798)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: AlCalzone <d.griesel@gmx.net>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-19 14:52:54 +00:00
dependabot[bot] b3a122de3c Bump ruff from 0.13.0 to 0.13.1 (#10802)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-19 08:04:29 -06:00
Jesse Hills 9ea3643b74 [core] os.path -> Path (#10654)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-19 12:59:48 +00:00
Jesse Hills de617c85c7 Merge branch 'release' into dev 2025-09-19 20:47:37 +12:00
Jesse Hills e47f4ef602 Merge pull request #10796 from esphome/bump-2025.9.1
2025.9.1
2025-09-19 20:46:53 +12:00
Keith Burzinski 9c201afe76 [api_protobuf.py] Use type appropriate for estimated_size (#10797) 2025-09-18 20:55:45 -05:00
J. Nick Koston 2bb64a189d [dashboard] Transfer DNS/mDNS cache from dashboard to CLI to avoid blocking (#10685) 2025-09-18 20:13:13 -05:00
Jesse Hills 9853a2e6ab [ektf2232] Rename rts_pin to reset_pin (#10720) 2025-09-18 18:41:23 -06:00
Jesse Hills 961be7fd12 Bump version to 2025.9.1 2025-09-19 11:52:10 +12:00
J. Nick Koston a5a21f47d1 [gpio] Fix unused function warnings when compiling with log level below DEBUG (#10779) 2025-09-19 11:52:09 +12:00
J. Nick Koston a06cd84974 [core] Fix ESP8266 mDNS compilation failure caused by incorrect coroutine priorities (#10773) 2025-09-19 11:52:09 +12:00
Subhash Chandra e3703b43c1 [packet_transport] Refactor sensor/provider list handling to be idempotent (#10765) 2025-09-19 11:52:09 +12:00
J. Nick Koston f6dc25c0ce [mqtt] Fix KeyError when MQTT logging configured without explicit level (#10774) 2025-09-19 11:52:09 +12:00
Keith Burzinski fad0ec7793 [zwave_proxy] New component (#10762)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-18 15:43:14 -05:00
J. Nick Koston a302cec993 [libretiny] Optimize preferences memory usage by replacing vector with unique_ptr (#10731) 2025-09-18 05:25:29 -05:00
J. Nick Koston 6781da45cb [esp32] Optimize NVS preferences memory usage by replacing vector with unique_ptr (#10729) 2025-09-18 05:24:50 -05:00
J. Nick Koston 37d526f003 [gpio] Fix unused function warnings when compiling with log level below DEBUG (#10779) 2025-09-18 05:22:22 -05:00
J. Nick Koston d74cfefeef [ethernet] Remove redundant Arduino framework version check (#10781) 2025-09-17 23:39:14 -05:00
J. Nick Koston 1ffb9d972a [core] Fix ESP8266 mDNS compilation failure caused by incorrect coroutine priorities (#10773) 2025-09-18 13:11:30 +12:00
Subhash Chandra 4e5339801b [packet_transport] Refactor sensor/provider list handling to be idempotent (#10765) 2025-09-18 00:14:31 +00:00
Jonathan Swoboda b8cee477fe [esp32] Use arduino as an idf component (#10647)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-17 17:23:34 -05:00
J. Nick Koston ff2df278d6 [api] Rename ConnectRequest/Response to AuthenticationRequest/Response (#10726) 2025-09-18 07:42:37 +12:00
J. Nick Koston 429e989b69 [core] Make StringRef convertToJson inline to save 250+ bytes flash (#10751) 2025-09-18 07:40:32 +12:00
Martin Weinelt 28541bdb1c Migrate to SPDX license specifier in pyproject.toml (#10768) 2025-09-18 07:38:18 +12:00
J. Nick Koston 11c595bb09 [mqtt] Fix KeyError when MQTT logging configured without explicit level (#10774) 2025-09-18 07:38:02 +12:00
dependabot[bot] fd888eaa68 Bump aioesphomeapi from 40.2.1 to 41.1.0 (#10776)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-17 14:29:58 -05:00
Jesse Hills 3a233b2fd0 Merge branch 'release' into dev 2025-09-17 18:52:06 +12:00
Jesse Hills d2df232706 Merge pull request #10763 from esphome/bump-2025.9.0
2025.9.0
2025-09-17 18:51:21 +12:00
Jesse Hills 404e679e66 Bump version to 2025.9.0 2025-09-17 11:02:12 +12:00
Jesse Hills 4426bf6029 Merge branch 'beta' into dev 2025-09-17 10:50:48 +12:00
Jesse Hills 8d401ad05a Merge pull request #10761 from esphome/bump-2025.9.0b4
2025.9.0b4
2025-09-17 10:50:15 +12:00
Jesse Hills e542816f7d Bump version to 2025.9.0b4 2025-09-17 09:22:54 +12:00
J. Nick Koston 12cadf0a04 [core] Fix clean build files to properly clear PlatformIO cache (#10754) 2025-09-17 09:22:54 +12:00
J. Nick Koston adc3d3127d [wizard] Fix KeyError when running wizard with empty OTA password (#10753) 2025-09-17 09:22:54 +12:00
J. Nick Koston 61ab682099 Add additional coverage for util and writer (#10683) 2025-09-17 09:22:54 +12:00
J. Nick Koston 27fa18dcec [core] Fix clean build files to properly clear PlatformIO cache (#10754) 2025-09-17 08:09:35 +12:00
J. Nick Koston 22989592f0 [wizard] Fix KeyError when running wizard with empty OTA password (#10753) 2025-09-17 07:56:54 +12:00
dependabot[bot] 1f4b10f523 Bump pytest-mock from 3.15.0 to 3.15.1 (#10759)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-16 14:54:56 -05:00
Jesse Hills cbaf8d309b Merge branch 'beta' into dev 2025-09-17 00:17:01 +12:00
Jesse Hills c05b7cca5e Merge pull request #10752 from esphome/bump-2025.9.0b3
2025.9.0b3
2025-09-17 00:15:06 +12:00
Jesse Hills 6ac395da6d Bump version to 2025.9.0b3 2025-09-16 20:35:23 +12:00
jokujossai 54616ae1b4 [ade7880] fix channel a voltage registry (#10750) 2025-09-16 20:35:23 +12:00
jokujossai e33dcda907 [mqtt] fix publish payload length when payload contains null characters (#10744) 2025-09-16 20:35:23 +12:00
J. Nick Koston 04c1b90e57 [ethernet] Conditionally compile PHY-specific code to reduce flash usage (#10747) 2025-09-16 20:35:23 +12:00
J. Nick Koston ddb8fedef7 [dashboard] Fix archive handler to properly delete build folders using correct path (#10724) 2025-09-16 20:35:23 +12:00
J. Nick Koston 04f4f79cb4 [select] Use const references to avoid unnecessary vector copies (#10741) 2025-09-16 20:35:23 +12:00
J. Nick Koston 8890071360 Add additional test coverage ahead of Path conversion (#10700) 2025-09-16 20:35:23 +12:00
J. Nick Koston 4b3a997a8e Improve coverage for various core modules (#10663) 2025-09-16 20:35:23 +12:00
jokujossai 660223e269 [ade7880] fix channel a voltage registry (#10750) 2025-09-16 17:00:22 +12:00
jokujossai 6d1de2106e [mqtt] fix publish payload length when payload contains null characters (#10744) 2025-09-16 15:28:36 +12:00
DT-art1 90e33306f1 [const] Move CONF_CLEAR to const.py (#10742) 2025-09-16 13:24:23 +12:00
J. Nick Koston f3ac21b3b4 [ethernet] Conditionally compile PHY-specific code to reduce flash usage (#10747) 2025-09-15 23:46:07 +00:00
J. Nick Koston 4859fe67eb [dashboard] Fix archive handler to properly delete build folders using correct path (#10724) 2025-09-16 11:04:35 +12:00
J. Nick Koston a723673dcc [select] Use const references to avoid unnecessary vector copies (#10741) 2025-09-16 09:16:26 +12:00
Jesse Hills 612fb4cc3c [CI] Check esp32 boards file is up to date (#10730) 2025-09-15 15:03:02 -05:00
J. Nick Koston 5fac67d195 [json] Only compile SpiRamAllocator when PSRAM is enabled (#10728) 2025-09-15 11:50:11 -05:00
Jesse Hills d671862e9a Merge branch 'beta' into dev 2025-09-15 18:29:26 +12:00
Jesse Hills 2a4ab6a811 Merge pull request #10725 from esphome/bump-2025.9.0b2
2025.9.0b2
2025-09-15 18:28:51 +12:00
J. Nick Koston 459ef7f262 [api] Exclude ConnectRequest/Response when password is disabled (#10704) 2025-09-14 20:45:28 -05:00
J. Nick Koston bd9dc43e59 Add additional coverage ahead of Path conversion (#10723) 2025-09-15 13:33:15 +12:00
Jesse Hills 971de64494 Bump version to 2025.9.0b2 2025-09-15 12:34:56 +12:00
J. Nick Koston 926fdcbecd [esp32_ble] Optimize BLE hex formatting to eliminate sprintf dependency (#10714)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-15 12:34:56 +12:00
J. Nick Koston 6b147312cd [wifi] Optimize WiFi MAC formatting to eliminate sprintf dependency (#10715)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-15 12:34:56 +12:00
J. Nick Koston 2d9152d9b9 [md5] Optimize MD5::get_hex() to eliminate sprintf dependency (#10710) 2025-09-15 12:34:56 +12:00
dependabot[bot] 24f9550ce5 Bump aioesphomeapi from 40.2.0 to 40.2.1 (#10721)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-15 12:34:56 +12:00
Big Mike 3427aaab8c ina2xx should be total increasing for energy sensor (#10711) 2025-09-15 12:34:56 +12:00
J. Nick Koston 4e17d14acc [scheduler] Fix timing accumulation in scheduler causing incorrect execution measurements (#10719) 2025-09-15 12:34:56 +12:00
J. Nick Koston 1750f02ef3 [api] Optimize HelloResponse server_info to reduce memory usage (#10701) 2025-09-15 12:34:56 +12:00
J. Nick Koston ae158179bd [api] Revert unneeded GetTime bidirectional support added in #9790 (#10702) 2025-09-15 12:34:55 +12:00
J. Nick Koston c601494779 [core] Optimize MAC address formatting to eliminate sprintf dependency (#10713) 2025-09-15 12:34:55 +12:00
J. Nick Koston 646f4e66be [ethernet] Fix permanent component failure from undocumented ESP_FAIL in IPv6 setup (#10708) 2025-09-15 12:34:55 +12:00
dependabot[bot] 5b5e5c213c Bump aioesphomeapi from 40.1.0 to 40.2.0 (#10703)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-15 12:34:55 +12:00
Markus 46235684b1 [core] fix upload to device via MQTT IP lookup (e.g. when mDNS is disable) (#10632)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-09-15 12:34:55 +12:00
J. Nick Koston 5b702a1efa Add additional dashboard and main tests (#10688)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-15 12:34:55 +12:00
J. Nick Koston 56e9fd2e38 [tests] Add upload_program and show_logs test coverage to prevent regressions (#10684) 2025-09-15 12:34:55 +12:00
J. Nick Koston 65f15a706f Add some more coverage for dashboard web_server (#10682) 2025-09-15 12:34:55 +12:00
J. Nick Koston eee64cc3a6 Add comprehensive tests for choose_upload_log_host to prevent regressions (#10679)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-15 12:34:55 +12:00
J. Nick Koston f43fb3c3a3 [core] Add millisecond precision to logging timestamps (#10677) 2025-09-15 12:34:55 +12:00
rwrozelle 79b0025fe6 Openthread Fix Factory Reset (#9281)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-15 12:34:55 +12:00
Jesse Hills c6a039a72f [adc] Fix FILTER_SOURCE_FILES location (#10673) 2025-09-15 12:34:54 +12:00
esphomebot 6f1fa094c2 Update webserver local assets to 20250910-110003 (#10668) 2025-09-15 12:34:54 +12:00
J. Nick Koston 1d5a3b647d [esp32_ble] Optimize BLE hex formatting to eliminate sprintf dependency (#10714)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-15 12:04:45 +12:00
Jimmy Hedman af3e1788d1 Unpin libretiny version in network test (#10717) 2025-09-14 22:54:14 +00:00
J. Nick Koston b946cb160d [wifi] Optimize WiFi MAC formatting to eliminate sprintf dependency (#10715)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-14 22:35:27 +00:00
J. Nick Koston e0241e9dcd [md5] Optimize MD5::get_hex() to eliminate sprintf dependency (#10710) 2025-09-14 22:35:18 +00:00
dependabot[bot] 1accc409f6 Bump aioesphomeapi from 40.2.0 to 40.2.1 (#10721)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-14 22:33:07 +00:00
Big Mike f756de276b ina2xx should be total increasing for energy sensor (#10711) 2025-09-15 10:16:01 +12:00
J. Nick Koston ac07a00141 [scheduler] Fix timing accumulation in scheduler causing incorrect execution measurements (#10719) 2025-09-14 22:05:56 +00:00
J. Nick Koston 7ae11de2e4 [api] Optimize HelloResponse server_info to reduce memory usage (#10701) 2025-09-15 09:54:42 +12:00
J. Nick Koston bb6be9c939 [api] Revert unneeded GetTime bidirectional support added in #9790 (#10702) 2025-09-15 09:52:19 +12:00
J. Nick Koston 9c85a7eff3 [core] Optimize MAC address formatting to eliminate sprintf dependency (#10713) 2025-09-15 09:50:38 +12:00
J. Nick Koston 10a665b864 [ethernet] Fix permanent component failure from undocumented ESP_FAIL in IPv6 setup (#10708) 2025-09-15 09:45:22 +12:00
J. Nick Koston 35dce3c80d Add additional test coverage ahead of Path conversion (#10700) 2025-09-15 09:31:38 +12:00
dependabot[bot] 7e6b11ce84 Bump aioesphomeapi from 40.1.0 to 40.2.0 (#10703)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-13 23:25:19 +00:00
Keith Burzinski adcba4fd9a [api_protobuf.py] Use type based on size/length (#10696) 2025-09-13 17:02:04 -05:00
Markus d3592c451b [core] fix upload to device via MQTT IP lookup (e.g. when mDNS is disable) (#10632)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-09-12 16:31:53 -05:00
J. Nick Koston 24eb33a1c0 Add additional dashboard and main tests (#10688)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-13 09:04:56 +12:00
dependabot[bot] cf1fef8cfb Bump pytest-asyncio from 1.1.0 to 1.2.0 (#10691)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-12 14:09:38 -05:00
fakuivan 28bba0666c [packet_transport] initialize packet data after flushing (#10686) 2025-09-13 05:02:41 +10:00
J. Nick Koston 4390fd80a3 Add additional coverage for util and writer (#10683) 2025-09-12 17:04:51 +12:00
J. Nick Koston 4813c5134e [tests] Add upload_program and show_logs test coverage to prevent regressions (#10684) 2025-09-12 17:04:22 +12:00
J. Nick Koston bbef0e173e [esp32_ble_tracker] Simplify BLE client state machine by removing READY_TO_CONNECT (#10672) 2025-09-12 08:54:34 +12:00
J. Nick Koston 3240e19a7c Add some more coverage for dashboard web_server (#10682) 2025-09-12 08:52:46 +12:00
J. Nick Koston ac0cd946f0 Add comprehensive tests for choose_upload_log_host to prevent regressions (#10679)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-12 08:51:58 +12:00
Jonathan Swoboda 61bac6c6e6 [esp32] Allow esp-idf 5.5.1 (#10680) 2025-09-11 20:13:05 +00:00
J. Nick Koston 5fd64c5c89 [core] Add millisecond precision to logging timestamps (#10677) 2025-09-11 14:25:55 -05:00
rwrozelle 625f108183 Openthread Fix Factory Reset (#9281)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-11 05:23:58 +00:00
J. Nick Koston c45efe8f40 Add additional coverage for yaml_util (#10674) 2025-09-11 17:01:11 +12:00
Jesse Hills fe1371f4dc [adc] Fix FILTER_SOURCE_FILES location (#10673) 2025-09-10 22:32:04 -05:00
J. Nick Koston e3f8a36eaa Add coverage for dashboard ahead of Path conversion (#10669) 2025-09-10 22:16:04 -05:00
dependabot[bot] 41f0d1c622 Bump ruff from 0.12.12 to 0.13.0 (#10670)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-10 21:09:45 +00:00
Jesse Hills 6469bb168d Merge branch 'beta' into dev 2025-09-11 07:25:06 +12:00
Jesse Hills 7a869a33f0 Merge pull request #10665 from esphome/bump-2025.9.0b1
2025.9.0b1
2025-09-11 07:24:33 +12:00
esphomebot af0da3f897 Update webserver local assets to 20250910-110003 (#10668) 2025-09-10 10:41:18 -05:00
Jonathan Swoboda 32e4eb26ad [remote] Remove duplicate implementations of remote code (#10548) 2025-09-10 10:46:30 -04:00
J. Nick Koston 10aae33979 Improve coverage for various core modules (#10663) 2025-09-10 08:17:34 -05:00
Keith Burzinski 56e85b3ef9 [thermostat] Rename timer enums to mitigate naming conflict (#10666) 2025-09-10 22:58:35 +12:00
Keith Burzinski 55dd12c66b [thermostat] Rename timer enums to mitigate naming conflict (#10666) 2025-09-10 22:58:07 +12:00
Jesse Hills 9dd17b464d Bump version to 2025.10.0-dev 2025-09-10 19:48:02 +12:00
Jesse Hills 2401f81be3 Bump version to 2025.9.0b1 2025-09-10 19:48:01 +12:00
Josip Šimun Kuči 52a7e26c6d [inkplate] Rename component and fix grayscale (#10200)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-10 18:46:58 +12:00
Jesse Hills d729dc20a8 Merge branch 'release' into dev 2025-09-10 17:04:21 +12:00
Jesse Hills d3b7a9687b Merge pull request #10664 from esphome/bump-2025.8.4
2025.8.4
2025-09-10 17:03:37 +12:00
Jesse Hills 9d7fc11108 Bump version to 2025.8.4 2025-09-10 13:56:50 +12:00
tomaszduda23 7969627d3e [light] add missing header (#10590) 2025-09-10 13:56:50 +12:00
Clyde Stubbs 82d2e367d4 [kmeteriso] Fix i2c call (#10618) 2025-09-10 13:56:50 +12:00
Keith Burzinski 972aa691e4 [sen5x] Fix initialization (#10603) 2025-09-10 13:56:50 +12:00
Daniel M ac61b8f893 [bl0940] extend configuration options of bl0940 device (#8158)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-10 13:50:49 +12:00
Keith Burzinski d9f625e5c8 [thermostat] General clean-up, optimization, properly support "auto" mode (#10561)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-10 13:24:50 +12:00
Jonathan Swoboda e218f16f0f Allow both files and directories to be passed to update-all (#10575)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-09 18:06:59 -05:00
J. Nick Koston 422d209786 [api] Add timezone support to GetTimeResponse for automatic timezone synchronization (#10661) 2025-09-09 15:54:50 -05:00
dependabot[bot] e972e1f8c2 Bump aioesphomeapi from 40.0.2 to 40.1.0 (#10662)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-09 20:33:36 +00:00
dependabot[bot] cfb90b7b18 Bump pytest-cov from 6.3.0 to 7.0.0 (#10660)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-09 15:15:53 -05:00
mrtoy-me 8976ea2436 [ms5611] remove delay in setup (#10658) 2025-09-10 07:31:06 +12:00
tomaszduda23 01ff09064d [nrf52] add more tests (#10591) 2025-09-10 07:29:49 +12:00
tomaszduda23 39212f0d7f allow to implement show_logs as external component (#10523) 2025-09-09 11:45:42 -05:00
Mischa Siekmann 8993f4e6b4 RingBuffer: Make partial writing optional (#10302) 2025-09-09 08:39:47 -05:00
J. Nick Koston 7adad0ee49 [core] Refactor insertion sort functions to eliminate code duplication (#10653) 2025-09-09 02:03:35 -05:00
J. Nick Koston dd8815ec9d [core] Reduce flash usage by refactoring looping component partitioning (#10652) 2025-09-09 01:17:30 -05:00
Jesse Hills 59e62a1f44 Sort codeowners using case-insensitive (#10651)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-08 21:26:22 -05:00
Edward Firmo f5f84fe825 [nextion] Increase delay before reboot to prevent TFT upload interruption (#10402) 2025-09-09 12:57:24 +12:00
Edward Firmo 90c2fdd565 [adc] Fix autorange negative coefficient bug causing incorrect voltage readings (#10549) 2025-09-09 12:56:18 +12:00
tomaszduda23 f6d69231e8 [light] add missing header (#10590) 2025-09-09 11:10:29 +12:00
J. Nick Koston 5cc0e21bc7 [core] Reduce unnecessary nesting in scheduler loop (#10644) 2025-09-09 09:04:07 +12:00
Thomas Rupprecht 703b592793 Add I2S Audio Port for ESP32-C5/C6/H2 (#10414) 2025-09-08 14:03:41 -04:00
J. Nick Koston 75c9430d91 [core] Fix serial upload regression from DNS resolution PR #10595 (#10648) 2025-09-08 10:41:03 -05:00
J. Nick Koston e5bba00deb [esp32] Reduce GPIO memory usage by 50% through bit-packing (#10556) 2025-09-08 08:46:30 -05:00
J. Nick Koston 8d90f13e97 [core] Store component source strings in flash on ESP8266 (breaking change) (#10621) 2025-09-07 20:10:00 -05:00
J. Nick Koston 666e33e70b [api] Store plaintext error message in PROGMEM on ESP8266 (#10634) 2025-09-07 20:09:47 -05:00
Clyde Stubbs 7eaaa4e426 [mipi_rgb] Unified driver for MIPI RGB displays (#9892)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-08 12:56:34 +12:00
J. Nick Koston 166ad942ef [scheduler] Reduce SchedulerItem memory usage by 7.4% on 32-bit platforms (#10553)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-07 18:51:07 -05:00
J. Nick Koston 0ff08bbc09 [mcp23016] Migrate to CachedGpioExpander to reduce I2C bus usage (#10581)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-07 18:26:49 -05:00
J. Nick Koston 6e2bcabbc9 [sx1509] Migrate to CachedGpioExpander to reduce I2C bus usage (#10588)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-07 18:26:33 -05:00
J. Nick Koston afa191ae41 [pcf8574] Migrate to CachedGpioExpander to reduce I2C bus usage (#10573)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-07 18:26:22 -05:00
J. Nick Koston 93da52c4d2 [pca9554] Migrate to CachedGpioExpander to reduce I2C bus usage (#10571)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-07 18:26:11 -05:00
J. Nick Koston 0cc0979674 [pca6416a] Migrate to CachedGpioExpander to reduce I2C bus usage (#10587) 2025-09-08 10:59:23 +12:00
Jesse Hills 629f1e94f1 [ota] Fix duplicate include and sort (#10643) 2025-09-07 22:58:41 +00:00
J. Nick Koston 8c28f346c7 [gpio_expander] Add intelligent pin type selection to CachedGpioExpander template (#10577) 2025-09-08 10:57:02 +12:00
dependabot[bot] 3cf36e2f94 Bump aioesphomeapi from 40.0.1 to 40.0.2 (#10641)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-07 17:32:21 -05:00
J. Nick Koston 1ac07c96b1 [esphome] Store OTA component log strings in flash on ESP8266 (#10570) 2025-09-08 10:30:39 +12:00
J. Nick Koston 91228c82e6 [esp8266][logger] Store LOG_LEVELS strings in PROGMEM to reduce RAM usage (#10569) 2025-09-08 10:29:45 +12:00
J. Nick Koston 28d16728d3 [core] Add memory pool to scheduler to reduce heap fragmentation (#10536) 2025-09-08 10:27:58 +12:00
dependabot[bot] f24a182ba2 Bump pytest-cov from 6.2.1 to 6.3.0 (#10640)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-07 17:26:31 -05:00
dependabot[bot] 0065fe1516 Bump zeroconf from 0.147.0 to 0.147.2 (#10642)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-07 17:26:06 -05:00
J. Nick Koston 148fa698cc Fix DNS resolution inconsistency between logs and OTA operations (#10595)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-09-08 10:25:22 +12:00
J. Nick Koston b25506b045 [core] Skip redundant process_to_add() call when no scheduler items added (#10630)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-08 09:10:55 +12:00
J. Nick Koston 0c737fc4df [core] Convert LOG_UPDATE_INTERVAL macro to function to reduce flash usage (#10636) 2025-09-08 09:09:15 +12:00
davidmonro a8b8507ffc Atm90e32/26 device class fixes (#10629) 2025-09-08 08:06:10 +12:00
J. Nick Koston c33bb3a8a9 [esp8266] Store component warning strings in flash to reduce RAM usage (#10623) 2025-09-06 23:56:45 -05:00
Clyde Stubbs 4d09932320 [kmeteriso] Fix i2c call (#10618) 2025-09-06 13:51:44 +10:00
Keith Burzinski e018b15641 [sen5x] Various optimizing & tidying up (#10602) 2025-09-05 20:10:48 -05:00
J. Nick Koston 3fd469cfe8 [esp8266][api] Store error strings in PROGMEM to reduce RAM usage (#10568) 2025-09-05 18:16:43 -05:00
J. Nick Koston 1359142106 [api] Store Noise protocol prologue in flash on ESP8266 (#10598) 2025-09-05 18:10:18 -05:00
J. Nick Koston 487ba4dad0 [mdns] Move constant strings to flash on ESP8266 (#10599) 2025-09-05 18:08:25 -05:00
J. Nick Koston 694c590eb6 [captive_portal] ESP8266: Move strings to PROGMEM (saves 192 bytes RAM) (#10600) 2025-09-05 18:02:12 -05:00
J. Nick Koston b74463c3e6 [light] ESP8266: Store log strings in flash memory (#10611) 2025-09-05 17:59:24 -05:00
J. Nick Koston 98e8a0c201 [gpio] ESP8266: Store log strings in flash memory (#10610) 2025-09-05 17:57:24 -05:00
J. Nick Koston 91b2f75d04 [script] ESP8266: Store log format strings in PROGMEM (saves 240 bytes RAM) (#10614) 2025-09-05 17:56:00 -05:00
J. Nick Koston f1806046a9 [web_server] ESP8266: Store OTA response strings in PROGMEM (saves 52 bytes RAM) (#10616) 2025-09-05 17:53:23 -05:00
J. Nick Koston 5b283d6d38 [sensor] ESP8266: Use LogString for state_class_to_string() to save RAM (#10617) 2025-09-05 17:51:35 -05:00
J. Nick Koston 1340665ac7 [logger] Use LogString for UART selection strings (saves 28 bytes RAM on ESP8266) (#10615)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-05 17:47:53 -05:00
J. Nick Koston 1510db277c [esphome] ESP8266: Move OTA error strings to PROGMEM (saves 116 bytes RAM) (#10620) 2025-09-05 17:44:23 -05:00
Keith Burzinski a49669ee58 [sensirion_common] Tidy up, optimize (#10604) 2025-09-05 17:17:20 -05:00
Keith Burzinski 09b40b882e [sgp30] Tidy up, optimize (#10607) 2025-09-05 14:20:11 -05:00
Keith Burzinski 0069163d31 [sps30] Tidy up, optimize (#10606) 2025-09-05 14:11:14 -05:00
Keith Burzinski 86c2af4882 [sen5x] Fix initialization (#10603) 2025-09-05 18:37:57 +12:00
J. Nick Koston b4b795dcaf [i2c] Optimize memory usage with stack allocation for small buffers (#10565)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-09-05 04:26:46 +00:00
dependabot[bot] b8ed7ec145 Bump aioesphomeapi from 40.0.0 to 40.0.1 (#10596)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-05 01:08:15 +00:00
dependabot[bot] 365a427b57 Bump aioesphomeapi from 39.0.1 to 40.0.0 (#10594)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 23:37:03 +00:00
dependabot[bot] e327ae8c95 Bump pytest-mock from 3.14.1 to 3.15.0 (#10593)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 23:36:11 +00:00
dependabot[bot] 4c2f356b35 Bump ruff from 0.12.11 to 0.12.12 (#10578)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-04 19:24:23 +00:00
dependabot[bot] e55bce83e3 Bump actions/stale from 9.1.0 to 10.0.0 (#10582)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 14:20:11 -05:00
dependabot[bot] ba2433197e Bump actions/github-script from 7.0.1 to 8.0.0 (#10583)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 14:16:17 -05:00
dependabot[bot] c471bdb446 Bump actions/setup-python from 5.6.0 to 6.0.0 in /.github/actions/restore-python (#10586)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 14:15:57 -05:00
dependabot[bot] cbac9caa52 Bump actions/setup-python from 5.6.0 to 6.0.0 (#10584)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 14:15:43 -05:00
dependabot[bot] edf7094662 Bump esphome-dashboard from 20250828.0 to 20250904.0 (#10580)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 14:14:50 -05:00
dependabot[bot] 25489b6009 Bump codecov/codecov-action from 5.5.0 to 5.5.1 (#10585)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 14:14:28 -05:00
dependabot[bot] dc45a613f3 Bump pytest from 8.4.1 to 8.4.2 (#10579)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 14:14:18 -05:00
dependabot[bot] e0617e01e0 Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 in /.github/workflows (#10572)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 11:10:53 -05:00
Jesse Hills c7ee727af4 Merge branch 'release' into dev 2025-09-04 22:10:21 +12:00
Jesse Hills c5b2a9e24b Merge pull request #10558 from esphome/bump-2025.8.3
2025.8.3
2025-09-04 22:09:37 +12:00
J. Nick Koston 101d553df9 [esp8266] Reduce preference memory usage by 40% through field optimization (#10557) 2025-09-04 02:46:50 -05:00
J. Nick Koston 8fb6420b1c [esp8266] Store GPIO initialization arrays in PROGMEM to save RAM (#10560) 2025-09-04 02:44:12 -05:00
Maxim Raznatovski c03d978b46 [wizard] extend the wizard dashboard API to allow upload and empty config options (#10203) 2025-09-04 14:02:49 +12:00
Jesse Hills 2d3cdf60ba Bump version to 2025.8.3 2025-09-04 09:06:00 +12:00
J. Nick Koston a29fef166b [api] Fix VERY_VERBOSE logging compilation error with bool arrays (#10539) 2025-09-04 09:06:00 +12:00
Jonathan Swoboda 9fe94f1201 [esp32] Clear IDF environment variables (#10527)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-09-04 09:06:00 +12:00
Anton Viktorov 1b8978a89a [i2c] Fix bug write_register16 (#10547) 2025-09-04 09:06:00 +12:00
Jonathan Swoboda 6f188d1284 [esp32] Rebuild when idf_component.yml changes (#10540) 2025-09-04 09:06:00 +12:00
Clyde Stubbs a1a336783e [mcp4461] Fix read transaction (#10465)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-04 09:06:00 +12:00
Clyde Stubbs c55bc93f70 [mipi_dsi] Fix config for Guition screen (#10464) 2025-09-04 09:06:00 +12:00
J. Nick Koston de998f2f39 Fix incorrect entity count due to undefined execution order with globals (#10497) 2025-09-04 09:06:00 +12:00
Oliver Kleinecke 950299e52b Update mcp4461.cpp (#10479) 2025-09-04 09:06:00 +12:00
J. Nick Koston 23c6650902 [api] Fix VERY_VERBOSE logging compilation error with bool arrays (#10539) 2025-09-04 08:07:13 +12:00
Jonathan Swoboda 5759692627 [esp32] Clear IDF environment variables (#10527)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-09-03 19:59:47 +00:00
Jonathan Swoboda 0ab65c225e [wifi] Check for esp32_hosted on no wifi variants (#10528) 2025-09-04 07:58:42 +12:00
J. Nick Koston 8aeb6d3ba2 [bluetooth_proxy] Change default for active connections to true (#10546) 2025-09-04 07:27:39 +12:00
Anton Viktorov c3359edb33 [i2c] Fix bug write_register16 (#10547) 2025-09-03 17:18:26 +00:00
Jonathan Swoboda 4d681ffe3d [esp32] Rebuild when idf_component.yml changes (#10540) 2025-09-03 11:47:51 -04:00
J. Nick Koston 68628a85b1 [core] Use get_unit_of_measurement_ref() in entity logging to avoid string allocations (#10532) 2025-09-03 06:08:57 +00:00
J. Nick Koston 086f1982fa [core] Use get_device_class_ref() in entity platform logging to avoid string allocations (#10531) 2025-09-03 14:26:53 +12:00
J. Nick Koston 5ba1c32242 [host] Fix memory allocation in preferences load() method (#10506) 2025-09-03 14:26:43 +12:00
J. Nick Koston d2b23ba3a7 [sensor] Change state_class_to_string() to return const char* to avoid allocations (#10533) 2025-09-03 14:24:16 +12:00
J. Nick Koston 83fbd77c4a [core] Use get_icon_ref() in entity platform logging to avoid string allocations (#10530) 2025-09-03 14:23:46 +12:00
J. Nick Koston 1a054299d4 [core] Optimize fnv1_hash to avoid string allocations for static entities (#10529) 2025-09-02 21:17:14 -05:00
Jonathan Swoboda e3fb9c2a78 [esp32] Remove hardcoding of ulp (#10535) 2025-09-02 23:51:17 +00:00
J. Nick Koston d1276dc6df [core] Replace magic coroutine priority numbers with self-documenting CoroPriority enum (#10518) 2025-09-02 21:41:50 +00:00
Eyal f286bc57f3 [core] Fix timezone offset calculation (#10426) 2025-09-02 16:45:25 +12:00
Clyde Stubbs ed48282d09 [mcp4461] Fix read transaction (#10465)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-02 08:53:03 +12:00
Clyde Stubbs 2ddd8c72d6 [mipi_dsi] Fix config for Guition screen (#10464) 2025-09-02 08:51:31 +12:00
Mischa Siekmann d0b4bc48e4 [wifi] Guard wifi error cases introduced in IDF5.2 by a version check (#10466) 2025-09-02 08:51:03 +12:00
tomaszduda23 77dbe77117 [nrf52] fix missing bootloader (#10519) 2025-09-01 12:30:02 -05:00
J. Nick Koston 6daeffcefd [bluetooth_proxy] Expose configured scanning mode in API responses (#10490) 2025-09-01 13:07:29 +12:00
J. Nick Koston 6d834c019d Fix incorrect entity count due to undefined execution order with globals (#10497) 2025-09-01 13:01:15 +12:00
tomaszduda23 905e2906fe [nrf52] add dfu (#9319)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-01 10:54:35 +12:00
Jesse Hills a25b544c3b [display] Allow page actions to have auto generated display id (#10460) 2025-09-01 09:22:11 +12:00
Felix Kaechele da21174c6d [sntp] Use callbacks to trigger on_time_sync for ESP32 and ESP8266 (#10390)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-09-01 09:02:56 +12:00
DT-art1 e29f0ee7f8 Add JPEG encoder support via new camera_encoder component (#9459)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-08-31 09:26:15 -05:00
Jesse Hills 983b3cb879 [mipi] Add type to models for better type hinting downstream (#10475) 2025-08-30 16:43:26 +10:00
dependabot[bot] fd568d9af3 Bump aioesphomeapi from 39.0.0 to 39.0.1 (#10491)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-29 10:14:15 -05:00
Clyde Stubbs ca72286386 [lvgl] Update hello world (#10469) 2025-08-29 15:42:39 +10:00
Ben Curtis dea68bebd8 Adjust sen5x to match VOC/NOX datasheet (#9894)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-29 14:00:54 +12:00
Clyde Stubbs ef98f67b41 [lvgl] Replace spinbox step with selected_digit (#10349)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-29 13:58:58 +12:00
Oliver Kleinecke 6a92b691a0 Update mcp4461.cpp (#10479) 2025-08-29 12:53:54 +12:00
Clyde Stubbs bc960cf6d2 [mapping] Use custom allocator (#9972) 2025-08-29 12:52:37 +12:00
Jesse Hills 461ce69296 Merge branch 'release' into dev 2025-08-29 12:39:26 +12:00
Jesse Hills 6a20e6f9ad Merge pull request #10485 from esphome/bump-2025.8.2
2025.8.2
2025-08-29 12:38:45 +12:00
dependabot[bot] cde00a1f4c Bump esphome-dashboard from 20250814.0 to 20250828.0 (#10484)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-29 11:02:15 +12:00
J. Nick Koston 5dc691874b [bluetooth_proxy] Remove unused ClientState::SEARCHING state (#10318) 2025-08-29 10:30:14 +12:00
dependabot[bot] c526ab9a3f Bump ruff from 0.12.10 to 0.12.11 (#10483)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-08-28 22:20:23 +00:00
Jesse Hills 07875a8b1e Bump version to 2025.8.2 2025-08-29 10:16:19 +12:00
J. Nick Koston ba4789970c [esphome] Fix OTA watchdog resets by validating all magic bytes before blocking (#10401) 2025-08-29 10:16:19 +12:00
Vinicius Fortuna 015977cfdf [rtttl] Fix RTTTL for speakers (#10381) 2025-08-29 10:16:19 +12:00
J. Nick Koston e513c0f004 Fix AttributeError when uploading OTA to offline OpenThread devices (#10459) 2025-08-29 10:16:19 +12:00
Clyde Stubbs a11970aee0 [wifi] Fix retry with hidden networks. (#10445) 2025-08-29 10:16:19 +12:00
Clyde Stubbs 4ab37b069b [i2c] Perform register reads as single transactions (#10389)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-29 10:16:08 +12:00
Clyde Stubbs b6bb6699d1 [mipi_spi] Fix dimensions (#10443) 2025-08-29 10:15:30 +12:00
J. Nick Koston 078eaff9a8 [wifi] Fix reconnection failures after adapter restart by not clearing netif pointers (#10458) 2025-08-29 10:15:30 +12:00
J. Nick Koston a7786b75a0 [esp32_ble_tracker] Remove duplicate client promotion logic (#10321) 2025-08-29 10:14:51 +12:00
J. Nick Koston d4c11dac8c [esphome] Fix OTA watchdog resets by validating all magic bytes before blocking (#10401) 2025-08-29 10:12:38 +12:00
DAVe3283 2f2f2f7d15 [absolute_humidity] Fix typo (#10474) 2025-08-29 10:04:19 +12:00
J. Nick Koston a92a08c2de [api] Fix string lifetime issue in fill_and_encode_entity_info for dynamic object_id (#10482) 2025-08-28 18:40:36 +00:00
Vinicius Fortuna 75595b08be [rtttl] Fix RTTTL for speakers (#10381) 2025-08-28 13:53:57 +12:00
J. Nick Koston 3c7aba0681 Fix AttributeError when uploading OTA to offline OpenThread devices (#10459) 2025-08-28 09:23:43 +12:00
Clyde Stubbs e5d1c30797 [wifi] Fix retry with hidden networks. (#10445) 2025-08-28 09:16:26 +12:00
Clyde Stubbs c171d13c8c [i2c] Perform register reads as single transactions (#10389)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-27 19:30:33 +10:00
Clyde Stubbs 65d63de9b6 [mipi_spi] Fix dimensions (#10443) 2025-08-27 19:30:01 +10:00
J. Nick Koston 9e712e4127 [wifi] Fix reconnection failures after adapter restart by not clearing netif pointers (#10458) 2025-08-26 23:49:47 -05:00
Clyde Stubbs 9007621fd7 Revert "[core] Dont copy platform source files if there are no entities of that type" (#10441) 2025-08-26 09:15:44 +10:00
Thomas Rupprecht c01a26607e improve const imports of esphome.const (#10438) 2025-08-26 09:45:03 +12:00
Jesse Hills f6ca70970f Merge branch 'release' into dev 2025-08-26 08:48:51 +12:00
Jesse Hills 4dc11f05a7 Merge pull request #10427 from esphome/bump-2025.8.1
2025.8.1
2025-08-26 08:48:10 +12:00
Jesse Hills 5e508f7461 [core] Dont copy platform source files if there are no entities of that type (#10436) 2025-08-25 14:46:54 -05:00
Jonathan Rascher 2aceb56606 Merge commit from fork
Ensures auth check doesn't pass erroneously when the client-supplied
digest is shorter than the correct digest, but happens to match a
prefix of the correct value (e.g., same username + certain substrings of
the password).
2025-08-25 16:00:04 +12:00
Jesse Hills d071a074ef Bump version to 2025.8.1 2025-08-25 15:59:35 +12:00
Clyde Stubbs 7a459c8c20 [web_server] Use oi.esphome.io for css and js assets (#10296) 2025-08-25 15:59:35 +12:00
J. Nick Koston aebd21958a [test] Add integration test for light effect memory corruption fix (#10417) 2025-08-25 15:59:35 +12:00
J. Nick Koston c542db8bfe [esp32_ble_tracker] Fix on_scan_end trigger compilation without USE_ESP32_BLE_DEVICE (#10399) 2025-08-25 15:59:35 +12:00
Clyde Stubbs d9dcfe66ec [lvgl] Fix meter rotation (#10342) 2025-08-25 15:59:35 +12:00
J. Nick Koston 8517c2e903 [esp32_ble_client] Reduce log level for harmless BLE timeout race conditions (#10339)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-25 15:59:34 +12:00
J. Nick Koston 684384892a [deep_sleep] Fix ESP32-C6 compilation error with gpio_deep_sleep_hold_en() (#10345) 2025-08-25 15:59:34 +12:00
J. Nick Koston d560831d79 [script] Fix parallel mode scripts with delays cancelling each other (#10324) 2025-08-25 15:59:34 +12:00
J. Nick Koston fcc3c8e1b6 [esp32_ble] Increase GATT connection retry count to use full timeout window (#10376) 2025-08-25 15:59:34 +12:00
J. Nick Koston 959ffde60e [esp32_ble_client] Optimize BLE connection parameters for different connection types (#10356) 2025-08-25 15:59:34 +12:00
J. Nick Koston 07715dd50f [pvvx_mithermometer] Fix race condition with BLE authentication (#10327) 2025-08-25 15:59:34 +12:00
J. Nick Koston 03836ee2d2 [core] Improve error reporting for entity name conflicts with non-ASCII characters (#10329) 2025-08-25 15:59:34 +12:00
Clyde Stubbs 50408d9abb [http_request] Fix for host after ArduinoJson library bump (#10348) 2025-08-25 15:59:34 +12:00
Jesse Hills 0de7259428 [api] Add `USE_API_HOMEASSISTANT_SERVICES if using tag_scanned` action (#10316) 2025-08-25 15:59:34 +12:00
J. Nick Koston d054709c2d [esp32_ble_client] Add log helper functions to reduce flash usage by 120 bytes (#10243) 2025-08-25 15:59:34 +12:00
J. Nick Koston da16887915 [api] Add zero-copy StringRef methods for compilation_time and effect_name (#10257) 2025-08-25 15:59:34 +12:00
Jonathan Rascher 6da8ec8d55 Merge commit from fork
Ensures auth check doesn't pass erroneously when the client-supplied
digest is shorter than the correct digest, but happens to match a
prefix of the correct value (e.g., same username + certain substrings of
the password).
2025-08-25 15:40:19 +12:00
J. Nick Koston d2752b38c9 [core] Fix preference storage to account for device_id (#10333)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-25 12:22:16 +12:00
J. Nick Koston 6004367ee2 [esp32_ble_client] Add missing ESP_GATTC_UNREG_FOR_NOTIFY_EVT logging (#10347) 2025-08-25 12:07:04 +12:00
Thomas Rupprecht ecfeb8e4d3 improve AI instructions (#10416) 2025-08-25 11:51:28 +12:00
Clyde Stubbs 456c31262d [web_server] Use oi.esphome.io for css and js assets (#10296) 2025-08-25 09:04:32 +12:00
J. Nick Koston 9f02575287 [test] Add integration test for light effect memory corruption fix (#10417) 2025-08-25 08:58:46 +12:00
J. Nick Koston 07bca6103f [esp32_ble_tracker] Fix on_scan_end trigger compilation without USE_ESP32_BLE_DEVICE (#10399) 2025-08-25 08:57:09 +12:00
Clyde Stubbs a58c3950bc [lvgl] Fix meter rotation (#10342) 2025-08-25 06:52:37 +10:00
J. Nick Koston 8fe582309e [esp32_ble_client] Reduce log level for harmless BLE timeout race conditions (#10339)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-25 08:51:54 +12:00
J. Nick Koston b41a61c76e [deep_sleep] Fix ESP32-C6 compilation error with gpio_deep_sleep_hold_en() (#10345) 2025-08-25 08:51:23 +12:00
J. Nick Koston 61a5023888 [script] Fix parallel mode scripts with delays cancelling each other (#10324) 2025-08-25 08:49:52 +12:00
J. Nick Koston 4396bc0d1a [esp32_ble] Increase GATT connection retry count to use full timeout window (#10376) 2025-08-25 08:49:37 +12:00
J. Nick Koston acfce581fa [esp32_ble_client] Optimize BLE connection parameters for different connection types (#10356) 2025-08-25 08:17:26 +12:00
J. Nick Koston 88303f39fa [pvvx_mithermometer] Fix race condition with BLE authentication (#10327) 2025-08-25 08:16:12 +12:00
J. Nick Koston ca19959d7c [core] Improve error reporting for entity name conflicts with non-ASCII characters (#10329) 2025-08-25 08:11:54 +12:00
Clyde Stubbs 9737b35579 [http_request] Fix for host after ArduinoJson library bump (#10348) 2025-08-25 07:55:44 +12:00
Clyde Stubbs be9c20c357 [mipi_spi] Add model (#10392) 2025-08-25 07:52:52 +12:00
Thomas Rupprecht 12ba4b142e Update Python to 3.11 in AI instructions (#10407) 2025-08-24 21:03:14 +12:00
Thomas Rupprecht c096c6934d fix temperature config validation regex (#9575)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-24 08:56:06 +00:00
tomaszduda23 17f787fc36 [nrf52] fix build in dashboard (#10323) 2025-08-23 12:17:42 +00:00
tomaszduda23 5cd9a86dcb [nrf52] update toolchain to v0.17.4, support mac (#10391) 2025-08-23 16:20:16 +10:00
dependabot[bot] 83fe4b4ff3 Bump ruff from 0.12.9 to 0.12.10 (#10362)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-08-21 15:36:06 -05:00
Jesse Hills 94accd5abe [ld2420] Rename c++ files for predictable doxygen generation (#10315) 2025-08-21 18:49:26 +12:00
Jesse Hills 3ca0015284 [opentherm] Rename c++ files for predictable doxygen generation (#10314) 2025-08-21 18:48:48 +12:00
dependabot[bot] 33eddb6035 Bump codecov/codecov-action from 5.4.3 to 5.5.0 (#10336)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 16:46:04 -05:00
Jesse Hills 72c58ae36d [core] Add idf-tidy env for esp32-c6 (#10270) 2025-08-20 10:13:50 -04:00
J. Nick Koston 35411d199f [homeassistant] Add compilation test for homeassistant.tag_scanned action (#10319) 2025-08-20 10:10:20 -04:00
Jesse Hills d45944a9e2 [api] Add `USE_API_HOMEASSISTANT_SERVICES if using tag_scanned` action (#10316) 2025-08-20 06:47:20 -05:00
Jesse Hills 86f306ba9e [CI] Also require tests for `new-features` (#10311) 2025-08-20 22:02:14 +12:00
Jesse Hills 1b3b2f6e6f Merge branch 'release' into dev 2025-08-20 19:58:48 +12:00
Jesse Hills 2adb993242 Merge pull request #10309 from esphome/bump-2025.8.0
2025.8.0
2025-08-20 19:58:01 +12:00
J. Nick Koston 3ff5b4773b [bluetooth_proxy] Mark BluetoothConnection and BluetoothProxy as final for compiler optimizations (#10280) 2025-08-20 14:48:40 +12:00
J. Nick Koston 2cbf4f30f9 [libretiny] Optimize preferences is_changed() by replacing temporary vector with unique_ptr (#10272) 2025-08-20 14:48:04 +12:00
J. Nick Koston 56b6dd31f1 [core] Eliminate heap allocation in teardown_components by using StaticVector (#10256)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-20 14:45:13 +12:00
dependabot[bot] fc1b49e87d Bump ruamel-yaml from 0.18.14 to 0.18.15 (#10310)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 14:42:33 +12:00
J. Nick Koston 0089619518 [web_server] Reduce flash usage by consolidating defer calls in switch and lock handlers (#10297) 2025-08-19 21:41:34 -05:00
Jesse Hills 5a6db28f1d [CI] Base `too-big` label on new additions only (#10307) 2025-08-20 14:39:29 +12:00
J. Nick Koston 6819bbd8f8 [esp32_ble_client] Add log helper functions to reduce flash usage by 120 bytes (#10243) 2025-08-20 14:38:32 +12:00
Edward Firmo 634f687c3e [light] Add support for querying effects by index (#10195)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-08-20 14:38:13 +12:00
J. Nick Koston e2a9b85924 [number] Convert LOG_NUMBER macro to function to reduce flash usage (#10293) 2025-08-20 14:36:05 +12:00
J. Nick Koston 4ccc6aee09 [button] Convert LOG_BUTTON macro to function to reduce flash usage (#10295)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-20 14:35:53 +12:00
J. Nick Koston 0eab908b0e [sensor] Convert LOG_SENSOR macro to function to reduce flash usage (#10290) 2025-08-20 14:35:45 +12:00
J. Nick Koston 3964f9794b [binary_sensor] Convert LOG_BINARY_SENSOR macro to function to reduce flash usage (#10294) 2025-08-20 14:35:09 +12:00
Jesse Hills a45137434b [quality] Convert remaining `to_code to async` (#10271) 2025-08-20 14:34:45 +12:00
J. Nick Koston 9b1ebdb6da [mdns] Reduce flash usage and prevent RAM over-allocation in service compilation (#10287) 2025-08-20 14:34:34 +12:00
J. Nick Koston 5a1533bea9 [api] Avoid object_id string allocations for all entity info messages (#10260) 2025-08-20 14:28:13 +12:00
Jesse Hills 0b50ef227b [helper] Make crc8 function more flexible to avoid reimplementation in individual components (#10201) 2025-08-20 14:27:08 +12:00
J. Nick Koston 0e31bc1a67 [api] Add zero-copy StringRef methods for compilation_time and effect_name (#10257) 2025-08-20 14:26:53 +12:00
Jesse Hills 8e67df8059 Bump version to 2025.8.0 2025-08-20 10:45:57 +12:00
Jesse Hills e1a0949ddb Merge branch 'beta' into dev 2025-08-20 10:31:10 +12:00
Jesse Hills c5b2c8d971 Merge pull request #10308 from esphome/bump-2025.8.0b4
2025.8.0b4
2025-08-20 10:30:37 +12:00
J. Nick Koston a8775ba60b [safe_mode] Reduce flash usage by 184 bytes through code optimization (#10284) 2025-08-19 16:57:24 -05:00
Jesse Hills 104906ca11 Bump version to 2025.8.0b4 2025-08-20 09:40:19 +12:00
J. Nick Koston ad5f6f0cfe [bluetooth_proxy] Fix connection slot race by deferring slot release until GATT close (#10303) 2025-08-20 09:40:19 +12:00
Patrick 8356f7fcd3 [pipsolar] fix faults_present, fix update interval (#10289) 2025-08-20 09:40:19 +12:00
Ben Winslow 225de226b0 [atm90e32] Only read 1 register per SPI transaction per datasheet. (#10258) 2025-08-20 09:40:19 +12:00
J. Nick Koston 2aaf951357 [bluetooth_proxy] Fix connection slot race by deferring slot release until GATT close (#10303) 2025-08-20 07:27:22 +12:00
Jesse Hills 82718e62e7 Merge branch 'beta' into dev 2025-08-19 20:40:45 +12:00
Jesse Hills fd07e1d979 Merge pull request #10298 from esphome/bump-2025.8.0b3
2025.8.0b3
2025-08-19 20:40:12 +12:00
Patrick 4dab9c4400 [pipsolar] fix faults_present, fix update interval (#10289) 2025-08-19 15:52:01 +12:00
Ben Winslow 7e23d865e6 [atm90e32] Only read 1 register per SPI transaction per datasheet. (#10258) 2025-08-19 15:45:30 +12:00
Jesse Hills 8f118232e4 [CI] Rename and expand needs-docs workflow (#10299) 2025-08-19 15:35:48 +12:00
Jesse Hills 23554cda06 Bump version to 2025.8.0b3 2025-08-19 13:09:22 +12:00
Ben Winslow 064385eac6 [nextion] Don't include terminating NUL in nextion text_sensor states (#10273) 2025-08-19 13:09:22 +12:00
Jesse Hills 6502ed70de [esp32] Write variant to sdkconfig file (#10267) 2025-08-19 13:09:22 +12:00
J. Nick Koston bb894c3e32 [core] Fix scheduler race condition where cancelled items still execute (#10268) 2025-08-19 13:09:22 +12:00
Ben Winslow c5858b7032 [core] Fix post-OTA logs display when using esphome run and MQTT (#10274) 2025-08-19 13:09:22 +12:00
Ben Winslow 99f57ecb73 [senseair] Discard 0 ppm readings with "Out Of Range" bit set. (#10275) 2025-08-19 13:09:22 +12:00
J. Nick Koston cc6c892678 [esp32_ble] Store GATTC/GATTS param and small data inline to nearly eliminate heap allocations (#10249)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-19 13:09:22 +12:00
RFDarter 07a98d2525 [web_server] fix cover_all_json_generator wrong detail (#10252) 2025-08-19 13:09:22 +12:00
J. Nick Koston e80f616366 [esp32_ble] Optimize BLE event memory usage by eliminating std::vector overhead (#10247)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-19 13:09:22 +12:00
J. Nick Koston 46be877594 [bluetooth_proxy] Remove redundant connection type check after V1 removal (#10208) 2025-08-19 13:09:21 +12:00
J. Nick Koston ac8b48a53c [core] Trigger clean build when components are removed from configuration (#10235)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-19 13:09:21 +12:00
J. Nick Koston 7fdbd8528a [wifi] Automatically disable Enterprise WiFi support when EAP is not configured (#10242) 2025-08-19 13:09:21 +12:00
Katherine Whitlock 80970f972b Improve error reporting for add_library (#10226)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-19 13:09:21 +12:00
Jesse Hills 3c7865cd6f [esp32_ble] Add `USE_ESP32_BLE_UUID` when advertising is desired (#10230) 2025-08-19 13:09:21 +12:00
Ben Winslow 3a6a66537c [nextion] Don't include terminating NUL in nextion text_sensor states (#10273) 2025-08-18 19:20:13 -05:00
Jesse Hills 7118bea031 [esp32] Write variant to sdkconfig file (#10267) 2025-08-19 12:17:34 +12:00
J. Nick Koston 44bd8e5b54 [api] Optimize protobuf decode loop for better performance and maintainability (#10277) 2025-08-18 16:14:20 -05:00
J. Nick Koston efaeb91803 [api] Mark APIConnection as final for compiler optimizations (#10279) 2025-08-18 16:01:45 -05:00
J. Nick Koston 761c6c6685 [api] Mark protobuf message classes as final to enable compiler optimizations (#10276) 2025-08-18 15:55:30 -05:00
J. Nick Koston 1f55486896 [api] Optimize APIFrameHelper virtual methods and mark implementations as final (#10278) 2025-08-18 15:55:11 -05:00
J. Nick Koston 6818439109 [core] Fix scheduler race condition where cancelled items still execute (#10268) 2025-08-18 11:14:41 -04:00
J. Nick Koston 0a77423073 [esp8266] Replace std::vector with std::unique_ptr in preferences to save flash (#10245) 2025-08-18 09:01:39 -04:00
Ben Winslow c29f8d0187 [core] Fix post-OTA logs display when using esphome run and MQTT (#10274) 2025-08-17 21:36:35 -05:00
Ben Winslow 2a3f80a82c [senseair] Discard 0 ppm readings with "Out Of Range" bit set. (#10275) 2025-08-18 14:09:42 +12:00
J. Nick Koston 75f3adcd95 [esp32_ble] Store GATTC/GATTS param and small data inline to nearly eliminate heap allocations (#10249)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-18 07:49:50 +12:00
J. Nick Koston daf8ec36ab [core] Remove unnecessary FD_SETSIZE check on ESP32 and improve logging (#10255) 2025-08-15 21:26:48 -05:00
J. Nick Koston 6c5632a0b3 [esp32] Optimize preferences is_changed() by replacing temporary vector with unique_ptr (#10246)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-15 10:11:49 -05:00
RFDarter abecc0e8d8 [web_server] fix cover_all_json_generator wrong detail (#10252) 2025-08-15 09:44:24 -05:00
J. Nick Koston af9ecf3429 [esp32_ble] Optimize BLE event memory usage by eliminating std::vector overhead (#10247)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-15 07:38:27 +00:00
J. Nick Koston 5fa84439c2 [api] Optimize message buffer allocation and eliminate redundant methods (#10231) 2025-08-14 20:26:09 -05:00
dependabot[bot] 5d18afcd99 Bump ruff from 0.12.8 to 0.12.9 (#10239)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-08-14 22:54:35 +00:00
J. Nick Koston 117cffd2b0 [bluetooth_proxy] Remove redundant connection type check after V1 removal (#10208) 2025-08-15 10:51:15 +12:00
J. Nick Koston 8ea1a3ed64 [core] Trigger clean build when components are removed from configuration (#10235)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-15 10:50:03 +12:00
J. Nick Koston 4f29b3c7aa [wifi] Automatically disable Enterprise WiFi support when EAP is not configured (#10242) 2025-08-15 10:43:45 +12:00
Jesse Hills 3325592d67 Merge branch 'beta' into dev 2025-08-15 08:46:48 +12:00
Jesse Hills 0a3ee7d84e Merge pull request #10228 from esphome/bump-2025.8.0b2
2025.8.0b2
2025-08-15 08:46:15 +12:00
Katherine Whitlock 882237120e Improve error reporting for add_library (#10226)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-15 08:14:53 +12:00
Jesse Hills 71efaf097b [esp32_ble] Add `USE_ESP32_BLE_UUID` when advertising is desired (#10230) 2025-08-14 08:49:14 -05:00
Jesse Hills bd60dbb746 [quality] Remove period from audio related Invalid raises (#10229) 2025-08-14 08:48:25 -05:00
Jesse Hills 6b5e43ca72 [qm6988] Clean up code (#10216) 2025-08-13 21:19:03 -05:00
Jesse Hills 8d61b1e8df Bump version to 2025.8.0b2 2025-08-14 14:00:27 +12:00
dependabot[bot] 9c897993bb Bump esphome-dashboard from 20250514.0 to 20250814.0 (#10227)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-14 14:00:26 +12:00
dependabot[bot] 93f9475105 Bump aioesphomeapi from 38.2.1 to 39.0.0 (#10222)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-14 14:00:26 +12:00
Samuel Sieb 95cd224e3e [psram] allow disabling (#10224)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-08-14 14:00:26 +12:00
Jesse Hills b7afeafda9 [espnow] Set state to enabled before adding initial peers (#10225) 2025-08-14 14:00:26 +12:00
Jesse Hills 7922462bcf [entity] Allow `device_id` to be blank on entities (#10217) 2025-08-14 14:00:26 +12:00
dependabot[bot] 46d433775b Bump esphome-dashboard from 20250514.0 to 20250814.0 (#10227)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-14 12:40:20 +12:00
dependabot[bot] 7c4a54de90 Bump aioesphomeapi from 38.2.1 to 39.0.0 (#10222)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-13 17:42:54 -05:00
Samuel Sieb c3f1596498 [psram] allow disabling (#10224)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-08-14 10:40:12 +12:00
Jesse Hills 0d1949a61b [espnow] Set state to enabled before adding initial peers (#10225) 2025-08-14 10:30:28 +12:00
Jesse Hills 6a8722f33e [entity] Allow `device_id` to be blank on entities (#10217) 2025-08-14 09:42:11 +12:00
Jesse Hills fff66072d4 Merge branch 'beta' into dev 2025-08-14 00:02:17 +12:00
Jesse Hills 1c2e1ab3e5 Merge pull request #10214 from esphome/bump-2025.8.0b1
2025.8.0b1
2025-08-13 23:56:34 +12:00
J. Nick Koston 68ddd98f5f [CI] Fix CI job failures for PRs with >300 changed files (#10215) 2025-08-13 15:49:38 +12:00
J. Nick Koston 0dda3faed5 [CI] Fix CI job failures for PRs with >300 changed files (#10215) 2025-08-13 15:46:56 +12:00
Jesse Hills 40c0c36179 Bump version to 2025.9.0-dev 2025-08-13 14:46:51 +12:00
Jesse Hills 6b7ced1970 Bump version to 2025.8.0b1 2025-08-13 14:46:50 +12:00
J. Nick Koston ed2b76050b [bluetooth_proxy] Remove ESPBTUUID dependency to save 296 bytes of flash (#10213) 2025-08-13 14:18:53 +12:00
Samuel Sieb 113813617d [bme280_base, bmp280_base] add reasons to the fails, clean up logging (#10209)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-08-13 02:05:22 +00:00
Keith Burzinski c3a209d3f4 [ld2450] Replace `throttle` with native filters (#10196)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-12 19:35:19 -05:00
John 7ffdaa1f06 [atm90e32] energy meter calibration log output enhancements & software SPI fix (#10143)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-12 20:26:53 +12:00
dependabot[bot] 3a857950bf Bump actions/checkout from 4 to 5 (#10198)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-12 20:23:41 +12:00
Rihan9 0256e0005e [ld2412] New component (#9075)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-08-12 00:34:37 -05:00
Jesse Hills c65af68e63 [core] Reset pin registry after target platform validations (#10199) 2025-08-12 16:33:07 +12:00
dependabot[bot] ef2121a215 Bump aioesphomeapi from 38.1.0 to 38.2.1 (#10197)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 20:47:53 -05:00
Joshua Sing bb40b7702d [const] Add CONF_POWER_MODE (#10173) 2025-08-12 11:13:24 +12:00
Kevin Ahrendt 6c48f3d719 [wifi] Remove restriction from using NONE power saving mode with BLE (#10181) 2025-08-12 11:09:58 +12:00
J. Nick Koston ff52869b4c [api] Add constexpr optimizations to protobuf encoding (#10192) 2025-08-12 10:10:38 +12:00
J. Nick Koston 82b7c1224c [core] Improve entity duplicate validation error messages (#10184) 2025-08-12 09:58:51 +12:00
Jesse Hills c14c4fb658 [substitutions] Add some safe built-in functions to jinja parsing (#10178)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-11 16:12:54 -05:00
J. Nick Koston 42aee53dde [bluetooth_proxy] Replace dynamic vector with fixed array for BLE advertisements (#10174) 2025-08-11 15:47:46 -05:00
J. Nick Koston 9aa21956c8 [api] Optimize single vector writes to use write() instead of writev() (#10193) 2025-08-11 15:41:08 -05:00
J. Nick Koston 4c2874a32b [esphome] Fix OTA watchdog resets during port scanning and network delays (#10152) 2025-08-11 15:37:01 -05:00
Keith Burzinski 45b88f2da9 [sensor] Extend timeout filter with option to return last value received (#10115) 2025-08-11 10:36:44 -05:00
dependabot[bot] 8f53961496 Bump pylint from 3.3.7 to 3.3.8 (#10177)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 01:05:14 -05:00
dependabot[bot] 5cf0e4d9dd Bump aioesphomeapi from 38.0.0 to 38.1.0 (#10176)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-11 05:11:22 +00:00
Chad Matsalla b70983ed09 [display] Disallow `show_test_card: true and update_interval: never` (#9927)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-11 11:41:37 +12:00
tomaszduda23 ffa89eb2d3 [nrf52, zephyr_debug] add zephyr debug component (#8319) 2025-08-11 11:20:45 +12:00
Clyde Stubbs 8b67d6dfec [lvgl] fix allocation of reduced size buffer with rotation (#10147) 2025-08-11 10:32:01 +12:00
Clyde Stubbs 581b4ef5a1 [lvgl] Various validation fixes (#10141) 2025-08-11 10:27:54 +12:00
Jonathan Swoboda da02f970d4 [neopixelbus] Fix neopixelbus on esp32 (#10123) 2025-08-11 10:24:12 +12:00
Jesse Hills 2fc0a11596 [CI] Print more info for when consts are duplicated (#10166) 2025-08-11 09:53:40 +12:00
J. Nick Koston 5a8f722316 Optimize subprocess performance with close_fds=False (#10145) 2025-08-11 09:14:13 +12:00
J. Nick Koston 279f56141e [ade7880] Fix duplicate sensor name validation error (#10155) 2025-08-11 09:12:36 +12:00
J. Nick Koston 6bfe281d18 [web_server] Reduce flash usage by consolidating parameter parsing (#10154) 2025-08-11 09:09:31 +12:00
J. Nick Koston a1371aea37 [dashboard] Fix port fallback regression when device is offline (#10135) 2025-08-11 09:04:40 +12:00
Jonathan Swoboda d5c9c10b3b [esp32] Add IDF log_level option (#10134) 2025-08-10 17:27:08 +00:00
J. Nick Koston cef39e7c59 [esp32_ble_tracker] Fix false reboots when event loop is blocked (#10144) 2025-08-10 04:44:23 -05:00
Edward Firmo 2b9e1ce315 [switch] Add trigger `on_state` (#10108) 2025-08-09 21:09:40 +10:00
dependabot[bot] ff9ddb9d68 Bump tornado from 6.5.1 to 6.5.2 (#10142)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-08 16:03:13 -05:00
Edward Firmo 676c51ffa0 [switch] Add control() method to API (#10118) 2025-08-08 05:51:19 +00:00
J. Nick Koston 7e4d09dbd8 [bluetooth_proxy] Optimize connection loop to reduce CPU usage (#10133) 2025-08-07 16:24:26 -10:00
J. Nick Koston 58504662d8 [cover] Reduce flash usage by optimizing validation messages (#10130) 2025-08-08 10:44:47 +10:00
J. Nick Koston 83b69519dd [wifi] Reduce flash usage by optimizing logging (#10127) 2025-08-08 10:43:13 +10:00
J. Nick Koston d4d1a96f9b [esp32_ble_client] Reduce flash usage by optimizing logging strings (#10119) 2025-08-08 10:42:03 +10:00
J. Nick Koston 76fd104fb6 [mdns] Conditionally compile extra services to reduce flash usage (#10129) 2025-08-08 10:32:35 +10:00
Edward Firmo c4d1b1317a [switch] Add switch.control automation action (#10105)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-08-08 08:55:54 +10:00
dependabot[bot] 14bc83342f Bump ruff from 0.12.7 to 0.12.8 (#10126)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-08-07 20:15:14 +00:00
dependabot[bot] a1461c5293 Bump actions/cache from 4.2.3 to 4.2.4 (#10128)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-07 10:09:53 -10:00
dependabot[bot] 73b2db8af5 Bump actions/cache from 4.2.3 to 4.2.4 in /.github/actions/restore-python (#10125)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-07 09:16:58 -10:00
J. Nick Koston a7a119f576 [bluetooth_proxy] Remove V1 connection support (#10107) 2025-08-07 03:52:46 -05:00
J. Nick Koston 1ba76f5f2e [esp32_ble_client] Conditionally compile BLE service classes to reduce flash usage (#10114) 2025-08-07 03:46:34 -05:00
J. Nick Koston 37a9ad6a0d [esp32_ble_tracker] Optimize member variable ordering to reduce memory padding (#10113) 2025-08-07 03:34:46 -05:00
J. Nick Koston c0a62c0be1 [esp32_ble_client] Avoid iterating empty services vector for bluetooth_proxy connections (#10110) 2025-08-07 03:40:12 +00:00
J. Nick Koston bfb14e1cf9 [esp32_touch] Restore get_value() for ESP32-S2/S3 variants (#10112) 2025-08-06 21:21:32 -05:00
mbo18 1415e02e40 Add device class absolute_humidity to the absolute humidity component (#10100)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-08-07 13:48:26 +12:00
dependabot[bot] 81f907e994 Bump actions/download-artifact from 4.3.0 to 5.0.0 (#10106)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-07 13:47:03 +12:00
J. Nick Koston 61008bc8a9 [bluetooth_proxy] Remove unnecessary heap allocation for response object (#10104) 2025-08-07 13:42:04 +12:00
J. Nick Koston 6d66ddd68d [bluetooth_proxy][esp32_ble_tracker][esp32_ble_client] Consolidate duplicate logging code to reduce flash usage (#10097) 2025-08-07 13:41:03 +12:00
J. Nick Koston fc180251be [bluetooth_proxy] Consolidate dump_config() log calls (#10103) 2025-08-07 12:43:59 +12:00
J. Nick Koston ee1d4f27ef [esp32_ble] Conditionally compile BLE advertising to reduce flash usage (#10099) 2025-08-07 12:29:24 +12:00
J. Nick Koston 325ec0a0ae [esp32_ble_client] Convert to C++17 nested namespace syntax (#10111) 2025-08-07 12:18:03 +12:00
Keith Burzinski 6071f4b02c [ld2410] Replace `throttle` with native filters (#10019) 2025-08-07 10:26:11 +12:00
dependabot[bot] 083ac8ce8e Bump aioesphomeapi from 37.2.5 to 38.0.0 (#10109)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-06 10:21:29 -10:00
J. Nick Koston 4ceda31f32 [bluetooth_proxy] Replace std::find with simple loop for small fixed array (#10102) 2025-08-07 07:53:42 +12:00
J. Nick Koston 5021cc6d5f [esp32_ble] Make BLE notification limit configurable to fix ESP_GATT_NO_RESOURCES errors (#10098) 2025-08-06 17:24:02 +00:00
Craig Andrews 2b3e546203 [deep_sleep] enable sleep pull up/down for wakeup pin (#9395) 2025-08-05 23:47:45 -07:00
J. Nick Koston 1642d34d29 [esp32_ble_tracker] Simplify state machine guards with helper functions (#10092) 2025-08-06 01:03:19 -05:00
J. Nick Koston 8ceb1b9d60 [bluetooth_proxy] Reduce flash usage by consolidating duplicate logging (#10094) 2025-08-06 00:49:20 -05:00
Jesse Hills d872c8a999 [light] Allow light effect schema to be a schema object already (#10091) 2025-08-06 00:05:48 -05:00
Pawelo 99125c045f [bme680] Eliminate warnings due to unused functions (#9735)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-08-06 00:02:54 -05:00
Jonathan Swoboda 860a5ef5c0 [esp32_rmt_led_strip] Work around IDFGH-16195 (#10093) 2025-08-05 23:28:09 -05:00
J. Nick Koston b01f03cc24 [esp32_ble_tracker] Refactor loop() method for improved readability and performance (#10074) 2025-08-06 14:26:11 +12:00
J. Nick Koston cfb22e33c9 [esp32_ble_tracker] Add missing USE_ESP32_BLE_DEVICE guard for already_discovered_ member (#10085) 2025-08-06 14:22:32 +12:00
@RubenKelevra 96bbb58f34 update espressif's esp32-camera library to 2.1.1 (#10090) 2025-08-05 14:33:15 -10:00
Jesse Hills 3edd746c6c [mcp23xxx] Use CachedGpioExpander (#10078) 2025-08-06 11:01:57 +12:00
Copilot c308e03e92 [select] Fix new_select() not forwarding constructor args while preserving keyword-only options parameter (#10036)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
Co-authored-by: jesserockz <3060199+jesserockz@users.noreply.github.com>
2025-08-06 08:09:36 +12:00
NP v/d Spek bd2b3b9da5 [espnow] Small changes and fixes (#10014)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-06 07:46:40 +12:00
Kevin Ahrendt d443a97dd8 [speaker] Media player fixes for IDF5.4 (#10088) 2025-08-05 14:55:40 -04:00
J. Nick Koston 58a088e06b Add myself to multiple bluetooth codeowners (#10083) 2025-08-05 09:00:04 +00:00
Jesse Hills 49a46883ed [core] Update core component codeowners to `@esphome/core` (#10082) 2025-08-05 06:24:24 +00:00
J. Nick Koston bc03538e25 Support multiple --device arguments for address fallback (#10003)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-08-05 16:40:46 +12:00
dependabot[bot] 969034b61a Bump docker/login-action from 3.4.0 to 3.5.0 in the docker-actions group (#10081)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-05 16:18:42 +12:00
Jonathan Swoboda 06eb1b6014 [remote_transmitter] Add digital_write automation (#10069)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-05 16:09:37 +12:00
Jesse Hills 589d00f17f Merge branch 'release' into dev 2025-08-05 15:38:25 +12:00
Jesse Hills 68c0aa4d6d Merge pull request #10079 from esphome/bump-2025.7.5
2025.7.5
2025-08-05 15:37:42 +12:00
dependabot[bot] 2fddb061e1 Bump aioesphomeapi from 37.2.4 to 37.2.5 (#10080)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 16:51:42 -10:00
Jesse Hills c85eb448e4 [gpio_expander] Fix bank caching (#10077)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-08-05 13:45:52 +12:00
Jesse Hills 396c02c6de [core] Allow extra args on cli and just ignore them (#9814)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-05 13:33:12 +12:00
Jesse Hills 52c4509208 [esp32_dac] Always use esp-idf APIs (#9833) 2025-08-05 13:31:56 +12:00
Jesse Hills d29cae9c3b Bump version to 2025.7.5 2025-08-05 13:21:00 +12:00
Chris Beswick 532e3e370f [i2s_audio] Use high-pass filter for dc offset correction (#10005) 2025-08-05 13:21:00 +12:00
Clyde Stubbs da573a217d [font] Catch file load exception (#10058)
Co-authored-by: clydeps <U5yx99dok9>
2025-08-05 13:21:00 +12:00
J. Nick Koston a9b27d1966 [api] Fix OTA progress updates not being sent when main loop is blocked (#10049) 2025-08-05 13:21:00 +12:00
Clyde Stubbs 0aa3c9685e [lvgl] Bugfix for tileview (#9938) 2025-08-05 13:21:00 +12:00
J. Nick Koston 93b28447ee [bluetooth_proxy] Optimize memory usage with fixed-size array and const string references (#10015) 2025-08-05 13:13:55 +12:00
J. Nick Koston 52634dac2a [tests] Add datetime entities to host_mode_many_entities integration test (#10032) 2025-08-05 13:12:05 +12:00
J. Nick Koston 64c94c1440 [esp32_ble_client] Fix connection parameter timing by setting preferences before connection (#10059) 2025-08-05 13:11:32 +12:00
J. Nick Koston f7bf1ef52c [esp32_ble_tracker] Eliminate redundant ring buffer for lower latency (#10057)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-05 13:10:32 +12:00
J. Nick Koston fa8c5e880c [esp32_ble_tracker] Optimize connection by promoting client immediately after scan stop trigger (#10061)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-05 13:10:02 +12:00
J. Nick Koston 27ba90ea95 [esp32_ble_client] Start MTU negotiation earlier following ESP-IDF examples (#10062) 2025-08-05 12:59:23 +12:00
J. Nick Koston 469246b8d8 [bluetooth_proxy] Warn about BLE connection timeout mismatch on Arduino framework (#10063)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-05 12:58:41 +12:00
J. Nick Koston 50f15735dc [api] Add helpful compile-time errors for Custom API Device methods (#10076) 2025-08-05 12:57:31 +12:00
mschnaubelt 83d9c02a1b Add CO5300 display support (#9739) 2025-08-05 09:41:55 +10:00
Jonathan Swoboda 701e6099aa [espnow, web_server_idf] Fix IDF 5.5 compile issues (#10068) 2025-08-04 08:56:34 -10:00
Chris Beswick d59476d0e1 [i2s_audio] Use high-pass filter for dc offset correction (#10005) 2025-08-04 10:43:44 -04:00
Djordje Mandic fbbb791b0d [gt911] Use timeout instead of delay, shortened log msg (#10024)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-08-04 03:37:43 -05:00
J. Nick Koston 36c4430317 [esp32_ble] Fix BLE connection slot waste by aligning ESP-IDF timeout with client timeout (#10013) 2025-08-04 17:41:41 +12:00
J. Nick Koston 6be22a5ea9 [esp32_ble_client] Connect immediately on READY_TO_CONNECT to reduce latency (#10051) 2025-08-04 17:15:28 +12:00
J. Nick Koston 989058e6a9 [esp32_ble_client] Use FAST connection parameters for all v3 connections (#10052) 2025-08-04 17:12:06 +12:00
J. Nick Koston 7c297366c7 [esp32_ble_tracker] Remove unnecessary STOPPED scanner state to reduce latency (#10055) 2025-08-04 16:57:59 +12:00
Clyde Stubbs bb3ebaf955 [font] Catch file load exception (#10058)
Co-authored-by: clydeps <U5yx99dok9>
2025-08-04 16:55:54 +12:00
Jesse Hills 3007ca4d57 [core] Move docs url generator to helpers.py (#10056)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-03 23:55:46 -05:00
Jesse Hills a5f1661643 [nfc] Rename `binary_sensor` source files (#10053) 2025-08-03 23:43:04 -05:00
Jesse Hills 4d683d5a69 [AI] Add note about the defines.h file needing to include all new defines added (#10054) 2025-08-03 16:45:35 -10:00
J. Nick Koston c0c0a42362 [api] Use static allocation for areas and devices in DeviceInfoResponse (#10038)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-04 02:37:47 +00:00
J. Nick Koston 6a5eb460ef [esp32] Add framework migration warning for upcoming ESP-IDF default change (#10030)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-04 14:27:05 +12:00
J. Nick Koston ef372eeeb7 [wifi] Replace std::stable_sort with insertion sort to save 2.4KB flash (#10037) 2025-08-04 14:19:24 +12:00
J. Nick Koston 9aad0733ef [core] Update to esptool 5.0+ command syntax (#10011) 2025-08-04 14:14:17 +12:00
J. Nick Koston 494a1a216c [web_server] Conditionally compile authentication code to save flash memory (#10022) 2025-08-04 14:09:12 +12:00
J. Nick Koston a75f73dbf0 [web_server] Reduce binary size by using EntityBase and minimizing template instantiations (#10033) 2025-08-04 14:03:37 +12:00
J. Nick Koston c9d865a061 [core] Optimize Application::pre_setup() to reduce duplicate MAC address operations (#10039) 2025-08-04 14:02:10 +12:00
J. Nick Koston 3fbbdb4589 [web_server_idf] Replace std::find_if with simple loop to reduce binary size (#10042)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-04 14:00:56 +12:00
J. Nick Koston cd6cf074d9 [core] Replace std::stable_sort with insertion sort to save 3.5KB flash (#10035) 2025-08-04 13:56:06 +12:00
J. Nick Koston d86e1e29a9 [core] Convert components, devices, and areas vectors to static allocation (#10020) 2025-08-04 13:51:50 +12:00
J. Nick Koston dbaf2cdd50 [core] Replace std::find and std::max_element with simple loops to reduce binary size (#10044) 2025-08-04 13:46:06 +12:00
dependabot[bot] b44d2183aa Bump aioesphomeapi from 37.2.3 to 37.2.4 (#10050)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 01:19:12 +00:00
@RubenKelevra 0f13af0076 Update esp32-camera library version to 2.1.0 (#9527) 2025-08-03 15:08:11 -10:00
Clyde Stubbs 339c26c815 [color][lvgl] Allow Color to be used for lv_color_t (#10016) 2025-08-04 12:51:34 +12:00
J. Nick Koston d69e98e15d [api] Fix OTA progress updates not being sent when main loop is blocked (#10049) 2025-08-04 00:23:45 +00:00
Clyde Stubbs b1b0638fab [config] Fix reversion of excessive yaml output after error (#10043)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-08-02 22:35:52 -10:00
J. Nick Koston 296442d8f1 [core] Fix compilation errors when platform sections have no entities (#10023) 2025-08-02 13:59:20 -10:00
Copilot fd442cc485 [syslog] Fix RFC3164 timestamp compliance for single-digit days (#10034)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-08-03 08:21:54 +10:00
J. Nick Koston 4f58e1c8b9 [core] Convert entity vectors to static allocation for reduced memory usage (#10018) 2025-08-01 20:26:22 -10:00
J. Nick Koston 00d9baed11 [bluetooth_proxy] Eliminate heap allocations in connection state reporting (#10010) 2025-08-01 20:26:00 -10:00
dependabot[bot] f1877ca084 Bump aioesphomeapi from 37.2.2 to 37.2.3 (#10012)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-01 20:16:28 +00:00
dependabot[bot] 1f7c59f88d Bump esptool from 4.9.0 to 5.0.2 (#9983)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-01 10:02:29 -10:00
dependabot[bot] b5f42bc493 Bump aioesphomeapi from 37.2.1 to 37.2.2 (#10009)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-01 09:53:56 -10:00
Jesse Hills d8a46c7482 [CI] Allow multiple grep options for clang-tidy (#10004) 2025-08-01 21:40:53 +12:00
J. Nick Koston 20ad1ab4eb [wifi] Fix crash during WiFi reconnection on ESP32 with poor signal quality (#9989) 2025-08-01 02:46:52 -05:00
Clyde Stubbs 940a8b43fa [esp32] Add config option to execute from PSRAM (#9907)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-01 16:07:11 +10:00
tomaszduda23 f761404bf6 [nrf52, gpio] check different port notation (#9737) 2025-08-01 16:54:20 +12:00
tomaszduda23 e4dc62ea74 [nrf52, debug] debug component for nrf52 (#8315) 2025-08-01 16:53:40 +12:00
NP v/d Spek c42c5dd946 [espnow] Basic communication between ESP32 devices (#9582)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-01 16:51:01 +12:00
Keith Burzinski 291215909a [sensor] A little bit of filter clean-up (#9986) 2025-08-01 02:55:59 +00:00
Jonathan Swoboda 0954a6185c [sensor] Fix bug in percentage based delta filter (#8157)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-08-01 02:15:56 +00:00
J. Nick Koston f13e742bd5 [ruff] Enable RET and fix all violations (#9929) 2025-08-01 02:10:56 +00:00
tomaszduda23 7a4738ec4e [nrf52] add adc (#9321)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-08-01 13:49:39 +12:00
Clyde Stubbs 549b0d12b6 [image] Improve schemas (#9791) 2025-08-01 13:19:32 +12:00
Djordje Mandic 412f4ac341 [midea] Use c++17 constexpr and inline static in IrFollowMeData (#10002) 2025-07-31 14:28:22 -10:00
J. Nick Koston d4ff1bcf5c [bluetooth_proxy] Implement dynamic service batching based on MTU constraints (#10001)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-31 14:15:12 -10:00
Clyde Stubbs 161f51e1f4 [esp32] Fix strapping pin validation for P4 and H2 (#9980) 2025-08-01 11:48:25 +12:00
Jonathan Swoboda da0c47629a [esp32] Bump ESP32 platform to 54.03.21-2 (#10000) 2025-07-31 21:58:57 +00:00
J. Nick Koston 28b277c1c4 [bluetooth_proxy] Optimize UUID transmission with efficient short_uuid field (#9995) 2025-07-31 16:20:53 -05:00
dependabot[bot] 936a090aaa Bump aioesphomeapi from 37.2.0 to 37.2.1 (#9998)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-31 04:41:19 -10:00
dependabot[bot] 1be6d27012 Bump aioesphomeapi from 37.1.6 to 37.2.0 (#9996)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 23:20:43 -10:00
J. Nick Koston 71557c9f58 [bluetooth_proxy] Batch BLE service discovery messages for 67% reduction in API traffic (#9992) 2025-07-30 23:11:11 -05:00
J. Nick Koston 88cfcc1967 [esp32_ble_client] Fix BLE connection stability for WiFi-based proxies (#9993)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-30 22:36:33 -05:00
GilDev fb379bbb88 [wifi] Allow fast_connect with multiple networks (#9947) 2025-07-31 15:34:49 +12:00
mrtoy-me 88d8cfe6a2 [tm1651] Remove dependency on Arduino Library (#9645)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-07-30 20:20:55 -05:00
J. Nick Koston f25abc3248 [esp32_ble] Fix spurious BLE 5.0 event warnings on ESP32-S3 (#9969) 2025-07-30 20:18:50 -05:00
J. Nick Koston 5b6e152d6c [esp32_touch] Work around ESP-IDF v5.4 regression in touch_pad_read_filtered (#9957)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-30 20:17:35 -05:00
J. Nick Koston 1d0a38446f [api] Reduce flash usage through targeted optimizations (#9979) 2025-07-30 20:10:23 -05:00
rwrozelle 853dca6c5c [api] Bump APIVersion to 1.11 (#9990) 2025-07-30 15:02:09 -10:00
Jesse Hills 97560fd9ef [CI] Add labels for checkboxes (#9991) 2025-07-31 12:17:20 +12:00
Clyde Stubbs 4b7f3355ea [core] Fix regex for lambda id() replacement (#9975) 2025-07-30 12:56:43 -10:00
dependabot[bot] 110eac4f09 Bump aioesphomeapi from 37.1.5 to 37.1.6 (#9988)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 12:46:01 -10:00
rwrozelle 79533cb0d7 media_player add off on capability (#9294)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-07-30 12:02:53 -10:00
dependabot[bot] f4f69e827b Bump ruff from 0.12.5 to 0.12.7 (#9976)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-30 09:17:47 +00:00
dependabot[bot] 48a4dde824 Bump aioesphomeapi from 37.1.4 to 37.1.5 (#9977)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 09:16:00 +00:00
J. Nick Koston 9b4fe54f45 [esp32_ble_client] Fix connection failures with short discovery timeout devices and speed up BLE connections (#9971) 2025-07-29 19:19:12 -10:00
Keith Burzinski 913c58cd2c [template] Add tests for more sensor filters (#9973) 2025-07-30 14:20:25 +12:00
Keith Burzinski 374858efeb [sensor] Add new filter: `throttle_with_priority` (#9937) 2025-07-30 12:53:14 +12:00
Samuel Sieb 14dd48f9c3 [wifi] add more disconnect reason descriptions (#9955)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-07-30 12:41:31 +12:00
J. Nick Koston 76d33308d9 [api] Eliminate heap allocations when populating repeated fields from containers (#9948) 2025-07-30 10:41:37 +12:00
Dayowe daccaf36a7 Fix WiFi to prefer strongest AP when multiple APs have same SSID (#9963)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-30 09:10:53 +12:00
Clyde Stubbs 56c88807ee [mipi_dsi] Add dependencies (#9952) 2025-07-30 08:16:32 +12:00
dependabot[bot] 9c6dbbd8ea Bump aioesphomeapi from 37.1.3 to 37.1.4 (#9964) 2025-07-29 17:43:35 +00:00
rwrozelle a7dd849a8e Media player API enumeration alignment and feature flags (#9949)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-29 07:00:47 -10:00
Clyde Stubbs 1f0c606be4 [component] Revert setup messages to LOG_CONFIG level (#9956) 2025-07-29 07:32:45 +00:00
Jesse Hills ace375944c [esp32] Fix post build (#9951)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-29 06:44:45 +00:00
Clyde Stubbs 5f7c2f771f [adc] Enable ADC on ESP32-P4 (#9954) 2025-07-29 18:20:37 +12:00
Jonathan Swoboda 3d5b602288 [esp32] Bump platform to 54.03.21-1 and add support for tagged releases (#9926)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-29 05:52:34 +00:00
Djordje Mandic 6d30269565 [output] Add set_min_power & set_max_power actions for FloatOutput (#8934)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-29 17:22:44 +12:00
Keith Burzinski 4ff3137c0d [gps] Fix slow parsing (#9953) 2025-07-29 17:21:52 +12:00
rwrozelle 9d43ddd6f1 Openthread add Teardown (#9275)
Co-authored-by: mc <mc@debian>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-29 16:25:17 +12:00
Jonathan Swoboda f733c43dec [heatpumpir] Fix issue with IRremoteESP8266 being included on ESP32 (#9950) 2025-07-29 15:59:58 +12:00
Keith Burzinski f5f0a01a85 [text_sensor] Add support for default filters (#9936) 2025-07-29 11:35:40 +12:00
Keith Burzinski 908891a096 [binary_sensor] Add support for default filters (#9935) 2025-07-29 11:35:11 +12:00
Keith Burzinski 7657316a92 [sensor] Add support for default filters (#9934) 2025-07-29 11:34:52 +12:00
J. Nick Koston 4f425c700a [esp32] Enable LWIP core locking on ESP-IDF to reduce socket operation overhead (#9857) 2025-07-29 11:33:54 +12:00
J. Nick Koston 2c9987869e [api] Align ProtoSize API design with ProtoWriteBuffer pattern (#9920) 2025-07-29 10:28:32 +12:00
J. Nick Koston 68f388f78e [api] Optimize protobuf empty message handling to reduce flash and runtime overhead (#9908) 2025-07-29 10:25:07 +12:00
Jesse Hills 189d20a822 [heatpumpir] Bump library to 1.0.37 (#9944) 2025-07-28 16:21:53 -05:00
dependabot[bot] 08defd7360 Bump aioesphomeapi from 37.1.2 to 37.1.3 (#9943)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 11:02:53 -10:00
J. Nick Koston 59d466a6c8 [api] Remove unnecessary string copies from optional access (#9897) 2025-07-29 08:55:41 +12:00
J. Nick Koston 85435e6b5f [scheduler] Eliminate more runtime string allocations from retry (#9930) 2025-07-29 08:54:16 +12:00
Clyde Stubbs f9453f9642 [lvgl] Bugfix for tileview (#9938) 2025-07-29 08:43:22 +12:00
Jesse Hills f6cdbe37f9 Merge branch 'release' into dev 2025-07-28 19:34:23 +12:00
Jesse Hills d6b222c370 Merge pull request #9933 from esphome/bump-2025.7.4
2025.7.4
2025-07-28 19:33:19 +12:00
Clyde Stubbs eecdaa5163 [config_validation] extend should combine extra validations (#9939) 2025-07-28 19:23:35 +12:00
J. Nick Koston 4933ef780b [bluetooth_proxy] Fix service discovery cache pollution and descriptor count parameter bug (#9902) 2025-07-27 23:50:17 -05:00
J. Nick Koston 1702356fc8 [api] Fix string lifetime issue in Home Assistant service calls with templated values (#9909) 2025-07-28 16:39:25 +12:00
J. Nick Koston 05f6d01cbe [api] Add conditional compilation for Home Assistant service subscriptions (#9900) 2025-07-27 18:35:35 -10:00
Jesse Hills 573dad1736 Bump version to 2025.7.4 2025-07-28 15:55:07 +12:00
Jimmy Hedman 3a6cc0ea3d Fail with old lerp (#9914)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-28 15:55:07 +12:00
cryptk 2f9475a927 Add seed flag when running setup with uv present (#9932) 2025-07-28 15:55:07 +12:00
Jesse Hills 8dce7b0905 [logger] Don't allow `logger.log actions without configuring the logger` (#9821) 2025-07-28 15:55:07 +12:00
Eric Hoffmann 8b0ad3072f fix: non-optional x/y target calculation for ld2450 (#9849) 2025-07-28 15:55:07 +12:00
Clyde Stubbs 93028a4d90 [gt911] i2c fixes (#9822) 2025-07-28 15:55:07 +12:00
Jonathan Swoboda c9793f3741 [remote_receiver] Fix idle validation (#9819) 2025-07-28 15:55:07 +12:00
tomaszduda23 5029e248eb [packages] add example from documentation to component tests (#9891) 2025-07-28 15:28:27 +12:00
Cornelius Mosch 087970bca8 replace os.getlogin() with getpass.getuser() (#9928) 2025-07-28 15:25:32 +12:00
J. Nick Koston 7f0c66f835 [api] Reduce code duplication in send_noise_encryption_set_key_response (#9918) 2025-07-28 15:24:15 +12:00
J. Nick Koston 84ed1bcf34 [light] Reduce flash usage by 832 bytes through code optimization (#9924) 2025-07-28 15:22:56 +12:00
J. Nick Koston 6ed9214465 [core] Use nullptr defaults in status_set_error/warning to reduce flash usage (#9931) 2025-07-28 15:20:30 +12:00
Jimmy Hedman a3690422bf Fail with old lerp (#9914)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-28 15:19:17 +12:00
cryptk 20b61d4bdb Add seed flag when running setup with uv present (#9932) 2025-07-28 14:20:51 +12:00
Clyde Stubbs a2ed209542 [wifi] Disallow psram config with arduino (#9922) 2025-07-27 02:57:37 -05:00
Keith Burzinski 14862904ac [power_supply] Optimize logging, reduce flash footprint (#9923) 2025-07-26 19:54:10 -10:00
J. Nick Koston bcc56648c0 [light] Reduce flash memory usage by optimizing validation and color mode logic (#9921) 2025-07-26 23:56:35 -05:00
Clyde Stubbs e00839a608 [ci-custom] Report actual changes needed for absolute import (#9919) 2025-07-27 11:51:57 +10:00
Clyde Stubbs cf73f72119 [wifi] Allow config to use PSRAM (#9866) 2025-07-27 07:45:20 +10:00
J. Nick Koston 981b906579 [logger] Use C++17 nested namespace syntax (#9916) 2025-07-26 11:06:01 -10:00
Clyde Stubbs 0e2520e4c0 [core] Fix format error in log printf (#9911) 2025-07-26 08:02:02 -10:00
dependabot[bot] 84ffa4274c Bump aioesphomeapi from 37.1.0 to 37.1.2 (#9910)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-25 23:27:35 -10:00
J. Nick Koston d64e4d3c49 [ruff] Enable FURB rules for code modernization (#9896) 2025-07-26 20:54:03 +12:00
J. Nick Koston d54db471bd [i2c] Fix logging level for bus scan results in dump_config (#9904)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-26 01:29:57 -05:00
J. Nick Koston a9d6ece752 [api] Add conditional compilation for Home Assistant state subscriptions (#9898) 2025-07-26 01:28:44 -05:00
J. Nick Koston da491f7090 [api] Add missing USE_API_PASSWORD guards to reduce flash usage (#9899) 2025-07-26 01:21:09 -05:00
dependabot[bot] 11f970edec Bump aioesphomeapi from 37.0.4 to 37.1.0 (#9905)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-26 04:36:42 +00:00
Jesse Hills 6d37b916dc [logger] Don't allow `logger.log actions without configuring the logger` (#9821) 2025-07-26 16:23:36 +12:00
Clyde Stubbs b6e0188c42 [mipi_dsi] New display driver for P4 DSI (#9403)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Samuel Sieb <samuel-github@sieb.net>
Co-authored-by: Adam Liddell <git@aliddell.com>
Co-authored-by: DT-art1 <81360462+DT-art1@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-26 07:36:52 +12:00
J. Nick Koston b7ce8c116b [core] Centralize component setup logging to reduce flash usage (#9885) 2025-07-25 19:27:03 +00:00
Clyde Stubbs 2b87589562 [scheduler] Fix null pointer crash (#9893) 2025-07-25 09:12:33 -10:00
J. Nick Koston f808c38f10 [ruff] Enable PERF rules and fix all violations (#9874) 2025-07-25 08:15:54 -10:00
J. Nick Koston 88ccde4ba1 [scheduler] Fix retry race condition on cancellation (#9788) 2025-07-25 08:14:15 -10:00
GilDev 9ac10d7276 [mqtt] Don’t log state topic subscription for buttons (#9887) 2025-07-25 23:33:29 +12:00
Jesse Hills 457689fa1d [CI] Fix auto-label workflow - codeowners & listFiles (#9890) 2025-07-25 21:40:42 +12:00
Jesse Hills 773a8b8fb7 [CI] Better mega-pr label handling (#9888) 2025-07-25 21:14:28 +12:00
Jesse Hills c5c0237a4b Remove redundant platformio environments (#9886) 2025-07-25 03:16:23 -05:00
Keith Burzinski e79589efee [platformio.ini] Add GPS to nrf52-zephyr lib_deps (#9884) 2025-07-25 06:31:32 +00:00
J. Nick Koston ffebd30033 [ruff] Enable SIM rules and fix code simplification violations (#9872) 2025-07-25 18:26:08 +12:00
Keith Burzinski cb87f156d0 [platformio.ini] Move GPS to common lib_deps (#9883) 2025-07-24 18:10:03 -10:00
dependabot[bot] 06eba96fdc Bump ruff from 0.12.4 to 0.12.5 (#9871)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-24 10:12:22 -10:00
@RubenKelevra 27119ef7ad rc522: fix buffer overflow in UID/buffer formatting helpers (#9375) 2025-07-25 00:43:44 +12:00
tomaszduda23 73f58dfe80 [sound_level] fix spelling mistake (#9843) 2025-07-24 23:26:21 +12:00
Keith Burzinski 729f20d765 [gps] Patches to build on IDF, other optimizations (#9728) 2025-07-24 23:23:42 +12:00
Clyde Stubbs ba72298a63 [factory_reset] Allow factory reset by rapid power cycle (#9749) 2025-07-24 23:21:59 +12:00
Jesse Hills ba1de5feff [CI] Refactor auto-label workflow: modular architecture, CODEOWNERS automation, and performance improvements (#9860) 2025-07-24 23:18:29 +12:00
J. Nick Koston 1344103086 [core] Revert #9851 and rename ESPHOME_CORES to ESPHOME_THREAD (#9862) 2025-07-24 11:04:00 +00:00
Keith Burzinski 5bff9bc8d9 [ld2450] Use `Deduplicator` for sensors (#9863) 2025-07-24 04:02:03 -05:00
Clyde Stubbs 568e774116 [mipi] Keep models from different drivers separate (#9865) 2025-07-24 20:31:37 +12:00
J. Nick Koston c74f12be98 [api] Use C++17 nested namespace syntax (#9856) 2025-07-24 07:15:42 +00:00
Keith Burzinski 705ea4ebaa [ld2410] Use `Deduplicator` for sensors (#9584)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-24 16:50:50 +12:00
J. Nick Koston ec2e0c50f1 [bluetooth_proxy] [esp32_ble_tracker] [esp32_ble] Use C++17 nested namespace syntax (#9825) 2025-07-24 15:23:45 +12:00
J. Nick Koston 544cf9b9c0 [core] Fix component state documentation and add state helper method (#9824) 2025-07-24 15:22:42 +12:00
J. Nick Koston 99850255f0 [api] Use emplace_back for TemplatableKeyValuePair construction in HomeAssistant services (#9804) 2025-07-24 15:21:35 +12:00
J. Nick Koston 4a27b34685 [api] Reduce code duplication in protobuf dump methods with helper functions (#9809) 2025-07-24 15:19:58 +12:00
J. Nick Koston f863189f96 [api] Simplify generated authentication check code (#9806) 2025-07-24 15:18:01 +12:00
J. Nick Koston 04d9698681 [api] Replace magic numbers with MESSAGE_TYPE constants in protobuf switch cases (#9776) 2025-07-24 15:16:54 +12:00
J. Nick Koston 15ba2326ad [esp32] Fix threading model for single-core variants (S2, C3, C6, H2) (#9851) 2025-07-24 15:15:32 +12:00
Kevin Ahrendt 6398bb2fdf [i2s_audio] Speaker improvements: CPU core agnostic and more accurate timestamps (#9800)
Co-authored-by: NP v/d Spek <github_mail@lumensoft.nl>
2025-07-24 15:14:00 +12:00
TJ Horner 108e447072 [logger] remove unnecessary call to setTxTimeoutMs (#9854) 2025-07-24 14:51:47 +12:00
Brandon Harvey cc187ef276 [ld2450] Set `accuracy_decimals=0` as default for "target" entities (#9842) 2025-07-24 14:29:39 +12:00
Keith Burzinski a3e626757e [helpers] Add "unknown" value handling to `Deduplicator` (#9855) 2025-07-23 21:22:54 -05:00
Mayur Panchal 5cd7f156b9 Update post_build.py.script to Fix #7137 (#9578)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-24 01:34:39 +00:00
Clyde Stubbs 3960e2bae7 [mipi] Refactor constants and functions (#9853) 2025-07-24 13:27:05 +12:00
Clyde Stubbs f9534fbd5d [interval] Fix startup behaviour (#9793) 2025-07-24 08:03:36 +10:00
Eric Hoffmann 0744abe098 fix: non-optional x/y target calculation for ld2450 (#9849) 2025-07-23 11:55:31 -10:00
Clyde Stubbs 49df68beb6 [gt911] i2c fixes (#9822) 2025-07-24 09:52:07 +12:00
Olivier ARCHER e94cb03272 [modem] network component change (#9801)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-24 09:36:20 +12:00
J. Nick Koston 6ac1073469 [ci] Support C++17 nested namespace syntax in linter (#9826) 2025-07-23 23:32:35 +12:00
J. Nick Koston 378b687a82 [core] Restore COMPONENT_STATE_LOOP_DONE check in calculate_looping_components (#9832) 2025-07-23 23:31:30 +12:00
Jesse Hills babaa1db3f [i2c] Use `i2c_master_probe` to scan i2c bus (#9831) 2025-07-23 23:31:13 +12:00
Jonathan Swoboda bb6f8aeb94 [remote_receiver] Fix idle validation (#9819) 2025-07-22 21:57:42 -05:00
J. Nick Koston b636b844fc [core] Initialize looping_components_ before setup blocking phase (#9820) 2025-07-22 16:43:22 -10:00
Jesse Hills d7a5db3dda [CI] Paginate codeowner comments to make sure we find it (#9818) 2025-07-23 13:23:06 +12:00
Jesse Hills ac7f125eb5 [CI] Paginate codeowner comments to make sure we find it (#9817) 2025-07-23 13:22:54 +12:00
Jesse Hills 7bfb08e602 [core] Match LockFreeQueue initialization order (#9813) 2025-07-22 23:46:14 +00:00
Clyde Stubbs a994ad3642 Workflow - check all comments to find previous bot comment (#9815) 2025-07-23 11:28:15 +12:00
Jonathan Swoboda 116c91e9c5 Bump ESP32 IDF version to 5.4.2 and Arduino version to 3.2.1 (#9770) 2025-07-22 13:15:31 -10:00
Jesse Hills 5a4e2a3eaf [udp] Move `on_receive` to const (#9811) 2025-07-22 17:56:00 -05:00
Stas 1a7757e7ca [http_request] set correct duration_ms for failed requests (#9789) 2025-07-22 11:39:03 -10:00
Jonathan Swoboda e2976162b5 [sgp4x] Fix build (#9794) 2025-07-23 08:54:03 +12:00
Thomas Rupprecht cf40306297 [audio] fix typo gneneral and divison (#9808) 2025-07-22 20:24:40 +00:00
Jesse Hills fef2369e66 Merge branch 'release' into dev 2025-07-23 08:10:21 +12:00
Jesse Hills 2b5cceda58 Merge pull request #9796 from esphome/bump-2025.7.3
2025.7.3
2025-07-23 08:09:40 +12:00
Guillermo Ruffino 3bb5a9e2f7 [schema-gen] fix referenced schemas when schema in component platform (#9755) 2025-07-23 06:52:56 +12:00
J. Nick Koston a614a68f1a [api] Implement zero-copy string optimization for outgoing protobuf messages (#9790)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-22 07:33:03 -10:00
Jesse Hills dc26ed9c46 Bump version to 2025.7.3 2025-07-23 00:34:13 +12:00
Keith Burzinski 8674012406 [bme680_bsec] Add suggested alternate when using IDF (#9785) 2025-07-23 00:34:12 +12:00
Keith Burzinski ae12deff87 [neopixelbus] Add suggested alternate when using IDF (#9783) 2025-07-23 00:34:12 +12:00
Keith Burzinski cb6acfe24b [fastled_clockless, fastled_spi] Add suggested alternate when using IDF (#9784) 2025-07-23 00:34:12 +12:00
J. Nick Koston fc8c5a7438 [core] Process pending loop enables during setup blocking phase (#9787) 2025-07-23 00:34:06 +12:00
Keith Burzinski f8777d3b66 [config_validation] Add support for suggesting alternate component/platform (#9757)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-23 00:30:36 +12:00
Jesse Hills 76e75f4cdc [tuya] Update use of fan_schema (#9762) 2025-07-23 00:29:40 +12:00
Jonathan Swoboda 896d7f8f76 [esp32_touch] Fix setup mode in v1 driver (#9725) 2025-07-23 00:29:40 +12:00
JonasB2497 d92ee563f2 [sdl][mipi_spi] Respect clipping when drawing (#9722)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-07-23 00:29:34 +12:00
tmpeh d6ff790823 Fix format string error in ota_web_server.cpp (#9711) 2025-07-23 00:25:51 +12:00
J. Nick Koston 7ac60c15dc [gpio] Auto-disable interrupts for shared GPIO pins in binary sensors (#9701) 2025-07-23 00:25:51 +12:00
Keith Burzinski 71cb429a86 [bme680_bsec] Add suggested alternate when using IDF (#9785) 2025-07-22 23:54:09 +12:00
Keith Burzinski 89924ae468 [neopixelbus] Add suggested alternate when using IDF (#9783) 2025-07-22 23:53:45 +12:00
Keith Burzinski 7efe1b8698 [fastled_clockless, fastled_spi] Add suggested alternate when using IDF (#9784) 2025-07-22 23:53:33 +12:00
J. Nick Koston ac08fb314f [api] Optimize protobuf memory usage with fixed-size arrays for Bluetooth UUIDs (#9782) 2025-07-22 21:50:49 +12:00
J. Nick Koston 0f0038df24 [core] Process pending loop enables during setup blocking phase (#9787) 2025-07-22 15:47:43 +12:00
Jesse Hills b17e2019c7 [esp32_ble_tracker] Write require feature defines after all clients are registered (#9780) 2025-07-22 00:49:48 +00:00
J. Nick Koston e56b681506 [nrf52] Add missing CoreModel define for scheduler (#9777) 2025-07-22 12:32:50 +12:00
Keith Burzinski 238c72b66f [config_validation] Add support for suggesting alternate component/platform (#9757)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-22 11:29:05 +12:00
J. Nick Koston 118b74b7cd [api] Optimize noise handshake with memcpy for faster connection setup (#9779) 2025-07-21 17:56:32 -05:00
J. Nick Koston 5343a6d16a [api] Optimize string encoding with memcpy for 10x performance improvement (#9778) 2025-07-22 09:39:28 +12:00
J. Nick Koston db62a94712 [api] Implement zero-copy for all protobuf bytes fields (#9761) 2025-07-22 09:38:39 +12:00
Jesse Hills 74ce3d2c0b [tuya] Update use of fan_schema (#9762) 2025-07-21 15:20:25 -05:00
Jonathan Swoboda a04c2c8471 [esp32_touch] Fix setup mode in v1 driver (#9725) 2025-07-22 07:25:08 +12:00
Katherine Whitlock 16a426c182 Factor PlatformIO buildgen out of writer.py (#9378)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-21 20:28:11 +12:00
J. Nick Koston e485895d97 [bluetooth_proxy] Optimize service discovery with in-place construction (#9765) 2025-07-21 20:26:20 +12:00
dependabot[bot] 5fed708761 Bump aioesphomeapi from 37.0.3 to 37.0.4 (#9764)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-20 21:41:18 -10:00
J. Nick Koston fe1050a583 [tests] Fix flaky scheduler retry test timing (#9760) 2025-07-21 17:21:51 +12:00
J. Nick Koston 305667b06d [api] Sync uses_password field_ifdef optimization from aioesphomeapi (#9756) 2025-07-21 16:59:48 +12:00
dependabot[bot] fc286c8bf4 Bump aioesphomeapi from 37.0.2 to 37.0.3 (#9754)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-20 16:20:54 -10:00
Jesse Hills c60fe4c372 [CI] Dont create new review if existing and dont count tests (#9753) 2025-07-21 13:59:25 +12:00
Jesse Hills a8d53b7c68 [CI] Use comment marker in too-big reviews (#9751) 2025-07-21 13:33:20 +12:00
Jesse Hills 9508871474 [CI] Fix codeowner workflow requesting the same multiple times (#9750) 2025-07-21 13:20:02 +12:00
J. Nick Koston a45a45c688 [api] Split frame helper implementation into protocol-specific files (#9746) 2025-07-21 13:10:08 +12:00
Jesse Hills 46da075226 [CI] Add url and dismiss reviews once conditions are met (#9748) 2025-07-21 12:49:00 +12:00
Jesse Hills efd83dedda [CI] Fetch platform components and target platforms from hosted json file (#9747) 2025-07-21 12:48:00 +12:00
Jesse Hills 06bd1472de [CI] Keep original labels when PR has too many lines (#9745) 2025-07-21 12:10:47 +12:00
Jesse Hills bb9011d65d [CI] Label PR too-big if it has more than 1000 lines changed (#9744) 2025-07-21 12:01:16 +12:00
J. Nick Koston 5b5982cfdd [api] Reduce memory usage by eliminating duplicate client info strings (#9740)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 11:34:59 +12:00
J. Nick Koston ecd310dae1 [core] Refactor scheduler to eliminate hidden side effects in empty_ (#9743) 2025-07-20 23:11:30 +00:00
J. Nick Koston acca629c5c [api] Fix missing ifdef guards for AreaInfo and DeviceInfo messages (#9730) 2025-07-20 23:05:53 +00:00
J. Nick Koston 0aabdaa0c7 [api] Consolidate error handling and remove unused code (#9726) 2025-07-20 22:52:46 +00:00
Jesse Hills e5aed29231 [CI] Only mention codeowners once (#9727)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 10:39:30 +12:00
J. Nick Koston 2540e7edb2 [api] Remove deprecated protobuf fields to reduce flash usage (#9679) 2025-07-21 10:35:53 +12:00
J. Nick Koston 5511d61dba [api] Eliminate heap allocation in process_batch_ using stack-allocated PacketInfo array (#9703)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 10:24:57 +12:00
J. Nick Koston e474a33abd [api] Memory optimizations for API frame helper buffering (#9724) 2025-07-21 10:20:35 +12:00
J. Nick Koston 534a1cf2e7 [esp32_ble_tracker] Batch BLE advertisement processing to reduce overhead (#9699) 2025-07-21 10:17:38 +12:00
J. Nick Koston 335110d71f [bluetooth_proxy] Fix service discovery on disconnect and refactor connection handling (#9697) 2025-07-21 10:15:34 +12:00
@RubenKelevra 6e31fb181e core/scheduler: Make millis_64_ rollover monotonic on SMP (#9716)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-20 21:57:52 +00:00
DT-art1 7d30d1e987 [const] Move CONF_FLIP_X and CONF_FLIP_Y to `const.py` (#9741) 2025-07-20 20:07:56 +00:00
dependabot[bot] 1e35c07327 Bump aioesphomeapi from 37.0.1 to 37.0.2 (#9738)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-20 07:37:11 -10:00
J. Nick Koston 5b3d61b4a6 [api] Fix missing ifdef guards for field_ifdef fields in protobuf base classes (#9693) 2025-07-20 15:41:00 +12:00
JonasB2497 727e8ca376 [sdl][mipi_spi] Respect clipping when drawing (#9722)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-07-19 22:29:02 +00:00
tmpeh 5ed77c10ae Fix format string error in ota_web_server.cpp (#9711) 2025-07-19 11:24:26 -10:00
J. Nick Koston 89b9bddf1b [CI] Fix clang-tidy not running when platformio.ini changes (#9678) 2025-07-19 20:55:21 +12:00
J. Nick Koston 65cbb0d741 [gpio] Auto-disable interrupts for shared GPIO pins in binary sensors (#9701) 2025-07-19 05:31:53 +00:00
Jesse Hills 9533d52d86 Merge branch 'release' into dev 2025-07-19 12:05:32 +12:00
Jesse Hills 6fe4ffa0cf Merge pull request #9691 from esphome/bump-2025.7.2
2025.7.2
2025-07-19 12:04:51 +12:00
Jesse Hills 19a68dc650 Add core team as codeowner of .github folder (#9663) 2025-07-19 10:55:22 +12:00
Jesse Hills 576ce7ee35 Bump version to 2025.7.2 2025-07-19 09:56:08 +12:00
J. Nick Koston 8a45e877bb [gpio] Disable interrupt mode by default for LibreTiny platforms (#9687)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-19 09:56:08 +12:00
Kevin Ahrendt 84607c1255 [voice_assistant] Use media player callbacks to track TTS response status (#9670) 2025-07-19 09:56:01 +12:00
Kevin Ahrendt 8664ec0a3b [speaker] Media player's pipeline properly returns playing state near end of file (#9668) 2025-07-19 09:54:15 +12:00
J. Nick Koston 32d8c60a0b Fix AsyncTCP version mismatch between platformio.ini and async_tcp component (#9676) 2025-07-19 09:54:00 +12:00
Jesse Hills 976a1e27b4 [lvgl] Prevent keyerror on min/max value widgets with no default (#9660) 2025-07-19 09:53:47 +12:00
J. Nick Koston cc2c1b1d89 [libretiny] Remove unsupported lock-free queue and event pool implementations (#9653) 2025-07-19 09:53:47 +12:00
Clyde Stubbs 85495d38b7 [lvgl] Fix meter rotation (#9605)
Co-authored-by: clydeps <U5yx99dok9>
2025-07-19 09:53:47 +12:00
J. Nick Koston 84a77ee427 [scheduler] Fix DelayAction cancellation in restart mode scripts (#9646) 2025-07-19 09:53:47 +12:00
@RubenKelevra 11a4115e30 esp32_camera: deprecate i2c_pins; throw error if combined with i2c: block (#9615) 2025-07-19 09:53:47 +12:00
Samuel Sieb 121ed687f3 [logger] fix on_message (#9642)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-19 09:53:47 +12:00
J. Nick Koston c602f3082e [scheduler] Fix cancellation of timers with empty string names (#9641) 2025-07-19 09:53:39 +12:00
J. Nick Koston 4a43f922c6 [wireguard] Fix boot loop when CONFIG_LWIP_TCPIP_CORE_LOCKING is enabled (#9637) 2025-07-19 09:50:36 +12:00
J. Nick Koston 21e66b76e4 [api] Fix compilation error with char* lambdas in HomeAssistant services (#9638)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-19 09:50:36 +12:00
Flo cdeed7afa7 Fix template event web_server crash (#9618) 2025-07-19 09:50:36 +12:00
J. Nick Koston 6cefe943e9 [gpio] Disable interrupt mode by default for LibreTiny platforms (#9687)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-19 09:32:20 +12:00
Kevin Ahrendt 6f74decd79 [i2s_audio] Bugfix: cast adc_channel_t to adc1_channel_t (#9688) 2025-07-18 16:52:46 -04:00
dependabot[bot] 60350e8abd Bump aioesphomeapi from 37.0.0 to 37.0.1 (#9685)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 20:08:29 +00:00
@RubenKelevra 08407706aa esp32cam: add fb location config option (#9630) 2025-07-19 07:28:13 +12:00
Kevin Ahrendt cb8d9dca2a [voice_assistant] Use media player callbacks to track TTS response status (#9670) 2025-07-19 07:24:55 +12:00
Kevin Ahrendt 3f8494bf8f [speaker] Media player's pipeline properly returns playing state near end of file (#9668) 2025-07-19 07:21:36 +12:00
J. Nick Koston 95a08579f6 Fix AsyncTCP version mismatch between platformio.ini and async_tcp component (#9676) 2025-07-19 07:20:08 +12:00
dependabot[bot] a11c39bdc9 Bump aioesphomeapi from 36.0.1 to 37.0.0 (#9677)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-18 17:57:40 +00:00
J. Nick Koston 71cc298363 Use message_source_map consistently in proto generation (#9542) 2025-07-19 00:28:08 +12:00
J. Nick Koston 0d422bd74f [scheduler] Add integration tests for set_retry functionality (#9644) 2025-07-19 00:26:54 +12:00
Jesse Hills ce3a16f03c [lvgl] Prevent keyerror on min/max value widgets with no default (#9660) 2025-07-18 21:49:34 +10:00
J. Nick Koston 72905f5f42 [libretiny] Remove unsupported lock-free queue and event pool implementations (#9653) 2025-07-18 23:40:14 +12:00
Jesse Hills b5b301f935 [CI] Fix by-code-owner labelling (#9661) 2025-07-18 23:24:06 +12:00
Jesse Hills afc48812fa [CI] Add codeowners mention workflow (#9651) 2025-07-18 23:21:38 +12:00
Jesse Hills e189add8a3 [CI] New workflow to mention codeowners on issues (#9658) 2025-07-18 22:57:25 +12:00
@RubenKelevra f8146bd340 core/schedule: fixup out of sync code comment (#9649) 2025-07-17 18:54:01 -10:00
J. Nick Koston ec5a517a76 Fix bluetooth_proxy heap allocations during BLE scanning (#9633) 2025-07-18 16:24:29 +12:00
Clyde Stubbs f7314adff4 [lvgl] Fix meter rotation (#9605)
Co-authored-by: clydeps <U5yx99dok9>
2025-07-18 16:14:21 +12:00
J. Nick Koston f0f76066f3 [scheduler] Fix DelayAction cancellation in restart mode scripts (#9646) 2025-07-18 04:07:59 +00:00
@RubenKelevra 1ebf157768 esp32_camera: deprecate i2c_pins; throw error if combined with i2c: block (#9615) 2025-07-17 17:09:24 -10:00
Samuel Sieb 4bd0561ba3 [logger] fix on_message (#9642)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-17 17:08:18 -10:00
J. Nick Koston a18ddd1169 [scheduler] Fix LibreTiny compilation error due to missing atomic operations (#9643) 2025-07-18 14:21:46 +12:00
J. Nick Koston 158a3b2835 [scheduler] Fix cancellation of timers with empty string names (#9641) 2025-07-18 14:20:35 +12:00
Clyde Stubbs eb8a241a01 [esp32] Allow variant in place of board (#9427)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-18 13:48:48 +12:00
tomaszduda23 7cdb48b820 [code quality] move const to esphome/const.py (#9632)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-17 23:39:35 +00:00
tomaszduda23 558e175c6b adds nRF52840 to PR templates (#9631) 2025-07-18 11:23:42 +12:00
J. Nick Koston dfa8c8c77f Fix scheduler rollover detection with concurrent task calls (#9624) 2025-07-17 13:07:36 -10:00
J. Nick Koston 7f807e08b1 [wireguard] Fix boot loop when CONFIG_LWIP_TCPIP_CORE_LOCKING is enabled (#9637) 2025-07-18 11:00:56 +12:00
J. Nick Koston fc1fd3f897 [api] Fix compilation error with char* lambdas in HomeAssistant services (#9638)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 10:55:39 +12:00
J. Nick Koston f5afe1145e Refactor API send_message from template to non-template implementation (#9561) 2025-07-18 10:28:14 +12:00
dependabot[bot] 91e5bcf787 Bump aioesphomeapi from 36.0.0 to 36.0.1 (#9636)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-17 21:49:03 +00:00
Flo 4378d10f45 Fix template event web_server crash (#9618) 2025-07-17 11:45:07 -10:00
dependabot[bot] 6178e7d6c8 Bump ruff from 0.12.3 to 0.12.4 (#9634)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-17 21:27:18 +00:00
dependabot[bot] b01f42d995 Bump pytest-xdist from 3.7.0 to 3.8.0 (#9287)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-17 11:20:31 -10:00
dependabot[bot] 3f842806ae Bump pytest-asyncio from 1.0.0 to 1.1.0 (#9588)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-17 11:13:01 -10:00
Clyde Stubbs 2347375757 [ci] attempt to fix permission for workflow (#9610)
Co-authored-by: clydeps <U5yx99dok9>
2025-07-18 00:45:08 +12:00
Clyde Stubbs 513908d8a0 [ci] Implement external component PR workflow (#9595)
Co-authored-by: clydeps <U5yx99dok9>
2025-07-18 00:05:26 +12:00
@RubenKelevra f7acad747f Update Issues / Feature Requests links (#9607) 2025-07-18 00:02:09 +12:00
Jesse Hills b361b93722 Add some AI instructions (#9606) 2025-07-17 22:40:28 +12:00
Jesse Hills 3713f7004d Merge branch 'release' into dev 2025-07-17 21:55:16 +12:00
Jesse Hills 1a9f02fa63 Merge pull request #9596 from esphome/bump-2025.7.1
2025.7.1
2025-07-17 21:54:35 +12:00
@RubenKelevra 66dd5138b9 Update Issues / Feature Requests links in Readme (#9600) 2025-07-17 21:48:37 +12:00
J. Nick Koston 44979f0840 Skip compilation of web_server_v1.cpp when not using version 1 (#9590)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-17 21:02:51 +12:00
Jesse Hills 7ad1b039f9 Bump version to 2025.7.1 2025-07-17 19:40:03 +12:00
J. Nick Koston e255d73c29 Fix lwIP thread safety assertion failures on ESP32 (#9570) 2025-07-17 19:39:57 +12:00
Jesse Hills 46f5c44b37 [esp32] Add missing include for helpers (#9579)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-17 19:39:39 +12:00
J. Nick Koston 9d80889bc9 Allow disabling OTA for web_server while keeping it enabled for captive_portal (#9583) 2025-07-17 19:39:39 +12:00
J. Nick Koston 08a5ba6ef1 Add helpful error message when ESP32+Arduino runs out of flash space (#9580) 2025-07-17 19:39:39 +12:00
J. Nick Koston 28128c65e5 Fix format string warnings in Web Server OTA component (#9569)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-17 19:39:39 +12:00
J. Nick Koston efcad565ee Fix compilation error when using string lambdas with homeassistant services (#9543) 2025-07-17 19:39:39 +12:00
Vladimir Kuznetsov cd987feb5b [lvgl]: fix missing await keyword in meter tick_style width processing (#9538) 2025-07-17 19:39:12 +12:00
Jesse Hills b2406f9def [CI] Add `needs-docs` labelling (#9591) 2025-07-17 17:15:28 +12:00
J. Nick Koston b1048d6e25 Fix lwIP thread safety assertion failures on ESP32 (#9570) 2025-07-17 17:06:57 +12:00
Jesse Hills a8263cb79f [CI] Add `by-code-owner` labelling (#9589)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-17 16:54:00 +12:00
Jesse Hills 7868b2b456 [dependabot] Use specific labels for github-actions updates (#9586) 2025-07-17 15:19:34 +12:00
Jesse Hills faaaded0b1 Workflow to auto label PRs based on changes (#9585) 2025-07-17 15:19:07 +12:00
Jesse Hills c14b102776 [esp32] Add missing include for helpers (#9579)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-17 15:13:03 +12:00
J. Nick Koston b1655b3fd4 Allow disabling OTA for web_server while keeping it enabled for captive_portal (#9583) 2025-07-16 17:05:09 -10:00
J. Nick Koston 02999195cd Add helpful error message when ESP32+Arduino runs out of flash space (#9580) 2025-07-17 12:13:55 +12:00
dependabot[bot] 8415467dab Bump aioesphomeapi from 35.0.1 to 36.0.0 (#9567)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-16 13:52:16 -10:00
J. Nick Koston 66b6985975 Fix format string warnings in Web Server OTA component (#9569)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-16 23:14:25 +00:00
Jesse Hills b6e8f6398c Revert "Bump ESP32 IDF version to 5.4.2 and Arduino version to 3.2.1" (#9574) 2025-07-17 10:25:57 +12:00
Big Mike 0958e49965 Move CONF_ALTITUDE_COMPENSATION to const.py (#9563) 2025-07-16 16:06:50 -05:00
J. Nick Koston f4cd559a0b Fix compilation error when using string lambdas with homeassistant services (#9543) 2025-07-17 09:02:32 +12:00
Jonathan Swoboda c93b892ccc Bump ESP32 IDF version to 5.4.2 and Arduino version to 3.2.1 (#9305) 2025-07-17 07:50:42 +12:00
Edward Firmo 78c32eac04 [adc] Add ESP32-C5 support (#9486)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: oxynatOr <98734567+oxynatOr@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-16 23:32:44 +12:00
J. Nick Koston 9e621a1769 Update script/helpers.py to use ESPHome YAML parser for integration fixtures (#9544) 2025-07-16 22:19:27 +12:00
esphomebot d0b45f7cb6 Synchronise Device Classes from Home Assistant (#9513) 2025-07-16 09:55:40 +00:00
J. Nick Koston e40b45cab1 Add ability to have same entity names on different sub devices (#9355)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-16 21:34:51 +12:00
Jesse Hills b15a09e8bc Merge branch 'release' into dev 2025-07-16 20:47:13 +12:00
Jesse Hills 5707389faa Merge pull request #9534 from esphome/bump-2025.7.0
2025.7.0
2025-07-16 20:46:26 +12:00
J. Nick Koston 15768ec00d Reduce API proto vtable overhead by splitting decode functionality (#9541) 2025-07-16 20:46:04 +12:00
J. Nick Koston 2c478efcba Refactor API connection entity encoding to reduce code duplication (#9505)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-16 07:54:49 +00:00
Edward Firmo 9ae8c5b147 [adc] Test platforms on IDF (#9536) 2025-07-16 19:35:33 +12:00
Vladimir Kuznetsov 63e2e2b2a2 [lvgl]: fix missing await keyword in meter tick_style width processing (#9538) 2025-07-16 17:05:19 +10:00
J. Nick Koston 3ab1ee7a04 Reduce binary size with field-level conditional compilation for protobuf messages (#9473)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-16 18:36:26 +12:00
J. Nick Koston f3c0c0c00c Remove legacy unique_id field from entities (#9022)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-16 04:56:49 +00:00
J. Nick Koston 231bcb1f7d Fix CI failures from merge collisions (#9535) 2025-07-16 15:24:20 +12:00
Thomas Rupprecht 9cac1c824e [ssd1306_base] fix typo brighrness (#9491) 2025-07-15 22:22:33 -05:00
J. Nick Koston c691f01c7f Reduce flash usage by replacing ProtoSize template with specialized methods (#9487) 2025-07-16 01:50:32 +00:00
J. Nick Koston b648944973 Optimize API connection batch priority message handling to reduce flash usage (#9510) 2025-07-16 13:46:12 +12:00
J. Nick Koston 40935f7ae4 Skip API log message calls for unsubscribed log levels (#9514) 2025-07-16 13:43:55 +12:00
J. Nick Koston e152690867 Optimize API component LOGCONFIG usage for flash memory savings (#9526) 2025-07-16 13:42:55 +12:00
J. Nick Koston b1c86fe30e Optimize scheduler timing by reducing millis() calls (#9524) 2025-07-16 13:41:55 +12:00
Jonathan Swoboda b695f13f86 [i2c] Use new driver with IDF 5.4.2+ (#8483) 2025-07-15 20:40:28 -05:00
J. Nick Koston ab54a880c1 Optimize MedianFilter memory allocation by adding vector reserve (#9531) 2025-07-16 01:25:41 +00:00
J. Nick Koston f745135bdc Drop Python 3.10 support, require Python 3.11+ (#9522)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-07-15 15:20:58 -10:00
J. Nick Koston 30c4b91697 Remove parsed advertisement support from bluetooth_proxy to save memory (#9489) 2025-07-16 13:19:03 +12:00
J. Nick Koston bfaf2547e3 Reduce API component flash usage by consolidating error logging (#9468) 2025-07-16 13:15:23 +12:00
J. Nick Koston b5be45273f Improve API protobuf decode method readability and reduce code size (#9455) 2025-07-16 13:15:11 +12:00
J. Nick Koston 5c2dea79ef Make API ConnectRequest optional for passwordless connections (#9445) 2025-07-16 13:14:43 +12:00
J. Nick Koston e012fd5b32 Add runtime_stats component for performance debugging and analysis (#9386)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-07-16 13:13:51 +12:00
J. Nick Koston 856cb182fc Remove dead code: 64-bit protobuf types never used in 7 years (#9471) 2025-07-15 15:12:12 -10:00
Clyde Stubbs 6486147da1 [mipi_spi] Template code, partial buffer support (#9314)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-07-16 11:05:27 +10:00
Edward Firmo 5480675dd8 [adc] Use new library with ESP-IDF v5 (#9021)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-16 13:03:19 +12:00
tomaszduda23 6ab3de65a6 remove duplication from component_iterator (#7210)
Co-authored-by: Samuel Tardieu <sam@rfc1149.net>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-16 13:02:14 +12:00
tomaszduda23 5d9cba3dce [nrf52, core] nrf52 core based on zephyr (#7049)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Samuel Sieb <samuel-github@sieb.net>
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-16 13:00:21 +12:00
Jesse Hills 3f78db5c63 Bump version to 2025.7.0 2025-07-16 12:31:13 +12:00
Jesse Hills eb81b8a1c8 Merge branch 'beta' into dev 2025-07-16 11:58:43 +12:00
Jesse Hills de0656a188 Merge pull request #9532 from esphome/bump-2025.7.0b5
2025.7.0b5
2025-07-16 11:58:12 +12:00
Jesse Hills 90a16ffa89 Bump version to 2025.7.0b5 2025-07-16 10:45:20 +12:00
Samuel Sieb 4182076f64 [as3935_spi] remove unnecessary includes (#9528) 2025-07-16 10:45:19 +12:00
J. Nick Koston 8c8c08d40c Fix timing overflow when components disable themselves during loop (#9529)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-16 10:45:19 +12:00
Samuel Sieb 82120bc5d7 [as3935_spi] remove unnecessary includes (#9528) 2025-07-16 10:03:02 +12:00
J. Nick Koston 9769f8a4cc Fix timing overflow when components disable themselves during loop (#9529)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-15 21:51:01 +00:00
Jesse Hills 0968338064 Merge branch 'beta' into dev 2025-07-16 07:35:15 +12:00
Jesse Hills 18e2f41424 Merge pull request #9518 from esphome/bump-2025.7.0b4
2025.7.0b4
2025-07-16 07:34:42 +12:00
Christian Glombek bd0fe34b14 [ms8607] Fix humidity calc (#9499) 2025-07-16 07:33:49 +12:00
Christian Glombek 6e90feeccf [ms8607] Fix humidity calc (#9499) 2025-07-16 07:33:15 +12:00
Jesse Hills 37982290f7 Bump version to 2025.7.0b4 2025-07-15 23:35:55 +12:00
Jesse Hills 02b7db7311 [component] Fix `is_ready` flag when loop disabled (#9501)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-15 23:35:55 +12:00
Clyde Stubbs 9bc3ff5f53 [core] Don't issue -Wno-volatile for host platform (#9511) 2025-07-15 23:35:55 +12:00
J. Nick Koston 786cb7ded5 Add missing clang-tidy NOLINT comments for ArduinoJson v7 in IDF webserver (#9508) 2025-07-15 23:35:55 +12:00
Keith Burzinski 7f01c25782 [servo] Fix `lerp` (#9507) 2025-07-15 23:35:55 +12:00
Keith Burzinski 321f2f87b0 [opentherm.output] Fix `lerp` (#9506) 2025-07-15 23:35:55 +12:00
Clyde Stubbs 11a051401f [captive_portal] Add test case for libretiny (#9457)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-15 23:35:55 +12:00
J. Nick Koston 6148dd7e41 Fix LibreTiny compilation error by updating ESPAsyncWebServer and dependencies (#9492)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-15 23:35:55 +12:00
skyegecko 42b6939e90 [fan] Do not save state for fan if configured as NO_RESTORE (#9472) 2025-07-15 23:35:55 +12:00
Kevin Ahrendt 35b3f75f7c [json] Bump ArduinoJson library to 7.4.2 (#8857)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-15 23:35:55 +12:00
Clyde Stubbs 78e8001aa8 [online_image] Support byte_order (#9502) 2025-07-15 23:35:55 +12:00
J. Nick Koston 84fc6ff71a Suppress spurious volatile and Python syntax warnings during builds (#9488) 2025-07-15 23:35:55 +12:00
Jesse Hills a896190de5 [repo] Fix issue template config.yml (#9516) 2025-07-15 22:13:18 +12:00
Jesse Hills e599ab1a03 Enable issue tracking (#9515) 2025-07-15 21:55:55 +12:00
Jesse Hills d3342d6a1a [component] Fix `is_ready` flag when loop disabled (#9501)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-15 07:20:18 +00:00
Clyde Stubbs 3f492e3b82 [core] Don't issue -Wno-volatile for host platform (#9511) 2025-07-14 20:59:20 -10:00
J. Nick Koston b959baf3d6 Add missing clang-tidy NOLINT comments for ArduinoJson v7 in IDF webserver (#9508) 2025-07-15 06:26:54 +00:00
J. Nick Koston 63b8a219e6 Include entire platformio.ini in clang-tidy hash calculation (#9509) 2025-07-15 01:26:39 -05:00
Keith Burzinski 84349b6d05 [servo] Fix `lerp` (#9507) 2025-07-15 03:45:38 +00:00
Keith Burzinski 0f15250f12 [opentherm.output] Fix `lerp` (#9506) 2025-07-15 03:43:00 +00:00
Clyde Stubbs c2f7dcfa6d [captive_portal] Add test case for libretiny (#9457)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-14 17:36:07 -10:00
J. Nick Koston 778b586d78 Fix LibreTiny compilation error by updating ESPAsyncWebServer and dependencies (#9492)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-15 02:49:12 +00:00
J. Nick Koston d3d1ba553d Fix blocked CI cancellation caused by always() in clang-tidy workflow (#9503) 2025-07-15 14:17:56 +12:00
skyegecko a572d4eb47 [fan] Do not save state for fan if configured as NO_RESTORE (#9472) 2025-07-15 14:15:47 +12:00
Kevin Ahrendt 9ae45ba8aa [json] Bump ArduinoJson library to 7.4.2 (#8857)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-15 14:11:10 +12:00
Clyde Stubbs 8f58ca3a2a [online_image] Support byte_order (#9502) 2025-07-15 02:09:18 +00:00
J. Nick Koston e3da197adf Remove yamllint job from CI since its now handled by pre-commit job (#9500) 2025-07-15 12:52:03 +12:00
J. Nick Koston b2a8b0a22f Add pre-commit hooks to fix common formatting issues causing CI failures (#9494) 2025-07-15 12:25:18 +12:00
J. Nick Koston 619e2d69c0 Remove redundant pyupgrade CI job (follow-up to #9484) (#9493) 2025-07-15 12:20:05 +12:00
J. Nick Koston f78e71c86a Fix WebServer routes constant naming convention (#9497) 2025-07-14 10:13:24 -10:00
J. Nick Koston f8c45573f3 Refactor WebServer request handling for improved maintainability (#9470) 2025-07-15 07:24:20 +12:00
Jesse Hills e231d334a3 Merge branch 'beta' into dev 2025-07-15 06:39:20 +12:00
J. Nick Koston e7d819a656 Suppress spurious volatile and Python syntax warnings during builds (#9488) 2025-07-14 17:47:52 +10:00
Jesse Hills 16292a9f13 Merge pull request #9483 from esphome/bump-2025.7.0b3
2025.7.0b3
2025-07-14 15:41:59 +12:00
J. Nick Koston 873f4125c5 Fix pre-commit CI issues by switching to lite mode (#9484) 2025-07-13 17:30:34 -10:00
Jesse Hills 90f0ebb22b Dont autofix PR 2025-07-14 14:12:26 +12:00
Jesse Hills 4153380f99 Remove hook that doesnt exist on beta 2025-07-14 13:48:41 +12:00
J. Nick Koston 740c0ef9d7 Fix pre-commit CI failures by skipping local hooks that require virtual environment (#9476) 2025-07-14 13:46:14 +12:00
Jesse Hills b4521e1d8c Bump version to 2025.7.0b3 2025-07-14 13:08:24 +12:00
J. Nick Koston 10ca7ed85b Fix dormant bug in RAMAllocator::reallocate() manual_size calculation (#9482) 2025-07-14 13:08:23 +12:00
J. Nick Koston e43efdaaec Follow logging best practices by removing redundant component prefix (#9481) 2025-07-14 13:08:23 +12:00
Clyde Stubbs 9207bf97f3 [esp_ldo] Component schema; default priority (#9479) 2025-07-14 13:08:23 +12:00
Javier Peletier c13317f807 [substitutions] Fix #7189 (#9469) 2025-07-14 13:08:23 +12:00
J. Nick Koston 77d1d0414d Automatically disable interrupts for ESP8266 GPIO16 binary sensors (#9467) 2025-07-14 13:08:23 +12:00
Peter Zich 8f42bc6aac [lvgl] Post-process size arguments in meter config (#9466)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-07-14 13:08:23 +12:00
Peter Zich 9beb4e2cd4 (Maybe?) fix I2S speaker internal DAC mode (#9435) 2025-07-14 13:08:23 +12:00
Keith Burzinski 097aac2183 [ld2420] Memory optimization, code clean-up (#9426) 2025-07-14 13:08:23 +12:00
J. Nick Koston d31b8ad2e2 Fix dormant bug in RAMAllocator::reallocate() manual_size calculation (#9482) 2025-07-14 00:58:07 +00:00
J. Nick Koston f5c8595a46 Follow logging best practices by removing redundant component prefix (#9481) 2025-07-14 00:41:49 +00:00
J. Nick Koston 02d1894a9f Refactor format_hex_pretty functions to eliminate code duplication (#9480) 2025-07-14 00:32:16 +00:00
Clyde Stubbs fc337aef69 [esp_ldo] Component schema; default priority (#9479) 2025-07-13 23:47:52 +00:00
J. Nick Koston b21c76a6c6 Fix clang-tidy skipping when Python linters are skipped (#9463) 2025-07-14 11:04:14 +12:00
J. Nick Koston 5416cee2c9 Fix pre-commit CI failures by skipping local hooks that require virtual environment (#9476) 2025-07-14 10:44:21 +12:00
Javier Peletier 9e002cd7a3 [substitutions] Fix #7189 (#9469) 2025-07-14 09:58:52 +12:00
dependabot[bot] 9451781915 Bump aioesphomeapi from 34.2.1 to 35.0.1 (#9474)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-13 21:53:04 +00:00
J. Nick Koston 84956b6dc5 Automatically disable interrupts for ESP8266 GPIO16 binary sensors (#9467) 2025-07-13 20:09:55 +12:00
Peter Zich 6f19808eff [lvgl] Post-process size arguments in meter config (#9466)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-07-13 15:43:32 +10:00
Peter Zich cd8e1548bf (Maybe?) fix I2S speaker internal DAC mode (#9435) 2025-07-13 13:22:07 +12:00
Jesse Hills 48d55a70c0 Merge branch 'beta' into dev 2025-07-13 13:18:50 +12:00
Jesse Hills 18787b0be0 Merge pull request #9462 from esphome/bump-2025.7.0b2
2025.7.0b2
2025-07-13 13:18:17 +12:00
Jesse Hills 39e01c42e1 Bump version to 2025.7.0b2 2025-07-13 11:05:14 +12:00
Jonathan Swoboda c760f89e46 [libretiny] Set lib_compat_mode to soft for libretiny (#9439) 2025-07-13 11:05:13 +12:00
Clyde Stubbs 01b4e214b9 [usb_uart] Be flexible about descriptor layout for CDC-ACM devices (#9425) 2025-07-13 11:05:13 +12:00
J. Nick Koston bc7cfeb9cd Only generate protobuf encode/decode methods for the message direction they're used (#9461) 2025-07-13 11:05:13 +12:00
dependabot[bot] 36dd203e74 Bump aioesphomeapi from 34.2.0 to 34.2.1 (#9460)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-13 11:05:13 +12:00
J. Nick Koston 8605994cc6 Apply existing protobuf buffer optimization to nested message encoding (~2.3x speed up) (#9458) 2025-07-13 11:05:13 +12:00
Jonathan Swoboda 80fbe28088 [sx127x, sx126x] Fix preamble_size default and validation (#9454) 2025-07-13 11:05:13 +12:00
Clyde Stubbs 1d9f17a57c [packet_transport] Don't run update if ping_pong not enabled. (#9434) 2025-07-13 11:05:13 +12:00
J. Nick Koston 42947bcf56 Conditionally compile API user services to save 4.3KB flash (follow-up to #9262) (#9451) 2025-07-13 11:05:13 +12:00
J. Nick Koston 3c864b2bca Reduce API flash usage by eliminating unnecessary template instantiations (#9452) 2025-07-13 11:05:13 +12:00
Keith Burzinski 35d88fc0d6 [ld2410] Remove redundant `delay()` calls, minor optimizations (#9453) 2025-07-13 11:05:13 +12:00
J. Nick Koston 7a6894e087 Optimize API proto size calculations by removing redundant force parameter (#9449) 2025-07-13 11:05:13 +12:00
J. Nick Koston 1b222ceca3 Optimize API flash usage by storing message size at compile time (#9447) 2025-07-13 11:05:13 +12:00
Samuel Sieb bab3deee1b [wizard] use lowercase to match (#9448)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-07-13 11:05:13 +12:00
J. Nick Koston ccd30110b1 Fix scheduler crash when cancelling items with NULL names (#9444) 2025-07-13 11:05:13 +12:00
J. Nick Koston 904c7b8a3a Sync api.proto from aioesphomeapi (#9393) 2025-07-13 11:05:13 +12:00
DT-art1 fa262673e4 Replace remaining instances of USE_ESP32_CAMERA with USE_CAMERA (#9401) 2025-07-13 11:05:13 +12:00
Adam Liddell 0ef5f1fd65 Handle ESP32 chunked MQTT messages missing topic on non-first chunks, causing panic (#5786)
Co-authored-by: Samuel Sieb <samuel-github@sieb.net>
2025-07-13 11:05:13 +12:00
J. Nick Koston 23dd2d648e Exclude internal entities from name uniqueness validation (#9410) 2025-07-13 11:05:13 +12:00
@RubenKelevra 5ba493acc3 debug: bufferoverflow mitigation in DebugComponent::on_shutdown() (#9422) 2025-07-13 11:05:12 +12:00
Jonathan Swoboda a5055094d0 [esp32] Set lib_compat_mode to strict (#9408) 2025-07-13 11:05:12 +12:00
Jonathan Swoboda 92d03dd196 [esp32_touch] Fix touch v1 (#9414) 2025-07-13 11:05:12 +12:00
J. Nick Koston bd75f0dfea Fix another race in the string lifetime scheduler test (#9399) 2025-07-13 11:05:12 +12:00
Jonathan Swoboda f4ac951b15 [libretiny] Set lib_compat_mode to soft for libretiny (#9439) 2025-07-13 11:00:38 +12:00
Clyde Stubbs e020110579 [usb_uart] Be flexible about descriptor layout for CDC-ACM devices (#9425) 2025-07-13 10:59:49 +12:00
J. Nick Koston 1fda40f0ce Only generate protobuf encode/decode methods for the message direction they're used (#9461) 2025-07-13 10:58:57 +12:00
dependabot[bot] a5e42e1bd0 Bump aioesphomeapi from 34.2.0 to 34.2.1 (#9460)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-12 10:07:58 -10:00
J. Nick Koston 8863188dd8 Apply existing protobuf buffer optimization to nested message encoding (~2.3x speed up) (#9458) 2025-07-13 06:55:32 +12:00
Jonathan Swoboda 7747a5aa62 [sx127x, sx126x] Fix preamble_size default and validation (#9454) 2025-07-12 17:03:03 +10:00
Clyde Stubbs 32419645ca [packet_transport] Don't run update if ping_pong not enabled. (#9434) 2025-07-12 17:00:52 +10:00
J. Nick Koston 634aa55364 Disable WiFi when using Ethernet to save memory (#9456) 2025-07-12 05:19:53 +00:00
J. Nick Koston dd5ba5a90c Conditionally compile API user services to save 4.3KB flash (follow-up to #9262) (#9451) 2025-07-11 19:08:03 -10:00
dependabot[bot] 0138ef36cf Bump ruff from 0.12.2 to 0.12.3 (#9446)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-12 04:01:54 +00:00
J. Nick Koston ca5ee0ce07 Reduce API flash usage by eliminating unnecessary template instantiations (#9452) 2025-07-12 03:56:08 +00:00
Keith Burzinski 79b5fcf31a [ld2420] Memory optimization, code clean-up (#9426) 2025-07-11 22:33:36 -05:00
Keith Burzinski 2243e44750 [ld2410] Remove redundant `delay()` calls, minor optimizations (#9453) 2025-07-11 22:05:06 -05:00
J. Nick Koston 01f949e097 Optimize API proto size calculations by removing redundant force parameter (#9449) 2025-07-11 21:08:52 -05:00
J. Nick Koston 143bf694c7 Optimize API flash usage by storing message size at compile time (#9447) 2025-07-11 19:38:23 -05:00
Samuel Sieb 983db6215f [wizard] use lowercase to match (#9448)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-07-11 18:35:52 -05:00
J. Nick Koston bef20b60d0 Fix scheduler crash when cancelling items with NULL names (#9444) 2025-07-12 07:11:45 +12:00
J. Nick Koston 475fe60f27 Sync api.proto from aioesphomeapi (#9393) 2025-07-11 08:33:18 -10:00
J. Nick Koston 8953e53a04 CI: Centralize test determination logic to reduce unnecessary job runners (#9432) 2025-07-11 21:54:57 +12:00
DT-art1 143702beef Replace remaining instances of USE_ESP32_CAMERA with USE_CAMERA (#9401) 2025-07-10 20:35:24 +12:00
Adam Liddell 05238b447f Handle ESP32 chunked MQTT messages missing topic on non-first chunks, causing panic (#5786)
Co-authored-by: Samuel Sieb <samuel-github@sieb.net>
2025-07-10 20:34:43 +12:00
J. Nick Koston 0d94246858 Exclude internal entities from name uniqueness validation (#9410) 2025-07-10 20:34:01 +12:00
Samuel Sieb 2be4951ad9 [esp32] remove debug log (#9424) 2025-07-10 08:24:39 +00:00
Clyde Stubbs 16bb81814c [config] Add bitrate validator (#9423) 2025-07-10 04:14:42 +00:00
@RubenKelevra 7d92499e4c debug: bufferoverflow mitigation in DebugComponent::on_shutdown() (#9422) 2025-07-09 17:01:21 -10:00
Jonathan Swoboda a240f0af90 [esp32] Set lib_compat_mode to strict (#9408) 2025-07-10 14:49:36 +12:00
J. Nick Koston fc59c08800 Fix clang-tidy not finding changed files on squash-merge commits (#9421) 2025-07-10 14:37:48 +12:00
J. Nick Koston e2c60f5384 Fix Windows virtual environment activation in CI workflows (#9420) 2025-07-10 14:37:03 +12:00
Andrew Klaus 33d48732aa Adding support for Airthings Wave Gen2 (#8460)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-09 15:50:01 -10:00
J. Nick Koston 9a1edaa4f4 Fix Python cache key mismatch for all pytest jobs (#9417) 2025-07-09 15:21:21 -10:00
J. Nick Koston 926e4fa3e1 Fix Python cache for all pytest CI jobs (#9415) 2025-07-09 14:43:49 -10:00
J. Nick Koston 97dd96b60d Implement shared PlatformIO cache for integration tests (#9413)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-10 12:42:24 +12:00
J. Nick Koston e9c7596e00 Fix clang-tidy triggering full scan on Python-only core file changes (#9412) 2025-07-10 12:41:59 +12:00
J. Nick Koston ff836a8434 Fix PlatformIO cache in CI by adding platformio.ini hash to cache key (#9411) 2025-07-10 12:40:10 +12:00
Jonathan Swoboda 3d9c977826 [esp32_touch] Fix touch v1 (#9414) 2025-07-09 14:18:01 -10:00
J. Nick Koston c1a994b1d9 Fix another race in the string lifetime scheduler test (#9399) 2025-07-10 09:11:42 +12:00
J. Nick Koston 6616567b05 Speed up clang-tidy CI by 80%+ with incremental checking (#9396) 2025-07-10 09:00:44 +12:00
Thomas Rupprecht 0ffc446315 [web_server] fix Arudino typo (#9404) 2025-07-09 04:15:01 -10:00
Jesse Hills a692bd98ef Merge branch 'beta' into dev 2025-07-09 19:34:26 +12:00
Jesse Hills 6178ab7513 Merge pull request #9394 from esphome/bump-2025.7.0b1
2025.7.0b1
2025-07-09 19:33:49 +12:00
Jesse Hills d24e237967 Bump version to 2025.8.0-dev 2025-07-09 12:10:51 +12:00
Jesse Hills 267574f24c Bump version to 2025.7.0b1 2025-07-09 12:06:52 +12:00
dependabot[bot] 5235c80781 Bump aioesphomeapi from 34.1.0 to 34.2.0 (#9391)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-08 23:54:33 +00:00
Merikei 0ccc5e340e [apds9960] Add 0x9E ID (#9392) 2025-07-08 23:52:30 +00:00
Craig Andrews 86c6e4da2a ESP_EXT1_WAKEUP_ANY_LOW is for s2/s3/c6/h2; ESP_EXT1_WAKEUP_ALL_LOW otherwise (#9387)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-09 11:30:06 +12:00
Jesse Hills 5c8b330eaa [esp32] Improve flexibility of `only_on_variant` (#9390) 2025-07-09 10:51:17 +12:00
Petr Kejval 4158a5c2a3 Add support for GL-R01 I2C - Time of Flight sensor (#8329)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-09 10:50:45 +12:00
Jesse Hills 05c5364490 [helpers] Fix `format_hex_pretty` resize without separator (#9389)
Co-authored-by: RubenKelevra <cyrond@gmail.com>
2025-07-08 22:13:21 +00:00
Jesse Hills 78eb236a4a [nfc] Update code to use `format_hex_pretty` (#9384) 2025-07-08 16:47:42 -05:00
Simonas Kazlauskas 691cc5f7dc lps22: add a component (#7540)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-07-09 09:13:58 +12:00
J. Nick Koston b3d7f001af Fix race condition in scheduler string lifetime integration test (#9382) 2025-07-08 06:54:47 -05:00
tmpeh 3f8b691c32 Fix format string error in waveshare_epaper.cpp (#9322)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-08 04:39:07 +00:00
J. Nick Koston a30f01d668 Fix integration test race condition by isolating PlatformIO directories (#9383) 2025-07-08 04:34:39 +00:00
Clyde Stubbs 4648804db6 [image] Add byte order option and unit tests (#9326) 2025-07-08 02:28:00 +00:00
functionpointer 51377b2625 hydreon_rgxx: remove precipitation_intensity from RG9 (#9367) 2025-07-08 14:27:33 +12:00
Jesse Hills 256f9f9943 [helpers] Improve `format_hex_pretty` (#9380) 2025-07-08 01:30:23 +00:00
J. Nick Koston a72905191a Fix flaky test_api_conditional_memory and improve integration test patterns (#9379) 2025-07-08 11:08:21 +12:00
J. Nick Koston 7150f2806f Run integration tests only on Python 3.13 to reduce CI resource usage (#9377) 2025-07-07 22:14:34 +00:00
J. Nick Koston ee8ee4e646 Optimize logger callback API by including message length parameter (#9368)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-07 22:00:03 +00:00
Steffen Arntz fb357b8965 Fix brightness setting not working on SSD1305 128x32 OLEDs (#9376) 2025-07-08 09:25:11 +12:00
Edward Firmo c4fac1a2ae [nextion] Optimize component memory usage with bitfield state management (#9373) 2025-07-08 09:21:14 +12:00
J. Nick Koston 42a1f6922f Eliminate bluetooth_proxy guard variable to save 8 bytes RAM (#9343) 2025-07-08 09:16:48 +12:00
J. Nick Koston 206659ddb8 Refactor voice assistant API methods to reduce code duplication (#9374) 2025-07-08 09:15:49 +12:00
J. Nick Koston 440de12e3f Don't compile unnecessary platform files (e.g. ESP8266 files on ESP32) (#9354) 2025-07-08 09:04:41 +12:00
J. Nick Koston b122112d58 Refactor API entity update dispatch to reduce code duplication (#9372) 2025-07-08 08:51:17 +12:00
J. Nick Koston fe258e1007 Refactor entity lookup methods with macros in preparation for device_id support (#9371) 2025-07-08 08:49:23 +12:00
J. Nick Koston 3976fd02ea Refactor duplicate socket read error handling in API frame helper (#9370) 2025-07-08 08:39:13 +12:00
J. Nick Koston e58c793da2 Replace deprecated sprintf with snprintf in API protobuf code generation (#9365) 2025-07-08 08:38:41 +12:00
J. Nick Koston 90fb3680d4 Optimize logger performance by eliminating redundant strlen calls (#9369) 2025-07-08 08:36:36 +12:00
J. Nick Koston 832a787271 Fix format specifier warnings in QuantileFilter logging (#9364) 2025-07-08 08:35:27 +12:00
J. Nick Koston 29747fc730 Fix flaky test_api_conditional_memory by disabling API batch delay (#9360) 2025-07-08 08:35:11 +12:00
J. Nick Koston e2de6ee29d Reduce core RAM usage by 40 bytes with static initialization optimizations (#9340) 2025-07-08 08:28:14 +12:00
J. Nick Koston 053feb5e3b Optimize entity icon memory usage with USE_ENTITY_ICON flag (#9337) 2025-07-08 08:22:40 +12:00
J. Nick Koston 31f36df4ba Reduce LightCall memory usage by 50 bytes per call (#9333) 2025-07-08 08:20:40 +12:00
J. Nick Koston 3ef392d433 Fix scheduler race conditions and add comprehensive test suite (#9348) 2025-07-08 07:57:55 +12:00
J. Nick Koston 138ff749f3 Optimize Bluetooth proxy batching and increase scan buffer capacity (#9328) 2025-07-08 07:34:12 +12:00
Edward Firmo e88b8d10ec [nextion] Add optional device info storage configuration (#9366) 2025-07-07 12:04:01 -05:00
Jesse Hills 8147d117a0 [core] Move platform helper implementations into their own file (#9361) 2025-07-07 15:55:02 +00:00
Edward Firmo c6f7e84256 [nextion] Review touch_sleep_timeout (#9345) 2025-07-07 07:30:34 -05:00
Keith Burzinski db877e688a [ld2450] Clean-up for consistency, reduce CPU usage when idle (#9363) 2025-07-07 07:22:49 -05:00
Edward Firmo 4e25b6da7b [nextion] Optimize settings memory usage with compile-time defines (#9350)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-07 09:15:13 +00:00
Jonathan Swoboda 83512b88c4 [sx126x] Add sx126x component (#8516)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-07-07 05:41:23 +00:00
Jesse Hills fde5f88192 [inkplate6] Require 240mhz cpu frequency (#9356) 2025-07-06 23:36:34 -05:00
Edward Firmo 2510b5ffb5 [nextion] Replace boolean flags with bitfields to optimize memory usage (#9359) 2025-07-07 04:07:03 +00:00
Keith Burzinski 364b6ca8d0 [scd4x] Memory optimization (#9358) 2025-07-07 03:54:19 +00:00
DT-art1 e49b89a051 Introduce base Camera class to support alternative camera implementations (#9285)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-07-07 15:45:00 +12:00
Jonathan Swoboda bdd52dbaa4 [sx127x] Fix shaping print in dump_config and preallocate packet (#9357) 2025-07-06 22:41:47 -05:00
J. Nick Koston 765793505d Use std::span to eliminate heap allocation for single-packet API transmissions (#9313) 2025-07-07 14:53:23 +12:00
J. Nick Koston a303f93236 Fix bluetooth proxy busy loop when disconnecting pending BLE connections (#9332) 2025-07-07 14:50:36 +12:00
J. Nick Koston 492580edc3 Split LockFreeQueue into base and notifying variants to reduce memory usage (#9330) 2025-07-07 14:50:14 +12:00
Jan-Henrik Bruhn 1368139f4d [update, http_request_update] Implement update available trigger (#9174) 2025-07-07 12:36:09 +12:00
J. Nick Koston b6fade7339 Fix defer() thread safety issues on multi-core platforms (#9317)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-07 10:01:51 +12:00
Jonathan Swoboda 8da322fe9e [sx127x] Improve error handling (#9351) 2025-07-06 18:04:43 +00:00
Keith Burzinski e5a699a004 [ld2410] Reduce RAM usage, general clean-up (#9346) 2025-07-06 09:16:30 -05:00
Keith Burzinski e061b6dc55 [scd4x] Optimize logging + minor code clean-up (#9347) 2025-07-06 08:37:50 -05:00
J. Nick Koston 4673a5b48c Eliminate web_server_idf guard variable to save 8 bytes RAM (#9344) 2025-07-06 05:06:32 -05:00
J. Nick Koston 0bc18a8281 Eliminate API component guard variable to save 8 bytes RAM (#9341) 2025-07-05 23:34:55 -05:00
J. Nick Koston 20ba035e3b Reduce RAM usage by optimizing Color constant storage (#9339) 2025-07-05 22:30:18 -05:00
Edward Firmo f7019a4ed7 [nextion] Memory optimization (#9338) 2025-07-05 21:56:53 -05:00
J. Nick Koston a1291c2730 [ld2450] Reduce CPU usage, eliminate redundant sensor updates (#9334) 2025-07-05 21:48:58 -05:00
Adrian Freund b0f8922056 Mark ESPTime comparison operators as const (#9335) 2025-07-05 22:00:39 +00:00
Thomas Rupprecht 4e9e48e2e7 [rtttl] trim extraneous whitespace in "ac_dimmer" in "PWM_BAD" list (#9318) 2025-07-05 01:23:24 -05:00
J. Nick Koston 86e7013f40 Add const char overload for Component::defer() (#9324) 2025-07-04 21:52:12 -05:00
dependabot[bot] 58b4e7dab2 Bump puremagic from 1.29 to 1.30 (#9320) 2025-07-04 20:54:46 +00:00
J. Nick Koston d686257cff Fix web_server busy loop with ungracefully disconnected clients (#9312)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-04 02:07:25 +00:00
Big Mike adb7ccdbc7 Fix compiler warning in tsl2591 component (#9310) 2025-07-04 13:00:50 +12:00
J. Nick Koston d00e20ccdf Reduce web_server loop overhead on ESP32 by avoiding unnecessary semaphore operations (#9308) 2025-07-04 12:53:14 +12:00
J. Nick Koston 25457da97c Fix web_server URL parsing lifetime issue (#9309) 2025-07-04 12:33:19 +12:00
J. Nick Koston 14d7c4bdbd Add device_id to entity state messages for sub-device support (#9304) 2025-07-04 12:31:03 +12:00
dependabot[bot] eef71a79da Bump ruff from 0.12.1 to 0.12.2 (#9311)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-07-03 21:49:51 +00:00
Kevin Ahrendt 547c7d6dc8 [microphone] simplify mute handling to avoid unnecessary copies (#9303) 2025-07-03 11:17:01 -05:00
Jonathan Swoboda 1ef7b2d64f [sx127x] Add sx127x component (#7490)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2025-07-03 10:37:18 -05:00
dependabot[bot] 107304b274 Bump aioesphomeapi from 34.0.0 to 34.1.0 (#9301)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-03 14:08:04 +00:00
Sergey Dudanov b2b6f41ef3 Packages: optional base path for remote git packages (#9279)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-03 19:11:40 +12:00
J. Nick Koston 34db02661c Allow disabling API batch delay for real-time state updates (#9298) 2025-07-02 21:50:53 -05:00
DanielV 798eef41b9 [Packet transport] Ping timeout sensor (#8694) 2025-07-03 11:25:46 +10:00
Jesse Hills 658e4bac47 Merge branch 'release' into dev 2025-07-03 13:07:58 +12:00
Jesse Hills f5aab154a6 Merge pull request #9299 from esphome/bump-2025.6.3
2025.6.3
2025-07-03 13:07:17 +12:00
J. Nick Koston 5b55e205ef Save flash and RAM by conditionally compiling unused API password code (#9297) 2025-07-03 09:42:08 +12:00
J. Nick Koston 4ef5c941c9 Fix missing ifdef guards in API protobuf generator (#9296) 2025-07-03 09:39:20 +12:00
Mariusz Kryński b9391f2cd4 [ds2484] New component (#9147) 2025-07-03 09:15:37 +12:00
Jesse Hills 66e090ff5b Bump version to 2025.6.3 2025-07-03 08:27:46 +12:00
Craig Andrews d41298897f [http_request] allow retrieval of more than just the first header (#9242) 2025-07-03 08:27:46 +12:00
J. Nick Koston ba42de536c Fix crash when event last_event_type is null in web_server (#9266) 2025-07-03 08:27:46 +12:00
Jesse Hills bdc9f5f3b2 Fix api log client crashing when api encryption is dynamic (#9245) 2025-07-03 08:27:46 +12:00
Rezoran 90f9ab0d3e [uart] fix: missing uart_config_t struct initialisation (#9235) 2025-07-03 08:27:46 +12:00
Clyde Stubbs 00eb56d8db [esp32_touch] Fix threshold (#9291)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-02 09:08:10 -05:00
tomaszduda23 60eac6ea07 [time] fix clang-tidy (#9292) 2025-07-02 14:02:56 +00:00
Jesse Hills 9b3ece4caf [time] Add `USE_TIME_TIMEZONE` define (#9290) 2025-07-02 08:51:25 -05:00
Colm 289aedcfe2 Don't compile state_to_string() unless debugging. (#7473) 2025-07-03 00:23:37 +12:00
rwrozelle 4cdc804c17 OpenThread - add Device Type (#9272)
Co-authored-by: mc <mc@debian>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-03 00:16:28 +12:00
mrtntome 56a963dfe6 [heatpumpir] Add Support for PHS32 HeatPump (#7378)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-03 00:05:54 +12:00
Aleksey Zinchenko f6f0e52d5e [core] Deleting CMakeCache.txt for fast recompilation with ESP-IDF (#8750) 2025-07-02 17:37:31 +10:00
J. Nick Koston eba2c82fec Use encode_bytes() for protobuf bytes fields (#9289) 2025-07-02 04:36:09 +00:00
Edward Firmo fae96e279c [nextion] memory optimization (#9164)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-02 03:25:06 +00:00
JonasB2497 2fb23becec made qr_code elements optional (#8896) 2025-07-02 14:56:48 +12:00
Jeremy Brown 095acce3e2 Mmc5603 fix for devices that don't retrieve chip_id (#8959)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-02 02:48:42 +00:00
Craig Andrews 5fa9d22c5d [http_request] allow retrieval of more than just the first header (#9242) 2025-07-02 14:17:34 +12:00
George 785b14ac84 pulse_meter total (#9282) 2025-07-02 14:14:16 +12:00
J. Nick Koston 84ab758b22 Replace custom OTA implementation in web_server_base (#9274)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-02 13:50:45 +12:00
J. Nick Koston 03566c34ed Reduce Component memory usage by 40% (8 bytes per component) (#9278) 2025-07-02 13:43:40 +12:00
Jesse Hills 6a096c1d5a [api] Dump bytes fields as hex instead of unreadable string (#9288) 2025-07-02 13:36:15 +12:00
Jonathan Swoboda 04a46de237 [esp32_rmt_led_strip] Reduce memory usage by 32x with IDF 5.3 (#8388) 2025-07-02 11:40:39 +12:00
J. Nick Koston 0083abe3b5 Fix regression: BK7231N devices not returning entities via API (#9283) 2025-07-02 11:30:03 +12:00
Jonathan Swoboda 3470305d9d [esp32] Remove IDF 4 support and clean up code (#9145) 2025-07-01 16:22:41 +00:00
Javier Peletier 35de36d690 [modbus] Modbus server role: write holding registers (#9156) 2025-07-01 15:39:06 +12:00
J. Nick Koston 16ef5a9377 Add OTA support to ESP-IDF webserver (#9264) 2025-07-01 15:21:11 +12:00
J. Nick Koston e3ccb9b46c Use interrupt based approach for esp32_touch (#9059)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-07-01 15:04:50 +12:00
Javier Peletier 8c34b72b62 Jinja expressions in configs (Take #3) (#8955) 2025-07-01 14:57:00 +12:00
Jesse Hills 27c745d5a1 [host] Disable platformio ldf (#9277) 2025-07-01 14:38:39 +12:00
J. Nick Koston 9a0ba1657e Fix entity hash collisions by enforcing unique names across devices per platform (#9276) 2025-07-01 14:38:19 +12:00
Mathieu Rene db7a420e54 Fix - Pass thread TLVs down to openthread if they are defined (#9182)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-01 10:07:30 +12:00
Jonathan Swoboda e58baab563 [ethernet] P4 changes and 5.3.0 deprecated warnings (#8457)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-07-01 10:06:59 +12:00
piechade 08c88ba0f2 [smt100] Rename `dielectric_constant to permittivity` (#9175)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-30 20:54:23 +00:00
Jesse Hills 78c8cd4c4e [http_request.update] Fix `size_t` printing (#9144) 2025-06-30 15:50:19 -05:00
Jesse Hills 98e106e0ae [pins] Update `internal_gpio_pin_number to work directly like internal_gpio_output_pin_number` (#9270) 2025-07-01 08:09:11 +12:00
J. Nick Koston 0cbb5e6c1c Fix flaky test_api_conditional_memory by waiting for all required states (#9271) 2025-07-01 08:02:43 +12:00
David Woodhouse 8014cbc71e Fixes for async MQTT (#9273) 2025-06-30 13:25:54 -05:00
J. Nick Koston aaa7117ec9 Update libsodium to 1.0.20 (#9240)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-30 20:47:04 +12:00
Keith Burzinski 3930609d8b [ld2420] Move consts to cpp file, optimize memory use (#9216) 2025-06-30 01:05:59 -05:00
Gábor Poczkodi 3e553f517b [remote_base] Fix dumper base class and enable schema extension (#9218) 2025-06-30 17:12:44 +12:00
Keith Burzinski af0bb634c6 [light] Fix transitions with `lerp` (#9269) 2025-06-30 05:05:52 +00:00
Bjørn Mork 8a9769d4e9 Support DM9051 SPI ethernet device (#6861)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-30 16:49:38 +12:00
lamauny d86f319d66 Add support for LN882X Family (with LibreTiny) (#8954)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-30 16:20:36 +12:00
J. Nick Koston 9890659f61 Optimize web_server UrlMatch to avoid heap allocations (#9263) 2025-06-30 04:12:03 +00:00
J. Nick Koston 140ca070a2 Optimize scheduler string storage to eliminate heap allocations (#9251)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-30 15:40:36 +12:00
J. Nick Koston 6a354d7c94 Reduce API component memory usage with conditional compilation (#9262) 2025-06-30 15:33:35 +12:00
J. Nick Koston 7f8dd4b254 Fix thread-safe cleanup of event source connections in ESP-IDF web server (#9268) 2025-06-29 19:19:18 -05:00
J. Nick Koston 0b1b8f05e1 Reduce loop enable/disable log spam by using very verbose level (#9267) 2025-06-30 11:49:31 +12:00
Jesse Hills 53e9ffe656 [pi4ioe5v6408] Add new IO Expander (#8888)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-06-30 11:48:19 +12:00
J. Nick Koston 2289073a1e Add interrupt support to GPIO binary sensors (#9115)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-30 11:47:50 +12:00
J. Nick Koston 687cb1cd2b Reduce web_server RAM usage by 96 bytes with conditional sorting compilation (#9227) 2025-06-30 11:47:20 +12:00
J. Nick Koston e907050a17 Remove unused return value from read_message and fix ifdef placement in generated API code (#9256) 2025-06-30 11:45:03 +12:00
J. Nick Koston a4b57c7e44 Reduce flash usage by making add_message_object non-template (#9258) 2025-06-30 11:43:47 +12:00
J. Nick Koston 24bbfcdce7 Reduce API memory footprint through bitfield consolidation and type sizing (#9252) 2025-06-30 11:42:57 +12:00
J. Nick Koston d78b720350 Remove single-use send_*_info wrappers in API connection (#9255) 2025-06-30 11:38:11 +12:00
J. Nick Koston d592208c74 Fix crash when event last_event_type is null in web_server (#9266) 2025-06-29 22:45:41 +00:00
David Woodhouse 971bbd088c Fix MQTT blocking main loop for multiple seconds at a time (#8325)
Co-authored-by: patagona <patagonahn@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-06-30 08:34:59 +12:00
Jesse Hills b743577ebe Fix api log client crashing when api encryption is dynamic (#9245) 2025-06-30 08:07:29 +12:00
dependabot[bot] a4cc6166a0 Bump aioesphomeapi from 33.1.1 to 34.0.0 (#9265)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-29 14:20:52 -05:00
J. Nick Koston ed9850c4a4 Remove redundant get_setup_priority() overrides returning default value (#9253) 2025-06-29 13:46:28 -05:00
J. Nick Koston ddbcf8549c Reduce web_server code duplication by extracting detail parameter parsing (#9257) 2025-06-29 13:29:18 -05:00
Rezoran 921d0888cd [uart] fix: missing uart_config_t struct initialisation (#9235) 2025-06-29 15:05:23 +00:00
Keith Burzinski 21e1f3d103 [light] Memory optimizations (#9260) 2025-06-29 11:28:51 +00:00
Keith Burzinski 53ab016098 [adc] Memory optimizations (#9247) 2025-06-29 06:17:53 -05:00
Keith Burzinski 0c249a7006 [thermostat] Memory optimizations (#9259) 2025-06-29 06:16:34 -05:00
J. Nick Koston 86c0fb48a3 Replace ping retry timer with batch queue fallback (#9207) 2025-06-29 09:08:30 +12:00
J. Nick Koston 3f1f99cf37 Extract lock-free queue and event pool to core helpers (#9238) 2025-06-29 08:08:33 +12:00
J. Nick Koston 13d4823db6 Fix buffer corruption in API message encoding with very verbose logging (#9249) 2025-06-29 08:04:42 +12:00
Jimmy Hedman 30f61b26ff Remove backports of std (#9246) 2025-06-29 07:56:12 +12:00
dependabot[bot] 58b7d0b412 Bump ruff from 0.12.0 to 0.12.1 (#9241)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-06-28 10:21:53 +00:00
Jonathan Swoboda d37f5b87bd [esp32] Allow 5.4.2 (#9243) 2025-06-28 01:30:59 -05:00
J. Nick Koston 3f65cee17c Silence protobuf compatibility warnings when importing aioesphomeapi (#9236) 2025-06-28 16:59:52 +12:00
J. Nick Koston 094bf19ec4 Disable dynamic log level control for ESP32 ESP-IDF builds (#9233) 2025-06-28 16:58:53 +12:00
J. Nick Koston f8d59b5aeb Reduce libretiny logconfig messages (#9239) 2025-06-28 15:53:40 +12:00
Jesse Hills e9870c2922 Merge branch 'release' into dev 2025-06-28 15:48:11 +12:00
Jesse Hills 50b7349fe0 Merge pull request #9234 from esphome/bump-2025.6.2
2025.6.2
2025-06-28 15:47:02 +12:00
Jonathan Swoboda 61b3379f48 [i2c] Disable i2c scan on certain idf versions (#9237) 2025-06-28 13:33:05 +12:00
Samuel Sieb 5010a0f5e7 [mcp23xxx_base] fix pin interrupts (#9244)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-06-28 13:32:57 +12:00
Jonathan Swoboda 52ca8deb10 [i2c] Disable i2c scan on certain idf versions (#9237) 2025-06-28 13:32:18 +12:00
Samuel Sieb 156a9160ba [mcp23xxx_base] fix pin interrupts (#9244)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-06-28 13:31:23 +12:00
Jimmy Hedman 68d66c873e Upgrade to use C++20 (#9135)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-06-27 17:31:50 +00:00
Jesse Hills 948aa13fb9 Bump version to 2025.6.2 2025-06-27 23:16:13 +12:00
scaiper 9e993ac603 [esp32] Change `enable_lwip_mdns_queries default to True` (#9188) 2025-06-27 23:16:12 +12:00
Kevin Ahrendt 9f3f4ead4f [voice_assistant] Support streaming TTS responses and fixes crash for long responses (#9224) 2025-06-27 23:16:12 +12:00
Kevin Ahrendt 068aa0ff1e [speaker] bugfix: continue to block tasks if stop flag is set (#9222) 2025-06-27 23:16:12 +12:00
Kevin Ahrendt e146c0796a [audio] Bugfix: improve timeout handling (#9221) 2025-06-27 23:16:12 +12:00
Clyde Stubbs cceab26bfb [lvgl] Fix dangling pointer issue with qrcode (#9190) 2025-06-27 23:16:12 +12:00
scaiper c0b1f32889 [esp32] Change `enable_lwip_mdns_queries default to True` (#9188) 2025-06-27 22:43:18 +12:00
J. Nick Koston 837dd46adf Reduce component_iterator memory usage (#9205) 2025-06-27 01:56:54 -05:00
J. Nick Koston 13512440ac [gpio] Reduce ESP32 memory usage by optimizing struct padding (#9230) 2025-06-27 01:53:40 -05:00
J. Nick Koston 7931423e8c Reduce ethernet component memory usage by 8 bytes (#9231) 2025-06-27 01:52:12 -05:00
J. Nick Koston 62f28902c5 [wifi] Reduce memory usage (#9232) 2025-06-27 01:50:26 -05:00
Jonathan Swoboda 1f94e4cc14 [esp32] Update IDF components to use the registry (#9223) 2025-06-27 03:37:30 +00:00
Thomas Rupprecht 61dfd5541f use c++17 [[fallthrough]]; (#9149) 2025-06-27 02:40:42 +00:00
Jonathan Swoboda 87321ce10b [esp32_hosted] Add support for remote wifi (#8833)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-27 11:51:13 +12:00
J. Nick Koston 4f5aacdb3a Optimize SafeModeComponent memory layout to reduce padding (#9228) 2025-06-27 01:25:26 +02:00
Kevin Ahrendt b182f2d544 [voice_assistant] Support streaming TTS responses and fixes crash for long responses (#9224) 2025-06-27 07:18:51 +12:00
Kevin Ahrendt 4fac8e9cd5 [speaker] bugfix: continue to block tasks if stop flag is set (#9222) 2025-06-27 07:12:58 +12:00
Kevin Ahrendt d94896c0fb [audio] Bugfix: improve timeout handling (#9221) 2025-06-27 07:11:50 +12:00
Jesse Hills 15c5dd222f [tests] Remove extra newline (#9213) 2025-06-26 11:21:19 +00:00
Keith Burzinski 2930c8e9a8 [ld2450] Move consts to cpp file, optimize memory use (#9215) 2025-06-26 04:37:27 -05:00
Keith Burzinski b12b9b97f4 [ld2410] More optimizations (#9209)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-06-26 04:04:38 -05:00
Jesse Hills 09e5aa6011 [script] Add exec bit to run-in-env (#9212) 2025-06-26 00:59:16 -05:00
Jesse Hills 9549304007 [ci] Lint lock.yml (#9214) 2025-06-26 17:44:02 +12:00
Keith Burzinski f7ac32ceda [ld2450] More optimizing, fix copypasta (#9210) 2025-06-26 00:35:30 -05:00
Jonathan Swoboda 92365f133d [esp32] Improve and simplify IDF component support (#9163) 2025-06-26 17:29:42 +12:00
Jesse Hills 9daa9a6de8 Use shared workflow for locking (#9211) 2025-06-26 16:21:51 +12:00
J. Nick Koston 23b1e428de Optimize Application class memory layout and reduce loop_interval size (#9208) 2025-06-26 15:35:01 +12:00
J. Nick Koston f029f4f20e Fix missing protobuf message dump for batched messages with very verbose logging (#9206) 2025-06-26 13:57:41 +12:00
J. Nick Koston 79e3d2b2d7 Optimize API connection memory with tagged pointers (#9203) 2025-06-26 13:55:12 +12:00
J. Nick Koston c74e5e0f04 Optimize TemplatableValue memory (#9202) 2025-06-26 13:51:51 +12:00
J. Nick Koston 15ef93ccc9 Optimize API connection loop performance (#9184) 2025-06-26 13:47:41 +12:00
J. Nick Koston e017250445 Reduce logger CPU usage by disabling loop when buffer is empty (#9160)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-26 13:44:07 +12:00
J. Nick Koston 17497eec43 Reduce memory required for sensor entities (#9201)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-25 18:15:59 -05:00
Clyde Stubbs 6d0c6329ad [lvgl] Allow linear positioning of grid cells (#9196) 2025-06-26 10:45:14 +12:00
Clyde Stubbs f35be6b5cc [binary_sensor] Add timeout filter (#9198) 2025-06-25 14:09:43 +02:00
DanielV b18ff48b4a [API] Sub devices and areas (#8544)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-06-25 12:03:41 +00:00
Artem Draft 7c28134214 Rename kVARh/VARh to kvarh/varh (#9191) 2025-06-25 22:36:24 +12:00
Rodrigo Martín 16860e8a30 fix(MQTT): Call disconnect callback on DNS error (#9016)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-25 22:20:29 +12:00
Jonathan Swoboda 5362d1a89f [esp32_hall] Add dummy component (#9125)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-25 21:49:31 +12:00
Keith Burzinski 5531296ee0 [ld2410] Use `App.get_loop_component_start_time()`, shorten log messages (#9194)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-06-25 21:48:32 +12:00
Keith Burzinski 47db5e26f3 [ld2420] Shorten log messages + other clean-up (#9200) 2025-06-25 03:16:05 -05:00
Keith Burzinski cf5197b68a [ld2450] Use `App.get_loop_component_start_time()`, shorten log messages (#9192) 2025-06-25 03:15:50 -05:00
Keith Burzinski 9f831e91b3 [helpers] Add `format_mac_address_pretty` function, migrate components (#9193) 2025-06-25 12:36:33 +12:00
Javier Peletier 2df0ebd895 [modbus_controller] Fix modbus read_lambda precision for non-floats or large integers (#9159) 2025-06-25 11:31:23 +12:00
Jesse Hills 7ad6dab383 [mqtt] Don't wait for connection unless configured to (#8933) 2025-06-24 13:31:38 +12:00
Clyde Stubbs 612c8d5841 [lvgl] Fix dangling pointer issue with qrcode (#9190) 2025-06-24 09:43:40 +10:00
Cody Cutrer a35e476be5 [opt3001] New component (#6625)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-06-23 14:31:20 -05:00
Jesse Hills 87a7157fc4 Merge branch 'release' into dev 2025-06-24 07:28:40 +12:00
Jesse Hills fa34adbf6c Merge pull request #9185 from esphome/bump-2025.6.1
2025.6.1
2025-06-24 07:27:59 +12:00
dependabot[bot] ac942e0670 Bump aioesphomeapi from 33.1.0 to 33.1.1 (#9187) 2025-06-23 19:58:32 +02:00
Jesse Hills 22e360d479 Bump version to 2025.6.1 2025-06-23 23:32:22 +12:00
myhomeiot 649936200e Restore access to BLEScanResult as get_scan_result (#9148) 2025-06-23 23:32:22 +12:00
rwrozelle 5d6e690c12 Fixes for setup of OpenThread either using TLV or entering Credentials directly (#9157)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-23 23:32:22 +12:00
Jesse Hills 2f2ecadae7 [config validation] Add more ip address / network validators (#9181) 2025-06-23 23:32:22 +12:00
J. Nick Koston 6dfb9eba61 Fix missing BLE GAP events causing RSSI sensor and beacon failures (#9138) 2025-06-23 23:32:22 +12:00
Edward Firmo 24587fe875 [nextion] Fix command spacing double timing and response blocking issues (#9134) 2025-06-23 23:32:22 +12:00
J. Nick Koston a1aebe6a2c Eliminate memory fragmentation with BLE event pool (#9101) 2025-06-23 23:32:22 +12:00
Gustavo Ambrozio 2ad266582f [online_image] Allow suppressing update on url change (#8885) 2025-06-23 20:40:07 +10:00
JonasB2497 1a47164876 Feature fontmetrics (#8978) 2025-06-23 14:47:47 +10:00
myhomeiot cd22723623 Restore access to BLEScanResult as get_scan_result (#9148) 2025-06-23 15:42:20 +12:00
rwrozelle aecaffa2f5 Fixes for setup of OpenThread either using TLV or entering Credentials directly (#9157)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-23 15:41:29 +12:00
Jesse Hills 87df3596a2 [config validation] Add more ip address / network validators (#9181) 2025-06-23 15:41:06 +12:00
Clyde Stubbs 41c7852128 [lvgl] Use styles instead of object properties for themes (#9116) 2025-06-23 14:25:26 +12:00
Clyde Stubbs 78ec9856fb [lvgl] Add start_value to bar; make values templatable and updateable (#9056) 2025-06-23 14:23:41 +12:00
J. Nick Koston 2a45467bf6 Pre-reserve looping components vector to reduce memory allocations (#9177) 2025-06-23 14:10:09 +12:00
J. Nick Koston 7fc5bfd787 Reduce RAM usage for scheduled tasks (#9180) 2025-06-23 14:09:34 +12:00
J. Nick Koston 04f592ba6d Fix slow noise handshake by reading multiple messages per loop (#9130) 2025-06-23 14:07:53 +12:00
J. Nick Koston 59889a6286 Reduce Logger memory usage by optimizing variable sizes (#9161) 2025-06-23 14:06:02 +12:00
Jesse Hills dc5cbd4df8 [const] Move `CONF_DEVICES to const.py` (#9179) 2025-06-23 09:54:49 +12:00
Edward Firmo 7ab9083d77 [nextion] Revert to millis() on recv_ret_string_ (#9168) 2025-06-22 20:56:50 +00:00
dependabot[bot] 788803d588 Bump flake8 from 7.2.0 to 7.3.0 (#9172)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-06-22 19:05:54 +00:00
dependabot[bot] cbfd904b9f Bump aioesphomeapi from 32.2.4 to 33.1.0 (#9173)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-22 11:00:42 +00:00
Jimmy Hedman c81dbf9d59 Improve on C++17 (#9170) 2025-06-22 12:09:38 +02:00
dependabot[bot] ac9c608542 Bump esptool from 4.8.1 to 4.9.0 (#9158) 2025-06-21 18:13:07 +02:00
Edward Firmo a6c20853ca [nextion] Extract common upload_end_ function to shared file (#9155) 2025-06-21 11:26:14 +02:00
Jesse Hills 4ef0264ed3 Clean up RAMAllocators in light related code (#9142) 2025-06-21 17:32:24 +10:00
Clyde Stubbs 169db9cc0a [spi] Enable >6 devices with ESP-IDF (#9128) 2025-06-21 07:55:08 +10:00
RoganDawes b693b8ccb1 [usb-host] Add support for USB Hubs (#9154) 2025-06-20 22:03:15 +10:00
Keith Burzinski 3e98cceb00 [bh1750] Remove redundant platform name from logging (#9153) 2025-06-20 12:33:46 +02:00
Keith Burzinski 46d962dcf1 [wifi, wifi_info] Tidy up/shorten more log messages (#9151) 2025-06-20 22:02:36 +12:00
Edward Firmo 7dbad42470 [nextion] Cached timing optimization (#9150)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-06-20 07:46:12 +00:00
Edward Firmo eb97781f68 [nextion] Add command queuing to prevent command loss when spacing is active (#9139)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-20 01:38:40 -05:00
Jesse Hills 4d0f8528d2 [esp32_camera] Allow sharing i2c bus (#9137)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-06-19 01:31:19 -05:00
Jesse Hills 2c17b2bacc [i2c] Make `get_port()` public (#9146) 2025-06-19 05:44:33 +00:00
Jesse Hills 30bea20f7a Clean up RAMAllocators in display related code (#9141) 2025-06-19 05:17:08 +00:00
Jesse Hills d4cb4ef994 Clean up RAMAllocators in http_request code (#9143) 2025-06-19 03:11:18 +00:00
J. Nick Koston 9c90ca297a Fix missing BLE GAP events causing RSSI sensor and beacon failures (#9138) 2025-06-19 03:03:09 +00:00
Jesse Hills a9e1a4cef3 Clean up RAMAllocators in audio related code (#9140) 2025-06-19 02:53:54 +00:00
J. Nick Koston 0ce3621ac0 Disable Ethernet loop polling when connected and stable (#9102) 2025-06-19 14:49:31 +12:00
Jesse Hills d527398dae [i2c] Expose internal i2c bus port number (#9136) 2025-06-18 20:50:47 -05:00
Edward Firmo 2e9ac8945d [nextion] Fix command spacing double timing and response blocking issues (#9134) 2025-06-19 13:41:20 +12:00
J. Nick Koston 40a5638005 Optimize OTA loop to avoid unnecessary stack allocations (#9129) 2025-06-19 13:33:00 +12:00
J. Nick Koston 8ba22183b9 Add enable_loop_soon_any_context() for thread and ISR-safe loop enabling (#9127) 2025-06-19 13:30:41 +12:00
J. Nick Koston 2e11e66db4 Optimize bluetooth_proxy memory usage on ESP32 (#9114)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-19 13:11:13 +12:00
J. Nick Koston eeb0710ad4 Optimize API component memory usage by reordering class members to reduce padding (#9111) 2025-06-19 13:08:25 +12:00
J. Nick Koston 43c677ef37 Optimize API server performance by using cached loop time (#9104) 2025-06-19 12:12:14 +12:00
J. Nick Koston 95544e489d Use smaller atomic types for ESP32 BLE Tracker ring buffer indices (#9106) 2025-06-19 12:10:50 +12:00
J. Nick Koston a08d021f77 Reduce code duplication in auto-generated API protocol code (#9097) 2025-06-19 12:10:01 +12:00
J. Nick Koston b7b1d17ecb Remove empty generated protobuf methods (#9098) 2025-06-19 12:06:39 +12:00
Jonathan Swoboda aa180b9581 Bump ESP32 Arduino version to 3.1.3 (#8604)
Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
2025-06-19 08:16:25 +12:00
dependabot[bot] 57388254c4 Bump pytest from 8.4.0 to 8.4.1 (#9131)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 19:56:26 +00:00
dependabot[bot] f16f4e2c4c Bump aioesphomeapi from 32.2.3 to 32.2.4 (#9132)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 19:55:59 +00:00
dependabot[bot] 89b70e4352 Bump docker/setup-buildx-action from 3.11.0 to 3.11.1 in the docker-actions group (#9133)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 21:37:21 +02:00
J. Nick Koston 6667336bd8 Eliminate memory fragmentation with BLE event pool (#9101) 2025-06-18 21:57:49 +12:00
Kuba Szczodrzyński 669ef7a0b1 [web_server] Upgrade ESPAsync libraries (#8867) 2025-06-18 21:51:00 +12:00
Severin von Wnuck-Lipinski c612985930 Add support for Xiaomi XMWSDJ04MMC (#8591) 2025-06-18 21:49:39 +12:00
J. Nick Koston 2e534ce41e Reduce CPU overhead by allowing components to disable their loop() (#9089) 2025-06-18 21:49:25 +12:00
Jesse Hills fedb54bb38 Merge branch 'release' into dev 2025-06-18 21:41:59 +12:00
Jesse Hills 68f5144084 Merge pull request #9126 from esphome/bump-2025.6.0
2025.6.0
2025-06-18 21:41:00 +12:00
Jonathan Swoboda fd3c22945b [i2s_audio] Bump esphome/ESP32-audioI2S to 2.3.0 (#9124) 2025-06-18 04:18:23 +00:00
Jonathan Swoboda 53496a1ecd [heatpumpir] Bump HeatpumpIR to 1.0.35 (#9123) 2025-06-18 04:15:26 +00:00
Michael Hansen da5cf99549 Add intent progress event to voice assistant enum (#9103) 2025-06-18 15:15:37 +12:00
Jesse Hills 849c858495 Bump version to 2025.6.0 2025-06-18 14:16:24 +12:00
Jesse Hills 808f964841 Merge branch 'beta' into dev 2025-06-18 12:37:57 +12:00
Jesse Hills 16a0f9db97 Merge pull request #9122 from esphome/bump-2025.6.0b3
2025.6.0b3
2025-06-18 12:37:25 +12:00
J. Nick Koston 3bc5db4fd7 Bump ruff in pre-commit to 0.12.0 (#9121) 2025-06-18 10:54:45 +12:00
Jesse Hills 5269523ca1 Bump version to 2025.6.0b3 2025-06-18 10:17:56 +12:00
J. Nick Koston 89267b9e06 Reduce Switch component memory usage by 8 bytes per instance (#9112) 2025-06-18 10:09:11 +12:00
J. Nick Koston 4bc9646e8f Optimize LightState memory layout (#9113) 2025-06-18 10:09:11 +12:00
Clyde Stubbs fd83628c49 [spi] Cater for non-word-aligned buffers on esp8266 (#9108) 2025-06-18 10:09:11 +12:00
Kevin Ahrendt 62abfbec9e [i2s_audio] Bugfix: crashes when unlocking i2s bus multiple times (#9100) 2025-06-18 10:09:11 +12:00
Keith Burzinski 7cc0008837 [i2s_audio] Add `dump_config` methods, shorten log messages (#9099) 2025-06-18 10:09:11 +12:00
dependabot[bot] 0bf613bd34 Bump ruff from 0.11.13 to 0.12.0 (#9120)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 00:08:22 +02:00
Jonathan Swoboda 43ab63455b Pin libretiny to 1.9.1 (#9118) 2025-06-17 22:42:36 +02:00
J. Nick Koston 47e7988c8e Reduce Switch component memory usage by 8 bytes per instance (#9112) 2025-06-17 13:14:03 -05:00
J. Nick Koston 7ed095e635 Optimize LightState memory layout (#9113) 2025-06-17 13:07:45 -05:00
Michael Hansen cb8b0ec62e Add intent progress event to voice assistant enum (#9103) 2025-06-17 13:05:06 -05:00
J. Nick Koston bf161f1eaa Resolve esphome::optional vs std::optional ambiguity in code generation (#9119) 2025-06-17 13:04:45 -05:00
Jonathan Swoboda 78c8447d1e [esp32_hall] Remove esp32_hall (#9117) 2025-06-17 15:47:42 +00:00
dependabot[bot] 5ffe50381a Bump docker/setup-buildx-action from 3.10.0 to 3.11.0 in the docker-actions group (#9105)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 10:41:54 +02:00
Jonathan Swoboda b08bd0c24a Bump LibreTiny recommended version to 1.9.1 (#9110) 2025-06-17 04:41:18 +02:00
Clyde Stubbs 738ad8e9d3 [spi] Cater for non-word-aligned buffers on esp8266 (#9108) 2025-06-17 02:30:09 +00:00
Kevin Ahrendt fa7c42511a [i2s_audio] Bugfix: crashes when unlocking i2s bus multiple times (#9100) 2025-06-17 12:59:07 +12:00
Keith Burzinski 68ef9cb3dc [i2s_audio] Add `dump_config` methods, shorten log messages (#9099) 2025-06-16 07:36:49 +00:00
Jesse Hills 8e176b9c61 Merge branch 'beta' into dev 2025-06-16 17:07:31 +12:00
Jesse Hills 426be153db Merge pull request #9094 from esphome/bump-2025.6.0b2
2025.6.0b2
2025-06-16 17:06:59 +12:00
Jesse Hills c4f7c2d259 [ruff] Apply various ruff suggestions (#8947) 2025-06-15 22:13:14 -05:00
Jesse Hills 2a81efda0b Remove `std::` prefix as not all platforms have access yet. (#9095) 2025-06-16 12:55:51 +12:00
Jesse Hills 882bfc79c7 Remove `std::` prefix as not all platforms have access yet. (#9095) 2025-06-16 12:55:23 +12:00
dependabot[bot] 6bad276589 Bump aioesphomeapi from 32.2.1 to 32.2.3 (#9091)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 11:45:58 +12:00
Jesse Hills 47d8048a62 Bump version to 2025.6.0b2 2025-06-16 10:07:07 +12:00
J. Nick Koston 20d7ba5d7c Reduce Component blocking threshold memory usage by 2 bytes per component (#9081) 2025-06-16 10:07:07 +12:00
J. Nick Koston e435e72654 Add common base classes for entity protobuf messages to reduce duplicate code (#9090) 2025-06-16 10:07:07 +12:00
J. Nick Koston 497d66f7ec Ensure we can send batches where the first message exceeds MAX_PACKET_SIZE (#9068) 2025-06-16 10:07:07 +12:00
Kevin Ahrendt 242b02a416 [i2s_audio] Check for a nullptr before disabling and deleting channel (#9062) 2025-06-16 10:07:07 +12:00
J. Nick Koston 9644a6bb9c Fix protobuf encoding size mismatch by passing force parameter in encode_string (#9074) 2025-06-16 10:07:07 +12:00
J. Nick Koston 70d66062d6 Make BLE queue lock free (#9088) 2025-06-16 10:07:07 +12:00
J. Nick Koston 39f6f9b0dc Implement a lock free ring buffer for BLEScanResult to avoid drops (#9087) 2025-06-16 10:07:07 +12:00
dhewg 0454dd4e07 [fan] fix initial FanCall to properly set speed (#8277) 2025-06-16 10:07:07 +12:00
J. Nick Koston 6f4e76c8f3 Fix unbound BLE event queue growth and reduce memory usage (#9052) 2025-06-16 10:07:07 +12:00
J. Nick Koston 5cdcf2415d Optimize Application area_ from std::string to const char* (#9085) 2025-06-16 10:07:07 +12:00
J. Nick Koston 1719a2e08b Fix API message encoding to return actual size instead of calculated size (#9073) 2025-06-16 10:07:07 +12:00
J. Nick Koston 5640a9fe73 Optimize memory usage by lazy-allocating raw callbacks in sensors (#9077) 2025-06-16 10:07:07 +12:00
J. Nick Koston 4787e22f61 Reduce entity memory usage by eliminating field shadowing and bit-packing (#9076) 2025-06-16 10:07:01 +12:00
J. Nick Koston fb12e4e66a Small optimizations to api buffer helper (#9071) 2025-06-16 09:49:45 +12:00
J. Nick Koston 77740a1044 Optimize Component and Application state storage from uint32_t to uint8_t (#9082) 2025-06-16 09:49:45 +12:00
J. Nick Koston 1fdfe7578f Make ParseOnOffState enum uint8_t (#9083) 2025-06-16 09:49:45 +12:00
J. Nick Koston ebecf7047e Fix captive_portal loading entire web_server (#9066) 2025-06-16 09:49:45 +12:00
Jesse Hills 00e8332bf5 [esp32] Dynamically set default framework based on variant (#9060) 2025-06-16 09:49:45 +12:00
Jesse Hills 5fc1f90822 [prometheus] Remove `cv.only_with_arduino` (#9061) 2025-06-16 09:49:45 +12:00
J. Nick Koston 0a1be3d19c Fix misleading comment in API (#9069) 2025-06-16 09:49:45 +12:00
Nate Clark 40db3146b9 Fix BYPASS_AUTO feature to work with or without an arming delay (#9051) 2025-06-16 09:49:45 +12:00
Edward Firmo 535c495b33 [nextion] Remove upload flags reset from success path to prevent TFT corruption (#9064) 2025-06-16 09:49:45 +12:00
J. Nick Koston 592446e430 Always perform select() when loop duration exceeds interval (#9058) 2025-06-16 09:49:45 +12:00
J. Nick Koston 7a5c9a821a Fix dashboard logging being escaped before parser (#9054) 2025-06-16 09:49:45 +12:00
J. Nick Koston c17a3b6fcc Reduce Component memory usage by 20 bytes per component (#9080)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-16 09:34:37 +12:00
J. Nick Koston 28d11553e0 Reduce Component blocking threshold memory usage by 2 bytes per component (#9081) 2025-06-16 09:33:38 +12:00
J. Nick Koston 1dbebe90ba Add common base classes for entity protobuf messages to reduce duplicate code (#9090) 2025-06-16 09:29:25 +12:00
J. Nick Koston 06810e8e6a Ensure we can send batches where the first message exceeds MAX_PACKET_SIZE (#9068) 2025-06-16 09:22:14 +12:00
Kevin Ahrendt bd85ba9b6a [i2s_audio] Check for a nullptr before disabling and deleting channel (#9062) 2025-06-16 09:19:50 +12:00
J. Nick Koston be58cdda3b Fix protobuf encoding size mismatch by passing force parameter in encode_string (#9074) 2025-06-16 09:19:04 +12:00
J. Nick Koston fcce4a8be6 Make BLE queue lock free (#9088) 2025-06-16 09:16:46 +12:00
J. Nick Koston 61a558a062 Implement a lock free ring buffer for BLEScanResult to avoid drops (#9087) 2025-06-16 08:53:45 +12:00
dhewg 59f69ac5ca [fan] fix initial FanCall to properly set speed (#8277) 2025-06-15 13:16:33 -05:00
dependabot[bot] f82ac34784 Bump aioesphomeapi from 32.2.1 to 32.2.3 (#9091)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-15 10:42:01 -05:00
J. Nick Koston 07cf6e723b Fix unbound BLE event queue growth and reduce memory usage (#9052) 2025-06-15 04:45:41 +00:00
J. Nick Koston 78e3c6333f Optimize Application area_ from std::string to const char* (#9085) 2025-06-14 22:46:40 -05:00
J. Nick Koston 98e2684107 Fix API message encoding to return actual size instead of calculated size (#9073) 2025-06-15 15:46:02 +12:00
J. Nick Koston cb019fff9a Optimize memory usage by lazy-allocating raw callbacks in sensors (#9077) 2025-06-15 15:28:15 +12:00
J. Nick Koston 4305c44440 Reduce entity memory usage by eliminating field shadowing and bit-packing (#9076) 2025-06-15 15:21:55 +12:00
J. Nick Koston a1e4143600 Small optimizations to api buffer helper (#9071) 2025-06-15 14:55:03 +12:00
J. Nick Koston 374c33e8dc Optimize Component and Application state storage from uint32_t to uint8_t (#9082) 2025-06-15 14:48:53 +12:00
J. Nick Koston dcfe7af9d3 Make ParseOnOffState enum uint8_t (#9083) 2025-06-15 14:44:45 +12:00
Keith Burzinski 049c7e00ca Move some consts to `const.py` (#9084) 2025-06-14 23:23:52 +00:00
Jimmy Hedman ee37d2f9c8 Build with C++17 (#8603)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-06-14 08:21:39 -05:00
J. Nick Koston 92ea697119 Fix captive_portal loading entire web_server (#9066) 2025-06-14 08:19:41 -05:00
dependabot[bot] 1c488d375f Bump pytest-asyncio from 0.26.0 to 1.0.0 (#9067)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-13 18:40:18 -05:00
Jesse Hills 1a03b4949f [esp32] Dynamically set default framework based on variant (#9060) 2025-06-14 11:17:06 +12:00
Jesse Hills 731b7808cd [prometheus] Remove `cv.only_with_arduino` (#9061) 2025-06-14 11:08:07 +12:00
J. Nick Koston d9da4cf24d Fix misleading comment in API (#9069) 2025-06-14 09:10:33 +12:00
Nate Clark 666a3ee5e9 Fix BYPASS_AUTO feature to work with or without an arming delay (#9051) 2025-06-13 13:31:00 -05:00
Nico B 02469c2d4c ina219: powerdown the sensor on shutdown (#9053) 2025-06-13 18:17:38 +00:00
Edward Firmo 2a629cae93 [nextion] Remove upload flags reset from success path to prevent TFT corruption (#9064) 2025-06-13 13:39:32 +12:00
dependabot[bot] 1f14c316a3 Bump pytest-cov from 6.1.1 to 6.2.1 (#9063)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-12 18:16:37 -05:00
J. Nick Koston dac738a916 Always perform select() when loop duration exceeds interval (#9058) 2025-06-12 03:27:10 +00:00
Clyde Stubbs 261b561bb2 [binary_sensor] Add action to invalidate state and pass to HA (#8961)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-06-12 09:16:20 +10:00
J. Nick Koston 0228379a2e Fix dashboard logging being escaped before parser (#9054) 2025-06-11 16:17:47 -05:00
Jesse Hills da79215bc3 Merge branch 'beta' into dev 2025-06-12 07:56:24 +12:00
Jesse Hills 44323dc285 Merge pull request #9049 from esphome/bump-2025.6.0b1
2025.6.0b1
2025-06-12 07:55:49 +12:00
Thomas Rupprecht a59e1c7011 [core/pins] improve pins types (#8848)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-11 18:06:41 +00:00
Jesse Hills abb4d991ad Bump version to 2025.6.0b1 2025-06-11 23:16:56 +12:00
Jesse Hills f467c79a20 Bump version to 2025.7.0-dev 2025-06-11 23:16:56 +12:00
Keith Burzinski dcf41db878 [sgp4x] Shorten log messages, various clean-up (#9048) 2025-06-11 11:11:11 +00:00
Jesse Hills c3c3a27af2 Openthread code updates (#9047) 2025-06-11 22:41:38 +12:00
Stanislav Meduna 052f558131 Add support for custom request headers in online_image component (#8985) 2025-06-11 22:14:02 +12:00
J. Nick Koston e8aa7cff36 Improve shutdown reliability when tx buffer is full (#9043) 2025-06-11 22:08:23 +12:00
J. Nick Koston 3411e45a0a Reserve memory for component and platform vectors (#9042) 2025-06-11 22:05:42 +12:00
Clyde Stubbs a488c8cd5c [spi] Restrict octal spi to S3/S2/P4 (#9041) 2025-06-11 19:45:26 +10:00
Keith Burzinski 9652b1a556 [application] Fix build error on some IDF versions (#9045) 2025-06-11 21:44:49 +12:00
Keith Burzinski 69f2c79ccb [shtcx] Shorten log messages (#9046) 2025-06-11 21:44:10 +12:00
Mathieu Rene 9d9d210176 Add OpenThread support on ESP-IDF (#7506)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-11 17:27:58 +12:00
Thomas Rupprecht 487e1f871f use `encode_uintXX` (#8847)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-11 17:06:45 +12:00
J. Nick Koston 0e27ac281f Ensure components only powerdown after teardown (#9044) 2025-06-11 04:21:22 +00:00
Jonathan Swoboda ad37f103fa [esp32_rmt] Add variant validation for use_dma (#8897) 2025-06-11 14:00:59 +12:00
Jesse Hills b579bbf03b [esp32] Use release zip from pioarduino/platform-espressif32 instead of git tag (#8975) 2025-06-11 13:53:55 +12:00
Citric Li 7f4d2534aa Fix: Seeed Studio MR60FDA2 threshold height could not be set (#9011) 2025-06-11 12:44:51 +12:00
Clyde Stubbs 9e26daeb94 [esp_ldo] Implement support for ESP32-P4 LDO (#9009)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-06-11 12:43:19 +12:00
Keith Burzinski da6af184a6 Use a define for log message constants (#8952) 2025-06-11 12:32:51 +12:00
Jonathan Swoboda 4d347f1cc6 [core] Include esp_mac.h on Arduino too (#9040) 2025-06-11 00:08:51 +00:00
Jesse Hills 84e57b8136 [inkplate] Remove arduino dependency (#9031) 2025-06-11 12:01:11 +12:00
J. Nick Koston 63882c4a74 Reduce Bluetooth overhead by disabling unused logging categories (#8945) 2025-06-11 11:57:43 +12:00
J. Nick Koston 2ed5611a08 Replace API deferred queue with efficient message batching system (#9012) 2025-06-11 11:49:15 +12:00
Clyde Stubbs 1467b704b8 [lvgl] Fix templated argument to lvgl.is_idle (#9014) 2025-06-10 03:47:08 -05:00
Edward Firmo 94848e4811 [nextion] Add configurable limit for commands processed per loop (#8972)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-06-10 07:27:46 +00:00
Edward Firmo 3174f7ae86 [nextion] Optimize log messages to reduce memory usage (#9039) 2025-06-09 18:51:08 -05:00
dependabot[bot] 962a339a8a Bump ruamel-yaml from 0.18.13 to 0.18.14 (#9037)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:45:05 -05:00
dependabot[bot] 6a76e6ae4a Bump aioesphomeapi from 32.2.0 to 32.2.1 (#9038)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 18:44:53 -05:00
Edward Firmo ce4371a80d [globals] Prevent redundant oversized string checks in loop (#9001)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-06-09 11:19:24 -05:00
J. Nick Koston b7ca6e087a Add LWIP optimization options to reduce flash usage (#8946)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-06-09 06:08:10 +00:00
pseud0sphere 368a0eea8a Change RP2040 PIO SK6812 timings (#9020) 2025-06-09 17:46:27 +12:00
Keith Burzinski 99c368fe62 [tsl2561, tsl2591] Shorten log messages (#9034) 2025-06-09 17:45:17 +12:00
Keith Burzinski ff406f8e11 [max7219digit, servo, tsl2591] ESP_LOGCONFIG call reduction (Extend #9026) (#9033) 2025-06-09 04:19:20 +00:00
Edward Firmo b98165e077 [nextion] Use safe restart to properly handle globals and restart logging (#9010) 2025-06-08 21:10:36 -05:00
Clyde Stubbs e2a9cced94 [psram] Add P4 support (#8545)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: clydeps <U5yx99dok9>
2025-06-09 01:07:54 +00:00
Jon Krause cdae06e571 Force socket ready when high frequency looping (#9032) 2025-06-09 00:40:25 +00:00
J. Nick Koston c0b05ada1a Reduce ESP_LOGCONFIG calls (#9026) 2025-06-09 00:02:30 +00:00
esphomebot 80dddb4cae Update webserver local assets to 20250608-225410 (#9030) 2025-06-08 23:41:35 +00:00
J. Nick Koston 245c89a6c1 Disable ruff rule UP038 (#9029) 2025-06-08 23:15:46 +00:00
Clyde Stubbs 4d044d4ac9 [config] Clean build on ESP-IDF when component/platform combos change (#9028) 2025-06-09 08:39:02 +10:00
J. Nick Koston 9cc2a04d54 Implement proper API connection teardown before deep sleep/reboot (#9008) 2025-06-09 10:29:26 +12:00
dependabot[bot] 50cdec19dd Bump aioesphomeapi from 32.1.0 to 32.2.0 (#9025)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-08 16:28:39 +00:00
dependabot[bot] 6d587278bd Bump aioesphomeapi from 32.0.0 to 32.1.0 (#9024)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-08 15:26:04 +00:00
Keith Burzinski dde63e7459 [esp32] Add config vars for compiler (#9023) 2025-06-08 07:38:15 -05:00
Keith Burzinski 8894f5030a [qwiic_pir] Clean-up, shorten some log messages (#8951) 2025-06-07 22:44:35 -05:00
Clyde Stubbs 9e862b8b53 [list-components.py] Only add platforms that are actually platforms. (#9005) 2025-06-07 21:25:24 -05:00
dependabot[bot] 24d4ada841 Bump ruamel-yaml from 0.18.12 to 0.18.13 (#9018)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-07 13:48:41 -05:00
dependabot[bot] b1a8887548 Bump ruff from 0.11.11 to 0.11.13 (#9017)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-07 13:47:51 -05:00
Jonathan Swoboda d19997a056 [api] Fix build error in IDF 5.5 (#9007) 2025-06-04 21:19:58 +00:00
Stanislav Meduna de7591882d Move CONF_REQUEST_HEADERS to const.py (#9002) 2025-06-04 15:26:30 +01:00
dependabot[bot] a00fc75c77 Bump aioesphomeapi from 31.1.0 to 32.0.0 (#9004) 2025-06-04 12:33:02 +01:00
Edward Firmo 80fd827f8b [nextion] Add optional max_queue_size limit to prevent queue overflows (#8976) 2025-06-04 06:13:35 -05:00
Hannah_GBS 1dd3c6de90 [sdl] Add config for SDL window flags (#8998)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-06-04 19:49:32 +10:00
tomaszduda23 c8c43f13fd [ci, nrf52] make zephyr clang mandatory (#8992) 2025-06-03 22:03:32 +01:00
Keith Burzinski 518bce50a5 [mqtt] Remove redundant "mqtt" from log messages (#8968) 2025-06-03 21:54:58 +01:00
Keith Burzinski 4f87bea788 [api] Streamline some log strings (#8962) 2025-06-03 21:53:32 +01:00
Keith Burzinski 8054c9b4f5 [bmp581] Shorten some log messages (#8948) 2025-06-03 21:51:51 +01:00
Keith Burzinski 935e0a365f [sps30] Shorten log messages (#8971) 2025-06-03 21:50:22 +01:00
dependabot[bot] b39a9924d8 Bump ruamel-yaml from 0.18.11 to 0.18.12 (#8977)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-03 21:49:14 +01:00
Jonathan Swoboda 19ec922e28 [dashboard] Fix logging colors (#8984) 2025-06-03 21:48:22 +01:00
Keith Burzinski a225d6881f [wireguard] Remove redundant "wireguard" from log messages (#8963) 2025-06-03 21:46:53 +01:00
Keith Burzinski 6675e99862 Remove unnecessary ellipsis (#8964) 2025-06-03 21:46:10 +01:00
Keith Burzinski 8cbe2b41f6 [bmp3xx] Remove redundant "bmp3xx" from log messages (#8965) 2025-06-03 21:45:29 +01:00
Keith Burzinski 6a225cb4c0 [ethernet] Remove redundant "ethernet" from log messages (#8966) 2025-06-03 21:43:39 +01:00
Keith Burzinski e62d8bfabe [sdp3x] Remove redundant "sdp3x" from log messages (#8969) 2025-06-03 21:43:14 +01:00
Keith Burzinski d4cea84b1b [spi] Remove redundant "SPI" from log messages (#8970) 2025-06-03 21:39:21 +01:00
Jesse Hills b63f90a6c0 [core] Update defines.h esp-idf version (#8974) 2025-06-03 21:38:35 +01:00
Hannah_GBS 4370b6695e [const] Move CONF_X and CONF_Y to const.py (#8999) 2025-06-03 21:28:06 +01:00
Jesse Hills 589f13f0f7 [mdns] Set up only after API is set up (#9000) 2025-06-03 17:38:59 +00:00
Jesse Hills 367017b352 Merge branch 'release' into dev 2025-06-03 20:45:32 +12:00
Jesse Hills ec26d31499 Merge pull request #8996 from esphome/bump-2025.5.2
2025.5.2
2025-06-03 20:45:09 +12:00
Jesse Hills 1bbc6db1c3 Bump version to 2025.5.2 2025-06-03 20:04:39 +12:00
J. Nick Koston 162472bdc2 Fix logger stack overflow (#8988) 2025-06-03 20:04:39 +12:00
Clyde Stubbs aecac15809 [debug] Make sensors work without logger debug level (#8980) 2025-06-03 20:04:39 +12:00
Samuel Sieb 6554af21b9 [esp8266] fix isr pin (#8981)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-06-03 20:04:39 +12:00
Samuel Sieb 8583466c6a [rp2040] use low-level control for ISR gpio and add IRAM_ATTR (#8950)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-06-03 20:04:39 +12:00
Kevin Ahrendt 6666604069 [i2s-audio] ensure mic task isn't pinned to a core (#8879) 2025-06-03 20:04:39 +12:00
dependabot[bot] 13e7aacc9d Bump pytest from 8.3.5 to 8.4.0 (#8993)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 23:47:54 +01:00
J. Nick Koston 737d502614 Fix logger stack overflow (#8988) 2025-06-03 04:46:17 +12:00
Pat Satyshur 67dd649d00 [lc709203f] Add battery monitor (#8037)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-06-01 15:24:55 -05:00
Clyde Stubbs b2fc51367b [debug] Make sensors work without logger debug level (#8980) 2025-05-31 14:27:48 -05:00
Keith Burzinski 5771bb4907 [preferences] Shorten log messages (#8982) 2025-05-31 14:23:47 -05:00
tronikos 9ba9674437 Add missing icons and device classes to BME680 sensors (#8960) 2025-05-31 14:22:37 -05:00
Samuel Sieb acb1532e34 [esp8266] fix isr pin (#8981)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-05-31 14:21:08 -05:00
Jesse Hills e2093c34da [esp32c6] Add test base file and platformio env (#8973) 2025-05-31 22:50:45 +12:00
Edward Firmo a2e4ad90ba [nextion] Allocate NextionQueue in PSRAM (if available) (#8979) 2025-05-31 02:52:42 -05:00
Keith Burzinski 32e69c67f2 [max9611] Remove redundant "max9611" from log messages (#8967) 2025-05-31 00:29:51 +12:00
Samuel Sieb df0b5a187e [rp2040] use low-level control for ISR gpio and add IRAM_ATTR (#8950)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-05-30 23:38:50 +12:00
Tim Laurence cee0e5379b Allow Weikai to pass data_bit validation (#8917) 2025-05-30 23:37:27 +12:00
Javier Peletier daf2bd7e66 Have ESPHome's YAML dumper comply with its own yamllint rules (#8957) 2025-05-30 08:43:05 +12:00
Keith Burzinski 4031077f6d [dht] Clean-up, shorten some log messages (#8949) 2025-05-29 21:37:41 +12:00
J. Nick Koston fd72a64053 Redundant Log Messages Cleanup (#8944)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-05-29 09:36:23 +00:00
Jesse Hills 959a8b91bd [demo] FIx some of the entities (#8943) 2025-05-29 03:22:46 -05:00
Keith Burzinski 44f1ff10e6 Introduce "communication failed" log macro (#8939) 2025-05-29 01:59:38 -05:00
Jesse Hills 64e4589f4e [esp32] Regenerate boards from recommended platform version (#8938) 2025-05-29 05:21:05 +00:00
Kuba Szczodrzyński 20aba45cbe [rp2040] Allow changing watchdog timeout (#8868) 2025-05-29 17:15:26 +12:00
gotnone 0b1c5b825e [modbus] [modbus_controller] Fix server role read coil 0x1 crc (#8859)
Co-authored-by: Stanley Pinchak <stanley.pinchak@gmail.com>
2025-05-29 17:12:58 +12:00
Leicas 455624105b Add flip X and Y on inkplate6 component (#7904)
Co-authored-by: Antoine Weill--Duflos <antoine@haply.co>
Co-authored-by: David Sichau <sichau@inf.ethz.ch>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: David Sichau <DavidSichau@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-29 17:10:06 +12:00
Jonathan Swoboda 7ac5746e0d Fix colors in update all (#8854) 2025-05-29 15:00:27 +12:00
Thomas Rupprecht 12997451f6 particle matter improvements (#8846) 2025-05-29 14:57:20 +12:00
J. Nick Koston 8c77e40695 Fix select() logging flood in very verbose mode (#8942) 2025-05-29 02:29:37 +00:00
Nate Clark 2ddd91acf2 [alarm_control_panel] BYPASS_AUTO option for Template Alarm Control Panel sensors left open when armed (#8795) 2025-05-29 14:22:26 +12:00
Keith Burzinski 729e49cdc3 [gcja5] Remove unused setup() method (#8935) 2025-05-29 14:01:00 +12:00
J. Nick Koston d64b49cc13 Optimize plaintext API header reading to reduce system calls (#8941)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-28 20:46:23 -05:00
Keith Burzinski cfa8b3b272 [tmp102] Remove setup(), optimize logging (#8937) 2025-05-29 11:44:31 +12:00
Keith Burzinski 51981335d5 [pmwcs3] Optimize logging (#8936) 2025-05-29 11:44:03 +12:00
J. Nick Koston 70c5e1bbf1 Improve logging in integration tests when port does not open (#8932)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-29 11:42:19 +12:00
J. Nick Koston 43e88af28a Optimize socket operations by checking readiness in the main loop (#8918) 2025-05-28 18:16:37 -05:00
J. Nick Koston ffc66f539f Migrate wifi component to use App.get_loop_component_start_time (#8931) 2025-05-29 09:33:54 +12:00
Jesse Hills c4cb694d77 Add more demo platforms (#8903) 2025-05-28 15:23:45 -05:00
Jesse Hills 3fb9577ad9 [i2s_audio] Bump esphome/ESP32-audioI2S to 2.2.0 (#8920) 2025-05-29 08:12:03 +12:00
mrtoy-me 34169491ac [speaker mediaplayer] Yaml config initial volume (on first boot) (#8898) 2025-05-28 15:37:25 -04:00
Keith Burzinski 8eac859bab Streamline setup() logging (s, t, u, v, w, x, y, z) (#8930) 2025-05-29 07:28:41 +12:00
Keith Burzinski d99e3237f9 Streamline setup() logging (n, o, p, q, r) (#8929) 2025-05-29 07:23:53 +12:00
Keith Burzinski d9a9e0aea3 Streamline setup() logging (k, l, m) (#8928) 2025-05-29 06:57:58 +12:00
Keith Burzinski 0ce03ae26b Streamline setup() logging (g, h, i) (#8927) 2025-05-29 06:55:02 +12:00
Keith Burzinski 18653f8f69 Streamline setup() logging (e, f) (#8926) 2025-05-28 12:12:46 +00:00
Keith Burzinski 6e0523109a Streamline setup() logging (c, d) (#8925) 2025-05-28 22:54:38 +12:00
Keith Burzinski b6fa4f641d Streamline setup() logging (a, b) (#8924) 2025-05-28 22:53:51 +12:00
Keith Burzinski ca6295d1bd [ledc] Various optimizations/clean-up (#8922) 2025-05-28 22:50:48 +12:00
Keith Burzinski 18a1d31845 [rtttl] Various optimizations/clean-up (#8923) 2025-05-28 22:48:54 +12:00
Keith Burzinski c5239a63ab [aht10] Various optimizations/clean-up (#8921) 2025-05-28 22:22:05 +12:00
Craig Andrews 1911269dc9 [online_image] Last-Modified-Date and ETag response caching (#8782) 2025-05-28 17:17:57 +12:00
Thomas SAMTER 04ee1a87e9 Add es8388 audio_dac (#8342)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-28 14:00:00 +12:00
Kevin Ahrendt a8fdb6db4d [i2s-audio] ensure mic task isn't pinned to a core (#8879) 2025-05-28 08:47:42 +12:00
dependabot[bot] 8860c74f0c Bump docker/build-push-action from 6.17.0 to 6.18.0 in /.github/actions/build-image (#8919)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-28 08:45:24 +12:00
Jesse Hills d585440d54 Merge branch 'release' into dev 2025-05-27 21:02:03 +12:00
Jesse Hills f74f89c6b5 Merge pull request #8913 from esphome/bump-2025.5.1
2025.5.1
2025-05-27 21:01:19 +12:00
dependabot[bot] 7d049a61bb Bump pytest-xdist from 3.6.1 to 3.7.0 (#8916)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 06:55:47 +00:00
dependabot[bot] f2e4dc7907 Bump setuptools from 80.8.0 to 80.9.0 (#8915)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 06:54:33 +00:00
dependabot[bot] 0c7589caeb Bump pytest-mock from 3.14.0 to 3.14.1 (#8909)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 17:26:14 +12:00
dependabot[bot] 321411e355 Bump ruamel-yaml from 0.18.10 to 0.18.11 (#8910)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 17:26:08 +12:00
Samuel Sieb 361de22370 [sx1509] add support for keys (#8413)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-27 17:16:27 +12:00
Jesse Hills 95a17387a8 Bump actions/checkout from 4.1.7 to 4.2.2 (#8904) 2025-05-27 16:26:01 +12:00
J. Nick Koston caf9930ff9 Fix flakey tests (#8914) 2025-05-27 16:20:14 +12:00
Jesse Hills 42390faf4a Bump version to 2025.5.1 2025-05-27 14:31:38 +12:00
Jesse Hills fdc6c4a219 [web_server] Fix download list where external_components has a substitution value (#8911)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-27 14:31:38 +12:00
Jesse Hills 6c08f5e343 [api] Fix crash with gcc compiler on host (#8902) 2025-05-27 14:31:38 +12:00
Keith Burzinski e0e4ba9592 [esp32] Fix building on IDF 4 (#8892) 2025-05-27 14:31:38 +12:00
Jesse Hills ad20825f31 [logger] Fix options in select (#8875)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-05-27 14:31:38 +12:00
Kevin Ahrendt e4f3a952d5 [speaker] ensure the pipeline returns an error state before returning its stopped (#8878) 2025-05-27 14:31:38 +12:00
Kevin Ahrendt 90e3c5bba2 [micro_wake_word] avoid duplicated detections from same event (#8877) 2025-05-27 14:31:38 +12:00
Clyde Stubbs b1d5ad27f3 [lvgl] Improve error messages from text validation (#8872) 2025-05-27 14:31:38 +12:00
Jesse Hills 5c54f75b7a [online_image] Allocate pngle manually to potentially use psram (#8354)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-05-27 14:31:38 +12:00
Cossid a5f85b4437 [tuya_select] - Fix datapoint config error. (#8871) 2025-05-27 14:31:38 +12:00
Jesse Hills da4e710249 [core] Add some missing includes (#8864) 2025-05-27 14:31:38 +12:00
J. Nick Koston 4ac433fddb Add integration tests for host (#8912) 2025-05-26 21:31:32 -05:00
Jesse Hills 73771d5c50 [web_server] Fix download list where external_components has a substitution value (#8911)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-27 09:08:16 +12:00
Jesse Hills af7b1a3a23 [api] Fix crash with gcc compiler on host (#8902) 2025-05-27 06:46:51 +12:00
dependabot[bot] 430f63fcbb Bump pyupgrade from 3.19.1 to 3.20.0 (#8891)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-26 08:13:45 +00:00
Emmanuel Ferdman 5921a9cd68 Resolve regex library warnings (#8890) 2025-05-26 19:45:47 +12:00
Jonathan Swoboda ca0037d076 [esp32, logger, core] Add initial c5 support (#8895) 2025-05-26 13:33:41 +12:00
Jesse Hills 1e18d0b06c [i2s_audio] Add basic support for esp32-p4 (#8887) 2025-05-26 11:55:51 +12:00
luar123 4b5c3e7e2b [bme68x_bsec2_i2c] Remove arduino dependency (#7815) 2025-05-25 03:08:51 -05:00
Keith Burzinski d4c4b75eb3 [esp32] Fix building on IDF 4 (#8892) 2025-05-25 02:15:24 +12:00
Jesse Hills 9dd4045984 [const] Move `CONF_RESET` to const.py (#8889) 2025-05-23 21:54:06 -05:00
gotnone 19e2460af2 [modbus_controller] Add assumed_state to switch (#8880)
Co-authored-by: Stanley Pinchak <stanley.pinchak@gmail.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-23 21:34:10 +12:00
Rodrigo Martín 149f787035 feat: wifi.configure now emits error after reconnecting to old AP (#8653) 2025-05-23 21:32:47 +12:00
J. Nick Koston 2ab1fe1abf Use UINT16_MAX instead of hard coded 65535 in api (#8884)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-22 23:51:06 +00:00
Jesse Hills 926b42ba1c [logger] Fix options in select (#8875)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-05-23 09:33:38 +10:00
J. Nick Koston 377ed2e212 Optimize API frame helper buffer management (#8805)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-22 21:11:16 +00:00
esphomebot 42912447fb Synchronise Device Classes from Home Assistant (#8874) 2025-05-23 08:50:31 +12:00
Pi57 25ead44f1c Add const DEVICE_CLASS_WIND_DIRECTION (#8870)
Co-authored-by: PierreYvesHB <pierre-yves.henius-beck@act-blue.eu>
2025-05-23 08:49:37 +12:00
dependabot[bot] 03b003af47 Bump ruff from 0.11.10 to 0.11.11 (#8883)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 20:22:04 +00:00
dependabot[bot] 5baccf0ce7 Bump tornado from 6.4.2 to 6.5.1 (#8882)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 20:21:46 +00:00
Kevin Ahrendt e95c92773c [speaker] ensure the pipeline returns an error state before returning its stopped (#8878) 2025-05-23 07:20:15 +12:00
Kevin Ahrendt c23ea384fb [micro_wake_word] avoid duplicated detections from same event (#8877) 2025-05-23 07:19:16 +12:00
Lưu Oa Oa (宰相劉羅鍋) 69da17742f OTA: Close and clean up client when setsockopt fails (#8865)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-05-22 11:37:42 -05:00
Clyde Stubbs 1ec57a74b5 [usb_uart] Implement USB Host mode UART (#8334) 2025-05-22 13:54:40 +12:00
Clyde Stubbs d1e55252d0 [lvgl] Improve error messages from text validation (#8872) 2025-05-22 13:49:56 +12:00
Clyde Stubbs 090feb55e9 [lvgl] Add content styling to tabview (#8823) 2025-05-22 13:47:38 +12:00
Clyde Stubbs 6109acb6f3 [lvgl] Try to allocate smaller buffer on failure (#8814)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-22 13:45:56 +12:00
Jesse Hills 5aa13db815 [online_image] Allocate pngle manually to potentially use psram (#8354)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-05-22 13:40:53 +12:00
Jesse Hills 1b67dd4232 [sync] Update and fix sync workflow (#8873) 2025-05-22 13:32:19 +12:00
Cossid ba6efcedcb [tuya_select] - Fix datapoint config error. (#8871) 2025-05-22 13:26:19 +12:00
Jesse Hills bd7c2a680c Updates for development environment (#8801) 2025-05-22 13:24:34 +12:00
Andrew J.Swan 1466aa7703 Add CUBIC CM1106 Single Beam NDIR CO2 Sensor Module (#8293)
Co-authored-by: Djordje <6750655+DjordjeMandic@users.noreply.github.com>
Co-authored-by: Patrick <info@patagona.dev>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-22 13:23:54 +12:00
Jonathan Swoboda 787f4860db [esp32, logger] Add initial P4 support (#8439)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-22 13:22:01 +12:00
Thomas Rupprecht aeb4e63950 update minimal python version to 3.10 (#8850) 2025-05-22 13:21:43 +12:00
Jonathan Swoboda 026f47bfb3 [esp32] Use IDF 5.3.2 as default for IDF builds (#8464)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-05-22 13:21:27 +12:00
Jesse Hills dd47d063b5 Merge branch 'release' into dev 2025-05-21 20:33:34 +12:00
Jesse Hills cdcd1cd292 Merge pull request #8863 from esphome/bump-2025.5.0
2025.5.0
2025-05-21 20:32:40 +12:00
Jesse Hills a6fa963605 [core] Add some missing includes (#8864) 2025-05-21 20:02:14 +12:00
Jesse Hills 1cba22175f Bump version to 2025.5.0 2025-05-21 15:26:55 +12:00
Jesse Hills f2d7720a4e Merge branch 'beta' into dev 2025-05-21 13:09:35 +12:00
Jesse Hills 801138da27 Merge pull request #8862 from esphome/bump-2025.5.0b6
2025.5.0b6
2025-05-21 13:09:04 +12:00
Jesse Hills 51740a2e99 Bump version to 2025.5.0b6 2025-05-21 11:54:08 +12:00
Jesse Hills d68a391e67 [api-docs] Move netlify.toml to root (#8861) 2025-05-21 11:54:07 +12:00
Jesse Hills e9d832d64a [api-docs] Move netlify.toml to root (#8861) 2025-05-21 11:43:19 +12:00
Jesse Hills f8f09bca02 Merge branch 'beta' into dev 2025-05-21 11:26:20 +12:00
Jesse Hills 756aa13779 Merge pull request #8860 from esphome/bump-2025.5.0b5
2025.5.0b5
2025-05-21 11:25:48 +12:00
Jesse Hills 25bbc0c221 Bump version to 2025.5.0b5 2025-05-21 10:05:54 +12:00
Gustavo Ambrozio 220a14e1f8 [at581x] Fix issue with methods not being public (#8852) 2025-05-21 10:05:53 +12:00
Clyde Stubbs ac74b25c46 Fix #ifdefs (#8853) 2025-05-21 10:05:53 +12:00
dependabot[bot] c5d809b3dd Bump setuptools from 80.7.1 to 80.8.0 (#8858)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 16:27:53 -04:00
Thomas Rupprecht b1cf08b261 add python 3.13 to ci pipeline (#8855) 2025-05-20 10:04:09 -04:00
Gustavo Ambrozio 6ae83dfe3d [at581x] Fix issue with methods not being public (#8852) 2025-05-20 02:36:44 -05:00
Thomas Rupprecht 0932e83b15 update ruff version to `0.11.10 in .pre-commit-config.yaml` (#8851) 2025-05-20 00:42:43 -04:00
Clyde Stubbs 86670c4d39 Fix #ifdefs (#8853) 2025-05-20 13:19:24 +10:00
dependabot[bot] 4ce55b94ec Bump aioesphomeapi from 31.0.1 to 31.1.0 (#8849) 2025-05-19 20:30:30 -04:00
Jesse Hills 1c5dc63eb4 Merge branch 'beta' into dev 2025-05-20 01:19:32 +12:00
Jesse Hills 937fe393a1 Merge pull request #8845 from esphome/bump-2025.5.0b4
2025.5.0b4
2025-05-20 01:19:01 +12:00
Jesse Hills 4b552d9fba Bump version to 2025.5.0b4 2025-05-19 20:01:40 +12:00
Jesse Hills aa53d8f1ee [api-docs] Run using netlify builders (#8842)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-19 20:01:40 +12:00
Jesse Hills a28932bc29 [docker] Update pip on build (#8835)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-05-19 20:01:40 +12:00
J. Nick Koston afa7414ee1 Fix ethernet connection timeout issue caused by incorrect time value during setup (#8841) 2025-05-19 20:01:40 +12:00
J. Nick Koston aed7ef481e Fix API connection sending ping too early after connection establishment (#8840) 2025-05-19 20:01:40 +12:00
Jesse Hills c820fee1f6 [release] Don't wait for docker to be finished before deploying schema (#8838) 2025-05-19 20:01:40 +12:00
Jesse Hills 5244ac4ff6 [release] Fix output value (#8839) 2025-05-19 20:01:40 +12:00
Jesse Hills 89d283eee4 Deploy doxygen docs to netlify (#8837) 2025-05-19 20:01:40 +12:00
Jesse Hills ef053d23b4 Fix api doc homepage (#8836)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-19 20:01:39 +12:00
Fexiven 98470d32f0 Update esp32-camera library version (#8832) 2025-05-19 20:01:39 +12:00
J. Nick Koston cab6edd800 Avoid protobuf message construction when tx buffer is full (#8787)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-19 20:01:39 +12:00
Jesse Hills ef7a22ff04 [api-docs] Run using netlify builders (#8842)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-19 19:48:04 +12:00
Jesse Hills dfda0e5c7c [docker] Update pip on build (#8835)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-05-19 18:22:24 +12:00
J. Nick Koston 78c63311c6 Fix ethernet connection timeout issue caused by incorrect time value during setup (#8841) 2025-05-19 00:25:21 -05:00
Jesse Hills 1ac51e7b3e Merge branch 'beta' into dev 2025-05-19 16:03:18 +12:00
Jesse Hills aaaf9b2b62 Merge pull request #8834 from esphome/bump-2025.5.0b3
2025.5.0b3
2025-05-19 16:02:46 +12:00
J. Nick Koston 5b552b9ec5 Fix API connection sending ping too early after connection establishment (#8840) 2025-05-19 15:22:36 +12:00
Jesse Hills d36ce7c010 [release] Don't wait for docker to be finished before deploying schema (#8838) 2025-05-19 14:17:01 +12:00
Jesse Hills b8a96f59f0 [release] Fix output value (#8839) 2025-05-19 14:16:39 +12:00
Jesse Hills 2e15ee232d Deploy doxygen docs to netlify (#8837) 2025-05-19 14:09:38 +12:00
Jesse Hills 904495e1b8 Fix api doc homepage (#8836)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-19 13:57:41 +12:00
Fexiven 99c4f88c3f Update esp32-camera library version (#8832) 2025-05-19 11:01:31 +12:00
DanielV 87a9dd18c8 Improve stability for a test that crashes intermittently in CI (#8699)
Co-authored-by: NP v/d Spek <github_mail@lumensoft.nl>
2025-05-19 10:01:30 +12:00
Thomas Rupprecht dbce54477a unify and add missing metric suffixes (#8816) 2025-05-18 21:44:33 +00:00
Jesse Hills 38cfd32382 Bump version to 2025.5.0b3 2025-05-19 09:24:53 +12:00
dependabot[bot] 1b9ae57b9d Bump docker/build-push-action from 6.16.0 to 6.17.0 in /.github/actions/build-image (#8810)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 09:24:53 +12:00
J. Nick Koston 4d54cb9b31 Refactor API frame helpers to enable buffer reuse (#8825) 2025-05-19 09:24:53 +12:00
J. Nick Koston 15d0b4355e Reduce number of calls to fetch time in the main loop (#8804) 2025-05-19 09:24:53 +12:00
J. Nick Koston 316fe2f06c Fix ESP32 console logging corruption and message loss in multi-task (#8806) 2025-05-19 09:24:53 +12:00
Kent Gibson f8681adec4 Fix misspelling of climate in climate_ir.climate_ir_with_receiver_schema (#8829) 2025-05-19 09:24:53 +12:00
Clyde Stubbs 868f5ff20c Revert "[binary_sensor] initial state refactor" (#8828) 2025-05-19 09:24:53 +12:00
Anton Sergunov 59295a615e Fix the case of single error (#8824) 2025-05-19 09:24:53 +12:00
Keith Burzinski d8516cfabb [sen5x] Fix validation for values read from hardware (#8769) 2025-05-19 09:24:53 +12:00
J. Nick Koston d847b345b8 Fix ESP32 Camera class inheritance (#8811) 2025-05-19 09:24:53 +12:00
Thomas Rupprecht c50e33f531 [gps] update lib, improve code/tests/config (#8768) 2025-05-19 09:24:53 +12:00
Thomas Rupprecht 5a84bab9ec [log] improve/refactor log (#8708) 2025-05-19 09:24:53 +12:00
J. Nick Koston 41f860c2a3 Logger Recursion Guard per Task on ESP32 (#8765) 2025-05-19 09:24:53 +12:00
J. Nick Koston c7e62d1279 Optimize protobuf varint decoder for ESPHome use case (#8791) 2025-05-19 09:24:53 +12:00
J. Nick Koston 2341ff651a Use fixed buffer for plaintext protocol like noise protocol (#8800) 2025-05-19 09:24:53 +12:00
Jesse Hills 9704de6647 Update some sensor schemas to be Optional (#8803) 2025-05-19 09:24:52 +12:00
dependabot[bot] 660030d157 Bump docker/build-push-action from 6.16.0 to 6.17.0 in /.github/actions/build-image (#8810)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 09:20:29 +12:00
dependabot[bot] 24fbe602dd Bump codecov/codecov-action from 5.4.2 to 5.4.3 (#8820)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 09:13:20 +12:00
J. Nick Koston b0c1e0e28c Refactor API frame helpers to enable buffer reuse (#8825) 2025-05-19 09:05:20 +12:00
J. Nick Koston 574aabdede Reduce number of calls to fetch time in the main loop (#8804) 2025-05-19 07:48:57 +12:00
J. Nick Koston e47741d471 Fix ESP32 console logging corruption and message loss in multi-task (#8806) 2025-05-19 07:43:41 +12:00
Kent Gibson a78bea78f9 Fix misspelling of climate in climate_ir.climate_ir_with_receiver_schema (#8829) 2025-05-18 03:45:12 +00:00
Clyde Stubbs 44470f31f6 Revert "[binary_sensor] initial state refactor" (#8828) 2025-05-18 03:30:08 +00:00
Anton Sergunov 18ac1b7c54 Fix the case of single error (#8824) 2025-05-18 15:11:09 +12:00
Keith Burzinski e87b659483 [sen5x] Fix validation for values read from hardware (#8769) 2025-05-18 15:05:03 +12:00
J. Nick Koston fefcb45e1f Bump cryptography to 45.0.1 (#8826) 2025-05-18 14:50:06 +12:00
Clyde Stubbs 5c92367ca2 [script] Use local import for zephyr (#8822) 2025-05-16 23:41:19 +00:00
dependabot[bot] b469a504e4 Bump cairosvg from 2.8.1 to 2.8.2 (#8817)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 15:42:51 -04:00
dependabot[bot] 218f8e0caf Bump ruff from 0.11.9 to 0.11.10 (#8818)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 15:42:44 -04:00
J. Nick Koston 7965558d5e Fix ESP32 Camera class inheritance (#8811) 2025-05-16 11:42:54 +12:00
dependabot[bot] d9b860088e Bump setuptools from 80.4.0 to 80.7.1 (#8808)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-15 15:45:01 -05:00
dependabot[bot] 115975c409 Bump aioesphomeapi from 31.0.0 to 31.0.1 (#8809)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-15 15:44:47 -05:00
Thomas Rupprecht 4761ffe023 [gps] update lib, improve code/tests/config (#8768) 2025-05-15 22:07:41 +12:00
Thomas Rupprecht 88edddf07a [log] improve/refactor log (#8708) 2025-05-15 21:45:07 +12:00
J. Nick Koston 0b77cb1d16 Logger Recursion Guard per Task on ESP32 (#8765) 2025-05-15 21:36:28 +12:00
J. Nick Koston efa6745a5e Optimize protobuf varint decoder for ESPHome use case (#8791) 2025-05-15 17:16:25 +12:00
J. Nick Koston dd8d8ad952 Use fixed buffer for plaintext protocol like noise protocol (#8800) 2025-05-15 17:16:08 +12:00
dependabot[bot] 57284b1ac3 Bump cairosvg from 2.8.0 to 2.8.1 (#8799)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-14 23:26:28 -05:00
Jesse Hills 1a651ce66d Update some sensor schemas to be Optional (#8803) 2025-05-15 02:40:11 +00:00
Jesse Hills 730441c120 [api] Update api proto to add legacy value (#8802) 2025-05-14 21:26:21 -05:00
J. Nick Koston bb1f24ab43 Avoid protobuf message construction when tx buffer is full (#8787)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-14 21:25:44 -05:00
NP v/d Spek edb8d187be add actions to the MAX7219Component (#6462)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-15 09:15:04 +12:00
Jesse Hills e7b6081c5c Merge branch 'beta' into dev 2025-05-15 06:51:16 +12:00
Jesse Hills 97fb8c2cdf Merge pull request #8792 from esphome/bump-2025.5.0b2
2025.5.0b2
2025-05-15 06:50:46 +12:00
dependabot[bot] 5454500024 Bump cairosvg from 2.7.1 to 2.8.0 (#8780)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-14 11:20:22 -05:00
Jesse Hills d9839f3a5c Bump version to 2025.5.0b2 2025-05-14 21:29:00 +12:00
Jesse Hills 498e3904a9 Bump esphome-dashboard to 20250514.0 (#8790) 2025-05-14 21:28:33 +12:00
Jesse Hills 7cb01bf842 [climate] Update components to use `climate_schema(...)` (#8788) 2025-05-14 21:27:05 +12:00
Jesse Hills c050e8d0fb Fix release to pypi (#8789) 2025-05-14 21:27:05 +12:00
J. Nick Koston 4f2643e6e9 Improve batching of BLE advertisements for better airtime efficiency (#8778) 2025-05-14 21:27:05 +12:00
Jesse Hills 7d0262dd1a [fan] Update components to use `fan_schema(...)` (#8786) 2025-05-14 21:27:05 +12:00
Jesse Hills c30ffd0098 [schema] Get component name if available for deprecation warning (#8785) 2025-05-14 21:27:05 +12:00
Jesse Hills ea31122979 [media_player] Deprecate `MEDIA_PLAYER_SCHEMA` (#8784) 2025-05-14 21:27:05 +12:00
Jesse Hills 191afd3e69 Bump esphome-dashboard to 20250514.0 (#8790) 2025-05-14 02:08:16 -05:00
Jesse Hills de27ce79dc [climate] Update components to use `climate_schema(...)` (#8788) 2025-05-14 05:36:21 +00:00
Jesse Hills a12bd78ceb Fix release to pypi (#8789) 2025-05-14 16:35:30 +12:00
J. Nick Koston ddb986b4fa Improve batching of BLE advertisements for better airtime efficiency (#8778) 2025-05-14 04:34:33 +00:00
Jesse Hills c98c78e368 Merge branch 'beta' into dev 2025-05-14 15:55:25 +12:00
Jesse Hills 1e20440c8e Merge pull request #8783 from esphome/bump-2025.5.0b1
2025.5.0b1
2025-05-14 15:54:44 +12:00
dependabot[bot] 5570a788fd Bump aioesphomeapi from 30.2.0 to 31.0.0 (#8779)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 21:23:32 -05:00
Jesse Hills 42c355e6d7 [fan] Update components to use `fan_schema(...)` (#8786) 2025-05-13 20:30:11 -05:00
Jesse Hills a835ab48bc [schema] Get component name if available for deprecation warning (#8785) 2025-05-13 20:25:21 -05:00
Jesse Hills f28a373898 [media_player] Deprecate `MEDIA_PLAYER_SCHEMA` (#8784) 2025-05-13 23:48:54 +00:00
Jesse Hills 0630244195 Bump version to 2025.5.0b1 2025-05-14 09:54:26 +12:00
Jesse Hills 28e29efd98 Bump version to 2025.6.0-dev 2025-05-14 09:54:26 +12:00
Clyde Stubbs 183659f527 [mipi_spi] New display driver for MIPI DBI devices (#8383)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-14 09:22:58 +12:00
Jesse Hills 4ea63af796 [online_image] Support 24 bit bmp images (#8612) 2025-05-14 09:21:19 +12:00
Samuel Sieb 0aa7911b1b [esp32][esp8266] use low-level pin control for ISR gpio (#8743)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-05-14 08:58:15 +12:00
Mischa Siekmann 032949bc77 [audio] Fix: Decoder stops unnecessarily after a potential failure is detected. (#8776) 2025-05-13 08:35:19 -04:00
Jesse Hills 6f8ee65919 [text_sensor] Fix schema generation (#8773) 2025-05-13 06:34:26 +00:00
Thomas Rupprecht c5654b4cb2 [esp32] improve gpio (#8709) 2025-05-13 18:24:38 +12:00
Jesse Hills 410b6353fe [switch] Fix schema generation (#8774) 2025-05-13 06:17:54 +00:00
Jesse Hills a36e1aab8e [cover] Update components to use `cover_schema(...)` (#8770) 2025-05-13 00:29:00 -05:00
Jesse Hills 864ae7a56c [template] Use alarm_control_panel_schema method (#8764) 2025-05-13 00:26:07 -05:00
Jesse Hills 2560d2b9d0 [demo] Clean up schema deprecations, add test (#8771) 2025-05-13 05:16:23 +00:00
Jesse Hills 0cf9b05afd [select] Tidy schema generation (#8775) 2025-05-13 05:07:57 +00:00
Cossid 8b65d1673a Tuya Select - Add int_datapoint option (#8393) 2025-05-13 16:44:51 +12:00
Jesse Hills 5e164b107a [climate] Fix climate_schema (#8772) 2025-05-13 16:35:56 +12:00
DanielV a83959d738 In case of proto-diff show changes and archive generated (#8698)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-13 14:07:54 +12:00
realzoulou 0ccc5bf714 [gps] Add hdop sensor (#8680)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-13 14:05:34 +12:00
Jesse Hills bc0956019b [config] Deprecate more *_SCHEMA constants (#8763) 2025-05-13 13:24:13 +12:00
Jesse Hills 49f631d6c5 [schema] Deploy schema after release workflow finished (#8767) 2025-05-13 13:18:23 +12:00
J. Nick Koston a9d5eb8470 Fix missing recursion guard release on ESP8266 (#8766) 2025-05-13 13:17:37 +12:00
tomaszduda23 7c0546c9f0 [clang] clang tidy support with zephyr (#8352)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-05-12 23:36:34 +00:00
J. Nick Koston f4eb75e4e0 Avoid iterating clients twice in the api_server loop (#8733) 2025-05-12 17:29:50 -05:00
dependabot[bot] 5b2c19bc86 Bump setuptools from 80.3.1 to 80.4.0 (#8753)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 09:32:13 +12:00
dependabot[bot] 185b84b8b2 Bump zeroconf from 0.146.5 to 0.147.0 (#8754)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 09:31:40 +12:00
tomaszduda23 facf94699e [udp, syslog] fix clang tidy (#8755) 2025-05-12 16:17:28 -05:00
Jesse Hills 58104229e2 [sml] Use text_sensor_schema method (#8762) 2025-05-12 21:16:56 +00:00
Jesse Hills 50c88b7aa7 [ble_client] Use text_sensor_schema method (#8761) 2025-05-12 16:15:57 -05:00
Jesse Hills 81bae96109 [airthings] Remove unnecessary schema (#8760) 2025-05-12 21:05:23 +00:00
Jesse Hills a3ed090594 [tm1638] Use switch_schema method (#8758) 2025-05-12 20:59:59 +00:00
Jesse Hills cff1820772 [sprinkler] Use number_schema method (#8759) 2025-05-12 20:59:42 +00:00
Jesse Hills bdd2774544 [factory_reset] Use switch_schema method (#8757) 2025-05-12 20:58:05 +00:00
Jesse Hills 38790793dd [opentherm] Update to use schema methods (#8756) 2025-05-12 20:53:46 +00:00
Jesse Hills dcd786d21c [config] Deprecate other *_SCHEMA constants (#8748) 2025-05-12 14:43:38 -05:00
Kevin Ahrendt 71e88fe9b2 [i2s_audio] Correct a microphone with a DC offset signal (#8751) 2025-05-13 07:30:58 +12:00
Guillermo Ruffino 11dcaf7383 [vscode] provide version to editor (#8752) 2025-05-13 07:27:07 +12:00
J. Nick Koston dded81d622 Fix ESP32 API Disconnects Caused by Concurrent Logger Writes (#8736)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-13 07:03:34 +12:00
Jesse Hills 8324b3244c [config] Add entity schema consts with deprecation log (#8747) 2025-05-12 06:31:36 +00:00
Mateusz Bronk 401c090edd MQTT: fan direction control added (#8022)
Co-authored-by: Mateusz Bronk <mbronk@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-12 10:28:46 +12:00
Jesse Hills 8757957e17 Merge branch 'release' into dev 2025-05-12 10:19:16 +12:00
dependabot[bot] e2c8a5b638 Bump ruff from 0.11.8 to 0.11.9 (#8735)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-12 10:19:10 +12:00
Jesse Hills 7bb899bfa1 Merge pull request #8746 from esphome/bump-2025.4.2
2025.4.2
2025-05-12 10:18:35 +12:00
dependabot[bot] 3e2359ddff Bump aioesphomeapi from 30.1.0 to 30.2.0 (#8734)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 10:05:24 +12:00
Samuel Sieb 04147a7f27 [one_wire][dallas_temp] adjust timings and reduce disabled interrupts (#8744)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-05-12 09:33:50 +12:00
Jesse Hills cae3c030d2 Bump version to 2025.4.2 2025-05-12 08:52:13 +12:00
Clyde Stubbs d7c615ec43 [lvgl] Fix image property processing (#8691) 2025-05-12 08:52:13 +12:00
Clyde Stubbs 1294e8ccd5 [lvgl] Allow padding to be negative (#8671) 2025-05-12 08:52:13 +12:00
Clyde Stubbs 37a2cb07d1 [as3935_i2c] Remove redundant includes (#8677) 2025-05-12 08:52:13 +12:00
Clyde Stubbs 2af3994f79 [display] Fix Rect::inside (#8679) 2025-05-12 08:52:12 +12:00
Jannik 0c0fe81814 Fix HLW8012 sensor not returning values if change_mode_every is set to never (#8456) 2025-05-12 08:52:12 +12:00
Ben Winslow 82c8614315 Fix typo preventing tt21100 from autosetting the touchscreen res. (#8662) 2025-05-12 08:52:12 +12:00
Jesse Hills a85dc65038 [media_player] Fix actions with id as value (#8654) 2025-05-12 08:52:12 +12:00
Jesse Hills 290b8bdca0 [esp32_ble] Remove explicit and now incorrect ble override for esp32-c6 (#8643) 2025-05-12 08:52:12 +12:00
bdm310 a96ed0b70a [lvgl] Fix unexpected widget update behavior (#8260) 2025-05-12 08:52:12 +12:00
Kevin Ahrendt cdc1a7c646 [sound_level] Add a new sound level sensor (#8737)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-12 08:51:49 +12:00
Kevin Ahrendt 7f59aff157 [voice_assistant] Bugfix: Properly detect states where mic is running (#8745) 2025-05-12 08:50:47 +12:00
Kevin Ahrendt cdce59f7f9 [i2s_audio] Fix: Slot bit-width for ESP32 variant (#8738) 2025-05-11 00:27:50 -05:00
Kevin Ahrendt ff1c3cb52e [audio] Bump esp-audio-libs to version 1.1.4 for speed optimizations (#8739) 2025-05-11 00:25:19 -05:00
Kevin Ahrendt bec9d91419 [audio, microphone] - Allow MicrophoneSource to passively capture/optimization (#8732) 2025-05-09 16:54:33 -05:00
Jesse Hills 8399d894c1 [config] Use `cv.UNDEFINED instead of adhoc _UNDEF` objects (#8725) 2025-05-09 08:18:52 +00:00
Jesse Hills e1732c4945 [lock] Move to use `lock_schema(..) instead of LOCK_SCHEMA` (#8728)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-05-09 07:45:32 +00:00
Jesse Hills ca221d6cb2 [text] Move to use `text_schema(..) instead of TEXT_SCHEMA` (#8727) 2025-05-09 01:24:34 -05:00
Jesse Hills 8a90ce882a [update] Move to use `update_schema(..) instead of UPDATE_SCHEMA` (#8726) 2025-05-09 01:22:43 -05:00
Jesse Hills b3400a1308 [lock] Tidy up template publish action and lockstate locations (#8729) 2025-05-09 01:19:03 -05:00
Jesse Hills 23fb1bed61 [valve] Move to use `valve_schema(..) instead of VALVE_SCHEMA` (#8730) 2025-05-09 01:14:13 -05:00
Jesse Hills 2b3757dff8 [valve] Tidy up template publish action location (#8731) 2025-05-09 01:05:26 -05:00
Jesse Hills 1da8e99d27 [api] Synchronise api.proto between repos (#8720) 2025-05-09 13:33:28 +12:00
John e94e71ded8 ATM90E32 Semi-automatic calibration & Status fields (#8529)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-09 12:50:59 +12:00
J. Nick Koston 00f20c1e55 Optimize bluetooth_proxy memory copy and reduce reallocs (#8723) 2025-05-09 12:49:50 +12:00
J. Nick Koston 45d019a7e4 Improve BLE Connection Reliability by Enabling Software Coexistence (#8683)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-09 12:18:19 +12:00
J. Nick Koston 8465017db9 Consolidate write_raw_ implementation to reduce code duplication (#8717) 2025-05-09 12:10:44 +12:00
J. Nick Koston 782d748210 Increase zeroconf timeout to 10 seconds (#8670) 2025-05-09 12:05:59 +12:00
dependabot[bot] b01d85a974 Bump puremagic from 1.28 to 1.29 (#8722)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-08 15:02:16 -05:00
dependabot[bot] 797a4c61f2 Bump ruff from 0.11.7 to 0.11.8 (#8721)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-08 15:01:52 -05:00
Samuel Sieb 8e29437900 [key_collector] enable/disable (#8718)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-05-08 20:26:10 +12:00
J. Nick Koston 9e64e71cdf Require reserve_size in create_buffer to reduce realloc overhead (#8715)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-08 05:50:20 +00:00
J. Nick Koston ef2621aa54 Reserve space in the frame helper when we know in advance how much we need (#8716) 2025-05-08 17:43:39 +12:00
J. Nick Koston 882273cb56 Avoid Reallocation When Sending Logging Messages (#8714) 2025-05-08 04:19:53 +00:00
J. Nick Koston ad2b74d9b4 Correct Protobuf Wire Type for encode_fixed64 (#8713) 2025-05-08 16:01:10 +12:00
J. Nick Koston 26669bd1b6 Preallocate Buffer Space for ESP32-CAM (#8712) 2025-05-08 16:00:34 +12:00
J. Nick Koston 54ead9a6b4 Reserve buffer space to avoid frequent realloc when generating protobuf messages (#8707) 2025-05-07 21:56:54 -05:00
Clyde Stubbs d60e1f02c0 [packet_transport] Make some arguments const (#8700)
Co-authored-by: clydeps <U5yx99dok9>
2025-05-08 10:22:56 +12:00
dependabot[bot] 213648564c Bump yamllint from 1.37.0 to 1.37.1 (#8705)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-08 10:19:23 +12:00
dependabot[bot] 8bdbde9732 Bump pylint from 3.3.6 to 3.3.7 (#8706)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-08 07:50:13 +12:00
Kevin Ahrendt e988762576 [i2s_audio, mixer, resampler, speaker] Simplify duration played callback (#8703) 2025-05-06 23:42:59 -05:00
Jesse Hills 75496849eb [mics_4514] Add default device class to CO sensor (#8710) 2025-05-06 18:57:18 -05:00
Kevin Ahrendt 39b119e9cc [micro_wake_word] Experimental cutoff adjustments and uses mic sample rate (#8702) 2025-05-06 16:48:56 -05:00
dependabot[bot] 4d43caf6c1 Bump aioesphomeapi from 30.0.1 to 30.1.0 (#8652)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 09:41:14 -05:00
dependabot[bot] ce5e1a6294 Bump setuptools from 79.0.1 to 80.3.1 (#8696)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 09:40:58 -05:00
Kevin Ahrendt 88be14aaa3 [audio, microphone] Quantization Improvements (#8695) 2025-05-06 09:23:50 +12:00
Clyde Stubbs 1ac56b06c5 [arduino] Always include Arduino.h for Arduino (#8693) 2025-05-05 08:25:24 +00:00
Edward Firmo 8bbc509b0b [nextion] Adds a command pacer with command_spacing attribute (#7948)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-05 20:08:16 +12:00
Clyde Stubbs 6f35d0ac88 [cst226] Add support for cst226 binary sensor (#8381) 2025-05-05 19:56:30 +12:00
Clyde Stubbs 3b8a5db97c [syslog] Implement logging via syslog (#8637)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-05 16:48:13 +12:00
Clyde Stubbs b8d83d0765 [debug] Show source of last software reboot (#8595) 2025-05-04 23:31:37 -05:00
Clyde Stubbs e7a2b395fd [uart] Add packet_transport platform (#8214)
Co-authored-by: Faidon Liambotis <paravoid@debian.org>
Co-authored-by: clydeps <U5yx99dok9>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-05 16:15:46 +12:00
Clyde Stubbs ad99d7fb45 [image] Support the other Pictogrammers icon sets memory: and mdil: (#8676) 2025-05-05 15:31:16 +12:00
Clyde Stubbs 0b032e5c19 [lvgl] Add refresh action to re-evaluate initial widget properties (#8675) 2025-05-05 15:26:16 +12:00
Clyde Stubbs c7523ace78 [lvgl] Fix image property processing (#8691) 2025-05-05 12:31:22 +12:00
Clyde Stubbs 2a6827e1d2 [lvgl] Allow padding to be negative (#8671) 2025-05-05 12:30:11 +12:00
Clyde Stubbs 125aff79ec [as3935_i2c] Remove redundant includes (#8677) 2025-05-05 12:28:00 +12:00
Clyde Stubbs a31d8ec309 [packages] Allow list instead of dict for packages (#8688) 2025-05-05 12:26:59 +12:00
Clyde Stubbs 3ed03edfec [display] Fix Rect::inside (#8679) 2025-05-05 12:04:33 +12:00
Clyde Stubbs 4dc6cbe2d7 [esp32_ble_server] Add appearance advertising field (#8672) 2025-05-05 12:02:33 +12:00
Clyde Stubbs 524cd4b4e3 [packet_transport] Extract packet encoding functionality (#8187) 2025-05-05 09:29:17 +12:00
Thomas Rupprecht 84ebbf0762 [climate_ir_lg] use this-> (#8687) 2025-05-05 09:21:57 +12:00
Thomas Rupprecht 670ad7192c unify lowercase x in hexadecimal values (#8686) 2025-05-05 08:47:57 +12:00
Pat Satyshur bc6ee20270 Add CONF_CONTINUOUS to const.py (#8682) 2025-05-03 22:44:54 -05:00
Thomas Rupprecht e869a3aec3 [climate] Fix typo and use `this->` (#8678) 2025-05-03 22:41:52 -05:00
Jani 8aff6d2fdd Add GDEY0583T81 support (#8668) 2025-05-03 13:02:35 +10:00
Michał Obrembski 8d33c6de36 Added Banking support to tca9555, fixed input bug (#8003)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-03 10:54:27 +12:00
DJTerentjev f4b5f32cb4 Update const.py (#8665) 2025-05-01 20:43:58 -05:00
Kevin Ahrendt 2eb9582d0f [micro_wake_word] Clarify spectrogram features calculation (#8669) 2025-05-01 14:04:23 -05:00
Kevin Ahrendt db97440b04 [microphone] Add software mute and fix wrong type for automations (#8667) 2025-05-01 14:02:33 -05:00
Kevin Ahrendt ced7ae1d7a [debug] add missing header (#8666) 2025-05-01 08:50:32 -04:00
Trent Houliston d6699fa3c0 Check for missed pulse_meter ISRs in the main loop (#6126) 2025-05-01 12:29:12 +00:00
functionpointer 836e5ffa43 [mlx90393] Add verification for register contents (#8279)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-02 00:01:02 +12:00
Kevin Ahrendt c7f597bc75 [voice_assistant] voice assistant can configure enabled wake words (#8657) 2025-05-01 11:11:09 +00:00
Clyde Stubbs e215fafebe [esp32, debug] Add `cpu_frequency` config option and debug sensor (#8542) 2025-05-01 03:28:07 -05:00
Ralf Habacker da9c755f67 Add to_ntc_resistance|temperature sensor filter (esphome/feature-requests#2967) (#7898)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-05-01 07:53:12 +00:00
Clyde Stubbs 087ff865a7 [binary_sensor] initial state refactor (#8648)
Co-authored-by: Zsombor Welker <flaktack@welker.hu>
2025-05-01 15:58:35 +12:00
scaiper 8cd62c0308 support self-signed cert in mqtt (#8650) 2025-05-01 15:57:52 +12:00
rwrozelle f5241ff777 Fix CONFIG_LWIP_TCP_RCV_SCALE and CONFIG_TCP_WND_DEFAULT (#8425) 2025-05-01 15:55:30 +12:00
Clyde Stubbs 1aa2b79311 [i2c] Allow buffers in PSRAM (#8640) 2025-05-01 03:54:56 +00:00
Benjamin Pearce 2dca2d5f85 Daikin IR Climate Remote Target Temperature and Fan Modes (#7946)
Co-authored-by: Benjamin Pearce <gitlab@bcpearce.com>
2025-05-01 15:52:51 +12:00
lastradanet f03b42ced5 Adding timing budget support for vl53l0x (#7991)
Co-authored-by: Brian Davis <bdavis@mimecast.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-05-01 15:17:27 +12:00
Jesse Hills 0f8a0af244 [defines] Fix USE_MICRO_WAKE_WORD position (#8663) 2025-04-30 21:32:23 -05:00
Keith Burzinski 62646f5f32 [remote_base] Fix compile error on IDF (#8664) 2025-04-30 21:30:36 -05:00
uae007 71f81d2f18 Component pca9685 - phase_begin always set to zero (#8379)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-05-01 02:27:59 +00:00
nworbneb 4ec8414050 [alarm_control_panel] Allow sensor to trigger when alarm disarmed (#7746) 2025-05-01 14:27:14 +12:00
Anton Sergunov 807925fd38 Fix second scrolling run ussue (#8347) 2025-05-01 14:03:35 +12:00
Pat Satyshur b597565165 Add a function to return the I2C address from an I2CDevice object (#8454)
Co-authored-by: Djordje Mandic <6750655+DjordjeMandic@users.noreply.github.com>
2025-05-01 13:14:29 +12:00
Jannik 9a9b91b180 Fix HLW8012 sensor not returning values if change_mode_every is set to never (#8456) 2025-05-01 13:12:51 +12:00
Simon 9dcf295df8 [gree] Add support for YAG remotes (#7418) 2025-05-01 13:12:17 +12:00
Andrew J.Swan e8a3de2642 Bump FastLed version to 3.9.16 (#8402) 2025-05-01 13:07:55 +12:00
Ben Winslow d2b4dba51f Fix typo preventing tt21100 from autosetting the touchscreen res. (#8662) 2025-05-01 12:55:36 +12:00
Kevin Ahrendt bf527b0331 [microphone] Bugfix: protect against starting mic if already started (#8656) 2025-05-01 12:45:33 +12:00
Kevin Ahrendt cdc77506de [micro_wake_word] add new VPE features (#8655) 2025-05-01 12:22:48 +12:00
Stanislav Meduna 6de6a0c82c Only warn if the component blocked for a longer time than the last time (#8064) 2025-05-01 11:57:01 +12:00
Kevin Ahrendt 20062576a3 [i2s_audio] Move microphone reads into a task (#8651)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-30 21:50:56 +12:00
Clyde Stubbs 07ba9fdf8f [canbus] Add callback for use by other components (#8578)
Co-authored-by: clydeps <U5yx99dok9>
2025-04-30 21:10:54 +12:00
Jesse Hills caa255f5d1 [media_player] Fix actions with id as value (#8654) 2025-04-30 20:08:46 +12:00
StriboYar c0be2c14f3 [debug] Fix compile errors when using the ESP32-C2 (#7474)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-04-30 06:15:56 +00:00
Kevin Ahrendt 9f629dcaa2 [i2s_audio, microphone, micro_wake_word, voice_assistant] Use microphone source to process incoming audio (#8645)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-30 10:27:03 +12:00
Thomas Rupprecht 0fe6c65ba3 [adc] sort variants and add links to reference implementations (#8327) 2025-04-29 15:08:08 -05:00
Thomas Rupprecht c756bb3b3e [pmsa003i] code improvements (#8485) 2025-04-29 14:29:04 -05:00
Jesse Hills ecb91b0101 [bluetooth_proxy] Allow changing active/passive via api (#8649) 2025-04-29 12:43:55 +00:00
cvwillegen 5f9a509bdc Add code to send/receive GoBox infrared control messages. (#7554)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-29 20:21:05 +12:00
Jesse Hills dc6dd9fe0d Merge branch 'release' into dev 2025-04-29 14:21:09 +12:00
Jesse Hills 5baa034d0d Merge pull request #8647 from esphome/bump-2025.4.1
2025.4.1
2025-04-29 14:20:26 +12:00
Thomas Rupprecht b8ba26787e [pmsx003] Refactor Imports, Extract Constants, Improve Data Handling & Logging (#8344) 2025-04-28 19:24:48 -05:00
Kevin Ahrendt 844569e96b [audio, microphone] Add MicrophoneSource helper class (#8641)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-29 00:05:07 +00:00
Jesse Hills 43580739ac Ensure new const file stays in order (#8642) 2025-04-28 18:58:13 -05:00
aanban c9f7ab6948 add beo4_protocol to remote_base component (#8307) 2025-04-29 11:50:40 +12:00
Jesse Hills 7900660bb8 Bump version to 2025.4.1 2025-04-29 11:46:20 +12:00
Steffen Banhardt f096567ac7 Update ens160_base.cpp – fix wrong double negative (#8639) 2025-04-29 11:46:19 +12:00
Clyde Stubbs 5bfb5ccc34 [core] Fix setting of log level/verbose (#8600) 2025-04-29 11:46:19 +12:00
Jesse Hills 1c60038111 [watchdog] Fix for variants with single core (#8602) 2025-04-29 11:46:19 +12:00
Clyde Stubbs b940db6549 [online_image] Fix printf format; comment fixes (#8607) 2025-04-29 11:46:19 +12:00
J. Nick Koston aa6e172e14 Fix BLE connection loop caused by timeout and pending disconnect race (#8597) 2025-04-29 11:46:19 +12:00
Clyde Stubbs 86033b6612 [lvgl] Ensure pages are created on the correct display (#8596) 2025-04-29 11:46:19 +12:00
Jesse Hills 59b4a1f554 Fix psram below idf 5 (#8584) 2025-04-29 11:46:19 +12:00
Jesse Hills b5bdfb3089 [http_request] Fix request headers (#8644)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-29 11:45:41 +12:00
Jesse Hills a31a5e74bd [const] Move CONF_GAIN_FACTOR to const.py (#8646) 2025-04-29 11:35:38 +12:00
Jesse Hills 629481a526 [esp32_ble] Remove explicit and now incorrect ble override for esp32-c6 (#8643) 2025-04-29 10:46:39 +12:00
Steffen Banhardt 3291a11824 Update ens160_base.cpp – fix wrong double negative (#8639) 2025-04-29 07:18:46 +12:00
baal86 d2ee2d3b23 Fix support for ESP32-H2 in deep_sleep (#8290) 2025-04-28 00:21:24 -05:00
Nate Clark 253e3ec6f6 [mdns] Support templatable config options for MDNS extra services (#8606) 2025-04-28 16:27:39 +12:00
Ben Winslow fdc4ec8a57 [touchscreen] Clear interrupt flag before reading touch data. (#8632) 2025-04-28 14:29:47 +12:00
Lucas Hartmann 1da0dff8b1 Take advantage of clipping to speed image drawing. (#8630) 2025-04-28 14:18:47 +12:00
Clyde Stubbs 38dae8489e [http_request] Implement for host platform (#8040) 2025-04-28 13:45:28 +12:00
Clyde Stubbs 22c0e1079e [const] Create component-level const repository (#8385) 2025-04-28 12:23:18 +12:00
Clyde Stubbs 2d3f141140 [core] Fix setting of log level/verbose (#8600) 2025-04-28 12:19:50 +12:00
Kevin Ahrendt e49252ca3d [voice_assistant] Use mic callback and remove esp_adf code (#8627)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-28 00:15:28 +00:00
Kevin Ahrendt c9d1476ae0 [voice_assisant] support start/continue conversation and deallocate buffers (#8610) 2025-04-28 11:30:21 +12:00
Kevin Ahrendt ee646d7324 [micro_wake_word] Use microphone callback and avoid unnecessary allocation attempts (#8626) 2025-04-28 11:23:25 +12:00
Kevin Ahrendt e557bca420 [i2s_audio] Microphone reads in loop for callbacks shouldn't ever delay (#8625) 2025-04-28 11:19:01 +12:00
Jesse Hills adcd6517db [docker] Use new base container image (#8582) 2025-04-28 11:14:50 +12:00
Thomas Rupprecht 4c8f5275f9 replace http with https (#8628) 2025-04-25 14:47:45 -05:00
dependabot[bot] 526db0102c Bump actions/setup-python from 5.5.0 to 5.6.0 in /.github/actions/restore-python (#8616) 2025-04-24 16:18:33 -10:00
dependabot[bot] 8a3fe9ce4c Bump actions/setup-python from 5.5.0 to 5.6.0 (#8618) 2025-04-24 16:18:13 -10:00
dependabot[bot] fb97ef33a8 Bump setuptools from 78.1.0 to 79.0.1 (#8614)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 16:17:39 -10:00
dependabot[bot] 805a6d85a5 Bump ruff from 0.11.6 to 0.11.7 (#8615)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 16:12:13 -10:00
dependabot[bot] 8f9fbb15b8 Bump docker/build-push-action from 6.15.0 to 6.16.0 in /.github/actions/build-image (#8619)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 15:31:50 -10:00
Guillermo Ruffino 3d24dea455 fix schema-gen-ci failures (#8621) 2025-04-24 15:30:22 -10:00
dependabot[bot] 666d5374ea Bump actions/download-artifact from 4.2.1 to 4.3.0 (#8617)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 13:08:24 -10:00
luar123 6792ff6d58 [i2s_audio, i2s_audio_microphone, i2s_audio_speaker] Add basic support for new esp-idf 5.x.x i2s driver. (#8181) 2025-04-24 15:33:58 -05:00
Guillermo Ruffino f29ccb9e75 Schema gen action (#8593)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-04-24 15:43:37 +12:00
Jesse Hills 911bd54765 [watchdog] Fix for variants with single core (#8602) 2025-04-23 03:49:33 -05:00
Clyde Stubbs 89b1b12993 [online_image] Fix printf format; comment fixes (#8607) 2025-04-23 03:47:15 -05:00
Djordje Mandic 33d79e03d9 [sht4x] Reduce warn spam, added communication check in setup (#8250)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-23 03:45:29 -05:00
Craig Andrews 991f3d3a10 [http_request] Ability to get response headers (#8224)
Co-authored-by: guillempages <guillempages@users.noreply.github.com>
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-04-23 14:30:50 +10:00
J. Nick Koston 97823ddd16 Rewrite BLE scanner to use a state machine (#8601) 2025-04-22 08:09:28 -10:00
Vasil Kalchev 6ff180152a Implement min_power for component ac_dimmer using method trailing (#8472) 2025-04-22 07:39:21 -03:00
bdm310 dbb7cbed3e [lvgl] Fix unexpected widget update behavior (#8260) 2025-04-22 20:13:43 +10:00
J. Nick Koston fbf00f0af4 Fix BLE connection loop caused by timeout and pending disconnect race (#8597) 2025-04-22 21:17:09 +12:00
Roving Ronin 82c6a40371 Update const.py - Add UNIT_MEGAJOULE = "MJ" (#8594) 2025-04-22 09:13:31 +12:00
Clyde Stubbs 0242ac56df [lvgl] Ensure pages are created on the correct display (#8596) 2025-04-22 08:51:52 +12:00
J. Nick Koston b82666002d Bump esp-idf to 5.1.6 (#8566)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-04-18 05:21:07 +00:00
Jonathan Swoboda e11883e431 [psram] Add version check to fix 5.3.2 (#8588) 2025-04-17 21:06:41 -05:00
dependabot[bot] ff5b9df607 Bump ruff from 0.11.5 to 0.11.6 (#8587)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 20:24:31 +00:00
Jesse Hills e5b7e3039a Fix psram below idf 5 (#8584) 2025-04-17 00:04:43 -05:00
Jonathan Swoboda 31ed1eb6f0 [remote_receiver] Filtering fixes (#7777)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2025-04-16 23:33:46 -05:00
Michael Giacomelli 0c3daab649 Remove duplicate co2 and pressure constants (#8583) 2025-04-17 13:40:33 +12:00
dependabot[bot] 816371e3e9 Bump aioesphomeapi from 29.10.0 to 30.0.1 (#8579) 2025-04-16 15:24:15 -10:00
David Woodhouse 3c7bb65a23 Sort resolved IP addresses for dashboard (#8536)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-04-17 13:19:55 +12:00
Jonathan Swoboda 4a65fd76b3 [internal_temperature] Add p4 ifdefs (#8484) 2025-04-17 13:19:33 +12:00
Clyde Stubbs 2704db5eef [analog_threshold] Make thresholds templatable (#8452) 2025-04-17 13:19:12 +12:00
Clyde Stubbs f10bc73d31 [mapping] Implement yaml-configured maps (#8333) 2025-04-17 13:18:48 +12:00
Clyde Stubbs 55e099450c [uptime] Add format config for text_sensor (#8304) 2025-04-17 13:18:08 +12:00
Andrew J.Swan 248dbd32a5 Add CUBIC PM2005/PM2105 Laser Particle Sensor Module (#8292)
Co-authored-by: Djordje <6750655+DjordjeMandic@users.noreply.github.com>
2025-04-17 13:17:35 +12:00
Jonathan Swoboda a7b676231a [esp32_rmt_led_strip] Add use_dma option (#8270) 2025-04-17 13:16:10 +12:00
Keith Burzinski 2fd5f9ac58 [api] Allow noise encryption key to be set at runtime (#7296)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-17 13:15:25 +12:00
Jordan Zucker ca4838a5f4 [prometheus] Add climate metrics (#8247) 2025-04-17 13:13:24 +12:00
Jesse Hills 1b72550236 Merge branch 'release' into dev 2025-04-17 12:56:09 +12:00
Jesse Hills 71afd49e3e Merge pull request #8581 from esphome/bump-2025.4.0
2025.4.0
2025-04-17 12:55:25 +12:00
Thomas Rupprecht e5d718d1b1 fix typo USE_ESP32_VARIANT_ESP32H6 (#8580) 2025-04-16 21:23:58 +00:00
Jesse Hills 61f33d6401 Bump version to 2025.4.0 2025-04-17 09:03:08 +12:00
Jesse Hills af9b568778 Merge branch 'beta' into dev 2025-04-16 12:13:17 +12:00
Jesse Hills 4a1eec567f Merge pull request #8573 from esphome/bump-2025.4.0b3
2025.4.0b3
2025-04-16 12:12:43 +12:00
Jesse Hills 5706b8476f Bump version to 2025.4.0b3 2025-04-16 08:48:38 +12:00
Marius Greuel 8981a86793 SML runtime optimizations (#8571) 2025-04-16 08:48:38 +12:00
Guillermo Ruffino a7fd6dc382 Fix vscode validation not showing error squiggles (#8500)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-16 08:48:38 +12:00
dependabot[bot] cb0a87c1f9 Bump zeroconf from 0.146.4 to 0.146.5 (#8569)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-16 08:48:38 +12:00
Jonathan Swoboda b913a0b178 [am2315c] Use warning not fail during update (#8499) 2025-04-16 08:48:38 +12:00
David Woodhouse 214454ff51 Fix '--device MQTT' for devices with static IP (#8535) 2025-04-16 08:48:38 +12:00
J. Nick Koston 3677ef71d1 Add typing to protobuf code generator (#8541) 2025-04-16 08:19:22 +12:00
Marius Greuel 7e133171e0 SML runtime optimizations (#8571) 2025-04-16 07:58:14 +12:00
Guillermo Ruffino bc56d319b5 Fix vscode validation not showing error squiggles (#8500)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-16 07:52:07 +12:00
dependabot[bot] c423a6fb61 Bump codecov/codecov-action from 5.4.0 to 5.4.2 (#8572)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 19:48:51 +00:00
dependabot[bot] 4034bf4f04 Bump zeroconf from 0.146.4 to 0.146.5 (#8569)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 07:58:57 +00:00
Jonathan Swoboda 477abc05ae [am2315c] Use warning not fail during update (#8499) 2025-04-15 17:00:44 +12:00
David Woodhouse ff2b93a3e4 Fix '--device MQTT' for devices with static IP (#8535) 2025-04-15 16:30:07 +12:00
Calum McConnell a52d6388a9 Use python3 in place of python, as some systems don't emulate the former (#8568) 2025-04-15 04:13:37 +00:00
Clyde Stubbs 6259ca9ded [lvgl] Small buffers in internal RAM (#8523) 2025-04-15 13:10:44 +12:00
Jesse Hills f6ef50505b Merge branch 'beta' into dev 2025-04-15 12:13:03 +12:00
Jesse Hills b4cf437761 Merge pull request #8567 from esphome/bump-2025.4.0b2
2025.4.0b2
2025-04-15 12:12:31 +12:00
Jesse Hills 1d9f5f1f1e Bump version to 2025.4.0b2 2025-04-15 09:35:53 +12:00
Jonathan Swoboda e47489708e Bump esphome-dashboard to 20250415.0 (#8565) 2025-04-15 09:35:53 +12:00
dependabot[bot] 8e1bdcd211 Bump zeroconf from 0.146.3 to 0.146.4 (#8563)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-15 09:35:53 +12:00
dependabot[bot] 3432d73584 Bump aioesphomeapi from 29.9.0 to 29.10.0 (#8562)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 09:35:53 +12:00
Clyde Stubbs 2bb86641f8 [lvgl] Ensure captured lambdas are in correct order (#8560) 2025-04-15 09:35:53 +12:00
Mischa Siekmann 6ca72a3a26 Speaker-Media-Player: Fix potential deadlock in audio pipeline (#8548) 2025-04-15 09:35:53 +12:00
Clyde Stubbs c215098cb7 [lvgl] Add restore_value to select and number (#8494) 2025-04-15 09:35:53 +12:00
Clyde Stubbs 566968b6be [lvgl] Fix initial focus on roller (#8547) 2025-04-15 09:35:53 +12:00
Clyde Stubbs fe51ee6257 [axs15231] Don't overwrite manual dimensions (#8553) 2025-04-15 09:35:53 +12:00
J. Nick Koston 2c499b326a Include MAC address in noise hello (#8551) 2025-04-15 09:35:53 +12:00
Clyde Stubbs 7c4ab7abfe [lvgl] Fix use of image without canvas (Bugfix) (#8540) 2025-04-15 09:35:52 +12:00
Jonathan Swoboda 3c242b7296 Bump esphome-dashboard to 20250415.0 (#8565) 2025-04-14 21:03:43 +00:00
Jesse Hills 00dd5b8339 [ci] Pin codecov action to v5.4.0 (#8564) 2025-04-15 08:09:51 +12:00
dependabot[bot] a007a8237a Bump zeroconf from 0.146.3 to 0.146.4 (#8563)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-15 08:07:29 +12:00
dependabot[bot] 9b86cc37f0 Bump aioesphomeapi from 29.9.0 to 29.10.0 (#8562)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 08:06:48 +12:00
Clyde Stubbs 2dfcf950fa [lvgl] Ensure captured lambdas are in correct order (#8560) 2025-04-15 07:39:56 +12:00
Mischa Siekmann 5908b93e82 Speaker-Media-Player: Fix potential deadlock in audio pipeline (#8548) 2025-04-14 13:51:10 -05:00
Norbert Schulz 995db1f961 Add support for Waveshare 5.65" ACeP 7-Color display (#8557) 2025-04-14 12:02:40 +10:00
dependabot[bot] abcc656a6f Bump ruff from 0.11.4 to 0.11.5 (#8546)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-13 14:41:33 -10:00
tomaszduda23 4a9f323d92 [core] make require_framework_version generic (#8412) 2025-04-14 10:59:40 +12:00
Calum McConnell 34a4e70cc5 Update setup to make .temp directory (#8558) 2025-04-14 10:48:45 +12:00
Clyde Stubbs fb5d697c22 [lvgl] Add restore_value to select and number (#8494) 2025-04-14 10:45:30 +12:00
Clyde Stubbs df4642208e [lvgl] Fix initial focus on roller (#8547) 2025-04-14 10:41:42 +12:00
Clyde Stubbs 264e234efc [axs15231] Don't overwrite manual dimensions (#8553) 2025-04-14 10:41:11 +12:00
J. Nick Koston ca78dd44b5 Include MAC address in noise hello (#8551) 2025-04-12 09:16:14 -10:00
Jonathan Swoboda 7edf458898 [esp32] Allow pioarduino version 5.3.3 and 5.5.0 (#8526) 2025-04-11 21:34:43 -05:00
Clyde Stubbs d9873e24a7 [lvgl] Fix use of image without canvas (Bugfix) (#8540) 2025-04-10 01:28:44 +00:00
dependabot[bot] 645bd490ba Bump pytest-cov from 6.0.0 to 6.1.1 (#8537)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 10:28:22 -10:00
dependabot[bot] 27f6d00e7a Bump ruff from 0.11.2 to 0.11.4 (#8538)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-09 10:28:07 -10:00
Jesse Hills f9d668eeca Merge branch 'beta' into dev 2025-04-09 19:50:59 +12:00
Jesse Hills 92d1557efd Merge pull request #8534 from esphome/bump-2025.4.0b1
2025.4.0b1
2025-04-09 19:50:23 +12:00
Jesse Hills 6b930595e2 Bump version to 2025.5.0-dev 2025-04-09 14:19:05 +12:00
Jesse Hills 4a1cbfc533 Bump version to 2025.4.0b1 2025-04-09 14:19:05 +12:00
Clyde Stubbs 1f7a84cc8e [lvgl] Implement canvas widget (#8504) 2025-04-09 12:15:39 +12:00
David Woodhouse 8c5adfb33f real_time_clock: Apply timezone immediately in set_timezone() (#8531) 2025-04-09 12:03:38 +12:00
dependabot[bot] 399c9ba4be Bump pytest from 8.2.0 to 8.3.5 (#8528) 2025-04-08 23:38:06 +00:00
Clyde Stubbs a866370a2e [spi] Implement octal mode (#8386) 2025-04-09 11:07:59 +12:00
Clyde Stubbs 6240bfff97 [lvgl] Make line points templatable (#8502) 2025-04-09 11:03:29 +12:00
Clyde Stubbs 1c72fd4674 [lvgl] add on_boot trigger (#8498) 2025-04-09 11:00:39 +12:00
J. Nick Koston 2291a1dc39 Bump aioesphomeapi to 29.9.0 (#8522) 2025-04-09 10:58:26 +12:00
J. Nick Koston 8269e2c961 Ensure plaintext responds with bad indicator byte before dropping the connection (#8521) 2025-04-09 10:27:23 +12:00
Clyde Stubbs 23dec912ad [psram] Allow use of experimental 120MHz octal mode (#8519) 2025-04-07 12:49:40 +00:00
Clyde Stubbs 9637ef35bd [component] Show error message for failed component (#8478) 2025-04-07 09:26:34 +00:00
J. Nick Koston 23e5cdb30e Rework max connections for BLE to avoid exceeding the hard limit (#8303) 2025-04-07 00:48:12 +00:00
dependabot[bot] f3b1b11eba Bump flake8 from 7.0.0 to 7.2.0 (#8493)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-06 00:58:39 +00:00
dependabot[bot] 5ceba618f6 Bump setuptools from 76.0.0 to 78.1.0 (#8512)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-05 21:28:37 +00:00
victorclaessen 99d5ca3266 [ethernet_info] return actual ethernet MAC address (#8492)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-04-04 18:59:46 +11:00
Jonathan Swoboda 219ba6152c [CI] Clang tidy fixes for 5.3.2 (#8510)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-04-03 07:32:17 +00:00
Jonathan Swoboda ef0f969604 [core, qspi_dbi] Clang tidy fixes for 5.3.2 (#8509) 2025-04-03 02:03:04 -05:00
Curtis Malainey 82adcd656f [nau7802] fix bad blocking code (#8070) 2025-04-02 23:04:43 +00:00
Jesse Hills fe35eee8df Update emails from nabucasa to OHF (#8508) 2025-04-03 11:08:46 +13:00
Shivam Maurya 864dd69038 Bump platformio to 6.1.18 (#8430)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-02 21:38:13 +00:00
dependabot[bot] 79f198ebff Bump zeroconf from 0.146.1 to 0.146.3 (#8507)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 20:47:46 +00:00
dependabot[bot] 4b0622aa23 Bump voluptuous from 0.14.2 to 0.15.2 (#8506)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 10:14:12 -10:00
dependabot[bot] 4ecc72ed54 Bump pyupgrade from 3.15.2 to 3.19.1 (#8496)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 23:50:30 +13:00
dependabot[bot] 791740e554 Bump yamllint from 1.35.1 to 1.37.0 (#8495)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 23:18:01 +13:00
dependabot[bot] 6bccc7e389 Bump ruamel-yaml from 0.18.6 to 0.18.10 (#8446)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-02 23:17:34 +13:00
dependabot[bot] 655075e71b Bump actions/upload-artifact from 4.6.1 to 4.6.2 (#8435)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 23:17:08 +13:00
dependabot[bot] 1df1e3cf48 Bump actions/download-artifact from 4.1.9 to 4.2.1 (#8434)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 23:16:42 +13:00
dependabot[bot] 05e52cae2b Bump docker/login-action from 3.3.0 to 3.4.0 in the docker-actions group (#8408)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 23:16:31 +13:00
dependabot[bot] be60d9be9b Bump peter-evans/create-pull-request from 7.0.7 to 7.0.8 (#8362)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 23:16:17 +13:00
Oliver Kleinecke e3eb3ee5d2 Add support for MCP4461 quad i2c digipot/rheostat (#8180)
Co-authored-by: Oliver Kleinecke <kleinecke.oliver@googlemail.com>
Co-authored-by: Djordje Mandic <6750655+DjordjeMandic@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-04-01 23:55:06 +00:00
Clyde Stubbs 0812b3dd70 [lvgl] Add some defines (#8501) 2025-04-01 22:42:23 +00:00
NP v/d Spek 28a9f12595 Move CONF_DEFAULT to const.py (#8497) 2025-03-31 22:48:43 +00:00
Keith Burzinski 36b75c3faa Merge branch 'release' into dev 2025-03-31 17:07:16 -05:00
Keith Burzinski 584c5bd5be Merge pull request #8489 from esphome/bump-2025.3.3
2025.3.3
2025-03-31 17:07:02 -05:00
dependabot[bot] bc372dbeb2 Bump platformio from 6.1.16 to 6.1.18 (#8449)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 21:28:47 +00:00
dependabot[bot] 37a03de849 Bump async-timeout from 4.0.3 to 5.0.1 (#8491)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 20:57:23 +00:00
dependabot[bot] c8395cdf0a Bump pytest-asyncio from 0.25.3 to 0.26.0 (#8490)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 20:26:22 +00:00
Keith Burzinski 79c8a55459 Bump version to 2025.3.3 2025-03-31 12:48:16 -05:00
Kevin Ahrendt 36d6fe29f2 [speaker] Bugfixes: two pause state issues (#8488) 2025-03-31 12:48:16 -05:00
Clyde Stubbs e1868ddecb [lvgl] Implement switch restore (#8481) 2025-03-31 12:48:16 -05:00
Kevin Ahrendt 6151644b96 [speaker] Bugfix: Media player always unpauses when receiving a stop command (#8474) 2025-03-31 12:48:15 -05:00
J. Nick Koston a4914eb5b7 Bump ESP mdns to 1.8.2 (#8482) 2025-03-31 12:48:15 -05:00
Clyde Stubbs 57a57f0d6a [display] Don't assume glyph x_offset is zero. (#8473) 2025-03-31 12:48:15 -05:00
Kevin Ahrendt 7e9f93a290 [speaker] Bugfixes: two pause state issues (#8488) 2025-03-31 17:02:53 +00:00
dependabot[bot] 402ada07b5 Bump pytest-cov from 5.0.0 to 6.0.0 (#8462)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 14:33:00 +02:00
dependabot[bot] 9aa9abfc08 Bump actions/setup-python from 5.4.0 to 5.5.0 in /.github/actions/restore-python (#8467)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 14:28:21 +02:00
dependabot[bot] 4c1f83614b Bump actions/setup-python from 5.4.0 to 5.5.0 (#8468)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 14:28:11 +02:00
Clyde Stubbs d1763f9831 [psram] 120MHz does not work in octal mode (#8477) 2025-03-31 09:03:59 +00:00
dependabot[bot] c49391427f Bump ruff from 0.11.0 to 0.11.2 (#8461)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-31 01:52:10 +00:00
Clyde Stubbs c42343be3a [lvgl] Implement switch restore (#8481) 2025-03-30 09:09:19 +00:00
Kevin Ahrendt ffc233d99d [speaker] Bugfix: Media player always unpauses when receiving a stop command (#8474) 2025-03-30 08:41:08 +00:00
Jonathan Swoboda 5ed0046bdd [esp32] Allow pioarduino version 5.4.1 (#8480)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-29 07:28:10 +00:00
J. Nick Koston 2e16dd788c Bump ESP mdns to 1.8.2 (#8482) 2025-03-28 23:29:53 -05:00
Clyde Stubbs 58fe8b39b2 [scheduler] Properly handle millis() overflow (#8197) 2025-03-27 02:09:22 -05:00
Clyde Stubbs ccd55a8e84 [display] Don't assume glyph x_offset is zero. (#8473) 2025-03-27 00:31:55 +00:00
Patrick 4bb59ce1d1 [esp32_can] Configurable enqueue timeout (#8453) 2025-03-26 04:06:23 +00:00
Keith Burzinski bb988604c8 Merge branch 'release' into dev 2025-03-25 18:06:56 -05:00
Keith Burzinski 573088aadb Merge pull request #8469 from esphome/bump-2025.3.2
2025.3.2
2025-03-25 18:06:42 -05:00
Keith Burzinski 031b1c8bd0 Bump version to 2025.3.2 2025-03-25 15:22:11 -05:00
Keith Burzinski f95b2ba898 [ld2450] Fix bluetooth state not reported correctly (#8458) 2025-03-25 15:22:11 -05:00
Kevin Ahrendt ea4b573f9a [speaker] Bugfix: Fix rapidly adding items to playlist (#8466)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-25 15:22:11 -05:00
Kevin Ahrendt 8fcbd57f2f [media_player] Don't reset enqueue command (#8465) 2025-03-25 15:22:11 -05:00
Samuel Sieb f131186e6b fix 1bpp rendering (#8463) 2025-03-25 15:22:11 -05:00
Clyde Stubbs 20c7778524 [font] More robust handling of fixed font sizes. (#8443)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-25 15:22:11 -05:00
Clyde Stubbs 2d8e86324b [gt911][cst226][ektf2232] Swap x and y calibration values (#8450)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-25 15:22:10 -05:00
Keith Burzinski 2dfd28ba3e [ld2450] Fix bluetooth state not reported correctly (#8458) 2025-03-25 15:21:10 -05:00
Kevin Ahrendt 63221d7a1f [speaker] Bugfix: Fix rapidly adding items to playlist (#8466)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-25 20:20:56 +00:00
Kevin Ahrendt fb9a15f0af [media_player] Don't reset enqueue command (#8465) 2025-03-25 11:16:12 -05:00
Samuel Sieb ce2e966005 fix 1bpp rendering (#8463) 2025-03-25 19:33:53 +11:00
Jonathan Swoboda e7d1072c85 [core] Fix s2 build after crc header fix (#8459) 2025-03-24 18:04:25 -05:00
Clyde Stubbs bc999b50b3 [font] More robust handling of fixed font sizes. (#8443)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-24 09:35:42 +00:00
Clyde Stubbs 6cfe3ac44d [gt911][cst226][ektf2232] Swap x and y calibration values (#8450)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-24 09:07:21 +00:00
Jonathan Swoboda 6787730aa4 [core] Fix 5.4.0 build issue (#8455)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-24 02:46:31 +00:00
Keith Burzinski 48a7927a60 Merge branch 'release' into dev 2025-03-22 23:45:32 -05:00
Keith Burzinski 8ea4d8402f Merge pull request #8451 from esphome/bump-2025.3.1
2025.3.1
2025-03-22 23:45:18 -05:00
Keith Burzinski 2c53408cfc Bump version to 2025.3.1 2025-03-22 23:14:32 -05:00
Clyde Stubbs 33dce6e522 [lvgl] Ensure non-zero screen dimensions during init (#8444) 2025-03-22 23:14:32 -05:00
Clyde Stubbs e213932b7c [lvgl] Set correct buffer size (#8442) 2025-03-22 23:14:32 -05:00
Clyde Stubbs 42fb0e2809 [ft63x6] Get correct dimensions from display (#8417) 2025-03-22 23:14:31 -05:00
Clyde Stubbs acce0bc45b [lvgl] Ensure non-zero screen dimensions during init (#8444) 2025-03-22 23:09:29 -05:00
dependabot[bot] f5885de6f1 Bump pytest-asyncio from 0.23.6 to 0.25.3 (#8447)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-21 22:19:09 +00:00
dependabot[bot] 17e3bb7324 Bump aioesphomeapi from 29.6.0 to 29.7.0 (#8448)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-21 11:44:47 -10:00
Clyde Stubbs d891521ce2 [lvgl] Set correct buffer size (#8442) 2025-03-21 04:12:27 +00:00
Clyde Stubbs 3320e4112b [cli] Add --reset and --upload_speed options (#8380) 2025-03-20 21:38:59 -05:00
Jonathan Swoboda c0e4701e1d [esp32] Allow pioarduino versions 5.3.2 and 5.4.0 (#8440)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-20 21:31:58 -05:00
dependabot[bot] f3390ff7f5 Bump tzlocal from 5.2 to 5.3.1 (#8423)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 14:41:23 -10:00
dependabot[bot] dfbfb2a2bb Update wheel requirement from ~=0.43.0 to >=0.43,<0.46 (#8421)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 13:08:25 -10:00
dependabot[bot] 874026ca8f Bump pylint from 3.2.7 to 3.3.6 (#8441)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-03-20 22:07:38 +00:00
dependabot[bot] 4adda632bb Bump ruff from 0.9.2 to 0.11.0 (#8409) 2025-03-20 09:51:23 -10:00
Clyde Stubbs 6ea89644e7 [ft63x6] Get correct dimensions from display (#8417) 2025-03-19 23:37:44 -05:00
Keith Burzinski 64ff62c005 Merge branch 'release' into dev 2025-03-19 23:37:27 -05:00
Keith Burzinski c4de9e87e4 Merge pull request #8438 from esphome/bump-2025.3.0
2025.3.0
2025-03-19 23:37:13 -05:00
Keith Burzinski 918924d697 Bump version to 2025.3.0 2025-03-19 20:54:32 -05:00
dependabot[bot] 43805e6c56 Bump actions/cache from 4.2.2 to 4.2.3 (#8433)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 12:46:38 -10:00
dependabot[bot] 38bbfaccc6 Bump actions/cache from 4.2.2 to 4.2.3 in /.github/actions/restore-python (#8437)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 12:46:01 -10:00
Keith Burzinski 56b32aae11 Merge branch 'beta' into dev 2025-03-19 16:01:54 -05:00
Keith Burzinski e2c16b4baa Merge pull request #8436 from esphome/bump-2025.3.0b5
2025.3.0b5
2025-03-19 16:01:39 -05:00
Keith Burzinski 10a9162f48 Bump version to 2025.3.0b5 2025-03-19 14:36:04 -05:00
Kevin Ahrendt fbc884772c [audio] Bugfix: fix flac decoding glitches by using esp-audio-libs v1.1.3 (#8431) 2025-03-19 14:36:03 -05:00
Kevin Ahrendt cbf68f1fd2 [audio] Bugfix: fix flac decoding glitches by using esp-audio-libs v1.1.3 (#8431) 2025-03-19 10:14:42 -05:00
Keith Burzinski cf227d6f32 Merge branch 'beta' into dev 2025-03-18 15:21:26 -05:00
Keith Burzinski 54e3153f27 Merge pull request #8428 from esphome/bump-2025.3.0b4
2025.3.0b4
2025-03-18 15:21:15 -05:00
Keith Burzinski c2e0a01106 Bump version to 2025.3.0b4 2025-03-18 14:43:26 -05:00
Clyde Stubbs d2c2439b97 [core] Handle mis-typed platform name more cleanly (#8424) 2025-03-18 14:43:25 -05:00
Keith Burzinski a8d33dd26a [docker] Bump libfreetype (#8426) 2025-03-18 14:43:25 -05:00
Keith Burzinski da41a9204e [docker] Bump curl, git, openssh-client, libopenjp2-7, nginx-light (#8419) 2025-03-18 14:43:25 -05:00
Clyde Stubbs f993bb08c7 [core] Handle mis-typed platform name more cleanly (#8424) 2025-03-18 14:42:14 -05:00
Keith Burzinski afa481aeea [docker] Bump libfreetype (#8426) 2025-03-18 17:28:15 +13:00
Keith Burzinski dfb162e7a6 [docker] Bump curl, git, openssh-client, libopenjp2-7, nginx-light (#8419) 2025-03-17 01:55:29 -05:00
Keith Burzinski 098921b88f Merge branch 'beta' into dev 2025-03-16 01:54:05 -05:00
Keith Burzinski 5c6368b6b8 Merge pull request #8415 from esphome/bump-2025.3.0b3
2025.3.0b3
2025-03-16 01:53:55 -05:00
Keith Burzinski 9bd7060f6b Bump version to 2025.3.0b3 2025-03-16 01:23:06 -05:00
Mikkel Jeppesen fb1d178abc Added getters for graphs ymin and ymax (#8112)
Co-authored-by: guillempages <guillempages@users.noreply.github.com>
2025-03-16 01:23:06 -05:00
Clyde Stubbs 90c96a0a0f [font] Fix issues with bitmap fonts (#8407) 2025-03-16 01:23:05 -05:00
dependabot[bot] c63a545750 Bump esphome-glyphsets from 0.1.0 to 0.2.0 (#8403)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 21:36:12 -10:00
dependabot[bot] 89f82be4cd Bump puremagic from 1.27 to 1.28 (#8406)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 21:35:51 -10:00
dependabot[bot] c336dd9436 Bump setuptools from 69.2.0 to 76.0.0 (#8405)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 21:35:15 -10:00
Mikkel Jeppesen fa25cebed5 Added getters for graphs ymin and ymax (#8112)
Co-authored-by: guillempages <guillempages@users.noreply.github.com>
2025-03-15 18:55:20 +13:00
Clyde Stubbs 7679c716b3 [font] Fix issues with bitmap fonts (#8407) 2025-03-14 20:17:16 +11:00
Keith Burzinski 225e2585e8 Merge branch 'beta' into dev 2025-03-13 01:31:27 -05:00
Keith Burzinski 1bdf0fdc57 Merge pull request #8400 from esphome/bump-2025.3.0b2
2025.3.0b2
2025-03-13 01:31:17 -05:00
Keith Burzinski 4d95ff2ae0 Bump version to 2025.3.0b2 2025-03-12 23:23:27 -05:00
dependabot[bot] f36d400058 Bump tornado from 6.4 to 6.4.2 (#8398)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 23:23:26 -05:00
J. Nick Koston c63cf9d151 Bump cryptography to 44.0.2 (#8399) 2025-03-12 23:23:26 -05:00
J. Nick Koston 0a02c1461e Rework pyproject.toml to make it parseable by dependabot (#8397) 2025-03-12 23:23:26 -05:00
J. Nick Koston b3a69c6c05 Bump aioesphomeapi to 29.6.0 (#8396) 2025-03-12 23:23:26 -05:00
Kevin Ahrendt dd113f2972 [api] add voice assistant announce to the api (#8395) 2025-03-12 23:23:26 -05:00
Kevin Ahrendt 3c5a0091ee [core] add reallocation support to RAMAllocator (#8390) 2025-03-12 23:23:26 -05:00
Kevin Ahrendt bf65b73569 [speaker, resampler, mixer] Make volume and mute getters virtual (#8391) 2025-03-12 23:23:26 -05:00
Kevin Ahrendt a2b123a29a [audio, mixer] Memory and CPU performance improvements (#8387) 2025-03-12 23:23:25 -05:00
J. Nick Koston 3575f52cdf Bump mdns library to 1.8.0 (#8378)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-12 23:23:25 -05:00
dependabot[bot] c90185854e Bump tornado from 6.4 to 6.4.2 (#8398)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 23:22:08 -05:00
J. Nick Koston 7d8c39d295 Bump cryptography to 44.0.2 (#8399) 2025-03-12 23:21:45 -05:00
J. Nick Koston 59d282489a Rework pyproject.toml to make it parseable by dependabot (#8397) 2025-03-13 01:16:59 +00:00
J. Nick Koston f9a0a63290 Bump aioesphomeapi to 29.6.0 (#8396) 2025-03-13 01:00:31 +00:00
Kevin Ahrendt 00000e0ea8 [api] add voice assistant announce to the api (#8395) 2025-03-12 14:35:10 -10:00
Kevin Ahrendt bd853e6883 [core] add reallocation support to RAMAllocator (#8390) 2025-03-13 07:04:05 +11:00
Kevin Ahrendt 64d1d93fe0 [speaker, resampler, mixer] Make volume and mute getters virtual (#8391) 2025-03-12 14:34:38 -05:00
Kevin Ahrendt 266c2ef337 [audio, mixer] Memory and CPU performance improvements (#8387) 2025-03-12 14:18:31 -05:00
J. Nick Koston 35199c9b96 Bump mdns library to 1.8.0 (#8378)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-12 14:18:21 -05:00
Keith Burzinski 0a29138045 Merge branch 'beta' into dev 2025-03-12 03:40:43 -05:00
Keith Burzinski 52269305ec Merge pull request #8389 from esphome/bump-2025.3.0b1
2025.3.0b1
2025-03-12 03:40:31 -05:00
Keith Burzinski 04dc0ed129 Bump version to 2025.4.0-dev 2025-03-12 01:11:50 -05:00
Keith Burzinski 37fabd7c0a Bump version to 2025.3.0b1 2025-03-12 01:11:50 -05:00
djasper-ha 4aa7ad1e33 mcp2515: Add missing CFG1 assignment to be able to use 50kbps with a 16MHz crystal. (#8375) 2025-03-11 22:31:01 +11:00
J. Nick Koston 42e432754e Bump zeroconf to 0.146.1 (#8365)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-11 08:08:02 +00:00
Shivam Maurya 2379f02008 Bump esptool to 4.8.1latest (#8367)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-03-11 02:34:47 -05:00
J. Nick Koston d3145dd95b Bump aioesphomeapi to 29.5.1 (#8364) 2025-03-11 02:31:09 -05:00
Clyde Stubbs ab77dd691b Revert "[io_bus] Initial implementation" (#8384) 2025-03-11 20:02:01 +13:00
Clyde Stubbs b54c0fd60a [cst816] Remove binary sensor (#8377) 2025-03-09 23:54:40 -05:00
Clyde Stubbs 75d1eeeffe [touchscreen] Axis swap bugfix (#8376) 2025-03-09 22:04:34 -05:00
Dennis Marinus 10cea51739 allow touchscreen buttons outside of display dimensions (#8296)
Co-authored-by: Dennis Marinus <dmarinus@apple.com>
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-03-08 10:41:54 +11:00
Quentin Raynaud 83e090cc7e [time] fix recalc_timestamp_local (#8239) 2025-03-07 00:34:04 -08:00
Clyde Stubbs 583f8f598a [lvgl] Fix initialisation race condition (Bugfix) (#8369) 2025-03-07 01:58:21 -06:00
Chris Djali 3e9556c6c2 Initialise h-bridge switch to requested initial state (#8363) 2025-03-06 16:43:04 -08:00
Kevin Ahrendt 83cba0d7bd [i2s_audio] Bugfix: Speaker incorrectly delays when sending data (#8361) 2025-03-05 21:32:45 -06:00
tomaszduda23 1d6d0d66dc [udp] fix clang tidy (#8351) 2025-03-03 15:08:42 -06:00
Gustavo de León 4ed78023b6 [bmp085] Fix error in read of pressure (#8359) 2025-03-03 15:06:30 -06:00
Damien Sorel 323209523b [ld2450] fix null exception & zone target_count not published (#8348)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-03-03 10:44:15 -06:00
Jesse Hills 46a4f4eba9 Merge branch 'release' into dev 2025-03-03 21:24:04 +13:00
Jesse Hills 53fda0e96d Merge pull request #8358 from esphome/bump-2025.2.2
2025.2.2
2025-03-03 21:23:20 +13:00
Jesse Hills 0350eafc1e [helpers] Allow RAMAllocator to be told the size of the object manually (#8356) 2025-03-03 01:11:19 -06:00
Jesse Hills 7b8e68c73a Bump version to 2025.2.2 2025-03-03 17:15:40 +13:00
Jesse Hills db666e44a7 [ltr390] Move calculation to allow dynamic setting of gain and resolution (#8343) 2025-03-03 17:15:40 +13:00
J. Nick Koston 903d033e0f Bump aioesphomeapi to 29.3.2 (#8353) 2025-03-03 17:15:40 +13:00
Kevin Ahrendt 19d938ce48 [audio] Determine http timeout based on duration since last successful read (#8341) 2025-03-03 17:15:40 +13:00
J. Nick Koston 653318479a Fix end_of_scan_ not being called while disconnecting (#8328) 2025-03-03 17:15:40 +13:00
Jesse Hills 2af5fd5210 [ltr390] Move calculation to allow dynamic setting of gain and resolution (#8343) 2025-03-03 15:35:52 +13:00
J. Nick Koston 29e388b231 Bump aioesphomeapi to 29.3.2 (#8353) 2025-03-03 15:35:32 +13:00
Jesse Hills d9e23fdb5c [dashboard] Rename trash/delete to archive (#8357) 2025-03-03 15:24:05 +13:00
dependabot[bot] 10eacaccba Bump docker/setup-qemu-action from 3.5.0 to 3.6.0 in the docker-actions group (#8346)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-02 22:23:26 +01:00
Samuel Sieb 23687b2afd [tmp1075] fix component for TMP1075N (#8317) 2025-03-02 07:10:18 -08:00
Clyde Stubbs f11ad9ad5b [io_bus] Initial implementation (#8227) 2025-02-28 16:04:36 +13:00
Timo Beckers 74a25a7e76 Cover component for Tormatic and Novoferm garage doors (#5933) 2025-02-28 15:57:30 +13:00
Kevin Ahrendt 23e04e18f8 [audio] Determine http timeout based on duration since last successful read (#8341) 2025-02-28 11:43:51 +13:00
tomaszduda23 aed5020a83 [nrf52, core] unified way how all platforms handle SplitDefault (#7715)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-28 09:24:28 +13:00
Jesse Hills 476f1b701b [zeroconf] Ruff formatting (#8338) 2025-02-28 09:12:21 +13:00
dependabot[bot] 7c3a7b68d3 Bump actions/cache from 4.2.1 to 4.2.2 in /.github/actions/restore-python (#8337)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-28 09:12:04 +13:00
dependabot[bot] 75dc0d3fb7 Bump actions/cache from 4.2.1 to 4.2.2 (#8336)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-28 09:11:40 +13:00
Clyde Stubbs 9bc4f68d87 [font] Use freetype instead of Pillow for font rendering (#8300) 2025-02-28 08:50:51 +13:00
functionpointer 1029202848 [mlx90393] Fix inverted gain and resolution. Expose temperature_compensation and hallconf. (#7635)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-28 07:28:12 +13:00
dependabot[bot] a831905bba Bump docker/build-push-action from 6.14.0 to 6.15.0 in /.github/actions/build-image (#8332)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-28 07:00:23 +13:00
dependabot[bot] faffd79545 Bump actions/download-artifact from 4.1.8 to 4.1.9 (#8331)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-28 07:00:10 +13:00
dependabot[bot] 7714147071 Bump the docker-actions group with 2 updates (#8330)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-28 06:59:58 +13:00
Keith Burzinski 4da42dedc8 [ld2450] Fix misplaced `ifdef` and related logic (#8335) 2025-02-28 06:58:19 +13:00
J. Nick Koston 28f283d545 Fix end_of_scan_ not being called while disconnecting (#8328) 2025-02-28 06:56:55 +13:00
J. Nick Koston 3048f303c5 dashboard: Implement automatic ping fallback (#8263) 2025-02-27 15:17:07 +00:00
J. Nick Koston 63a7234767 Include the bluetooth mac address in the device info when proxy is enabled (#8203) 2025-02-27 13:37:11 +00:00
Anton Viktorov c19621e238 MSA311 and MSA301 accelerometer support (#6795)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-02-27 14:48:47 +11:00
barchasse38 bc96eb9d52 Update arduino-heatpumpir and add new protocol for Panasonic AC (#8309) 2025-02-26 04:29:33 -06:00
Keith Burzinski 7375dde39c [ld2450] Fix for "unknown" sensor states (#8305) 2025-02-25 20:49:12 -06:00
Pawel 1b7111affb Add option to include vars in remote packages (#7606)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-26 14:02:51 +13:00
tomaszduda23 a511926aed [core] SplitDefault unit test (#8324) 2025-02-26 11:29:55 +13:00
Jesse Hills 6b36cb95c9 Merge branch 'release' into dev 2025-02-26 11:01:56 +13:00
Jesse Hills c13174c318 Merge pull request #8326 from esphome/bump-2025.2.1
2025.2.1
2025-02-26 11:01:14 +13:00
Jonathan Swoboda d5da341138 [i2c] Fix i2c issue on idf 5.3 (#8283) 2025-02-26 10:49:09 +13:00
Jesse Hills 8fa157581e Bump version to 2025.2.1 2025-02-26 09:49:22 +13:00
Keith Burzinski 7114d6bdd1 [esp32_touch] Fix variants, add tests for variants (#8320) 2025-02-26 09:49:22 +13:00
J. Nick Koston eca0c21966 Fix bluetooth race when disconnect called while still connecting (#8297) 2025-02-26 09:49:22 +13:00
esphomebot 20c9c410af Update webserver local assets to 20250224-195901 (#8312) 2025-02-26 09:49:22 +13:00
J. Nick Koston 79af437f48 Fix BLE max notifications with ESP-IDF 5.x (#8301) 2025-02-26 09:49:22 +13:00
J. Nick Koston 6e27003787 Bump aioesphomeapi to 29.1.1 (#8274) 2025-02-26 09:49:22 +13:00
tomaszduda23 b7b2f3e61c [core] make upload_program more generic (#8321) 2025-02-26 09:24:05 +13:00
Keith Burzinski 9448737a92 [esp32_touch] Fix variants, add tests for variants (#8320) 2025-02-26 09:14:39 +13:00
J. Nick Koston 6f2bf4ec4c Fix bluetooth race when disconnect called while still connecting (#8297) 2025-02-26 09:13:30 +13:00
kkosik20 54cea6c41e Adding support for chsc6x touch controller (#8258) 2025-02-25 15:03:28 +11:00
tomaszduda23 e754d0a58b [i2c] python code style (#8311) 2025-02-25 16:10:49 +13:00
Nick Kinnan 5e44a035a3 web_server: ensure fair network sharing + prevent lost state changes via deferred publish at high event load (#7538)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-25 13:19:31 +11:00
rforro c424fea524 ili9xxx: Add support for GC9D01N circle display (#8302) 2025-02-25 10:45:45 +11:00
Nick Kinnan 6aba1dbd73 [api] ensure fair network sharing + prevent lost state changes via deferred publish at high event load (#7547)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-25 10:20:21 +11:00
dependabot[bot] 422fb8f1a5 Bump actions/upload-artifact from 4.6.0 to 4.6.1 (#8295) 2025-02-25 10:04:00 +13:00
dependabot[bot] 2988bbb8ce Bump peter-evans/create-pull-request from 7.0.6 to 7.0.7 (#8314) 2025-02-25 10:03:18 +13:00
esphomebot 59299bffc8 Update webserver local assets to 20250224-195901 (#8312) 2025-02-25 10:02:54 +13:00
Kevin Ahrendt 3410aee42e [socket] add connect method (#8308) 2025-02-25 09:32:54 +13:00
J. Nick Koston 96682f5cbe Fix BLE max notifications with ESP-IDF 5.x (#8301) 2025-02-24 14:12:15 +00:00
J. Nick Koston bfa3254d6c Bump aioesphomeapi to 29.1.1 (#8274) 2025-02-24 07:34:20 +13:00
tomaszduda23 990d1e3bb0 [ota] set USE_OTA_VERSION 2 in defines (#8299) 2025-02-24 07:33:52 +13:00
tomaszduda23 755b0bbfc7 [core, dashboard] load external component to get get_download_types (#8139) 2025-02-22 14:19:17 -06:00
Katherine Whitlock c281351732 Finish up transition from black-format to ruff (#8294) 2025-02-21 13:02:55 -06:00
dependabot[bot] 9f603a474f Bump docker/build-push-action from 6.13.0 to 6.14.0 in /.github/actions/build-image (#8281)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 00:59:18 +01:00
Hareesh M U bf739506c3 [ld2450] Add new component (#5674)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Marcus Better <marcus@better.se>
Co-authored-by: Trevor Schirmer <24777085+TrevorSchirmer@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-20 03:16:08 -06:00
Katherine Whitlock 3020083564 Ruff format for CI (#8276) 2025-02-19 13:24:43 -06:00
Jesse Hills 31e90e5544 Merge branch 'release' into dev 2025-02-19 22:19:56 +13:00
Jesse Hills 7c9726859f Merge pull request #8275 from esphome/bump-2025.2.0
2025.2.0
2025-02-19 22:19:09 +13:00
dependabot[bot] 7529fb10b4 Bump actions/cache from 4.2.0 to 4.2.1 (#8271)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-19 16:46:22 +13:00
Jesse Hills ba79e2d7b1 Bump version to 2025.2.0 2025-02-19 13:40:15 +13:00
dependabot[bot] 7006bd24a5 Bump actions/cache from 4.2.0 to 4.2.1 in /.github/actions/restore-python (#8273) 2025-02-18 23:23:56 +00:00
Jesse Hills 58311c9a0d Merge branch 'beta' into dev 2025-02-19 10:44:39 +13:00
Jesse Hills ae65f76dfe Merge pull request #8272 from esphome/bump-2025.2.0b6
2025.2.0b6
2025-02-19 10:44:08 +13:00
Jesse Hills 4d380214df Bump version to 2025.2.0b6 2025-02-19 09:22:52 +13:00
J. Nick Koston c5ebf7683e Bump zeroconf to 0.145.1 (#8267) 2025-02-19 09:22:52 +13:00
G-Two a973adda67 Increase default repeat delay for Toto remote transmitter protocol (#8265) 2025-02-19 09:22:52 +13:00
J. Nick Koston d9b419eaf5 Bump openssh-client to 1:9.2p1-2+deb12u4 to fix docker builds (#8269) 2025-02-19 09:22:52 +13:00
J. Nick Koston 02bf33c548 Bump zeroconf to 0.145.1 (#8267) 2025-02-18 17:38:41 +00:00
G-Two b3db04a3d3 Increase default repeat delay for Toto remote transmitter protocol (#8265) 2025-02-19 06:30:03 +13:00
J. Nick Koston 56034e3e79 Bump openssh-client to 1:9.2p1-2+deb12u4 to fix docker builds (#8269) 2025-02-19 06:11:58 +13:00
J. Nick Koston abbd72e802 Use the process CPU count to determine how many children to create (#8268) 2025-02-19 06:10:33 +13:00
Jesse Hills 1257640e48 Merge branch 'beta' into dev 2025-02-18 14:14:05 +13:00
Jesse Hills 2bc9782ce7 Merge pull request #8264 from esphome/bump-2025.2.0b5
2025.2.0b5
2025-02-18 14:13:33 +13:00
Jesse Hills 6583e17810 Bump version to 2025.2.0b5 2025-02-18 13:39:42 +13:00
J. Nick Koston 64c8bcef2e Bump aioesphomeapi to 29.1.0 (#8105) 2025-02-18 13:39:42 +13:00
J. Nick Koston f9da8dbfb8 Replace glyphsets with esphome_glyphsets (#8261) 2025-02-18 13:39:42 +13:00
J. Nick Koston 74f7197543 Bump aioesphomeapi to 29.1.0 (#8105) 2025-02-17 16:27:06 -06:00
J. Nick Koston c21b8bd417 Switch to native arm runners for docker CI (#8262) 2025-02-18 11:19:11 +13:00
J. Nick Koston 1eb658cc5b Replace glyphsets with esphome_glyphsets (#8261) 2025-02-17 21:48:24 +00:00
Jesse Hills 8b251efb75 Merge branch 'beta' into dev 2025-02-17 13:10:17 +13:00
Jesse Hills 26d25464da Merge pull request #8259 from esphome/bump-2025.2.0b4
2025.2.0b4
2025-02-17 13:09:45 +13:00
Jesse Hills 78b55e22ee Bump version to 2025.2.0b4 2025-02-17 12:14:06 +13:00
Ali Jafri 9ee5227fe0 DHT platform now supports modules with inbuilt external resistor (#8257) 2025-02-17 12:14:06 +13:00
J. Nick Koston e89603fe3b Bump zeroconf to 0.144.3 (#8253) 2025-02-17 12:14:06 +13:00
Djordje Mandic c0804d665d [scd30] Increase minimal CONF_UPDATE_INTERVAL from 1 to 2 seconds (#8256) 2025-02-17 12:14:05 +13:00
Samuel Sieb a67b85eabf don't crash on null pages (#8254)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-02-17 12:14:05 +13:00
Ali Jafri a47e27885f DHT platform now supports modules with inbuilt external resistor (#8257) 2025-02-17 11:05:54 +13:00
J. Nick Koston 2e66b33672 Bump zeroconf to 0.144.3 (#8253) 2025-02-17 08:53:19 +13:00
Djordje Mandic e21ef22706 [scd30] Increase minimal CONF_UPDATE_INTERVAL from 1 to 2 seconds (#8256) 2025-02-17 08:09:42 +13:00
Samuel Sieb 93c2878c21 don't crash on null pages (#8254)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2025-02-16 01:02:51 -06:00
Jesse Hills b3ad6a03e6 Merge branch 'beta' into dev 2025-02-14 16:47:17 +13:00
Jesse Hills 6e45a7c9af Merge pull request #8251 from esphome/bump-2025.2.0b3
2025.2.0b3
2025-02-14 16:43:58 +13:00
Jesse Hills e17582544e Bump version to 2025.2.0b3 2025-02-14 14:28:42 +13:00
Jesse Hills daa7960031 Fix crash when storage file doesnt exist yet (#8249) 2025-02-14 14:28:41 +13:00
Dániel Márai 6999cc0581 Add support for the DAC on the S2 (#8030)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-14 14:28:41 +13:00
Jonathan Swoboda 92ad6286aa [logger] Fix bug causing global log level to be overwritten (#8248) 2025-02-14 14:28:41 +13:00
guillempages 1111aa167f [online_image]Fix reset if buffer not allocated (#8236) 2025-02-14 14:28:41 +13:00
Jesse Hills 143b0d3de4 Fix crash when storage file doesnt exist yet (#8249) 2025-02-14 14:27:11 +13:00
Dániel Márai 788c41e6f4 Add support for the DAC on the S2 (#8030)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-14 13:15:01 +13:00
Jonathan Swoboda 46b6dcdfbf [logger] Fix bug causing global log level to be overwritten (#8248) 2025-02-13 19:56:08 +00:00
Jesse Hills d05f641dd0 Merge branch 'beta' into dev 2025-02-13 21:31:40 +13:00
Jesse Hills 897873496a Merge pull request #8246 from esphome/bump-2025.2.0b2
2025.2.0b2
2025-02-13 21:31:05 +13:00
Jesse Hills b0f6dd7d9c Bump version to 2025.2.0b2 2025-02-13 20:44:12 +13:00
Keith Burzinski be5639faf1 [modbus_controller] Remove stream dependency (#8244) 2025-02-13 20:44:12 +13:00
Keith Burzinski e9a537784e [graph] Remove `stream` dependency (#8243) 2025-02-13 20:44:12 +13:00
Gábor Poczkodi 35d303809e [cse7766] Remove stream dependency (#7720)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-13 20:44:12 +13:00
Jesse Hills 4740f12ce8 [core] Fix `config_dir` for dashboard (#8242) 2025-02-13 20:44:12 +13:00
J. Nick Koston c8e7e275a4 Bump zeroconf to 0.144.1 (#8238) 2025-02-13 20:44:12 +13:00
Jesse Hills 077ee5b714 [core] Ignore dot-prefixed config entries when looking for target platform (#8240) 2025-02-13 20:44:12 +13:00
Keith Burzinski fa029e8fc7 [modbus_controller] Extend tests (#8245) 2025-02-13 20:40:02 +13:00
Keith Burzinski ace953bd50 [modbus_controller] Remove stream dependency (#8244) 2025-02-13 04:34:16 +00:00
Keith Burzinski e190ef9e9b [graph] Remove `stream` dependency (#8243) 2025-02-13 03:37:29 +00:00
Gábor Poczkodi 2868210d46 [cse7766] Remove stream dependency (#7720)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-13 03:07:14 +00:00
Jesse Hills 72f6461871 [core] Fix `config_dir` for dashboard (#8242) 2025-02-13 02:57:57 +00:00
J. Nick Koston 4a95468fd2 Bump zeroconf to 0.144.1 (#8238) 2025-02-13 14:17:00 +13:00
Jesse Hills 43319d4c8a [core] Ignore dot-prefixed config entries when looking for target platform (#8240) 2025-02-12 21:05:46 +00:00
guillempages 3b7a7a2262 [online_image]Fix reset if buffer not allocated (#8236) 2025-02-12 20:55:32 +11:00
Jesse Hills de2d21862b Merge branch 'beta' into dev 2025-02-12 17:24:36 +13:00
Jesse Hills 3d48eb26cd Merge pull request #8237 from esphome/bump-2025.2.0b1
2025.2.0b1
2025-02-12 17:24:00 +13:00
Jesse Hills ab0d38fbda Bump version to 2025.3.0-dev 2025-02-12 13:53:43 +13:00
Jesse Hills 2b75e34719 Bump version to 2025.2.0b1 2025-02-12 13:53:43 +13:00
Jesse Hills 0b6c416680 Bump esphome-dashboard to 20250212.0 (#8235) 2025-02-12 13:16:17 +13:00
Neil Ségard 7bb2c3c496 Add support for Waveshare 7.3" ACeP 7-Color display (#6380) 2025-02-12 10:31:56 +11:00
Michael Grüner 88cfdc33d4 GDEY042T81 e-paper displays support (#8061)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-02-12 10:17:34 +11:00
Daniël Koek a2f1b90238 Add GDEY029T94 support (#7931)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-02-12 10:16:33 +11:00
Rachasak Ragkamnerd 0401ee9428 added Waveshare BWR Mode for the 4.2in Display (#7995)
Co-authored-by: rrachasak <dev@rachasak.org>
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-02-12 08:35:07 +11:00
tmpeh 14d7931bd6 Added Waveshare e-paper display model "7.50inv2p" to the waveshare_epaper component. (#7751)
Co-authored-by: Tim Pehla <tim.pehla@uni-bielefeld.de>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-02-12 09:41:52 +13:00
Jordan Zucker 6b3f3e1da6 [prometheus] Adding valve entity metrics (#8223) 2025-02-12 08:51:55 +13:00
Kevin Ahrendt 33f9d66e81 [voice_assistant] Add announce support (#8232) 2025-02-12 07:20:39 +13:00
Kevin Ahrendt 46d19d82c2 [speaker] Bugfix: Ensure all audio is played after completely decoding a file (#8231) 2025-02-12 07:14:59 +13:00
guillempages c9e7562aff [online_image] Improve error handling (#8212) 2025-02-11 22:12:13 +11:00
guillempages 8b7aa4c110 [http_request]Use std::string for headers (#8225) 2025-02-11 11:39:03 +11:00
Táta GEEK b667ceaced Add waveshare 2.9inch e-Paper HAT (D) (#7906)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-02-11 11:35:56 +11:00
mystster abdf215d3a Add partial update of GDEW029T5 e-paper display (#8162)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-02-11 07:29:27 +11:00
Kevin Ahrendt 84836f15db [speaker] Media Player Components PR9 (#8171)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-11 08:00:23 +13:00
Jonathan Swoboda 8be9f02693 [ota] Increase socket timeout earlier in OTA script (#8129) 2025-02-10 17:42:40 +13:00
Igor Novgorodov 1ab1768b6a Add ADC sampling method option (#8131)
Co-authored-by: Djordje Mandic <6750655+DjordjeMandic@users.noreply.github.com>
2025-02-10 17:32:54 +13:00
Stefan Rado 0d13e2040d Don't activate venv in devcontainer (#8128) 2025-02-10 17:12:46 +13:00
Awesome Walrus fd24b1423c Fix pref conflict of WiFi creds and fast_connect (#8219) 2025-02-10 16:54:37 +13:00
Clyde Stubbs 66c35a9432 [waveshare_epaper] Rationalise and complete tests (#8221) 2025-02-10 16:46:05 +13:00
Craig Andrews 45b8810ab8 [online_image] Set Accept header (#8216) 2025-02-10 15:55:16 +13:00
Clyde Stubbs ff7d232ee6 [logger] Add runtime level select (#8222)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-10 15:53:26 +13:00
guillempages 0cd3af2fcd [online_image]Pin specific version of JPEG library (#8217) 2025-02-10 13:17:29 +13:00
Keith Burzinski 8897a9866d [CI] Consolidate some tests (T) (#8208) 2025-02-10 10:43:21 +13:00
Keith Burzinski dc8646cda6 [CI] Consolidate some tests (U, V, W, X, Y, Z) (#8210) 2025-02-10 10:43:17 +13:00
Keith Burzinski 353924257a [CI] Consolidate some tests (S) (#8206) 2025-02-10 10:43:10 +13:00
Keith Burzinski da3d007d7b Markdown tweaks/updates (#8211) 2025-02-10 10:40:19 +13:00
G-Two 9e3359cdf2 Add Toto protocol to remote receiver and transmitter (#8177) 2025-02-06 23:08:06 -06:00
Jonathan Swoboda 7e626b04f2 [esp32_rmt] Set pull-up and open-drain modes based on pin schema (#8178)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-06 22:09:24 -06:00
dependabot[bot] 4eb551864d Bump the docker-actions group with 2 updates (#8215)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-06 20:33:57 +01:00
bdm310 e337bd7beb [sdl] Implement binary sensors from keystrokes (#8207)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2025-02-05 21:53:23 +11:00
Jan Schröter 57739b8bb0 [uponor_smatrix] add target temperature as sensor (#7745) 2025-02-05 15:53:05 +13:00
Jordan Zucker 65ca000e6d [prometheus] Add update entity to prometheus metrics (#8173) 2025-02-05 15:43:44 +13:00
Keith Burzinski bf6874b52e [CI] Consolidate some tests (Q, R) (#8205) 2025-02-05 15:37:22 +13:00
Keith Burzinski cecce0f3cb [CI] Consolidate some tests (N, O, P) (#8204) 2025-02-05 15:37:15 +13:00
Clyde Stubbs 4d8f58db94 [preferences] Better handling of flash_write_interval (#8199) 2025-02-05 15:34:30 +13:00
Clyde Stubbs 977333a73c [lvgl] Make layouts work properly on base display (#8193) 2025-02-05 14:44:51 +13:00
Clyde Stubbs 1215d2ffeb [xxtea] Extract encryption functions to separate component (#8183)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-05 12:22:40 +13:00
Clyde Stubbs 9b56f9cc6d [lvgl] add triggers for swipe gestures (#8190) 2025-02-05 12:13:21 +13:00
Jonathan Swoboda 2e61229aed [i2c] Workaround for i2c on s2 (#8188) 2025-02-05 12:09:37 +13:00
Keith Burzinski 55203143df [CI] Consolidate some tests (I, J) (#8200) 2025-02-05 12:06:08 +13:00
Keith Burzinski 4e4566361f [CI] Consolidate some tests (M) (#8202) 2025-02-05 12:05:59 +13:00
Keith Burzinski 4273449003 [CI] Consolidate some tests (K, L) (#8201) 2025-02-05 12:05:53 +13:00
Keith Burzinski f8fae676b1 [CI] Consolidate some tests (H) (#8198) 2025-02-05 12:05:50 +13:00
Keith Burzinski 211aee91e5 [CI] Consolidate some tests (G) (#8196) 2025-02-05 12:05:45 +13:00
Keith Burzinski 6e3527a88b [CI] Consolidate some tests (F) (#8195) 2025-02-05 12:05:35 +13:00
Keith Burzinski 06f9764f51 [CI] Consolidate some tests (E) (#8191) 2025-02-05 12:05:24 +13:00
Keith Burzinski 693d813c4b [CI] Consolidate some tests (D) (#8189) 2025-02-05 12:05:17 +13:00
Keith Burzinski 61ad2510fc [CI] Consolidate some tests (C) (#8186) 2025-02-05 12:05:08 +13:00
Keith Burzinski 53c15f6716 [CI] Consolidate some tests (B) (#8185) 2025-02-05 12:05:02 +13:00
Keith Burzinski d4ac2d3c7e [CI] Consolidate some tests (A) (#8184) 2025-02-05 12:04:53 +13:00
Kevin Ahrendt 6f4e8f1fbf [mixer] Media Player Components PR8 (#8170)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-04 23:00:02 +00:00
Kevin Ahrendt 847cff06b3 [resampler] Media Player Components PR7 (#8169)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-05 09:18:11 +13:00
Jesse Hills bd34697715 Remove arm/v7 container image support (#8194) 2025-02-05 07:56:38 +13:00
Kevin Ahrendt 6b55df36c7 [audio] Media Player Components PR6 (#8168)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-04 15:58:35 +13:00
Kevin Ahrendt b8f9eaecd8 [audio] Media Player Components PR5 (#8167) 2025-02-03 23:47:50 +00:00
Kevin Ahrendt c8bbc2e84c [audio] Media Player Components PR4 (#8166)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-03 22:34:20 +00:00
Djordje Mandic 5108b9a8b7 Make get_flags() in GPIOPin mandatory (#8182)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-03 11:14:55 -06:00
Djordje Mandic 8de5af4eec Add virtual get_flags() to GPIOPin and implementation in InternalGPIOPin derivatives (#8151) 2025-02-02 21:55:55 -06:00
Kevin Ahrendt 6e5e681055 [audio] Media Player Components PR3 (#8165) 2025-02-03 02:54:55 +00:00
Kevin Ahrendt f6cf99384b [audio, i2s_audio, speaker] Media Player Components PR2 (#8164)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-02-03 15:25:41 +13:00
Kevin Ahrendt 2b711e532b [i2s_audio] Media Player Components PR1 (#8163) 2025-02-02 21:38:10 +01:00
J. Nick Koston 72c6f04a97 Bump zeroconf to 0.143.0 (#8104) 2025-02-02 21:35:52 +01:00
Rodrigo Martín 03e2701bd0 feat(core): Add support for <...> includes (#8132) 2025-02-02 21:34:38 +01:00
Jonathan Swoboda 051fa3a49f [remote_base] Add default value for offset in is_valid (#8159) 2025-02-01 04:13:38 -06:00
NicoIIT 7392397630 Use abspath for config path dir (#8044) 2025-01-29 15:03:42 +01:00
Jonathan Swoboda 714e2d3e56 [remote_transmitter] Fix issues with 32bit rollover on esp8266 and libretiny (#8056)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2025-01-29 07:34:10 -06:00
dependabot[bot] 12d6c1bbca Bump actions/setup-python from 5.3.0 to 5.4.0 in /.github/actions/restore-python (#8153)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 14:31:49 +01:00
dependabot[bot] 7727879f01 Bump actions/setup-python from 5.3.0 to 5.4.0 (#8154)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 14:30:30 +01:00
dependabot[bot] 334e952a34 Bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4 (#8137)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 13:40:31 +01:00
dependabot[bot] f9856135d0 Bump docker/build-push-action from 6.12.0 to 6.13.0 in /.github/actions/build-image (#8136)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-29 13:40:25 +01:00
Olliver Schinagl ba3e5e8ecb [climate] Accept °K as intended (#8134) 2025-01-30 00:27:55 +13:00
Jonathan Swoboda 67ccd0eb7f [esp32_rmt] Increase default symbols in led strip and remove IRAM config (#8133) 2025-01-29 04:51:04 -06:00
Clyde Stubbs 619ce93dec [display] Properly handle case of auto_clear_enabled: false (#8156) 2025-01-29 04:45:29 -06:00
Jimmy Hedman 9957840dfc Add multicast support to udp component (#8051) 2025-01-29 21:00:18 +11:00
Stefan Rado a23ce416ea Fix forgotten uses of use_transparency (#8115) 2025-01-29 14:54:10 +11:00
Clyde Stubbs 2489f95107 [logger] Ensure PRIu32 and friends are available (#8155) 2025-01-28 23:58:06 +00:00
guillempages 7dab1a6082 [online_image] Add JPEG support to online_image (#8127)
Co-authored-by: Jimmy Hedman <jimmy.hedman@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Rodrigo Martín <contact@rodrigomartin.dev>
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-01-29 10:35:43 +11:00
Rodrigo Martín f7f8bf4da4 [esp32_ble_server] Create custom services, characteristics and descriptors (#7009)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-01-28 22:00:28 +11:00
J. Nick Koston dd18a219db Include Bluetooth connection slot allocations in connections free message (#8148) 2025-01-28 06:57:52 +04:00
Jimmy Hedman dbf4c2c4da Update mdns for ESP-IDF (#8145) 2025-01-26 22:23:57 -06:00
guillempages fc847c1de8 [online_image] Code Improvements (#8130) 2025-01-24 07:32:03 +11:00
Jesse Hills 7fccc9ff86 [online_image] Add binary bmp support (#8116)
Co-authored-by: guillempages <guillempages@users.noreply.github.com>
2025-01-23 15:10:19 +13:00
Olliver Schinagl dee1d84979 [spi] Fix data type in bitbash transfer_() (#8125) 2025-01-22 23:41:55 +00:00
Oskari Lemmelä 65b2d48a6f Fix mqtt climate step rounding (#8121) 2025-01-23 12:32:45 +13:00
brambo123 8aeb08f868 [ads1115] Add sample rate control (#8102) 2025-01-23 12:31:07 +13:00
Djordje Mandic d4857a1727 Add verbose logging for pulse width calculation in pulse_meter (#8124) 2025-01-23 12:07:26 +13:00
tomaszduda23 0c032bc431 [core] add support for custom platform (#7616)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
2025-01-23 12:06:07 +13:00
Keith Burzinski 5a103543c4 [esp32] Set logger default interface for C6 (#8126) 2025-01-22 23:00:40 +00:00
Frederik 01ab6d3ddc [debug] fix debug_esp32 printf for partition size and address (#8122)
Co-authored-by: Djordje Mandic <6750655+DjordjeMandic@users.noreply.github.com>
2025-01-23 09:37:32 +11:00
Keith Burzinski f2170c633a [es7243e] Add support for ES7243E audio ADC (#8098) 2025-01-23 09:23:22 +13:00
Citric Li c2e52f4b11 Add: Human Presence and Target Count to the Seeed Studio MR60BHA2 (#8010)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Spencer Yan <spencer@spenyan.com>
2025-01-22 13:01:15 +13:00
Keith Burzinski 4843bbd38a [custom] Remove platforms (#8119) 2025-01-22 12:56:51 +13:00
dependabot[bot] 78ce8f014a Bump actions/stale from 9.0.0 to 9.1.0 (#8120)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-22 08:15:56 +13:00
Jesse Hills b454f63b36 [core] Remove old style platform configuration (#8118) 2025-01-21 00:32:47 -06:00
Jonathan Swoboda db644542ed [esp32_touch] Fix deprecated warning (#8092)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2025-01-21 16:17:32 +13:00
Keith Burzinski 716a8b87e1 [es8156] Add support for ES8156 audio DAC (#8085)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-01-21 16:15:18 +13:00
Clyde Stubbs 0f4e274e52 [uptime] Cosmetic improvements for uptime text_sensor (#8101) 2025-01-21 15:43:50 +13:00
Keith Burzinski 576dbd6f0c [audio_adc] Add new `audio_adc` component (#8094) 2025-01-21 15:35:40 +13:00
Jesse Hills c3d00b45f7 Update defines.h for esp-idf 5.1.5 (#8117) 2025-01-21 01:50:04 +00:00
Mikkel Jeppesen 98b872abc7 Fixed incorrect display dimension (#8110) 2025-01-20 09:36:07 +11:00
guillempages 75026be951 [online_image] Use RAMAllocator (#8114) 2025-01-19 22:16:37 +00:00
guillempages 47a0ec467a [image]Rename option "use_transparency" (#8113) 2025-01-20 08:34:38 +11:00
Jesse Hills 9e40d4cf45 Merge branch 'release' into dev 2025-01-17 14:47:56 +13:00
Jesse Hills fecae2f740 Merge pull request #8100 from esphome/bump-2024.12.4
2024.12.4
2025-01-17 14:47:16 +13:00
Jesse Hills 5a01670803 Bump version to 2024.12.4 2025-01-17 13:40:12 +13:00
Jesse Hills c2423b18cb Bump python3-setuptools to 66.1.1-1+deb12u1 (#8074) 2025-01-17 13:40:11 +13:00
Jesse Hills 2363b3dfd6 Merge branch 'release' into dev 2025-01-17 13:32:53 +13:00
Jesse Hills 628e47f670 Merge pull request #8099 from esphome/bump-2024.12.3
2024.12.3
2025-01-17 13:32:12 +13:00
Jesse Hills 7666581c54 Bump version to 2024.12.3 2025-01-17 12:24:22 +13:00
Kevin Ahrendt 03c36920ff [http_request] Bugfix: run update function in a task (#8018) 2025-01-17 12:24:22 +13:00
Piotr Szulc abdd6b232f Fixed libretiny preference wrongly detecting change in the data to store (#7990) 2025-01-17 12:24:22 +13:00
j-sepul 07be7ad7e2 Increase Daly-BMS coltage cells from 16 to 18 cells (#8057) 2025-01-17 11:08:04 +13:00
Katherine Whitlock 820e3488d0 Remove black-formatter from pre-commit hooks (#8097) 2025-01-17 10:44:26 +13:00
Kevin Ahrendt 8c6c45e6c1 [http_request] Bugfix: run update function in a task (#8018) 2025-01-17 10:43:41 +13:00
Katherine Whitlock 16bf56b0f9 Fix running pre-commit on Windows (#8095) 2025-01-17 09:10:20 +13:00
Clyde Stubbs 49c01c26f1 Revert "Add resistance_sampler interface for config validation" (#8093)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-01-16 16:12:30 +11:00
dependabot[bot] b4a804cc77 Bump docker/build-push-action from 6.11.0 to 6.12.0 in /.github/actions/build-image (#8090)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-16 14:53:23 +13:00
Jordan Zucker df26ace0f1 [prometheus] Select, media_player, and number prometheus metrics (#7895) 2025-01-15 16:56:22 +13:00
Jesse Hills e779a8bcb2 [event] Store `last_event_type` in class (#8088) 2025-01-15 16:54:45 +13:00
Jesse Hills c458fd18df Bump version to 2025.2.0-dev 2025-01-15 16:49:58 +13:00
Kevin Ahrendt 98817a5bbf [es7210] add support for es7210 ADC (#8007) 2025-01-15 16:47:22 +13:00
Saninn Salas Diaz c43d8460bd fix(web_server/fan): send speed update values even when fan is off (#8086) 2025-01-15 15:14:58 +13:00
Clyde Stubbs 17b88f2e3e [lvgl] fix lvgl.widget.update and friends (#8087) 2025-01-15 14:29:51 +13:00
Clyde Stubbs dac9768f6a [spi] Restore `SPIDelegateDummy` (#8019) 2025-01-15 13:56:52 +13:00
Clyde Stubbs e8d2ad4ce8 [ili9xxx] psram and 8 bit changes (#8084) 2025-01-15 11:53:44 +13:00
Clyde Stubbs c3412df169 [image] Fix mdi images (#8082) 2025-01-15 11:29:27 +13:00
Clyde Stubbs fc2b15e307 [uptime] Add text_sensor (#8028) 2025-01-15 11:27:47 +13:00
Stefan Rado bdb1094b47 Allow external libraries to use ESP_LOGx macros (#8078) 2025-01-14 14:20:52 +11:00
Clyde Stubbs 6262fb8fcf [lvgl] fix tests (#8075) 2025-01-13 15:32:54 -06:00
Nate Clark f319472066 web_server: Adds REST API POST endpoints to arm and disarm (#7985) 2025-01-13 17:35:29 +13:00
Dusan Cervenka b4a2b50ee0 Fixed topic when mac is used (#7988) 2025-01-13 17:34:07 +13:00
Piotr Szulc 30bb806f26 Fixed libretiny preference wrongly detecting change in the data to store (#7990) 2025-01-13 17:31:01 +13:00
NP v/d Spek 9874d17613 add missing include in base_automation.h (#8001) 2025-01-13 17:29:38 +13:00
Ryan Henderson 13909b7994 [esp32_wifi] Enhance WiFi component with TCPIP core locking. (#7997) 2025-01-13 17:26:23 +13:00
Ryan Henderson df50e57409 Include esp_mac.h and C++20 str_startswith/str_ends (#7999) 2025-01-13 17:18:20 +13:00
Ryan Henderson 3fa67fad32 Fix compile errors with pioarduino/platform-espressif32: wifi_component_esp32_arduino.cpp (#7998) 2025-01-13 17:17:28 +13:00
Douglas 8fbd512952 Use ESPHome logo on readme page according to theme (light/dark) (#7992) 2025-01-13 17:16:43 +13:00
Edward Firmo 528d3672b4 [psram] Improve total PSRAM display in logs by using rounded KB values (#8008)
Co-authored-by: Djordje Mandic <6750655+DjordjeMandic@users.noreply.github.com>
2025-01-13 17:11:48 +13:00
Edward Firmo fef50afef8 [debug] Add ESP32 partition table logging to dump_config (#8012) 2025-01-13 17:08:20 +13:00
Edward Firmo aa1879082c [debug] Add framework type to debug info (#8013) 2025-01-13 17:06:44 +13:00
Djordje Mandic d8c943972b [core] fix comment for crc8 function in helpers.h (#8016) 2025-01-13 17:05:53 +13:00
Kyle Cascade f3ebb4eb39 Added VERY_VERBOSE dfplayer printing (#8026) 2025-01-13 16:23:35 +13:00
Clyde Stubbs f1c0570e3b [image] Transparency changes; code refactor (#7908) 2025-01-13 16:21:42 +13:00
Keith Burzinski aa87c60717 [nextion] Brightness control tweaks (#8027) 2025-01-13 16:12:54 +13:00
Clyde Stubbs 92a8ebe1f8 [json] use correct formatting (#8039) 2025-01-13 15:56:42 +13:00
Marcin Żbik dd3ffc7f29 Fix Waveshare 7in5bv3bwr image quality in BWR mode (#8043)
Co-authored-by: zbikmarc <zbimarc+github@gmail.com>
2025-01-13 15:55:30 +13:00
Jonathan Swoboda aac3841991 [esp32] Fix arch_get_cpu_freq_hz (#8047)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2025-01-13 14:45:35 +13:00
Mischa Siekmann fb87a1c0bc Allow CONF_RMT_CHANNEL parameter for IDF 4.X (#8035) 2025-01-13 14:42:03 +13:00
Jesse Hills 4409471cd1 Bump python3-setuptools to 66.1.1-1+deb12u1 (#8074) 2025-01-13 14:32:10 +13:00
dependabot[bot] 739edce268 Bump docker/build-push-action from 6.10.0 to 6.11.0 in /.github/actions/build-image (#8053)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 12:55:53 +13:00
dependabot[bot] f25f3334d1 Bump docker/setup-qemu-action from 3.2.0 to 3.3.0 in the docker-actions group (#8052)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 12:55:37 +13:00
dependabot[bot] 571935fb3b Bump peter-evans/create-pull-request from 7.0.5 to 7.0.6 (#8024)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 12:55:00 +13:00
dependabot[bot] 7c39422692 Bump actions/upload-artifact from 4.5.0 to 4.6.0 (#8058)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 12:54:44 +13:00
tomaszduda23 731fb1d172 [spi] relay on KEY_TARGET_PLATFORM as the other platforms does (#8066) 2025-01-13 11:15:39 +13:00
Brian Whicheloe 40bee2a854 Add log level env var (#7604)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-01-13 08:15:22 +13:00
Jimmy Hedman d69926485c Convert IPAddress to use Pythonmodule ipaddress (#8072) 2025-01-13 08:12:38 +13:00
Clyde Stubbs fe80750743 [display] auto_clear_enabled defaults (#7986) 2025-01-13 07:56:54 +13:00
Clyde Stubbs 109d737d5d [lvgl] Implement lvgl.page.is_showing: condition (#8055) 2025-01-13 07:53:26 +13:00
Clyde Stubbs bd17ee8e33 [config] Early check for required version (#8000) 2025-01-13 07:50:13 +13:00
Clyde Stubbs f1712cffa8 [spi_led_strip] Fix priority (#8021) 2025-01-13 07:49:05 +13:00
Clyde Stubbs 0df6a913b3 [lgvl] disp_bg_image and disp_bg_opa changes (#8025) 2025-01-13 07:46:17 +13:00
Clyde Stubbs 8a98b69a57 [lvgl] fix bg_image_src (#8005)
Co-authored-by: clydeps <U5yx99dok9>
2025-01-13 07:42:03 +13:00
Clyde Stubbs 4530e4d60f [lvgl] remove default state (#8038) 2025-01-13 07:40:50 +13:00
Juan Jose Restrepo 4d7c6b28e1 Update sprinkler.cpp (#7996) 2025-01-10 17:22:30 -06:00
Jimmy Hedman de603c7565 Enable udp to work (on ipv4) when ipv6 is enabled (#8060)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2025-01-10 21:10:19 +00:00
Peter Zich a498fb5dcf Fix braceless else statements (#7799) 2025-01-09 00:47:30 -06:00
Samu Németh 78543e1e15 Fixed comment typo in light_color_values.h (#8050)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-01-08 22:37:52 +00:00
Clyde Stubbs 5e72b7196b Remove rmt channel from idf tests (#8054) 2025-01-08 21:14:08 +00:00
Clyde Stubbs a0615a92f0 [addressable_light] Remove rmt channel from idf tests (#7987) 2025-01-08 14:25:10 -06:00
Peter Zich dc5b408748 Initialize esp32_rmt_led_strip buffer (#8036) 2025-01-05 19:50:35 -06:00
Jonathan Swoboda 387bde665e [esp32_rmt] IDF 5+ update fixes (#8002)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-12-24 03:15:40 -06:00
tomaszduda23 45beea68eb [ble_client, bluetooth_proxy, esp32_ble_client, esp32_ble_tracker] fix ble proxy stop working (#7901)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-12-22 19:49:04 -10:00
Keith Burzinski c457d8835e Merge branch 'release' into dev 2024-12-20 18:56:18 -06:00
Keith Burzinski 4b51ba3fa4 Merge pull request #7989 from esphome/bump-2024.12.2
2024.12.2
2024-12-20 18:56:03 -06:00
Keith Burzinski 499953e3f4 Bump version to 2024.12.2 2024-12-20 14:34:11 -06:00
Keith Burzinski 69f1a81e1d [esp32_ble] Fix for Improv (#7984) 2024-12-20 14:34:11 -06:00
Keith Burzinski 37fcccbb1c [esp32] Fix flash size warning when using IDF (#7983) 2024-12-20 14:34:10 -06:00
Keith Burzinski f3cb179f54 [esp32_ble] Fix for Improv (#7984) 2024-12-20 14:16:18 -06:00
Keith Burzinski ba2edbc189 [esp32] Fix flash size warning when using IDF (#7983) 2024-12-20 01:28:08 -06:00
tomaszduda23 f33b4a714e [esp32_ble] do not skip events if queue is blocked (#7960) 2024-12-19 14:45:40 -10:00
Jesse Hills 85d863601b Merge branch 'release' into dev 2024-12-19 19:48:11 +13:00
Jesse Hills fe0700166a Merge pull request #7982 from esphome/bump-2024.12.1
2024.12.1
2024-12-19 19:47:30 +13:00
Jesse Hills d28cf011d1 Bump version to 2024.12.1 2024-12-19 17:07:43 +13:00
Kevin Ahrendt 434879ea04 [core] Bugfix: Implement ring buffer with xRingbuffer (#7973) 2024-12-19 17:07:43 +13:00
dependabot[bot] 7da07303c9 Bump actions/upload-artifact from 4.4.3 to 4.5.0 (#7981)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-19 16:42:29 +13:00
Clyde Stubbs b33b4481ea [helpers] Provide calls to get free heap and largest available block. (#7978) 2024-12-19 16:40:08 +13:00
Clyde Stubbs ac631711ab [qspi_dbi] Bugfix and new features (#7979) 2024-12-19 16:30:23 +13:00
Jonathan Swoboda 265b6ec445 [esp32_rmt] Updates for IDF 5+ (#7770)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-12-18 20:31:22 -06:00
Kevin Ahrendt 61499dbdd8 [core] Bugfix: Implement ring buffer with xRingbuffer (#7973) 2024-12-19 15:07:07 +13:00
Jesse Hills 0aaef9293b Merge branch 'release' into dev 2024-12-18 17:07:26 +13:00
Jesse Hills 0f0b829bc6 Merge pull request #7976 from esphome/bump-2024.12.0
2024.12.0
2024-12-18 17:06:44 +13:00
Djordje Mandic a9d883b65a [midea] Add Fahrenheit support to midea_ac.follow_me action (#7762) 2024-12-18 13:47:43 +13:00
Jesse Hills d330e73c1e Bump version to 2024.12.0 2024-12-18 11:35:43 +13:00
Jonathan Swoboda 7554e954fe [core] Add c6 and h2 to split default (#7974)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2024-12-18 10:12:14 +13:00
Jesse Hills 752af94a75 Merge branch 'beta' into dev 2024-12-18 10:03:48 +13:00
Jesse Hills 561d92d402 Merge pull request #7975 from esphome/bump-2024.12.0b3
2024.12.0b3
2024-12-18 10:02:03 +13:00
Jesse Hills 1a69236473 Bump version to 2024.12.0b3 2024-12-18 07:43:38 +13:00
Jesse Hills c86ea99145 [esp32_ble] Use RAMAllocator to avoid panic abort from `new` (#7936) 2024-12-18 07:43:38 +13:00
Jesse Hills 7661609049 Bump esphome-dashboard to 20241217.1 (#7971) 2024-12-18 07:43:38 +13:00
Jesse Hills c38826824f [dashboard] Accept basic auth header (#7965) 2024-12-18 07:43:38 +13:00
Clyde Stubbs e890486043 [font] cleanly handle font file format exception (Bugfix) (#7970) 2024-12-18 07:43:38 +13:00
Jesse Hills ccc9fd4a3f [esp32_ble] Use RAMAllocator to avoid panic abort from `new` (#7936) 2024-12-17 12:10:38 -06:00
Jesse Hills 54fbf5184e Bump esphome-dashboard to 20241217.1 (#7971) 2024-12-17 17:32:52 +13:00
Jesse Hills 759df7ae6c [dashboard] Accept basic auth header (#7965) 2024-12-16 22:26:16 -06:00
dependabot[bot] 3d56397e58 Bump docker/setup-buildx-action from 3.7.1 to 3.8.0 in the docker-actions group (#7969)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-17 14:09:09 +13:00
Clyde Stubbs 9f6c64afa6 [font] cleanly handle font file format exception (Bugfix) (#7970) 2024-12-17 14:07:43 +13:00
Jesse Hills 663e18310d [ci] Dont run main ci suite on docker files (#7966) 2024-12-16 16:58:42 -06:00
Jesse Hills 1a89aa8fbf [uart] Use `SOC_UART_NUM as number of uarts instead of UART_NUM_MAX` (#7967) 2024-12-16 05:52:34 +00:00
Edward Firmo e04743e381 [debug] Detailed reset reason (#7729)
Co-authored-by: Ramil Valitov <ramilvalitov@gmail.com>
2024-12-16 12:12:45 +13:00
Oleg Tarasov a6957b9d3b [opentherm] Message ordering, on-the-fly message editing, code improvements (#7903) 2024-12-16 12:04:26 +13:00
Edward Firmo 9816c27031 [nextion] Remove _internal from non-protected functions (#7656) 2024-12-16 11:00:44 +13:00
luar123 ea06740b46 Fix adc channel for ESP32-H2 (#7964) 2024-12-16 10:59:54 +13:00
Jesse Hills 9a5ec1b9e6 Merge branch 'beta' into dev 2024-12-16 10:42:53 +13:00
Jesse Hills 6dcbd1a8ae Merge pull request #7963 from esphome/bump-2024.12.0b2
2024.12.0b2
2024-12-16 10:42:21 +13:00
Jesse Hills 63b0930ae8 Bump version to 2024.12.0b2 2024-12-16 07:57:06 +13:00
Edward Firmo 5382bd2a97 [adc] Restore missing LIBRETINY code in a separated file (#7955) 2024-12-16 07:57:06 +13:00
Kevin Ahrendt de1fbd390b [i2s_audio] Bugfix: Correctly set ring buffer size (#7959) 2024-12-16 07:57:06 +13:00
Jonathan Swoboda af23357dca [core] Move delay_microseconds_safe to iram (#7957)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2024-12-16 07:57:06 +13:00
Jesse Hills 0fbe6c0d8b [sgp30] Set default update interval to 60s (#7952) 2024-12-16 07:57:06 +13:00
Jonathan Swoboda 4e1ff31342 [const] Add RMT CONF variables to const.py (#7953)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2024-12-16 07:57:06 +13:00
Edward Firmo df4224e779 [nextion] Publishes is_connected() (#7961) 2024-12-16 07:30:47 +13:00
Edward Firmo 5877c57a35 [adc] Restore missing LIBRETINY code in a separated file (#7955) 2024-12-15 07:55:04 +13:00
Kevin Ahrendt 7f2ca800c1 [i2s_audio] Bugfix: Correctly set ring buffer size (#7959) 2024-12-13 23:17:58 -06:00
Edward Firmo ce7ff15c8a [pulse_counter] Fix volatile increment/decrement deprecation warnings (#7954) 2024-12-14 08:21:54 +11:00
Edward Firmo 88742e0399 [rotary_encoder] Fix volatile increment/decrement deprecation warnings (#7958) 2024-12-14 08:16:11 +11:00
Jonathan Swoboda c187cb547c [core] Move delay_microseconds_safe to iram (#7957)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2024-12-13 11:45:10 -08:00
Jesse Hills 42bc960a36 [sgp30] Set default update interval to 60s (#7952) 2024-12-12 03:37:51 -06:00
Jonathan Swoboda ba63d266d8 [const] Add RMT CONF variables to const.py (#7953)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2024-12-12 04:37:22 +00:00
Jesse Hills 90baba4db7 Merge branch 'beta' into dev 2024-12-11 21:19:19 +13:00
Jesse Hills 1656ced351 Merge pull request #7950 from esphome/bump-2024.12.0b1
2024.12.0b1
2024-12-11 21:18:43 +13:00
Jesse Hills 1dfd15e607 Bump version to 2025.1.0-dev 2024-12-11 15:55:29 +13:00
Jesse Hills 5dcaf1241f Bump version to 2024.12.0b1 2024-12-11 15:55:29 +13:00
Jesse Hills 7aa54b6879 [i2c] Use correct macro to determine number of i2c peripherals for idf (#7947) 2024-12-10 10:24:06 +00:00
Jesse Hills 444e162c92 Synchronise esp32 boards with platform version 51.03.07 (#7945) 2024-12-10 06:39:00 +00:00
Clyde Stubbs bb27eaaf1e [lvgl] Add on_change event (#7939) 2024-12-10 14:25:29 +13:00
Clyde Stubbs 517f659da8 [lvgl] Fix image mode property (Bugfix) (#7938) 2024-12-10 14:23:30 +13:00
Jesse Hills 5a92e24662 [const] Move `CONF_TEMPERATURE_COMPENSATION` to common const.py (#7943) 2024-12-10 14:22:30 +13:00
Edward Firmo 437b236a4d [adc] Split files by platform (#7940) 2024-12-10 13:38:45 +13:00
dependabot[bot] 14eac3dbce Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 (#7941)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 23:44:39 +01:00
Yoonji Park 132a096ae7 Add font anti-aliasing for grayscale display (#7934) 2024-12-09 22:13:21 +11:00
Jesse Hills 440080a753 [display] Fix strftime overload ignoring alignment (#7937) 2024-12-09 17:09:29 +13:00
David Schneider f15e3cfb9b Optimize QMC5883L reads (#7889) 2024-12-09 15:51:37 +13:00
Citric Lee 9d000e9abf Add: Seeed Studio MR60BHA2 mmWave Sensor (#7589)
Co-authored-by: Spencer Yan <spencer@spenyan.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-12-09 15:28:41 +13:00
Jesse Hills 97fd7493b5 Merge branch 'release' into dev 2024-12-06 17:23:14 +13:00
Jesse Hills 4c87658503 Merge pull request #7929 from esphome/bump-2024.11.3
2024.11.3
2024-12-06 17:22:32 +13:00
Jesse Hills c80e035bd5 Bump version to 2024.11.3 2024-12-06 15:55:51 +13:00
Clyde Stubbs c8ec0bb7ea [esp32] Fix crash with empty platformio_options: value (#7920) 2024-12-06 15:55:51 +13:00
Clyde Stubbs 86ae1c5931 [lvgl] Fix msgbox content (#7912) 2024-12-06 15:55:51 +13:00
Clyde Stubbs d0958f7cf2 [lvgl] Bugfixes (#7896) 2024-12-06 15:55:51 +13:00
Jesse Hills 982ce1db72 Cast port to int for ota pushing (#7888) 2024-12-06 15:55:51 +13:00
Krzysztof Zdulski f042c6e643 Fix recalc_timestamp_utc (#7894) 2024-12-06 15:55:51 +13:00
Jesse Hills 5fcd26bfe9 [st7920] Remove unnecessary warning when drawing outside display bounds (#7868) 2024-12-06 15:55:51 +13:00
FreeBear-nc 5717d557f5 Add IRAM_ATTR to all functions used during interrupts on esp8266 chips. (#7840) 2024-12-06 15:55:51 +13:00
guillempages 3bac45e737 [online_image]Don't access decoder if not initialized (#7882) 2024-12-06 15:55:50 +13:00
Samuel Sieb e623989878 fix local time timestamp calculation (#7807)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-12-06 15:55:50 +13:00
Oleg Tarasov 39cbc6b183 [opentherm] Fix out of memory errors on ESP8266 (#7835) 2024-12-06 15:55:50 +13:00
Keith Burzinski 749a5e3348 [modbus] More clean-up (#7921) 2024-12-06 15:41:53 +13:00
Jesse Hills b0e3ac01e8 Update project description (#7928) 2024-12-06 15:24:20 +13:00
Jesse Hills 58123845ff Move docker oci labels to correct image (#7927) 2024-12-06 14:11:11 +13:00
alorente bfd75d736c Add OCI Image Labels (#7924) 2024-12-06 13:21:14 +13:00
Clyde Stubbs 4e3195b474 [esp32] Fix crash with empty platformio_options: value (#7920) 2024-12-06 13:16:59 +13:00
dependabot[bot] d3a71a1d45 Bump actions/cache from 4.1.2 to 4.2.0 in /.github/actions/restore-python (#7925)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 13:11:46 +13:00
dependabot[bot] 555bdac604 Bump actions/cache from 4.1.2 to 4.2.0 (#7926)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 13:11:31 +13:00
Keith Burzinski acc8d24a32 [esp32] Use pioarduino + IDF 5.1.5 as default for IDF builds (#7706)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-12-05 02:39:30 -06:00
Jesse Hills f3cc1e541a [esp32_rmt_led_strip] Add `COMPONENT_SCHEMA` extending (#7918) 2024-12-04 21:44:59 -06:00
Keith Burzinski ece72c6b18 [i2s_audio] Speaker type fix (#7919) 2024-12-04 21:03:38 -06:00
Sebastian Muszynski 4e839d42d0 [CI] Update clang-tidy to 18.1.8 (#7915) 2024-12-04 15:44:34 -06:00
Pavlo Dudnytskyi d429aa8bb8 Haier AC quiet mode switch fix (#7902) 2024-12-05 10:43:00 +13:00
Kevin Ahrendt 472402745d [i2s_audio] Bugfix: Follow configured bits per sample (#7916) 2024-12-05 10:18:14 +13:00
mikosoft83 016fac2496 Add strftime variant with background color (#7714)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-12-04 13:18:00 +13:00
Clyde Stubbs 79478cdb8a [sntp] Resolve warnings from ESP-IDF 5.x (#7913) 2024-12-04 13:13:07 +13:00
Keith Burzinski dbed74b50d [docker] Fix clang-tidy installation (#7910) 2024-12-04 12:26:27 +13:00
Keith Burzinski d00ec7e544 [helpers] clang-tidy fix for #7706 (#7909) 2024-12-04 12:23:17 +13:00
Clyde Stubbs a37ff2dbd9 [lvgl] Fix msgbox content (#7912) 2024-12-03 20:48:50 +00:00
Clyde Stubbs 00ddb0a427 [font] Restore correct default glyphs for bitmap fonts (#7907) 2024-12-03 19:50:56 +13:00
Clyde Stubbs c95887a14a [lvgl] Bugfixes (#7896) 2024-12-03 19:50:11 +13:00
Jesse Hills dc5942a59b [ble] Allow setting shorter name for ble advertisements (#7867)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-12-02 23:38:44 -06:00
kbullet 584dbf2668 MQTT sensors handling of publishing NaN values (#7768)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-12-02 23:50:05 +00:00
Keith Burzinski 9c8976be13 [CI] Update clang-tidy to 18.1.3 (#7822) 2024-12-03 11:29:45 +13:00
Clyde Stubbs e08a9cc3a3 [font et. al.] Remove explicit check for pillow installed. (#7891) 2024-12-03 11:27:51 +13:00
Keith Burzinski b79a3d6727 [CI] Bump GHA runners to `ubuntu-24.04` (#7905) 2024-12-03 06:42:44 +13:00
David Woodhouse fb96e3588d Add H-Bridge switch component (#7421)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-12-02 02:16:58 -06:00
Keith Burzinski edd847ea40 [modbus_controller] Clang fixes (#7899) 2024-12-02 13:27:32 +13:00
Jesse Hills 83d6834e27 Cast port to int for ota pushing (#7888) 2024-12-01 17:10:18 +01:00
Keith Burzinski 8f69d07061 [hx711] clang-tidy fixes for #7822 (#7900) 2024-12-01 17:08:52 +01:00
Krzysztof Zdulski 30477c764d Fix recalc_timestamp_utc (#7894) 2024-11-29 13:05:00 -08:00
Jesse Hills 217a80a178 [st7920] Remove unnecessary warning when drawing outside display bounds (#7868) 2024-11-28 16:57:11 +13:00
FreeBear-nc 5486b40aab Add IRAM_ATTR to all functions used during interrupts on esp8266 chips. (#7840) 2024-11-28 16:56:37 +13:00
guillempages beb8ab50e2 [online_image]Don't access decoder if not initialized (#7882) 2024-11-28 16:55:20 +13:00
Max Slotov 7cdf5b55ef [deep_sleep] fix deep_sleep not keeping awake when sleep_duration is defined (#7885) 2024-11-28 16:51:07 +13:00
Clyde Stubbs c9b0490305 [lvgl] Make image update via lambda work (#7886) 2024-11-28 16:48:48 +13:00
Keith Burzinski d305870284 [network] clang-tidy fixes for #7822 (#7870) 2024-11-28 11:25:34 +13:00
Keith Burzinski ff5004d7db [dht] clang-tidy fixes for #7822 (#7871) 2024-11-28 11:25:15 +13:00
Keith Burzinski 7aa3a1a1cc [apds9306] clang-tidy fixes for #7822 (#7872) 2024-11-28 11:25:00 +13:00
Keith Burzinski e124151e5c [ezo] clang-tidy fixes for #7822 (#7873) 2024-11-28 11:24:43 +13:00
Keith Burzinski e229ed0da3 [logger] clang-tidy fixes for #7822 (#7875) 2024-11-28 11:23:40 +13:00
Keith Burzinski 12cdeca48a [various] clang-tidy fixes for #7822 (#7874) 2024-11-28 11:23:20 +13:00
Keith Burzinski a825ef59d4 [nextion] clang-tidy fixes for #7822 (#7878) 2024-11-28 11:22:37 +13:00
Keith Burzinski 65a5216d17 [pca6416a, pca9554] clang-tidy fixes for #7822 (#7879) 2024-11-28 11:22:18 +13:00
Keith Burzinski 567256bd62 [rotary_encoder] clang-tidy fixes for #7822 (#7880) 2024-11-28 11:21:10 +13:00
Keith Burzinski 4da57c35d0 [uln2003] clang-tidy fixes for #7822 (#7881) 2024-11-28 11:20:51 +13:00
Keith Burzinski f2e8e655ba [mqtt] clang-tidy fixes for #7822 (#7877) 2024-11-28 11:19:41 +13:00
Keith Burzinski 8439232b11 [esp32_ble] clang-tidy fixes for #7822 (#7883) 2024-11-28 11:18:43 +13:00
Keith Burzinski e6c730ab10 [max31865] clang-tidy fixes for #7822 (#7876) 2024-11-28 11:16:54 +13:00
Jesse Hills e49df765d2 Merge branch 'release' into dev 2024-11-28 07:22:24 +13:00
Jesse Hills e6da55b925 Merge pull request #7869 from esphome/bump-2024.11.2
2024.11.2
2024-11-28 07:21:44 +13:00
Jesse Hills c894645747 Bump version to 2024.11.2 2024-11-27 14:06:21 +13:00
Samuel Sieb 2539cba610 [honeywell] use warning instead of failing (#7862)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-27 14:06:21 +13:00
Samuel Sieb 5ddbe5cdba [wifi] fix 32 char SSIDs (#7834)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-27 14:06:20 +13:00
Samuel Sieb 4c7552eca4 keypad binary sensors should be initially off (#7808)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-27 14:06:20 +13:00
Ramil Valitov 72bf0086e4 [fix] Status sensor does not check if required network component is missing (#7734)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-27 14:06:20 +13:00
TFGF 1b91e0027b [Modbus Controller] Fix issue #6477. Online automation triggering Offline (#7801) 2024-11-27 14:06:20 +13:00
Samuel Sieb e9851e7eb2 fix modbus crashing when bad data returned (#7810)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-27 14:06:20 +13:00
Clyde Stubbs 80fedbc1a5 [qspi_dbi] Fix init sequences (Bugfix) (#7805) 2024-11-27 14:06:20 +13:00
Clyde Stubbs a4a71797d9 [docker] Leave run-time required libraries installed. (#7804) 2024-11-27 14:06:20 +13:00
Clyde Stubbs 4a97064b2c [lvgl] Bugfixes (#7803) 2024-11-27 14:06:20 +13:00
tomaszduda23 a3ef2ed7fd python lint for platform components (#7864) 2024-11-27 09:56:43 +13:00
dependabot[bot] 3a8b41daa3 Bump docker/build-push-action from 6.9.0 to 6.10.0 in /.github/actions/build-image (#7866)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 21:06:56 +01:00
Jesse Hills 921be1a17c Move `USE_CAPTIVE_PORTAL` into all define groups it can be used with (#7863) 2024-11-27 07:09:16 +13:00
Keith Burzinski e3d673d16c [helpers, optional] clang-tidy fixes for #7822 (#7841) 2024-11-27 07:08:02 +13:00
Keith Burzinski 39f3f795e2 [mqtt] clang-tidy fixes for #7822 (#7851) 2024-11-27 07:07:53 +13:00
Keith Burzinski 53691d28a8 [haier] clang-tidy fixes for #7822 (#7849) 2024-11-27 07:07:42 +13:00
Keith Burzinski 3730b0310b [sprinkler] clang-tidy fixes for #7822 (#7857) 2024-11-27 07:07:36 +13:00
Keith Burzinski 2b9013699d [alarm_control_panel] clang-tidy fixes for #7822 (#7845) 2024-11-26 11:05:39 +01:00
Samuel Sieb be78827274 [honeywell] use warning instead of failing (#7862)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-26 23:05:20 +13:00
Keith Burzinski cd1ee96606 [cse7766] clang-tidy fixes for #7822 (#7846) 2024-11-26 11:04:50 +01:00
Keith Burzinski 2fa8d907b3 [ltr501] clang-tidy fixes for #7822 (#7850) 2024-11-26 11:01:34 +01:00
Keith Burzinski 4c383906c4 [pipsolar] clang-tidy fixes for #7822 (#7855) 2024-11-26 11:00:40 +01:00
Keith Burzinski bdc6302ea1 [sun_gtil2] clang-tidy fixes for #7822 (#7858) 2024-11-26 11:00:03 +01:00
Keith Burzinski 31c13e4c16 [output] clang-tidy fixes for #7822 (#7854) 2024-11-26 10:59:29 +01:00
Keith Burzinski 6b59f55a50 [nfc, pn532, pn7150, pn7160] clang-tidy fixes for #7822 (#7853) 2024-11-26 10:58:18 +01:00
Keith Burzinski e6bd2238ce [sim800l] clang-tidy fixes for #7822 (#7856) 2024-11-26 10:54:16 +01:00
Keith Burzinski 2d4688a206 [shelly_dimmer] clang-tidy fixes for #7822 (#7844) 2024-11-26 10:53:23 +01:00
Keith Burzinski 536bcab5de [nextion] clang-tidy fixes for #7822 (#7852) 2024-11-26 10:52:57 +01:00
Keith Burzinski 1c2d2bce5a [display_menu_base] clang-tidy fixes for #7822 (#7847) 2024-11-26 10:52:26 +01:00
Keith Burzinski 2eac8b6c46 [camera_web_server] Use header instead of mock struct (#7823) 2024-11-26 10:50:33 +01:00
Jesse Hills 6e50e2aa65 Fix entity name validation to allow "Off" and "On" (#7821) 2024-11-26 10:50:16 +01:00
Keith Burzinski 841d278224 [dsmr] clang-tidy fixes for #7822 (#7848) 2024-11-26 10:47:57 +01:00
Keith Burzinski 11076e4614 [wireguard] clang-tidy fixes for #7822 (#7859) 2024-11-26 10:47:24 +01:00
Keith Burzinski 72df3d1606 [xiaomi_ble] clang-tidy fixes for #7822 (#7860) 2024-11-26 10:37:20 +01:00
Keith Burzinski ae6736311a [lvgl] clang-tidy fixes for #7822 (#7843) 2024-11-26 04:29:36 +00:00
Citric Lee c0dcecc465 Add: Seeed Studio mr60fda2 mmwave sensor (#7576)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Spencer Yan <spencer@spenyan.com>
2024-11-26 13:53:21 +13:00
Samuel Sieb d9d368d38e add on_key trigger to matrix_keypad (#7830)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-26 13:21:47 +13:00
Samuel Sieb a70cee1dc1 fix local time timestamp calculation (#7807)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-26 13:15:01 +13:00
Samuel Sieb f4766ab74f [wifi] fix 32 char SSIDs (#7834)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-26 12:58:21 +13:00
Keith Burzinski 4fbf41472a [CI] Add/update some system include paths (#7831) 2024-11-25 17:41:27 -06:00
Keith Burzinski 6ee02c47c2 [homeassistant.number] Return when value not set (#7839) 2024-11-25 22:42:12 +00:00
JonasB2497 140d77061b added Waveshare BWR Mode for the 7.5in Display (#7687) 2024-11-26 11:29:58 +13:00
programmingbgloDE d6f4f05090 Add waveshare 1 45 in v2 b support (#7052) 2024-11-26 11:26:48 +13:00
Keith Burzinski bdb91112ea [helpers] Add NOLINT for Mutex private field `handle_` (#7838) 2024-11-25 16:20:03 -06:00
Keith Burzinski b027b6a711 [opentherm] Add nolint for 8266 static global (#7837) 2024-11-26 10:57:40 +13:00
Oleg Tarasov 89ecfc2004 [opentherm] Fix out of memory errors on ESP8266 (#7835) 2024-11-26 10:47:01 +13:00
Keith Burzinski cf835d1580 [opentherm] Follow variable naming convention (#7833) 2024-11-25 03:50:24 -06:00
Keith Burzinski 17a09cd221 [audio] Header modernization (#7832) 2024-11-25 03:50:18 -06:00
Keith Burzinski 1bd2d41ffd [uart] void functions should return nothing (#7829) 2024-11-25 21:39:22 +13:00
Keith Burzinski aa6cea6f7e [sx1509] Fix up includes (#7828) 2024-11-25 08:27:36 +00:00
Keith Burzinski ebf895990b [stepper] Remove unnecessary `#include` (#7827) 2024-11-25 08:25:04 +00:00
Keith Burzinski 46a435f5f2 [safe_mode] Remove unused capture (#7826) 2024-11-25 08:24:35 +00:00
Keith Burzinski 6c548a1596 [ota] void functions should return nothing (#7825) 2024-11-25 08:23:00 +00:00
Keith Burzinski 7f75f2135d [nextion] Remove assignment within if (#7824) 2024-11-25 08:22:50 +00:00
Samuel Sieb c49f7293fe binary_sensor for switch state (#7819) 2024-11-24 23:24:23 -08:00
Jesse Hills 71496574e9 Move `CONF_NAME_ADD_MAC_SUFFIX to const.py` (#7820) 2024-11-25 17:26:36 +13:00
Samuel Sieb b95b4a0694 keypad binary sensors should be initially off (#7808)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-25 11:40:51 +13:00
Samuel Sieb 59653ec785 allow multiple graphical menus (#7809)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-25 11:40:28 +13:00
Ramil Valitov e02f3cdac7 [fix] Status sensor does not check if required network component is missing (#7734)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-25 11:23:30 +13:00
TFGF d4d630823c [Modbus Controller] Fix issue #6477. Online automation triggering Offline (#7801) 2024-11-25 11:15:10 +13:00
Rodrigo Martín 9fc1377b44 feat(WiFi): Add wifi.configure action (#7335) 2024-11-25 11:06:21 +13:00
Samuel Sieb e3e3d92347 fix modbus crashing when bad data returned (#7810)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-25 09:42:46 +13:00
Clyde Stubbs 13077095c2 [qspi_dbi] Fix init sequences (Bugfix) (#7805) 2024-11-25 09:27:09 +13:00
Clyde Stubbs 4001d82ca2 [docker] Leave run-time required libraries installed. (#7804) 2024-11-25 09:25:51 +13:00
Clyde Stubbs 4936ca1700 [lvgl] Bugfixes (#7803) 2024-11-25 09:25:16 +13:00
NP v/d Spek 2ecd5cff07 [wifi] Make wifi_channel_() public (#7818) 2024-11-25 09:16:51 +13:00
Petr Kejval dea297c8d7 [nextion] Add publish actions (#7646)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-11-22 22:52:02 -06:00
Jesse Hills ef7c5c6055 Merge branch 'release' into dev 2024-11-22 11:34:47 +13:00
Jesse Hills ee3cfb2b76 Merge pull request #7798 from esphome/bump-2024.11.1
2024.11.1
2024-11-22 11:23:56 +13:00
Jesse Hills 2cc2a2153b Bump version to 2024.11.1 2024-11-22 10:08:00 +13:00
J. Nick Koston e51f3d9498 Ensure storage I/O for ignored devices runs in the executor (#7792) 2024-11-22 10:08:00 +13:00
Alain Turbide 1c1f3f7c55 Fix for OTA mode not activating in safe_mode when OTA section has an on_xxxx action (#7796)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-22 10:08:00 +13:00
Spencer Owen ea424b0699 Check for min_version earlier in validation (#7797) 2024-11-22 10:08:00 +13:00
Manuel Kasper 489d0d20d2 [qspi_dbi] Fix garbled graphics on RM690B0 (#7795) 2024-11-22 10:08:00 +13:00
Jesse Hills f04e3de7b8 [speaker] Add missing auto-load for `audio` (#7794) 2024-11-22 10:08:00 +13:00
Jesse Hills a0693060e4 [rtttl] Clamp gain between 0 and 1 (#7793) 2024-11-22 10:08:00 +13:00
Clyde Stubbs 888b237964 [http_request] Fix within context with parameters. (Bugfix) (#7790) 2024-11-22 10:08:00 +13:00
J. Nick Koston 122ff731ef Ensure storage I/O for ignored devices runs in the executor (#7792) 2024-11-22 09:41:31 +13:00
Alain Turbide 3232866dc3 Fix for OTA mode not activating in safe_mode when OTA section has an on_xxxx action (#7796)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-22 09:39:32 +13:00
Spencer Owen ccf2854b61 Check for min_version earlier in validation (#7797) 2024-11-22 08:24:10 +13:00
Manuel Kasper 03ae6b2c1b [qspi_dbi] Fix garbled graphics on RM690B0 (#7795) 2024-11-21 20:46:49 +11:00
Jesse Hills 6bcbbcce02 [speaker] Add missing auto-load for `audio` (#7794) 2024-11-21 02:10:20 -06:00
Jesse Hills fbb9967117 [rtttl] Clamp gain between 0 and 1 (#7793) 2024-11-21 00:22:02 -06:00
Clyde Stubbs 6d4f787f67 [http_request] Fix within context with parameters. (Bugfix) (#7790) 2024-11-21 13:10:28 +13:00
Kjell Braden 5e27a8df1f enable rp2040 for online_image (#7769) 2024-11-21 07:29:48 +13:00
Edward Firmo 846b091aac [nextion] New trigger on_buffer_overflow (#7772) 2024-11-21 07:28:21 +13:00
Jonathan Swoboda 372d68a177 [remote_base] Fix extra comma in dump raw (#7774)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
2024-11-21 07:27:23 +13:00
Jesse Hills 4fc19902ab Merge branch 'release' into dev 2024-11-21 06:44:07 +13:00
Jesse Hills 9a7d5dcad8 Merge pull request #7789 from esphome/bump-2024.11.0
2024.11.0
2024-11-21 06:42:54 +13:00
Jesse Hills ef78c404dd Bump version to 2024.11.0 2024-11-20 21:29:42 +13:00
Jesse Hills c857f98557 Merge branch 'beta' into dev 2024-11-20 20:18:12 +13:00
Jesse Hills 01a24de3a8 Merge pull request #7788 from esphome/bump-2024.11.0b4
2024.11.0b4
2024-11-20 20:17:38 +13:00
Jesse Hills ae46dcef7e Bump version to 2024.11.0b4 2024-11-20 17:50:30 +13:00
Jesse Hills 872b8ee753 Bump esphome-dashboard to 20241120.0 (#7787) 2024-11-20 17:50:29 +13:00
Jesse Hills eb8a2326ad [http_request] Feed watchdog timeout around http request functions (#7786) 2024-11-20 17:50:29 +13:00
Jesse Hills cf63d627fe Bump esphome-dashboard to 20241120.0 (#7787) 2024-11-20 17:39:28 +13:00
Jesse Hills 49e9c43339 [http_request] Feed watchdog timeout around http request functions (#7786) 2024-11-19 18:54:19 -06:00
Jesse Hills f1dc9537ff Merge branch 'beta' into dev 2024-11-20 07:28:20 +13:00
Jesse Hills 1ad535d030 Merge pull request #7784 from esphome/bump-2024.11.0b3
2024.11.0b3
2024-11-20 07:27:37 +13:00
Jesse Hills 1ed27b7cc0 Bump version to 2024.11.0b3 2024-11-19 09:04:30 +13:00
Jesse Hills 585586780b Bump esphome-dashboard to 20241118.0 (#7782) 2024-11-19 09:04:30 +13:00
pethans 50aeefc662 TuyaFan control should use oscillation_type (#7776)
Co-authored-by: Peter Hanson <phanson@whistler.lan>
2024-11-19 09:04:30 +13:00
Jesse Hills 6e41c22e9d Bump esphome-dashboard to 20241118.0 (#7782) 2024-11-18 20:44:39 +13:00
pethans e81191ebd2 TuyaFan control should use oscillation_type (#7776)
Co-authored-by: Peter Hanson <phanson@whistler.lan>
2024-11-18 07:47:29 +13:00
dependabot[bot] b29c119408 Bump codecov/codecov-action from 4 to 5 (#7771)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-15 12:43:52 +01:00
Jesse Hills e819185de1 Merge branch 'beta' into dev 2024-11-14 15:33:40 +13:00
Jesse Hills 00465f4a6f Merge pull request #7765 from esphome/bump-2024.11.0b2
2024.11.0b2
2024-11-14 15:33:10 +13:00
Jesse Hills f4dc11477f Bump version to 2024.11.0b2 2024-11-14 14:21:43 +13:00
Fabio Bonelli 754352b4d7 ld2420: fix typo in log message (#7758) 2024-11-14 14:21:43 +13:00
Jordan Zucker 67a4e56fcf Disable bluetooth proxy during update (#7695)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-14 14:21:43 +13:00
Felipe Santos 9bc7b74d01 Fix reactive power unit of measurement from VAR to var (#7757)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-14 14:21:43 +13:00
Roving Ronin 15bfc4c91f Update UNIT_VOLT_AMPS_REACTIVE = "var" (Currently 'VAR') (#7643) 2024-11-14 14:21:43 +13:00
Kevin Ahrendt a0159a2746 [i2s_audio] Bugfix: Adjust I2S speaker setup priority (#7759) 2024-11-14 14:21:43 +13:00
luar123 44545a18a0 Fix temperature and humidity for bme680 with bsec2 (#7728) 2024-11-14 14:21:43 +13:00
Fabio Bonelli 0b51ec2c88 ld2420: fix typo in log message (#7758) 2024-11-14 13:57:51 +13:00
Jordan Zucker 5e62c489b0 Disable bluetooth proxy during update (#7695)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-14 13:57:09 +13:00
Felipe Santos d015088855 Fix reactive power unit of measurement from VAR to var (#7757)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-14 13:44:18 +13:00
Roving Ronin 39c889e662 Update UNIT_VOLT_AMPS_REACTIVE = "var" (Currently 'VAR') (#7643) 2024-11-14 13:43:21 +13:00
Kevin Ahrendt c7c8711c9c [i2s_audio] Bugfix: Adjust I2S speaker setup priority (#7759) 2024-11-14 06:39:02 +13:00
Jesse Hills 0a92405f2d Merge branch 'beta' into dev 2024-11-13 17:33:07 +13:00
Jesse Hills b4b6b75e84 Merge pull request #7756 from esphome/bump-2024.11.0b1
2024.11.0b1
2024-11-13 17:32:32 +13:00
Jesse Hills a2cab960a9 Bump version to 2024.12.0-dev 2024-11-13 13:49:38 +13:00
luar123 1f7f03f563 Fix temperature and humidity for bme680 with bsec2 (#7728) 2024-11-12 18:18:10 -06:00
Jesse Hills 80226694d5 Bump version to 2024.11.0b1 2024-11-13 13:16:13 +13:00
Kyle Cascade 053465d3f6 Updated dfplayer logging to be more user-friendly (#7740) 2024-11-13 11:54:25 +13:00
TFGF 7d75c9157b [Modbus Controller] Added on_online and on_offline automation (#7417) 2024-11-13 09:48:40 +13:00
Kevin Ahrendt b367c01b4b [core] Ring buffer write functions use const pointer parameter (#7750) 2024-11-13 07:48:03 +13:00
Edward Firmo e6a1254e65 [sun] Implements is_above_horizon() (#7754) 2024-11-13 07:23:00 +13:00
FreeBear-nc 1e80c4807e Message to string extend (#7755) 2024-11-13 07:20:48 +13:00
Kevin Ahrendt 928b39f495 [i2s_audio] I2S speaker improvements (#7749) 2024-11-13 07:20:12 +13:00
Oleg Tarasov 58d028ac13 Add OpenTherm component (part 3: rest of the sensors) (#7676)
Co-authored-by: FreeBear <freebear@tuxcnc.org>
Co-authored-by: FreeBear-nc <67865163+FreeBear-nc@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-11-12 16:19:42 +13:00
Djordje Mandic a2dccc4730 [midea] Add temperature validation in do_follow_me method (bugfix) (#7736) 2024-11-11 17:14:01 +13:00
Clyde Stubbs ffee2f0e88 [lvgl] Implement keypads (#7719) 2024-11-11 16:07:48 +13:00
Clyde Stubbs d885d65c9b [sensor] Make some values templatable (#7735) 2024-11-11 14:18:05 +13:00
Kyle Cascade c35240ca32 Remove the choice for MQTT logging if it is disabled (#7723) 2024-11-11 14:13:43 +13:00
Jesse Hills 7c00c5db70 [docker] Bump curl, iputils-ping and libssl-dev (#7748) 2024-11-11 09:44:02 +13:00
Jesse Hills 335faf858b Fix dashboard ip resolving (#7747) 2024-11-11 08:55:19 +13:00
Jesse Hills 1829e68730 Merge branch 'release' into dev 2024-11-08 22:42:27 +13:00
Jesse Hills b8eadb2ba5 Merge pull request #7732 from esphome/bump-2024.10.3
2024.10.3
2024-11-08 22:41:29 +13:00
Jesse Hills 551ea37882 Bump version to 2024.10.3 2024-11-08 17:02:31 +13:00
Clyde Stubbs 3a25eaca3f [lvgl] Ensure images are configured before using them. (Bugfix) (#7721) 2024-11-08 17:02:31 +13:00
Bonne Eggleston e85cbf26f8 Fixes modbus timing error (#7674) 2024-11-08 17:02:31 +13:00
Clyde Stubbs 2ec17eed58 [rpi_dpi_rgb] Fix get_width and height (Bugfix) (#7675)
Co-authored-by: clydeps <U5yx99dok9>
2024-11-08 17:02:31 +13:00
David Woodhouse 2f77d31690 OTA: Fix IPv6 and multiple address support (#7414) 2024-11-08 16:38:13 +13:00
dependabot[bot] 3f123d7542 Bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2 (#7730)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-08 12:42:36 +13:00
Clyde Stubbs d189cc1fbe [lvgl] Fix id config for the lvgl component (Bugfix) (#7731)
Co-authored-by: clydeps <U5yx99dok9>
2024-11-07 23:39:01 +00:00
Ramil Valitov c0658ffe2c [fix] deprecated legacy driver tsens (#7658)
Co-authored-by: luar123 <49960470+luar123@users.noreply.github.com>
2024-11-08 11:10:58 +13:00
Clyde Stubbs 248b0bc378 [lvgl] Allow multiple LVGL instances (#7712)
Co-authored-by: clydeps <U5yx99dok9>
2024-11-08 09:05:23 +13:00
Rodrigo Martín 80b4c26481 feat(MQTT): Add enable, disable and enable_on_boot (#7716) 2024-11-06 13:56:48 +13:00
Clyde Stubbs 5bb4d042e4 [spi_device] rename mode to spi_mode (#7724) 2024-11-05 18:54:47 -06:00
Jesse Hills dcc537d0d4 [lvgl] Don't just throw key error if someone types a bad layout type (#7722)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2024-11-06 08:45:40 +11:00
Clyde Stubbs 2dca3d79e4 [lvgl] Ensure images are configured before using them. (Bugfix) (#7721) 2024-11-05 11:32:18 +11:00
tomaszduda23 01497c891d datetime fix build_language_schema (#7710)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
2024-11-04 10:22:16 +13:00
Samuel Sieb 77bb46ff3b handle bad pin schemas (#7711)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-11-01 20:54:34 +11:00
Jesse Hills cefbfb75bd [esp32_ble] Add disconnect as a virtual function to `ESPBTClient` (#7705) 2024-10-31 05:46:35 -05:00
Clyde Stubbs 749b942132 [lvlg] fix tests (#7708) 2024-10-31 06:37:32 +00:00
Faidon Liambotis a043022444 [font] Add support for "glyphsets" (#7429)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
2024-10-31 16:36:23 +13:00
Clyde Stubbs 8b7e061f3a [touchscreen] Calibration fixes (#7704) 2024-10-31 15:15:39 +13:00
Jesse Hills 74ea1b60e3 [CI] Fix webserver defines to be present based on platform, not just framework (#7703) 2024-10-31 11:37:54 +13:00
Clyde Stubbs 5a2fed3569 [spi] Add mosi pin checks for displays (#7702) 2024-10-30 22:28:18 +00:00
Jason Nagin e85157db4b Add config for current temperature precision (#7699) 2024-10-31 08:34:33 +13:00
Clyde Stubbs d3563e4e97 [sdl] Allow window to be resized. (#7698) 2024-10-31 08:30:46 +13:00
Kevin Ahrendt 765579dabb [es8311] Add es8311 dac component (#7693) 2024-10-31 08:29:24 +13:00
dependabot[bot] 6afd004ec5 Bump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0 (#7700)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-31 08:25:36 +13:00
Clyde Stubbs ee3ee3a63b [http_request] Implement on_error trigger for requests (#7696) 2024-10-30 14:10:58 +13:00
Jordan Zucker aae2ee2ecb Add in area and device to the prometheus labels (#7692) 2024-10-30 14:03:10 +13:00
Ilia Sotnikov bac6880a1e fix: [climate] Allow substitutions in visual.temperature_step.{target_temperature,current_temperature} (#7679) 2024-10-29 16:32:55 -07:00
tomaszduda23 0982ab58ac fix build error (#7694)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
2024-10-30 07:53:36 +13:00
Samuel Sieb 38dd566e0c remove use of delay (#7680)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-29 04:12:54 +00:00
tomaszduda23 71e1e3b5f8 let make new platform implementation in external components (#7615)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
2024-10-29 16:58:36 +13:00
Rodrigo Martín abbd7faa64 fix(WiFi): Fix strncpy missing NULL terminator [-Werror=stringop-truncation] (#7668) 2024-10-29 16:56:50 +13:00
Bonne Eggleston aa0e155e22 Fixes modbus timing error (#7674) 2024-10-29 16:52:39 +13:00
Sean Brogan 0dab280440 Mopeka Pro Check improvement to allow user to configure the sensor reporting for lower quality readings (#7475) 2024-10-29 16:49:06 +13:00
Jordan Zucker 90b076eccd Add more prometheus metrics (#7683) 2024-10-29 16:43:02 +13:00
Jordan Zucker 444c0fc67f Add asdf to gitignore (and dockerignore) (#7686) 2024-10-29 16:09:22 +13:00
Satoshi YAMADA 302ba2874e Support W5500 SPI-Ethernet polling mode if framework is supported (#7503) 2024-10-29 16:08:08 +13:00
Clyde Stubbs df750d0d11 [http_request] Add enum for status codes (#7690) 2024-10-29 16:05:58 +13:00
Clyde Stubbs 63e4d4b493 [font] Fix failure with bitmap fonts (#7691) 2024-10-29 13:56:32 +11:00
Clyde Stubbs 88627095fb [http_request] Always return defined server response status (#7689) 2024-10-29 11:12:32 +11:00
Clyde Stubbs 858d97ccef [bytebuffer] Rework ByteBuffer using templates (#7638) 2024-10-29 11:08:29 +13:00
Clyde Stubbs 22f30d42a6 [lvgl] Implement qrcode (#7623) 2024-10-29 11:05:51 +13:00
Clyde Stubbs 1e2497748d [rpi_dpi_rgb] Fix get_width and height (Bugfix) (#7675)
Co-authored-by: clydeps <U5yx99dok9>
2024-10-27 15:17:09 +13:00
SeByDocKy 34de2bbe99 gp8403 : Add the possibility to use substitution for channel selection (#7681) 2024-10-26 14:54:57 -07:00
Oleg Tarasov 21cb941bbe Add OpenTherm component (part 2.1: sensor platform) (#7529)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-25 15:00:28 +13:00
Clyde Stubbs 33fdbbe30c [image][online_image][animation] Fix transparency in RGB565 (#7631) 2024-10-25 11:05:25 +13:00
dependabot[bot] 09f9d91577 Bump actions/setup-python from 5.2.0 to 5.3.0 (#7670)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-25 10:57:09 +13:00
dependabot[bot] 34a8eaddb2 Bump actions/setup-python from 5.2.0 to 5.3.0 in /.github/actions/restore-python (#7671)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 10:56:48 +13:00
tomaszduda23 7dbda12008 [code-quality] weikai.h (#7601) 2024-10-25 10:55:58 +13:00
Kevin Ahrendt 4101d5dad1 [media_player] Add new media player conditions (#7667) 2024-10-25 10:26:39 +13:00
tomaszduda23 c20e1975d1 unified way how all platforms handle get_download_types (#7617)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
2024-10-25 10:25:19 +13:00
Jesse Hills 4fa3c6915c Bump esphome-dashboard to 20241025.0 (#7669) 2024-10-25 08:10:30 +13:00
Jesse Hills ca5c73d170 Support ignoring discovered devices from the dashboard (#7665) 2024-10-25 07:55:14 +13:00
Aaron Solochek 5b5c2fe71b updating ESP32 board definitions (#7650) 2024-10-24 13:25:53 +13:00
tomaszduda23 9acc21e81a unified way how all platforms handle copy_files (#7614)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
2024-10-24 10:04:59 +13:00
Kevin Ahrendt bff0e81ed3 [speaker, i2s_audio] Support audio_dac component, mute actions, and improved logging (#7664)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-24 09:37:38 +13:00
dependabot[bot] 2feffddc55 Bump actions/cache from 4.1.1 to 4.1.2 (#7660)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 08:06:53 +13:00
dependabot[bot] 4289e00ad0 Bump actions/cache from 4.1.1 to 4.1.2 in /.github/actions/restore-python (#7659)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 08:06:45 +13:00
Jesse Hills 574ee404d2 Merge branch 'release' into dev 2024-10-24 08:05:09 +13:00
Jesse Hills 9caf5f8b31 Merge pull request #7663 from esphome/bump-2024.10.2
2024.10.2
2024-10-24 08:04:29 +13:00
Jesse Hills 127acfde64 Bump version to 2024.10.2 2024-10-24 07:15:40 +13:00
Kevin Ahrendt 156ad773c9 [voice_assistant] Bugfix: Fix crash on start (#7662) 2024-10-24 07:15:40 +13:00
Clyde Stubbs 8d90d256bf [lvgl] Some properties were not templatable (Bugfix) (#7655) 2024-10-24 07:15:40 +13:00
Kyle Cascade 833565feb9 Humanized the missing MQTT log topic error message (#7634) 2024-10-24 07:15:40 +13:00
Kevin Ahrendt fdebf04196 [voice_assistant] Bugfix: Fix crash on start (#7662) 2024-10-24 06:25:31 +13:00
Gábor Poczkodi dd8d25e43f i2c_device (#7641) 2024-10-23 16:23:10 +13:00
Clyde Stubbs 68844c4869 [lvgl] Some properties were not templatable (Bugfix) (#7655) 2024-10-23 12:16:55 +13:00
Kyle Cascade 7c0543862a Humanized the missing MQTT log topic error message (#7634) 2024-10-22 17:11:23 +13:00
Rodrigo Martín a932ca2f64 feat(MQTT): Add subscribe QoS to discovery (#7648) 2024-10-22 16:38:25 +13:00
Edward Firmo 2597975ae0 [rtttl] Add get_gain() (#7647) 2024-10-22 16:29:16 +13:00
Clyde Stubbs 6330177d24 [lvgl] Allow strings to be interpreted as integers (Bugfix) (#7652) 2024-10-22 16:10:09 +13:00
Clyde Stubbs 3ac730fb2f [lvgl] Fix rotation code for 90deg (Bugfix) (#7653) 2024-10-22 16:06:58 +13:00
Clyde Stubbs ff48f53989 [image] Fix compile time problem with host image not using lvgl (#7654) 2024-10-22 16:05:39 +13:00
Clyde Stubbs 8bb4316956 [lvgl] light schema should require widget: not led: (Bugfix) (#7649) 2024-10-22 16:03:32 +13:00
Jesse Hills 40cdb778f5 Merge branch 'release' into dev 2024-10-22 14:00:31 +13:00
Jesse Hills dfd174e1a5 Merge pull request #7651 from esphome/bump-2024.10.1
2024.10.1
2024-10-22 13:59:49 +13:00
Jesse Hills 735c04cd69 Bump version to 2024.10.1 2024-10-22 12:57:17 +13:00
Michael Hansen d95b370998 Move setting global voice assistant to constructor (#7630)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-22 12:57:17 +13:00
Clyde Stubbs 3ebdd62c67 [lvgl] Remove states from style definitions (Bugfix) (#7645) 2024-10-22 12:57:17 +13:00
Clyde Stubbs c26c96b8f4 [config] Ensure user-supplied build flags don't get silently overwritten (#7622) 2024-10-22 12:57:17 +13:00
Keith Burzinski 748256b3ee [wifi] Support custom MAC on Arduino, too (#7644) 2024-10-22 12:57:17 +13:00
Samuel Sieb 10791db82e auto-load preferences (#7642)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-10-22 12:57:17 +13:00
Lennart 3dd34f6628 Fix broken ibeacon_uuid config in ble_rssi (#7640) 2024-10-22 12:57:17 +13:00
Clyde Stubbs 7004053538 [config] Fix crash with empty substitutions block (#7612) 2024-10-22 12:57:17 +13:00
Michael Hansen dc42427c60 Move setting global voice assistant to constructor (#7630)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-21 23:14:07 +00:00
Clyde Stubbs 40ad6befa8 [lvgl] Remove states from style definitions (Bugfix) (#7645) 2024-10-22 11:51:40 +13:00
Clyde Stubbs 612e2c1644 [lvgl] Defer display rotation reset until setup(). (Bugfix) (#7627) 2024-10-22 11:50:16 +13:00
Clyde Stubbs c8d0cde329 [config] Ensure user-supplied build flags don't get silently overwritten (#7622) 2024-10-22 11:49:12 +13:00
Keith Burzinski 5e8794175d [wifi] Support custom MAC on Arduino, too (#7644) 2024-10-22 11:46:41 +13:00
Samuel Sieb 657527655d auto-load preferences (#7642)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2024-10-21 13:40:43 +13:00
Jesse Hills f7543a7b8d Update Pull request template (#7620) 2024-10-21 11:28:52 +13:00
Lennart 43a020641b Fix broken ibeacon_uuid config in ble_rssi (#7640) 2024-10-21 08:16:08 +13:00
Shivam Maurya c019ff34bc Bump bme68x_bsec2 version to 1.8.2610 (#7626) 2024-10-17 20:15:28 -05:00
guillempages ef6ccddc0d [lvgl] Allow esphome::Image in lambda to update image source directly (#7624) 2024-10-18 07:23:37 +11:00
Clyde Stubbs 8bbe4efded [lvgl] Revise code generation to allow early widget creation (#7611) 2024-10-17 15:20:19 +13:00
tomaszduda23 f490585f66 [code-quality] udp component (#7602)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-17 12:38:02 +11:00
Clyde Stubbs fcfc76b01b [lvgl] Roller and Dropdown enhancements; (#7608) 2024-10-17 14:03:48 +13:00
Clyde Stubbs 5ad68e926d [axs15231] Touchscreen driver (#7592) 2024-10-17 13:44:20 +13:00
Clyde Stubbs 56fa6fef85 [config] Fix crash with empty substitutions block (#7612) 2024-10-17 13:32:22 +13:00
Ramil Valitov c9e5919739 [fix] ESP32-C6 BLE compile error (#7580)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-17 13:31:02 +13:00
functionpointer 0451b31f9e Bump arduino-mlx90393 to 1.0.2 (#7618) 2024-10-17 13:17:20 +13:00
Kevin Ahrendt 1c845e0ff8 [speaker, i2s_audio] I2S Speaker implementation using a ring buffer (#7605) 2024-10-17 11:47:11 +13:00
Rui Chen 22478ffb0f chore: bump platformio to 6.1.16 to support py3.13 build (#7590) 2024-10-16 17:26:48 +13:00
Rui Chen c38cc128db chore: bump pyyaml to 6.0.2 to support py3.13 build (#7610) 2024-10-16 17:26:17 +13:00
Paul Blacknell fa01149771 Add support for Analog Devices MAX17043 battery fuel gauge (#7522)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-10-16 16:28:24 +13:00
Clyde Stubbs 254522dd93 [qspi_dbi] Rename from qspi_amoled, add features (#7594)
Co-authored-by: clydeps <U5yx99dok9>
2024-10-16 16:26:50 +13:00
Clyde Stubbs 6a86d92781 [lvgl] Implement better software rotation (#7595) 2024-10-16 16:26:06 +13:00
Ramil Valitov b274d6901a [fix] deprecated functions warnings for logger component with ESP IDF version 5.3.0+ (#7600) 2024-10-16 16:25:47 +13:00
Aleksandr Artemev 3ef31e55ca [display] filled_ring and filled_gauge methods added (#7420) 2024-10-16 16:25:05 +13:00
Seth Girvan fb002ac3b0 Add TC74 temperature sensor (#7460)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-10-16 16:24:37 +13:00
Clyde Stubbs de943908bd [automation] Implement all and any condition shortcuts (#7565) 2024-10-16 16:23:43 +13:00
tomaszduda23 b0a25872da [code-quality] statsd component (#7603)
Co-authored-by: Tomasz Duda <tomaszduda23@gmai.com>
2024-10-16 16:22:45 +13:00
Jesse Hills 403d450f47 Merge branch 'release' into dev 2024-10-16 16:19:08 +13:00
Ramil Valitov 2cca26ada4 [fix] ESP32-C6: internal temperature reporting (#7579) 2024-10-15 06:59:23 +13:00
tomaszduda23 312799babf Update test_build_components (#7597)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2024-10-14 14:31:37 +13:00
Jesse Hills 5bc5a9dcb6 Merge branch 'beta' into dev 2024-10-14 10:58:02 +13:00
Niclas Larsson 39e922580a Fix update sequence when update is set to false (#5225) (#7407) 2024-10-14 09:17:37 +13:00
Clyde Stubbs 77d0bfc4bb [touchscreen] Fix coordinates when using rotation (#7591) 2024-10-14 09:10:48 +13:00
RFDarter 654cee6f83 [web_server] expose event compoent to REST (#7587) 2024-10-14 07:50:22 +13:00
RFDarter cf14c02b8a [web_server] Event component grouping (#7586) 2024-10-14 07:50:13 +13:00
Pietro 42f6095960 [core][esp32_rmt_led_strip] Migrate ExternalRAMAllocator to RAMAllocator
And add psram flag to esp32_rmt_led_strip
Co-authored-by: guillempages <guillempages@users.noreply.github.com>
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2024-10-13 20:24:17 +11:00
Clyde Stubbs f224984858 [CI] failures when installing using apt-get. (#7593) 2024-10-12 18:51:51 -05:00
Jesse Hills efe4c5e3bc [light] Add `initial_state` configuration (#7577) 2024-10-11 13:13:32 -04:00
Ramil Valitov cedb671f07 [fix] ESP32-C6 Reset Reasons (#7578) 2024-10-11 07:51:21 +13:00
dependabot[bot] c18bd3ac81 Bump actions/upload-artifact from 4.4.2 to 4.4.3 (#7575)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-10 16:07:40 +13:00
Ilia Sotnikov b08432bd0d Update pillow to 10.4.0 (#7566) 2024-10-10 13:44:07 +11:00
Samuel Sieb 4bac9707fe fix uart settings check (#7573) 2024-10-09 05:44:19 -05:00
Jesse Hills 7e16cda949 Merge branch 'beta' into dev 2024-10-09 17:48:32 +13:00
Jesse Hills 1c05f5af03 Bump version to 2024.11.0-dev 2024-10-09 15:01:49 +13:00
6168 changed files with 206869 additions and 94380 deletions
+230
View File
@@ -0,0 +1,230 @@
# ESPHome AI Collaboration Guide
This document provides essential context for AI models interacting with this project. Adhering to these guidelines will ensure consistency and maintain code quality.
## 1. Project Overview & Purpose
* **Primary Goal:** ESPHome is a system to configure microcontrollers (like ESP32, ESP8266, RP2040, and LibreTiny-based chips) using simple yet powerful YAML configuration files. It generates C++ firmware that can be compiled and flashed to these devices, allowing users to control them remotely through home automation systems.
* **Business Domain:** Internet of Things (IoT), Home Automation.
## 2. Core Technologies & Stack
* **Languages:** Python (>=3.11), C++ (gnu++20)
* **Frameworks & Runtimes:** PlatformIO, Arduino, ESP-IDF.
* **Build Systems:** PlatformIO is the primary build system. CMake is used as an alternative.
* **Configuration:** YAML.
* **Key Libraries/Dependencies:**
* **Python:** `voluptuous` (for configuration validation), `PyYAML` (for parsing configuration files), `paho-mqtt` (for MQTT communication), `tornado` (for the web server), `aioesphomeapi` (for the native API).
* **C++:** `ArduinoJson` (for JSON serialization/deserialization), `AsyncMqttClient-esphome` (for MQTT), `ESPAsyncWebServer` (for the web server).
* **Package Manager(s):** `pip` (for Python dependencies), `platformio` (for C++/PlatformIO dependencies).
* **Communication Protocols:** Protobuf (for native API), MQTT, HTTP.
## 3. Architectural Patterns
* **Overall Architecture:** The project follows a code-generation architecture. The Python code parses user-defined YAML configuration files and generates C++ source code. This C++ code is then compiled and flashed to the target microcontroller using PlatformIO.
* **Directory Structure Philosophy:**
* `/esphome`: Contains the core Python source code for the ESPHome application.
* `/esphome/components`: Contains the individual components that can be used in ESPHome configurations. Each component is a self-contained unit with its own C++ and Python code.
* `/tests`: Contains all unit and integration tests for the Python code.
* `/docker`: Contains Docker-related files for building and running ESPHome in a container.
* `/script`: Contains helper scripts for development and maintenance.
* **Core Architectural Components:**
1. **Configuration System** (`esphome/config*.py`): Handles YAML parsing and validation using Voluptuous, schema definitions, and multi-platform configurations.
2. **Code Generation** (`esphome/codegen.py`, `esphome/cpp_generator.py`): Manages Python to C++ code generation, template processing, and build flag management.
3. **Component System** (`esphome/components/`): Contains modular hardware and software components with platform-specific implementations and dependency management.
4. **Core Framework** (`esphome/core/`): Manages the application lifecycle, hardware abstraction, and component registration.
5. **Dashboard** (`esphome/dashboard/`): A web-based interface for device configuration, management, and OTA updates.
* **Platform Support:**
1. **ESP32** (`components/esp32/`): Espressif ESP32 family. Supports multiple variants (Original, C2, C3, C5, C6, H2, P4, S2, S3) with ESP-IDF framework. Arduino framework supports only a subset of the variants (Original, C3, S2, S3).
2. **ESP8266** (`components/esp8266/`): Espressif ESP8266. Arduino framework only, with memory constraints.
3. **RP2040** (`components/rp2040/`): Raspberry Pi Pico/RP2040. Arduino framework with PIO (Programmable I/O) support.
4. **LibreTiny** (`components/libretiny/`): Realtek and Beken chips. Supports multiple chip families and auto-generated components.
## 4. Coding Conventions & Style Guide
* **Formatting:**
* **Python:** Uses `ruff` and `flake8` for linting and formatting. Configuration is in `pyproject.toml`.
* **C++:** Uses `clang-format` for formatting. Configuration is in `.clang-format`.
* **Naming Conventions:**
* **Python:** Follows PEP 8. Use clear, descriptive names following snake_case.
* **C++:** Follows the Google C++ Style Guide.
* **Component Structure:**
* **Standard Files:**
```
components/[component_name]/
├── __init__.py # Component configuration schema and code generation
├── [component].h # C++ header file (if needed)
├── [component].cpp # C++ implementation (if needed)
└── [platform]/ # Platform-specific implementations
├── __init__.py # Platform-specific configuration
├── [platform].h # Platform C++ header
└── [platform].cpp # Platform C++ implementation
```
* **Component Metadata:**
- `DEPENDENCIES`: List of required components
- `AUTO_LOAD`: Components to automatically load
- `CONFLICTS_WITH`: Incompatible components
- `CODEOWNERS`: GitHub usernames responsible for maintenance
- `MULTI_CONF`: Whether multiple instances are allowed
* **Code Generation & Common Patterns:**
* **Configuration Schema Pattern:**
```python
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.const import CONF_KEY, CONF_ID
CONF_PARAM = "param" # A constant that does not yet exist in esphome/const.py
my_component_ns = cg.esphome_ns.namespace("my_component")
MyComponent = my_component_ns.class_("MyComponent", cg.Component)
CONFIG_SCHEMA = cv.Schema({
cv.GenerateID(): cv.declare_id(MyComponent),
cv.Required(CONF_KEY): cv.string,
cv.Optional(CONF_PARAM, default=42): cv.int_,
}).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
cg.add(var.set_key(config[CONF_KEY]))
cg.add(var.set_param(config[CONF_PARAM]))
```
* **C++ Class Pattern:**
```cpp
namespace esphome {
namespace my_component {
class MyComponent : public Component {
public:
void setup() override;
void loop() override;
void dump_config() override;
void set_key(const std::string &key) { this->key_ = key; }
void set_param(int param) { this->param_ = param; }
protected:
std::string key_;
int param_{0};
};
} // namespace my_component
} // namespace esphome
```
* **Common Component Examples:**
- **Sensor:**
```python
from esphome.components import sensor
CONFIG_SCHEMA = sensor.sensor_schema(MySensor).extend(cv.polling_component_schema("60s"))
async def to_code(config):
var = await sensor.new_sensor(config)
await cg.register_component(var, config)
```
- **Binary Sensor:**
```python
from esphome.components import binary_sensor
CONFIG_SCHEMA = binary_sensor.binary_sensor_schema().extend({ ... })
async def to_code(config):
var = await binary_sensor.new_binary_sensor(config)
```
- **Switch:**
```python
from esphome.components import switch
CONFIG_SCHEMA = switch.switch_schema().extend({ ... })
async def to_code(config):
var = await switch.new_switch(config)
```
* **Configuration Validation:**
* **Common Validators:** `cv.int_`, `cv.float_`, `cv.string`, `cv.boolean`, `cv.int_range(min=0, max=100)`, `cv.positive_int`, `cv.percentage`.
* **Complex Validation:** `cv.All(cv.string, cv.Length(min=1, max=50))`, `cv.Any(cv.int_, cv.string)`.
* **Platform-Specific:** `cv.only_on(["esp32", "esp8266"])`, `esp32.only_on_variant(...)`, `cv.only_on_esp32`, `cv.only_on_esp8266`, `cv.only_on_rp2040`.
* **Framework-Specific:** `cv.only_with_framework(...)`, `cv.only_with_arduino`, `cv.only_with_esp_idf`.
* **Schema Extensions:**
```python
CONFIG_SCHEMA = cv.Schema({ ... })
.extend(cv.COMPONENT_SCHEMA)
.extend(uart.UART_DEVICE_SCHEMA)
.extend(i2c.i2c_device_schema(0x48))
.extend(spi.spi_device_schema(cs_pin_required=True))
```
## 5. Key Files & Entrypoints
* **Main Entrypoint(s):** `esphome/__main__.py` is the main entrypoint for the ESPHome command-line interface.
* **Configuration:**
* `pyproject.toml`: Defines the Python project metadata and dependencies.
* `platformio.ini`: Configures the PlatformIO build environments for different microcontrollers.
* `.pre-commit-config.yaml`: Configures the pre-commit hooks for linting and formatting.
* **CI/CD Pipeline:** Defined in `.github/workflows`.
* **Static Analysis & Development:**
* `esphome/core/defines.h`: A comprehensive header file containing all `#define` directives that can be added by components using `cg.add_define()` in Python. This file is used exclusively for development, static analysis tools, and CI testing - it is not used during runtime compilation. When developing components that add new defines, they must be added to this file to ensure proper IDE support and static analysis coverage. The file includes feature flags, build configurations, and platform-specific defines that help static analyzers understand the complete codebase without needing to compile for specific platforms.
## 6. Development & Testing Workflow
* **Local Development Environment:** Use the provided Docker container or create a Python virtual environment and install dependencies from `requirements_dev.txt`.
* **Running Commands:** Use the `script/run-in-env.py` script to execute commands within the project's virtual environment. For example, to run the linter: `python3 script/run-in-env.py pre-commit run`.
* **Testing:**
* **Python:** Run unit tests with `pytest`.
* **C++:** Use `clang-tidy` for static analysis.
* **Component Tests:** YAML-based compilation tests are located in `tests/`. The structure is as follows:
```
tests/
├── test_build_components/ # Base test configurations
└── components/[component]/ # Component-specific tests
```
Run them using `script/test_build_components`. Use `-c <component>` to test specific components and `-t <target>` for specific platforms.
* **Testing All Components Together:** To verify that all components can be tested together without ID conflicts or configuration issues, use:
```bash
./script/test_component_grouping.py -e config --all
```
This tests all components in a single build to catch conflicts that might not appear when testing components individually. Use `-e config` for fast configuration validation, or `-e compile` for full compilation testing.
* **Debugging and Troubleshooting:**
* **Debug Tools:**
- `esphome config <file>.yaml` to validate configuration.
- `esphome compile <file>.yaml` to compile without uploading.
- Check the Dashboard for real-time logs.
- Use component-specific debug logging.
* **Common Issues:**
- **Import Errors**: Check component dependencies and `PYTHONPATH`.
- **Validation Errors**: Review configuration schema definitions.
- **Build Errors**: Check platform compatibility and library versions.
- **Runtime Errors**: Review generated C++ code and component logic.
## 7. Specific Instructions for AI Collaboration
* **Contribution Workflow (Pull Request Process):**
1. **Fork & Branch:** Create a new branch in your fork.
2. **Make Changes:** Adhere to all coding conventions and patterns.
3. **Test:** Create component tests for all supported platforms and run the full test suite locally.
4. **Lint:** Run `pre-commit` to ensure code is compliant.
5. **Commit:** Commit your changes. There is no strict format for commit messages.
6. **Pull Request:** Submit a PR against the `dev` branch. The Pull Request title should have a prefix of the component being worked on (e.g., `[display] Fix bug`, `[abc123] Add new component`). Update documentation, examples, and add `CODEOWNERS` entries as needed. Pull requests should always be made with the PULL_REQUEST_TEMPLATE.md template filled out correctly.
* **Documentation Contributions:**
* Documentation is hosted in the separate `esphome/esphome-docs` repository.
* The contribution workflow is the same as for the codebase.
* **Best Practices:**
* **Component Development:** Keep dependencies minimal, provide clear error messages, and write comprehensive docstrings and tests.
* **Code Generation:** Generate minimal and efficient C++ code. Validate all user inputs thoroughly. Support multiple platform variations.
* **Configuration Design:** Aim for simplicity with sensible defaults, while allowing for advanced customization.
* **Security:** Be mindful of security when making changes to the API, web server, or any other network-related code. Do not hardcode secrets or keys.
* **Dependencies & Build System Integration:**
* **Python:** When adding a new Python dependency, add it to the appropriate `requirements*.txt` file and `pyproject.toml`.
* **C++ / PlatformIO:** When adding a new C++ dependency, add it to `platformio.ini` and use `cg.add_library`.
* **Build Flags:** Use `cg.add_build_flag(...)` to add compiler flags.
+32 -4
View File
@@ -7,28 +7,39 @@ Checks: >-
-boost-*,
-bugprone-easily-swappable-parameters,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-multi-level-implicit-pointer-conversion,
-bugprone-narrowing-conversions,
-bugprone-signed-char-misuse,
-bugprone-switch-missing-default-case,
-cert-dcl50-cpp,
-cert-err33-c,
-cert-err58-cpp,
-cert-oop57-cpp,
-cert-str34-c,
-clang-analyzer-optin.core.EnumCastOutOfRange,
-clang-analyzer-optin.cplusplus.UninitializedObject,
-clang-analyzer-osx.*,
-clang-diagnostic-delete-abstract-non-virtual-dtor,
-clang-diagnostic-delete-non-abstract-non-virtual-dtor,
-clang-diagnostic-deprecated-declarations,
-clang-diagnostic-ignored-optimization-argument,
-clang-diagnostic-missing-field-initializers,
-clang-diagnostic-shadow-field,
-clang-diagnostic-unused-const-variable,
-clang-diagnostic-unused-parameter,
-clang-diagnostic-vla-cxx-extension,
-concurrency-*,
-cppcoreguidelines-avoid-c-arrays,
-cppcoreguidelines-avoid-const-or-ref-data-members,
-cppcoreguidelines-avoid-do-while,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-init-variables,
-cppcoreguidelines-macro-to-enum,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-missing-std-forward,
-cppcoreguidelines-narrowing-conversions,
-cppcoreguidelines-non-private-member-variables-in-classes,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-prefer-member-initializer,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-pro-bounds-constant-array-index,
@@ -40,7 +51,9 @@ Checks: >-
-cppcoreguidelines-pro-type-static-cast-downcast,
-cppcoreguidelines-pro-type-union-access,
-cppcoreguidelines-pro-type-vararg,
-cppcoreguidelines-rvalue-reference-param-not-moved,
-cppcoreguidelines-special-member-functions,
-cppcoreguidelines-use-default-member-init,
-cppcoreguidelines-virtual-class-destructor,
-fuchsia-multiple-inheritance,
-fuchsia-overloaded-operator,
@@ -60,20 +73,32 @@ Checks: >-
-llvm-include-order,
-llvm-qualified-auto,
-llvmlibc-*,
-misc-non-private-member-variables-in-classes,
-misc-const-correctness,
-misc-include-cleaner,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-unused-parameters,
-modernize-avoid-c-arrays,
-misc-use-anonymous-namespace,
-modernize-avoid-bind,
-modernize-avoid-c-arrays,
-modernize-concat-nested-namespaces,
-modernize-macro-to-enum,
-modernize-return-braced-init-list,
-modernize-type-traits,
-modernize-use-auto,
-modernize-use-constraints,
-modernize-use-default-member-init,
-modernize-use-equals-default,
-modernize-use-trailing-return-type,
-modernize-use-nodiscard,
-modernize-use-nullptr,
-modernize-use-nodiscard,
-modernize-use-nullptr,
-modernize-use-trailing-return-type,
-mpi-*,
-objc-*,
-performance-enum-size,
-readability-avoid-nested-conditional-operator,
-readability-container-contains,
-readability-container-data-pointer,
-readability-convert-member-functions-to-static,
-readability-else-after-return,
@@ -82,11 +107,14 @@ Checks: >-
-readability-isolate-declaration,
-readability-magic-numbers,
-readability-make-member-function-const,
-readability-named-parameter,
-readability-redundant-casting,
-readability-redundant-inline-specifier,
-readability-redundant-member-init,
-readability-redundant-string-init,
-readability-uppercase-literal-suffix,
-readability-use-anyofallof,
WarningsAsErrors: '*'
AnalyzeTemporaryDtors: false
FormatStyle: google
CheckOptions:
- key: google-readability-function-size.StatementThreshold
+1
View File
@@ -0,0 +1 @@
049d60eed541730efaa4c0dc5d337b4287bf29b6daa350b5dfc1f23915f1c52f
+3 -1
View File
@@ -1,2 +1,4 @@
[run]
omit = esphome/components/*
omit =
esphome/components/*
tests/integration/*
+37
View File
@@ -0,0 +1,37 @@
ARG BUILD_BASE_VERSION=2025.04.0
FROM ghcr.io/esphome/docker-base:debian-${BUILD_BASE_VERSION} AS base
RUN git config --system --add safe.directory "*"
RUN apt update \
&& apt install -y \
protobuf-compiler
RUN pip install uv
RUN useradd esphome -m
USER esphome
ENV VIRTUAL_ENV=/home/esphome/.local/esphome-venv
RUN uv venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Override this set to true in the docker-base image
ENV UV_SYSTEM_PYTHON=false
WORKDIR /tmp
COPY requirements.txt ./
RUN uv pip install -r requirements.txt
COPY requirements_dev.txt requirements_test.txt ./
RUN uv pip install -r requirements_dev.txt -r requirements_test.txt
RUN \
platformio settings set enable_telemetry No \
&& platformio settings set check_platformio_interval 1000000
COPY script/platformio_install_deps.py platformio.ini ./
RUN ./platformio_install_deps.py platformio.ini --libraries --platforms --tools
WORKDIR /workspaces
+8 -12
View File
@@ -1,18 +1,17 @@
{
"name": "ESPHome Dev",
"image": "ghcr.io/esphome/esphome-lint:dev",
"context": "..",
"dockerFile": "Dockerfile",
"postCreateCommand": [
"script/devcontainer-post-create"
],
"containerEnv": {
"DEVCONTAINER": "1",
"PIP_BREAK_SYSTEM_PACKAGES": "1",
"PIP_ROOT_USER_ACTION": "ignore"
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"runArgs": [
"--privileged",
"-e",
"ESPHOME_DASHBOARD_USE_PING=1"
"GIT_EDITOR=code --wait"
// uncomment and edit the path in order to pass though local USB serial to the conatiner
// , "--device=/dev/ttyACM0"
],
@@ -31,7 +30,7 @@
"ms-python.python",
"ms-python.pylint",
"ms-python.flake8",
"ms-python.black-formatter",
"charliermarsh.ruff",
"visualstudioexptteam.vscodeintellicode",
// yaml
"redhat.vscode-yaml",
@@ -49,14 +48,11 @@
"flake8.args": [
"--config=${workspaceFolder}/.flake8"
],
"black-formatter.args": [
"--config",
"${workspaceFolder}/pyproject.toml"
],
"ruff.configuration": "${workspaceFolder}/pyproject.toml",
"[python]": {
// VS will say "Value is not accepted" before building the devcontainer, but the warning
// should go away after build is completed.
"editor.defaultFormatter": "ms-python.black-formatter"
"editor.defaultFormatter": "charliermarsh.ruff"
},
"editor.formatOnPaste": false,
"editor.formatOnSave": true,
+5 -1
View File
@@ -75,6 +75,9 @@ target/
# pyenv
.python-version
# asdf
.tool-versions
# celery beat schedule file
celerybeat-schedule
@@ -111,4 +114,5 @@ config/
examples/
Dockerfile
.git/
tests/build/
tests/
.*
-4
View File
@@ -1,4 +0,0 @@
---
# These are supported funding model platforms
custom: https://www.nabucasa.com
+92
View File
@@ -0,0 +1,92 @@
name: Report an issue with ESPHome
description: Report an issue with ESPHome.
body:
- type: markdown
attributes:
value: |
This issue form is for reporting bugs only!
If you have a feature request or enhancement, please [request them here instead][fr].
[fr]: https://github.com/orgs/esphome/discussions
- type: textarea
validations:
required: true
id: problem
attributes:
label: The problem
description: >-
Describe the issue you are experiencing here to communicate to the
maintainers. Tell us what you were trying to do and what happened.
Provide a clear and concise description of what the problem is.
- type: markdown
attributes:
value: |
## Environment
- type: input
id: version
validations:
required: true
attributes:
label: Which version of ESPHome has the issue?
description: >
ESPHome version like 1.19, 2025.6.0 or 2025.XX.X-dev.
- type: dropdown
validations:
required: true
id: installation
attributes:
label: What type of installation are you using?
options:
- Home Assistant Add-on
- Docker
- pip
- type: dropdown
validations:
required: true
id: platform
attributes:
label: What platform are you using?
options:
- ESP8266
- ESP32
- RP2040
- BK72XX
- RTL87XX
- LN882X
- Host
- Other
- type: input
id: component_name
attributes:
label: Component causing the issue
description: >
The name of the component or platform. For example, api/i2c or ultrasonic.
- type: markdown
attributes:
value: |
# Details
- type: textarea
id: config
attributes:
label: YAML Config
description: |
Include a complete YAML configuration file demonstrating the problem here. Preferably post the *entire* file - don't make assumptions about what is unimportant. However, if it's a large or complicated config then you will need to reduce it to the smallest possible file *that still demonstrates the problem*. If you don't provide enough information to *easily* reproduce the problem, it's unlikely your bug report will get any attention. Logs do not belong here, attach them below.
render: yaml
- type: textarea
id: logs
attributes:
label: Anything in the logs that might be useful for us?
description: For example, error message, or stack traces. Serial or USB logs are much more useful than WiFi logs.
render: txt
- type: textarea
id: additional
attributes:
label: Additional information
description: >
If you have any additional information for us, use the field below.
Please note, you can attach screenshots or screen recordings here, by
dragging and dropping files in the field below.
+16 -10
View File
@@ -1,15 +1,21 @@
---
blank_issues_enabled: false
contact_links:
- name: Issue Tracker
url: https://github.com/esphome/issues
about: Please create bug reports in the dedicated issue tracker.
- name: Feature Request Tracker
url: https://github.com/esphome/feature-requests
about: |
Please create feature requests in the dedicated feature request tracker.
- name: Report an issue with the ESPHome documentation
url: https://github.com/esphome/esphome-docs/issues/new/choose
about: Report an issue with the ESPHome documentation.
- name: Report an issue with the ESPHome web server
url: https://github.com/esphome/esphome-webserver/issues/new/choose
about: Report an issue with the ESPHome web server.
- name: Report an issue with the ESPHome Builder / Dashboard
url: https://github.com/esphome/dashboard/issues/new/choose
about: Report an issue with the ESPHome Builder / Dashboard.
- name: Report an issue with the ESPHome API client
url: https://github.com/esphome/aioesphomeapi/issues/new/choose
about: Report an issue with the ESPHome API client.
- name: Make a Feature Request
url: https://github.com/orgs/esphome/discussions
about: Please create feature requests in the dedicated feature request tracker.
- name: Frequently Asked Question
url: https://esphome.io/guides/faq.html
about: |
Please view the FAQ for common questions and what
to include in a bug report.
about: Please view the FAQ for common questions and what to include in a bug report.
+8 -8
View File
@@ -7,11 +7,16 @@
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Code quality improvements to existing code or addition of tests
- [ ] Other
**Related issue or feature (if applicable):** fixes <link to issue>
**Related issue or feature (if applicable):**
**Pull request in [esphome-docs](https://github.com/esphome/esphome-docs) with documentation (if applicable):** esphome/esphome-docs#<esphome-docs PR number goes here>
- fixes <link to issue>
**Pull request in [esphome-docs](https://github.com/esphome/esphome-docs) with documentation (if applicable):**
- esphome/esphome-docs#<esphome-docs PR number goes here>
## Test Environment
@@ -21,14 +26,9 @@
- [ ] RP2040
- [ ] BK72xx
- [ ] RTL87xx
- [ ] nRF52840
## Example entry for `config.yaml`:
<!--
Supplying a configuration snippet, makes it easier for a maintainer to test
your PR. Furthermore, for new integrations, it gives an impression of how
the configuration would look like.
Note: Remove this section if this PR does not have an example entry.
-->
```yaml
# Example config.yaml
+17 -16
View File
@@ -1,15 +1,11 @@
name: Build Image
inputs:
platform:
description: "Platform to build for"
required: true
example: "linux/amd64"
target:
description: "Target to build"
required: true
example: "docker"
baseimg:
description: "Base image type"
build_type:
description: "Build type"
required: true
example: "docker"
suffix:
@@ -19,6 +15,11 @@ inputs:
description: "Version to build"
required: true
example: "2023.12.0"
base_os:
description: "Base OS to use"
required: false
default: "debian"
example: "debian"
runs:
using: "composite"
steps:
@@ -46,52 +47,52 @@ runs:
- name: Build and push to ghcr by digest
id: build-ghcr
uses: docker/build-push-action@v6.9.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
env:
DOCKER_BUILD_SUMMARY: false
DOCKER_BUILD_RECORD_UPLOAD: false
with:
context: .
file: ./docker/Dockerfile
platforms: ${{ inputs.platform }}
target: ${{ inputs.target }}
cache-from: type=gha
cache-to: ${{ steps.cache-to.outputs.value }}
build-args: |
BASEIMGTYPE=${{ inputs.baseimg }}
BUILD_TYPE=${{ inputs.build_type }}
BUILD_VERSION=${{ inputs.version }}
BUILD_OS=${{ inputs.base_os }}
outputs: |
type=image,name=ghcr.io/${{ steps.tags.outputs.image_name }},push-by-digest=true,name-canonical=true,push=true
- name: Export ghcr digests
shell: bash
run: |
mkdir -p /tmp/digests/${{ inputs.target }}/ghcr
mkdir -p /tmp/digests/${{ inputs.build_type }}/ghcr
digest="${{ steps.build-ghcr.outputs.digest }}"
touch "/tmp/digests/${{ inputs.target }}/ghcr/${digest#sha256:}"
touch "/tmp/digests/${{ inputs.build_type }}/ghcr/${digest#sha256:}"
- name: Build and push to dockerhub by digest
id: build-dockerhub
uses: docker/build-push-action@v6.9.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
env:
DOCKER_BUILD_SUMMARY: false
DOCKER_BUILD_RECORD_UPLOAD: false
with:
context: .
file: ./docker/Dockerfile
platforms: ${{ inputs.platform }}
target: ${{ inputs.target }}
cache-from: type=gha
cache-to: ${{ steps.cache-to.outputs.value }}
build-args: |
BASEIMGTYPE=${{ inputs.baseimg }}
BUILD_TYPE=${{ inputs.build_type }}
BUILD_VERSION=${{ inputs.version }}
BUILD_OS=${{ inputs.base_os }}
outputs: |
type=image,name=docker.io/${{ steps.tags.outputs.image_name }},push-by-digest=true,name-canonical=true,push=true
- name: Export dockerhub digests
shell: bash
run: |
mkdir -p /tmp/digests/${{ inputs.target }}/dockerhub
mkdir -p /tmp/digests/${{ inputs.build_type }}/dockerhub
digest="${{ steps.build-dockerhub.outputs.digest }}"
touch "/tmp/digests/${{ inputs.target }}/dockerhub/${digest#sha256:}"
touch "/tmp/digests/${{ inputs.build_type }}/dockerhub/${digest#sha256:}"
+5 -5
View File
@@ -17,12 +17,12 @@ runs:
steps:
- name: Set up Python ${{ inputs.python-version }}
id: python
uses: actions/setup-python@v5.2.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ inputs.python-version }}
- name: Restore Python virtual environment
id: cache-venv
uses: actions/cache/restore@v4.1.1
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: venv
# yamllint disable-line rule:line-length
@@ -34,14 +34,14 @@ runs:
python -m venv venv
source venv/bin/activate
python --version
pip install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt
pip install -r requirements.txt -r requirements_test.txt
pip install -e .
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true' && runner.os == 'Windows'
shell: bash
run: |
python -m venv venv
./venv/Scripts/activate
source ./venv/Scripts/activate
python --version
pip install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt
pip install -r requirements.txt -r requirements_test.txt
pip install -e .
+1
View File
@@ -0,0 +1 @@
../.ai/instructions.md
+9 -1
View File
@@ -9,6 +9,9 @@ updates:
# Hypotehsis is only used for testing and is updated quite often
- dependency-name: hypothesis
- package-ecosystem: github-actions
labels:
- "dependencies"
- "github-actions"
directory: "/"
schedule:
interval: daily
@@ -17,15 +20,20 @@ updates:
docker-actions:
applies-to: version-updates
patterns:
- "docker/setup-qemu-action"
- "docker/login-action"
- "docker/setup-buildx-action"
- package-ecosystem: github-actions
labels:
- "dependencies"
- "github-actions"
directory: "/.github/actions/build-image"
schedule:
interval: daily
open-pull-requests-limit: 10
- package-ecosystem: github-actions
labels:
- "dependencies"
- "github-actions"
directory: "/.github/actions/restore-python"
schedule:
interval: daily
+662
View File
@@ -0,0 +1,662 @@
name: Auto Label PR
on:
# Runs only on pull_request_target due to having access to a App token.
# This means PRs from forks will not be able to alter this workflow to get the tokens
pull_request_target:
types: [labeled, opened, reopened, synchronize, edited]
permissions:
pull-requests: write
contents: read
env:
SMALL_PR_THRESHOLD: 30
MAX_LABELS: 15
TOO_BIG_THRESHOLD: 1000
COMPONENT_LABEL_THRESHOLD: 10
jobs:
label:
runs-on: ubuntu-latest
if: github.event.action != 'labeled' || github.event.sender.type != 'Bot'
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2
with:
app-id: ${{ secrets.ESPHOME_GITHUB_APP_ID }}
private-key: ${{ secrets.ESPHOME_GITHUB_APP_PRIVATE_KEY }}
- name: Auto Label PR
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.generate-token.outputs.token }}
script: |
const fs = require('fs');
// Constants
const SMALL_PR_THRESHOLD = parseInt('${{ env.SMALL_PR_THRESHOLD }}');
const MAX_LABELS = parseInt('${{ env.MAX_LABELS }}');
const TOO_BIG_THRESHOLD = parseInt('${{ env.TOO_BIG_THRESHOLD }}');
const COMPONENT_LABEL_THRESHOLD = parseInt('${{ env.COMPONENT_LABEL_THRESHOLD }}');
const BOT_COMMENT_MARKER = '<!-- auto-label-pr-bot -->';
const CODEOWNERS_MARKER = '<!-- codeowners-request -->';
const TOO_BIG_MARKER = '<!-- too-big-request -->';
const MANAGED_LABELS = [
'new-component',
'new-platform',
'new-target-platform',
'merging-to-release',
'merging-to-beta',
'core',
'small-pr',
'dashboard',
'github-actions',
'by-code-owner',
'has-tests',
'needs-tests',
'needs-docs',
'needs-codeowners',
'too-big',
'labeller-recheck',
'bugfix',
'new-feature',
'breaking-change',
'code-quality'
];
const DOCS_PR_PATTERNS = [
/https:\/\/github\.com\/esphome\/esphome-docs\/pull\/\d+/,
/esphome\/esphome-docs#\d+/
];
// Global state
const { owner, repo } = context.repo;
const pr_number = context.issue.number;
// Get current labels and PR data
const { data: currentLabelsData } = await github.rest.issues.listLabelsOnIssue({
owner,
repo,
issue_number: pr_number
});
const currentLabels = currentLabelsData.map(label => label.name);
const managedLabels = currentLabels.filter(label =>
label.startsWith('component: ') || MANAGED_LABELS.includes(label)
);
// Check for mega-PR early - if present, skip most automatic labeling
const isMegaPR = currentLabels.includes('mega-pr');
// Get all PR files with automatic pagination
const prFiles = await github.paginate(
github.rest.pulls.listFiles,
{
owner,
repo,
pull_number: pr_number
}
);
// Calculate data from PR files
const changedFiles = prFiles.map(file => file.filename);
const totalAdditions = prFiles.reduce((sum, file) => sum + (file.additions || 0), 0);
const totalDeletions = prFiles.reduce((sum, file) => sum + (file.deletions || 0), 0);
const totalChanges = totalAdditions + totalDeletions;
console.log('Current labels:', currentLabels.join(', '));
console.log('Changed files:', changedFiles.length);
console.log('Total changes:', totalChanges);
if (isMegaPR) {
console.log('Mega-PR detected - applying limited labeling logic');
}
// Fetch API data
async function fetchApiData() {
try {
const response = await fetch('https://data.esphome.io/components.json');
const componentsData = await response.json();
return {
targetPlatforms: componentsData.target_platforms || [],
platformComponents: componentsData.platform_components || []
};
} catch (error) {
console.log('Failed to fetch components data from API:', error.message);
return { targetPlatforms: [], platformComponents: [] };
}
}
// Strategy: Merge branch detection
async function detectMergeBranch() {
const labels = new Set();
const baseRef = context.payload.pull_request.base.ref;
if (baseRef === 'release') {
labels.add('merging-to-release');
} else if (baseRef === 'beta') {
labels.add('merging-to-beta');
}
return labels;
}
// Strategy: Component and platform labeling
async function detectComponentPlatforms(apiData) {
const labels = new Set();
const componentRegex = /^esphome\/components\/([^\/]+)\//;
const targetPlatformRegex = new RegExp(`^esphome\/components\/(${apiData.targetPlatforms.join('|')})/`);
for (const file of changedFiles) {
const componentMatch = file.match(componentRegex);
if (componentMatch) {
labels.add(`component: ${componentMatch[1]}`);
}
const platformMatch = file.match(targetPlatformRegex);
if (platformMatch) {
labels.add(`platform: ${platformMatch[1]}`);
}
}
return labels;
}
// Strategy: New component detection
async function detectNewComponents() {
const labels = new Set();
const addedFiles = prFiles.filter(file => file.status === 'added').map(file => file.filename);
for (const file of addedFiles) {
const componentMatch = file.match(/^esphome\/components\/([^\/]+)\/__init__\.py$/);
if (componentMatch) {
try {
const content = fs.readFileSync(file, 'utf8');
if (content.includes('IS_TARGET_PLATFORM = True')) {
labels.add('new-target-platform');
}
} catch (error) {
console.log(`Failed to read content of ${file}:`, error.message);
}
labels.add('new-component');
}
}
return labels;
}
// Strategy: New platform detection
async function detectNewPlatforms(apiData) {
const labels = new Set();
const addedFiles = prFiles.filter(file => file.status === 'added').map(file => file.filename);
for (const file of addedFiles) {
const platformFileMatch = file.match(/^esphome\/components\/([^\/]+)\/([^\/]+)\.py$/);
if (platformFileMatch) {
const [, component, platform] = platformFileMatch;
if (apiData.platformComponents.includes(platform)) {
labels.add('new-platform');
}
}
const platformDirMatch = file.match(/^esphome\/components\/([^\/]+)\/([^\/]+)\/__init__\.py$/);
if (platformDirMatch) {
const [, component, platform] = platformDirMatch;
if (apiData.platformComponents.includes(platform)) {
labels.add('new-platform');
}
}
}
return labels;
}
// Strategy: Core files detection
async function detectCoreChanges() {
const labels = new Set();
const coreFiles = changedFiles.filter(file =>
file.startsWith('esphome/core/') ||
(file.startsWith('esphome/') && file.split('/').length === 2)
);
if (coreFiles.length > 0) {
labels.add('core');
}
return labels;
}
// Strategy: PR size detection
async function detectPRSize() {
const labels = new Set();
if (totalChanges <= SMALL_PR_THRESHOLD) {
labels.add('small-pr');
return labels;
}
const testAdditions = prFiles
.filter(file => file.filename.startsWith('tests/'))
.reduce((sum, file) => sum + (file.additions || 0), 0);
const testDeletions = prFiles
.filter(file => file.filename.startsWith('tests/'))
.reduce((sum, file) => sum + (file.deletions || 0), 0);
const nonTestChanges = (totalAdditions - testAdditions) - (totalDeletions - testDeletions);
// Don't add too-big if mega-pr label is already present
if (nonTestChanges > TOO_BIG_THRESHOLD && !isMegaPR) {
labels.add('too-big');
}
return labels;
}
// Strategy: Dashboard changes
async function detectDashboardChanges() {
const labels = new Set();
const dashboardFiles = changedFiles.filter(file =>
file.startsWith('esphome/dashboard/') ||
file.startsWith('esphome/components/dashboard_import/')
);
if (dashboardFiles.length > 0) {
labels.add('dashboard');
}
return labels;
}
// Strategy: GitHub Actions changes
async function detectGitHubActionsChanges() {
const labels = new Set();
const githubActionsFiles = changedFiles.filter(file =>
file.startsWith('.github/workflows/')
);
if (githubActionsFiles.length > 0) {
labels.add('github-actions');
}
return labels;
}
// Strategy: Code owner detection
async function detectCodeOwner() {
const labels = new Set();
try {
const { data: codeownersFile } = await github.rest.repos.getContent({
owner,
repo,
path: 'CODEOWNERS',
});
const codeownersContent = Buffer.from(codeownersFile.content, 'base64').toString('utf8');
const prAuthor = context.payload.pull_request.user.login;
const codeownersLines = codeownersContent.split('\n')
.map(line => line.trim())
.filter(line => line && !line.startsWith('#'));
const codeownersRegexes = codeownersLines.map(line => {
const parts = line.split(/\s+/);
const pattern = parts[0];
const owners = parts.slice(1);
let regex;
if (pattern.endsWith('*')) {
const dir = pattern.slice(0, -1);
regex = new RegExp(`^${dir.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`);
} else if (pattern.includes('*')) {
// First escape all regex special chars except *, then replace * with .*
const regexPattern = pattern
.replace(/[.+?^${}()|[\]\\]/g, '\\$&')
.replace(/\*/g, '.*');
regex = new RegExp(`^${regexPattern}$`);
} else {
regex = new RegExp(`^${pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}$`);
}
return { regex, owners };
});
for (const file of changedFiles) {
for (const { regex, owners } of codeownersRegexes) {
if (regex.test(file) && owners.some(owner => owner === `@${prAuthor}`)) {
labels.add('by-code-owner');
return labels;
}
}
}
} catch (error) {
console.log('Failed to read or parse CODEOWNERS file:', error.message);
}
return labels;
}
// Strategy: Test detection
async function detectTests() {
const labels = new Set();
const testFiles = changedFiles.filter(file => file.startsWith('tests/'));
if (testFiles.length > 0) {
labels.add('has-tests');
}
return labels;
}
// Strategy: PR Template Checkbox detection
async function detectPRTemplateCheckboxes() {
const labels = new Set();
const prBody = context.payload.pull_request.body || '';
console.log('Checking PR template checkboxes...');
// Check for checked checkboxes in the "Types of changes" section
const checkboxPatterns = [
{ pattern: /- \[x\] Bugfix \(non-breaking change which fixes an issue\)/i, label: 'bugfix' },
{ pattern: /- \[x\] New feature \(non-breaking change which adds functionality\)/i, label: 'new-feature' },
{ pattern: /- \[x\] Breaking change \(fix or feature that would cause existing functionality to not work as expected\)/i, label: 'breaking-change' },
{ pattern: /- \[x\] Code quality improvements to existing code or addition of tests/i, label: 'code-quality' }
];
for (const { pattern, label } of checkboxPatterns) {
if (pattern.test(prBody)) {
console.log(`Found checked checkbox for: ${label}`);
labels.add(label);
}
}
return labels;
}
// Strategy: Requirements detection
async function detectRequirements(allLabels) {
const labels = new Set();
// Check for missing tests
if ((allLabels.has('new-component') || allLabels.has('new-platform') || allLabels.has('new-feature')) && !allLabels.has('has-tests')) {
labels.add('needs-tests');
}
// Check for missing docs
if (allLabels.has('new-component') || allLabels.has('new-platform') || allLabels.has('new-feature')) {
const prBody = context.payload.pull_request.body || '';
const hasDocsLink = DOCS_PR_PATTERNS.some(pattern => pattern.test(prBody));
if (!hasDocsLink) {
labels.add('needs-docs');
}
}
// Check for missing CODEOWNERS
if (allLabels.has('new-component')) {
const codeownersModified = prFiles.some(file =>
file.filename === 'CODEOWNERS' &&
(file.status === 'modified' || file.status === 'added') &&
(file.additions || 0) > 0
);
if (!codeownersModified) {
labels.add('needs-codeowners');
}
}
return labels;
}
// Generate review messages
function generateReviewMessages(finalLabels) {
const messages = [];
const prAuthor = context.payload.pull_request.user.login;
// Too big message
if (finalLabels.includes('too-big')) {
const testAdditions = prFiles
.filter(file => file.filename.startsWith('tests/'))
.reduce((sum, file) => sum + (file.additions || 0), 0);
const testDeletions = prFiles
.filter(file => file.filename.startsWith('tests/'))
.reduce((sum, file) => sum + (file.deletions || 0), 0);
const nonTestChanges = (totalAdditions - testAdditions) - (totalDeletions - testDeletions);
const tooManyLabels = finalLabels.length > MAX_LABELS;
const tooManyChanges = nonTestChanges > TOO_BIG_THRESHOLD;
let message = `${TOO_BIG_MARKER}\n### 📦 Pull Request Size\n\n`;
if (tooManyLabels && tooManyChanges) {
message += `This PR is too large with ${nonTestChanges} line changes (excluding tests) and affects ${finalLabels.length} different components/areas.`;
} else if (tooManyLabels) {
message += `This PR affects ${finalLabels.length} different components/areas.`;
} else {
message += `This PR is too large with ${nonTestChanges} line changes (excluding tests).`;
}
message += ` Please consider breaking it down into smaller, focused PRs to make review easier and reduce the risk of conflicts.\n\n`;
message += `For guidance on breaking down large PRs, see: https://developers.esphome.io/contributing/submitting-your-work/#how-to-approach-large-submissions`;
messages.push(message);
}
// CODEOWNERS message
if (finalLabels.includes('needs-codeowners')) {
const message = `${CODEOWNERS_MARKER}\n### 👥 Code Ownership\n\n` +
`Hey there @${prAuthor},\n` +
`Thanks for submitting this pull request! Can you add yourself as a codeowner for this integration? ` +
`This way we can notify you if a bug report for this integration is reported.\n\n` +
`In \`__init__.py\` of the integration, please add:\n\n` +
`\`\`\`python\nCODEOWNERS = ["@${prAuthor}"]\n\`\`\`\n\n` +
`And run \`script/build_codeowners.py\``;
messages.push(message);
}
return messages;
}
// Handle reviews
async function handleReviews(finalLabels) {
const reviewMessages = generateReviewMessages(finalLabels);
const hasReviewableLabels = finalLabels.some(label =>
['too-big', 'needs-codeowners'].includes(label)
);
const { data: reviews } = await github.rest.pulls.listReviews({
owner,
repo,
pull_number: pr_number
});
const botReviews = reviews.filter(review =>
review.user.type === 'Bot' &&
review.state === 'CHANGES_REQUESTED' &&
review.body && review.body.includes(BOT_COMMENT_MARKER)
);
if (hasReviewableLabels) {
const reviewBody = `${BOT_COMMENT_MARKER}\n\n${reviewMessages.join('\n\n---\n\n')}`;
if (botReviews.length > 0) {
// Update existing review
await github.rest.pulls.updateReview({
owner,
repo,
pull_number: pr_number,
review_id: botReviews[0].id,
body: reviewBody
});
console.log('Updated existing bot review');
} else {
// Create new review
await github.rest.pulls.createReview({
owner,
repo,
pull_number: pr_number,
body: reviewBody,
event: 'REQUEST_CHANGES'
});
console.log('Created new bot review');
}
} else if (botReviews.length > 0) {
// Dismiss existing reviews
for (const review of botReviews) {
try {
await github.rest.pulls.dismissReview({
owner,
repo,
pull_number: pr_number,
review_id: review.id,
message: 'Review dismissed: All requirements have been met'
});
console.log(`Dismissed bot review ${review.id}`);
} catch (error) {
console.log(`Failed to dismiss review ${review.id}:`, error.message);
}
}
}
}
// Main execution
const apiData = await fetchApiData();
const baseRef = context.payload.pull_request.base.ref;
// Early exit for non-dev branches
if (baseRef !== 'dev') {
const branchLabels = await detectMergeBranch();
const finalLabels = Array.from(branchLabels);
console.log('Computed labels (merge branch only):', finalLabels.join(', '));
// Apply labels
if (finalLabels.length > 0) {
await github.rest.issues.addLabels({
owner,
repo,
issue_number: pr_number,
labels: finalLabels
});
}
// Remove old managed labels
const labelsToRemove = managedLabels.filter(label => !finalLabels.includes(label));
for (const label of labelsToRemove) {
try {
await github.rest.issues.removeLabel({
owner,
repo,
issue_number: pr_number,
name: label
});
} catch (error) {
console.log(`Failed to remove label ${label}:`, error.message);
}
}
return;
}
// Run all strategies
const [
branchLabels,
componentLabels,
newComponentLabels,
newPlatformLabels,
coreLabels,
sizeLabels,
dashboardLabels,
actionsLabels,
codeOwnerLabels,
testLabels,
checkboxLabels
] = await Promise.all([
detectMergeBranch(),
detectComponentPlatforms(apiData),
detectNewComponents(),
detectNewPlatforms(apiData),
detectCoreChanges(),
detectPRSize(),
detectDashboardChanges(),
detectGitHubActionsChanges(),
detectCodeOwner(),
detectTests(),
detectPRTemplateCheckboxes()
]);
// Combine all labels
const allLabels = new Set([
...branchLabels,
...componentLabels,
...newComponentLabels,
...newPlatformLabels,
...coreLabels,
...sizeLabels,
...dashboardLabels,
...actionsLabels,
...codeOwnerLabels,
...testLabels,
...checkboxLabels
]);
// Detect requirements based on all other labels
const requirementLabels = await detectRequirements(allLabels);
for (const label of requirementLabels) {
allLabels.add(label);
}
let finalLabels = Array.from(allLabels);
// For mega-PRs, exclude component labels if there are too many
if (isMegaPR) {
const componentLabels = finalLabels.filter(label => label.startsWith('component: '));
if (componentLabels.length > COMPONENT_LABEL_THRESHOLD) {
finalLabels = finalLabels.filter(label => !label.startsWith('component: '));
console.log(`Mega-PR detected - excluding ${componentLabels.length} component labels (threshold: ${COMPONENT_LABEL_THRESHOLD})`);
}
}
// Handle too many labels (only for non-mega PRs)
const tooManyLabels = finalLabels.length > MAX_LABELS;
if (tooManyLabels && !isMegaPR && !finalLabels.includes('too-big')) {
finalLabels = ['too-big'];
}
console.log('Computed labels:', finalLabels.join(', '));
// Handle reviews
await handleReviews(finalLabels);
// Apply labels
if (finalLabels.length > 0) {
console.log(`Adding labels: ${finalLabels.join(', ')}`);
await github.rest.issues.addLabels({
owner,
repo,
issue_number: pr_number,
labels: finalLabels
});
}
// Remove old managed labels
const labelsToRemove = managedLabels.filter(label => !finalLabels.includes(label));
for (const label of labelsToRemove) {
console.log(`Removing label: ${label}`);
try {
await github.rest.issues.removeLabel({
owner,
repo,
issue_number: pr_number,
name: label
});
} catch (error) {
console.log(`Failed to remove label ${label}:`, error.message);
}
}
+15 -4
View File
@@ -21,9 +21,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python
uses: actions/setup-python@v5.2.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.11"
@@ -47,7 +47,7 @@ jobs:
fi
- if: failure()
name: Review PR
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
await github.rest.pulls.createReview({
@@ -57,9 +57,20 @@ jobs:
event: 'REQUEST_CHANGES',
body: 'You have altered the generated proto files but they do not match what is expected.\nPlease run "script/api_protobuf/api_protobuf.py" and commit the changes.'
})
- if: failure()
name: Show changes
run: git diff
- if: failure()
name: Archive artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: generated-proto-files
path: |
esphome/components/api/api_pb2.*
esphome/components/api/api_pb2_service.*
- if: success()
name: Dismiss review
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
let reviews = await github.rest.pulls.listReviews({
+76
View File
@@ -0,0 +1,76 @@
name: Clang-tidy Hash CI
on:
pull_request:
paths:
- ".clang-tidy"
- "platformio.ini"
- "requirements_dev.txt"
- "sdkconfig.defaults"
- ".clang-tidy.hash"
- "script/clang_tidy_hash.py"
- ".github/workflows/ci-clang-tidy-hash.yml"
permissions:
contents: read
pull-requests: write
jobs:
verify-hash:
name: Verify clang-tidy hash
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.11"
- name: Verify hash
run: |
python script/clang_tidy_hash.py --verify
- if: failure()
name: Show hash details
run: |
python script/clang_tidy_hash.py
echo "## Job Failed" | tee -a $GITHUB_STEP_SUMMARY
echo "You have modified clang-tidy configuration but have not updated the hash." | tee -a $GITHUB_STEP_SUMMARY
echo "Please run 'script/clang_tidy_hash.py --update' and commit the changes." | tee -a $GITHUB_STEP_SUMMARY
- if: failure()
name: Request changes
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
await github.rest.pulls.createReview({
pull_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
event: 'REQUEST_CHANGES',
body: 'You have modified clang-tidy configuration but have not updated the hash.\nPlease run `script/clang_tidy_hash.py --update` and commit the changes.'
})
- if: success()
name: Dismiss review
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
let reviews = await github.rest.pulls.listReviews({
pull_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo
});
for (let review of reviews.data) {
if (review.user.login === 'github-actions[bot]' && review.state === 'CHANGES_REQUESTED') {
await github.rest.pulls.dismissReview({
pull_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
review_id: review.id,
message: 'Clang-tidy hash now matches configuration.'
});
}
}
+11 -10
View File
@@ -33,22 +33,23 @@ concurrency:
jobs:
check-docker:
name: Build docker containers
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
arch: [amd64, armv7, aarch64]
build_type: ["ha-addon", "docker", "lint"]
os: ["ubuntu-24.04", "ubuntu-24.04-arm"]
build_type:
- "ha-addon"
- "docker"
# - "lint"
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python
uses: actions/setup-python@v5.2.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.9"
python-version: "3.11"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.7.1
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.2.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Set TAG
run: |
@@ -58,6 +59,6 @@ jobs:
run: |
docker/build.py \
--tag "${TAG}" \
--arch "${{ matrix.arch }}" \
--arch "${{ matrix.os == 'ubuntu-24.04-arm' && 'aarch64' || 'amd64' }}" \
--build-type "${{ matrix.build_type }}" \
build
+260 -233
View File
@@ -13,14 +13,15 @@ on:
- ".github/workflows/ci.yml"
- "!.yamllint"
- "!.github/dependabot.yml"
- "!docker/**"
merge_group:
permissions:
contents: read
env:
DEFAULT_PYTHON: "3.9"
PYUPGRADE_TARGET: "--py39-plus"
DEFAULT_PYTHON: "3.11"
PYUPGRADE_TARGET: "--py311-plus"
concurrency:
# yamllint disable-line rule:line-length
@@ -30,23 +31,23 @@ concurrency:
jobs:
common:
name: Create common environment
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
outputs:
cache-key: ${{ steps.cache-key.outputs.key }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Generate cache-key
id: cache-key
run: echo key="${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }}" >> $GITHUB_OUTPUT
run: echo key="${{ hashFiles('requirements.txt', 'requirements_test.txt', '.pre-commit-config.yaml') }}" >> $GITHUB_OUTPUT
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.2.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore Python virtual environment
id: cache-venv
uses: actions/cache@v4.1.1
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: venv
# yamllint disable-line rule:line-length
@@ -57,59 +58,19 @@ jobs:
python -m venv venv
. venv/bin/activate
python --version
pip install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt
pip install -r requirements.txt -r requirements_test.txt pre-commit
pip install -e .
black:
name: Check black
runs-on: ubuntu-latest
needs:
- common
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Run black
run: |
. venv/bin/activate
black --verbose esphome tests
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
flake8:
name: Check flake8
runs-on: ubuntu-latest
needs:
- common
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Run flake8
run: |
. venv/bin/activate
flake8 esphome
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
pylint:
name: Check pylint
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
needs:
- common
- determine-jobs
if: needs.determine-jobs.outputs.python-linters == 'true'
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore Python
uses: ./.github/actions/restore-python
with:
@@ -123,35 +84,14 @@ jobs:
run: script/ci-suggest-changes
if: always()
pyupgrade:
name: Check pyupgrade
runs-on: ubuntu-latest
needs:
- common
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Run pyupgrade
run: |
. venv/bin/activate
pyupgrade ${{ env.PYUPGRADE_TARGET }} `find esphome -name "*.py" -type f`
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
ci-custom:
name: Run script/ci-custom
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
needs:
- common
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore Python
uses: ./.github/actions/restore-python
with:
@@ -164,6 +104,8 @@ jobs:
. venv/bin/activate
script/ci-custom.py
script/build_codeowners.py --check
script/build_language_schema.py --check
script/generate-esp32-boards.py --check
pytest:
name: Run pytest
@@ -171,10 +113,9 @@ jobs:
fail-fast: false
matrix:
python-version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
os:
- ubuntu-latest
- macOS-latest
@@ -183,25 +124,22 @@ jobs:
# Minimize CI resource usage
# by only running the Python version
# version used for docker images on Windows and macOS
- python-version: "3.12"
os: windows-latest
- python-version: "3.10"
os: windows-latest
- python-version: "3.9"
- python-version: "3.13"
os: windows-latest
- python-version: "3.12"
os: windows-latest
- python-version: "3.13"
os: macOS-latest
- python-version: "3.10"
os: macOS-latest
- python-version: "3.9"
- python-version: "3.12"
os: macOS-latest
runs-on: ${{ matrix.os }}
needs:
- common
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore Python
id: restore-python
uses: ./.github/actions/restore-python
with:
python-version: ${{ matrix.python-version }}
@@ -211,56 +149,110 @@ jobs:
- name: Run pytest
if: matrix.os == 'windows-latest'
run: |
./venv/Scripts/activate
pytest -vv --cov-report=xml --tb=native tests
. ./venv/Scripts/activate.ps1
pytest -vv --cov-report=xml --tb=native -n auto tests --ignore=tests/integration/
- name: Run pytest
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macOS-latest'
run: |
. venv/bin/activate
pytest -vv --cov-report=xml --tb=native tests
pytest -vv --cov-report=xml --tb=native -n auto tests --ignore=tests/integration/
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Save Python virtual environment cache
if: github.ref == 'refs/heads/dev'
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: venv
key: ${{ runner.os }}-${{ steps.restore-python.outputs.python-version }}-venv-${{ needs.common.outputs.cache-key }}
clang-format:
name: Check clang-format
runs-on: ubuntu-latest
determine-jobs:
name: Determine which jobs to run
runs-on: ubuntu-24.04
needs:
- common
outputs:
integration-tests: ${{ steps.determine.outputs.integration-tests }}
clang-tidy: ${{ steps.determine.outputs.clang-tidy }}
python-linters: ${{ steps.determine.outputs.python-linters }}
changed-components: ${{ steps.determine.outputs.changed-components }}
changed-components-with-tests: ${{ steps.determine.outputs.changed-components-with-tests }}
component-test-count: ${{ steps.determine.outputs.component-test-count }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Fetch enough history to find the merge base
fetch-depth: 2
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Install clang-format
- name: Determine which tests to run
id: determine
env:
GH_TOKEN: ${{ github.token }}
run: |
. venv/bin/activate
pip install clang-format -c requirements_dev.txt
- name: Run clang-format
run: |
. venv/bin/activate
script/clang-format -i
git diff-index --quiet HEAD --
- name: Suggested changes
run: script/ci-suggest-changes
if: always()
output=$(python script/determine-jobs.py)
echo "Test determination output:"
echo "$output" | jq
clang-tidy:
name: ${{ matrix.name }}
# Extract individual fields
echo "integration-tests=$(echo "$output" | jq -r '.integration_tests')" >> $GITHUB_OUTPUT
echo "clang-tidy=$(echo "$output" | jq -r '.clang_tidy')" >> $GITHUB_OUTPUT
echo "python-linters=$(echo "$output" | jq -r '.python_linters')" >> $GITHUB_OUTPUT
echo "changed-components=$(echo "$output" | jq -c '.changed_components')" >> $GITHUB_OUTPUT
echo "changed-components-with-tests=$(echo "$output" | jq -c '.changed_components_with_tests')" >> $GITHUB_OUTPUT
echo "component-test-count=$(echo "$output" | jq -r '.component_test_count')" >> $GITHUB_OUTPUT
integration-tests:
name: Run integration tests
runs-on: ubuntu-latest
needs:
- common
- black
- ci-custom
- clang-format
- flake8
- pylint
- pytest
- pyupgrade
- determine-jobs
if: needs.determine-jobs.outputs.integration-tests == 'true'
steps:
- name: Check out code from GitHub
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python 3.13
id: python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.13"
- name: Restore Python virtual environment
id: cache-venv
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ needs.common.outputs.cache-key }}
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
python --version
pip install -r requirements.txt -r requirements_test.txt
pip install -e .
- name: Register matcher
run: echo "::add-matcher::.github/workflows/matchers/pytest.json"
- name: Run integration tests
run: |
. venv/bin/activate
pytest -vv --no-cov --tb=native -n auto tests/integration/
clang-tidy:
name: ${{ matrix.name }}
runs-on: ubuntu-24.04
needs:
- common
- determine-jobs
if: needs.determine-jobs.outputs.clang-tidy == 'true'
env:
GH_TOKEN: ${{ github.token }}
strategy:
fail-fast: false
max-parallel: 2
@@ -290,10 +282,19 @@ jobs:
name: Run script/clang-tidy for ESP32 IDF
options: --environment esp32-idf-tidy --grep USE_ESP_IDF
pio_cache_key: tidyesp32-idf
- id: clang-tidy
name: Run script/clang-tidy for ZEPHYR
options: --environment nrf52-tidy --grep USE_ZEPHYR --grep USE_NRF52
pio_cache_key: tidy-zephyr
ignore_errors: false
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
# Need history for HEAD~1 to work for checking changed files
fetch-depth: 2
- name: Restore Python
uses: ./.github/actions/restore-python
with:
@@ -302,22 +303,17 @@ jobs:
- name: Cache platformio
if: github.ref == 'refs/heads/dev'
uses: actions/cache@v4.1.1
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/.platformio
key: platformio-${{ matrix.pio_cache_key }}
key: platformio-${{ matrix.pio_cache_key }}-${{ hashFiles('platformio.ini') }}
- name: Cache platformio
if: github.ref != 'refs/heads/dev'
uses: actions/cache/restore@v4.1.1
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/.platformio
key: platformio-${{ matrix.pio_cache_key }}
- name: Install clang-tidy
run: |
sudo apt-get update
sudo apt-get install clang-tidy-14
key: platformio-${{ matrix.pio_cache_key }}-${{ hashFiles('platformio.ini') }}
- name: Register problem matchers
run: |
@@ -331,173 +327,204 @@ jobs:
mkdir -p .temp
pio run --list-targets -e esp32-idf-tidy
- name: Check if full clang-tidy scan needed
id: check_full_scan
run: |
. venv/bin/activate
if python script/clang_tidy_hash.py --check; then
echo "full_scan=true" >> $GITHUB_OUTPUT
echo "reason=hash_changed" >> $GITHUB_OUTPUT
else
echo "full_scan=false" >> $GITHUB_OUTPUT
echo "reason=normal" >> $GITHUB_OUTPUT
fi
- name: Run clang-tidy
run: |
. venv/bin/activate
script/clang-tidy --all-headers --fix ${{ matrix.options }}
if [ "${{ steps.check_full_scan.outputs.full_scan }}" = "true" ]; then
echo "Running FULL clang-tidy scan (hash changed)"
script/clang-tidy --all-headers --fix ${{ matrix.options }} ${{ matrix.ignore_errors && '|| true' || '' }}
else
echo "Running clang-tidy on changed files only"
script/clang-tidy --all-headers --fix --changed ${{ matrix.options }} ${{ matrix.ignore_errors && '|| true' || '' }}
fi
env:
# Also cache libdeps, store them in a ~/.platformio subfolder
PLATFORMIO_LIBDEPS_DIR: ~/.platformio/libdeps
- name: Suggested changes
run: script/ci-suggest-changes
run: script/ci-suggest-changes ${{ matrix.ignore_errors && '|| true' || '' }}
# yamllint disable-line rule:line-length
if: always()
list-components:
runs-on: ubuntu-latest
needs:
- common
if: github.event_name == 'pull_request'
outputs:
components: ${{ steps.list-components.outputs.components }}
count: ${{ steps.list-components.outputs.count }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
with:
# Fetch enough history so `git merge-base refs/remotes/origin/dev HEAD` works.
fetch-depth: 500
- name: Get target branch
id: target-branch
run: |
echo "branch=${{ github.event.pull_request.base.ref }}" >> $GITHUB_OUTPUT
- name: Fetch ${{ steps.target-branch.outputs.branch }} branch
run: |
git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +refs/heads/${{ steps.target-branch.outputs.branch }}:refs/remotes/origin/${{ steps.target-branch.outputs.branch }}
git merge-base refs/remotes/origin/${{ steps.target-branch.outputs.branch }} HEAD
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Find changed components
id: list-components
run: |
. venv/bin/activate
components=$(script/list-components.py --changed --branch ${{ steps.target-branch.outputs.branch }})
output_components=$(echo "$components" | jq -R -s -c 'split("\n")[:-1] | map(select(length > 0))')
count=$(echo "$output_components" | jq length)
echo "components=$output_components" >> $GITHUB_OUTPUT
echo "count=$count" >> $GITHUB_OUTPUT
echo "$count Components:"
echo "$output_components" | jq
test-build-components:
name: Component test ${{ matrix.file }}
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
needs:
- common
- list-components
if: github.event_name == 'pull_request' && fromJSON(needs.list-components.outputs.count) > 0 && fromJSON(needs.list-components.outputs.count) < 100
- determine-jobs
if: github.event_name == 'pull_request' && fromJSON(needs.determine-jobs.outputs.component-test-count) > 0 && fromJSON(needs.determine-jobs.outputs.component-test-count) < 100
strategy:
fail-fast: false
max-parallel: 2
matrix:
file: ${{ fromJson(needs.list-components.outputs.components) }}
file: ${{ fromJson(needs.determine-jobs.outputs.changed-components-with-tests) }}
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install libsdl2-dev
- name: Cache apt packages
uses: awalsh128/cache-apt-pkgs-action@acb598e5ddbc6f68a970c5da0688d2f3a9f04d05 # v1.5.3
with:
packages: libsdl2-dev
version: 1.0
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: test_build_components -e config -c ${{ matrix.file }}
- name: Validate config for ${{ matrix.file }}
run: |
. venv/bin/activate
./script/test_build_components -e config -c ${{ matrix.file }}
- name: test_build_components -e compile -c ${{ matrix.file }}
python3 script/test_build_components.py -e config -c ${{ matrix.file }}
- name: Compile config for ${{ matrix.file }}
run: |
. venv/bin/activate
./script/test_build_components -e compile -c ${{ matrix.file }}
python3 script/test_build_components.py -e compile -c ${{ matrix.file }}
test-build-components-splitter:
name: Split components for testing into 20 groups maximum
runs-on: ubuntu-latest
name: Split components for intelligent grouping (40 weighted per batch)
runs-on: ubuntu-24.04
needs:
- common
- list-components
if: github.event_name == 'pull_request' && fromJSON(needs.list-components.outputs.count) >= 100
- determine-jobs
if: github.event_name == 'pull_request' && fromJSON(needs.determine-jobs.outputs.component-test-count) >= 100
outputs:
matrix: ${{ steps.split.outputs.components }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
- name: Split components into 20 groups
id: split
run: |
components=$(echo '${{ needs.list-components.outputs.components }}' | jq -c '.[]' | shuf | jq -s -c '[_nwise(20) | join(" ")]')
echo "components=$components" >> $GITHUB_OUTPUT
test-build-components-split:
name: Test split components
runs-on: ubuntu-latest
needs:
- common
- list-components
- test-build-components-splitter
if: github.event_name == 'pull_request' && fromJSON(needs.list-components.outputs.count) >= 100
strategy:
fail-fast: false
max-parallel: 4
matrix:
components: ${{ fromJson(needs.test-build-components-splitter.outputs.matrix) }}
steps:
- name: List components
run: echo ${{ matrix.components }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install libsdl2-dev
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Validate config
- name: Split components intelligently based on bus configurations
id: split
run: |
. venv/bin/activate
for component in ${{ matrix.components }}; do
./script/test_build_components -e config -c $component
done
- name: Compile config
run: |
. venv/bin/activate
mkdir build_cache
export PLATFORMIO_BUILD_CACHE_DIR=$PWD/build_cache
for component in ${{ matrix.components }}; do
./script/test_build_components -e compile -c $component
done
ci-status:
name: CI Status
# Use intelligent splitter that groups components with same bus configs
components='${{ needs.determine-jobs.outputs.changed-components-with-tests }}'
echo "Splitting components intelligently..."
output=$(python3 script/split_components_for_ci.py --components "$components" --batch-size 40 --output github)
echo "$output" >> $GITHUB_OUTPUT
test-build-components-split:
name: Test components batch (${{ matrix.components }})
runs-on: ubuntu-24.04
needs:
- common
- determine-jobs
- test-build-components-splitter
if: github.event_name == 'pull_request' && fromJSON(needs.determine-jobs.outputs.component-test-count) >= 100
strategy:
fail-fast: false
max-parallel: ${{ (github.base_ref == 'beta' || github.base_ref == 'release') && 8 || 4 }}
matrix:
components: ${{ fromJson(needs.test-build-components-splitter.outputs.matrix) }}
steps:
- name: Show disk space
run: |
echo "Available disk space:"
df -h
- name: List components
run: echo ${{ matrix.components }}
- name: Cache apt packages
uses: awalsh128/cache-apt-pkgs-action@acb598e5ddbc6f68a970c5da0688d2f3a9f04d05 # v1.5.3
with:
packages: libsdl2-dev
version: 1.0
- name: Check out code from GitHub
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- name: Validate and compile components with intelligent grouping
run: |
. venv/bin/activate
# Use /mnt for build files (70GB available vs ~29GB on /)
# Bind mount PlatformIO directory to /mnt (tools, packages, build cache all go there)
sudo mkdir -p /mnt/platformio
sudo chown $USER:$USER /mnt/platformio
mkdir -p ~/.platformio
sudo mount --bind /mnt/platformio ~/.platformio
# Bind mount test build directory to /mnt
sudo mkdir -p /mnt/test_build_components_build
sudo chown $USER:$USER /mnt/test_build_components_build
mkdir -p tests/test_build_components/build
sudo mount --bind /mnt/test_build_components_build tests/test_build_components/build
# Convert space-separated components to comma-separated for Python script
components_csv=$(echo "${{ matrix.components }}" | tr ' ' ',')
echo "Testing components: $components_csv"
echo ""
# Run config validation with grouping
python3 script/test_build_components.py -e config -c "$components_csv" -f
echo ""
echo "Config validation passed! Starting compilation..."
echo ""
# Run compilation with grouping
python3 script/test_build_components.py -e compile -c "$components_csv" -f
pre-commit-ci-lite:
name: pre-commit.ci lite
runs-on: ubuntu-latest
needs:
- common
- black
if: github.event_name == 'pull_request' && github.base_ref != 'beta' && github.base_ref != 'release'
steps:
- name: Check out code from GitHub
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore Python
uses: ./.github/actions/restore-python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
cache-key: ${{ needs.common.outputs.cache-key }}
- uses: esphome/action@43cd1109c09c544d97196f7730ee5b2e0cc6d81e # v3.0.1 fork with pinned actions/cache
env:
SKIP: pylint,clang-tidy-hash
- uses: pre-commit-ci/lite-action@5d6cc0eb514c891a40562a58a8e71576c5c7fb43 # v1.1.0
if: always()
ci-status:
name: CI Status
runs-on: ubuntu-24.04
needs:
- common
- ci-custom
- clang-format
- flake8
- pylint
- pytest
- pyupgrade
- integration-tests
- clang-tidy
- list-components
- determine-jobs
- test-build-components
- test-build-components-splitter
- test-build-components-split
- pre-commit-ci-lite
if: always()
steps:
- name: Success
@@ -0,0 +1,324 @@
# This workflow automatically requests reviews from codeowners when:
# 1. A PR is opened, reopened, or synchronized (updated)
# 2. A PR is marked as ready for review
#
# It reads the CODEOWNERS file and matches all changed files in the PR against
# the codeowner patterns, then requests reviews from the appropriate owners
# while avoiding duplicate requests for users who have already been requested
# or have already reviewed the PR.
name: Request Codeowner Reviews
on:
# Needs to be pull_request_target to get write permissions
pull_request_target:
types: [opened, reopened, synchronize, ready_for_review]
permissions:
pull-requests: write
contents: read
jobs:
request-codeowner-reviews:
name: Run
if: ${{ !github.event.pull_request.draft }}
runs-on: ubuntu-latest
steps:
- name: Request reviews from component codeowners
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const owner = context.repo.owner;
const repo = context.repo.repo;
const pr_number = context.payload.pull_request.number;
console.log(`Processing PR #${pr_number} for codeowner review requests`);
// Hidden marker to identify bot comments from this workflow
const BOT_COMMENT_MARKER = '<!-- codeowner-review-request-bot -->';
try {
// Get the list of changed files in this PR
const { data: files } = await github.rest.pulls.listFiles({
owner,
repo,
pull_number: pr_number
});
const changedFiles = files.map(file => file.filename);
console.log(`Found ${changedFiles.length} changed files`);
if (changedFiles.length === 0) {
console.log('No changed files found, skipping codeowner review requests');
return;
}
// Fetch CODEOWNERS file from root
const { data: codeownersFile } = await github.rest.repos.getContent({
owner,
repo,
path: 'CODEOWNERS',
ref: context.payload.pull_request.base.sha
});
const codeownersContent = Buffer.from(codeownersFile.content, 'base64').toString('utf8');
// Parse CODEOWNERS file to extract all patterns and their owners
const codeownersLines = codeownersContent.split('\n')
.map(line => line.trim())
.filter(line => line && !line.startsWith('#'));
const codeownersPatterns = [];
// Convert CODEOWNERS pattern to regex (robust glob handling)
function globToRegex(pattern) {
// Escape regex special characters except for glob wildcards
let regexStr = pattern
.replace(/([.+^=!:${}()|[\]\\])/g, '\\$1') // escape regex chars
.replace(/\*\*/g, '.*') // globstar
.replace(/\*/g, '[^/]*') // single star
.replace(/\?/g, '.'); // question mark
return new RegExp('^' + regexStr + '$');
}
// Helper function to create comment body
function createCommentBody(reviewersList, teamsList, matchedFileCount, isSuccessful = true) {
const reviewerMentions = reviewersList.map(r => `@${r}`);
const teamMentions = teamsList.map(t => `@${owner}/${t}`);
const allMentions = [...reviewerMentions, ...teamMentions].join(', ');
if (isSuccessful) {
return `${BOT_COMMENT_MARKER}\n👋 Hi there! I've automatically requested reviews from codeowners based on the files changed in this PR.\n\n${allMentions} - You've been requested to review this PR as codeowner(s) of ${matchedFileCount} file(s) that were modified. Thanks for your time! 🙏`;
} else {
return `${BOT_COMMENT_MARKER}\n👋 Hi there! This PR modifies ${matchedFileCount} file(s) with codeowners.\n\n${allMentions} - As codeowner(s) of the affected files, your review would be appreciated! 🙏\n\n_Note: Automatic review request may have failed, but you're still welcome to review._`;
}
}
for (const line of codeownersLines) {
const parts = line.split(/\s+/);
if (parts.length < 2) continue;
const pattern = parts[0];
const owners = parts.slice(1);
// Use robust glob-to-regex conversion
const regex = globToRegex(pattern);
codeownersPatterns.push({ pattern, regex, owners });
}
console.log(`Parsed ${codeownersPatterns.length} codeowner patterns`);
// Match changed files against CODEOWNERS patterns
const matchedOwners = new Set();
const matchedTeams = new Set();
const fileMatches = new Map(); // Track which files matched which patterns
for (const file of changedFiles) {
for (const { pattern, regex, owners } of codeownersPatterns) {
if (regex.test(file)) {
console.log(`File '${file}' matches pattern '${pattern}' with owners: ${owners.join(', ')}`);
if (!fileMatches.has(file)) {
fileMatches.set(file, []);
}
fileMatches.get(file).push({ pattern, owners });
// Add owners to the appropriate set (remove @ prefix)
for (const owner of owners) {
const cleanOwner = owner.startsWith('@') ? owner.slice(1) : owner;
if (cleanOwner.includes('/')) {
// Team mention (org/team-name)
const teamName = cleanOwner.split('/')[1];
matchedTeams.add(teamName);
} else {
// Individual user
matchedOwners.add(cleanOwner);
}
}
}
}
}
if (matchedOwners.size === 0 && matchedTeams.size === 0) {
console.log('No codeowners found for any changed files');
return;
}
// Remove the PR author from reviewers
const prAuthor = context.payload.pull_request.user.login;
matchedOwners.delete(prAuthor);
// Get current reviewers to avoid duplicate requests (but still mention them)
const { data: prData } = await github.rest.pulls.get({
owner,
repo,
pull_number: pr_number
});
const currentReviewers = new Set();
const currentTeams = new Set();
if (prData.requested_reviewers) {
prData.requested_reviewers.forEach(reviewer => {
currentReviewers.add(reviewer.login);
});
}
if (prData.requested_teams) {
prData.requested_teams.forEach(team => {
currentTeams.add(team.slug);
});
}
// Check for completed reviews to avoid re-requesting users who have already reviewed
const { data: reviews } = await github.rest.pulls.listReviews({
owner,
repo,
pull_number: pr_number
});
const reviewedUsers = new Set();
reviews.forEach(review => {
reviewedUsers.add(review.user.login);
});
// Check for previous comments from this workflow to avoid duplicate pings
const comments = await github.paginate(
github.rest.issues.listComments,
{
owner,
repo,
issue_number: pr_number
}
);
const previouslyPingedUsers = new Set();
const previouslyPingedTeams = new Set();
// Look for comments from github-actions bot that contain our bot marker
const workflowComments = comments.filter(comment =>
comment.user.type === 'Bot' &&
comment.body.includes(BOT_COMMENT_MARKER)
);
// Extract previously mentioned users and teams from workflow comments
for (const comment of workflowComments) {
// Match @username patterns (not team mentions)
const userMentions = comment.body.match(/@([a-zA-Z0-9_.-]+)(?![/])/g) || [];
userMentions.forEach(mention => {
const username = mention.slice(1); // remove @
previouslyPingedUsers.add(username);
});
// Match @org/team patterns
const teamMentions = comment.body.match(/@[a-zA-Z0-9_.-]+\/([a-zA-Z0-9_.-]+)/g) || [];
teamMentions.forEach(mention => {
const teamName = mention.split('/')[1];
previouslyPingedTeams.add(teamName);
});
}
console.log(`Found ${previouslyPingedUsers.size} previously pinged users and ${previouslyPingedTeams.size} previously pinged teams`);
// Remove users who have already been pinged in previous workflow comments
previouslyPingedUsers.forEach(user => {
matchedOwners.delete(user);
});
previouslyPingedTeams.forEach(team => {
matchedTeams.delete(team);
});
// Remove only users who have already submitted reviews (not just requested reviewers)
reviewedUsers.forEach(reviewer => {
matchedOwners.delete(reviewer);
});
// For teams, we'll still remove already requested teams to avoid API errors
currentTeams.forEach(team => {
matchedTeams.delete(team);
});
const reviewersList = Array.from(matchedOwners);
const teamsList = Array.from(matchedTeams);
if (reviewersList.length === 0 && teamsList.length === 0) {
console.log('No eligible reviewers found (all may already be requested, reviewed, or previously pinged)');
return;
}
const totalReviewers = reviewersList.length + teamsList.length;
console.log(`Requesting reviews from ${reviewersList.length} users and ${teamsList.length} teams for ${fileMatches.size} matched files`);
// Request reviews
try {
const requestParams = {
owner,
repo,
pull_number: pr_number
};
// Filter out users who are already requested reviewers for the API call
const newReviewers = reviewersList.filter(reviewer => !currentReviewers.has(reviewer));
const newTeams = teamsList.filter(team => !currentTeams.has(team));
if (newReviewers.length > 0) {
requestParams.reviewers = newReviewers;
}
if (newTeams.length > 0) {
requestParams.team_reviewers = newTeams;
}
// Only make the API call if there are new reviewers to request
if (newReviewers.length > 0 || newTeams.length > 0) {
await github.rest.pulls.requestReviewers(requestParams);
console.log(`Successfully requested reviews from ${newReviewers.length} new users and ${newTeams.length} new teams`);
} else {
console.log('All codeowners are already requested reviewers or have reviewed');
}
// Only add a comment if there are new codeowners to mention (not previously pinged)
if (reviewersList.length > 0 || teamsList.length > 0) {
const commentBody = createCommentBody(reviewersList, teamsList, fileMatches.size, true);
await github.rest.issues.createComment({
owner,
repo,
issue_number: pr_number,
body: commentBody
});
console.log(`Added comment mentioning ${reviewersList.length} users and ${teamsList.length} teams`);
} else {
console.log('No new codeowners to mention in comment (all previously pinged)');
}
} catch (error) {
if (error.status === 422) {
console.log('Some reviewers may already be requested or unavailable:', error.message);
// Only try to add a comment if there are new codeowners to mention
if (reviewersList.length > 0 || teamsList.length > 0) {
const commentBody = createCommentBody(reviewersList, teamsList, fileMatches.size, false);
try {
await github.rest.issues.createComment({
owner,
repo,
issue_number: pr_number,
body: commentBody
});
console.log(`Added fallback comment mentioning ${reviewersList.length} users and ${teamsList.length} teams`);
} catch (commentError) {
console.log('Failed to add comment:', commentError.message);
}
} else {
console.log('No new codeowners to mention in fallback comment');
}
} else {
throw error;
}
}
} catch (error) {
console.log('Failed to process codeowner review requests:', error.message);
console.error(error);
}
+3 -3
View File
@@ -54,11 +54,11 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
@@ -86,6 +86,6 @@ jobs:
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7
with:
category: "/language:${{matrix.language}}"
@@ -0,0 +1,157 @@
name: Add External Component Comment
on:
pull_request_target:
types: [opened, synchronize]
permissions:
contents: read # Needed to fetch PR details
issues: write # Needed to create and update comments (PR comments are managed via the issues REST API)
pull-requests: write # also needed?
jobs:
external-comment:
name: External component comment
runs-on: ubuntu-latest
steps:
- name: Add external component comment
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
// Generate external component usage instructions
function generateExternalComponentInstructions(prNumber, componentNames, owner, repo) {
let source;
if (owner === 'esphome' && repo === 'esphome')
source = `github://pr#${prNumber}`;
else
source = `github://${owner}/${repo}@pull/${prNumber}/head`;
return `To use the changes from this PR as an external component, add the following to your ESPHome configuration YAML file:
\`\`\`yaml
external_components:
- source: ${source}
components: [${componentNames.join(', ')}]
refresh: 1h
\`\`\``;
}
// Generate repo clone instructions
function generateRepoInstructions(prNumber, owner, repo, branch) {
return `To use the changes in this PR:
\`\`\`bash
# Clone the repository:
git clone https://github.com/${owner}/${repo}
cd ${repo}
# Checkout the PR branch:
git fetch origin pull/${prNumber}/head:${branch}
git checkout ${branch}
# Install the development version:
script/setup
# Activate the development version:
source venv/bin/activate
\`\`\`
Now you can run \`esphome\` as usual to test the changes in this PR.
`;
}
async function createComment(octokit, owner, repo, prNumber, esphomeChanges, componentChanges) {
const commentMarker = "<!-- This comment was generated automatically by the external-component-bot workflow. -->";
const legacyCommentMarker = "<!-- This comment was generated automatically by a GitHub workflow. -->";
let commentBody;
if (esphomeChanges.length === 1) {
commentBody = generateExternalComponentInstructions(prNumber, componentChanges, owner, repo);
} else {
commentBody = generateRepoInstructions(prNumber, owner, repo, context.payload.pull_request.head.ref);
}
commentBody += `\n\n---\n(Added by the PR bot)\n\n${commentMarker}`;
// Check for existing bot comment
const comments = await github.paginate(
github.rest.issues.listComments,
{
owner: owner,
repo: repo,
issue_number: prNumber,
per_page: 100,
}
);
const sorted = comments.sort((a, b) => new Date(b.updated_at) - new Date(a.updated_at));
const botComment = sorted.find(comment =>
(
comment.body.includes(commentMarker) ||
comment.body.includes(legacyCommentMarker)
) && comment.user.type === "Bot"
);
if (botComment && botComment.body === commentBody) {
// No changes in the comment, do nothing
return;
}
if (botComment) {
// Update existing comment
await github.rest.issues.updateComment({
owner: owner,
repo: repo,
comment_id: botComment.id,
body: commentBody,
});
} else {
// Create new comment
await github.rest.issues.createComment({
owner: owner,
repo: repo,
issue_number: prNumber,
body: commentBody,
});
}
}
async function getEsphomeAndComponentChanges(github, owner, repo, prNumber) {
const changedFiles = await github.rest.pulls.listFiles({
owner: owner,
repo: repo,
pull_number: prNumber,
});
const esphomeChanges = changedFiles.data
.filter(file => file.filename !== "esphome/core/defines.h" && file.filename.startsWith('esphome/'))
.map(file => {
const match = file.filename.match(/esphome\/([^/]+)/);
return match ? match[1] : null;
})
.filter(it => it !== null);
if (esphomeChanges.length === 0) {
return {esphomeChanges: [], componentChanges: []};
}
const uniqueEsphomeChanges = [...new Set(esphomeChanges)];
const componentChanges = changedFiles.data
.filter(file => file.filename.startsWith('esphome/components/'))
.map(file => {
const match = file.filename.match(/esphome\/components\/([^/]+)\//);
return match ? match[1] : null;
})
.filter(it => it !== null);
return {esphomeChanges: uniqueEsphomeChanges, componentChanges: [...new Set(componentChanges)]};
}
// Start of main code.
const prNumber = context.payload.pull_request.number;
const {owner, repo} = context.repo;
const {esphomeChanges, componentChanges} = await getEsphomeAndComponentChanges(github, owner, repo, prNumber);
if (componentChanges.length !== 0) {
await createComment(github, owner, repo, prNumber, esphomeChanges, componentChanges);
}
@@ -0,0 +1,163 @@
# This workflow automatically notifies codeowners when an issue is labeled with component labels.
# It reads the CODEOWNERS file to find the maintainers for the labeled components
# and posts a comment mentioning them to ensure they're aware of the issue.
name: Notify Issue Codeowners
on:
issues:
types: [labeled]
permissions:
issues: write
contents: read
jobs:
notify-codeowners:
name: Run
if: ${{ startsWith(github.event.label.name, format('component{0} ', ':')) }}
runs-on: ubuntu-latest
steps:
- name: Notify codeowners for component issues
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const owner = context.repo.owner;
const repo = context.repo.repo;
const issue_number = context.payload.issue.number;
const labelName = context.payload.label.name;
console.log(`Processing issue #${issue_number} with label: ${labelName}`);
// Hidden marker to identify bot comments from this workflow
const BOT_COMMENT_MARKER = '<!-- issue-codeowner-notify-bot -->';
// Extract component name from label
const componentName = labelName.replace('component: ', '');
console.log(`Component: ${componentName}`);
try {
// Fetch CODEOWNERS file from root
const { data: codeownersFile } = await github.rest.repos.getContent({
owner,
repo,
path: 'CODEOWNERS'
});
const codeownersContent = Buffer.from(codeownersFile.content, 'base64').toString('utf8');
// Parse CODEOWNERS file to extract component mappings
const codeownersLines = codeownersContent.split('\n')
.map(line => line.trim())
.filter(line => line && !line.startsWith('#'));
let componentOwners = null;
for (const line of codeownersLines) {
const parts = line.split(/\s+/);
if (parts.length < 2) continue;
const pattern = parts[0];
const owners = parts.slice(1);
// Look for component patterns: esphome/components/{component}/*
const componentMatch = pattern.match(/^esphome\/components\/([^\/]+)\/\*$/);
if (componentMatch && componentMatch[1] === componentName) {
componentOwners = owners;
break;
}
}
if (!componentOwners) {
console.log(`No codeowners found for component: ${componentName}`);
return;
}
console.log(`Found codeowners for '${componentName}': ${componentOwners.join(', ')}`);
// Separate users and teams
const userOwners = [];
const teamOwners = [];
for (const owner of componentOwners) {
const cleanOwner = owner.startsWith('@') ? owner.slice(1) : owner;
if (cleanOwner.includes('/')) {
// Team mention (org/team-name)
teamOwners.push(`@${cleanOwner}`);
} else {
// Individual user
userOwners.push(`@${cleanOwner}`);
}
}
// Remove issue author from mentions to avoid self-notification
const issueAuthor = context.payload.issue.user.login;
const filteredUserOwners = userOwners.filter(mention =>
mention !== `@${issueAuthor}`
);
// Check for previous comments from this workflow to avoid duplicate pings
const comments = await github.paginate(
github.rest.issues.listComments,
{
owner,
repo,
issue_number: issue_number
}
);
const previouslyPingedUsers = new Set();
const previouslyPingedTeams = new Set();
// Look for comments from github-actions bot that contain codeowner pings for this component
const workflowComments = comments.filter(comment =>
comment.user.type === 'Bot' &&
comment.body.includes(BOT_COMMENT_MARKER) &&
comment.body.includes(`component: ${componentName}`)
);
// Extract previously mentioned users and teams from workflow comments
for (const comment of workflowComments) {
// Match @username patterns (not team mentions)
const userMentions = comment.body.match(/@([a-zA-Z0-9_.-]+)(?![/])/g) || [];
userMentions.forEach(mention => {
previouslyPingedUsers.add(mention); // Keep @ prefix for easy comparison
});
// Match @org/team patterns
const teamMentions = comment.body.match(/@[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+/g) || [];
teamMentions.forEach(mention => {
previouslyPingedTeams.add(mention);
});
}
console.log(`Found ${previouslyPingedUsers.size} previously pinged users and ${previouslyPingedTeams.size} previously pinged teams for component ${componentName}`);
// Remove previously pinged users and teams
const newUserOwners = filteredUserOwners.filter(mention => !previouslyPingedUsers.has(mention));
const newTeamOwners = teamOwners.filter(mention => !previouslyPingedTeams.has(mention));
const allMentions = [...newUserOwners, ...newTeamOwners];
if (allMentions.length === 0) {
console.log('No new codeowners to notify (all previously pinged or issue author is the only codeowner)');
return;
}
// Create comment body
const mentionString = allMentions.join(', ');
const commentBody = `${BOT_COMMENT_MARKER}\n👋 Hey ${mentionString}!\n\nThis issue has been labeled with \`component: ${componentName}\` and you've been identified as a codeowner of this component. Please take a look when you have a chance!\n\nThanks for maintaining this component! 🙏`;
// Post comment
await github.rest.issues.createComment({
owner,
repo,
issue_number: issue_number,
body: commentBody
});
console.log(`Successfully notified new codeowners: ${mentionString}`);
} catch (error) {
console.log('Failed to process codeowner notifications:', error.message);
console.error(error);
}
+3 -20
View File
@@ -1,28 +1,11 @@
---
name: Lock
name: Lock closed issues and PRs
on:
schedule:
- cron: "30 0 * * *"
- cron: "30 0 * * *" # Run daily at 00:30 UTC
workflow_dispatch:
permissions:
issues: write
pull-requests: write
concurrency:
group: lock
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5.0.1
with:
pr-inactive-days: "1"
pr-lock-reason: ""
exclude-any-pr-labels: keep-open
issue-inactive-days: "7"
issue-lock-reason: ""
exclude-any-issue-labels: keep-open
uses: esphome/workflows/.github/workflows/lock.yml@main
+2 -2
View File
@@ -1,11 +1,11 @@
{
"problemMatcher": [
{
"owner": "black",
"owner": "ruff",
"severity": "error",
"pattern": [
{
"regexp": "^(.*): (Please format this file with the black formatter)",
"regexp": "^(.*): (Please format this file with the ruff formatter)",
"file": 1,
"message": 2
}
-24
View File
@@ -1,24 +0,0 @@
name: Needs Docs
on:
pull_request:
types: [labeled, unlabeled]
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Check for needs-docs label
uses: actions/github-script@v7.0.1
with:
script: |
const { data: labels } = await github.rest.issues.listLabelsOnIssue({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number
});
const needsDocs = labels.find(label => label.name === 'needs-docs');
if (needsDocs) {
core.setFailed('Pull request needs docs');
}
+75 -60
View File
@@ -18,8 +18,9 @@ jobs:
outputs:
tag: ${{ steps.tag.outputs.tag }}
branch_build: ${{ steps.tag.outputs.branch_build }}
deploy_env: ${{ steps.tag.outputs.deploy_env }}
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Get tag
id: tag
# yamllint disable rule:line-length
@@ -27,6 +28,11 @@ jobs:
if [[ "${{ github.event_name }}" = "release" ]]; then
TAG="${{ github.event.release.tag_name}}"
BRANCH_BUILD="false"
if [[ "${{ github.event.release.prerelease }}" = "true" ]]; then
ENVIRONMENT="beta"
else
ENVIRONMENT="production"
fi
else
TAG=$(cat esphome/const.py | sed -n -E "s/^__version__\s+=\s+\"(.+)\"$/\1/p")
today="$(date --utc '+%Y%m%d')"
@@ -35,12 +41,15 @@ jobs:
if [[ "$BRANCH" != "dev" ]]; then
TAG="${TAG}-${BRANCH}"
BRANCH_BUILD="true"
ENVIRONMENT=""
else
BRANCH_BUILD="false"
ENVIRONMENT="dev"
fi
fi
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "branch_build=${BRANCH_BUILD}" >> $GITHUB_OUTPUT
echo "deploy_env=${ENVIRONMENT}" >> $GITHUB_OUTPUT
# yamllint enable rule:line-length
deploy-pypi:
@@ -51,57 +60,54 @@ jobs:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python
uses: actions/setup-python@v5.2.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.x"
- name: Set up python environment
env:
ESPHOME_NO_VENV: 1
run: script/setup
- name: Build
run: |-
pip3 install build
python3 -m build
- name: Publish
uses: pypa/gh-action-pypi-publish@v1.10.3
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
skip-existing: true
deploy-docker:
name: Build ESPHome ${{ matrix.platform }}
name: Build ESPHome ${{ matrix.platform.arch }}
if: github.repository == 'esphome/esphome'
permissions:
contents: read
packages: write
runs-on: ubuntu-latest
runs-on: ${{ matrix.platform.os }}
needs: [init]
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm/v7
- linux/arm64
- arch: amd64
os: "ubuntu-24.04"
- arch: arm64
os: "ubuntu-24.04-arm"
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python
uses: actions/setup-python@v5.2.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.9"
python-version: "3.11"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.7.1
- name: Set up QEMU
if: matrix.platform != 'linux/amd64'
uses: docker/setup-qemu-action@v3.2.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Log in to docker hub
uses: docker/login-action@v3.3.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the GitHub container registry
uses: docker/login-action@v3.3.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -110,45 +116,36 @@ jobs:
- name: Build docker
uses: ./.github/actions/build-image
with:
platform: ${{ matrix.platform }}
target: docker
baseimg: docker
target: final
build_type: docker
suffix: ""
version: ${{ needs.init.outputs.tag }}
- name: Build ha-addon
uses: ./.github/actions/build-image
with:
platform: ${{ matrix.platform }}
target: hassio
baseimg: hassio
target: final
build_type: ha-addon
suffix: "hassio"
version: ${{ needs.init.outputs.tag }}
- name: Build lint
uses: ./.github/actions/build-image
with:
platform: ${{ matrix.platform }}
target: lint
baseimg: docker
suffix: lint
version: ${{ needs.init.outputs.tag }}
- name: Sanitize platform name
id: sanitize
run: |
echo "${{ matrix.platform }}" | sed 's|/|-|g' > /tmp/platform
echo name=$(cat /tmp/platform) >> $GITHUB_OUTPUT
# - name: Build lint
# uses: ./.github/actions/build-image
# with:
# target: lint
# build_type: lint
# suffix: lint
# version: ${{ needs.init.outputs.tag }}
- name: Upload digests
uses: actions/upload-artifact@v4.4.2
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: digests-${{ steps.sanitize.outputs.name }}
name: digests-${{ matrix.platform.arch }}
path: /tmp/digests
retention-days: 1
deploy-manifest:
name: Publish ESPHome ${{ matrix.image.title }} to ${{ matrix.registry }}
name: Publish ESPHome ${{ matrix.image.build_type }} to ${{ matrix.registry }}
runs-on: ubuntu-latest
needs:
- init
@@ -161,40 +158,37 @@ jobs:
fail-fast: false
matrix:
image:
- title: "ha-addon"
target: "hassio"
suffix: "hassio"
- title: "docker"
target: "docker"
- build_type: "docker"
suffix: ""
- title: "lint"
target: "lint"
suffix: "lint"
- build_type: "ha-addon"
suffix: "hassio"
# - build_type: "lint"
# suffix: "lint"
registry:
- ghcr
- dockerhub
steps:
- uses: actions/checkout@v4.1.7
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Download digests
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
pattern: digests-*
path: /tmp/digests
merge-multiple: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.7.1
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Log in to docker hub
if: matrix.registry == 'dockerhub'
uses: docker/login-action@v3.3.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the GitHub container registry
if: matrix.registry == 'ghcr'
uses: docker/login-action@v3.3.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -213,7 +207,7 @@ jobs:
done
- name: Create manifest list and push
working-directory: /tmp/digests/${{ matrix.image.target }}/${{ matrix.registry }}
working-directory: /tmp/digests/${{ matrix.image.build_type }}/${{ matrix.registry }}
run: |
docker buildx imagetools create $(jq -Rcnr 'inputs | . / "," | map("-t " + .) | join(" ")' <<< "${{ steps.tags.outputs.tags}}") \
$(printf '${{ steps.tags.outputs.image }}@sha256:%s ' *)
@@ -226,7 +220,7 @@ jobs:
- deploy-manifest
steps:
- name: Trigger Workflow
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ secrets.DEPLOY_HA_ADDON_REPO_TOKEN }}
script: |
@@ -244,3 +238,24 @@ jobs:
content: description
}
})
deploy-esphome-schema:
if: github.repository == 'esphome/esphome' && needs.init.outputs.branch_build == 'false'
runs-on: ubuntu-latest
needs: [init]
environment: ${{ needs.init.outputs.deploy_env }}
steps:
- name: Trigger Workflow
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ secrets.DEPLOY_ESPHOME_SCHEMA_REPO_TOKEN }}
script: |
github.rest.actions.createWorkflowDispatch({
owner: "esphome",
repo: "esphome-schema",
workflow_id: "generate-schemas.yml",
ref: "main",
inputs: {
version: "${{ needs.init.outputs.tag }}",
}
})
+34 -18
View File
@@ -15,36 +15,52 @@ concurrency:
jobs:
stale:
if: github.repository_owner == 'esphome'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9.0.0
- name: Stale
uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
debug-only: ${{ github.ref != 'refs/heads/dev' }} # Dry-run when not run on dev branch
remove-stale-when-updated: true
operations-per-run: 150
# The 90 day stale policy for PRs
# - PRs
# - No PRs marked as "not-stale"
# - No Issues (see below)
days-before-pr-stale: 90
days-before-pr-close: 7
days-before-issue-stale: -1
days-before-issue-close: -1
remove-stale-when-updated: true
stale-pr-label: "stale"
exempt-pr-labels: "not-stale"
stale-pr-message: >
There hasn't been any activity on this pull request recently. This
pull request has been automatically marked as stale because of that
and will be closed if no further activity occurs within 7 days.
Thank you for your contributions.
# Use stale to automatically close issues with a
# reference to the issue tracker
close-issues:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9.0.0
with:
days-before-pr-stale: -1
days-before-pr-close: -1
days-before-issue-stale: 1
days-before-issue-close: 1
remove-stale-when-updated: true
If you are the author of this PR, please leave a comment if you want
to keep it open. Also, please rebase your PR onto the latest dev
branch to ensure that it's up to date with the latest changes.
Thank you for your contribution!
# The 90 day stale policy for Issues
# - Issues
# - No Issues marked as "not-stale"
# - No PRs (see above)
days-before-issue-stale: 90
days-before-issue-close: 7
stale-issue-label: "stale"
exempt-issue-labels: "not-stale"
stale-issue-message: >
https://github.com/esphome/esphome/issues/430
There hasn't been any activity on this issue recently. Due to the
high number of incoming GitHub notifications, we have to clean some
of the old issues, as many of them have already been resolved with
the latest updates.
Please make sure to update to the latest ESPHome version and
check if that solves the issue. Let us know if that works for you by
adding a comment 👍
This issue has now been marked as stale and will be closed if no
further activity occurs. Thank you for your contributions.
+30
View File
@@ -0,0 +1,30 @@
name: Status check labels
on:
pull_request:
types: [labeled, unlabeled]
jobs:
check:
name: Check ${{ matrix.label }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
label:
- needs-docs
- merge-after-release
steps:
- name: Check for ${{ matrix.label }} label
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const { data: labels } = await github.rest.issues.listLabelsOnIssue({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number
});
const hasLabel = labels.find(label => label.name === '${{ matrix.label }}');
if (hasLabel) {
core.setFailed('Pull request cannot be merged, it is labeled as ${{ matrix.label }}');
}
+12 -7
View File
@@ -13,34 +13,39 @@ jobs:
if: github.repository == 'esphome/esphome'
steps:
- name: Checkout
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Checkout Home Assistant
uses: actions/checkout@v4.1.7
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
repository: home-assistant/core
path: lib/home-assistant
- name: Setup Python
uses: actions/setup-python@v5.2.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: 3.12
python-version: 3.13
- name: Install Home Assistant
run: |
python -m pip install --upgrade pip
pip install -e lib/home-assistant
pip install -r requirements_test.txt pre-commit
- name: Sync
run: |
python ./script/sync-device_class.py
- name: Run pre-commit hooks
run: |
python script/run-in-env.py pre-commit run --all-files
- name: Commit changes
uses: peter-evans/create-pull-request@v7.0.5
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
commit-message: "Synchronise Device Classes from Home Assistant"
committer: esphomebot <esphome@nabucasa.com>
author: esphomebot <esphome@nabucasa.com>
committer: esphomebot <esphome@openhomefoundation.org>
author: esphomebot <esphome@openhomefoundation.org>
branch: sync/device-classes
delete-branch: true
title: "Synchronise Device Classes from Home Assistant"
-25
View File
@@ -1,25 +0,0 @@
---
name: YAML lint
on:
push:
branches: [dev, beta, release]
paths:
- "**.yaml"
- "**.yml"
pull_request:
paths:
- "**.yaml"
- "**.yml"
jobs:
yamllint:
name: yamllint
runs-on: ubuntu-latest
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.7
- name: Run yamllint
uses: frenck/action-yamllint@v1.5.0
with:
strict: true
+4
View File
@@ -75,6 +75,9 @@ cov.xml
# pyenv
.python-version
# asdf
.tool-versions
# Environments
.env
.venv
@@ -140,3 +143,4 @@ sdkconfig.*
/components
/managed_components
api-docs/
+26 -17
View File
@@ -1,49 +1,51 @@
---
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
ci:
autoupdate_commit_msg: 'pre-commit: autoupdate'
autoupdate_schedule: off # Disabled until ruff versions are synced between deps and pre-commit
# Skip hooks that have issues in pre-commit CI environment
skip: [pylint, clang-tidy-hash]
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.5.4
rev: v0.14.0
hooks:
# Run the linter.
- id: ruff
args: [--fix]
# Run the formatter.
- id: ruff-format
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 24.4.2
hooks:
- id: black
args:
- --safe
- --quiet
files: ^((esphome|script|tests)/.+)?[^/]+\.py$
- repo: https://github.com/PyCQA/flake8
rev: 6.1.0
rev: 7.3.0
hooks:
- id: flake8
additional_dependencies:
- flake8-docstrings==1.5.0
- flake8-docstrings==1.7.0
- pydocstyle==5.1.1
files: ^(esphome|tests)/.+\.py$
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.4.0
rev: v5.0.0
hooks:
- id: no-commit-to-branch
args:
- --branch=dev
- --branch=release
- --branch=beta
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/asottile/pyupgrade
rev: v3.15.2
rev: v3.20.0
hooks:
- id: pyupgrade
args: [--py39-plus]
args: [--py311-plus]
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.35.1
rev: v1.37.1
hooks:
- id: yamllint
exclude: ^(\.clang-format|\.clang-tidy)$
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v13.0.1
hooks:
@@ -53,6 +55,13 @@ repos:
hooks:
- id: pylint
name: pylint
entry: script/run-in-env.sh pylint
language: script
entry: python3 script/run-in-env.py pylint
language: system
types: [python]
- id: clang-tidy-hash
name: Update clang-tidy hash
entry: python script/clang_tidy_hash.py --update-if-changed
language: python
files: ^(\.clang-tidy|platformio\.ini|requirements_dev\.txt)$
pass_filenames: false
additional_dependencies: []
Symlink
+1
View File
@@ -0,0 +1 @@
.ai/instructions.md
+104 -35
View File
@@ -9,6 +9,7 @@
pyproject.toml @esphome/core
esphome/*.py @esphome/core
esphome/core/* @esphome/core
.github/** @esphome/core
# Integrations
esphome/components/a01nyub/* @MrSuicideParrot
@@ -28,7 +29,7 @@ esphome/components/aic3204/* @kbx81
esphome/components/airthings_ble/* @jeromelaban
esphome/components/airthings_wave_base/* @jeromelaban @kpfleming @ncareau
esphome/components/airthings_wave_mini/* @ncareau
esphome/components/airthings_wave_plus/* @jeromelaban
esphome/components/airthings_wave_plus/* @jeromelaban @precurse
esphome/components/alarm_control_panel/* @grahambrown11 @hwstar
esphome/components/alpha3/* @jan-hofmeier
esphome/components/am2315c/* @swoboda1337
@@ -39,16 +40,19 @@ esphome/components/analog_threshold/* @ianchi
esphome/components/animation/* @syndlex
esphome/components/anova/* @buxtronix
esphome/components/apds9306/* @aodrenah
esphome/components/api/* @OttoWinter
esphome/components/api/* @esphome/core
esphome/components/as5600/* @ammmze
esphome/components/as5600/sensor/* @ammmze
esphome/components/as7341/* @mrgnr
esphome/components/async_tcp/* @OttoWinter
esphome/components/async_tcp/* @esphome/core
esphome/components/at581x/* @X-Ryl669
esphome/components/atc_mithermometer/* @ahpohl
esphome/components/atm90e26/* @danieltwagner
esphome/components/atm90e32/* @circuitsetup @descipher
esphome/components/audio/* @kahrendt
esphome/components/audio_adc/* @kbx81
esphome/components/audio_dac/* @kbx81
esphome/components/axs15231/* @clydebarrow
esphome/components/b_parasite/* @rbaron
esphome/components/ballu/* @bazuchan
esphome/components/bang_bang/* @OttoWinter
@@ -62,10 +66,10 @@ esphome/components/binary_sensor/* @esphome/core
esphome/components/bk72xx/* @kuba2k2
esphome/components/bl0906/* @athom-tech @jesserockz @tarontop
esphome/components/bl0939/* @ziceva
esphome/components/bl0940/* @tobias-
esphome/components/bl0940/* @dan-s-github @tobias-
esphome/components/bl0942/* @dbuezas @dwmw2
esphome/components/ble_client/* @buxtronix @clydebarrow
esphome/components/bluetooth_proxy/* @jesserockz
esphome/components/bluetooth_proxy/* @bdraco @jesserockz
esphome/components/bme280_base/* @esphome/core
esphome/components/bme280_spi/* @apbodrov
esphome/components/bme680_bsec/* @trvrnrth
@@ -83,16 +87,22 @@ esphome/components/bmp581/* @kahrendt
esphome/components/bp1658cj/* @Cossid
esphome/components/bp5758d/* @Cossid
esphome/components/button/* @esphome/core
esphome/components/bytebuffer/* @clydebarrow
esphome/components/camera/* @bdraco @DT-art1
esphome/components/camera_encoder/* @DT-art1
esphome/components/canbus/* @danielschramm @mvturnho
esphome/components/cap1188/* @mreditor97
esphome/components/captive_portal/* @OttoWinter
esphome/components/captive_portal/* @esphome/core
esphome/components/ccs811/* @habbie
esphome/components/cd74hc4067/* @asoehlke
esphome/components/ch422g/* @clydebarrow @jesterret
esphome/components/chsc6x/* @kkosik20
esphome/components/climate/* @esphome/core
esphome/components/climate_ir/* @glmnet
esphome/components/cm1106/* @andrewjswan
esphome/components/color_temperature/* @jesserockz
esphome/components/combination/* @Cat-Ion @kahrendt
esphome/components/const/* @esphome/core
esphome/components/coolix/* @glmnet
esphome/components/copy/* @OttoWinter
esphome/components/cover/* @esphome/core
@@ -109,7 +119,7 @@ esphome/components/dallas_temp/* @ssieb
esphome/components/daly_bms/* @s1lvi0
esphome/components/dashboard_import/* @esphome/core
esphome/components/datetime/* @jesserockz @rfdarter
esphome/components/debug/* @OttoWinter
esphome/components/debug/* @esphome/core
esphome/components/delonghi/* @grob6000
esphome/components/dfplayer/* @glmnet
esphome/components/dfrobot_sen0395/* @niklasweber
@@ -117,6 +127,7 @@ esphome/components/dht/* @OttoWinter
esphome/components/display_menu_base/* @numo68
esphome/components/dps310/* @kbx81
esphome/components/ds1307/* @badbadc0ffee
esphome/components/ds2484/* @mrk-its
esphome/components/dsmr/* @glmnet @zuidwijk
esphome/components/duty_time/* @dudanov
esphome/components/ee895/* @Stock-M
@@ -128,16 +139,26 @@ esphome/components/ens160_base/* @latonita @vincentscode
esphome/components/ens160_i2c/* @latonita
esphome/components/ens160_spi/* @latonita
esphome/components/ens210/* @itn3rd77
esphome/components/epaper_spi/* @esphome/core
esphome/components/es7210/* @kahrendt
esphome/components/es7243e/* @kbx81
esphome/components/es8156/* @kbx81
esphome/components/es8311/* @kahrendt @kroimon
esphome/components/es8388/* @P4uLT
esphome/components/esp32/* @esphome/core
esphome/components/esp32_ble/* @Rapsssito @jesserockz
esphome/components/esp32_ble_client/* @jesserockz
esphome/components/esp32_ble_server/* @Rapsssito @clydebarrow @jesserockz
esphome/components/esp32_ble/* @bdraco @jesserockz @Rapsssito
esphome/components/esp32_ble_client/* @bdraco @jesserockz
esphome/components/esp32_ble_server/* @clydebarrow @jesserockz @Rapsssito
esphome/components/esp32_ble_tracker/* @bdraco
esphome/components/esp32_camera_web_server/* @ayufan
esphome/components/esp32_can/* @Sympatron
esphome/components/esp32_hosted/* @swoboda1337
esphome/components/esp32_improv/* @jesserockz
esphome/components/esp32_rmt/* @jesserockz
esphome/components/esp32_rmt_led_strip/* @jesserockz
esphome/components/esp8266/* @esphome/core
esphome/components/esp_ldo/* @clydebarrow
esphome/components/espnow/* @jesserockz
esphome/components/ethernet_info/* @gtjadsonsantos
esphome/components/event/* @nohat
esphome/components/exposure_notifications/* @OttoWinter
@@ -146,19 +167,20 @@ esphome/components/ezo_pmp/* @carlos-sarmiento
esphome/components/factory_reset/* @anatoly-savchenkov
esphome/components/fastled_base/* @OttoWinter
esphome/components/feedback/* @ianchi
esphome/components/fingerprint_grow/* @OnFreund @alexborro @loongyh
esphome/components/fingerprint_grow/* @alexborro @loongyh @OnFreund
esphome/components/font/* @clydebarrow @esphome/core
esphome/components/fs3000/* @kahrendt
esphome/components/ft5x06/* @clydebarrow
esphome/components/ft63x6/* @gpambrozio
esphome/components/gcja5/* @gcormier
esphome/components/gdk101/* @Szewcson
esphome/components/gl_r01_i2c/* @pkejval
esphome/components/globals/* @esphome/core
esphome/components/gp2y1010au0f/* @zry98
esphome/components/gp8403/* @jesserockz
esphome/components/gpio/* @esphome/core
esphome/components/gpio/one_wire/* @ssieb
esphome/components/gps/* @coogle
esphome/components/gps/* @coogle @ximex
esphome/components/graph/* @synco
esphome/components/graphical_display_menu/* @MrMDavidson
esphome/components/gree/* @orestismers
@@ -175,12 +197,13 @@ esphome/components/haier/text_sensor/* @paveldn
esphome/components/havells_solar/* @sourabhjaiswal
esphome/components/hbridge/fan/* @WeekendWarrior
esphome/components/hbridge/light/* @DotNetDann
esphome/components/hbridge/switch/* @dwmw2
esphome/components/he60r/* @clydebarrow
esphome/components/heatpumpir/* @rob-deutsch
esphome/components/hitachi_ac424/* @sourabhjaiswal
esphome/components/hm3301/* @freekode
esphome/components/hmac_md5/* @dwmw2
esphome/components/homeassistant/* @OttoWinter @esphome/core
esphome/components/homeassistant/* @esphome/core @OttoWinter
esphome/components/homeassistant/number/* @landonr
esphome/components/homeassistant/switch/* @Links2004
esphome/components/honeywell_hih_i2c/* @Benichou34
@@ -196,47 +219,58 @@ esphome/components/htu31d/* @betterengineering
esphome/components/hydreon_rgxx/* @functionpointer
esphome/components/hyt271/* @Philippe12
esphome/components/i2c/* @esphome/core
esphome/components/i2c_device/* @gabest11
esphome/components/i2s_audio/* @jesserockz
esphome/components/i2s_audio/media_player/* @jesserockz
esphome/components/i2s_audio/microphone/* @jesserockz
esphome/components/i2s_audio/speaker/* @jesserockz
esphome/components/i2s_audio/speaker/* @jesserockz @kahrendt
esphome/components/iaqcore/* @yozik04
esphome/components/ili9xxx/* @clydebarrow @nielsnl68
esphome/components/improv_base/* @esphome/core
esphome/components/improv_serial/* @esphome/core
esphome/components/ina226/* @Sergio303 @latonita
esphome/components/ina226/* @latonita @Sergio303
esphome/components/ina260/* @mreditor97
esphome/components/ina2xx_base/* @latonita
esphome/components/ina2xx_i2c/* @latonita
esphome/components/ina2xx_spi/* @latonita
esphome/components/inkbird_ibsth1_mini/* @fkirill
esphome/components/inkplate6/* @jesserockz
esphome/components/inkplate/* @jesserockz @JosipKuci
esphome/components/integration/* @OttoWinter
esphome/components/internal_temperature/* @Mat931
esphome/components/interval/* @esphome/core
esphome/components/jsn_sr04t/* @Mafus1
esphome/components/json/* @OttoWinter
esphome/components/json/* @esphome/core
esphome/components/kamstrup_kmp/* @cfeenstra1024
esphome/components/key_collector/* @ssieb
esphome/components/key_provider/* @ssieb
esphome/components/kuntze/* @ssieb
esphome/components/lc709203f/* @ilikecake
esphome/components/lcd_menu/* @numo68
esphome/components/ld2410/* @regevbr @sebcaps
esphome/components/ld2412/* @Rihan9
esphome/components/ld2420/* @descipher
esphome/components/ld2450/* @hareeshmu
esphome/components/ld24xx/* @kbx81
esphome/components/ledc/* @OttoWinter
esphome/components/libretiny/* @kuba2k2
esphome/components/libretiny_pwm/* @kuba2k2
esphome/components/light/* @esphome/core
esphome/components/lightwaverf/* @max246
esphome/components/lilygo_t5_47/touchscreen/* @jesserockz
esphome/components/lm75b/* @beormund
esphome/components/ln882x/* @lamauny
esphome/components/lock/* @esphome/core
esphome/components/logger/* @esphome/core
esphome/components/logger/select/* @clydebarrow
esphome/components/lps22/* @nagisa
esphome/components/ltr390/* @latonita @sjtrny
esphome/components/ltr501/* @latonita
esphome/components/ltr_als_ps/* @latonita
esphome/components/lvgl/* @clydebarrow
esphome/components/m5stack_8angle/* @rnauber
esphome/components/mapping/* @clydebarrow
esphome/components/matrix_keypad/* @ssieb
esphome/components/max17043/* @blacknell
esphome/components/max31865/* @DAVe3283
esphome/components/max44009/* @berfenger
esphome/components/max6956/* @looping40
@@ -244,13 +278,14 @@ esphome/components/max7219digit/* @rspaargaren
esphome/components/max9611/* @mckaymatthew
esphome/components/mcp23008/* @jesserockz
esphome/components/mcp23017/* @jesserockz
esphome/components/mcp23s08/* @SenexCrenshaw @jesserockz
esphome/components/mcp23s17/* @SenexCrenshaw @jesserockz
esphome/components/mcp23s08/* @jesserockz @SenexCrenshaw
esphome/components/mcp23s17/* @jesserockz @SenexCrenshaw
esphome/components/mcp23x08_base/* @jesserockz
esphome/components/mcp23x17_base/* @jesserockz
esphome/components/mcp23xxx_base/* @jesserockz
esphome/components/mcp2515/* @danielschramm @mvturnho
esphome/components/mcp3204/* @rsumner
esphome/components/mcp4461/* @p1ngb4ck
esphome/components/mcp4728/* @berfenger
esphome/components/mcp47a1/* @jesserockz
esphome/components/mcp9600/* @mreditor97
@@ -260,11 +295,15 @@ esphome/components/mdns/* @esphome/core
esphome/components/media_player/* @jesserockz
esphome/components/micro_wake_word/* @jesserockz @kahrendt
esphome/components/micronova/* @jorre05
esphome/components/microphone/* @jesserockz
esphome/components/microphone/* @jesserockz @kahrendt
esphome/components/mics_4514/* @jesserockz
esphome/components/midea/* @dudanov
esphome/components/midea_ir/* @dudanov
esphome/components/mipi_dsi/* @clydebarrow
esphome/components/mipi_rgb/* @clydebarrow
esphome/components/mipi_spi/* @clydebarrow
esphome/components/mitsubishi/* @RubyBailey
esphome/components/mixer/speaker/* @kahrendt
esphome/components/mlx90393/* @functionpointer
esphome/components/mlx90614/* @jesserockz
esphome/components/mmc5603/* @benhoff
@@ -283,6 +322,7 @@ esphome/components/mopeka_std_check/* @Fabian-Schmidt
esphome/components/mpl3115a2/* @kbickar
esphome/components/mpu6886/* @fabaff
esphome/components/ms8607/* @e28eta
esphome/components/msa3xx/* @latonita
esphome/components/nau7802/* @cujomalainey
esphome/components/network/* @esphome/core
esphome/components/nextion/* @edwardtfn @senexcrenshaw
@@ -293,24 +333,31 @@ esphome/components/nextion/text_sensor/* @senexcrenshaw
esphome/components/nfc/* @jesserockz @kbx81
esphome/components/noblex/* @AGalfra
esphome/components/npi19/* @bakerkj
esphome/components/nrf52/* @tomaszduda23
esphome/components/number/* @esphome/core
esphome/components/one_wire/* @ssieb
esphome/components/online_image/* @guillempages
esphome/components/online_image/* @clydebarrow @guillempages
esphome/components/opentherm/* @olegtarasov
esphome/components/openthread/* @mrene
esphome/components/opt3001/* @ccutrer
esphome/components/ota/* @esphome/core
esphome/components/output/* @esphome/core
esphome/components/packet_transport/* @clydebarrow
esphome/components/pca6416a/* @Mat931
esphome/components/pca9554/* @clydebarrow @hwstar
esphome/components/pca9554/* @bdraco @clydebarrow @hwstar
esphome/components/pcf85063/* @brogon
esphome/components/pcf8563/* @KoenBreeman
esphome/components/pi4ioe5v6408/* @jesserockz
esphome/components/pid/* @OttoWinter
esphome/components/pipsolar/* @andreashergert1984
esphome/components/pm1006/* @habbie
esphome/components/pm2005/* @andrewjswan
esphome/components/pmsa003i/* @sjtrny
esphome/components/pmsx003/* @ximex
esphome/components/pmwcs3/* @SeByDocKy
esphome/components/pn532/* @OttoWinter @jesserockz
esphome/components/pn532_i2c/* @OttoWinter @jesserockz
esphome/components/pn532_spi/* @OttoWinter @jesserockz
esphome/components/pn532/* @jesserockz @OttoWinter
esphome/components/pn532_i2c/* @jesserockz @OttoWinter
esphome/components/pn532_spi/* @jesserockz @OttoWinter
esphome/components/pn7150/* @jesserockz @kbx81
esphome/components/pn7150_i2c/* @jesserockz @kbx81
esphome/components/pn7160/* @jesserockz @kbx81
@@ -319,19 +366,19 @@ esphome/components/pn7160_spi/* @jesserockz @kbx81
esphome/components/power_supply/* @esphome/core
esphome/components/preferences/* @esphome/core
esphome/components/psram/* @esphome/core
esphome/components/pulse_meter/* @TrentHouliston @cstaahl @stevebaxter
esphome/components/pulse_meter/* @cstaahl @stevebaxter @TrentHouliston
esphome/components/pvvx_mithermometer/* @pasiz
esphome/components/pylontech/* @functionpointer
esphome/components/qmp6988/* @andrewpc
esphome/components/qr_code/* @wjtje
esphome/components/qspi_amoled/* @clydebarrow
esphome/components/qspi_dbi/* @clydebarrow
esphome/components/qwiic_pir/* @kahrendt
esphome/components/radon_eye_ble/* @jeffeb3
esphome/components/radon_eye_rd200/* @jeffeb3
esphome/components/rc522/* @glmnet
esphome/components/rc522_i2c/* @glmnet
esphome/components/rc522_spi/* @glmnet
esphome/components/resistance_sampler/* @jesserockz
esphome/components/resampler/speaker/* @kahrendt
esphome/components/restart/* @esphome/core
esphome/components/rf_bridge/* @jesserockz
esphome/components/rgbct/* @jesserockz
@@ -341,13 +388,16 @@ esphome/components/rp2040_pwm/* @jesserockz
esphome/components/rpi_dpi_rgb/* @clydebarrow
esphome/components/rtl87xx/* @kuba2k2
esphome/components/rtttl/* @glmnet
esphome/components/runtime_stats/* @bdraco
esphome/components/safe_mode/* @jsuanet @kbx81 @paulmonigatti
esphome/components/scd4x/* @martgras @sjtrny
esphome/components/script/* @esphome/core
esphome/components/sdl/* @clydebarrow
esphome/components/sdl/* @bdm310 @clydebarrow
esphome/components/sdm_meter/* @jesserockz @polyfaces
esphome/components/sdp3x/* @Azimath
esphome/components/seeed_mr24hpc1/* @limengdu
esphome/components/seeed_mr60bha2/* @limengdu
esphome/components/seeed_mr60fda2/* @limengdu
esphome/components/selec_meter/* @sourabhjaiswal
esphome/components/select/* @esphome/core
esphome/components/sen0321/* @notjj
@@ -357,7 +407,8 @@ esphome/components/sensirion_common/* @martgras
esphome/components/sensor/* @esphome/core
esphome/components/sfa30/* @ghsensdev
esphome/components/sgp40/* @SenexCrenshaw
esphome/components/sgp4x/* @SenexCrenshaw @martgras
esphome/components/sgp4x/* @martgras @SenexCrenshaw
esphome/components/sha256/* @esphome/core
esphome/components/shelly_dimmer/* @edge90 @rnauber
esphome/components/sht3xd/* @mrtoy-me
esphome/components/sht4x/* @sjtrny
@@ -373,10 +424,13 @@ esphome/components/smt100/* @piechade
esphome/components/sn74hc165/* @jesserockz
esphome/components/socket/* @esphome/core
esphome/components/sonoff_d1/* @anatoly-savchenkov
esphome/components/speaker/* @jesserockz
esphome/components/sound_level/* @kahrendt
esphome/components/speaker/* @jesserockz @kahrendt
esphome/components/speaker/media_player/* @kahrendt @synesthesiam
esphome/components/spi/* @clydebarrow @esphome/core
esphome/components/spi_device/* @clydebarrow
esphome/components/spi_led_strip/* @clydebarrow
esphome/components/split_buffer/* @jesserockz
esphome/components/sprinkler/* @kbx81
esphome/components/sps30/* @martgras
esphome/components/ssd1322_base/* @kbx81
@@ -402,7 +456,12 @@ esphome/components/substitutions/* @esphome/core
esphome/components/sun/* @OttoWinter
esphome/components/sun_gtil2/* @Mat931
esphome/components/switch/* @esphome/core
esphome/components/switch/binary_sensor/* @ssieb
esphome/components/sx126x/* @swoboda1337
esphome/components/sx127x/* @swoboda1337
esphome/components/syslog/* @clydebarrow
esphome/components/t6615/* @tylermenezes
esphome/components/tc74/* @sethgirvan
esphome/components/tca9548a/* @andreashergert1984
esphome/components/tca9555/* @mobrembski
esphome/components/tcl112/* @glmnet
@@ -415,17 +474,18 @@ esphome/components/template/event/* @nohat
esphome/components/template/fan/* @ssieb
esphome/components/text/* @mauritskorse
esphome/components/thermostat/* @kbx81
esphome/components/time/* @OttoWinter
esphome/components/time/* @esphome/core
esphome/components/tlc5947/* @rnauber
esphome/components/tlc5971/* @IJIJI
esphome/components/tm1621/* @Philippe12
esphome/components/tm1637/* @glmnet
esphome/components/tm1638/* @skykingjwc
esphome/components/tm1651/* @freekode
esphome/components/tm1651/* @mrtoy-me
esphome/components/tmp102/* @timsavage
esphome/components/tmp1075/* @sybrenstuvel
esphome/components/tmp117/* @Azimath
esphome/components/tof10120/* @wstrzalka
esphome/components/tormatic/* @ti-mo
esphome/components/toshiba/* @kbx81
esphome/components/touchscreen/* @jesserockz @nielsnl68
esphome/components/tsl2591/* @wjcarpenter
@@ -439,22 +499,26 @@ esphome/components/tuya/switch/* @jesserockz
esphome/components/tuya/text_sensor/* @dentra
esphome/components/uart/* @esphome/core
esphome/components/uart/button/* @ssieb
esphome/components/uart/packet_transport/* @clydebarrow
esphome/components/udp/* @clydebarrow
esphome/components/ufire_ec/* @pvizeli
esphome/components/ufire_ise/* @pvizeli
esphome/components/ultrasonic/* @OttoWinter
esphome/components/update/* @jesserockz
esphome/components/uponor_smatrix/* @kroimon
esphome/components/usb_host/* @clydebarrow
esphome/components/usb_uart/* @clydebarrow
esphome/components/valve/* @esphome/core
esphome/components/vbus/* @ssieb
esphome/components/veml3235/* @kbx81
esphome/components/veml7700/* @latonita
esphome/components/version/* @esphome/core
esphome/components/voice_assistant/* @jesserockz
esphome/components/voice_assistant/* @jesserockz @kahrendt
esphome/components/wake_on_lan/* @clydebarrow @willwill2will54
esphome/components/watchdog/* @oarcher
esphome/components/waveshare_epaper/* @clydebarrow
esphome/components/web_server_base/* @OttoWinter
esphome/components/web_server/ota/* @esphome/core
esphome/components/web_server_base/* @esphome/core
esphome/components/web_server_idf/* @dentra
esphome/components/weikai/* @DrCoolZic
esphome/components/weikai_i2c/* @DrCoolZic
@@ -472,6 +536,7 @@ esphome/components/wk2204_spi/* @DrCoolZic
esphome/components/wk2212_i2c/* @DrCoolZic
esphome/components/wk2212_spi/* @DrCoolZic
esphome/components/wl_134/* @hobbypunk90
esphome/components/wts01/* @alepee
esphome/components/x9c/* @EtienneMD
esphome/components/xgzp68xx/* @gcormier
esphome/components/xiaomi_hhccjcy10/* @fariouche
@@ -480,7 +545,11 @@ esphome/components/xiaomi_lywsd03mmc/* @ahpohl
esphome/components/xiaomi_mhoc303/* @drug123
esphome/components/xiaomi_mhoc401/* @vevsvevs
esphome/components/xiaomi_rtcgq02lm/* @jesserockz
esphome/components/xiaomi_xmwsdj04mmc/* @medusalix
esphome/components/xl9535/* @mreditor97
esphome/components/xpt2046/touchscreen/* @nielsnl68 @numo68
esphome/components/xxtea/* @clydebarrow
esphome/components/zephyr/* @tomaszduda23
esphome/components/zhlt01/* @cfeenstra1024
esphome/components/zio_ultrasonic/* @kahrendt
esphome/components/zwave_proxy/* @kbx81
+1 -1
View File
@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at esphome@nabucasa.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at esphome@openhomefoundation.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+11 -9
View File
@@ -1,12 +1,14 @@
# Contributing to ESPHome
# Contributing to ESPHome [![Discord Chat](https://img.shields.io/discord/429907082951524364.svg)](https://discord.gg/KhAMKrd) [![GitHub release](https://img.shields.io/github/release/esphome/esphome.svg)](https://GitHub.com/esphome/esphome/releases/)
For a detailed guide, please see https://esphome.io/guides/contributing.html#contributing-to-esphome
We welcome contributions to the ESPHome suite of code and documentation!
Things to note when contributing:
Please read our [contributing guide](https://esphome.io/guides/contributing.html) if you wish to contribute to the
project and be sure to join us on [Discord](https://discord.gg/KhAMKrd).
- Please test your changes :)
- If a new feature is added or an existing user-facing feature is changed, you should also
update the [docs](https://github.com/esphome/esphome-docs). See [contributing to esphome-docs](https://esphome.io/guides/contributing.html#contributing-to-esphomedocs)
for more information.
- Please also update the tests in the `tests/` folder. You can do so by just adding a line in one of the YAML files
which checks if your new feature compiles correctly.
**See also:**
[Documentation](https://esphome.io) -- [Issues](https://github.com/esphome/esphome/issues) -- [Feature requests](https://github.com/orgs/esphome/discussions)
---
[![ESPHome - A project from the Open Home Foundation](https://www.openhomefoundation.org/badges/esphome.png)](https://www.openhomefoundation.org/)
+2877
View File
File diff suppressed because it is too large Load Diff
Symlink
+1
View File
@@ -0,0 +1 @@
.ai/instructions.md
+9 -4
View File
@@ -1,11 +1,16 @@
# ESPHome [![Discord Chat](https://img.shields.io/discord/429907082951524364.svg)](https://discord.gg/KhAMKrd) [![GitHub release](https://img.shields.io/github/release/esphome/esphome.svg)](https://GitHub.com/esphome/esphome/releases/)
[![ESPHome Logo](https://esphome.io/_images/logo-text.png)](https://esphome.io/)
<a href="https://esphome.io/">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://esphome.io/_static/logo-text-on-dark.svg", alt="ESPHome Logo">
<img src="https://esphome.io/_static/logo-text-on-light.svg" alt="ESPHome Logo">
</picture>
</a>
**Documentation:** https://esphome.io/
---
For issues, please go to [the issue tracker](https://github.com/esphome/issues/issues).
[Documentation](https://esphome.io) -- [Issues](https://github.com/esphome/esphome/issues) -- [Feature requests](https://github.com/orgs/esphome/discussions)
For feature requests, please see [feature requests](https://github.com/esphome/feature-requests/issues).
---
[![ESPHome - A project from the Open Home Foundation](https://www.openhomefoundation.org/badges/esphome.png)](https://www.openhomefoundation.org/)
+37 -170
View File
@@ -1,139 +1,56 @@
# Build these with the build.py script
# Example:
# python3 docker/build.py --tag dev --arch amd64 --build-type docker build
ARG BUILD_VERSION=dev
ARG BUILD_OS=alpine
ARG BUILD_BASE_VERSION=2025.04.0
ARG BUILD_TYPE=docker
# One of "docker", "hassio"
ARG BASEIMGTYPE=docker
FROM ghcr.io/esphome/docker-base:${BUILD_OS}-${BUILD_BASE_VERSION} AS base-source-docker
FROM ghcr.io/esphome/docker-base:${BUILD_OS}-ha-addon-${BUILD_BASE_VERSION} AS base-source-ha-addon
ARG BUILD_TYPE
FROM base-source-${BUILD_TYPE} AS base
# https://github.com/hassio-addons/addon-debian-base/releases
FROM ghcr.io/hassio-addons/debian-base:7.2.0 AS base-hassio
# https://hub.docker.com/_/debian?tab=tags&page=1&name=bookworm
FROM debian:12.2-slim AS base-docker
RUN git config --system --add safe.directory "*"
FROM base-${BASEIMGTYPE} AS base
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
RUN pip install --no-cache-dir -U pip uv==0.6.14
ARG TARGETARCH
ARG TARGETVARIANT
# Note that --break-system-packages is used below because
# https://peps.python.org/pep-0668/ added a safety check that prevents
# installing packages with the same name as a system package. This is
# not a problem for us because we are not concerned about overwriting
# system packages because we are running in an isolated container.
COPY requirements.txt /
RUN \
apt-get update \
# Use pinned versions so that we get updates with build caching
&& apt-get install -y --no-install-recommends \
python3-pip=23.0.1+dfsg-1 \
python3-setuptools=66.1.1-1 \
python3-venv=3.11.2-1+b1 \
python3-wheel=0.38.4-2 \
iputils-ping=3:20221126-1 \
git=1:2.39.5-0+deb12u1 \
curl=7.88.1-10+deb12u7 \
openssh-client=1:9.2p1-2+deb12u3 \
python3-cffi=1.15.1-5 \
libcairo2=1.16.0-7 \
libmagic1=1:5.44-3 \
patch=2.7.6-7 \
&& ( \
( \
[ "$TARGETARCH$TARGETVARIANT" = "armv7" ] && \
apt-get install -y --no-install-recommends \
build-essential=12.9 \
python3-dev=3.11.2-1+b1 \
zlib1g-dev=1:1.2.13.dfsg-1 \
libjpeg-dev=1:2.1.5-2 \
libfreetype-dev=2.12.1+dfsg-5+deb12u3 \
libssl-dev=3.0.14-1~deb12u2 \
libffi-dev=3.4.4-1 \
libopenjp2-7=2.5.0-2 \
libtiff6=4.5.0-6+deb12u1 \
cargo=0.66.0+ds1-1 \
pkg-config=1.8.1-1 \
gcc-arm-linux-gnueabihf=4:12.2.0-3 \
) \
|| [ "$TARGETARCH$TARGETVARIANT" != "armv7" ] \
) \
&& rm -rf \
/tmp/* \
/var/{cache,log}/* \
/var/lib/apt/lists/*
ENV \
# Fix click python3 lang warning https://click.palletsprojects.com/en/7.x/python3/
LANG=C.UTF-8 LC_ALL=C.UTF-8 \
# Store globally installed pio libs in /piolibs
PLATFORMIO_GLOBALLIB_DIR=/piolibs
# Support legacy binaries on Debian multiarch system. There is no "correct" way
# to do this, other than using properly built toolchains...
# See: https://unix.stackexchange.com/questions/553743/correct-way-to-add-lib-ld-linux-so-3-in-debian
RUN \
if [ "$TARGETARCH$TARGETVARIANT" = "armv7" ]; then \
ln -s /lib/arm-linux-gnueabihf/ld-linux-armhf.so.3 /lib/ld-linux.so.3; \
fi
uv pip install --no-cache-dir \
-r /requirements.txt
RUN \
# Ubuntu python3-pip is missing wheel
if [ "$TARGETARCH$TARGETVARIANT" = "armv7" ]; then \
export PIP_EXTRA_INDEX_URL="https://www.piwheels.org/simple"; \
fi; \
pip3 install \
--break-system-packages --no-cache-dir \
# Keep platformio version in sync with requirements.txt
platformio==6.1.15 \
# Change some platformio settings
&& platformio settings set enable_telemetry No \
platformio settings set enable_telemetry No \
&& platformio settings set check_platformio_interval 1000000 \
&& mkdir -p /piolibs
# First install requirements to leverage caching when requirements don't change
# tmpfs is for https://github.com/rust-lang/cargo/issues/8719
COPY requirements.txt requirements_optional.txt /
RUN --mount=type=tmpfs,target=/root/.cargo if [ "$TARGETARCH$TARGETVARIANT" = "armv7" ]; then \
curl -L https://www.piwheels.org/cp311/cryptography-43.0.0-cp37-abi3-linux_armv7l.whl -o /tmp/cryptography-43.0.0-cp37-abi3-linux_armv7l.whl \
&& pip3 install --break-system-packages --no-cache-dir /tmp/cryptography-43.0.0-cp37-abi3-linux_armv7l.whl \
&& rm /tmp/cryptography-43.0.0-cp37-abi3-linux_armv7l.whl \
&& export PIP_EXTRA_INDEX_URL="https://www.piwheels.org/simple"; \
fi; \
CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse CARGO_HOME=/root/.cargo \
pip3 install \
--break-system-packages --no-cache-dir -r /requirements.txt -r /requirements_optional.txt
COPY script/platformio_install_deps.py platformio.ini /
RUN /platformio_install_deps.py /platformio.ini --libraries
# Avoid unsafe git error when container user and file config volume permissions don't match
RUN git config --system --add safe.directory '*'
ARG BUILD_VERSION
LABEL \
org.opencontainers.image.authors="The ESPHome Authors" \
org.opencontainers.image.title="ESPHome" \
org.opencontainers.image.description="ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems" \
org.opencontainers.image.url="https://esphome.io/" \
org.opencontainers.image.documentation="https://esphome.io/" \
org.opencontainers.image.source="https://github.com/esphome/esphome" \
org.opencontainers.image.licenses="ESPHome" \
org.opencontainers.image.version=${BUILD_VERSION}
# ======================= docker-type image =======================
FROM base AS docker
# Copy esphome and install
COPY . /esphome
RUN if [ "$TARGETARCH$TARGETVARIANT" = "armv7" ]; then \
export PIP_EXTRA_INDEX_URL="https://www.piwheels.org/simple"; \
fi; \
pip3 install \
--break-system-packages --no-cache-dir -e /esphome
# Settings for dashboard
ENV USERNAME="" PASSWORD=""
FROM base AS base-docker
# Expose the dashboard to Docker
EXPOSE 6052
# Run healthcheck (heartbeat)
HEALTHCHECK --interval=30s --timeout=30s \
CMD curl --fail http://localhost:6052/version -A "HealthCheck" || exit 1
CMD curl --fail http://localhost:6052/version -A "HealthCheck" || exit 1
COPY docker/docker_entrypoint.sh /entrypoint.sh
@@ -147,73 +64,23 @@ ENTRYPOINT ["/entrypoint.sh"]
CMD ["dashboard", "/config"]
# ======================= hassio-type image =======================
FROM base AS hassio
RUN \
apt-get update \
# Use pinned versions so that we get updates with build caching
&& apt-get install -y --no-install-recommends \
nginx-light=1.22.1-9 \
&& rm -rf \
/tmp/* \
/var/{cache,log}/* \
/var/lib/apt/lists/*
ARG BUILD_VERSION=dev
# ======================= ha-addon-type image =======================
FROM base AS base-ha-addon
# Copy root filesystem
COPY docker/ha-addon-rootfs/ /
# Copy esphome and install
COPY . /esphome
RUN if [ "$TARGETARCH$TARGETVARIANT" = "armv7" ]; then \
export PIP_EXTRA_INDEX_URL="https://www.piwheels.org/simple"; \
fi; \
pip3 install \
--break-system-packages --no-cache-dir -e /esphome
# Labels
ARG BUILD_VERSION
LABEL \
io.hass.name="ESPHome" \
io.hass.description="Manage and program ESP8266/ESP32 microcontrollers through YAML configuration files" \
io.hass.description="ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems" \
io.hass.type="addon" \
io.hass.version="${BUILD_VERSION}"
# io.hass.arch is inherited from addon-debian-base
ARG BUILD_TYPE
FROM base-${BUILD_TYPE} AS final
# ======================= lint-type image =======================
FROM base AS lint
ENV \
PLATFORMIO_CORE_DIR=/esphome/.temp/platformio
RUN \
apt-get update \
# Use pinned versions so that we get updates with build caching
&& apt-get install -y --no-install-recommends \
clang-format-13=1:13.0.1-11+b2 \
clang-tidy-14=1:14.0.6-12 \
patch=2.7.6-7 \
software-properties-common=0.99.30-4.1~deb12u1 \
nano=7.2-1+deb12u1 \
build-essential=12.9 \
python3-dev=3.11.2-1+b1 \
&& rm -rf \
/tmp/* \
/var/{cache,log}/* \
/var/lib/apt/lists/*
COPY requirements_test.txt /
RUN if [ "$TARGETARCH$TARGETVARIANT" = "armv7" ]; then \
export PIP_EXTRA_INDEX_URL="https://www.piwheels.org/simple"; \
fi; \
pip3 install \
--break-system-packages --no-cache-dir -r /requirements_test.txt
VOLUME ["/esphome"]
WORKDIR /esphome
# Copy esphome and install
COPY . /esphome
RUN uv pip install --no-cache-dir -e /esphome
+10 -19
View File
@@ -1,22 +1,19 @@
#!/usr/bin/env python3
from dataclasses import dataclass
import subprocess
import argparse
from platform import machine
import shlex
from dataclasses import dataclass
import re
import shlex
import subprocess
import sys
CHANNEL_DEV = "dev"
CHANNEL_BETA = "beta"
CHANNEL_RELEASE = "release"
CHANNELS = [CHANNEL_DEV, CHANNEL_BETA, CHANNEL_RELEASE]
ARCH_AMD64 = "amd64"
ARCH_ARMV7 = "armv7"
ARCH_AARCH64 = "aarch64"
ARCHS = [ARCH_AMD64, ARCH_ARMV7, ARCH_AARCH64]
ARCHS = [ARCH_AMD64, ARCH_AARCH64]
TYPE_DOCKER = "docker"
TYPE_HA_ADDON = "ha-addon"
@@ -57,7 +54,7 @@ manifest_parser = subparsers.add_parser(
class DockerParams:
build_to: str
manifest_to: str
baseimgtype: str
build_type: str
platform: str
target: str
@@ -69,25 +66,19 @@ class DockerParams:
TYPE_LINT: "esphome/esphome-lint",
}[build_type]
build_to = f"{prefix}-{arch}"
baseimgtype = {
TYPE_DOCKER: "docker",
TYPE_HA_ADDON: "hassio",
TYPE_LINT: "docker",
}[build_type]
platform = {
ARCH_AMD64: "linux/amd64",
ARCH_ARMV7: "linux/arm/v7",
ARCH_AARCH64: "linux/arm64",
}[arch]
target = {
TYPE_DOCKER: "docker",
TYPE_HA_ADDON: "hassio",
TYPE_DOCKER: "final",
TYPE_HA_ADDON: "final",
TYPE_LINT: "lint",
}[build_type]
return cls(
build_to=build_to,
manifest_to=prefix,
baseimgtype=baseimgtype,
build_type=build_type,
platform=platform,
target=target,
)
@@ -99,7 +90,7 @@ def main():
def run_command(*cmd, ignore_error: bool = False):
print(f"$ {shlex.join(list(cmd))}")
if not args.dry_run:
rc = subprocess.call(list(cmd))
rc = subprocess.call(list(cmd), close_fds=False)
if rc != 0 and not ignore_error:
print("Command failed")
sys.exit(1)
@@ -149,7 +140,7 @@ def main():
"buildx",
"build",
"--build-arg",
f"BASEIMGTYPE={params.baseimgtype}",
f"BUILD_TYPE={params.build_type}",
"--build-arg",
f"BUILD_VERSION={args.tag}",
"--cache-from",
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
import re
import argparse
import re
CHANNEL_DEV = "dev"
CHANNEL_BETA = "beta"
@@ -23,10 +23,6 @@ if bashio::config.true 'streamer_mode'; then
export ESPHOME_STREAMER_MODE=true
fi
if bashio::config.true 'status_use_ping'; then
export ESPHOME_DASHBOARD_USE_PING=true
fi
if bashio::config.has_value 'relative_url'; then
export ESPHOME_DASHBOARD_RELATIVE_URL=$(bashio::config 'relative_url')
fi
+555 -186
View File
File diff suppressed because it is too large Load Diff
+142
View File
@@ -0,0 +1,142 @@
"""Address cache for DNS and mDNS lookups."""
from __future__ import annotations
import logging
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from collections.abc import Iterable
_LOGGER = logging.getLogger(__name__)
def normalize_hostname(hostname: str) -> str:
"""Normalize hostname for cache lookups.
Removes trailing dots and converts to lowercase.
"""
return hostname.rstrip(".").lower()
class AddressCache:
"""Cache for DNS and mDNS address lookups.
This cache stores pre-resolved addresses from command-line arguments
to avoid slow DNS/mDNS lookups during builds.
"""
def __init__(
self,
mdns_cache: dict[str, list[str]] | None = None,
dns_cache: dict[str, list[str]] | None = None,
) -> None:
"""Initialize the address cache.
Args:
mdns_cache: Pre-populated mDNS addresses (hostname -> IPs)
dns_cache: Pre-populated DNS addresses (hostname -> IPs)
"""
self.mdns_cache = mdns_cache or {}
self.dns_cache = dns_cache or {}
def _get_cached_addresses(
self, hostname: str, cache: dict[str, list[str]], cache_type: str
) -> list[str] | None:
"""Get cached addresses from a specific cache.
Args:
hostname: The hostname to look up
cache: The cache dictionary to check
cache_type: Type of cache for logging ("mDNS" or "DNS")
Returns:
List of IP addresses if found in cache, None otherwise
"""
normalized = normalize_hostname(hostname)
if addresses := cache.get(normalized):
_LOGGER.debug("Using %s cache for %s: %s", cache_type, hostname, addresses)
return addresses
return None
def get_mdns_addresses(self, hostname: str) -> list[str] | None:
"""Get cached mDNS addresses for a hostname.
Args:
hostname: The hostname to look up (should end with .local)
Returns:
List of IP addresses if found in cache, None otherwise
"""
return self._get_cached_addresses(hostname, self.mdns_cache, "mDNS")
def get_dns_addresses(self, hostname: str) -> list[str] | None:
"""Get cached DNS addresses for a hostname.
Args:
hostname: The hostname to look up
Returns:
List of IP addresses if found in cache, None otherwise
"""
return self._get_cached_addresses(hostname, self.dns_cache, "DNS")
def get_addresses(self, hostname: str) -> list[str] | None:
"""Get cached addresses for a hostname.
Checks mDNS cache for .local domains, DNS cache otherwise.
Args:
hostname: The hostname to look up
Returns:
List of IP addresses if found in cache, None otherwise
"""
normalized = normalize_hostname(hostname)
if normalized.endswith(".local"):
return self.get_mdns_addresses(hostname)
return self.get_dns_addresses(hostname)
def has_cache(self) -> bool:
"""Check if any cache entries exist."""
return bool(self.mdns_cache or self.dns_cache)
@classmethod
def from_cli_args(
cls, mdns_args: Iterable[str], dns_args: Iterable[str]
) -> AddressCache:
"""Create cache from command-line arguments.
Args:
mdns_args: List of mDNS cache entries like ['host=ip1,ip2']
dns_args: List of DNS cache entries like ['host=ip1,ip2']
Returns:
Configured AddressCache instance
"""
mdns_cache = cls._parse_cache_args(mdns_args)
dns_cache = cls._parse_cache_args(dns_args)
return cls(mdns_cache=mdns_cache, dns_cache=dns_cache)
@staticmethod
def _parse_cache_args(cache_args: Iterable[str]) -> dict[str, list[str]]:
"""Parse cache arguments into a dictionary.
Args:
cache_args: List of cache mappings like ['host1=ip1,ip2', 'host2=ip3']
Returns:
Dictionary mapping normalized hostnames to list of IP addresses
"""
cache: dict[str, list[str]] = {}
for arg in cache_args:
if "=" not in arg:
_LOGGER.warning(
"Invalid cache format: %s (expected 'hostname=ip1,ip2')", arg
)
continue
hostname, ips = arg.split("=", 1)
# Normalize hostname for consistent lookups
normalized = normalize_hostname(hostname)
cache[normalized] = [ip.strip() for ip in ips.split(",")]
return cache
+158 -35
View File
@@ -1,6 +1,8 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.const import (
CONF_ALL,
CONF_ANY,
CONF_AUTOMATION_ID,
CONF_CONDITION,
CONF_COUNT,
@@ -13,7 +15,10 @@ from esphome.const import (
CONF_TYPE_ID,
CONF_UPDATE_INTERVAL,
)
from esphome.core import ID
from esphome.cpp_generator import MockObj, MockObjClass, TemplateArgsType
from esphome.schema_extractors import SCHEMA_EXTRACT, schema_extractor
from esphome.types import ConfigType
from esphome.util import Registry
@@ -47,11 +52,11 @@ def maybe_conf(conf, *validators):
return validate
def register_action(name, action_type, schema):
def register_action(name: str, action_type: MockObjClass, schema: cv.Schema):
return ACTION_REGISTRY.register(name, action_type, schema)
def register_condition(name, condition_type, schema):
def register_condition(name: str, condition_type: MockObjClass, schema: cv.Schema):
return CONDITION_REGISTRY.register(name, condition_type, schema)
@@ -73,6 +78,13 @@ def validate_potentially_and_condition(value):
return validate_condition(value)
def validate_potentially_or_condition(value):
if isinstance(value, list):
with cv.remove_prepend_path(["or"]):
return validate_condition({"or": value})
return validate_condition(value)
DelayAction = cg.esphome_ns.class_("DelayAction", Action, cg.Component)
LambdaAction = cg.esphome_ns.class_("LambdaAction", Action)
IfAction = cg.esphome_ns.class_("IfAction", Action)
@@ -155,31 +167,78 @@ XorCondition = cg.esphome_ns.class_("XorCondition", Condition)
@register_condition("and", AndCondition, validate_condition_list)
async def and_condition_to_code(config, condition_id, template_arg, args):
async def and_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
conditions = await build_condition_list(config, template_arg, args)
return cg.new_Pvariable(condition_id, template_arg, conditions)
@register_condition("or", OrCondition, validate_condition_list)
async def or_condition_to_code(config, condition_id, template_arg, args):
async def or_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
conditions = await build_condition_list(config, template_arg, args)
return cg.new_Pvariable(condition_id, template_arg, conditions)
@register_condition("all", AndCondition, validate_condition_list)
async def all_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
conditions = await build_condition_list(config, template_arg, args)
return cg.new_Pvariable(condition_id, template_arg, conditions)
@register_condition("any", OrCondition, validate_condition_list)
async def any_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
conditions = await build_condition_list(config, template_arg, args)
return cg.new_Pvariable(condition_id, template_arg, conditions)
@register_condition("not", NotCondition, validate_potentially_and_condition)
async def not_condition_to_code(config, condition_id, template_arg, args):
async def not_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
condition = await build_condition(config, template_arg, args)
return cg.new_Pvariable(condition_id, template_arg, condition)
@register_condition("xor", XorCondition, validate_condition_list)
async def xor_condition_to_code(config, condition_id, template_arg, args):
async def xor_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
conditions = await build_condition_list(config, template_arg, args)
return cg.new_Pvariable(condition_id, template_arg, conditions)
@register_condition("lambda", LambdaCondition, cv.returning_lambda)
async def lambda_condition_to_code(config, condition_id, template_arg, args):
async def lambda_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
lambda_ = await cg.process_lambda(config, args, return_type=bool)
return cg.new_Pvariable(condition_id, template_arg, lambda_)
@@ -196,7 +255,12 @@ async def lambda_condition_to_code(config, condition_id, template_arg, args):
}
).extend(cv.COMPONENT_SCHEMA),
)
async def for_condition_to_code(config, condition_id, template_arg, args):
async def for_condition_to_code(
config: ConfigType,
condition_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
condition = await build_condition(
config[CONF_CONDITION], cg.TemplateArguments(), []
)
@@ -210,7 +274,12 @@ async def for_condition_to_code(config, condition_id, template_arg, args):
@register_action(
"delay", DelayAction, cv.templatable(cv.positive_time_period_milliseconds)
)
async def delay_action_to_code(config, action_id, template_arg, args):
async def delay_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
var = cg.new_Pvariable(action_id, template_arg)
await cg.register_component(var, {})
template_ = await cg.templatable(config, args, cg.uint32)
@@ -223,16 +292,27 @@ async def delay_action_to_code(config, action_id, template_arg, args):
IfAction,
cv.All(
{
cv.Required(CONF_CONDITION): validate_potentially_and_condition,
cv.Exclusive(
CONF_CONDITION, CONF_CONDITION
): validate_potentially_and_condition,
cv.Exclusive(CONF_ANY, CONF_CONDITION): validate_potentially_or_condition,
cv.Exclusive(CONF_ALL, CONF_CONDITION): validate_potentially_and_condition,
cv.Optional(CONF_THEN): validate_action_list,
cv.Optional(CONF_ELSE): validate_action_list,
},
cv.has_at_least_one_key(CONF_THEN, CONF_ELSE),
cv.has_at_least_one_key(CONF_CONDITION, CONF_ANY, CONF_ALL),
),
)
async def if_action_to_code(config, action_id, template_arg, args):
conditions = await build_condition(config[CONF_CONDITION], template_arg, args)
var = cg.new_Pvariable(action_id, template_arg, conditions)
async def if_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
cond_conf = next(el for el in config if el in (CONF_ANY, CONF_ALL, CONF_CONDITION))
condition = await build_condition(config[cond_conf], template_arg, args)
var = cg.new_Pvariable(action_id, template_arg, condition)
if CONF_THEN in config:
actions = await build_action_list(config[CONF_THEN], template_arg, args)
cg.add(var.add_then(actions))
@@ -252,9 +332,14 @@ async def if_action_to_code(config, action_id, template_arg, args):
}
),
)
async def while_action_to_code(config, action_id, template_arg, args):
conditions = await build_condition(config[CONF_CONDITION], template_arg, args)
var = cg.new_Pvariable(action_id, template_arg, conditions)
async def while_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
condition = await build_condition(config[CONF_CONDITION], template_arg, args)
var = cg.new_Pvariable(action_id, template_arg, condition)
actions = await build_action_list(config[CONF_THEN], template_arg, args)
cg.add(var.add_then(actions))
return var
@@ -270,7 +355,12 @@ async def while_action_to_code(config, action_id, template_arg, args):
}
),
)
async def repeat_action_to_code(config, action_id, template_arg, args):
async def repeat_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
var = cg.new_Pvariable(action_id, template_arg)
count_template = await cg.templatable(config[CONF_COUNT], args, cg.uint32)
cg.add(var.set_count(count_template))
@@ -293,9 +383,14 @@ _validate_wait_until = cv.maybe_simple_value(
@register_action("wait_until", WaitUntilAction, _validate_wait_until)
async def wait_until_action_to_code(config, action_id, template_arg, args):
conditions = await build_condition(config[CONF_CONDITION], template_arg, args)
var = cg.new_Pvariable(action_id, template_arg, conditions)
async def wait_until_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
condition = await build_condition(config[CONF_CONDITION], template_arg, args)
var = cg.new_Pvariable(action_id, template_arg, condition)
if CONF_TIMEOUT in config:
template_ = await cg.templatable(config[CONF_TIMEOUT], args, cg.uint32)
cg.add(var.set_timeout_value(template_))
@@ -304,7 +399,12 @@ async def wait_until_action_to_code(config, action_id, template_arg, args):
@register_action("lambda", LambdaAction, cv.lambda_)
async def lambda_action_to_code(config, action_id, template_arg, args):
async def lambda_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
lambda_ = await cg.process_lambda(config, args, return_type=cg.void)
return cg.new_Pvariable(action_id, template_arg, lambda_)
@@ -318,7 +418,12 @@ async def lambda_action_to_code(config, action_id, template_arg, args):
}
),
)
async def component_update_action_to_code(config, action_id, template_arg, args):
async def component_update_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
comp = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, comp)
@@ -332,7 +437,12 @@ async def component_update_action_to_code(config, action_id, template_arg, args)
}
),
)
async def component_suspend_action_to_code(config, action_id, template_arg, args):
async def component_suspend_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
comp = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, comp)
@@ -349,7 +459,12 @@ async def component_suspend_action_to_code(config, action_id, template_arg, args
}
),
)
async def component_resume_action_to_code(config, action_id, template_arg, args):
async def component_resume_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
comp = await cg.get_variable(config[CONF_ID])
var = cg.new_Pvariable(action_id, template_arg, comp)
if CONF_UPDATE_INTERVAL in config:
@@ -358,43 +473,51 @@ async def component_resume_action_to_code(config, action_id, template_arg, args)
return var
async def build_action(full_config, template_arg, args):
async def build_action(
full_config: ConfigType, template_arg: cg.TemplateArguments, args: TemplateArgsType
) -> MockObj:
registry_entry, config = cg.extract_registry_entry_config(
ACTION_REGISTRY, full_config
)
action_id = full_config[CONF_TYPE_ID]
builder = registry_entry.coroutine_fun
ret = await builder(config, action_id, template_arg, args)
return ret
return await builder(config, action_id, template_arg, args)
async def build_action_list(config, templ, arg_type):
actions = []
async def build_action_list(
config: list[ConfigType], templ: cg.TemplateArguments, arg_type: TemplateArgsType
) -> list[MockObj]:
actions: list[MockObj] = []
for conf in config:
action = await build_action(conf, templ, arg_type)
actions.append(action)
return actions
async def build_condition(full_config, template_arg, args):
async def build_condition(
full_config: ConfigType, template_arg: cg.TemplateArguments, args: TemplateArgsType
) -> MockObj:
registry_entry, config = cg.extract_registry_entry_config(
CONDITION_REGISTRY, full_config
)
action_id = full_config[CONF_TYPE_ID]
builder = registry_entry.coroutine_fun
ret = await builder(config, action_id, template_arg, args)
return ret
return await builder(config, action_id, template_arg, args)
async def build_condition_list(config, templ, args):
conditions = []
async def build_condition_list(
config: ConfigType, templ: cg.TemplateArguments, args: TemplateArgsType
) -> list[MockObj]:
conditions: list[MockObj] = []
for conf in config:
condition = await build_condition(conf, templ, args)
conditions.append(condition)
return conditions
async def build_automation(trigger, args, config):
async def build_automation(
trigger: MockObj, args: TemplateArgsType, config: ConfigType
) -> MockObj:
arg_types = [arg[0] for arg in args]
templ = cg.TemplateArguments(*arg_types)
obj = cg.new_Pvariable(config[CONF_AUTOMATION_ID], templ, trigger)
View File
+100
View File
@@ -0,0 +1,100 @@
from esphome.const import __version__
from esphome.core import CORE
from esphome.helpers import mkdir_p, read_file, write_file_if_changed
from esphome.writer import find_begin_end, update_storage_json
INI_AUTO_GENERATE_BEGIN = "; ========== AUTO GENERATED CODE BEGIN ==========="
INI_AUTO_GENERATE_END = "; =========== AUTO GENERATED CODE END ============"
INI_BASE_FORMAT = (
"""; Auto generated code by esphome
[common]
lib_deps =
build_flags =
upload_flags =
""",
"""
""",
)
def format_ini(data: dict[str, str | list[str]]) -> str:
content = ""
for key, value in sorted(data.items()):
if isinstance(value, list):
content += f"{key} =\n"
for x in value:
content += f" {x}\n"
else:
content += f"{key} = {value}\n"
return content
def get_ini_content():
CORE.add_platformio_option(
"lib_deps",
[x.as_lib_dep for x in CORE.platformio_libraries.values()]
+ ["${common.lib_deps}"],
)
# Sort to avoid changing build flags order
CORE.add_platformio_option("build_flags", sorted(CORE.build_flags))
# Sort to avoid changing build unflags order
CORE.add_platformio_option("build_unflags", sorted(CORE.build_unflags))
# Add extra script for C++ flags
CORE.add_platformio_option("extra_scripts", [f"pre:{CXX_FLAGS_FILE_NAME}"])
content = "[platformio]\n"
content += f"description = ESPHome {__version__}\n"
content += f"[env:{CORE.name}]\n"
content += format_ini(CORE.platformio_options)
return content
def write_ini(content):
update_storage_json()
path = CORE.relative_build_path("platformio.ini")
if path.is_file():
text = read_file(path)
content_format = find_begin_end(
text, INI_AUTO_GENERATE_BEGIN, INI_AUTO_GENERATE_END
)
else:
content_format = INI_BASE_FORMAT
full_file = f"{content_format[0] + INI_AUTO_GENERATE_BEGIN}\n{content}"
full_file += INI_AUTO_GENERATE_END + content_format[1]
write_file_if_changed(path, full_file)
def write_project():
mkdir_p(CORE.build_path)
content = get_ini_content()
write_ini(content)
# Write extra script for C++ specific flags
write_cxx_flags_script()
CXX_FLAGS_FILE_NAME = "cxx_flags.py"
CXX_FLAGS_FILE_CONTENTS = """# Auto-generated ESPHome script for C++ specific compiler flags
Import("env")
# Add C++ specific flags
"""
def write_cxx_flags_script() -> None:
path = CORE.relative_build_path(CXX_FLAGS_FILE_NAME)
contents = CXX_FLAGS_FILE_CONTENTS
if not CORE.is_host:
contents += 'env.Append(CXXFLAGS=["-Wno-volatile"])'
contents += "\n"
write_file_if_changed(path, contents)
+3
View File
@@ -12,6 +12,7 @@ from esphome.cpp_generator import ( # noqa: F401
ArrayInitializer,
Expression,
LineComment,
LogStringLiteral,
MockObj,
MockObjClass,
Pvariable,
@@ -22,6 +23,7 @@ from esphome.cpp_generator import ( # noqa: F401
TemplateArguments,
add,
add_build_flag,
add_build_unflag,
add_define,
add_global,
add_library,
@@ -34,6 +36,7 @@ from esphome.cpp_generator import ( # noqa: F401
process_lambda,
progmem_array,
safe_exp,
set_cpp_standard,
statement,
static_const_array,
templatable,
+2 -2
View File
@@ -1,10 +1,10 @@
import esphome.codegen as cg
from esphome.components import sensor, uart
from esphome.const import (
DEVICE_CLASS_DISTANCE,
ICON_ARROW_EXPAND_VERTICAL,
STATE_CLASS_MEASUREMENT,
UNIT_METER,
ICON_ARROW_EXPAND_VERTICAL,
DEVICE_CLASS_DISTANCE,
)
CODEOWNERS = ["@MrSuicideParrot"]
+2 -2
View File
@@ -1,9 +1,9 @@
import esphome.codegen as cg
from esphome.components import sensor, uart
from esphome.const import (
STATE_CLASS_MEASUREMENT,
ICON_ARROW_EXPAND_VERTICAL,
DEVICE_CLASS_DISTANCE,
ICON_ARROW_EXPAND_VERTICAL,
STATE_CLASS_MEASUREMENT,
UNIT_MILLIMETER,
)
-1
View File
@@ -7,7 +7,6 @@ namespace a4988 {
static const char *const TAG = "a4988.stepper";
void A4988::setup() {
ESP_LOGCONFIG(TAG, "Setting up A4988...");
if (this->sleep_pin_ != nullptr) {
this->sleep_pin_->setup();
this->sleep_pin_->digital_write(false);
+1 -2
View File
@@ -1,10 +1,9 @@
from esphome import pins
import esphome.codegen as cg
from esphome.components import stepper
import esphome.config_validation as cv
import esphome.codegen as cg
from esphome.const import CONF_DIR_PIN, CONF_ID, CONF_SLEEP_PIN, CONF_STEP_PIN
a4988_ns = cg.esphome_ns.namespace("a4988")
A4988 = a4988_ns.class_("A4988", stepper.Stepper, cg.Component)
@@ -7,8 +7,6 @@ namespace absolute_humidity {
static const char *const TAG = "absolute_humidity.sensor";
void AbsoluteHumidityComponent::setup() {
ESP_LOGCONFIG(TAG, "Setting up absolute humidity '%s'...", this->get_name().c_str());
ESP_LOGD(TAG, " Added callback for temperature '%s'", this->temperature_sensor_->get_name().c_str());
this->temperature_sensor_->add_on_state_callback([this](float state) { this->temperature_callback_(state); });
if (this->temperature_sensor_->has_state()) {
@@ -40,9 +38,11 @@ void AbsoluteHumidityComponent::dump_config() {
break;
}
ESP_LOGCONFIG(TAG, "Sources");
ESP_LOGCONFIG(TAG, " Temperature: '%s'", this->temperature_sensor_->get_name().c_str());
ESP_LOGCONFIG(TAG, " Relative Humidity: '%s'", this->humidity_sensor_->get_name().c_str());
ESP_LOGCONFIG(TAG,
"Sources\n"
" Temperature: '%s'\n"
" Relative Humidity: '%s'",
this->temperature_sensor_->get_name().c_str(), this->humidity_sensor_->get_name().c_str());
}
float AbsoluteHumidityComponent::get_setup_priority() const { return setup_priority::DATA; }
@@ -61,11 +61,10 @@ void AbsoluteHumidityComponent::loop() {
ESP_LOGW(TAG, "No valid state from temperature sensor!");
}
if (no_humidity) {
ESP_LOGW(TAG, "No valid state from temperature sensor!");
ESP_LOGW(TAG, "No valid state from humidity sensor!");
}
ESP_LOGW(TAG, "Unable to calculate absolute humidity.");
this->publish_state(NAN);
this->status_set_warning();
this->status_set_warning(LOG_STR("Unable to calculate absolute humidity."));
return;
}
@@ -87,9 +86,8 @@ void AbsoluteHumidityComponent::loop() {
es = es_wobus(temperature_c);
break;
default:
ESP_LOGE(TAG, "Invalid saturation vapor pressure equation selection!");
this->publish_state(NAN);
this->status_set_error();
this->status_set_error("Invalid saturation vapor pressure equation selection!");
return;
}
ESP_LOGD(TAG, "Saturation vapor pressure %f kPa", es);
@@ -1,12 +1,12 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor
import esphome.config_validation as cv
from esphome.const import (
CONF_EQUATION,
CONF_HUMIDITY,
CONF_TEMPERATURE,
DEVICE_CLASS_ABSOLUTE_HUMIDITY,
STATE_CLASS_MEASUREMENT,
CONF_EQUATION,
ICON_WATER,
UNIT_GRAMS_PER_CUBIC_METER,
)
@@ -27,8 +27,8 @@ EQUATION = {
CONFIG_SCHEMA = (
sensor.sensor_schema(
unit_of_measurement=UNIT_GRAMS_PER_CUBIC_METER,
icon=ICON_WATER,
accuracy_decimals=2,
device_class=DEVICE_CLASS_ABSOLUTE_HUMIDITY,
state_class=STATE_CLASS_MEASUREMENT,
)
.extend(
+13 -10
View File
@@ -4,6 +4,7 @@
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
#include <cmath>
#include <numbers>
#ifdef USE_ESP8266
#include <core_esp8266_waveform.h>
@@ -114,13 +115,14 @@ void IRAM_ATTR HOT AcDimmerDataStore::gpio_intr() {
// fully off, disable output immediately
this->gate_pin.digital_write(false);
} else {
auto min_us = this->cycle_time_us * this->min_power / 1000;
if (this->method == DIM_METHOD_TRAILING) {
this->enable_time_us = 1; // cannot be 0
this->disable_time_us = std::max((uint32_t) 10, this->value * this->cycle_time_us / 65535);
// calculate time until disable in µs with integer arithmetic and take into account min_power
this->disable_time_us = std::max((uint32_t) 10, this->value * (this->cycle_time_us - min_us) / 65535 + min_us);
} else {
// calculate time until enable in µs: (1.0-value)*cycle_time, but with integer arithmetic
// also take into account min_power
auto min_us = this->cycle_time_us * this->min_power / 1000;
this->enable_time_us = std::max((uint32_t) 1, ((65535 - this->value) * (this->cycle_time_us - min_us)) / 65535);
if (this->method == DIM_METHOD_LEADING_PULSE) {
@@ -192,18 +194,17 @@ void AcDimmer::setup() {
setTimer1Callback(&timer_interrupt);
#endif
#ifdef USE_ESP32
// 80 Divider -> 1 count=1µs
dimmer_timer = timerBegin(0, 80, true);
timerAttachInterrupt(dimmer_timer, &AcDimmerDataStore::s_timer_intr, true);
// timer frequency of 1mhz
dimmer_timer = timerBegin(1000000);
timerAttachInterrupt(dimmer_timer, &AcDimmerDataStore::s_timer_intr);
// For ESP32, we can't use dynamic interval calculation because the timerX functions
// are not callable from ISR (placed in flash storage).
// Here we just use an interrupt firing every 50 µs.
timerAlarmWrite(dimmer_timer, 50, true);
timerAlarmEnable(dimmer_timer);
timerAlarm(dimmer_timer, 50, true, 0);
#endif
}
void AcDimmer::write_state(float state) {
state = std::acos(1 - (2 * state)) / 3.14159; // RMS power compensation
state = std::acos(1 - (2 * state)) / std::numbers::pi; // RMS power compensation
auto new_value = static_cast<uint16_t>(roundf(state * 65535));
if (new_value != 0 && this->store_.value == 0)
this->store_.init_cycle = this->init_with_half_cycle_;
@@ -213,8 +214,10 @@ void AcDimmer::dump_config() {
ESP_LOGCONFIG(TAG, "AcDimmer:");
LOG_PIN(" Output Pin: ", this->gate_pin_);
LOG_PIN(" Zero-Cross Pin: ", this->zero_cross_pin_);
ESP_LOGCONFIG(TAG, " Min Power: %.1f%%", this->store_.min_power / 10.0f);
ESP_LOGCONFIG(TAG, " Init with half cycle: %s", YESNO(this->init_with_half_cycle_));
ESP_LOGCONFIG(TAG,
" Min Power: %.1f%%\n"
" Init with half cycle: %s",
this->store_.min_power / 10.0f, YESNO(this->init_with_half_cycle_));
if (method_ == DIM_METHOD_LEADING_PULSE) {
ESP_LOGCONFIG(TAG, " Method: leading pulse");
} else if (method_ == DIM_METHOD_LEADING) {
+3 -3
View File
@@ -1,8 +1,8 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome import pins
import esphome.codegen as cg
from esphome.components import output
from esphome.const import CONF_ID, CONF_MIN_POWER, CONF_METHOD
import esphome.config_validation as cv
from esphome.const import CONF_ID, CONF_METHOD, CONF_MIN_POWER
CODEOWNERS = ["@glmnet"]
+2 -2
View File
@@ -1,8 +1,8 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import uart
from esphome.components.light.types import AddressableLightEffect
from esphome.components.light.effects import register_addressable_effect
from esphome.components.light.types import AddressableLightEffect
import esphome.config_validation as cv
from esphome.const import CONF_NAME, CONF_UART_ID
DEPENDENCIES = ["uart"]
+164 -104
View File
@@ -1,20 +1,19 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome import pins
from esphome.const import CONF_ANALOG, CONF_INPUT, CONF_NUMBER
from esphome.core import CORE
from esphome.components.esp32 import get_esp32_variant
from esphome.const import PLATFORM_ESP8266
import esphome.codegen as cg
from esphome.components.esp32 import VARIANT_ESP32P4, get_esp32_variant
from esphome.components.esp32.const import (
VARIANT_ESP32,
VARIANT_ESP32C2,
VARIANT_ESP32C3,
VARIANT_ESP32C5,
VARIANT_ESP32C6,
VARIANT_ESP32H2,
VARIANT_ESP32S2,
VARIANT_ESP32S3,
)
import esphome.config_validation as cv
from esphome.const import CONF_ANALOG, CONF_INPUT, CONF_NUMBER, PLATFORM_ESP8266
from esphome.core import CORE
CODEOWNERS = ["@esphome/core"]
@@ -38,122 +37,178 @@ ATTENUATION_MODES = {
"auto": "auto",
}
adc1_channel_t = cg.global_ns.enum("adc1_channel_t")
adc2_channel_t = cg.global_ns.enum("adc2_channel_t")
sampling_mode = adc_ns.enum("SamplingMode", is_class=True)
SAMPLING_MODES = {
"avg": sampling_mode.AVG,
"min": sampling_mode.MIN,
"max": sampling_mode.MAX,
}
adc_unit_t = cg.global_ns.enum("adc_unit_t", is_class=True)
adc_channel_t = cg.global_ns.enum("adc_channel_t", is_class=True)
# From https://github.com/espressif/esp-idf/blob/master/components/driver/include/driver/adc_common.h
# pin to adc1 channel mapping
# https://github.com/espressif/esp-idf/blob/v4.4.8/components/driver/include/driver/adc.h
ESP32_VARIANT_ADC1_PIN_TO_CHANNEL = {
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32/include/soc/adc_channel.h
VARIANT_ESP32: {
36: adc1_channel_t.ADC1_CHANNEL_0,
37: adc1_channel_t.ADC1_CHANNEL_1,
38: adc1_channel_t.ADC1_CHANNEL_2,
39: adc1_channel_t.ADC1_CHANNEL_3,
32: adc1_channel_t.ADC1_CHANNEL_4,
33: adc1_channel_t.ADC1_CHANNEL_5,
34: adc1_channel_t.ADC1_CHANNEL_6,
35: adc1_channel_t.ADC1_CHANNEL_7,
},
VARIANT_ESP32S2: {
1: adc1_channel_t.ADC1_CHANNEL_0,
2: adc1_channel_t.ADC1_CHANNEL_1,
3: adc1_channel_t.ADC1_CHANNEL_2,
4: adc1_channel_t.ADC1_CHANNEL_3,
5: adc1_channel_t.ADC1_CHANNEL_4,
6: adc1_channel_t.ADC1_CHANNEL_5,
7: adc1_channel_t.ADC1_CHANNEL_6,
8: adc1_channel_t.ADC1_CHANNEL_7,
9: adc1_channel_t.ADC1_CHANNEL_8,
10: adc1_channel_t.ADC1_CHANNEL_9,
},
VARIANT_ESP32S3: {
1: adc1_channel_t.ADC1_CHANNEL_0,
2: adc1_channel_t.ADC1_CHANNEL_1,
3: adc1_channel_t.ADC1_CHANNEL_2,
4: adc1_channel_t.ADC1_CHANNEL_3,
5: adc1_channel_t.ADC1_CHANNEL_4,
6: adc1_channel_t.ADC1_CHANNEL_5,
7: adc1_channel_t.ADC1_CHANNEL_6,
8: adc1_channel_t.ADC1_CHANNEL_7,
9: adc1_channel_t.ADC1_CHANNEL_8,
10: adc1_channel_t.ADC1_CHANNEL_9,
},
VARIANT_ESP32C3: {
0: adc1_channel_t.ADC1_CHANNEL_0,
1: adc1_channel_t.ADC1_CHANNEL_1,
2: adc1_channel_t.ADC1_CHANNEL_2,
3: adc1_channel_t.ADC1_CHANNEL_3,
4: adc1_channel_t.ADC1_CHANNEL_4,
36: adc_channel_t.ADC_CHANNEL_0,
37: adc_channel_t.ADC_CHANNEL_1,
38: adc_channel_t.ADC_CHANNEL_2,
39: adc_channel_t.ADC_CHANNEL_3,
32: adc_channel_t.ADC_CHANNEL_4,
33: adc_channel_t.ADC_CHANNEL_5,
34: adc_channel_t.ADC_CHANNEL_6,
35: adc_channel_t.ADC_CHANNEL_7,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32c2/include/soc/adc_channel.h
VARIANT_ESP32C2: {
0: adc1_channel_t.ADC1_CHANNEL_0,
1: adc1_channel_t.ADC1_CHANNEL_1,
2: adc1_channel_t.ADC1_CHANNEL_2,
3: adc1_channel_t.ADC1_CHANNEL_3,
4: adc1_channel_t.ADC1_CHANNEL_4,
0: adc_channel_t.ADC_CHANNEL_0,
1: adc_channel_t.ADC_CHANNEL_1,
2: adc_channel_t.ADC_CHANNEL_2,
3: adc_channel_t.ADC_CHANNEL_3,
4: adc_channel_t.ADC_CHANNEL_4,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32c3/include/soc/adc_channel.h
VARIANT_ESP32C3: {
0: adc_channel_t.ADC_CHANNEL_0,
1: adc_channel_t.ADC_CHANNEL_1,
2: adc_channel_t.ADC_CHANNEL_2,
3: adc_channel_t.ADC_CHANNEL_3,
4: adc_channel_t.ADC_CHANNEL_4,
},
# ESP32-C5 ADC1 pin mapping - based on official ESP-IDF documentation
# https://docs.espressif.com/projects/esp-idf/en/latest/esp32c5/api-reference/peripherals/gpio.html
VARIANT_ESP32C5: {
1: adc_channel_t.ADC_CHANNEL_0,
2: adc_channel_t.ADC_CHANNEL_1,
3: adc_channel_t.ADC_CHANNEL_2,
4: adc_channel_t.ADC_CHANNEL_3,
5: adc_channel_t.ADC_CHANNEL_4,
6: adc_channel_t.ADC_CHANNEL_5,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32c6/include/soc/adc_channel.h
VARIANT_ESP32C6: {
0: adc1_channel_t.ADC1_CHANNEL_0,
1: adc1_channel_t.ADC1_CHANNEL_1,
2: adc1_channel_t.ADC1_CHANNEL_2,
3: adc1_channel_t.ADC1_CHANNEL_3,
4: adc1_channel_t.ADC1_CHANNEL_4,
5: adc1_channel_t.ADC1_CHANNEL_5,
6: adc1_channel_t.ADC1_CHANNEL_6,
0: adc_channel_t.ADC_CHANNEL_0,
1: adc_channel_t.ADC_CHANNEL_1,
2: adc_channel_t.ADC_CHANNEL_2,
3: adc_channel_t.ADC_CHANNEL_3,
4: adc_channel_t.ADC_CHANNEL_4,
5: adc_channel_t.ADC_CHANNEL_5,
6: adc_channel_t.ADC_CHANNEL_6,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32h2/include/soc/adc_channel.h
VARIANT_ESP32H2: {
0: adc1_channel_t.ADC1_CHANNEL_0,
1: adc1_channel_t.ADC1_CHANNEL_1,
2: adc1_channel_t.ADC1_CHANNEL_2,
3: adc1_channel_t.ADC1_CHANNEL_3,
4: adc1_channel_t.ADC1_CHANNEL_4,
1: adc_channel_t.ADC_CHANNEL_0,
2: adc_channel_t.ADC_CHANNEL_1,
3: adc_channel_t.ADC_CHANNEL_2,
4: adc_channel_t.ADC_CHANNEL_3,
5: adc_channel_t.ADC_CHANNEL_4,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32s2/include/soc/adc_channel.h
VARIANT_ESP32S2: {
1: adc_channel_t.ADC_CHANNEL_0,
2: adc_channel_t.ADC_CHANNEL_1,
3: adc_channel_t.ADC_CHANNEL_2,
4: adc_channel_t.ADC_CHANNEL_3,
5: adc_channel_t.ADC_CHANNEL_4,
6: adc_channel_t.ADC_CHANNEL_5,
7: adc_channel_t.ADC_CHANNEL_6,
8: adc_channel_t.ADC_CHANNEL_7,
9: adc_channel_t.ADC_CHANNEL_8,
10: adc_channel_t.ADC_CHANNEL_9,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32s3/include/soc/adc_channel.h
VARIANT_ESP32S3: {
1: adc_channel_t.ADC_CHANNEL_0,
2: adc_channel_t.ADC_CHANNEL_1,
3: adc_channel_t.ADC_CHANNEL_2,
4: adc_channel_t.ADC_CHANNEL_3,
5: adc_channel_t.ADC_CHANNEL_4,
6: adc_channel_t.ADC_CHANNEL_5,
7: adc_channel_t.ADC_CHANNEL_6,
8: adc_channel_t.ADC_CHANNEL_7,
9: adc_channel_t.ADC_CHANNEL_8,
10: adc_channel_t.ADC_CHANNEL_9,
},
VARIANT_ESP32P4: {
16: adc_channel_t.ADC_CHANNEL_0,
17: adc_channel_t.ADC_CHANNEL_1,
18: adc_channel_t.ADC_CHANNEL_2,
19: adc_channel_t.ADC_CHANNEL_3,
20: adc_channel_t.ADC_CHANNEL_4,
21: adc_channel_t.ADC_CHANNEL_5,
22: adc_channel_t.ADC_CHANNEL_6,
23: adc_channel_t.ADC_CHANNEL_7,
},
}
# pin to adc2 channel mapping
# https://github.com/espressif/esp-idf/blob/v4.4.8/components/driver/include/driver/adc.h
ESP32_VARIANT_ADC2_PIN_TO_CHANNEL = {
# TODO: add other variants
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32/include/soc/adc_channel.h
VARIANT_ESP32: {
4: adc2_channel_t.ADC2_CHANNEL_0,
0: adc2_channel_t.ADC2_CHANNEL_1,
2: adc2_channel_t.ADC2_CHANNEL_2,
15: adc2_channel_t.ADC2_CHANNEL_3,
13: adc2_channel_t.ADC2_CHANNEL_4,
12: adc2_channel_t.ADC2_CHANNEL_5,
14: adc2_channel_t.ADC2_CHANNEL_6,
27: adc2_channel_t.ADC2_CHANNEL_7,
25: adc2_channel_t.ADC2_CHANNEL_8,
26: adc2_channel_t.ADC2_CHANNEL_9,
4: adc_channel_t.ADC_CHANNEL_0,
0: adc_channel_t.ADC_CHANNEL_1,
2: adc_channel_t.ADC_CHANNEL_2,
15: adc_channel_t.ADC_CHANNEL_3,
13: adc_channel_t.ADC_CHANNEL_4,
12: adc_channel_t.ADC_CHANNEL_5,
14: adc_channel_t.ADC_CHANNEL_6,
27: adc_channel_t.ADC_CHANNEL_7,
25: adc_channel_t.ADC_CHANNEL_8,
26: adc_channel_t.ADC_CHANNEL_9,
},
VARIANT_ESP32S2: {
11: adc2_channel_t.ADC2_CHANNEL_0,
12: adc2_channel_t.ADC2_CHANNEL_1,
13: adc2_channel_t.ADC2_CHANNEL_2,
14: adc2_channel_t.ADC2_CHANNEL_3,
15: adc2_channel_t.ADC2_CHANNEL_4,
16: adc2_channel_t.ADC2_CHANNEL_5,
17: adc2_channel_t.ADC2_CHANNEL_6,
18: adc2_channel_t.ADC2_CHANNEL_7,
19: adc2_channel_t.ADC2_CHANNEL_8,
20: adc2_channel_t.ADC2_CHANNEL_9,
},
VARIANT_ESP32S3: {
11: adc2_channel_t.ADC2_CHANNEL_0,
12: adc2_channel_t.ADC2_CHANNEL_1,
13: adc2_channel_t.ADC2_CHANNEL_2,
14: adc2_channel_t.ADC2_CHANNEL_3,
15: adc2_channel_t.ADC2_CHANNEL_4,
16: adc2_channel_t.ADC2_CHANNEL_5,
17: adc2_channel_t.ADC2_CHANNEL_6,
18: adc2_channel_t.ADC2_CHANNEL_7,
19: adc2_channel_t.ADC2_CHANNEL_8,
20: adc2_channel_t.ADC2_CHANNEL_9,
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32c2/include/soc/adc_channel.h
VARIANT_ESP32C2: {
5: adc_channel_t.ADC_CHANNEL_0,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32c3/include/soc/adc_channel.h
VARIANT_ESP32C3: {
5: adc2_channel_t.ADC2_CHANNEL_0,
5: adc_channel_t.ADC_CHANNEL_0,
},
# ESP32-C5 has no ADC2 channels
VARIANT_ESP32C5: {}, # no ADC2
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32c6/include/soc/adc_channel.h
VARIANT_ESP32C6: {}, # no ADC2
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32h2/include/soc/adc_channel.h
VARIANT_ESP32H2: {}, # no ADC2
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32s2/include/soc/adc_channel.h
VARIANT_ESP32S2: {
11: adc_channel_t.ADC_CHANNEL_0,
12: adc_channel_t.ADC_CHANNEL_1,
13: adc_channel_t.ADC_CHANNEL_2,
14: adc_channel_t.ADC_CHANNEL_3,
15: adc_channel_t.ADC_CHANNEL_4,
16: adc_channel_t.ADC_CHANNEL_5,
17: adc_channel_t.ADC_CHANNEL_6,
18: adc_channel_t.ADC_CHANNEL_7,
19: adc_channel_t.ADC_CHANNEL_8,
20: adc_channel_t.ADC_CHANNEL_9,
},
# https://github.com/espressif/esp-idf/blob/master/components/soc/esp32s3/include/soc/adc_channel.h
VARIANT_ESP32S3: {
11: adc_channel_t.ADC_CHANNEL_0,
12: adc_channel_t.ADC_CHANNEL_1,
13: adc_channel_t.ADC_CHANNEL_2,
14: adc_channel_t.ADC_CHANNEL_3,
15: adc_channel_t.ADC_CHANNEL_4,
16: adc_channel_t.ADC_CHANNEL_5,
17: adc_channel_t.ADC_CHANNEL_6,
18: adc_channel_t.ADC_CHANNEL_7,
19: adc_channel_t.ADC_CHANNEL_8,
20: adc_channel_t.ADC_CHANNEL_9,
},
VARIANT_ESP32P4: {
49: adc_channel_t.ADC_CHANNEL_0,
50: adc_channel_t.ADC_CHANNEL_1,
51: adc_channel_t.ADC_CHANNEL_2,
52: adc_channel_t.ADC_CHANNEL_3,
53: adc_channel_t.ADC_CHANNEL_4,
54: adc_channel_t.ADC_CHANNEL_5,
},
VARIANT_ESP32C2: {},
VARIANT_ESP32C6: {},
VARIANT_ESP32H2: {},
}
@@ -205,4 +260,9 @@ def validate_adc_pin(value):
{CONF_ANALOG: True, CONF_INPUT: True}, internal=True
)(value)
if CORE.is_nrf52:
return pins.gpio_pin_schema(
{CONF_ANALOG: True, CONF_INPUT: True}, internal=True
)(value)
raise NotImplementedError
-332
View File
@@ -1,332 +0,0 @@
#include "adc_sensor.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
#ifdef USE_ESP8266
#ifdef USE_ADC_SENSOR_VCC
#include <Esp.h>
ADC_MODE(ADC_VCC)
#else
#include <Arduino.h>
#endif
#endif
#ifdef USE_RP2040
#ifdef CYW43_USES_VSYS_PIN
#include "pico/cyw43_arch.h"
#endif
#include <hardware/adc.h>
#endif
namespace esphome {
namespace adc {
static const char *const TAG = "adc";
// 13-bit for S2, 12-bit for all other ESP32 variants
#ifdef USE_ESP32
static const adc_bits_width_t ADC_WIDTH_MAX_SOC_BITS = static_cast<adc_bits_width_t>(ADC_WIDTH_MAX - 1);
#ifndef SOC_ADC_RTC_MAX_BITWIDTH
#if USE_ESP32_VARIANT_ESP32S2
static const int32_t SOC_ADC_RTC_MAX_BITWIDTH = 13;
#else
static const int32_t SOC_ADC_RTC_MAX_BITWIDTH = 12;
#endif
#endif
static const int ADC_MAX = (1 << SOC_ADC_RTC_MAX_BITWIDTH) - 1; // 4095 (12 bit) or 8191 (13 bit)
static const int ADC_HALF = (1 << SOC_ADC_RTC_MAX_BITWIDTH) >> 1; // 2048 (12 bit) or 4096 (13 bit)
#endif
#ifdef USE_RP2040
extern "C"
#endif
void
ADCSensor::setup() {
ESP_LOGCONFIG(TAG, "Setting up ADC '%s'...", this->get_name().c_str());
#if !defined(USE_ADC_SENSOR_VCC) && !defined(USE_RP2040)
this->pin_->setup();
#endif
#ifdef USE_ESP32
if (this->channel1_ != ADC1_CHANNEL_MAX) {
adc1_config_width(ADC_WIDTH_MAX_SOC_BITS);
if (!this->autorange_) {
adc1_config_channel_atten(this->channel1_, this->attenuation_);
}
} else if (this->channel2_ != ADC2_CHANNEL_MAX) {
if (!this->autorange_) {
adc2_config_channel_atten(this->channel2_, this->attenuation_);
}
}
// load characteristics for each attenuation
for (int32_t i = 0; i <= ADC_ATTEN_DB_12_COMPAT; i++) {
auto adc_unit = this->channel1_ != ADC1_CHANNEL_MAX ? ADC_UNIT_1 : ADC_UNIT_2;
auto cal_value = esp_adc_cal_characterize(adc_unit, (adc_atten_t) i, ADC_WIDTH_MAX_SOC_BITS,
1100, // default vref
&this->cal_characteristics_[i]);
switch (cal_value) {
case ESP_ADC_CAL_VAL_EFUSE_VREF:
ESP_LOGV(TAG, "Using eFuse Vref for calibration");
break;
case ESP_ADC_CAL_VAL_EFUSE_TP:
ESP_LOGV(TAG, "Using two-point eFuse Vref for calibration");
break;
case ESP_ADC_CAL_VAL_DEFAULT_VREF:
default:
break;
}
}
#endif // USE_ESP32
#ifdef USE_RP2040
static bool initialized = false;
if (!initialized) {
adc_init();
initialized = true;
}
#endif
ESP_LOGCONFIG(TAG, "ADC '%s' setup finished!", this->get_name().c_str());
}
void ADCSensor::dump_config() {
LOG_SENSOR("", "ADC Sensor", this);
#if defined(USE_ESP8266) || defined(USE_LIBRETINY)
#ifdef USE_ADC_SENSOR_VCC
ESP_LOGCONFIG(TAG, " Pin: VCC");
#else
LOG_PIN(" Pin: ", this->pin_);
#endif
#endif // USE_ESP8266 || USE_LIBRETINY
#ifdef USE_ESP32
LOG_PIN(" Pin: ", this->pin_);
if (this->autorange_) {
ESP_LOGCONFIG(TAG, " Attenuation: auto");
} else {
switch (this->attenuation_) {
case ADC_ATTEN_DB_0:
ESP_LOGCONFIG(TAG, " Attenuation: 0db");
break;
case ADC_ATTEN_DB_2_5:
ESP_LOGCONFIG(TAG, " Attenuation: 2.5db");
break;
case ADC_ATTEN_DB_6:
ESP_LOGCONFIG(TAG, " Attenuation: 6db");
break;
case ADC_ATTEN_DB_12_COMPAT:
ESP_LOGCONFIG(TAG, " Attenuation: 12db");
break;
default: // This is to satisfy the unused ADC_ATTEN_MAX
break;
}
}
#endif // USE_ESP32
#ifdef USE_RP2040
if (this->is_temperature_) {
ESP_LOGCONFIG(TAG, " Pin: Temperature");
} else {
#ifdef USE_ADC_SENSOR_VCC
ESP_LOGCONFIG(TAG, " Pin: VCC");
#else
LOG_PIN(" Pin: ", this->pin_);
#endif // USE_ADC_SENSOR_VCC
}
#endif // USE_RP2040
ESP_LOGCONFIG(TAG, " Samples: %i", this->sample_count_);
LOG_UPDATE_INTERVAL(this);
}
float ADCSensor::get_setup_priority() const { return setup_priority::DATA; }
void ADCSensor::update() {
float value_v = this->sample();
ESP_LOGV(TAG, "'%s': Got voltage=%.4fV", this->get_name().c_str(), value_v);
this->publish_state(value_v);
}
void ADCSensor::set_sample_count(uint8_t sample_count) {
if (sample_count != 0) {
this->sample_count_ = sample_count;
}
}
#ifdef USE_ESP8266
float ADCSensor::sample() {
uint32_t raw = 0;
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
#ifdef USE_ADC_SENSOR_VCC
raw += ESP.getVcc(); // NOLINT(readability-static-accessed-through-instance)
#else
raw += analogRead(this->pin_->get_pin()); // NOLINT
#endif
}
raw = (raw + (this->sample_count_ >> 1)) / this->sample_count_; // NOLINT(clang-analyzer-core.DivideZero)
if (this->output_raw_) {
return raw;
}
return raw / 1024.0f;
}
#endif
#ifdef USE_ESP32
float ADCSensor::sample() {
if (!this->autorange_) {
uint32_t sum = 0;
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
int raw = -1;
if (this->channel1_ != ADC1_CHANNEL_MAX) {
raw = adc1_get_raw(this->channel1_);
} else if (this->channel2_ != ADC2_CHANNEL_MAX) {
adc2_get_raw(this->channel2_, ADC_WIDTH_MAX_SOC_BITS, &raw);
}
if (raw == -1) {
return NAN;
}
sum += raw;
}
sum = (sum + (this->sample_count_ >> 1)) / this->sample_count_; // NOLINT(clang-analyzer-core.DivideZero)
if (this->output_raw_) {
return sum;
}
uint32_t mv = esp_adc_cal_raw_to_voltage(sum, &this->cal_characteristics_[(int32_t) this->attenuation_]);
return mv / 1000.0f;
}
int raw12 = ADC_MAX, raw6 = ADC_MAX, raw2 = ADC_MAX, raw0 = ADC_MAX;
if (this->channel1_ != ADC1_CHANNEL_MAX) {
adc1_config_channel_atten(this->channel1_, ADC_ATTEN_DB_12_COMPAT);
raw12 = adc1_get_raw(this->channel1_);
if (raw12 < ADC_MAX) {
adc1_config_channel_atten(this->channel1_, ADC_ATTEN_DB_6);
raw6 = adc1_get_raw(this->channel1_);
if (raw6 < ADC_MAX) {
adc1_config_channel_atten(this->channel1_, ADC_ATTEN_DB_2_5);
raw2 = adc1_get_raw(this->channel1_);
if (raw2 < ADC_MAX) {
adc1_config_channel_atten(this->channel1_, ADC_ATTEN_DB_0);
raw0 = adc1_get_raw(this->channel1_);
}
}
}
} else if (this->channel2_ != ADC2_CHANNEL_MAX) {
adc2_config_channel_atten(this->channel2_, ADC_ATTEN_DB_12_COMPAT);
adc2_get_raw(this->channel2_, ADC_WIDTH_MAX_SOC_BITS, &raw12);
if (raw12 < ADC_MAX) {
adc2_config_channel_atten(this->channel2_, ADC_ATTEN_DB_6);
adc2_get_raw(this->channel2_, ADC_WIDTH_MAX_SOC_BITS, &raw6);
if (raw6 < ADC_MAX) {
adc2_config_channel_atten(this->channel2_, ADC_ATTEN_DB_2_5);
adc2_get_raw(this->channel2_, ADC_WIDTH_MAX_SOC_BITS, &raw2);
if (raw2 < ADC_MAX) {
adc2_config_channel_atten(this->channel2_, ADC_ATTEN_DB_0);
adc2_get_raw(this->channel2_, ADC_WIDTH_MAX_SOC_BITS, &raw0);
}
}
}
}
if (raw0 == -1 || raw2 == -1 || raw6 == -1 || raw12 == -1) {
return NAN;
}
uint32_t mv12 = esp_adc_cal_raw_to_voltage(raw12, &this->cal_characteristics_[(int32_t) ADC_ATTEN_DB_12_COMPAT]);
uint32_t mv6 = esp_adc_cal_raw_to_voltage(raw6, &this->cal_characteristics_[(int32_t) ADC_ATTEN_DB_6]);
uint32_t mv2 = esp_adc_cal_raw_to_voltage(raw2, &this->cal_characteristics_[(int32_t) ADC_ATTEN_DB_2_5]);
uint32_t mv0 = esp_adc_cal_raw_to_voltage(raw0, &this->cal_characteristics_[(int32_t) ADC_ATTEN_DB_0]);
// Contribution of each value, in range 0-2048 (12 bit ADC) or 0-4096 (13 bit ADC)
uint32_t c12 = std::min(raw12, ADC_HALF);
uint32_t c6 = ADC_HALF - std::abs(raw6 - ADC_HALF);
uint32_t c2 = ADC_HALF - std::abs(raw2 - ADC_HALF);
uint32_t c0 = std::min(ADC_MAX - raw0, ADC_HALF);
// max theoretical csum value is 4096*4 = 16384
uint32_t csum = c12 + c6 + c2 + c0;
// each mv is max 3900; so max value is 3900*4096*4, fits in unsigned32
uint32_t mv_scaled = (mv12 * c12) + (mv6 * c6) + (mv2 * c2) + (mv0 * c0);
return mv_scaled / (float) (csum * 1000U);
}
#endif // USE_ESP32
#ifdef USE_RP2040
float ADCSensor::sample() {
if (this->is_temperature_) {
adc_set_temp_sensor_enabled(true);
delay(1);
adc_select_input(4);
uint32_t raw = 0;
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw += adc_read();
}
raw = (raw + (this->sample_count_ >> 1)) / this->sample_count_; // NOLINT(clang-analyzer-core.DivideZero)
adc_set_temp_sensor_enabled(false);
if (this->output_raw_) {
return raw;
}
return raw * 3.3f / 4096.0f;
} else {
uint8_t pin = this->pin_->get_pin();
#ifdef CYW43_USES_VSYS_PIN
if (pin == PICO_VSYS_PIN) {
// Measuring VSYS on Raspberry Pico W needs to be wrapped with
// `cyw43_thread_enter()`/`cyw43_thread_exit()` as discussed in
// https://github.com/raspberrypi/pico-sdk/issues/1222, since Wifi chip and
// VSYS ADC both share GPIO29
cyw43_thread_enter();
}
#endif // CYW43_USES_VSYS_PIN
adc_gpio_init(pin);
adc_select_input(pin - 26);
uint32_t raw = 0;
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw += adc_read();
}
raw = (raw + (this->sample_count_ >> 1)) / this->sample_count_; // NOLINT(clang-analyzer-core.DivideZero)
#ifdef CYW43_USES_VSYS_PIN
if (pin == PICO_VSYS_PIN) {
cyw43_thread_exit();
}
#endif // CYW43_USES_VSYS_PIN
if (this->output_raw_) {
return raw;
}
float coeff = pin == PICO_VSYS_PIN ? 3.0 : 1.0;
return raw * 3.3f / 4096.0f * coeff;
}
}
#endif
#ifdef USE_LIBRETINY
float ADCSensor::sample() {
uint32_t raw = 0;
if (this->output_raw_) {
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw += analogRead(this->pin_->get_pin()); // NOLINT
}
raw = (raw + (this->sample_count_ >> 1)) / this->sample_count_; // NOLINT(clang-analyzer-core.DivideZero)
return raw;
}
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw += analogReadVoltage(this->pin_->get_pin()); // NOLINT
}
raw = (raw + (this->sample_count_ >> 1)) / this->sample_count_; // NOLINT(clang-analyzer-core.DivideZero)
return raw / 1000.0f;
}
#endif // USE_LIBRETINY
#ifdef USE_ESP8266
std::string ADCSensor::unique_id() { return get_mac_address() + "-adc"; }
#endif
} // namespace adc
} // namespace esphome
+117 -38
View File
@@ -7,8 +7,14 @@
#include "esphome/core/hal.h"
#ifdef USE_ESP32
#include <esp_adc_cal.h>
#include "driver/adc.h"
#include "esp_adc/adc_cali.h"
#include "esp_adc/adc_cali_scheme.h"
#include "esp_adc/adc_oneshot.h"
#include "hal/adc_types.h" // This defines ADC_CHANNEL_MAX
#endif // USE_ESP32
#ifdef USE_ZEPHYR
#include <zephyr/drivers/adc.h>
#endif
namespace esphome {
@@ -16,8 +22,7 @@ namespace adc {
#ifdef USE_ESP32
// clang-format off
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 4, 7)) || \
(ESP_IDF_VERSION_MAJOR == 5 && \
#if (ESP_IDF_VERSION_MAJOR == 5 && \
((ESP_IDF_VERSION_MINOR == 0 && ESP_IDF_VERSION_PATCH >= 5) || \
(ESP_IDF_VERSION_MINOR == 1 && ESP_IDF_VERSION_PATCH >= 3) || \
(ESP_IDF_VERSION_MINOR >= 2)) \
@@ -29,61 +34,135 @@ static const adc_atten_t ADC_ATTEN_DB_12_COMPAT = ADC_ATTEN_DB_11;
#endif
#endif // USE_ESP32
enum class SamplingMode : uint8_t {
AVG = 0,
MIN = 1,
MAX = 2,
};
const LogString *sampling_mode_to_str(SamplingMode mode);
template<typename T> class Aggregator {
public:
Aggregator(SamplingMode mode);
void add_sample(T value);
T aggregate();
protected:
T aggr_{0};
uint8_t samples_{0};
SamplingMode mode_{SamplingMode::AVG};
};
class ADCSensor : public sensor::Sensor, public PollingComponent, public voltage_sampler::VoltageSampler {
public:
#ifdef USE_ESP32
/// Set the attenuation for this pin. Only available on the ESP32.
void set_attenuation(adc_atten_t attenuation) { this->attenuation_ = attenuation; }
void set_channel1(adc1_channel_t channel) {
this->channel1_ = channel;
this->channel2_ = ADC2_CHANNEL_MAX;
}
void set_channel2(adc2_channel_t channel) {
this->channel2_ = channel;
this->channel1_ = ADC1_CHANNEL_MAX;
}
void set_autorange(bool autorange) { this->autorange_ = autorange; }
#endif
/// Update ADC values
/// Update the sensor's state by reading the current ADC value.
/// This method is called periodically based on the update interval.
void update() override;
/// Setup ADC
/// Set up the ADC sensor by initializing hardware and calibration parameters.
/// This method is called once during device initialization.
void setup() override;
/// Output the configuration details of the ADC sensor for debugging purposes.
/// This method is called during the ESPHome setup process to log the configuration.
void dump_config() override;
/// `HARDWARE_LATE` setup priority
/// Return the setup priority for this component.
/// Components with higher priority are initialized earlier during setup.
/// @return A float representing the setup priority.
float get_setup_priority() const override;
#ifdef USE_ZEPHYR
/// Set the ADC channel to be used by the ADC sensor.
/// @param channel Pointer to an adc_dt_spec structure representing the ADC channel.
void set_adc_channel(const adc_dt_spec *channel) { this->channel_ = channel; }
#endif
/// Set the GPIO pin to be used by the ADC sensor.
/// @param pin Pointer to an InternalGPIOPin representing the ADC input pin.
void set_pin(InternalGPIOPin *pin) { this->pin_ = pin; }
/// Enable or disable the output of raw ADC values (unprocessed data).
/// @param output_raw Boolean indicating whether to output raw ADC values (true) or processed values (false).
void set_output_raw(bool output_raw) { this->output_raw_ = output_raw; }
/// Set the number of samples to be taken for ADC readings to improve accuracy.
/// A higher sample count reduces noise but increases the reading time.
/// @param sample_count The number of samples (e.g., 1, 4, 8).
void set_sample_count(uint8_t sample_count);
/// Set the sampling mode for how multiple ADC samples are combined into a single measurement.
///
/// When multiple samples are taken (controlled by set_sample_count), they can be combined
/// in one of three ways:
/// - SamplingMode::AVG: Compute the average (default)
/// - SamplingMode::MIN: Use the lowest sample value
/// - SamplingMode::MAX: Use the highest sample value
/// @param sampling_mode The desired sampling mode to use for aggregating ADC samples.
void set_sampling_mode(SamplingMode sampling_mode);
/// Perform a single ADC sampling operation and return the measured value.
/// This function handles raw readings, calibration, and averaging as needed.
/// @return The sampled value as a float.
float sample() override;
#ifdef USE_ESP8266
std::string unique_id() override;
#endif
#ifdef USE_ESP32
/// Set the ADC attenuation level to adjust the input voltage range.
/// This determines how the ADC interprets input voltages, allowing for greater precision
/// or the ability to measure higher voltages depending on the chosen attenuation level.
/// @param attenuation The desired ADC attenuation level (e.g., ADC_ATTEN_DB_0, ADC_ATTEN_DB_11).
void set_attenuation(adc_atten_t attenuation) { this->attenuation_ = attenuation; }
/// Configure the ADC to use a specific channel on a specific ADC unit.
/// This sets the channel for single-shot or continuous ADC measurements.
/// @param unit The ADC unit to use (ADC_UNIT_1 or ADC_UNIT_2).
/// @param channel The ADC channel to configure, such as ADC_CHANNEL_0, ADC_CHANNEL_3, etc.
void set_channel(adc_unit_t unit, adc_channel_t channel) {
this->adc_unit_ = unit;
this->channel_ = channel;
}
/// Set whether autoranging should be enabled for the ADC.
/// Autoranging automatically adjusts the attenuation level to handle a wide range of input voltages.
/// @param autorange Boolean indicating whether to enable autoranging.
void set_autorange(bool autorange) { this->autorange_ = autorange; }
#endif // USE_ESP32
#ifdef USE_RP2040
void set_is_temperature() { this->is_temperature_ = true; }
#endif
#endif // USE_RP2040
protected:
InternalGPIOPin *pin_;
bool output_raw_{false};
uint8_t sample_count_{1};
bool output_raw_{false};
InternalGPIOPin *pin_;
SamplingMode sampling_mode_{SamplingMode::AVG};
#ifdef USE_ESP32
float sample_autorange_();
float sample_fixed_attenuation_();
bool autorange_{false};
adc_oneshot_unit_handle_t adc_handle_{nullptr};
adc_cali_handle_t calibration_handle_{nullptr};
adc_atten_t attenuation_{ADC_ATTEN_DB_0};
adc_channel_t channel_{};
adc_unit_t adc_unit_{};
struct SetupFlags {
uint8_t init_complete : 1;
uint8_t config_complete : 1;
uint8_t handle_init_complete : 1;
uint8_t calibration_complete : 1;
uint8_t reserved : 4;
} setup_flags_{};
static adc_oneshot_unit_handle_t shared_adc_handles[2];
#endif // USE_ESP32
#ifdef USE_RP2040
bool is_temperature_{false};
#endif
#endif // USE_RP2040
#ifdef USE_ESP32
adc_atten_t attenuation_{ADC_ATTEN_DB_0};
adc1_channel_t channel1_{ADC1_CHANNEL_MAX};
adc2_channel_t channel2_{ADC2_CHANNEL_MAX};
bool autorange_{false};
#if ESP_IDF_VERSION_MAJOR >= 5
esp_adc_cal_characteristics_t cal_characteristics_[SOC_ADC_ATTEN_NUM] = {};
#else
esp_adc_cal_characteristics_t cal_characteristics_[ADC_ATTEN_MAX] = {};
#endif
#ifdef USE_ZEPHYR
const struct adc_dt_spec *channel_ = nullptr;
#endif
};
@@ -0,0 +1,85 @@
#include "adc_sensor.h"
#include "esphome/core/log.h"
namespace esphome {
namespace adc {
static const char *const TAG = "adc.common";
const LogString *sampling_mode_to_str(SamplingMode mode) {
switch (mode) {
case SamplingMode::AVG:
return LOG_STR("average");
case SamplingMode::MIN:
return LOG_STR("minimum");
case SamplingMode::MAX:
return LOG_STR("maximum");
}
return LOG_STR("unknown");
}
template<typename T> Aggregator<T>::Aggregator(SamplingMode mode) {
this->mode_ = mode;
// set to max uint if mode is "min"
if (mode == SamplingMode::MIN) {
this->aggr_ = std::numeric_limits<T>::max();
}
}
template<typename T> void Aggregator<T>::add_sample(T value) {
this->samples_ += 1;
switch (this->mode_) {
case SamplingMode::AVG:
this->aggr_ += value;
break;
case SamplingMode::MIN:
if (value < this->aggr_) {
this->aggr_ = value;
}
break;
case SamplingMode::MAX:
if (value > this->aggr_) {
this->aggr_ = value;
}
}
}
template<typename T> T Aggregator<T>::aggregate() {
if (this->mode_ == SamplingMode::AVG) {
if (this->samples_ == 0) {
return this->aggr_;
}
return (this->aggr_ + (this->samples_ >> 1)) / this->samples_; // NOLINT(clang-analyzer-core.DivideZero)
}
return this->aggr_;
}
#ifdef USE_ZEPHYR
template class Aggregator<int32_t>;
#else
template class Aggregator<uint32_t>;
#endif
void ADCSensor::update() {
float value_v = this->sample();
ESP_LOGV(TAG, "'%s': Voltage=%.4fV", this->get_name().c_str(), value_v);
this->publish_state(value_v);
}
void ADCSensor::set_sample_count(uint8_t sample_count) {
if (sample_count != 0) {
this->sample_count_ = sample_count;
}
}
void ADCSensor::set_sampling_mode(SamplingMode sampling_mode) { this->sampling_mode_ = sampling_mode; }
float ADCSensor::get_setup_priority() const { return setup_priority::DATA; }
} // namespace adc
} // namespace esphome
+367
View File
@@ -0,0 +1,367 @@
#ifdef USE_ESP32
#include "adc_sensor.h"
#include "esphome/core/log.h"
namespace esphome {
namespace adc {
static const char *const TAG = "adc.esp32";
adc_oneshot_unit_handle_t ADCSensor::shared_adc_handles[2] = {nullptr, nullptr};
const LogString *attenuation_to_str(adc_atten_t attenuation) {
switch (attenuation) {
case ADC_ATTEN_DB_0:
return LOG_STR("0 dB");
case ADC_ATTEN_DB_2_5:
return LOG_STR("2.5 dB");
case ADC_ATTEN_DB_6:
return LOG_STR("6 dB");
case ADC_ATTEN_DB_12_COMPAT:
return LOG_STR("12 dB");
default:
return LOG_STR("Unknown Attenuation");
}
}
const LogString *adc_unit_to_str(adc_unit_t unit) {
switch (unit) {
case ADC_UNIT_1:
return LOG_STR("ADC1");
case ADC_UNIT_2:
return LOG_STR("ADC2");
default:
return LOG_STR("Unknown ADC Unit");
}
}
void ADCSensor::setup() {
// Check if another sensor already initialized this ADC unit
if (ADCSensor::shared_adc_handles[this->adc_unit_] == nullptr) {
adc_oneshot_unit_init_cfg_t init_config = {}; // Zero initialize
init_config.unit_id = this->adc_unit_;
init_config.ulp_mode = ADC_ULP_MODE_DISABLE;
#if USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 || USE_ESP32_VARIANT_ESP32H2
init_config.clk_src = ADC_DIGI_CLK_SRC_DEFAULT;
#endif // USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 ||
// USE_ESP32_VARIANT_ESP32H2
esp_err_t err = adc_oneshot_new_unit(&init_config, &ADCSensor::shared_adc_handles[this->adc_unit_]);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error initializing %s: %d", LOG_STR_ARG(adc_unit_to_str(this->adc_unit_)), err);
this->mark_failed();
return;
}
}
this->adc_handle_ = ADCSensor::shared_adc_handles[this->adc_unit_];
this->setup_flags_.handle_init_complete = true;
adc_oneshot_chan_cfg_t config = {
.atten = this->attenuation_,
.bitwidth = ADC_BITWIDTH_DEFAULT,
};
esp_err_t err = adc_oneshot_config_channel(this->adc_handle_, this->channel_, &config);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Error configuring channel: %d", err);
this->mark_failed();
return;
}
this->setup_flags_.config_complete = true;
// Initialize ADC calibration
if (this->calibration_handle_ == nullptr) {
adc_cali_handle_t handle = nullptr;
#if USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 || \
USE_ESP32_VARIANT_ESP32S3 || USE_ESP32_VARIANT_ESP32H2 || USE_ESP32_VARIANT_ESP32P4
// RISC-V variants and S3 use curve fitting calibration
adc_cali_curve_fitting_config_t cali_config = {}; // Zero initialize first
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0)
cali_config.chan = this->channel_;
#endif // ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0)
cali_config.unit_id = this->adc_unit_;
cali_config.atten = this->attenuation_;
cali_config.bitwidth = ADC_BITWIDTH_DEFAULT;
err = adc_cali_create_scheme_curve_fitting(&cali_config, &handle);
if (err == ESP_OK) {
this->calibration_handle_ = handle;
this->setup_flags_.calibration_complete = true;
ESP_LOGV(TAG, "Using curve fitting calibration");
} else {
ESP_LOGW(TAG, "Curve fitting calibration failed with error %d, will use uncalibrated readings", err);
this->setup_flags_.calibration_complete = false;
}
#else // Other ESP32 variants use line fitting calibration
adc_cali_line_fitting_config_t cali_config = {
.unit_id = this->adc_unit_,
.atten = this->attenuation_,
.bitwidth = ADC_BITWIDTH_DEFAULT,
#if !defined(USE_ESP32_VARIANT_ESP32S2)
.default_vref = 1100, // Default reference voltage in mV
#endif // !defined(USE_ESP32_VARIANT_ESP32S2)
};
err = adc_cali_create_scheme_line_fitting(&cali_config, &handle);
if (err == ESP_OK) {
this->calibration_handle_ = handle;
this->setup_flags_.calibration_complete = true;
ESP_LOGV(TAG, "Using line fitting calibration");
} else {
ESP_LOGW(TAG, "Line fitting calibration failed with error %d, will use uncalibrated readings", err);
this->setup_flags_.calibration_complete = false;
}
#endif // USE_ESP32_VARIANT_ESP32C3 || ESP32C5 || ESP32C6 || ESP32S3 || ESP32H2
}
this->setup_flags_.init_complete = true;
}
void ADCSensor::dump_config() {
LOG_SENSOR("", "ADC Sensor", this);
LOG_PIN(" Pin: ", this->pin_);
ESP_LOGCONFIG(TAG,
" Channel: %d\n"
" Unit: %s\n"
" Attenuation: %s\n"
" Samples: %i\n"
" Sampling mode: %s",
this->channel_, LOG_STR_ARG(adc_unit_to_str(this->adc_unit_)),
this->autorange_ ? "Auto" : LOG_STR_ARG(attenuation_to_str(this->attenuation_)), this->sample_count_,
LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
ESP_LOGCONFIG(
TAG,
" Setup Status:\n"
" Handle Init: %s\n"
" Config: %s\n"
" Calibration: %s\n"
" Overall Init: %s",
this->setup_flags_.handle_init_complete ? "OK" : "FAILED", this->setup_flags_.config_complete ? "OK" : "FAILED",
this->setup_flags_.calibration_complete ? "OK" : "FAILED", this->setup_flags_.init_complete ? "OK" : "FAILED");
LOG_UPDATE_INTERVAL(this);
}
float ADCSensor::sample() {
if (this->autorange_) {
return this->sample_autorange_();
} else {
return this->sample_fixed_attenuation_();
}
}
float ADCSensor::sample_fixed_attenuation_() {
auto aggr = Aggregator<uint32_t>(this->sampling_mode_);
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
int raw;
esp_err_t err = adc_oneshot_read(this->adc_handle_, this->channel_, &raw);
if (err != ESP_OK) {
ESP_LOGW(TAG, "ADC read failed with error %d", err);
continue;
}
if (raw == -1) {
ESP_LOGW(TAG, "Invalid ADC reading");
continue;
}
aggr.add_sample(raw);
}
uint32_t final_value = aggr.aggregate();
if (this->output_raw_) {
return final_value;
}
if (this->calibration_handle_ != nullptr) {
int voltage_mv;
esp_err_t err = adc_cali_raw_to_voltage(this->calibration_handle_, final_value, &voltage_mv);
if (err == ESP_OK) {
return voltage_mv / 1000.0f;
} else {
ESP_LOGW(TAG, "ADC calibration conversion failed with error %d, disabling calibration", err);
if (this->calibration_handle_ != nullptr) {
#if USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 || \
USE_ESP32_VARIANT_ESP32S3 || USE_ESP32_VARIANT_ESP32H2 || USE_ESP32_VARIANT_ESP32P4
adc_cali_delete_scheme_curve_fitting(this->calibration_handle_);
#else // Other ESP32 variants use line fitting calibration
adc_cali_delete_scheme_line_fitting(this->calibration_handle_);
#endif // USE_ESP32_VARIANT_ESP32C3 || ESP32C5 || ESP32C6 || ESP32S3 || ESP32H2
this->calibration_handle_ = nullptr;
}
}
}
return final_value * 3.3f / 4095.0f;
}
float ADCSensor::sample_autorange_() {
// Auto-range mode
auto read_atten = [this](adc_atten_t atten) -> std::pair<int, float> {
// First reconfigure the attenuation for this reading
adc_oneshot_chan_cfg_t config = {
.atten = atten,
.bitwidth = ADC_BITWIDTH_DEFAULT,
};
esp_err_t err = adc_oneshot_config_channel(this->adc_handle_, this->channel_, &config);
if (err != ESP_OK) {
ESP_LOGW(TAG, "Error configuring ADC channel for autorange: %d", err);
return {-1, 0.0f};
}
// Need to recalibrate for the new attenuation
if (this->calibration_handle_ != nullptr) {
// Delete old calibration handle
#if USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 || \
USE_ESP32_VARIANT_ESP32S3 || USE_ESP32_VARIANT_ESP32H2 || USE_ESP32_VARIANT_ESP32P4
adc_cali_delete_scheme_curve_fitting(this->calibration_handle_);
#else
adc_cali_delete_scheme_line_fitting(this->calibration_handle_);
#endif
this->calibration_handle_ = nullptr;
}
// Create new calibration handle for this attenuation
adc_cali_handle_t handle = nullptr;
#if USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 || \
USE_ESP32_VARIANT_ESP32S3 || USE_ESP32_VARIANT_ESP32H2 || USE_ESP32_VARIANT_ESP32P4
adc_cali_curve_fitting_config_t cali_config = {};
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0)
cali_config.chan = this->channel_;
#endif
cali_config.unit_id = this->adc_unit_;
cali_config.atten = atten;
cali_config.bitwidth = ADC_BITWIDTH_DEFAULT;
err = adc_cali_create_scheme_curve_fitting(&cali_config, &handle);
ESP_LOGVV(TAG, "Autorange atten=%d: Calibration handle creation %s (err=%d)", atten,
(err == ESP_OK) ? "SUCCESS" : "FAILED", err);
#else
adc_cali_line_fitting_config_t cali_config = {
.unit_id = this->adc_unit_,
.atten = atten,
.bitwidth = ADC_BITWIDTH_DEFAULT,
#if !defined(USE_ESP32_VARIANT_ESP32S2)
.default_vref = 1100,
#endif
};
err = adc_cali_create_scheme_line_fitting(&cali_config, &handle);
ESP_LOGVV(TAG, "Autorange atten=%d: Calibration handle creation %s (err=%d)", atten,
(err == ESP_OK) ? "SUCCESS" : "FAILED", err);
#endif
int raw;
err = adc_oneshot_read(this->adc_handle_, this->channel_, &raw);
ESP_LOGVV(TAG, "Autorange atten=%d: Raw ADC read %s, value=%d (err=%d)", atten,
(err == ESP_OK) ? "SUCCESS" : "FAILED", raw, err);
if (err != ESP_OK) {
ESP_LOGW(TAG, "ADC read failed in autorange with error %d", err);
if (handle != nullptr) {
#if USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 || \
USE_ESP32_VARIANT_ESP32S3 || USE_ESP32_VARIANT_ESP32H2 || USE_ESP32_VARIANT_ESP32P4
adc_cali_delete_scheme_curve_fitting(handle);
#else
adc_cali_delete_scheme_line_fitting(handle);
#endif
}
return {-1, 0.0f};
}
float voltage = 0.0f;
if (handle != nullptr) {
int voltage_mv;
err = adc_cali_raw_to_voltage(handle, raw, &voltage_mv);
if (err == ESP_OK) {
voltage = voltage_mv / 1000.0f;
ESP_LOGVV(TAG, "Autorange atten=%d: CALIBRATED - raw=%d -> %dmV -> %.6fV", atten, raw, voltage_mv, voltage);
} else {
voltage = raw * 3.3f / 4095.0f;
ESP_LOGVV(TAG, "Autorange atten=%d: UNCALIBRATED FALLBACK - raw=%d -> %.6fV (3.3V ref)", atten, raw, voltage);
}
// Clean up calibration handle
#if USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32C5 || USE_ESP32_VARIANT_ESP32C6 || \
USE_ESP32_VARIANT_ESP32S3 || USE_ESP32_VARIANT_ESP32H2 || USE_ESP32_VARIANT_ESP32P4
adc_cali_delete_scheme_curve_fitting(handle);
#else
adc_cali_delete_scheme_line_fitting(handle);
#endif
} else {
voltage = raw * 3.3f / 4095.0f;
ESP_LOGVV(TAG, "Autorange atten=%d: NO CALIBRATION - raw=%d -> %.6fV (3.3V ref)", atten, raw, voltage);
}
return {raw, voltage};
};
auto [raw12, mv12] = read_atten(ADC_ATTEN_DB_12);
if (raw12 == -1) {
ESP_LOGE(TAG, "Failed to read ADC in autorange mode");
return NAN;
}
int raw6 = 4095, raw2 = 4095, raw0 = 4095;
float mv6 = 0, mv2 = 0, mv0 = 0;
if (raw12 < 4095) {
auto [raw6_val, mv6_val] = read_atten(ADC_ATTEN_DB_6);
raw6 = raw6_val;
mv6 = mv6_val;
if (raw6 < 4095 && raw6 != -1) {
auto [raw2_val, mv2_val] = read_atten(ADC_ATTEN_DB_2_5);
raw2 = raw2_val;
mv2 = mv2_val;
if (raw2 < 4095 && raw2 != -1) {
auto [raw0_val, mv0_val] = read_atten(ADC_ATTEN_DB_0);
raw0 = raw0_val;
mv0 = mv0_val;
}
}
}
if (raw0 == -1 || raw2 == -1 || raw6 == -1 || raw12 == -1) {
return NAN;
}
const int adc_half = 2048;
const uint32_t c12 = std::min(raw12, adc_half);
const int32_t c6_signed = adc_half - std::abs(raw6 - adc_half);
const uint32_t c6 = (c6_signed > 0) ? c6_signed : 0; // Clamp to prevent underflow
const int32_t c2_signed = adc_half - std::abs(raw2 - adc_half);
const uint32_t c2 = (c2_signed > 0) ? c2_signed : 0; // Clamp to prevent underflow
const uint32_t c0 = std::min(4095 - raw0, adc_half);
const uint32_t csum = c12 + c6 + c2 + c0;
ESP_LOGVV(TAG, "Autorange summary:");
ESP_LOGVV(TAG, " Raw readings: 12db=%d, 6db=%d, 2.5db=%d, 0db=%d", raw12, raw6, raw2, raw0);
ESP_LOGVV(TAG, " Voltages: 12db=%.6f, 6db=%.6f, 2.5db=%.6f, 0db=%.6f", mv12, mv6, mv2, mv0);
ESP_LOGVV(TAG, " Coefficients: c12=%u, c6=%u, c2=%u, c0=%u, sum=%u", c12, c6, c2, c0, csum);
if (csum == 0) {
ESP_LOGE(TAG, "Invalid weight sum in autorange calculation");
return NAN;
}
const float final_result = (mv12 * c12 + mv6 * c6 + mv2 * c2 + mv0 * c0) / csum;
ESP_LOGV(TAG, "Autorange final: (%.6f*%u + %.6f*%u + %.6f*%u + %.6f*%u)/%u = %.6fV", mv12, c12, mv6, c6, mv2, c2, mv0,
c0, csum, final_result);
return final_result;
}
} // namespace adc
} // namespace esphome
#endif // USE_ESP32
@@ -0,0 +1,61 @@
#ifdef USE_ESP8266
#include "adc_sensor.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
#ifdef USE_ADC_SENSOR_VCC
#include <Esp.h>
ADC_MODE(ADC_VCC)
#else
#include <Arduino.h>
#endif // USE_ADC_SENSOR_VCC
namespace esphome {
namespace adc {
static const char *const TAG = "adc.esp8266";
void ADCSensor::setup() {
#ifndef USE_ADC_SENSOR_VCC
this->pin_->setup();
#endif
}
void ADCSensor::dump_config() {
LOG_SENSOR("", "ADC Sensor", this);
#ifdef USE_ADC_SENSOR_VCC
ESP_LOGCONFIG(TAG, " Pin: VCC");
#else
LOG_PIN(" Pin: ", this->pin_);
#endif // USE_ADC_SENSOR_VCC
ESP_LOGCONFIG(TAG,
" Samples: %i\n"
" Sampling mode: %s",
this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
LOG_UPDATE_INTERVAL(this);
}
float ADCSensor::sample() {
auto aggr = Aggregator<uint32_t>(this->sampling_mode_);
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
uint32_t raw = 0;
#ifdef USE_ADC_SENSOR_VCC
raw = ESP.getVcc(); // NOLINT(readability-static-accessed-through-instance)
#else
raw = analogRead(this->pin_->get_pin()); // NOLINT
#endif // USE_ADC_SENSOR_VCC
aggr.add_sample(raw);
}
if (this->output_raw_) {
return aggr.aggregate();
}
return aggr.aggregate() / 1024.0f;
}
} // namespace adc
} // namespace esphome
#endif // USE_ESP8266
@@ -0,0 +1,54 @@
#ifdef USE_LIBRETINY
#include "adc_sensor.h"
#include "esphome/core/log.h"
namespace esphome {
namespace adc {
static const char *const TAG = "adc.libretiny";
void ADCSensor::setup() {
#ifndef USE_ADC_SENSOR_VCC
this->pin_->setup();
#endif // !USE_ADC_SENSOR_VCC
}
void ADCSensor::dump_config() {
LOG_SENSOR("", "ADC Sensor", this);
#ifdef USE_ADC_SENSOR_VCC
ESP_LOGCONFIG(TAG, " Pin: VCC");
#else // USE_ADC_SENSOR_VCC
LOG_PIN(" Pin: ", this->pin_);
#endif // USE_ADC_SENSOR_VCC
ESP_LOGCONFIG(TAG,
" Samples: %i\n"
" Sampling mode: %s",
this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
LOG_UPDATE_INTERVAL(this);
}
float ADCSensor::sample() {
uint32_t raw = 0;
auto aggr = Aggregator<uint32_t>(this->sampling_mode_);
if (this->output_raw_) {
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw = analogRead(this->pin_->get_pin()); // NOLINT
aggr.add_sample(raw);
}
return aggr.aggregate();
}
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw = analogReadVoltage(this->pin_->get_pin()); // NOLINT
aggr.add_sample(raw);
}
return aggr.aggregate() / 1000.0f;
}
} // namespace adc
} // namespace esphome
#endif // USE_LIBRETINY
@@ -0,0 +1,97 @@
#ifdef USE_RP2040
#include "adc_sensor.h"
#include "esphome/core/log.h"
#ifdef CYW43_USES_VSYS_PIN
#include "pico/cyw43_arch.h"
#endif // CYW43_USES_VSYS_PIN
#include <hardware/adc.h>
namespace esphome {
namespace adc {
static const char *const TAG = "adc.rp2040";
void ADCSensor::setup() {
static bool initialized = false;
if (!initialized) {
adc_init();
initialized = true;
}
}
void ADCSensor::dump_config() {
LOG_SENSOR("", "ADC Sensor", this);
if (this->is_temperature_) {
ESP_LOGCONFIG(TAG, " Pin: Temperature");
} else {
#ifdef USE_ADC_SENSOR_VCC
ESP_LOGCONFIG(TAG, " Pin: VCC");
#else
LOG_PIN(" Pin: ", this->pin_);
#endif // USE_ADC_SENSOR_VCC
}
ESP_LOGCONFIG(TAG,
" Samples: %i\n"
" Sampling mode: %s",
this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
LOG_UPDATE_INTERVAL(this);
}
float ADCSensor::sample() {
uint32_t raw = 0;
auto aggr = Aggregator<uint32_t>(this->sampling_mode_);
if (this->is_temperature_) {
adc_set_temp_sensor_enabled(true);
delay(1);
adc_select_input(4);
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw = adc_read();
aggr.add_sample(raw);
}
adc_set_temp_sensor_enabled(false);
if (this->output_raw_) {
return aggr.aggregate();
}
return aggr.aggregate() * 3.3f / 4096.0f;
}
uint8_t pin = this->pin_->get_pin();
#ifdef CYW43_USES_VSYS_PIN
if (pin == PICO_VSYS_PIN) {
// Measuring VSYS on Raspberry Pico W needs to be wrapped with
// `cyw43_thread_enter()`/`cyw43_thread_exit()` as discussed in
// https://github.com/raspberrypi/pico-sdk/issues/1222, since Wifi chip and
// VSYS ADC both share GPIO29
cyw43_thread_enter();
}
#endif // CYW43_USES_VSYS_PIN
adc_gpio_init(pin);
adc_select_input(pin - 26);
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
raw = adc_read();
aggr.add_sample(raw);
}
#ifdef CYW43_USES_VSYS_PIN
if (pin == PICO_VSYS_PIN) {
cyw43_thread_exit();
}
#endif // CYW43_USES_VSYS_PIN
if (this->output_raw_) {
return aggr.aggregate();
}
float coeff = pin == PICO_VSYS_PIN ? 3.0f : 1.0f;
return aggr.aggregate() * 3.3f / 4096.0f * coeff;
}
} // namespace adc
} // namespace esphome
#endif // USE_RP2040
@@ -0,0 +1,207 @@
#include "adc_sensor.h"
#ifdef USE_ZEPHYR
#include "esphome/core/log.h"
#include "hal/nrf_saadc.h"
namespace esphome {
namespace adc {
static const char *const TAG = "adc.zephyr";
void ADCSensor::setup() {
if (!adc_is_ready_dt(this->channel_)) {
ESP_LOGE(TAG, "ADC controller device %s not ready", this->channel_->dev->name);
return;
}
auto err = adc_channel_setup_dt(this->channel_);
if (err < 0) {
ESP_LOGE(TAG, "Could not setup channel %s (%d)", this->channel_->dev->name, err);
return;
}
}
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
static const LogString *gain_to_str(enum adc_gain gain) {
switch (gain) {
case ADC_GAIN_1_6:
return LOG_STR("1/6");
case ADC_GAIN_1_5:
return LOG_STR("1/5");
case ADC_GAIN_1_4:
return LOG_STR("1/4");
case ADC_GAIN_1_3:
return LOG_STR("1/3");
case ADC_GAIN_2_5:
return LOG_STR("2/5");
case ADC_GAIN_1_2:
return LOG_STR("1/2");
case ADC_GAIN_2_3:
return LOG_STR("2/3");
case ADC_GAIN_4_5:
return LOG_STR("4/5");
case ADC_GAIN_1:
return LOG_STR("1");
case ADC_GAIN_2:
return LOG_STR("2");
case ADC_GAIN_3:
return LOG_STR("3");
case ADC_GAIN_4:
return LOG_STR("4");
case ADC_GAIN_6:
return LOG_STR("6");
case ADC_GAIN_8:
return LOG_STR("8");
case ADC_GAIN_12:
return LOG_STR("12");
case ADC_GAIN_16:
return LOG_STR("16");
case ADC_GAIN_24:
return LOG_STR("24");
case ADC_GAIN_32:
return LOG_STR("32");
case ADC_GAIN_64:
return LOG_STR("64");
case ADC_GAIN_128:
return LOG_STR("128");
}
return LOG_STR("undefined gain");
}
static const LogString *reference_to_str(enum adc_reference reference) {
switch (reference) {
case ADC_REF_VDD_1:
return LOG_STR("VDD");
case ADC_REF_VDD_1_2:
return LOG_STR("VDD/2");
case ADC_REF_VDD_1_3:
return LOG_STR("VDD/3");
case ADC_REF_VDD_1_4:
return LOG_STR("VDD/4");
case ADC_REF_INTERNAL:
return LOG_STR("INTERNAL");
case ADC_REF_EXTERNAL0:
return LOG_STR("External, input 0");
case ADC_REF_EXTERNAL1:
return LOG_STR("External, input 1");
}
return LOG_STR("undefined reference");
}
static const LogString *input_to_str(uint8_t input) {
switch (input) {
case NRF_SAADC_INPUT_AIN0:
return LOG_STR("AIN0");
case NRF_SAADC_INPUT_AIN1:
return LOG_STR("AIN1");
case NRF_SAADC_INPUT_AIN2:
return LOG_STR("AIN2");
case NRF_SAADC_INPUT_AIN3:
return LOG_STR("AIN3");
case NRF_SAADC_INPUT_AIN4:
return LOG_STR("AIN4");
case NRF_SAADC_INPUT_AIN5:
return LOG_STR("AIN5");
case NRF_SAADC_INPUT_AIN6:
return LOG_STR("AIN6");
case NRF_SAADC_INPUT_AIN7:
return LOG_STR("AIN7");
case NRF_SAADC_INPUT_VDD:
return LOG_STR("VDD");
case NRF_SAADC_INPUT_VDDHDIV5:
return LOG_STR("VDDHDIV5");
}
return LOG_STR("undefined input");
}
#endif // ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
void ADCSensor::dump_config() {
LOG_SENSOR("", "ADC Sensor", this);
LOG_PIN(" Pin: ", this->pin_);
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
ESP_LOGV(TAG,
" Name: %s\n"
" Channel: %d\n"
" vref_mv: %d\n"
" Resolution %d\n"
" Oversampling %d",
this->channel_->dev->name, this->channel_->channel_id, this->channel_->vref_mv, this->channel_->resolution,
this->channel_->oversampling);
ESP_LOGV(TAG,
" Gain: %s\n"
" reference: %s\n"
" acquisition_time: %d\n"
" differential %s",
LOG_STR_ARG(gain_to_str(this->channel_->channel_cfg.gain)),
LOG_STR_ARG(reference_to_str(this->channel_->channel_cfg.reference)),
this->channel_->channel_cfg.acquisition_time, YESNO(this->channel_->channel_cfg.differential));
if (this->channel_->channel_cfg.differential) {
ESP_LOGV(TAG,
" Positive: %s\n"
" Negative: %s",
LOG_STR_ARG(input_to_str(this->channel_->channel_cfg.input_positive)),
LOG_STR_ARG(input_to_str(this->channel_->channel_cfg.input_negative)));
} else {
ESP_LOGV(TAG, " Positive: %s", LOG_STR_ARG(input_to_str(this->channel_->channel_cfg.input_positive)));
}
#endif
LOG_UPDATE_INTERVAL(this);
}
float ADCSensor::sample() {
auto aggr = Aggregator<int32_t>(this->sampling_mode_);
int err;
for (uint8_t sample = 0; sample < this->sample_count_; sample++) {
int16_t buf = 0;
struct adc_sequence sequence = {
.buffer = &buf,
/* buffer size in bytes, not number of samples */
.buffer_size = sizeof(buf),
};
int32_t val_raw;
err = adc_sequence_init_dt(this->channel_, &sequence);
if (err < 0) {
ESP_LOGE(TAG, "Could sequence init %s (%d)", this->channel_->dev->name, err);
return 0.0;
}
err = adc_read(this->channel_->dev, &sequence);
if (err < 0) {
ESP_LOGE(TAG, "Could not read %s (%d)", this->channel_->dev->name, err);
return 0.0;
}
val_raw = (int32_t) buf;
if (!this->channel_->channel_cfg.differential) {
// https://github.com/adafruit/Adafruit_nRF52_Arduino/blob/0ed4d9ffc674ae407be7cacf5696a02f5e789861/cores/nRF5/wiring_analog_nRF52.c#L222
if (val_raw < 0) {
val_raw = 0;
}
}
aggr.add_sample(val_raw);
}
int32_t val_mv = aggr.aggregate();
if (this->output_raw_) {
return val_mv;
}
err = adc_raw_to_millivolts_dt(this->channel_, &val_mv);
/* conversion to mV may not be supported, skip if not */
if (err < 0) {
ESP_LOGE(TAG, "Value in mV not available %s (%d)", this->channel_->dev->name, err);
return 0.0;
}
return val_mv / 1000.0f;
}
} // namespace adc
} // namespace esphome
#endif
+89 -29
View File
@@ -1,27 +1,37 @@
import logging
import esphome.codegen as cg
import esphome.config_validation as cv
import esphome.final_validate as fv
from esphome.core import CORE
from esphome.components import sensor, voltage_sampler
from esphome.components.esp32 import get_esp32_variant
from esphome.components.nrf52.const import AIN_TO_GPIO, EXTRA_ADC
from esphome.components.zephyr import (
zephyr_add_overlay,
zephyr_add_prj_conf,
zephyr_add_user,
)
from esphome.config_helpers import filter_source_files_from_platform
import esphome.config_validation as cv
from esphome.const import (
CONF_ATTENUATION,
CONF_ID,
CONF_NUMBER,
CONF_PIN,
CONF_RAW,
CONF_WIFI,
DEVICE_CLASS_VOLTAGE,
PLATFORM_NRF52,
STATE_CLASS_MEASUREMENT,
UNIT_VOLT,
PlatformFramework,
)
from esphome.core import CORE
from . import (
ATTENUATION_MODES,
ESP32_VARIANT_ADC1_PIN_TO_CHANNEL,
ESP32_VARIANT_ADC2_PIN_TO_CHANNEL,
SAMPLING_MODES,
adc_ns,
adc_unit_t,
validate_adc_pin,
)
@@ -30,9 +40,11 @@ _LOGGER = logging.getLogger(__name__)
AUTO_LOAD = ["voltage_sampler"]
CONF_SAMPLES = "samples"
CONF_SAMPLING_MODE = "sampling_mode"
_attenuation = cv.enum(ATTENUATION_MODES, lower=True)
_sampling_mode = cv.enum(SAMPLING_MODES, lower=True)
def validate_config(config):
@@ -53,25 +65,14 @@ def validate_config(config):
return config
def final_validate_config(config):
if CORE.is_esp32:
variant = get_esp32_variant()
if (
CONF_WIFI in fv.full_config.get()
and config[CONF_PIN][CONF_NUMBER]
in ESP32_VARIANT_ADC2_PIN_TO_CHANNEL[variant]
):
raise cv.Invalid(
f"{variant} doesn't support ADC on this pin when Wi-Fi is configured"
)
return config
ADCSensor = adc_ns.class_(
"ADCSensor", sensor.Sensor, cg.PollingComponent, voltage_sampler.VoltageSampler
)
CONF_NRF_SAADC = "nrf_saadc"
adc_dt_spec = cg.global_ns.class_("adc_dt_spec")
CONFIG_SCHEMA = cv.All(
sensor.sensor_schema(
ADCSensor,
@@ -87,14 +88,16 @@ CONFIG_SCHEMA = cv.All(
cv.SplitDefault(CONF_ATTENUATION, esp32="0db"): cv.All(
cv.only_on_esp32, _attenuation
),
cv.OnlyWith(CONF_NRF_SAADC, PLATFORM_NRF52): cv.declare_id(adc_dt_spec),
cv.Optional(CONF_SAMPLES, default=1): cv.int_range(min=1, max=255),
cv.Optional(CONF_SAMPLING_MODE, default="avg"): _sampling_mode,
}
)
.extend(cv.polling_component_schema("60s")),
validate_config,
)
FINAL_VALIDATE_SCHEMA = final_validate_config
CONF_ADC_CHANNEL_ID = "adc_channel_id"
async def to_code(config):
@@ -106,20 +109,21 @@ async def to_code(config):
cg.add_define("USE_ADC_SENSOR_VCC")
elif config[CONF_PIN] == "TEMPERATURE":
cg.add(var.set_is_temperature())
else:
elif not CORE.is_nrf52 or config[CONF_PIN][CONF_NUMBER] not in EXTRA_ADC:
pin = await cg.gpio_pin_expression(config[CONF_PIN])
cg.add(var.set_pin(pin))
cg.add(var.set_output_raw(config[CONF_RAW]))
cg.add(var.set_sample_count(config[CONF_SAMPLES]))
if attenuation := config.get(CONF_ATTENUATION):
if attenuation == "auto":
cg.add(var.set_autorange(cg.global_ns.true))
else:
cg.add(var.set_attenuation(attenuation))
cg.add(var.set_sampling_mode(config[CONF_SAMPLING_MODE]))
if CORE.is_esp32:
if attenuation := config.get(CONF_ATTENUATION):
if attenuation == "auto":
cg.add(var.set_autorange(cg.global_ns.true))
else:
cg.add(var.set_attenuation(attenuation))
variant = get_esp32_variant()
pin_num = config[CONF_PIN][CONF_NUMBER]
if (
@@ -127,10 +131,66 @@ async def to_code(config):
and pin_num in ESP32_VARIANT_ADC1_PIN_TO_CHANNEL[variant]
):
chan = ESP32_VARIANT_ADC1_PIN_TO_CHANNEL[variant][pin_num]
cg.add(var.set_channel1(chan))
cg.add(var.set_channel(adc_unit_t.ADC_UNIT_1, chan))
elif (
variant in ESP32_VARIANT_ADC2_PIN_TO_CHANNEL
and pin_num in ESP32_VARIANT_ADC2_PIN_TO_CHANNEL[variant]
):
chan = ESP32_VARIANT_ADC2_PIN_TO_CHANNEL[variant][pin_num]
cg.add(var.set_channel2(chan))
cg.add(var.set_channel(adc_unit_t.ADC_UNIT_2, chan))
elif CORE.is_nrf52:
CORE.data.setdefault(CONF_ADC_CHANNEL_ID, 0)
channel_id = CORE.data[CONF_ADC_CHANNEL_ID]
CORE.data[CONF_ADC_CHANNEL_ID] = channel_id + 1
zephyr_add_prj_conf("ADC", True)
nrf_saadc = config[CONF_NRF_SAADC]
rhs = cg.RawExpression(
f"ADC_DT_SPEC_GET_BY_IDX(DT_PATH(zephyr_user), {channel_id})"
)
adc = cg.new_Pvariable(nrf_saadc, rhs)
cg.add(var.set_adc_channel(adc))
gain = "ADC_GAIN_1_6"
pin_number = config[CONF_PIN][CONF_NUMBER]
if pin_number == "VDDHDIV5":
gain = "ADC_GAIN_1_2"
if isinstance(pin_number, int):
GPIO_TO_AIN = {v: k for k, v in AIN_TO_GPIO.items()}
pin_number = GPIO_TO_AIN[pin_number]
zephyr_add_user("io-channels", f"<&adc {channel_id}>")
zephyr_add_overlay(
f"""
&adc {{
#address-cells = <1>;
#size-cells = <0>;
channel@{channel_id} {{
reg = <{channel_id}>;
zephyr,gain = "{gain}";
zephyr,reference = "ADC_REF_INTERNAL";
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
zephyr,input-positive = <NRF_SAADC_{pin_number}>;
zephyr,resolution = <14>;
zephyr,oversampling = <8>;
}};
}};
"""
)
FILTER_SOURCE_FILES = filter_source_files_from_platform(
{
"adc_sensor_esp32.cpp": {
PlatformFramework.ESP32_ARDUINO,
PlatformFramework.ESP32_IDF,
},
"adc_sensor_esp8266.cpp": {PlatformFramework.ESP8266_ARDUINO},
"adc_sensor_rp2040.cpp": {PlatformFramework.RP2040_ARDUINO},
"adc_sensor_libretiny.cpp": {
PlatformFramework.BK72XX_ARDUINO,
PlatformFramework.RTL87XX_ARDUINO,
PlatformFramework.LN882X_ARDUINO,
},
"adc_sensor_zephyr.cpp": {PlatformFramework.NRF52_ZEPHYR},
}
)
+1 -1
View File
@@ -1,6 +1,6 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import spi
import esphome.config_validation as cv
from esphome.const import CONF_ID
DEPENDENCIES = ["spi"]
+1 -4
View File
@@ -8,10 +8,7 @@ static const char *const TAG = "adc128s102";
float ADC128S102::get_setup_priority() const { return setup_priority::HARDWARE; }
void ADC128S102::setup() {
ESP_LOGCONFIG(TAG, "Setting up adc128s102");
this->spi_setup();
}
void ADC128S102::setup() { this->spi_setup(); }
void ADC128S102::dump_config() {
ESP_LOGCONFIG(TAG, "ADC128S102:");
@@ -1,9 +1,9 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor, voltage_sampler
from esphome.const import CONF_ID, CONF_CHANNEL
import esphome.config_validation as cv
from esphome.const import CONF_CHANNEL, CONF_ID
from .. import adc128s102_ns, ADC128S102
from .. import ADC128S102, adc128s102_ns
AUTO_LOAD = ["voltage_sampler"]
DEPENDENCIES = ["adc128s102"]
@@ -1,15 +1,15 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import display, light
import esphome.config_validation as cv
from esphome.const import (
CONF_ADDRESSABLE_LIGHT_ID,
CONF_HEIGHT,
CONF_ID,
CONF_LAMBDA,
CONF_PAGES,
CONF_ADDRESSABLE_LIGHT_ID,
CONF_HEIGHT,
CONF_WIDTH,
CONF_UPDATE_INTERVAL,
CONF_PIXEL_MAPPER,
CONF_UPDATE_INTERVAL,
CONF_WIDTH,
)
CODEOWNERS = ["@justfalter"]
+29 -18
View File
@@ -113,7 +113,7 @@ void ADE7880::update() {
if (this->channel_a_ != nullptr) {
auto *chan = this->channel_a_;
this->update_sensor_from_s24zp_register16_(chan->current, AIRMS, [](float val) { return val / 100000.0f; });
this->update_sensor_from_s24zp_register16_(chan->voltage, BVRMS, [](float val) { return val / 10000.0f; });
this->update_sensor_from_s24zp_register16_(chan->voltage, AVRMS, [](float val) { return val / 10000.0f; });
this->update_sensor_from_s24zp_register16_(chan->active_power, AWATT, [](float val) { return val / 100.0f; });
this->update_sensor_from_s24zp_register16_(chan->apparent_power, AVA, [](float val) { return val / 100.0f; });
this->update_sensor_from_s16_register16_(chan->power_factor, APF,
@@ -177,11 +177,14 @@ void ADE7880::dump_config() {
LOG_SENSOR(" ", "Power Factor", this->channel_a_->power_factor);
LOG_SENSOR(" ", "Forward Active Energy", this->channel_a_->forward_active_energy);
LOG_SENSOR(" ", "Reverse Active Energy", this->channel_a_->reverse_active_energy);
ESP_LOGCONFIG(TAG, " Calibration:");
ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_a_->current_gain_calibration);
ESP_LOGCONFIG(TAG, " Voltage: %" PRId32, this->channel_a_->voltage_gain_calibration);
ESP_LOGCONFIG(TAG, " Power: %" PRId32, this->channel_a_->power_gain_calibration);
ESP_LOGCONFIG(TAG, " Phase Angle: %u", this->channel_a_->phase_angle_calibration);
ESP_LOGCONFIG(TAG,
" Calibration:\n"
" Current: %" PRId32 "\n"
" Voltage: %" PRId32 "\n"
" Power: %" PRId32 "\n"
" Phase Angle: %u",
this->channel_a_->current_gain_calibration, this->channel_a_->voltage_gain_calibration,
this->channel_a_->power_gain_calibration, this->channel_a_->phase_angle_calibration);
}
if (this->channel_b_ != nullptr) {
@@ -193,11 +196,14 @@ void ADE7880::dump_config() {
LOG_SENSOR(" ", "Power Factor", this->channel_b_->power_factor);
LOG_SENSOR(" ", "Forward Active Energy", this->channel_b_->forward_active_energy);
LOG_SENSOR(" ", "Reverse Active Energy", this->channel_b_->reverse_active_energy);
ESP_LOGCONFIG(TAG, " Calibration:");
ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_b_->current_gain_calibration);
ESP_LOGCONFIG(TAG, " Voltage: %" PRId32, this->channel_b_->voltage_gain_calibration);
ESP_LOGCONFIG(TAG, " Power: %" PRId32, this->channel_b_->power_gain_calibration);
ESP_LOGCONFIG(TAG, " Phase Angle: %u", this->channel_b_->phase_angle_calibration);
ESP_LOGCONFIG(TAG,
" Calibration:\n"
" Current: %" PRId32 "\n"
" Voltage: %" PRId32 "\n"
" Power: %" PRId32 "\n"
" Phase Angle: %u",
this->channel_b_->current_gain_calibration, this->channel_b_->voltage_gain_calibration,
this->channel_b_->power_gain_calibration, this->channel_b_->phase_angle_calibration);
}
if (this->channel_c_ != nullptr) {
@@ -209,18 +215,23 @@ void ADE7880::dump_config() {
LOG_SENSOR(" ", "Power Factor", this->channel_c_->power_factor);
LOG_SENSOR(" ", "Forward Active Energy", this->channel_c_->forward_active_energy);
LOG_SENSOR(" ", "Reverse Active Energy", this->channel_c_->reverse_active_energy);
ESP_LOGCONFIG(TAG, " Calibration:");
ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_c_->current_gain_calibration);
ESP_LOGCONFIG(TAG, " Voltage: %" PRId32, this->channel_c_->voltage_gain_calibration);
ESP_LOGCONFIG(TAG, " Power: %" PRId32, this->channel_c_->power_gain_calibration);
ESP_LOGCONFIG(TAG, " Phase Angle: %u", this->channel_c_->phase_angle_calibration);
ESP_LOGCONFIG(TAG,
" Calibration:\n"
" Current: %" PRId32 "\n"
" Voltage: %" PRId32 "\n"
" Power: %" PRId32 "\n"
" Phase Angle: %u",
this->channel_c_->current_gain_calibration, this->channel_c_->voltage_gain_calibration,
this->channel_c_->power_gain_calibration, this->channel_c_->phase_angle_calibration);
}
if (this->channel_n_ != nullptr) {
ESP_LOGCONFIG(TAG, " Neutral:");
LOG_SENSOR(" ", "Current", this->channel_n_->current);
ESP_LOGCONFIG(TAG, " Calibration:");
ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_n_->current_gain_calibration);
ESP_LOGCONFIG(TAG,
" Calibration:\n"
" Current: %" PRId32,
this->channel_n_->current_gain_calibration);
}
LOG_I2C_DEVICE(this);
-2
View File
@@ -85,8 +85,6 @@ class ADE7880 : public i2c::I2CDevice, public PollingComponent {
void dump_config() override;
float get_setup_priority() const override { return setup_priority::DATA; }
protected:
ADE7880Store store_{};
InternalGPIOPin *irq0_pin_{nullptr};
+78 -52
View File
@@ -1,7 +1,7 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor, i2c
from esphome import pins
import esphome.codegen as cg
from esphome.components import i2c, sensor
import esphome.config_validation as cv
from esphome.const import (
CONF_ACTIVE_POWER,
CONF_APPARENT_POWER,
@@ -36,6 +36,7 @@ from esphome.const import (
UNIT_WATT,
UNIT_WATT_HOURS,
)
from esphome.types import ConfigType
DEPENDENCIES = ["i2c"]
@@ -51,6 +52,20 @@ CONF_POWER_GAIN = "power_gain"
CONF_NEUTRAL = "neutral"
# Tuple of power channel phases
POWER_PHASES = (CONF_PHASE_A, CONF_PHASE_B, CONF_PHASE_C)
# Tuple of sensor types that can be configured for power channels
POWER_SENSOR_TYPES = (
CONF_CURRENT,
CONF_VOLTAGE,
CONF_ACTIVE_POWER,
CONF_APPARENT_POWER,
CONF_POWER_FACTOR,
CONF_FORWARD_ACTIVE_ENERGY,
CONF_REVERSE_ACTIVE_ENERGY,
)
NEUTRAL_CHANNEL_SCHEMA = cv.Schema(
{
cv.GenerateID(): cv.declare_id(NeutralChannel),
@@ -150,7 +165,64 @@ POWER_CHANNEL_SCHEMA = cv.Schema(
}
)
CONFIG_SCHEMA = (
def prefix_sensor_name(
sensor_conf: ConfigType,
channel_name: str,
channel_config: ConfigType,
sensor_type: str,
) -> None:
"""Helper to prefix sensor name with channel name.
Args:
sensor_conf: The sensor configuration (dict or string)
channel_name: The channel name to prefix with
channel_config: The channel configuration to update
sensor_type: The sensor type key in the channel config
"""
if isinstance(sensor_conf, dict) and CONF_NAME in sensor_conf:
sensor_name = sensor_conf[CONF_NAME]
if sensor_name and not sensor_name.startswith(channel_name):
sensor_conf[CONF_NAME] = f"{channel_name} {sensor_name}"
elif isinstance(sensor_conf, str):
# Simple value case - convert to dict with prefixed name
channel_config[sensor_type] = {CONF_NAME: f"{channel_name} {sensor_conf}"}
def process_channel_sensors(
config: ConfigType, channel_key: str, sensor_types: tuple
) -> None:
"""Process sensors for a channel and prefix their names.
Args:
config: The main configuration
channel_key: The channel key (e.g., CONF_PHASE_A, CONF_NEUTRAL)
sensor_types: Tuple of sensor types to process for this channel
"""
if not (channel_config := config.get(channel_key)) or not (
channel_name := channel_config.get(CONF_NAME)
):
return
for sensor_type in sensor_types:
if sensor_conf := channel_config.get(sensor_type):
prefix_sensor_name(sensor_conf, channel_name, channel_config, sensor_type)
def preprocess_channels(config: ConfigType) -> ConfigType:
"""Preprocess channel configurations to add channel name prefix to sensor names."""
# Process power channels
for channel in POWER_PHASES:
process_channel_sensors(config, channel, POWER_SENSOR_TYPES)
# Process neutral channel
process_channel_sensors(config, CONF_NEUTRAL, (CONF_CURRENT,))
return config
CONFIG_SCHEMA = cv.All(
preprocess_channels,
cv.Schema(
{
cv.GenerateID(): cv.declare_id(ADE7880),
@@ -167,7 +239,7 @@ CONFIG_SCHEMA = (
}
)
.extend(cv.polling_component_schema("60s"))
.extend(i2c.i2c_device_schema(0x38))
.extend(i2c.i2c_device_schema(0x38)),
)
@@ -188,15 +260,7 @@ async def neutral_channel(config):
async def power_channel(config):
var = cg.new_Pvariable(config[CONF_ID])
for sensor_type in [
CONF_CURRENT,
CONF_VOLTAGE,
CONF_ACTIVE_POWER,
CONF_APPARENT_POWER,
CONF_POWER_FACTOR,
CONF_FORWARD_ACTIVE_ENERGY,
CONF_REVERSE_ACTIVE_ENERGY,
]:
for sensor_type in POWER_SENSOR_TYPES:
if conf := config.get(sensor_type):
sens = await sensor.new_sensor(conf)
cg.add(getattr(var, f"set_{sensor_type}")(sens))
@@ -216,44 +280,6 @@ async def power_channel(config):
return var
def final_validate(config):
for channel in [CONF_PHASE_A, CONF_PHASE_B, CONF_PHASE_C]:
if channel := config.get(channel):
channel_name = channel.get(CONF_NAME)
for sensor_type in [
CONF_CURRENT,
CONF_VOLTAGE,
CONF_ACTIVE_POWER,
CONF_APPARENT_POWER,
CONF_POWER_FACTOR,
CONF_FORWARD_ACTIVE_ENERGY,
CONF_REVERSE_ACTIVE_ENERGY,
]:
if conf := channel.get(sensor_type):
sensor_name = conf.get(CONF_NAME)
if (
sensor_name
and channel_name
and not sensor_name.startswith(channel_name)
):
conf[CONF_NAME] = f"{channel_name} {sensor_name}"
if channel := config.get(CONF_NEUTRAL):
channel_name = channel.get(CONF_NAME)
if conf := channel.get(CONF_CURRENT):
sensor_name = conf.get(CONF_NAME)
if (
sensor_name
and channel_name
and not sensor_name.startswith(channel_name)
):
conf[CONF_NAME] = f"{channel_name} {sensor_name}"
FINAL_VALIDATE_SCHEMA = final_validate
async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
+14 -14
View File
@@ -1,27 +1,27 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor
from esphome import pins
import esphome.codegen as cg
from esphome.components import sensor
import esphome.config_validation as cv
from esphome.const import (
CONF_FREQUENCY,
CONF_IRQ_PIN,
CONF_VOLTAGE,
CONF_FREQUENCY,
CONF_VOLTAGE_GAIN,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_APPARENT_POWER,
DEVICE_CLASS_POWER,
DEVICE_CLASS_REACTIVE_POWER,
DEVICE_CLASS_POWER_FACTOR,
DEVICE_CLASS_VOLTAGE,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_FREQUENCY,
DEVICE_CLASS_POWER,
DEVICE_CLASS_POWER_FACTOR,
DEVICE_CLASS_REACTIVE_POWER,
DEVICE_CLASS_VOLTAGE,
STATE_CLASS_MEASUREMENT,
UNIT_VOLT,
UNIT_HERTZ,
UNIT_AMPERE,
UNIT_VOLT_AMPS,
UNIT_WATT,
UNIT_VOLT_AMPS_REACTIVE,
UNIT_HERTZ,
UNIT_PERCENT,
UNIT_VOLT,
UNIT_VOLT_AMPS,
UNIT_VOLT_AMPS_REACTIVE,
UNIT_WATT,
)
CONF_CURRENT_A = "current_a"
@@ -58,15 +58,18 @@ void ADE7953::dump_config() {
LOG_SENSOR(" ", "Active Power B Sensor", this->active_power_b_sensor_);
LOG_SENSOR(" ", "Rective Power A Sensor", this->reactive_power_a_sensor_);
LOG_SENSOR(" ", "Reactive Power B Sensor", this->reactive_power_b_sensor_);
ESP_LOGCONFIG(TAG, " USE_ACC_ENERGY_REGS: %d", this->use_acc_energy_regs_);
ESP_LOGCONFIG(TAG, " PGA_V_8: 0x%X", pga_v_);
ESP_LOGCONFIG(TAG, " PGA_IA_8: 0x%X", pga_ia_);
ESP_LOGCONFIG(TAG, " PGA_IB_8: 0x%X", pga_ib_);
ESP_LOGCONFIG(TAG, " VGAIN_32: 0x%08jX", (uintmax_t) vgain_);
ESP_LOGCONFIG(TAG, " AIGAIN_32: 0x%08jX", (uintmax_t) aigain_);
ESP_LOGCONFIG(TAG, " BIGAIN_32: 0x%08jX", (uintmax_t) bigain_);
ESP_LOGCONFIG(TAG, " AWGAIN_32: 0x%08jX", (uintmax_t) awgain_);
ESP_LOGCONFIG(TAG, " BWGAIN_32: 0x%08jX", (uintmax_t) bwgain_);
ESP_LOGCONFIG(TAG,
" USE_ACC_ENERGY_REGS: %d\n"
" PGA_V_8: 0x%X\n"
" PGA_IA_8: 0x%X\n"
" PGA_IB_8: 0x%X\n"
" VGAIN_32: 0x%08jX\n"
" AIGAIN_32: 0x%08jX\n"
" BIGAIN_32: 0x%08jX\n"
" AWGAIN_32: 0x%08jX\n"
" BWGAIN_32: 0x%08jX",
this->use_acc_energy_regs_, pga_v_, pga_ia_, pga_ib_, (uintmax_t) vgain_, (uintmax_t) aigain_,
(uintmax_t) bigain_, (uintmax_t) awgain_, (uintmax_t) bwgain_);
}
#define ADE_PUBLISH_(name, val, factor) \
@@ -1,6 +1,6 @@
#include "ade7953_i2c.h"
#include "esphome/core/log.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
namespace esphome {
namespace ade7953_i2c {
+1 -2
View File
@@ -1,9 +1,8 @@
import esphome.codegen as cg
from esphome.components import ade7953_base, i2c
import esphome.config_validation as cv
from esphome.components import i2c, ade7953_base
from esphome.const import CONF_ID
DEPENDENCIES = ["i2c"]
AUTO_LOAD = ["ade7953_base"]
@@ -1,6 +1,6 @@
#include "ade7953_spi.h"
#include "esphome/core/log.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
namespace esphome {
namespace ade7953_spi {
+1 -2
View File
@@ -1,9 +1,8 @@
import esphome.codegen as cg
from esphome.components import ade7953_base, spi
import esphome.config_validation as cv
from esphome.components import spi, ade7953_base
from esphome.const import CONF_ID
DEPENDENCIES = ["spi"]
AUTO_LOAD = ["ade7953_base"]
+1 -1
View File
@@ -1,6 +1,6 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import i2c
import esphome.config_validation as cv
from esphome.const import CONF_ID
DEPENDENCIES = ["i2c"]
+58 -12
View File
@@ -9,18 +9,13 @@ static const char *const TAG = "ads1115";
static const uint8_t ADS1115_REGISTER_CONVERSION = 0x00;
static const uint8_t ADS1115_REGISTER_CONFIG = 0x01;
static const uint8_t ADS1115_DATA_RATE_860_SPS = 0b111; // 3300_SPS for ADS1015
void ADS1115Component::setup() {
ESP_LOGCONFIG(TAG, "Setting up ADS1115...");
uint16_t value;
if (!this->read_byte_16(ADS1115_REGISTER_CONVERSION, &value)) {
this->mark_failed();
return;
}
ESP_LOGCONFIG(TAG, "Configuring ADS1115...");
uint16_t config = 0;
// Clear single-shot bit
// 0b0xxxxxxxxxxxxxxx
@@ -43,9 +38,9 @@ void ADS1115Component::setup() {
config |= 0b0000000100000000;
}
// Set data rate - 860 samples per second (we're in singleshot mode)
// Set data rate - 860 samples per second
// 0bxxxxxxxx100xxxxx
config |= ADS1115_DATA_RATE_860_SPS << 5;
config |= ADS1115_860SPS << 5;
// Set comparator mode - hysteresis
// 0bxxxxxxxxxxx0xxxx
@@ -70,14 +65,14 @@ void ADS1115Component::setup() {
this->prev_config_ = config;
}
void ADS1115Component::dump_config() {
ESP_LOGCONFIG(TAG, "Setting up ADS1115...");
ESP_LOGCONFIG(TAG, "ADS1115:");
LOG_I2C_DEVICE(this);
if (this->is_failed()) {
ESP_LOGE(TAG, "Communication with ADS1115 failed!");
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
}
}
float ADS1115Component::request_measurement(ADS1115Multiplexer multiplexer, ADS1115Gain gain,
ADS1115Resolution resolution) {
ADS1115Resolution resolution, ADS1115Samplerate samplerate) {
uint16_t config = this->prev_config_;
// Multiplexer
// 0bxBBBxxxxxxxxxxxx
@@ -89,6 +84,11 @@ float ADS1115Component::request_measurement(ADS1115Multiplexer multiplexer, ADS1
config &= 0b1111000111111111;
config |= (gain & 0b111) << 9;
// Sample rate
// 0bxxxxxxxxBBBxxxxx
config &= 0b1111111100011111;
config |= (samplerate & 0b111) << 5;
if (!this->continuous_mode_) {
// Start conversion
config |= 0b1000000000000000;
@@ -101,8 +101,54 @@ float ADS1115Component::request_measurement(ADS1115Multiplexer multiplexer, ADS1
}
this->prev_config_ = config;
// about 1.2 ms with 860 samples per second
delay(2);
// Delay calculated as: ceil((1000/SPS)+.5)
if (resolution == ADS1015_12_BITS) {
switch (samplerate) {
case ADS1115_8SPS:
delay(9);
break;
case ADS1115_16SPS:
delay(5);
break;
case ADS1115_32SPS:
delay(3);
break;
case ADS1115_64SPS:
case ADS1115_128SPS:
delay(2);
break;
default:
delay(1);
break;
}
} else {
switch (samplerate) {
case ADS1115_8SPS:
delay(126); // NOLINT
break;
case ADS1115_16SPS:
delay(63); // NOLINT
break;
case ADS1115_32SPS:
delay(32);
break;
case ADS1115_64SPS:
delay(17);
break;
case ADS1115_128SPS:
delay(9);
break;
case ADS1115_250SPS:
delay(5);
break;
case ADS1115_475SPS:
delay(3);
break;
case ADS1115_860SPS:
delay(2);
break;
}
}
// in continuous mode, conversion will always be running, rely on the delay
// to ensure conversion is taking place with the correct settings
+13 -2
View File
@@ -33,16 +33,27 @@ enum ADS1115Resolution {
ADS1015_12_BITS = 12,
};
enum ADS1115Samplerate {
ADS1115_8SPS = 0b000,
ADS1115_16SPS = 0b001,
ADS1115_32SPS = 0b010,
ADS1115_64SPS = 0b011,
ADS1115_128SPS = 0b100,
ADS1115_250SPS = 0b101,
ADS1115_475SPS = 0b110,
ADS1115_860SPS = 0b111
};
class ADS1115Component : public Component, public i2c::I2CDevice {
public:
void setup() override;
void dump_config() override;
/// HARDWARE_LATE setup priority
float get_setup_priority() const override { return setup_priority::DATA; }
void set_continuous_mode(bool continuous_mode) { continuous_mode_ = continuous_mode; }
/// Helper method to request a measurement from a sensor.
float request_measurement(ADS1115Multiplexer multiplexer, ADS1115Gain gain, ADS1115Resolution resolution);
float request_measurement(ADS1115Multiplexer multiplexer, ADS1115Gain gain, ADS1115Resolution resolution,
ADS1115Samplerate samplerate);
protected:
uint16_t prev_config_{0};
+20 -3
View File
@@ -1,16 +1,18 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor, voltage_sampler
import esphome.config_validation as cv
from esphome.const import (
CONF_GAIN,
CONF_ID,
CONF_MULTIPLEXER,
CONF_RESOLUTION,
CONF_SAMPLE_RATE,
DEVICE_CLASS_VOLTAGE,
STATE_CLASS_MEASUREMENT,
UNIT_VOLT,
CONF_ID,
)
from .. import ads1115_ns, ADS1115Component, CONF_ADS1115_ID
from .. import CONF_ADS1115_ID, ADS1115Component, ads1115_ns
AUTO_LOAD = ["voltage_sampler"]
DEPENDENCIES = ["ads1115"]
@@ -43,6 +45,17 @@ RESOLUTION = {
"12_BITS": ADS1115Resolution.ADS1015_12_BITS,
}
ADS1115Samplerate = ads1115_ns.enum("ADS1115Samplerate")
SAMPLERATE = {
"8": ADS1115Samplerate.ADS1115_8SPS,
"16": ADS1115Samplerate.ADS1115_16SPS,
"32": ADS1115Samplerate.ADS1115_32SPS,
"64": ADS1115Samplerate.ADS1115_64SPS,
"128": ADS1115Samplerate.ADS1115_128SPS,
"250": ADS1115Samplerate.ADS1115_250SPS,
"475": ADS1115Samplerate.ADS1115_475SPS,
"860": ADS1115Samplerate.ADS1115_860SPS,
}
ADS1115Sensor = ads1115_ns.class_(
"ADS1115Sensor", sensor.Sensor, cg.PollingComponent, voltage_sampler.VoltageSampler
@@ -64,6 +77,9 @@ CONFIG_SCHEMA = (
cv.Optional(CONF_RESOLUTION, default="16_BITS"): cv.enum(
RESOLUTION, upper=True, space="_"
),
cv.Optional(CONF_SAMPLE_RATE, default="860"): cv.enum(
SAMPLERATE, string=True
),
}
)
.extend(cv.polling_component_schema("60s"))
@@ -79,3 +95,4 @@ async def to_code(config):
cg.add(var.set_multiplexer(config[CONF_MULTIPLEXER]))
cg.add(var.set_gain(config[CONF_GAIN]))
cg.add(var.set_resolution(config[CONF_RESOLUTION]))
cg.add(var.set_samplerate(config[CONF_SAMPLE_RATE]))
@@ -8,7 +8,7 @@ namespace ads1115 {
static const char *const TAG = "ads1115.sensor";
float ADS1115Sensor::sample() {
return this->parent_->request_measurement(this->multiplexer_, this->gain_, this->resolution_);
return this->parent_->request_measurement(this->multiplexer_, this->gain_, this->resolution_, this->samplerate_);
}
void ADS1115Sensor::update() {
@@ -24,6 +24,7 @@ void ADS1115Sensor::dump_config() {
ESP_LOGCONFIG(TAG, " Multiplexer: %u", this->multiplexer_);
ESP_LOGCONFIG(TAG, " Gain: %u", this->gain_);
ESP_LOGCONFIG(TAG, " Resolution: %u", this->resolution_);
ESP_LOGCONFIG(TAG, " Sample rate: %u", this->samplerate_);
}
} // namespace ads1115
@@ -21,6 +21,7 @@ class ADS1115Sensor : public sensor::Sensor,
void set_multiplexer(ADS1115Multiplexer multiplexer) { this->multiplexer_ = multiplexer; }
void set_gain(ADS1115Gain gain) { this->gain_ = gain; }
void set_resolution(ADS1115Resolution resolution) { this->resolution_ = resolution; }
void set_samplerate(ADS1115Samplerate samplerate) { this->samplerate_ = samplerate; }
float sample() override;
void dump_config() override;
@@ -29,6 +30,7 @@ class ADS1115Sensor : public sensor::Sensor,
ADS1115Multiplexer multiplexer_;
ADS1115Gain gain_;
ADS1115Resolution resolution_;
ADS1115Samplerate samplerate_;
};
} // namespace ads1115
+1 -1
View File
@@ -1,6 +1,6 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import spi
import esphome.config_validation as cv
from esphome.const import CONF_ID
CODEOWNERS = ["@solomondg1"]
+1 -1
View File
@@ -1,4 +1,5 @@
#include "ads1118.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
namespace esphome {
@@ -8,7 +9,6 @@ static const char *const TAG = "ads1118";
static const uint8_t ADS1118_DATA_RATE_860_SPS = 0b111;
void ADS1118::setup() {
ESP_LOGCONFIG(TAG, "Setting up ads1118");
this->spi_setup();
this->config_ = 0;
-1
View File
@@ -34,7 +34,6 @@ class ADS1118 : public Component,
ADS1118() = default;
void setup() override;
void dump_config() override;
float get_setup_priority() const override { return setup_priority::DATA; }
/// Helper method to request a measurement from a sensor.
float request_measurement(ADS1118Multiplexer multiplexer, ADS1118Gain gain, bool temperature_mode);
@@ -1,17 +1,18 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import sensor, voltage_sampler
import esphome.config_validation as cv
from esphome.const import (
CONF_GAIN,
CONF_MULTIPLEXER,
DEVICE_CLASS_VOLTAGE,
CONF_TYPE,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_VOLTAGE,
STATE_CLASS_MEASUREMENT,
UNIT_CELSIUS,
UNIT_VOLT,
CONF_TYPE,
)
from .. import ads1118_ns, ADS1118, CONF_ADS1118_ID
from .. import ADS1118, CONF_ADS1118_ID, ads1118_ns
AUTO_LOAD = ["voltage_sampler"]
DEPENDENCIES = ["ads1118"]
+5 -23
View File
@@ -1,4 +1,5 @@
#include "ags10.h"
#include "esphome/core/helpers.h"
#include <cinttypes>
@@ -23,8 +24,6 @@ static const uint16_t ZP_CURRENT = 0x0000;
static const uint16_t ZP_DEFAULT = 0xFFFF;
void AGS10Component::setup() {
ESP_LOGCONFIG(TAG, "Setting up ags10...");
auto version = this->read_version_();
if (version) {
ESP_LOGD(TAG, "AGS10 Sensor Version: 0x%02X", *version);
@@ -44,8 +43,6 @@ void AGS10Component::setup() {
} else {
ESP_LOGE(TAG, "AGS10 Sensor Resistance: unknown");
}
ESP_LOGD(TAG, "Sensor initialized");
}
void AGS10Component::update() {
@@ -65,7 +62,7 @@ void AGS10Component::dump_config() {
case NONE:
break;
case COMMUNICATION_FAILED:
ESP_LOGE(TAG, "Communication with AGS10 failed!");
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
break;
case CRC_CHECK_FAILED:
ESP_LOGE(TAG, "The crc check failed");
@@ -92,7 +89,7 @@ void AGS10Component::dump_config() {
bool AGS10Component::new_i2c_address(uint8_t newaddress) {
uint8_t rev_newaddress = ~newaddress;
std::array<uint8_t, 5> data{newaddress, rev_newaddress, newaddress, rev_newaddress, 0};
data[4] = calc_crc8_(data, 4);
data[4] = crc8(data.data(), 4, 0xFF, 0x31, true);
if (!this->write_bytes(REG_ADDRESS, data)) {
this->error_code_ = COMMUNICATION_FAILED;
this->status_set_warning();
@@ -112,7 +109,7 @@ bool AGS10Component::set_zero_point_with_current_resistance() { return this->set
bool AGS10Component::set_zero_point_with(uint16_t value) {
std::array<uint8_t, 5> data{0x00, 0x0C, (uint8_t) ((value >> 8) & 0xFF), (uint8_t) (value & 0xFF), 0};
data[4] = calc_crc8_(data, 4);
data[4] = crc8(data.data(), 4, 0xFF, 0x31, true);
if (!this->write_bytes(REG_CALIBRATION, data)) {
this->error_code_ = COMMUNICATION_FAILED;
this->status_set_warning();
@@ -187,7 +184,7 @@ template<size_t N> optional<std::array<uint8_t, N>> AGS10Component::read_and_che
auto res = *data;
auto crc_byte = res[len];
if (crc_byte != calc_crc8_(res, len)) {
if (crc_byte != crc8(res.data(), len, 0xFF, 0x31, true)) {
this->error_code_ = CRC_CHECK_FAILED;
ESP_LOGE(TAG, "Reading AGS10 version failed: crc error!");
return optional<std::array<uint8_t, N>>();
@@ -195,20 +192,5 @@ template<size_t N> optional<std::array<uint8_t, N>> AGS10Component::read_and_che
return data;
}
template<size_t N> uint8_t AGS10Component::calc_crc8_(std::array<uint8_t, N> dat, uint8_t num) {
uint8_t i, byte1, crc = 0xFF;
for (byte1 = 0; byte1 < num; byte1++) {
crc ^= (dat[byte1]);
for (i = 0; i < 8; i++) {
if (crc & 0x80) {
crc = (crc << 1) ^ 0x31;
} else {
crc = (crc << 1);
}
}
}
return crc;
}
} // namespace ags10
} // namespace esphome
+2 -14
View File
@@ -1,9 +1,9 @@
#pragma once
#include "esphome/components/i2c/i2c.h"
#include "esphome/components/sensor/sensor.h"
#include "esphome/core/automation.h"
#include "esphome/core/component.h"
#include "esphome/components/sensor/sensor.h"
#include "esphome/components/i2c/i2c.h"
namespace esphome {
namespace ags10 {
@@ -31,8 +31,6 @@ class AGS10Component : public PollingComponent, public i2c::I2CDevice {
void dump_config() override;
float get_setup_priority() const override { return setup_priority::DATA; }
/**
* Modifies target address of AGS10.
*
@@ -101,16 +99,6 @@ class AGS10Component : public PollingComponent, public i2c::I2CDevice {
* Read, checks and returns data from the sensor.
*/
template<size_t N> optional<std::array<uint8_t, N>> read_and_check_(uint8_t a_register);
/**
* Calculates CRC8 value.
*
* CRC8 calculation, initial value: 0xFF, polynomial: 0x31 (x8+ x5+ x4+1)
*
* @param[in] dat the data buffer
* @param num number of bytes in the buffer
*/
template<size_t N> uint8_t calc_crc8_(std::array<uint8_t, N> dat, uint8_t num);
};
template<typename... Ts> class AGS10NewI2cAddressAction : public Action<Ts...>, public Parented<AGS10Component> {
+9 -9
View File
@@ -1,21 +1,21 @@
import esphome.codegen as cg
from esphome import automation
import esphome.config_validation as cv
import esphome.codegen as cg
from esphome.components import i2c, sensor
import esphome.config_validation as cv
from esphome.const import (
CONF_ADDRESS,
CONF_ID,
ICON_RADIATOR,
ICON_RESTART,
CONF_MODE,
CONF_TVOC,
CONF_VALUE,
CONF_VERSION,
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS_PARTS,
ENTITY_CATEGORY_DIAGNOSTIC,
ICON_RADIATOR,
ICON_RESTART,
STATE_CLASS_MEASUREMENT,
UNIT_OHM,
UNIT_PARTS_PER_BILLION,
CONF_ADDRESS,
CONF_TVOC,
CONF_VERSION,
CONF_MODE,
CONF_VALUE,
)
CONF_RESISTANCE = "resistance"
+24 -30
View File
@@ -13,8 +13,9 @@
// results making successive requests; the current implementation makes 3 attempts with a delay of 30ms each time.
#include "aht10.h"
#include "esphome/core/log.h"
#include "esphome/core/hal.h"
#include "esphome/core/helpers.h"
#include "esphome/core/log.h"
namespace esphome {
namespace aht10 {
@@ -34,57 +35,55 @@ static const uint8_t AHT10_INIT_ATTEMPTS = 10;
static const uint8_t AHT10_STATUS_BUSY = 0x80;
static const float AHT10_DIVISOR = 1048576.0f; // 2^20, used for temperature and humidity calculations
void AHT10Component::setup() {
if (this->write(AHT10_SOFTRESET_CMD, sizeof(AHT10_SOFTRESET_CMD)) != i2c::ERROR_OK) {
ESP_LOGE(TAG, "Reset AHT10 failed!");
ESP_LOGE(TAG, "Reset failed");
}
delay(AHT10_SOFTRESET_DELAY);
i2c::ErrorCode error_code = i2c::ERROR_INVALID_ARGUMENT;
switch (this->variant_) {
case AHT10Variant::AHT20:
ESP_LOGCONFIG(TAG, "Setting up AHT20");
error_code = this->write(AHT20_INITIALIZE_CMD, sizeof(AHT20_INITIALIZE_CMD));
break;
case AHT10Variant::AHT10:
ESP_LOGCONFIG(TAG, "Setting up AHT10");
error_code = this->write(AHT10_INITIALIZE_CMD, sizeof(AHT10_INITIALIZE_CMD));
break;
}
if (error_code != i2c::ERROR_OK) {
ESP_LOGE(TAG, "Communication with AHT10 failed!");
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
this->mark_failed();
return;
}
uint8_t cal_attempts = 0;
uint8_t data = AHT10_STATUS_BUSY;
int cal_attempts = 0;
while (data & AHT10_STATUS_BUSY) {
delay(AHT10_DEFAULT_DELAY);
if (this->read(&data, 1) != i2c::ERROR_OK) {
ESP_LOGE(TAG, "Communication with AHT10 failed!");
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
this->mark_failed();
return;
}
++cal_attempts;
if (cal_attempts > AHT10_INIT_ATTEMPTS) {
ESP_LOGE(TAG, "AHT10 initialization timed out!");
ESP_LOGE(TAG, "Initialization timed out");
this->mark_failed();
return;
}
}
if ((data & 0x68) != 0x08) { // Bit[6:5] = 0b00, NORMAL mode and Bit[3] = 0b1, CALIBRATED
ESP_LOGE(TAG, "AHT10 initialization failed!");
ESP_LOGE(TAG, "Initialization failed");
this->mark_failed();
return;
}
ESP_LOGV(TAG, "AHT10 initialization");
}
void AHT10Component::restart_read_() {
if (this->read_count_ == AHT10_ATTEMPTS) {
this->read_count_ = 0;
this->status_set_error("Measurements reading timed-out!");
this->status_set_error("Reading timed out");
return;
}
this->read_count_++;
@@ -97,24 +96,24 @@ void AHT10Component::read_data_() {
ESP_LOGD(TAG, "Read attempt %d at %ums", this->read_count_, (unsigned) (millis() - this->start_time_));
}
if (this->read(data, 6) != i2c::ERROR_OK) {
this->status_set_warning("AHT10 read failed, retrying soon");
this->status_set_warning(LOG_STR("Read failed, will retry"));
this->restart_read_();
return;
}
if ((data[0] & 0x80) == 0x80) { // Bit[7] = 0b1, device is busy
ESP_LOGD(TAG, "AHT10 is busy, waiting...");
ESP_LOGD(TAG, "Device busy, will retry");
this->restart_read_();
return;
}
if (data[1] == 0x0 && data[2] == 0x0 && (data[3] >> 4) == 0x0) {
// Unrealistic humidity (0x0)
// Invalid humidity (0x0)
if (this->humidity_sensor_ == nullptr) {
ESP_LOGV(TAG, "ATH10 Unrealistic humidity (0x0), but humidity is not required");
ESP_LOGV(TAG, "Invalid humidity (reading not required)");
} else {
ESP_LOGD(TAG, "ATH10 Unrealistic humidity (0x0), retrying...");
ESP_LOGD(TAG, "Invalid humidity, retrying");
if (this->write(AHT10_MEASURE_CMD, sizeof(AHT10_MEASURE_CMD)) != i2c::ERROR_OK) {
this->status_set_warning("Communication with AHT10 failed!");
this->status_set_warning(LOG_STR(ESP_LOG_MSG_COMM_FAIL));
}
this->restart_read_();
return;
@@ -123,22 +122,17 @@ void AHT10Component::read_data_() {
if (this->read_count_ > 1) {
ESP_LOGD(TAG, "Success at %ums", (unsigned) (millis() - this->start_time_));
}
uint32_t raw_temperature = ((data[3] & 0x0F) << 16) | (data[4] << 8) | data[5];
uint32_t raw_humidity = ((data[1] << 16) | (data[2] << 8) | data[3]) >> 4;
uint32_t raw_temperature = encode_uint24(data[3] & 0xF, data[4], data[5]);
uint32_t raw_humidity = encode_uint24(data[1], data[2], data[3]) >> 4;
if (this->temperature_sensor_ != nullptr) {
float temperature = ((200.0f * (float) raw_temperature) / 1048576.0f) - 50.0f;
float temperature = ((200.0f * static_cast<float>(raw_temperature)) / AHT10_DIVISOR) - 50.0f;
this->temperature_sensor_->publish_state(temperature);
}
if (this->humidity_sensor_ != nullptr) {
float humidity;
if (raw_humidity == 0) { // unrealistic value
humidity = NAN;
} else {
humidity = (float) raw_humidity * 100.0f / 1048576.0f;
}
float humidity = raw_humidity == 0 ? NAN : static_cast<float>(raw_humidity) * 100.0f / AHT10_DIVISOR;
if (std::isnan(humidity)) {
ESP_LOGW(TAG, "Invalid humidity! Sensor reported 0%% Hum");
ESP_LOGW(TAG, "Invalid humidity reading (0%%), ");
}
this->humidity_sensor_->publish_state(humidity);
}
@@ -150,7 +144,7 @@ void AHT10Component::update() {
return;
this->start_time_ = millis();
if (this->write(AHT10_MEASURE_CMD, sizeof(AHT10_MEASURE_CMD)) != i2c::ERROR_OK) {
this->status_set_warning("Communication with AHT10 failed!");
this->status_set_warning(LOG_STR(ESP_LOG_MSG_COMM_FAIL));
return;
}
this->restart_read_();
@@ -162,7 +156,7 @@ void AHT10Component::dump_config() {
ESP_LOGCONFIG(TAG, "AHT10:");
LOG_I2C_DEVICE(this);
if (this->is_failed()) {
ESP_LOGE(TAG, "Communication with AHT10 failed!");
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
}
LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
+2 -2
View File
@@ -1,16 +1,16 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import i2c, sensor
import esphome.config_validation as cv
from esphome.const import (
CONF_HUMIDITY,
CONF_ID,
CONF_TEMPERATURE,
CONF_VARIANT,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_TEMPERATURE,
STATE_CLASS_MEASUREMENT,
UNIT_CELSIUS,
UNIT_PERCENT,
CONF_VARIANT,
)
DEPENDENCIES = ["i2c"]
+1 -3
View File
@@ -17,8 +17,6 @@ static const char *const TAG = "aic3204";
}
void AIC3204::setup() {
ESP_LOGCONFIG(TAG, "Setting up AIC3204...");
// Set register page to 0
ERROR_CHECK(this->write_byte(AIC3204_PAGE_CTRL, 0x00), "Set page 0 failed");
// Initiate SW reset (PLL is powered off as part of reset)
@@ -113,7 +111,7 @@ void AIC3204::dump_config() {
LOG_I2C_DEVICE(this);
if (this->is_failed()) {
ESP_LOGE(TAG, "Communication with AIC3204 failed");
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
}
}
-1
View File
@@ -66,7 +66,6 @@ class AIC3204 : public audio_dac::AudioDac, public Component, public i2c::I2CDev
public:
void setup() override;
void dump_config() override;
float get_setup_priority() const override { return setup_priority::DATA; }
bool set_mute_off() override;
bool set_mute_on() override;

Some files were not shown because too many files have changed in this diff Show More