esphome 2025.7.1__py3-none-any.whl → 2025.7.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.
Files changed (36) hide show
  1. esphome/components/api/homeassistant_service.h +3 -0
  2. esphome/components/bme680_bsec/__init__.py +10 -2
  3. esphome/components/esp32_camera/__init__.py +22 -0
  4. esphome/components/esp32_touch/esp32_touch_v1.cpp +16 -10
  5. esphome/components/fastled_clockless/light.py +17 -2
  6. esphome/components/fastled_spi/light.py +10 -0
  7. esphome/components/gpio/binary_sensor/__init__.py +34 -2
  8. esphome/components/logger/__init__.py +2 -2
  9. esphome/components/lvgl/types.py +2 -2
  10. esphome/components/lvgl/widgets/meter.py +3 -0
  11. esphome/components/neopixelbus/light.py +10 -1
  12. esphome/components/sdl/sdl_esphome.cpp +3 -0
  13. esphome/components/speaker/media_player/audio_pipeline.cpp +14 -2
  14. esphome/components/speaker/media_player/audio_pipeline.h +1 -0
  15. esphome/components/tuya/fan/__init__.py +6 -5
  16. esphome/components/voice_assistant/voice_assistant.cpp +52 -20
  17. esphome/components/voice_assistant/voice_assistant.h +11 -2
  18. esphome/components/web_server/ota/ota_web_server.cpp +2 -2
  19. esphome/components/web_server/web_server.cpp +3 -1
  20. esphome/components/wireguard/wireguard.cpp +13 -3
  21. esphome/config_validation.py +58 -26
  22. esphome/const.py +1 -1
  23. esphome/core/application.cpp +39 -24
  24. esphome/core/application.h +2 -0
  25. esphome/core/base_automation.h +2 -2
  26. esphome/core/component.cpp +2 -2
  27. esphome/core/event_pool.h +2 -2
  28. esphome/core/lock_free_queue.h +2 -7
  29. esphome/core/scheduler.cpp +1 -1
  30. esphome/core/scheduler.h +4 -3
  31. {esphome-2025.7.1.dist-info → esphome-2025.7.3.dist-info}/METADATA +1 -1
  32. {esphome-2025.7.1.dist-info → esphome-2025.7.3.dist-info}/RECORD +36 -36
  33. {esphome-2025.7.1.dist-info → esphome-2025.7.3.dist-info}/WHEEL +0 -0
  34. {esphome-2025.7.1.dist-info → esphome-2025.7.3.dist-info}/entry_points.txt +0 -0
  35. {esphome-2025.7.1.dist-info → esphome-2025.7.3.dist-info}/licenses/LICENSE +0 -0
  36. {esphome-2025.7.1.dist-info → esphome-2025.7.3.dist-info}/top_level.txt +0 -0
@@ -8,6 +8,7 @@
8
8
  #include "esphome/core/log.h"
9
9
  #include "esphome/core/time.h"
10
10
  #include "esphome/components/network/util.h"
11
+ #include "esphome/core/helpers.h"
11
12
 
12
13
  #include <esp_wireguard.h>
13
14
  #include <esp_wireguard_err.h>
