esphome 2025.10.1__py3-none-any.whl → 2025.10.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of esphome might be problematic. Click here for more details.

esphome/__main__.py CHANGED
@@ -185,7 +185,9 @@ def choose_upload_log_host(
185
185
  else:
186
186
  resolved.append(device)
187
187
  if not resolved:
188
- _LOGGER.error("All specified devices: %s could not be resolved.", defaults)
188
+ raise EsphomeError(
189
+ f"All specified devices {defaults} could not be resolved. Is the device connected to the network?"
190
+ )
189
191
  return resolved
190
192
 
191
193
  # No devices specified, show interactive chooser
@@ -41,7 +41,7 @@ CONFIG_SCHEMA = cv.All(
41
41
  cv.Schema(
42
42
  {
43
43
  cv.GenerateID(): cv.declare_id(BME680BSECComponent),
44
- cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.temperature,
44
+ cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.temperature_delta,
45
45
  cv.Optional(CONF_IAQ_MODE, default="STATIC"): cv.enum(
46
46
  IAQ_MODE_OPTIONS, upper=True
47
47
  ),
@@ -139,7 +139,7 @@ CONFIG_SCHEMA_BASE = (
139
139
  cv.Optional(CONF_SUPPLY_VOLTAGE, default="3.3V"): cv.enum(
140
140
  VOLTAGE_OPTIONS, upper=True
141
141
  ),
142
- cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.temperature,
142
+ cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.temperature_delta,
143
143
  cv.Optional(
144
144
  CONF_STATE_SAVE_INTERVAL, default="6hours"
145
145
  ): cv.positive_time_period_minutes,
@@ -30,14 +30,12 @@ class DateTimeBase : public EntityBase {
30
30
  #endif
31
31
  };
32
32
 
33
- #ifdef USE_TIME
34
33
  class DateTimeStateTrigger : public Trigger<ESPTime> {
35
34
  public:
36
35
  explicit DateTimeStateTrigger(DateTimeBase *parent) {
37
36
  parent->add_on_state_callback([this, parent]() { this->trigger(parent->state_as_esptime()); });
38
37
  }
39
38
  };
40
- #endif
41
39
 
42
40
  } // namespace datetime
43
41
  } // namespace esphome
@@ -790,6 +790,7 @@ async def to_code(config):
790
790
  add_idf_sdkconfig_option("CONFIG_AUTOSTART_ARDUINO", True)
791
791
  add_idf_sdkconfig_option("CONFIG_MBEDTLS_PSK_MODES", True)
792
792
  add_idf_sdkconfig_option("CONFIG_MBEDTLS_CERTIFICATE_BUNDLE", True)
793
+ add_idf_sdkconfig_option("CONFIG_ESP_PHY_REDUCE_TX_POWER", True)
793
794
 
794
795
  cg.add_build_flag("-Wno-nonnull-compare")
795
796
 
@@ -6,6 +6,7 @@
6
6
  #include <freertos/FreeRTOS.h>
7
7
  #include <freertos/task.h>
8
8
  #include <esp_idf_version.h>
9
+ #include <esp_ota_ops.h>
9
10
  #include <esp_task_wdt.h>
10
11
  #include <esp_timer.h>
11
12
  #include <soc/rtc.h>
@@ -52,6 +53,16 @@ void arch_init() {
52
53
  disableCore1WDT();
53
54
  #endif
54
55
  #endif
56
+
57
+ // If the bootloader was compiled with CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE the current
58
+ // partition will get rolled back unless it is marked as valid.
59
+ esp_ota_img_states_t state;
60
+ const esp_partition_t *running = esp_ota_get_running_partition();
61
+ if (esp_ota_get_state_partition(running, &state) == ESP_OK) {
62
+ if (state == ESP_OTA_IMG_PENDING_VERIFY) {
63
+ esp_ota_mark_app_valid_cancel_rollback();
64
+ }
65
+ }
55
66
  }
56
67
  void IRAM_ATTR HOT arch_feed_wdt() { esp_task_wdt_reset(); }
57
68
 
@@ -16,7 +16,8 @@ void HDC1080Component::setup() {
16
16
 
17
17
  // if configuration fails - there is a problem
18
18
  if (this->write_register(HDC1080_CMD_CONFIGURATION, config, 2) != i2c::ERROR_OK) {
19
- this->mark_failed();
19
+ ESP_LOGW(TAG, "Failed to configure HDC1080");
20
+ this->status_set_warning();
20
21
  return;
21
22
  }
22
23
  }
@@ -9,8 +9,8 @@ static const char *const TAG = "htu21d";
9
9
 
10
10
  static const uint8_t HTU21D_ADDRESS = 0x40;
11
11
  static const uint8_t HTU21D_REGISTER_RESET = 0xFE;
12
- static const uint8_t HTU21D_REGISTER_TEMPERATURE = 0xE3;
13
- static const uint8_t HTU21D_REGISTER_HUMIDITY = 0xE5;
12
+ static const uint8_t HTU21D_REGISTER_TEMPERATURE = 0xF3;
13
+ static const uint8_t HTU21D_REGISTER_HUMIDITY = 0xF5;
14
14
  static const uint8_t HTU21D_WRITERHT_REG_CMD = 0xE6; /**< Write RH/T User Register 1 */
15
15
  static const uint8_t HTU21D_REGISTER_STATUS = 0xE7;
16
16
  static const uint8_t HTU21D_WRITEHEATER_REG_CMD = 0x51; /**< Write Heater Control Register */
@@ -81,7 +81,7 @@ CONFIG_SCHEMA = (
81
81
  cv.int_range(min=0, max=0xFFFF, max_included=False),
82
82
  ),
83
83
  cv.Optional(CONF_AMBIENT_PRESSURE_COMPENSATION): cv.pressure,
84
- cv.Optional(CONF_TEMPERATURE_OFFSET, default="4°C"): cv.temperature,
84
+ cv.Optional(CONF_TEMPERATURE_OFFSET, default="4°C"): cv.temperature_delta,
85
85
  cv.Optional(CONF_AMBIENT_PRESSURE_COMPENSATION_SOURCE): cv.use_id(
86
86
  sensor.Sensor
87
87
  ),
@@ -56,6 +56,13 @@ uint32_t ESP8266UartComponent::get_config() {
56
56
  }
57
57
 
58
58
  void ESP8266UartComponent::setup() {
59
+ if (this->rx_pin_) {
60
+ this->rx_pin_->setup();
61
+ }
62
+ if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
63
+ this->tx_pin_->setup();
64
+ }
65
+
59
66
  // Use Arduino HardwareSerial UARTs if all used pins match the ones
60
67
  // preconfigured by the platform. For example if RX disabled but TX pin
61
68
  // is 1 we still want to use Serial.
@@ -6,6 +6,9 @@
6
6
  #include "esphome/core/defines.h"
7
7
  #include "esphome/core/helpers.h"
8
8
  #include "esphome/core/log.h"
9
+ #include "esphome/core/gpio.h"
10
+ #include "driver/gpio.h"
11
+ #include "soc/gpio_num.h"
9
12
 
10
13
  #ifdef USE_LOGGER
11
14
  #include "esphome/components/logger/logger.h"
@@ -104,6 +107,13 @@ void IDFUARTComponent::load_settings(bool dump_config) {
104
107
  return;
105
108
  }
106
109
 
110
+ if (this->rx_pin_) {
111
+ this->rx_pin_->setup();
112
+ }
113
+ if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
114
+ this->tx_pin_->setup();
115
+ }
116
+
107
117
  int8_t tx = this->tx_pin_ != nullptr ? this->tx_pin_->get_pin() : -1;
108
118
  int8_t rx = this->rx_pin_ != nullptr ? this->rx_pin_->get_pin() : -1;
109
119
  int8_t flow_control = this->flow_control_pin_ != nullptr ? this->flow_control_pin_->get_pin() : -1;
@@ -46,6 +46,13 @@ uint16_t LibreTinyUARTComponent::get_config() {
46
46
  }
47
47
 
48
48
  void LibreTinyUARTComponent::setup() {
49
+ if (this->rx_pin_) {
50
+ this->rx_pin_->setup();
51
+ }
52
+ if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
53
+ this->tx_pin_->setup();
54
+ }
55
+
49
56
  int8_t tx_pin = tx_pin_ == nullptr ? -1 : tx_pin_->get_pin();
50
57
  int8_t rx_pin = rx_pin_ == nullptr ? -1 : rx_pin_->get_pin();
51
58
  bool tx_inverted = tx_pin_ != nullptr && tx_pin_->is_inverted();
@@ -52,6 +52,13 @@ uint16_t RP2040UartComponent::get_config() {
52
52
  }
53
53
 
54
54
  void RP2040UartComponent::setup() {
55
+ if (this->rx_pin_) {
56
+ this->rx_pin_->setup();
57
+ }
58
+ if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
59
+ this->tx_pin_->setup();
60
+ }
61
+
55
62
  uint16_t config = get_config();
56
63
 
57
64
  constexpr uint32_t valid_tx_uart_0 = __bitset({0, 12, 16, 28});
@@ -244,6 +244,20 @@ RESERVED_IDS = [
244
244
  "uart0",
245
245
  "uart1",
246
246
  "uart2",
247
+ # ESP32 ROM functions
248
+ "crc16_be",
249
+ "crc16_le",
250
+ "crc32_be",
251
+ "crc32_le",
252
+ "crc8_be",
253
+ "crc8_le",
254
+ "dbg_state",
255
+ "debug_timer",
256
+ "one_bits",
257
+ "recv_packet",
258
+ "send_packet",
259
+ "check_pos",
260
+ "software_reset",
247
261
  ]
248
262
 
249
263
 
esphome/const.py CHANGED
@@ -4,7 +4,7 @@ from enum import Enum
4
4
 
5
5
  from esphome.enum import StrEnum
6
6
 
7
- __version__ = "2025.10.1"
7
+ __version__ = "2025.10.3"
8
8
 
9
9
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
10
10
  VALID_SUBSTITUTIONS_CHARACTERS = (
@@ -696,6 +696,7 @@ CONF_OPEN_DRAIN = "open_drain"
696
696
  CONF_OPEN_DRAIN_INTERRUPT = "open_drain_interrupt"
697
697
  CONF_OPEN_DURATION = "open_duration"
698
698
  CONF_OPEN_ENDSTOP = "open_endstop"
699
+ CONF_OPENTHREAD = "openthread"
699
700
  CONF_OPERATION = "operation"
700
701
  CONF_OPTIMISTIC = "optimistic"
701
702
  CONF_OPTION = "option"
esphome/core/__init__.py CHANGED
@@ -11,6 +11,7 @@ from esphome.const import (
11
11
  CONF_COMMENT,
12
12
  CONF_ESPHOME,
13
13
  CONF_ETHERNET,
14
+ CONF_OPENTHREAD,
14
15
  CONF_PORT,
15
16
  CONF_USE_ADDRESS,
16
17
  CONF_WEB_SERVER,
@@ -641,6 +642,9 @@ class EsphomeCore:
641
642
  if CONF_ETHERNET in self.config:
642
643
  return self.config[CONF_ETHERNET][CONF_USE_ADDRESS]
643
644
 
645
+ if CONF_OPENTHREAD in self.config:
646
+ return f"{self.name}.local"
647
+
644
648
  return None
645
649
 
646
650
  @property
@@ -10,6 +10,10 @@ from esphome.helpers import get_bool_env
10
10
 
11
11
  from .util.password import password_hash
12
12
 
13
+ # Sentinel file name used for CORE.config_path when dashboard initializes.
14
+ # This ensures .parent returns the config directory instead of root.
15
+ _DASHBOARD_SENTINEL_FILE = "___DASHBOARD_SENTINEL___.yaml"
16
+
13
17
 
14
18
  class DashboardSettings:
15
19
  """Settings for the dashboard."""
@@ -48,7 +52,12 @@ class DashboardSettings:
48
52
  self.config_dir = Path(args.configuration)
49
53
  self.absolute_config_dir = self.config_dir.resolve()
50
54
  self.verbose = args.verbose
51
- CORE.config_path = self.config_dir / "."
55
+ # Set to a sentinel file so .parent gives us the config directory.
56
+ # Previously this was `os.path.join(self.config_dir, ".")` which worked because
57
+ # os.path.dirname("/config/.") returns "/config", but Path("/config/.").parent
58
+ # normalizes to Path("/config") first, then .parent returns Path("/"), breaking
59
+ # secret resolution. Using a sentinel file ensures .parent gives the correct directory.
60
+ CORE.config_path = self.config_dir / _DASHBOARD_SENTINEL_FILE
52
61
 
53
62
  @property
54
63
  def relative_url(self) -> str:
@@ -1058,7 +1058,8 @@ class DownloadBinaryRequestHandler(BaseHandler):
1058
1058
  "download",
1059
1059
  f"{storage_json.name}-{file_name}",
1060
1060
  )
1061
- path = storage_json.firmware_bin_path.with_name(file_name)
1061
+
1062
+ path = storage_json.firmware_bin_path.parent.joinpath(file_name)
1062
1063
 
1063
1064
  if not path.is_file():
1064
1065
  args = ["esphome", "idedata", settings.rel_path(configuration)]
esphome/helpers.py CHANGED
@@ -224,36 +224,37 @@ def resolve_ip_address(
224
224
  return res
225
225
 
226
226
  # Process hosts
227
- cached_addresses: list[str] = []
227
+
228
228
  uncached_hosts: list[str] = []
229
- has_cache = address_cache is not None
230
229
 
231
230
  for h in hosts:
232
231
  if is_ip_address(h):
233
- if has_cache:
234
- # If we have a cache, treat IPs as cached
235
- cached_addresses.append(h)
236
- else:
237
- # If no cache, pass IPs through to resolver with hostnames
238
- uncached_hosts.append(h)
232
+ _add_ip_addresses_to_addrinfo([h], port, res)
239
233
  elif address_cache and (cached := address_cache.get_addresses(h)):
240
- # Found in cache
241
- cached_addresses.extend(cached)
234
+ _add_ip_addresses_to_addrinfo(cached, port, res)
242
235
  else:
243
236
  # Not cached, need to resolve
244
237
  if address_cache and address_cache.has_cache():
245
238
  _LOGGER.info("Host %s not in cache, will need to resolve", h)
246
239
  uncached_hosts.append(h)
247
240
 
248
- # Process cached addresses (includes direct IPs and cached lookups)
249
- _add_ip_addresses_to_addrinfo(cached_addresses, port, res)
250
-
251
241
  # If we have uncached hosts (only non-IP hostnames), resolve them
252
242
  if uncached_hosts:
243
+ from aioesphomeapi.host_resolver import AddrInfo as AioAddrInfo
244
+
245
+ from esphome.core import EsphomeError
253
246
  from esphome.resolver import AsyncResolver
254
247
 
255
248
  resolver = AsyncResolver(uncached_hosts, port)
256
- addr_infos = resolver.resolve()
249
+ addr_infos: list[AioAddrInfo] = []
250
+ try:
251
+ addr_infos = resolver.resolve()
252
+ except EsphomeError as err:
253
+ if not res:
254
+ # No pre-resolved addresses available, DNS resolution is fatal
255
+ raise
256
+ _LOGGER.info("%s (using %d already resolved IP addresses)", err, len(res))
257
+
257
258
  # Convert aioesphomeapi AddrInfo to our format
258
259
  for addr_info in addr_infos:
259
260
  sockaddr = addr_info.sockaddr
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esphome
3
- Version: 2025.10.1
3
+ Version: 2025.10.3
4
4
  Summary: ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.
5
5
  Author-email: The ESPHome Authors <esphome@openhomefoundation.org>
6
6
  License-Expression: MIT
@@ -1,12 +1,12 @@
1
1
  esphome/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- esphome/__main__.py,sha256=CyF97d_1fVXAe_S71fgwljmwX5egquqVxt0-qQZeoRU,43870
2
+ esphome/__main__.py,sha256=mZntGYZogDYs6njugstrFFe7RZx2TlQv-2AmUOCdE3I,43943
3
3
  esphome/address_cache.py,sha256=mXLDjOZ6NZebwRXSldZLnpPn51jfXeReRx0YdQ6oxOE,4622
4
4
  esphome/automation.py,sha256=Gd_VHPDp5a1GYVNgwrzsCMuzHobmv49gcWdlV3y646g,17696
5
5
  esphome/codegen.py,sha256=91Q9SVbTlgH_gFU4_sbVi6YEAiOjLuAGHG6qqV3lLHo,1939
6
6
  esphome/config.py,sha256=fu7G01comMPAfWd-ZZzUyIqO6cuLb6F44Sxv2LIFCUc,45156
7
7
  esphome/config_helpers.py,sha256=P-tlafqFIQuCxdWERlk38MXQcB9apHcR68-DgeUco5s,6207
8
- esphome/config_validation.py,sha256=WOIf3s3CIhWiAFJ7NdpmMzLfCNv89J67pvZXHmiBz5I,64808
9
- esphome/const.py,sha256=n64w5wIHdaCrpC_RSrNmb3C1to0xC-cRsEEnmOUax6s,44456
8
+ esphome/config_validation.py,sha256=r1llmDF0ePekWWblPwLd0Cnrbxwn0W1BBZubpBtYuEc,65057
9
+ esphome/const.py,sha256=Iw13HI_h56ExkXtKERtARogQBNfIqEGFM1qyohOSpE0,44487
10
10
  esphome/coroutine.py,sha256=JFBDo8ngY46zhxvjk5aQ5MO_-qrqKDfKQTglEIqHrYY,11946
11
11
  esphome/cpp_generator.py,sha256=DhHZT5s-Pbx5MJ762N_hFOYFo4Q9c0wJQG4p7UU_1lc,31901
12
12
  esphome/cpp_helpers.py,sha256=r-hrUp7luke-ByuK2Z0TCzIvn4tTswMUkAzlVoKntiI,4039
@@ -16,7 +16,7 @@ esphome/espota2.py,sha256=WB9STR5RuoeKEa9ELYu9q2Ax8IqIXjoNw6SPydhOGvg,15219
16
16
  esphome/external_files.py,sha256=BHNQqKGkY-AWZ7hEVPoB4mxgHQi-pYYHkrUayoXTa8M,3398
17
17
  esphome/final_validate.py,sha256=EPhbU4xyEL3POdSY7oygyAIVvkeYM7qH-6eZWb76DFE,1898
18
18
  esphome/git.py,sha256=GClrvAo4VsAhKRRDbqSv5nivtGZThEfbTCDxgq6uJyI,6615
19
- esphome/helpers.py,sha256=zqbarmDBNNR8Ujh8JK8isvYkHfBfcbdKWperM4uCQQk,17084
19
+ esphome/helpers.py,sha256=mZf55V1uwR_iDvDYnw6CYwcN95uJm1nf7XnoylwVhLs,17083
20
20
  esphome/loader.py,sha256=ZixSTTXUDHiv7QDjsVQOqNM3MMBPbsZEn5JKtAwYONM,7545
21
21
  esphome/log.py,sha256=f2wZVDYABr-2FNy5NzHjNey6Nf6HzVCp1zubfkk8o0w,2433
22
22
  esphome/mqtt.py,sha256=f15I9DWxxo0wDj-9Aw7afSYQ0jpcPzHbmE6VVvPFruU,9912
@@ -418,12 +418,12 @@ esphome/components/bme680/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
418
418
  esphome/components/bme680/bme680.cpp,sha256=WrRH-u_NJitaM5mFZkanPTVOjzyZ4EIq3rlf9aa1Oxc,16989
419
419
  esphome/components/bme680/bme680.h,sha256=zdTFcpzNb3nSPy7q9V3iSJ5uBsmoZgJkzxU3Fcwf_BY,4678
420
420
  esphome/components/bme680/sensor.py,sha256=fjZOcC0AymBF4f3vdgd-WfTfkqL0QrCOnaXdnGvGolU,5801
421
- esphome/components/bme680_bsec/__init__.py,sha256=FmtARbE-B7Dkb1FnOWQavaAdOggraJqrDIocHitQrmI,3062
421
+ esphome/components/bme680_bsec/__init__.py,sha256=gv6WRGGwdPw6-F0iVde6ahKAwt3g8n9QKbPqnVWCkeE,3068
422
422
  esphome/components/bme680_bsec/bme680_bsec.cpp,sha256=I3YR9oQF_jP-9_FAG-BMhBZi_hE0mB_Ym8u0ZN6o9Mc,22630
423
423
  esphome/components/bme680_bsec/bme680_bsec.h,sha256=aUGZXwSiu0wOlt13_mxhy0yKxToAInX2rnhZ_UQc7TM,5907
424
424
  esphome/components/bme680_bsec/sensor.py,sha256=Y4efGwK7zDHbS8ET7o-bF__A86OJsZt2Ypl4sRtqKLE,4114
425
425
  esphome/components/bme680_bsec/text_sensor.py,sha256=h2WQ_GjAOTsPqhCXwlfa-WmfOsUVWBcLKU5iO0fDEFw,921
426
- esphome/components/bme68x_bsec2/__init__.py,sha256=OarBjxWaiAoR_xc6isNHHSaa6PkDXinQY4-Wur9BR-I,6234
426
+ esphome/components/bme68x_bsec2/__init__.py,sha256=j0KAh7MifXz7E9PWuW1G5pSMN8AdsdrwzD1ZWKjlOtM,6240
427
427
  esphome/components/bme68x_bsec2/bme68x_bsec2.cpp,sha256=LRIAb86G4WL2orOYPsKmOaeehPgQHwjP7yXR2DH8kjQ,20493
428
428
  esphome/components/bme68x_bsec2/bme68x_bsec2.h,sha256=EVck6JgQOYydwRfO9Vvv5YgY4CDiMMwHzOXozJZZsNA,5415
429
429
  esphome/components/bme68x_bsec2/sensor.py,sha256=AM-oEOcJuOmu55lkYZ7SOrbqx7wUYd4ku8s_DxK1cR8,4336
@@ -673,7 +673,7 @@ esphome/components/dashboard_import/dashboard_import.h,sha256=gPLB3_vwG3ma-j-VHe
673
673
  esphome/components/datetime/__init__.py,sha256=_NjXvuxRyOQvLmf5E5A9B2e3PF8ZWmRTtw98dM10GGc,8911
674
674
  esphome/components/datetime/date_entity.cpp,sha256=IbEWpZwT6bqNOd6WRu8_Jm6RH9j2oXznydiZ_xRPg7w,3700
675
675
  esphome/components/datetime/date_entity.h,sha256=vg5e6YYGMaRQw0lz8c-xt4Sji6Tk2rzDwp5Q4g70kq0,2592
676
- esphome/components/datetime/datetime_base.h,sha256=t-65pTVsHCOk9zWNWkgLFC296DjHAZb5NvKCC_smWCw,1051
676
+ esphome/components/datetime/datetime_base.h,sha256=6exbxBZDJOcziQBQfuI4Kjxk2m6XUXO2yJbnZYCJgeM,1028
677
677
  esphome/components/datetime/datetime_entity.cpp,sha256=gWxzAJFSnkxWw1xYdPo-KDYvjZxMs-IHT8UAN8q476A,7758
678
678
  esphome/components/datetime/datetime_entity.h,sha256=C7wW-0U2GV6FJWSBpP5vNKJtI3pK3jJxjGggHG5kGgA,3750
679
679
  esphome/components/datetime/time_entity.cpp,sha256=R7bZ569BcA8qxhl0cfhEyh2uyxLdIrfbcWCvM4wHjd0,4411
@@ -863,10 +863,10 @@ esphome/components/es8388/select/adc_input_mic_select.cpp,sha256=xBlweJHP_BHSvwP
863
863
  esphome/components/es8388/select/adc_input_mic_select.h,sha256=1Wf54OGjnrj9vFe7WuIU10qraRAJX7HM1qEcCTTSlvc,336
864
864
  esphome/components/es8388/select/dac_output_select.cpp,sha256=FDOC7NHBaR34BqzzsPrmzBIzY_4o_YkF3_wSs_A9LC8,302
865
865
  esphome/components/es8388/select/dac_output_select.h,sha256=u00z0jHqKmqsaKht3b3k7aGtYudU0cCJRTOw1Zh-mbw,334
866
- esphome/components/esp32/__init__.py,sha256=NNLUijHeU5ZSlf5AbS0Sk8oYQN5wk5-cbfnFwIRqttc,39042
866
+ esphome/components/esp32/__init__.py,sha256=OIvKIuakzmwF5a0VUqvI1vFhZMD_RwVk7kjgueZaDUE,39115
867
867
  esphome/components/esp32/boards.py,sha256=O2f122xZLngeY1pBbyjThMd1rLfrda1332rZF68n2KM,58436
868
868
  esphome/components/esp32/const.py,sha256=3sPibOKzbGgtSUIn7PfTQJRyob6x1vUtxagKCGS9CyY,1130
869
- esphome/components/esp32/core.cpp,sha256=7zSi6LBjWUV1qMNdCTs3R4LRLkg6Xnl8a7bsTGy-f8Q,2747
869
+ esphome/components/esp32/core.cpp,sha256=wgkilw_-s3YRT-b0CBSaPNj5r3Ey77ZEE0qd63B8Drs,3197
870
870
  esphome/components/esp32/gpio.cpp,sha256=_lXijDd4c6cB2HI8vIUtrmKodoGZ43AOSRgdOkS3pIg,6870
871
871
  esphome/components/esp32/gpio.h,sha256=uMa21XBEGZedxBP9EsXhf815BuOSTr7md4Ww6cFHcws,2314
872
872
  esphome/components/esp32/gpio.py,sha256=gQFf7rA1DB-TRgu72ADY11LBBmKhWWFRTuQwxGgdgSc,7760
@@ -1178,7 +1178,7 @@ esphome/components/hbridge/switch/__init__.py,sha256=7EJql03a0gGpfD_3Ofe6xSRmhwV
1178
1178
  esphome/components/hbridge/switch/hbridge_switch.cpp,sha256=Eh_zNYDq0cpCV5Px22Pe5wzc7cwaWMplhn3onmtNlxA,2770
1179
1179
  esphome/components/hbridge/switch/hbridge_switch.h,sha256=NwguFzV68Fa6OmzvzFM8Y-Ig1FYdatEwP_pe-jd8r4A,1352
1180
1180
  esphome/components/hdc1080/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1181
- esphome/components/hdc1080/hdc1080.cpp,sha256=onSnvejmce8P0Dsgn39p1447hN13mvCPLpU2SeHF8N0,2367
1181
+ esphome/components/hdc1080/hdc1080.cpp,sha256=EWIWrv5FodXfj0SOwgHG_OkX7DX50CRvT7hggCVKQ14,2424
1182
1182
  esphome/components/hdc1080/hdc1080.h,sha256=jqr4UyU8o8jS929N0ba86b4wjQStYYIt1kfHdmsokGM,722
1183
1183
  esphome/components/hdc1080/sensor.py,sha256=XSg1Ailx3GlxZX2pHwyxVxK6IaQcrZpxwfCYUiimb6g,1688
1184
1184
  esphome/components/he60r/__init__.py,sha256=4Nn7UhpMJ9oSbuLdyVEW7G9PlIey2v33SWRNVizt9Oc,30
@@ -1286,7 +1286,7 @@ esphome/components/http_request/update/__init__.py,sha256=cIoR3Gw0Bc2ZKoc-1LfW1g
1286
1286
  esphome/components/http_request/update/http_request_update.cpp,sha256=ly_2n4pE751OPPhYpXARBKswhr8krxpW5LPTCTkVLB4,7517
1287
1287
  esphome/components/http_request/update/http_request_update.h,sha256=8OP3PwsEAUsqJfkNOwOHUJl7HJdgknHBBOiAbAiBPXU,1255
1288
1288
  esphome/components/htu21d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1289
- esphome/components/htu21d/htu21d.cpp,sha256=XAeGTYFgDnUDSGv65K7zTKQWwzLTKRbgPC5oQO_GAFM,4560
1289
+ esphome/components/htu21d/htu21d.cpp,sha256=WP0_Wvtm7BAhb8iwTsBnQS39joxtUkzPqqrk-9ERCEI,4560
1290
1290
  esphome/components/htu21d/htu21d.h,sha256=zbuxEFgwjRWYp1x1mW1AX0_B1ZfV5BeNX2Ce56xV1Lc,1894
1291
1291
  esphome/components/htu21d/sensor.py,sha256=yetZH4qlaDqyFU9Mo3B7ByqB5kNpVeqrQuqJDM0Ifeg,3839
1292
1292
  esphome/components/htu31d/__init__.py,sha256=OVxEVhYcUY-P_ZwdHRIQ_gjZCxGPi12jHy7xuix1z-A,36
@@ -2680,7 +2680,7 @@ esphome/components/scd4x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
2680
2680
  esphome/components/scd4x/automation.h,sha256=bGkGwV0wHimPe_0oug111GAsCJyahpr1LRoW0n1F81E,715
2681
2681
  esphome/components/scd4x/scd4x.cpp,sha256=fgXtz-GTE4A0gFG4XJerYuAxSdXsuM1tPDTEW5uHlRY,11834
2682
2682
  esphome/components/scd4x/scd4x.h,sha256=ZCCgczDXJ4ocxEMKeAN9RFaMcZTWls4E-tIru5DCIcU,2216
2683
- esphome/components/scd4x/sensor.py,sha256=NYhoNVTz6inXvoY2wu6l8aWDEKpzOrGBax8lj6y5QnQ,5623
2683
+ esphome/components/scd4x/sensor.py,sha256=p2C1A80yBw42C69jUtimAPdVBz3E5CjvvGY2nWf8mU8,5629
2684
2684
  esphome/components/script/__init__.py,sha256=N4B0qNFRls5Z4LfHQLDgeCZ24RVD8mIhjA6Er-SBXCk,7771
2685
2685
  esphome/components/script/script.cpp,sha256=7-ucdkKqP25FdHWkrEWa70oo85si2zKB1lbY1QKZXmM,531
2686
2686
  esphome/components/script/script.h,sha256=Pc-CfDOklDggE2RIurKoLBxxeyM5LltZO636STEplwI,8584
@@ -3379,15 +3379,15 @@ esphome/components/uart/uart.cpp,sha256=OIxeRlO_6X1wKbsvqTDMf8PAr0M1c7TdM1tRAQuu
3379
3379
  esphome/components/uart/uart.h,sha256=n2S1ZyH5jOf3ua9Sm5uU-HP0ZQX_OAV2TmngLUbE8bI,2531
3380
3380
  esphome/components/uart/uart_component.cpp,sha256=5Kta9_Ubw3LOvrxooGR8hnYLOhiqLhpaAUNXoEBHuvA,864
3381
3381
  esphome/components/uart/uart_component.h,sha256=GomkDgOYOI74H5XjRHxnqy9o8F1r5czYNiWKNQUWg9A,7142
3382
- esphome/components/uart/uart_component_esp8266.cpp,sha256=jS8Q_spiIymS9_bSPKMOZ050jx-Vkuaq7TTdiP4-dBc,10789
3382
+ esphome/components/uart/uart_component_esp8266.cpp,sha256=YfIEnD-rWqIsXGQxoZ7jBxOkbs_xdjxInMlLjd74acs,10934
3383
3383
  esphome/components/uart/uart_component_esp8266.h,sha256=5KMN-fUHCDbS9ppn-PKziVknoBLZqy-tJx9HGXh_qOE,2428
3384
- esphome/components/uart/uart_component_esp_idf.cpp,sha256=rnOQFcig9jCGb8DpFyJ2HfwybuK23AItpF8ddQFKQDs,8959
3384
+ esphome/components/uart/uart_component_esp_idf.cpp,sha256=_rbThbjC_hAU7l-1ZB6Rg7LqgmnrBVgCmiGxOUZ2GDY,9186
3385
3385
  esphome/components/uart/uart_component_esp_idf.h,sha256=WDeyfUBQ3OLX6xJoKgEPaFtjiU4f5CoN-a5NAXnXHXE,1595
3386
3386
  esphome/components/uart/uart_component_host.cpp,sha256=s1qnqA8azZR2lLGIXRVIh22Tf02dKIOw-nDuKVZ4qns,7165
3387
3387
  esphome/components/uart/uart_component_host.h,sha256=3U7oLyjyWW0sOuwSx1puyeWR-w_a7ukhE-3obxCyHWU,992
3388
- esphome/components/uart/uart_component_libretiny.cpp,sha256=8zoJi6oCgGnx3BO7ALMHowSNDY7tixmtPNsey8iSoIw,4685
3388
+ esphome/components/uart/uart_component_libretiny.cpp,sha256=8KtXFFAwaX9qDRP_SnkTp-ZcwDtRBfwPyP7kpAsbPJE,4830
3389
3389
  esphome/components/uart/uart_component_libretiny.h,sha256=Enf4Chvo7w3I4B3e9uT7qi6frqG_lXRB4dFQRorjiGE,990
3390
- esphome/components/uart/uart_component_rp2040.cpp,sha256=LiyHN3-ug0tLWf3M8X7xgTlgSKWPtsOIcBYFESg3dSc,5438
3390
+ esphome/components/uart/uart_component_rp2040.cpp,sha256=eJ1j7F-TctzzgO8GON0pl8FD7mSJ_h815kMMLRD58RU,5583
3391
3391
  esphome/components/uart/uart_component_rp2040.h,sha256=rRbmMP_UlTQa-Qn2i2HgbKcxisXjrTsc-7B8CWLVy44,1016
3392
3392
  esphome/components/uart/uart_debugger.cpp,sha256=GhHBYSirECFJqmqy38eCv0ayKUYNgdD2FV9aVKQpKwk,5493
3393
3393
  esphome/components/uart/uart_debugger.h,sha256=MCZ7YEd-iIoEJcdEoop0Xb1e4A64aNxLXPGSKcoQZCI,4008
@@ -3723,7 +3723,7 @@ esphome/components/zyaura/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
3723
3723
  esphome/components/zyaura/sensor.py,sha256=cSmO4ozYdi4ZD7NK4lmYjswWVmJoDvEruU1HhGrZSE0,2476
3724
3724
  esphome/components/zyaura/zyaura.cpp,sha256=F7WM8XAZ5MYuCD3eERm2_IA-O7sP1i-A-yF5TV4PqX8,3679
3725
3725
  esphome/components/zyaura/zyaura.h,sha256=7O3EGFIopUEfBp3A5sBC0l4zx2mesRxDWa_MBdGtPKQ,2307
3726
- esphome/core/__init__.py,sha256=4TnnZeKAoV-EAiKVdRu5dkBWz1ettqW3RO4Z9VxxkhI,30466
3726
+ esphome/core/__init__.py,sha256=a2o-xr9YWut3tF8oZZOY43pl3gdb-EhLfckgel3ZjoQ,30571
3727
3727
  esphome/core/application.cpp,sha256=3cpbiUjvUf4W4qmDOmXMkWUVtMz5BmnOkgj3eylC1wo,22814
3728
3728
  esphome/core/application.h,sha256=Enfg00Tc0egbU3-WvoNGqTDy4TZk12tYwMS5Laf4_Y8,20439
3729
3729
  esphome/core/area.h,sha256=mtFxmuv8fC2hArcey3cZ0F6hMXSO2QpFZ9Xv49z4rvk,393
@@ -3775,8 +3775,8 @@ esphome/dashboard/dashboard.py,sha256=4k32z98tQXj01FKHfXePLlP_zch-piHSxdbhjdgf3a
3775
3775
  esphome/dashboard/dns.py,sha256=zmePZ5i_qTMbjku-7sOFSRHLBH_BuI4wiu2nLhIlm9c,1999
3776
3776
  esphome/dashboard/entries.py,sha256=L-o0Wvo4moS-W-OGViZ3lOUTWyR_Sm1V6P_RrbApqqw,15607
3777
3777
  esphome/dashboard/models.py,sha256=YKr-M-PY1IO-_mtxL2sw5hWbFGXVsBQXq0-mLiyJXsc,2181
3778
- esphome/dashboard/settings.py,sha256=17ia_N1BMGCFnUC5XHOOJhV4FUs8atPLDpnTVoWNHfM,2836
3779
- esphome/dashboard/web_server.py,sha256=TQGkuADbyI86IAGUOksBTOyCXZGyT0fGYVkGLMUpSdk,56658
3778
+ esphome/dashboard/settings.py,sha256=CI9WO--Xntt1Nyyknbj61vVfWFYGA7QUFfwoR0UOHCg,3495
3779
+ esphome/dashboard/web_server.py,sha256=xQ3aTnQNqpEK02Vi4YE0-ipuEp-mT9EGA8Z-bln2-ks,56665
3780
3780
  esphome/dashboard/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3781
3781
  esphome/dashboard/status/mdns.py,sha256=2cxZsnIxDSsaaEiNQ_jIxW-LdvEigFMerfPTr2zy31g,6621
3782
3782
  esphome/dashboard/status/mqtt.py,sha256=2QOq1vgwJCHW5uL_hqmi_R5fX5OTeTJUHx7c0pMLQKE,2578
@@ -3786,9 +3786,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
3786
3786
  esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
3787
3787
  esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
3788
3788
  esphome/dashboard/util/text.py,sha256=wwFtORlvHjsYkqb68IT-772LHAhWxT4OtnkIcPICQB0,317
3789
- esphome-2025.10.1.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3790
- esphome-2025.10.1.dist-info/METADATA,sha256=686fJT3AL6uuhrCF4LZWVu1c5XTclV41e4HMbttq4IY,3633
3791
- esphome-2025.10.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3792
- esphome-2025.10.1.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3793
- esphome-2025.10.1.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3794
- esphome-2025.10.1.dist-info/RECORD,,
3789
+ esphome-2025.10.3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3790
+ esphome-2025.10.3.dist-info/METADATA,sha256=t-rv1wLsMFgKES-CpiaR1zIPZJ1hW2aNSd7n_eArdf0,3633
3791
+ esphome-2025.10.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3792
+ esphome-2025.10.3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3793
+ esphome-2025.10.3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3794
+ esphome-2025.10.3.dist-info/RECORD,,