@@ -42,7 +43,10 @@ void Wireguard::setup() {
42
43
 
43
44
  this->publish_enabled_state();
44
45
 
45
- this->wg_initialized_ = esp_wireguard_init(&(this->wg_config_), &(this->wg_ctx_));
46
+ {
47
+ LwIPLock lock;
48
+ this->wg_initialized_ = esp_wireguard_init(&(this->wg_config_), &(this->wg_ctx_));
49
+ }
46
50
 
47
51
  if (this->wg_initialized_ == ESP_OK) {
48
52
  ESP_LOGI(TAG, "Initialized");
@@ -249,7 +253,10 @@ void Wireguard::start_connection_() {
249
253
  }
250
254
 
251
255
  ESP_LOGD(TAG, "Starting connection");
252
- this->wg_connected_ = esp_wireguard_connect(&(this->wg_ctx_));
256
+ {
257
+ LwIPLock lock;
258
+ this->wg_connected_ = esp_wireguard_connect(&(this->wg_ctx_));
259
+ }
253
260
 
254
261
  if (this->wg_connected_ == ESP_OK) {
255
262
  ESP_LOGI(TAG, "Connection started");
@@ -280,7 +287,10 @@ void Wireguard::start_connection_() {
280
287
  void Wireguard::stop_connection_() {
281
288
  if (this->wg_initialized_ == ESP_OK && this->wg_connected_ == ESP_OK) {
282
289
  ESP_LOGD(TAG, "Stopping connection");
283
- esp_wireguard_disconnect(&(this->wg_ctx_));
290
+ {
291
+ LwIPLock lock;
292
+ esp_wireguard_disconnect(&(this->wg_ctx_));
293
+ }
284
294
  this->wg_connected_ = ESP_FAIL;
285
295
  }
286
296
  }
@@ -73,6 +73,7 @@ from esphome.const import (
73
73
  TYPE_GIT,
74
74
  TYPE_LOCAL,
75
75
  VALID_SUBSTITUTIONS_CHARACTERS,
76
+ Framework,
76
77
  __version__ as ESPHOME_VERSION,
77
78
  )
78
79
  from esphome.core import (
@@ -282,6 +283,38 @@ class FinalExternalInvalid(Invalid):
282
283
  """Represents an invalid value in the final validation phase where the path should not be prepended."""
283
284
 
284
285
 
286
+ @dataclass(frozen=True, order=True)
287
+ class Version:
288
+ major: int
289
+ minor: int
290
+ patch: int
291
+ extra: str = ""
292
+
293
+ def __str__(self):
294
+ return f"{self.major}.{self.minor}.{self.patch}"
295
+
296
+ @classmethod
297
+ def parse(cls, value: str) -> Version:
298
+ match = re.match(r"^(\d+).(\d+).(\d+)-?(\w*)$", value)
299
+ if match is None:
300
+ raise ValueError(f"Not a valid version number {value}")
301
+ major = int(match[1])
302
+ minor = int(match[2])
303
+ patch = int(match[3])
304
+ extra = match[4] or ""
305
+ return Version(major=major, minor=minor, patch=patch, extra=extra)
306
+
307
+ @property
308
+ def is_beta(self) -> bool:
309
+ """Check if this version is a beta version."""
310
+ return self.extra.startswith("b")
311
+
312
+ @property
313
+ def is_dev(self) -> bool:
314
+ """Check if this version is a development version."""
315
+ return self.extra.startswith("dev")
316
+
317
+
285
318
  def check_not_templatable(value):
286
319
  if isinstance(value, Lambda):
287
320
  raise Invalid("This option is not templatable!")
@@ -619,16 +652,35 @@ def only_on(platforms):
619
652
  return validator_
620
653
 
621
654
 
622
- def only_with_framework(frameworks):
655
+ def only_with_framework(
656
+ frameworks: Framework | str | list[Framework | str], suggestions=None
657
+ ):
623
658
  """Validate that this option can only be specified on the given frameworks."""
624
659
  if not isinstance(frameworks, list):
625
660
  frameworks = [frameworks]
626
661
 
662
+ frameworks = [Framework(framework) for framework in frameworks]
663
+
664
+ if suggestions is None:
665
+ suggestions = {}
666
+
667
+ version = Version.parse(ESPHOME_VERSION)
668
+ if version.is_beta:
669
+ docs_format = "https://beta.esphome.io/components/{path}"
670
+ elif version.is_dev:
671
+ docs_format = "https://next.esphome.io/components/{path}"
672
+ else:
673
+ docs_format = "https://esphome.io/components/{path}"
674
+
627
675
  def validator_(obj):
628
676
  if CORE.target_framework not in frameworks:
629
- raise Invalid(
630
- f"This feature is only available with frameworks {frameworks}"
631
- )
677
+ err_str = f"This feature is only available with framework(s) {', '.join([framework.value for framework in frameworks])}"
678
+ if suggestion := suggestions.get(CORE.target_framework, None):
679
+ (component, docs_path) = suggestion
680
+ err_str += f"\nPlease use '{component}'"
681
+ if docs_path:
682
+ err_str += f": {docs_format.format(path=docs_path)}"
683
+ raise Invalid(err_str)
632
684
  return obj
633
685
 
634
686
  return validator_
@@ -637,8 +689,8 @@ def only_with_framework(frameworks):
637
689
  only_on_esp32 = only_on(PLATFORM_ESP32)
638
690
  only_on_esp8266 = only_on(PLATFORM_ESP8266)
639
691
  only_on_rp2040 = only_on(PLATFORM_RP2040)
640
- only_with_arduino = only_with_framework("arduino")
641
- only_with_esp_idf = only_with_framework("esp-idf")
692
+ only_with_arduino = only_with_framework(Framework.ARDUINO)
693
+ only_with_esp_idf = only_with_framework(Framework.ESP_IDF)
642
694
 
643
695
 
644
696
  # Adapted from:
@@ -1965,26 +2017,6 @@ def source_refresh(value: str):
1965
2017
  return positive_time_period_seconds(value)
1966
2018
 
1967
2019
 
1968
- @dataclass(frozen=True, order=True)
1969
- class Version:
1970
- major: int
1971
- minor: int
1972
- patch: int
1973
-
1974
- def __str__(self):
1975
- return f"{self.major}.{self.minor}.{self.patch}"
1976
-
1977
- @classmethod
1978
- def parse(cls, value: str) -> Version:
1979
- match = re.match(r"^(\d+).(\d+).(\d+)-?\w*$", value)
1980
- if match is None:
1981
- raise ValueError(f"Not a valid version number {value}")
1982
- major = int(match[1])
1983
- minor = int(match[2])
1984
- patch = int(match[3])
1985
- return Version(major=major, minor=minor, patch=patch)
1986
-
1987
-
1988
2020
  def version_number(value):
1989
2021
  value = string_strict(value)
1990
2022
  try:
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.7.1"
7
+ __version__ = "2025.7.3"
8
8
 
9
9
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
10
10
  VALID_SUBSTITUTIONS_CHARACTERS = (
@@ -68,8 +68,11 @@ void Application::setup() {
68
68
 
69
69
  do {
70
70
  uint8_t new_app_state = STATUS_LED_WARNING;
71
- this->scheduler.call();
72
- this->feed_wdt();
71
+ uint32_t now = millis();
72
+
73
+ // Process pending loop enables to handle GPIO interrupts during setup
74
+ this->before_loop_tasks_(now);
75
+
73
76
  for (uint32_t j = 0; j <= i; j++) {
74
77
  // Update loop_component_start_time_ right before calling each component
75
78
  this->loop_component_start_time_ = millis();
@@ -78,6 +81,8 @@ void Application::setup() {
78
81
  this->app_state_ |= new_app_state;
79
82
  this->feed_wdt();
80
83
  }
84
+
85
+ this->after_loop_tasks_();
81
86
  this->app_state_ = new_app_state;
82
87
  yield();
83
88
  } while (!component->can_proceed());
@@ -94,30 +99,10 @@ void Application::setup() {
94
99
  void Application::loop() {
95
100
  uint8_t new_app_state = 0;
96
101
 
97
- this->scheduler.call();
98
-
99
102
  // Get the initial loop time at the start
100
103
  uint32_t last_op_end_time = millis();
101
104
 
102
- // Feed WDT with time
103
- this->feed_wdt(last_op_end_time);
104
-
105
- // Process any pending enable_loop requests from ISRs
106
- // This must be done before marking in_loop_ = true to avoid race conditions
107
- if (this->has_pending_enable_loop_requests_) {
108
- // Clear flag BEFORE processing to avoid race condition
109
- // If ISR sets it during processing, we'll catch it next loop iteration
110
- // This is safe because:
111
- // 1. Each component has its own pending_enable_loop_ flag that we check
112
- // 2. If we can't process a component (wrong state), enable_pending_loops_()
113
- // will set this flag back to true
114
- // 3. Any new ISR requests during processing will set the flag again
115
- this->has_pending_enable_loop_requests_ = false;
116
- this->enable_pending_loops_();
117
- }
118
-
119
- // Mark that we're in the loop for safe reentrant modifications
120
- this->in_loop_ = true;
105
+ this->before_loop_tasks_(last_op_end_time);
121
106
 
122
107
  for (this->current_loop_index_ = 0; this->current_loop_index_ < this->looping_components_active_end_;
123
108
  this->current_loop_index_++) {
@@ -138,7 +123,7 @@ void Application::loop() {
138
123
  this->feed_wdt(last_op_end_time);
139
124
  }
140
125
 
141
- this->in_loop_ = false;
126
+ this->after_loop_tasks_();
142
127
  this->app_state_ = new_app_state;
143
128
 
144
129
  // Use the last component's end time instead of calling millis() again
@@ -400,6 +385,36 @@ void Application::enable_pending_loops_() {
400
385
  }
401
386
  }
402
387
 
388
+ void Application::before_loop_tasks_(uint32_t loop_start_time) {
389
+ // Process scheduled tasks
390
+ this->scheduler.call();
391
+
392
+ // Feed the watchdog timer
393
+ this->feed_wdt(loop_start_time);
394
+
395
+ // Process any pending enable_loop requests from ISRs
396
+ // This must be done before marking in_loop_ = true to avoid race conditions
397
+ if (this->has_pending_enable_loop_requests_) {
398
+ // Clear flag BEFORE processing to avoid race condition
399
+ // If ISR sets it during processing, we'll catch it next loop iteration
400
+ // This is safe because:
401
+ // 1. Each component has its own pending_enable_loop_ flag that we check
402
+ // 2. If we can't process a component (wrong state), enable_pending_loops_()
403
+ // will set this flag back to true
404
+ // 3. Any new ISR requests during processing will set the flag again
405
+ this->has_pending_enable_loop_requests_ = false;
406
+ this->enable_pending_loops_();
407
+ }
408
+
409
+ // Mark that we're in the loop for safe reentrant modifications
410
+ this->in_loop_ = true;
411
+ }
412
+
413
+ void Application::after_loop_tasks_() {
414
+ // Clear the in_loop_ flag to indicate we're done processing components
415
+ this->in_loop_ = false;
416
+ }
417
+
403
418
  #ifdef USE_SOCKET_SELECT_SUPPORT
404
419
  bool Application::register_socket_fd(int fd) {
405
420
  // WARNING: This function is NOT thread-safe and must only be called from the main loop
@@ -504,6 +504,8 @@ class Application {
504
504
  void enable_component_loop_(Component *component);
505
505
  void enable_pending_loops_();
506
506
  void activate_looping_component_(uint16_t index);
507
+ void before_loop_tasks_(uint32_t loop_start_time);
508
+ void after_loop_tasks_();
507
509
 
508
510
  void feed_wdt_arch_();
509
511
 
@@ -158,14 +158,14 @@ template<typename... Ts> class DelayAction : public Action<Ts...>, public Compon
158
158
  void play_complex(Ts... x) override {
159
159
  auto f = std::bind(&DelayAction<Ts...>::play_next_, this, x...);
160
160
  this->num_running_++;
161
- this->set_timeout(this->delay_.value(x...), f);
161
+ this->set_timeout("delay", this->delay_.value(x...), f);
162
162
  }
163
163
  float get_setup_priority() const override { return setup_priority::HARDWARE; }
164
164
 
165
165
  void play(Ts... x) override { /* ignore - see play_complex */
166
166
  }
167
167
 
168
- void stop() override { this->cancel_timeout(""); }
168
+ void stop() override { this->cancel_timeout("delay"); }
169
169
  };
170
170
 
171
171
  template<typename... Ts> class LambdaAction : public Action<Ts...> {
@@ -252,10 +252,10 @@ void Component::defer(const char *name, std::function<void()> &&f) { // NOLINT
252
252
  App.scheduler.set_timeout(this, name, 0, std::move(f));
253
253
  }
254
254
  void Component::set_timeout(uint32_t timeout, std::function<void()> &&f) { // NOLINT
255
- App.scheduler.set_timeout(this, "", timeout, std::move(f));
255
+ App.scheduler.set_timeout(this, static_cast<const char *>(nullptr), timeout, std::move(f));
256
256
  }
257
257
  void Component::set_interval(uint32_t interval, std::function<void()> &&f) { // NOLINT
258
- App.scheduler.set_interval(this, "", interval, std::move(f));
258
+ App.scheduler.set_interval(this, static_cast<const char *>(nullptr), interval, std::move(f));
259
259
  }
260
260
  void Component::set_retry(uint32_t initial_wait_time, uint8_t max_attempts, std::function<RetryResult(uint8_t)> &&f,
261
261
  float backoff_increase_factor) { // NOLINT
esphome/core/event_pool.h CHANGED
@@ -1,6 +1,6 @@
1
1
  #pragma once
2
2
 
3
- #if defined(USE_ESP32) || defined(USE_LIBRETINY)
3
+ #if defined(USE_ESP32)
4
4
 
5
5
  #include <atomic>
6
6
  #include <cstddef>
@@ -78,4 +78,4 @@ template<class T, uint8_t SIZE> class EventPool {
78
78
 
79
79
  } // namespace esphome
80
80
 
81
- #endif // defined(USE_ESP32) || defined(USE_LIBRETINY)
81
+ #endif // defined(USE_ESP32)
@@ -1,17 +1,12 @@
1
1
  #pragma once
2
2
 
3
- #if defined(USE_ESP32) || defined(USE_LIBRETINY)
3
+ #if defined(USE_ESP32)
4
4
 
5
5
  #include <atomic>
6
6
  #include <cstddef>
7
7
 
8
- #if defined(USE_ESP32)
9
8
  #include <freertos/FreeRTOS.h>
10
9
  #include <freertos/task.h>
11
- #elif defined(USE_LIBRETINY)
12
- #include <FreeRTOS.h>
13
- #include <task.h>
14
- #endif
15
10
 
16
11
  /*
17
12
  * Lock-free queue for single-producer single-consumer scenarios.
@@ -148,4 +143,4 @@ template<class T, uint8_t SIZE> class NotifyingLockFreeQueue : public LockFreeQu
148
143
 
149
144
  } // namespace esphome
150
145
 
151
- #endif // defined(USE_ESP32) || defined(USE_LIBRETINY)
146
+ #endif // defined(USE_ESP32)
@@ -446,7 +446,7 @@ bool HOT Scheduler::cancel_item_(Component *component, bool is_static_string, co
446
446
  // Helper to cancel items by name - must be called with lock held
447
447
  bool HOT Scheduler::cancel_item_locked_(Component *component, const char *name_cstr, SchedulerItem::Type type) {
448
448
  // Early return if name is invalid - no items to cancel
449
- if (name_cstr == nullptr || name_cstr[0] == '\0') {
449
+ if (name_cstr == nullptr) {
450
450
  return false;
451
451
  }
452
452
 
esphome/core/scheduler.h CHANGED
@@ -114,16 +114,17 @@ class Scheduler {
114
114
  name_is_dynamic = false;
115
115
  }
116
116
 
117
- if (!name || !name[0]) {
117
+ if (!name) {
118
+ // nullptr case - no name provided
118
119
  name_.static_name = nullptr;
119
120
  } else if (make_copy) {
120
- // Make a copy for dynamic strings
121
+ // Make a copy for dynamic strings (including empty strings)
121
122
  size_t len = strlen(name);
122
123
  name_.dynamic_name = new char[len + 1];
123
124
  memcpy(name_.dynamic_name, name, len + 1);
124
125
  name_is_dynamic = true;
125
126
  } else {
126
- // Use static string directly
127
+ // Use static string directly (including empty strings)
127
128
  name_.static_name = name;
128
129
  }
129
130
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esphome
3
- Version: 2025.7.1
3
+ Version: 2025.7.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: MIT
@@ -4,8 +4,8 @@ esphome/automation.py,sha256=9xmW3AmWDd2oKB7zF-UITYIiSci8ys8qiylK-rcU7Rg,15689
4
4
  esphome/codegen.py,sha256=H_WB4rj0uEowvlhEb31EjJQwutLQ5CQkJIsNgDK-wx8,1917
5
5
  esphome/config.py,sha256=b-Gh-DEx_pax0ZKqHTKb5gmMIvaQA71bJvE-15AI0JI,42211
6
6
  esphome/config_helpers.py,sha256=BpyuWRxj5edJGIW7VP4S59i4I8g8baSlWpNyu6nB_uM,5413
7
- esphome/config_validation.py,sha256=_SMAcS_AhMh0kaLki86hjPZp5b95culJZtQePqoL_fU,63712
8
- esphome/const.py,sha256=PAbR9XARIiUdZrf7bWN_u3L0cvd0QrG18u1mOyiG8Wc,43367
7
+ esphome/config_validation.py,sha256=QUNpomRbIhqTaSrZZXNFcTQdPibGPbYDNSo5sTIzqCI,64924
8
+ esphome/const.py,sha256=PJuRfwa1cZaxODJ_Gl6yZZ2zjZc-uw0WR4jvyxRy7Dc,43367
9
9
  esphome/coroutine.py,sha256=HNBqqhaTbpvsOI19bTXltxJCMVtoeqZPe4qTf4CKkAc,9309
10
10
  esphome/cpp_generator.py,sha256=khmyuRIOc-ST9zIZjX7uOWLy9sSJhk4C2KexoBv51uk,31946
11
11
  esphome/cpp_helpers.py,sha256=P9FVGpid75_UcKxIf-sj7GbhWGQNRcBm_2XVF3r7NtU,3998
@@ -197,7 +197,7 @@ esphome/components/api/api_server.cpp,sha256=UeLT60naPcxqmvJlMR6MClnPl1gT1cggyeO
197
197
  esphome/components/api/api_server.h,sha256=fRTT9rZEIFzD3iI89Z9P7Dniw7lnuOCPk_exYqCsOoI,6513
198
198
  esphome/components/api/client.py,sha256=47VYbSUN7SO3vjRHA4tzLw3Zwr8yhkbfLg9K7ELRDf8,2188
199
199
  esphome/components/api/custom_api_device.h,sha256=HIOBfs2zP5lRIC9ur-Ae9zHkCa5ekV023uIa0oklpdo,7599
200
- esphome/components/api/homeassistant_service.h,sha256=rdKnQmwfSEkkbLdBojqQTj0W1OGLblw5MCeP_kA5fm0,3396
200
+ esphome/components/api/homeassistant_service.h,sha256=DjziMNx7yMF_IbKqczm2j9tjIedLMTotPfnjdzF4ILM,3546
201
201
  esphome/components/api/list_entities.cpp,sha256=EMysqDt2yeMDwaiorf0taqF8pXCA0QAcnvviedNbFzI,3112
202
202
  esphome/components/api/list_entities.h,sha256=91kBP47ISJS7MQ9tg2kOmaYtLx-pPyquROzzBGkE66s,2898
203
203
  esphome/components/api/proto.cpp,sha256=vrXe3Hd1XWjzWi6osqMICAEEKNNx6A4GAo_KHQ7hRZA,2696
@@ -402,7 +402,7 @@ esphome/components/bme680/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
402
402
  esphome/components/bme680/bme680.cpp,sha256=R_OJihYGYxFUqjK_C8Kcdtf0jNKxEwEWdusQN5ByCkU,16994
403
403
  esphome/components/bme680/bme680.h,sha256=zdTFcpzNb3nSPy7q9V3iSJ5uBsmoZgJkzxU3Fcwf_BY,4678
404
404
  esphome/components/bme680/sensor.py,sha256=fjZOcC0AymBF4f3vdgd-WfTfkqL0QrCOnaXdnGvGolU,5801
405
- esphome/components/bme680_bsec/__init__.py,sha256=YZjUXomMLi9D-G3JxaEhrfQrSD-yTGU0mBk8HxGBdq0,2849
405
+ esphome/components/bme680_bsec/__init__.py,sha256=FmtARbE-B7Dkb1FnOWQavaAdOggraJqrDIocHitQrmI,3062
406
406
  esphome/components/bme680_bsec/bme680_bsec.cpp,sha256=ja1s94_Gh6HhhXhJiuT5f_rChHy87tgyHurmmMF1Tx8,22705
407
407
  esphome/components/bme680_bsec/bme680_bsec.h,sha256=aUGZXwSiu0wOlt13_mxhy0yKxToAInX2rnhZ_UQc7TM,5907
408
408
  esphome/components/bme680_bsec/sensor.py,sha256=Y4efGwK7zDHbS8ET7o-bF__A86OJsZt2Ypl4sRtqKLE,4114
@@ -884,7 +884,7 @@ esphome/components/esp32_ble_tracker/__init__.py,sha256=ccak0vxtH0cvun10HRGFJJHo
884
884
  esphome/components/esp32_ble_tracker/automation.h,sha256=0pDA6EX__f14sT0KJwcnqg7UOsueKjjegHPznQj9biw,3795
885
885
  esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp,sha256=HYiT04Lc7UUf6R8bU4dzXjukHIYXxpUENDF3pbWsyEw,33210
886
886
  esphome/components/esp32_ble_tracker/esp32_ble_tracker.h,sha256=XBjgf-yrkXGxoaQqTeAw70A59y8Th2c-57ctmhiuH18,11028
887
- esphome/components/esp32_camera/__init__.py,sha256=ZGtx71UgtqHIhdZJSKHQqv7zIgtpFu6MFHfzAkf6DWc,13457
887
+ esphome/components/esp32_camera/__init__.py,sha256=oTS6Kr0_1ErZCAUKTm-S5yUCbxOZo4UhtSDef0gNX00,14036
888
888
  esphome/components/esp32_camera/esp32_camera.cpp,sha256=LLGw2p5RsbO-lCFBqkZsuzitMex1N3y3bEoZhnMV7k4,17110
889
889
  esphome/components/esp32_camera/esp32_camera.h,sha256=ojiwjGpzUhYQepifWD2PyjByQklFRtQRTJrXFbZfSNM,7903
890
890
  esphome/components/esp32_camera_web_server/__init__.py,sha256=ViM-dcI4ld95yL1a3LuOO4H-eW_1GmcN7fHDlsyu3f8,938
@@ -915,7 +915,7 @@ esphome/components/esp32_touch/__init__.py,sha256=zcxxAkhMPOd--SZyngwDEW-Q9AYcWm
915
915
  esphome/components/esp32_touch/binary_sensor.py,sha256=JV0p5Ovn4E1EVj6L4JEmRJ--L-D7HWGK2PaQLE9hs3E,1165
916
916
  esphome/components/esp32_touch/esp32_touch.h,sha256=Br1-5Lh4U6xmvrM59iuPe5hR6cmO-LO5vSoyc49k9QY,9644
917
917
  esphome/components/esp32_touch/esp32_touch_common.cpp,sha256=engSTGARGHfLIwjceV2xrg0y0yX_gpb8MjoK2zd6KZQ,5703
918
- esphome/components/esp32_touch/esp32_touch_v1.cpp,sha256=VQdfo4rsDCVZ7kvG7IXFoatg97AM_ZECMNGB55I7xwQ,8266
918
+ esphome/components/esp32_touch/esp32_touch_v1.cpp,sha256=v1tGKlHazj2gJFEfQDPIJKR8Q90x_GmlA2DQo3nnteU,8492
919
919
  esphome/components/esp32_touch/esp32_touch_v2.cpp,sha256=SZPbpG3fOrJNMkzcJIYFubi4YcTspnVp58iO-_7rJdM,13475
920
920
  esphome/components/esp8266/__init__.py,sha256=-2xGbrwE5P4eTmQZRcoKwjBhtCVgnhdh3kEsrqYcGSI,9683
921
921
  esphome/components/esp8266/boards.py,sha256=p2btoDa36gfr9QsCOBZuME7Pi20Xf2LcQ_F-oeMFFA8,8647
@@ -987,9 +987,9 @@ esphome/components/fastled_base/__init__.py,sha256=5Re6yi_0HOCts-U-iiyNKvsQUEBzS
987
987
  esphome/components/fastled_base/fastled_light.cpp,sha256=MFLr1AV4mTxIQMwxTBg8RtbPuwex7y3nlHbulHdtdps,1369
988
988
  esphome/components/fastled_base/fastled_light.h,sha256=Xmv5WA6XuZNGClpiITMo6f73i8P0Z5YoYtlUVhQj2FI,8593
989
989
  esphome/components/fastled_clockless/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
990
- esphome/components/fastled_clockless/light.py,sha256=D-tQakBL9hRmdWNhInfD3YBDFCgRiLQcJYllT8j_Rfk,1677
990
+ esphome/components/fastled_clockless/light.py,sha256=M9x-UAPjmHuaFJR0U1jNgD69Q1FiWTtoRsosju7J8gU,1950
991
991
  esphome/components/fastled_spi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
992
- esphome/components/fastled_spi/light.py,sha256=2neqVimjN-_fUgunaiN10XxeKGKJ1GjSsRuME_kBpac,1867
992
+ esphome/components/fastled_spi/light.py,sha256=KjvKzYWQ82iPdgEXicjZO8VYaQQoHSJ_UQ6gi22fbPE,2107
993
993
  esphome/components/feedback/__init__.py,sha256=GjTE91yQyeMDCmGmxAgQwsB9ohUUw83JSCmIi2_sujg,25
994
994
  esphome/components/feedback/cover.py,sha256=NuS-WNv7RFctg3jrBjPm6moIlNGgtmXvspdD1_CPgsM,6324
995
995
  esphome/components/feedback/feedback_cover.cpp,sha256=bvZ-dgN3zh8Ivc2BvSPO4QKTQuVIFm_AiTUgTUIHnE8,16241
@@ -1044,7 +1044,7 @@ esphome/components/gp8403/output/__init__.py,sha256=3VX9AD0N0SRXdOfKJcMMgjCwA1-R
1044
1044
  esphome/components/gp8403/output/gp8403_output.cpp,sha256=FQPUa_ZMgLz7LNHy6N8sNUpnI2hwOIZTRrwWtjXrbGs,714
1045
1045
  esphome/components/gp8403/output/gp8403_output.h,sha256=wJd_-CtUSxw5ujhR21E1zCiB9hvpl3Ktt665D3iQLf4,598
1046
1046
  esphome/components/gpio/__init__.py,sha256=afIFpPG_fsom-8vYV1yRyvhSCFyASlAdraUCuztWQZ4,103
1047
- esphome/components/gpio/binary_sensor/__init__.py,sha256=_rb3IP-gt1Fq5wSoFG36L7YATLF4xX2dRNlDI9sM1kU,2295
1047
+ esphome/components/gpio/binary_sensor/__init__.py,sha256=1rCKRDCrbINcJN6m0gRYgyGTouuVpK-s_IV6cGgivUE,3594
1048
1048
  esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp,sha256=wVa5pNQMnUOO9RUovnf6G8MYQtKQoRSojA3MItHLnbg,3131
1049
1049
  esphome/components/gpio/binary_sensor/gpio_binary_sensor.h,sha256=ukwmyxJhiYXMczcT16zwdliTX5Brf8fdgDzid6l13wE,2000
1050
1050
  esphome/components/gpio/one_wire/__init__.py,sha256=oH6-6zy18pG_7iqzLegjh4AbjnbZHqBRZKHdHBI-828,714
@@ -1550,7 +1550,7 @@ esphome/components/lock/__init__.py,sha256=z2ykcnNNmzRbri8sqwqQmbX0WtEkBV_Tazr1R
1550
1550
  esphome/components/lock/automation.h,sha256=7MU5AuJizydt7mKTr_uFsNleFI2jeBf7B_dNp3e8Fks,1771
1551
1551
  esphome/components/lock/lock.cpp,sha256=IyEt5xShAxMpmcn_GAPFv2lRCS-kr4MjjfExxfXuK-Q,3212
1552
1552
  esphome/components/lock/lock.h,sha256=p_t5cG-75MNGVM8zEyfKJlziSjeUiIbpYan3tlZG6W8,6042
1553
- esphome/components/logger/__init__.py,sha256=cbMgKmeOZDS_s2aIFshjAQQnluSiylYe9BfEv-fFymc,16201
1553
+ esphome/components/logger/__init__.py,sha256=6nw19OHeHlqIoSGqqxgeg5FzWkbyFILQh_Il1PqUQTs,16203
1554
1554
  esphome/components/logger/logger.cpp,sha256=aIra5ZZ5OEAPuqDgxZd3zkyAf46Jchht6mx-mcv380U,11704
1555
1555
  esphome/components/logger/logger.h,sha256=Tkdz9qoSTiyx6Ebp9jBUnGMXyxG1iH6LTJoJfguTOaA,14460
1556
1556
  esphome/components/logger/logger_esp32.cpp,sha256=NJddudDpsMP1fdV0mel8zXd7VNgMxqRIfarLp3uJPe0,6220
@@ -1600,7 +1600,7 @@ esphome/components/lvgl/schemas.py,sha256=fxD_8okg0EtPKHjdDl2x2buvjg0syEZPVudTk2
1600
1600
  esphome/components/lvgl/styles.py,sha256=692QwPARqDICFFSkgmBVS-M1mDyOxNg2AftYgU4ZrMY,3144
1601
1601
  esphome/components/lvgl/touchscreens.py,sha256=CntwVa1EUu6iBnxfvuv0rCYd_Njmf451CYdRqQyb9N4,1607
1602
1602
  esphome/components/lvgl/trigger.py,sha256=brfRjSE7-LXKBttQP7pG6W5A2KPzmFiNzQzeQiyW250,3463
1603
- esphome/components/lvgl/types.py,sha256=corOqfPfZtK1WtIUvJ8TOFLhjcn5vjTi5dJvwX-gCZI,6130
1603
+ esphome/components/lvgl/types.py,sha256=M-DJvNheEj7AVZgzfdFfcReXO5rk0TIKWntAQl97LZw,6134
1604
1604
  esphome/components/lvgl/binary_sensor/__init__.py,sha256=UaG5F3trL-S9P807PCbM2hHT4EUxAS0obSd6tlHXEoQ,1174
1605
1605
  esphome/components/lvgl/light/__init__.py,sha256=fyfI3RNQ67fA8yKhIirLg9ZLV4wFNMNvalqwqs04rqM,1006
1606
1606
  esphome/components/lvgl/light/lvgl_light.h,sha256=bNvnIYH7UrvVHgWxIIlP2XAfsmEVDzz2-aIA6DbR1iU,1231
@@ -1628,7 +1628,7 @@ esphome/components/lvgl/widgets/label.py,sha256=5xl1a6apdJgGKmkpL8m7RDASjaeKzjKT
1628
1628
  esphome/components/lvgl/widgets/led.py,sha256=qoe_kvZpoRkwbxz25Z66KQ__KLC2tfhAukChp1jdlDc,888
1629
1629
  esphome/components/lvgl/widgets/line.py,sha256=XwTZxoLeWb5_Bx4cRBjBxLd83DLGqFXSE8t9jNYasXk,1355
1630
1630
  esphome/components/lvgl/widgets/lv_bar.py,sha256=FbDNEL9huqeKGiE_nqyoB6BVPOCEsQd3YgO5m07SI3M,2274
1631
- esphome/components/lvgl/widgets/meter.py,sha256=yPC9kFVGjOdJqjBlCVKxDrVEjyfLUXlEUjuy3UhcCh0,11526
1631
+ esphome/components/lvgl/widgets/meter.py,sha256=PKanq-3YDwuFto25OVpgYQm61bWXMLMUo-7UPifGFOY,11680
1632
1632
  esphome/components/lvgl/widgets/msgbox.py,sha256=i98hz6RKJRMWQ4wz9T1qOHzmdmZ6yHDvHDeJ1T9_Gt0,5335
1633
1633
  esphome/components/lvgl/widgets/obj.py,sha256=6lKIfsdKLWIE8u_Lw0X0ChMCKcV8EZYF8WQKQEBCKYU,439
1634
1634
  esphome/components/lvgl/widgets/page.py,sha256=W7kQ1xfJLRMdy6wFKoA6tZxUXNKGBZWrjMw9OZRfLqA,5870
@@ -2028,7 +2028,7 @@ esphome/components/nau7802/sensor.py,sha256=1_p7nQLcClL3l5FX3qZ627wf9cP8h8Yt4yl7
2028
2028
  esphome/components/neopixelbus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2029
2029
  esphome/components/neopixelbus/_methods.py,sha256=zWtt2M2kG4V3iYlvEWZn-BGuTlmCnTvT2VYjiRn3NiY,14544
2030
2030
  esphome/components/neopixelbus/const.py,sha256=8dPnqN1skzSEnjjsr3H2Q3BJOEn-TyFB1PApCSSsYUw,824
2031
- esphome/components/neopixelbus/light.py,sha256=q7uRYgtA50hHESiR8PcFC-wa1k5SAoNo0xHzWplBw3I,7346
2031
+ esphome/components/neopixelbus/light.py,sha256=mGs_W1AuFwzw9_nft_vZdpeX3Z4fe0QNrm49lj15YRc,7572
2032
2032
  esphome/components/neopixelbus/neopixelbus_light.h,sha256=flA7U9l1Bfj7Vdii4wwi2ukVG_RO0mvL6kNaa_k3xBI,4680
2033
2033
  esphome/components/network/__init__.py,sha256=4SVVU4J6pPdGUY_Tz1zEZm4E1LzITStl1RMMMWR71A4,2218
2034
2034
  esphome/components/network/ip_address.h,sha256=tTltJn7qkuxr1_BhSTUYOBItZG-d3eBus04C5GEOS08,4552
@@ -2574,7 +2574,7 @@ esphome/components/script/script.h,sha256=0z4aoCBM2x2RLtpk0LNs3biHIS--rDzhfQjN-S
2574
2574
  esphome/components/sdl/__init__.py,sha256=4Nn7UhpMJ9oSbuLdyVEW7G9PlIey2v33SWRNVizt9Oc,30
2575
2575
  esphome/components/sdl/binary_sensor.py,sha256=0fXpK11HIO9fpRqnyhN-nshlmKCgqXGK1OBlInQjOL4,6528
2576
2576
  esphome/components/sdl/display.py,sha256=mVm2J93NP-a0_Z70b6Rz_305-jIO8Rt2Kcxnc3rp5tw,3385
2577
- esphome/components/sdl/sdl_esphome.cpp,sha256=o4fCN_x9l6NDo4uahGEt1iDtZ3yU5W_xV1YrohKYVy8,4032
2577
+ esphome/components/sdl/sdl_esphome.cpp,sha256=sc5r_zZuy_bg2iX50tZYRL_KyRZaeQfdWSGZVzolqK4,4087
2578
2578
  esphome/components/sdl/sdl_esphome.h,sha256=S_HSX0cQYI3oUWHVPPwv9dFVhbhTUYitnO5o5GNeX28,2373
2579
2579
  esphome/components/sdl/touchscreen/__init__.py,sha256=VhcFG1Vc_i4eIYHoV4_Nb3VlanUCr0r9RPAM5BMKr9Y,633
2580
2580
  esphome/components/sdl/touchscreen/sdl_touchscreen.h,sha256=dgw2wGuEvjX6zbPjqMOPLkOl-aVYVWxY7n7Gc_kAKm0,595
@@ -2816,8 +2816,8 @@ esphome/components/speaker/__init__.py,sha256=2juDem8QadLMwzFp8Rvl-KeIbE-iIEsCtD
2816
2816
  esphome/components/speaker/automation.h,sha256=tVSTV49GvHk0bCEgLz3rNYFe8B1F0kXLgE-WihuRaV8,2320
2817
2817
  esphome/components/speaker/speaker.h,sha256=Y6EuDzsIx8GDcFeWnYXg4cXiBU-6CkmrRCaMpXQYiWo,4355
2818
2818
  esphome/components/speaker/media_player/__init__.py,sha256=QfJfrfwYuTEWJ_P3mVACjiATFPHSfDK-eJ0YOiSgatE,15441
2819
- esphome/components/speaker/media_player/audio_pipeline.cpp,sha256=VjodnH-hIPRtulk4iPt_oaym3qr_O2-fK3dyufenPnQ,22147
2820
- esphome/components/speaker/media_player/audio_pipeline.h,sha256=MYt7_kp4IJDSTnXWqLaXIkbbNkGx6F_imSryFo2UUkc,5000
2819
+ esphome/components/speaker/media_player/audio_pipeline.cpp,sha256=YspF1nK940wWOodZVtOMW7_E-rt2DzyCfz7iQuY9rhs,22411
2820
+ esphome/components/speaker/media_player/audio_pipeline.h,sha256=QAQGzGUnBjx7_WaZYGIuLKtrKrs7-f3YV329h2wahQM,5029
2821
2821
  esphome/components/speaker/media_player/automation.h,sha256=I8psUHnJ8T3fkM05h1yEYDxb0yWe6Vjz7i30OSVA3Is,683
2822
2822
  esphome/components/speaker/media_player/speaker_media_player.cpp,sha256=M_eFKuivv__swCA8xhWd4-cfNdrY2h8Vm8VfG8DUDZ8,22610
2823
2823
  esphome/components/speaker/media_player/speaker_media_player.h,sha256=qg7oX4bKiWWmVfiT5ZD4DdafLBGXmvXFuU5932m1nIo,5399
@@ -3229,7 +3229,7 @@ esphome/components/tuya/climate/tuya_climate.h,sha256=16nLDVoVwyd6fOtqq9SqRSQu17
3229
3229
  esphome/components/tuya/cover/__init__.py,sha256=zNsaJUYfibX_38oe9mQ-19UhXIWXNBOVbNWwr4bq3yo,2947
3230
3230
  esphome/components/tuya/cover/tuya_cover.cpp,sha256=0VKNLg0zDy7EPk7sRQC6aL1QjV7832tmubbPenbQW3Y,4369
3231
3231
  esphome/components/tuya/cover/tuya_cover.h,sha256=9S9_X7xuiusjDRfsXw_aV6_7i8P9WpMOvOg-dlyOrz8,1787
3232
- esphome/components/tuya/fan/__init__.py,sha256=nAcHS5WZtP3BeyxPBG5k8uHhJKDQnu_t88Vfwl_otas,1796
3232
+ esphome/components/tuya/fan/__init__.py,sha256=nHTmFEtNcASuOrBHeixTUpzvQYtYHsb0F_bRLSYutgk,1734
3233
3233
  esphome/components/tuya/fan/tuya_fan.cpp,sha256=KZTNjsQtSAIr4JXf2VKocxBANqORi7jaC5BsUt-gNWs,4330
3234
3234
  esphome/components/tuya/fan/tuya_fan.h,sha256=nYKtPdShhbQl05W83rAFS4CxKbsY2jhp5N11k1c2alk,1114
3235
3235
  esphome/components/tuya/light/__init__.py,sha256=mZj2c72EhHo8CHwkNFvn58jmj7mycIzHPRY5F5Th3VI,4858
@@ -3371,8 +3371,8 @@ esphome/components/vl53l0x/sensor.py,sha256=qQVBjhMl_nGbzuAHY0Fz2GnG5TkNJLuyFRYm
3371
3371
  esphome/components/vl53l0x/vl53l0x_sensor.cpp,sha256=mBGggbztlCSvjPDA6IY3p1uBnziXdkaMKLCLWcZL0ok,15170
3372
3372
  esphome/components/vl53l0x/vl53l0x_sensor.h,sha256=_GZqT0tHSoYbqrHiC0_PAttk3cuHH9sy1lirQaIYfQU,2593
3373
3373
  esphome/components/voice_assistant/__init__.py,sha256=cYEmZoI6w05kMF_ZrFHgsvKOLGO1GIT-a3aUWqepNt4,15264
3374
- esphome/components/voice_assistant/voice_assistant.cpp,sha256=kPdneGHH-p3XzfgoQvk_8pYIcY_quszg7Ck6X-7_fYM,32996
3375
- esphome/components/voice_assistant/voice_assistant.h,sha256=M42wYACkOB90iIeejCXaFnqRZkETsEjjJSi7j_YZxg8,12381
3374
+ esphome/components/voice_assistant/voice_assistant.cpp,sha256=wxUOQJ91fgcRw0GuvTCHKp_DO07f6A3KJyN7zwVcGnA,33860
3375
+ esphome/components/voice_assistant/voice_assistant.h,sha256=dNPJHpjnu-kDlHD861cDmwxw0yYbCBOU4VM2J2opSN0,12475
3376
3376
  esphome/components/voltage_sampler/__init__.py,sha256=IU5YrROZSNyuAP1d6M_V3ZGAwNjXCHPcVy5nMjZ953Y,155
3377
3377
  esphome/components/voltage_sampler/voltage_sampler.h,sha256=Y67FLOpOzW29v29BRRyYgEmGZ_B8QnUUaqJMH6FA3jM,337
3378
3378
  esphome/components/wake_on_lan/__init__.py,sha256=-RYpXD02o3dlFnKzOCYk58bUbxfD2v-wj1ECywj-cgI,50
@@ -3392,11 +3392,11 @@ esphome/components/web_server/list_entities.cpp,sha256=yQ3skDSDFnnKsEpLdkyjzySmX
3392
3392
  esphome/components/web_server/list_entities.h,sha256=afeebykHFeV1rLpywOSZqaPqfL-K-MkLByfJWrkrb-M,2561
3393
3393
  esphome/components/web_server/server_index_v2.h,sha256=cVFZzhvmwcUzN815XwYnx2L9zf5lH-MAZjolRearXdw,74968
3394
3394
  esphome/components/web_server/server_index_v3.h,sha256=5SZfSHDG4xAyXNBxUqs8-jSVwocgfRbNbTSMwzVl1io,476640
3395
- esphome/components/web_server/web_server.cpp,sha256=Yo8PAJS0U4tmE9iQ5a4hZG8g3j4Ip6CF6qeyJ81WTrE,73600
3395
+ esphome/components/web_server/web_server.cpp,sha256=bwc2jb7b4-7mtrztGpW9SMWseuh38vHihViuUp5qsho,73613
3396
3396
  esphome/components/web_server/web_server.h,sha256=AGCOdOaZe7Xe5nCL4rHhqWNg-uo5cc6nu84vQr4GdrQ,21558
3397
3397
  esphome/components/web_server/web_server_v1.cpp,sha256=ZnFV1J2YAzAT2mtR-eeVgG1TSVpy953EF1yVKYdTcTg,7409
3398
3398
  esphome/components/web_server/ota/__init__.py,sha256=w4Ufe8mN-5r0913AODCjl9LlCKMpWRTFMSCEmLgRzxE,1018
3399
- esphome/components/web_server/ota/ota_web_server.cpp,sha256=4c1BeJDlwT1YJCbnt4fYRzAVtJxDP3hvJkbYfetZX4E,8140
3399
+ esphome/components/web_server/ota/ota_web_server.cpp,sha256=q-GKNDmwjonXaBOndktCulkJfrCSpmCGqcreuJxtRJI,8158
3400
3400
  esphome/components/web_server/ota/ota_web_server.h,sha256=ZZQHTxb21gqukibGei-om00MxpBD4Qyy031PXBMmjT8,604
3401
3401
  esphome/components/web_server_base/__init__.py,sha256=uM9rrhE1Pu_yvwfrLLHheh1ip_9mL2JSZC5NrrBdrj0,1281
3402
3402
  esphome/components/web_server_base/web_server_base.cpp,sha256=plEcGgYKFku3cSlv7rNAPC6GMWkjIflie3yVERoHDNA,876
@@ -3450,7 +3450,7 @@ esphome/components/wireguard/__init__.py,sha256=EFer9fT28hNCmf4x36e1m5icdIMueynA
3450
3450
  esphome/components/wireguard/binary_sensor.py,sha256=ufCoEUae0jzZoSjao1_L9zGe_fS6irjTaw5OEKJHQuE,1076
3451
3451
  esphome/components/wireguard/sensor.py,sha256=JUHo1XEl81N5hn2BYemaToa4t7aLKqjx_J36cLUj71I,823
3452
3452
  esphome/components/wireguard/text_sensor.py,sha256=WuCrOiKHRgljObCWDVZ2hfk7PYQUaiQ1X7E9lnoUODs,711
3453
- esphome/components/wireguard/wireguard.cpp,sha256=FD1KVju0qGBXqT4wkkA9ZU7llygmV1wUGN7qw0qQEtI,10328
3453
+ esphome/components/wireguard/wireguard.cpp,sha256=8XahOW_eGPgY4fL1vDwcpEkfel7NB5TiZ7-AyAbrwYc,10455
3454
3454
  esphome/components/wireguard/wireguard.h,sha256=BaaRAyqK0gP59f96D8w4gVBW43a4bMvAdYzmPTK4olc,4969
3455
3455
  esphome/components/wk2132_i2c/__init__.py,sha256=Vd-c0QRYTqxADFhwuTPjA_wnyqD5cZcHReN9vGTA1Nc,848
3456
3456
  esphome/components/wk2132_i2c/wk2132_i2c.cpp,sha256=u2T0Rtrasgnxxslaau20-fPA0Zo6NxysL54x3Mdqc9s,146
@@ -3593,14 +3593,14 @@ esphome/components/zyaura/sensor.py,sha256=cSmO4ozYdi4ZD7NK4lmYjswWVmJoDvEruU1Hh
3593
3593
  esphome/components/zyaura/zyaura.cpp,sha256=F7WM8XAZ5MYuCD3eERm2_IA-O7sP1i-A-yF5TV4PqX8,3679
3594
3594
  esphome/components/zyaura/zyaura.h,sha256=7O3EGFIopUEfBp3A5sBC0l4zx2mesRxDWa_MBdGtPKQ,2307
3595
3595
  esphome/core/__init__.py,sha256=uWhgtqaPGiMeMp6KMvRs60gvFG_4jabueLzKTMuVAHc,28445
3596
- esphome/core/application.cpp,sha256=Tsl2sCS3awRjrJL5A9g2syW7s8tRwl1RtoCUhZUrQsI,18762
3597
- esphome/core/application.h,sha256=upjEdRfEZWrH27s3PFYqmORG7Kd4SlbtexipPdYKwUk,21848
3596
+ esphome/core/application.cpp,sha256=wrjr4SVAWMarEo-cKJ_eUfarCrSrWzqoK2-oA74wPYU,19182
3597
+ esphome/core/application.h,sha256=psgw-_TDgZQLK00Kg5A9Y-B17Mkdn4WeMzmOkyX2e98,21929
3598
3598
  esphome/core/area.h,sha256=mtFxmuv8fC2hArcey3cZ0F6hMXSO2QpFZ9Xv49z4rvk,393
3599
3599
  esphome/core/automation.h,sha256=UgoI-ebaL5YJ_cyRB-3ijHQxzt4cTbTaWw4eRGoOwBI,8627
3600
- esphome/core/base_automation.h,sha256=wAJu_yy1tDjwARdCZ312t7anzR9dBF_54qiXm1sy-_g,11216
3600
+ esphome/core/base_automation.h,sha256=C-6op63m-ghuaUy-q515XAx7iKjoxBFbQeRLmRtQGSM,11230
3601
3601
  esphome/core/color.cpp,sha256=gcFk-FTJzvrePzqgA5gvsXv8iWct0ykdVGx_ivrilR0,254
3602
3602
  esphome/core/color.h,sha256=K2iTTKgOgXcCm61S1f2P_k7YheKP654gUubWq5X0FhE,6647
3603
- esphome/core/component.cpp,sha256=rHgS2cukrb3ukBp74KtMEKc2n7U3D7oNLgPdpZrZvmA,16811
3603
+ esphome/core/component.cpp,sha256=ctFoir-YMeK3WQ_Tjg9QxizA0cjSYX1UaIp9mdE01Zc,16875
3604
3604
  esphome/core/component.h,sha256=Z1TYaQDGkoddm75zaPTQc_C0STpCCl200oDZsoc6yAk,17985
3605
3605
  esphome/core/component_iterator.cpp,sha256=VD_bSv474jQlKctKIzYSPUK8zpm01PJ1Fymix1c92Jg,11121
3606
3606
  esphome/core/component_iterator.h,sha256=-j9hGIY8mCmgq2nLuoG_IFY0lSoHkImXMEVtUKYpngA,3791
@@ -3614,12 +3614,12 @@ esphome/core/doxygen.h,sha256=9fAJ2T-1z96-NYnj63vQhsnKthHBrh3EqBnY0h3ZN-A,439
3614
3614
  esphome/core/entity_base.cpp,sha256=4JMAGN8w3bMW-kTchQxlbA-zS43NOdYhT1Fo0Celx78,2453
3615
3615
  esphome/core/entity_base.h,sha256=bzNEdGDbJsO0ijowJHmLMLeCN3mY1hqzWK4dF39bpik,6429
3616
3616
  esphome/core/entity_helpers.py,sha256=03-t7OcXa8L-_634OAEU9s-opgjoIKqC9acXHoXR6lA,8169
3617
- esphome/core/event_pool.h,sha256=TjA2sl_s5ScKC9d_5nssvImbPkpJJUWo5DDZwCaZ0QU,2457
3617
+ esphome/core/event_pool.h,sha256=X8_-72rODgpG9P_dSjezkJjFaaFvXy0cV42o6X-Vv1Q,2405
3618
3618
  esphome/core/gpio.h,sha256=kLkCnPxu4_1CsLR4BI_Baj1lDGoRIh8uubbwsIkJPIA,2575
3619
3619
  esphome/core/hal.h,sha256=Le0-vtdDylYCaE9i4yvrv5-Y5PB5xoL3PM2FfMJsIeA,970
3620
3620
  esphome/core/helpers.cpp,sha256=eyOYJWmMEcdX8dJ3RoIcl6MeOmc0C3cTPafZDTzQ4OM,20961
3621
3621
  esphome/core/helpers.h,sha256=213N4rXgWCcuBB-aZDV9TW5UIYRzzGhU44YXWJz2Ys4,33961
3622
- esphome/core/lock_free_queue.h,sha256=S6QMMT8L8rG_qOzkTHWqcP9amok99hFhXGlZoj8C4XU,5104
3622
+ esphome/core/lock_free_queue.h,sha256=j3wSEyxqkjBDnCwEQd4ARHDubjSrLPxMAzZvqdNN2co,4953
3623
3623
  esphome/core/log.cpp,sha256=cc6JIMRlIEk7lCQa6JFrL6bTBZ89xWNLwf26AFNzKC0,1625
3624
3624
  esphome/core/log.h,sha256=Fb0_ORK0q-WV0i49gzb8i9_C38RUe8VILIdbu1Bel5M,6627
3625
3625
  esphome/core/log_const_en.h,sha256=zrLwl0tQmh1pkNB1bq8lqLdJKbo7_dFmppRI7hVKAf8,133
@@ -3628,8 +3628,8 @@ esphome/core/optional.h,sha256=uKMzglliXSA5eC3ujwrADmyt8m7X4WkBQcOL6p3ET7E,7144
3628
3628
  esphome/core/preferences.h,sha256=RxgWuAi-uo6SZiK8UKX4KTwVfIMnaaLvrZP2rqTn_mE,1959
3629
3629
  esphome/core/ring_buffer.cpp,sha256=6vOoKNjO4dSLYfqJYM8AXclpKgQOH6C79CqocwTSv-k,3526
3630
3630
  esphome/core/ring_buffer.h,sha256=4SeN2DYZLCHrLIjSPDsiAynIjwOoItiRUDO-u1wjq-o,2997
3631
- esphome/core/scheduler.cpp,sha256=EujNgcC6CgG_IGydPyylRB3qC4Q34cgcn7eIfqD1Zx0,19968
3632
- esphome/core/scheduler.h,sha256=Im_s45ic3Km2ejByqVfeTSMYWJDu6oAf3zVvn1EM_iw,8193
3631
+ esphome/core/scheduler.cpp,sha256=RsVXsvfljDcLytZ4sLQam4lLL2tNHSPrhg3LGS9YMcA,19944
3632
+ esphome/core/scheduler.h,sha256=BhP31NgW5qzoUdAs-jITMw-pv3OIGJk_ZVyFvqqANuU,8276
3633
3633
  esphome/core/string_ref.cpp,sha256=of1TYMY6t3t4HjjPLSiItuPSa62AMG0lK_CU2HS1RvM,242
3634
3634
  esphome/core/string_ref.h,sha256=Rd8HVBiUZrPA3TkPCwuAxGw91VX-e3Fky812OCNhNvA,5227
3635
3635
  esphome/core/time.cpp,sha256=ML3sAvlSgDaUkhbPmBkUkSFhGM78j0d7cL8CHAIgfow,7667
@@ -3655,9 +3655,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
3655
3655
  esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
3656
3656
  esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
3657
3657
  esphome/dashboard/util/text.py,sha256=wwFtORlvHjsYkqb68IT-772LHAhWxT4OtnkIcPICQB0,317
3658
- esphome-2025.7.1.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3659
- esphome-2025.7.1.dist-info/METADATA,sha256=ymoQtqRfsjvehTL_sQHDsy8F-KE85KMKqvkBi5CloGQ,3705
3660
- esphome-2025.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3661
- esphome-2025.7.1.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3662
- esphome-2025.7.1.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3663
- esphome-2025.7.1.dist-info/RECORD,,
3658
+ esphome-2025.7.3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3659
+ esphome-2025.7.3.dist-info/METADATA,sha256=jp7UkQb2oB-skhD2WX7Ikw2u_6yxCe1XUpjyemMOoOA,3705
3660
+ esphome-2025.7.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3661
+ esphome-2025.7.3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3662
+ esphome-2025.7.3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3663
+ esphome-2025.7.3.dist-info/RECORD,,