esphome 2025.4.0b3__py3-none-any.whl → 2025.4.2__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 (30) hide show
  1. esphome/components/as3935_i2c/as3935_i2c.h +0 -3
  2. esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +6 -0
  3. esphome/components/display/rect.cpp +4 -9
  4. esphome/components/display/rect.h +1 -1
  5. esphome/components/ens160_base/ens160_base.cpp +1 -1
  6. esphome/components/esp32_ble/ble.cpp +0 -8
  7. esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +2 -0
  8. esphome/components/hlw8012/hlw8012.cpp +1 -1
  9. esphome/components/lvgl/lv_validation.py +10 -1
  10. esphome/components/lvgl/lvgl_esphome.cpp +1 -0
  11. esphome/components/lvgl/schemas.py +14 -14
  12. esphome/components/lvgl/widgets/arc.py +7 -6
  13. esphome/components/lvgl/widgets/buttonmatrix.py +3 -3
  14. esphome/components/lvgl/widgets/checkbox.py +2 -2
  15. esphome/components/lvgl/widgets/dropdown.py +2 -1
  16. esphome/components/lvgl/widgets/img.py +15 -12
  17. esphome/components/media_player/__init__.py +7 -5
  18. esphome/components/online_image/online_image.cpp +5 -5
  19. esphome/components/psram/psram.cpp +3 -2
  20. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  21. esphome/components/watchdog/watchdog.cpp +2 -1
  22. esphome/const.py +1 -1
  23. esphome/log.py +5 -4
  24. {esphome-2025.4.0b3.dist-info → esphome-2025.4.2.dist-info}/METADATA +1 -1
  25. {esphome-2025.4.0b3.dist-info → esphome-2025.4.2.dist-info}/RECORD +29 -30
  26. esphome/components/esp32_ble/const_esp32c6.h +0 -74
  27. {esphome-2025.4.0b3.dist-info → esphome-2025.4.2.dist-info}/WHEEL +0 -0
  28. {esphome-2025.4.0b3.dist-info → esphome-2025.4.2.dist-info}/entry_points.txt +0 -0
  29. {esphome-2025.4.0b3.dist-info → esphome-2025.4.2.dist-info}/licenses/LICENSE +0 -0
  30. {esphome-2025.4.0b3.dist-info → esphome-2025.4.2.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/component.h"
4
3
  #include "esphome/components/as3935/as3935.h"
5
4
  #include "esphome/components/i2c/i2c.h"
6
- #include "esphome/components/sensor/sensor.h"
7
- #include "esphome/components/binary_sensor/binary_sensor.h"
8
5
 
9
6
  namespace esphome {
10
7
  namespace as3935_i2c {
@@ -265,6 +265,12 @@ void BluetoothProxy::bluetooth_device_request(const api::BluetoothDeviceRequest
265
265
  connection->get_connection_index(), connection->address_str().c_str());
266
266
  return;
267
267
  } else if (connection->state() == espbt::ClientState::CONNECTING) {
268
+ if (connection->disconnect_pending()) {
269
+ ESP_LOGW(TAG, "[%d] [%s] Connection request while pending disconnect, cancelling pending disconnect",
270
+ connection->get_connection_index(), connection->address_str().c_str());
271
+ connection->cancel_pending_disconnect();
272
+ return;
273
+ }
268
274
  ESP_LOGW(TAG, "[%d] [%s] Connection request ignored, already connecting", connection->get_connection_index(),
269
275
  connection->address_str().c_str());
270
276
  return;
@@ -69,21 +69,16 @@ bool Rect::inside(int16_t test_x, int16_t test_y, bool absolute) const { // NOL
69
69
  return true;
70
70
  }
71
71
  if (absolute) {
72
- return ((test_x >= this->x) && (test_x <= this->x2()) && (test_y >= this->y) && (test_y <= this->y2()));
73
- } else {
74
- return ((test_x >= 0) && (test_x <= this->w) && (test_y >= 0) && (test_y <= this->h));
72
+ return test_x >= this->x && test_x < this->x2() && test_y >= this->y && test_y < this->y2();
75
73
  }
74
+ return test_x >= 0 && test_x < this->w && test_y >= 0 && test_y < this->h;
76
75
  }
77
76
 
78
- bool Rect::inside(Rect rect, bool absolute) const {
77
+ bool Rect::inside(Rect rect) const {
79
78
  if (!this->is_set() || !rect.is_set()) {
80
79
  return true;
81
80
  }
82
- if (absolute) {
83
- return ((rect.x <= this->x2()) && (rect.x2() >= this->x) && (rect.y <= this->y2()) && (rect.y2() >= this->y));
84
- } else {
85
- return ((rect.x <= this->w) && (rect.w >= 0) && (rect.y <= this->h) && (rect.h >= 0));
86
- }
81
+ return this->x2() >= rect.x && this->x <= rect.x2() && this->y2() >= rect.y && this->y <= rect.y2();
87
82
  }
88
83
 
89
84
  void Rect::info(const std::string &prefix) {
@@ -26,7 +26,7 @@ class Rect {
26
26
  void extend(Rect rect);
27
27
  void shrink(Rect rect);
28
28
 
29
- bool inside(Rect rect, bool absolute = true) const;
29
+ bool inside(Rect rect) const;
30
30
  bool inside(int16_t test_x, int16_t test_y, bool absolute = true) const;
31
31
  bool equal(Rect rect) const;
32
32
  void info(const std::string &prefix = "rect info:");
@@ -187,7 +187,7 @@ void ENS160Component::update() {
187
187
  }
188
188
  return;
189
189
  case INVALID_OUTPUT:
190
- ESP_LOGE(TAG, "ENS160 Invalid Status - No Invalid Output");
190
+ ESP_LOGE(TAG, "ENS160 Invalid Status - No valid output");
191
191
  this->status_set_warning();
192
192
  return;
193
193
  }
@@ -2,10 +2,6 @@
2
2
 
3
3
  #include "ble.h"
4
4
 
5
- #ifdef USE_ESP32_VARIANT_ESP32C6
6
- #include "const_esp32c6.h"
7
- #endif // USE_ESP32_VARIANT_ESP32C6
8
-
9
5
  #include "esphome/core/application.h"
10
6
  #include "esphome/core/log.h"
11
7
 
@@ -127,11 +123,7 @@ bool ESP32BLE::ble_setup_() {
127
123
  if (esp_bt_controller_get_status() != ESP_BT_CONTROLLER_STATUS_ENABLED) {
128
124
  // start bt controller
129
125
  if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE) {
130
- #ifdef USE_ESP32_VARIANT_ESP32C6
131
- esp_bt_controller_config_t cfg = BT_CONTROLLER_CONFIG;
132
- #else
133
126
  esp_bt_controller_config_t cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
134
- #endif
135
127
  err = esp_bt_controller_init(&cfg);
136
128
  if (err != ESP_OK) {
137
129
  ESP_LOGE(TAG, "esp_bt_controller_init failed: %s", esp_err_to_name(err));
@@ -173,6 +173,8 @@ class ESPBTClient : public ESPBTDeviceListener {
173
173
  virtual void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) = 0;
174
174
  virtual void connect() = 0;
175
175
  virtual void disconnect() = 0;
176
+ bool disconnect_pending() const { return this->want_disconnect_; }
177
+ void cancel_pending_disconnect() { this->want_disconnect_ = false; }
176
178
  virtual void set_state(ClientState st) {
177
179
  this->state_ = st;
178
180
  if (st == ClientState::IDLE) {
@@ -69,7 +69,7 @@ void HLW8012Component::update() {
69
69
 
70
70
  float power = cf_hz * this->power_multiplier_;
71
71
 
72
- if (this->change_mode_at_ != 0) {
72
+ if (this->change_mode_at_ != 0 || this->change_mode_every_ == 0) {
73
73
  // Only read cf1 after one cycle. Apparently it's quite unstable after being changed.
74
74
  if (this->current_mode_) {
75
75
  float current = cf1_hz * this->current_multiplier_;
@@ -16,7 +16,7 @@ from esphome.const import (
16
16
  )
17
17
  from esphome.core import CORE, ID, Lambda
18
18
  from esphome.cpp_generator import MockObj
19
- from esphome.cpp_types import ESPTime, uint32
19
+ from esphome.cpp_types import ESPTime, int32, uint32
20
20
  from esphome.helpers import cpp_string_escape
21
21
  from esphome.schema_extractors import SCHEMA_EXTRACT, schema_extractor
22
22
 
@@ -263,6 +263,15 @@ def pixels_validator(value):
263
263
  pixels = LValidator(pixels_validator, uint32, retmapper=literal)
264
264
 
265
265
 
266
+ def padding_validator(value):
267
+ if isinstance(value, str) and value.lower().endswith("px"):
268
+ value = value[:-2]
269
+ return cv.int_(value)
270
+
271
+
272
+ padding = LValidator(padding_validator, int32, retmapper=literal)
273
+
274
+
266
275
  def zoom_validator(value):
267
276
  value = cv.float_range(0.1, 10.0)(value)
268
277
  return value
@@ -120,6 +120,7 @@ void LvglComponent::add_event_cb(lv_obj_t *obj, event_callback_t callback, lv_ev
120
120
  void LvglComponent::add_page(LvPageType *page) {
121
121
  this->pages_.push_back(page);
122
122
  page->set_parent(this);
123
+ lv_disp_set_default(this->disp_);
123
124
  page->setup(this->pages_.size() - 1);
124
125
  }
125
126
  void LvglComponent::show_page(size_t index, lv_scr_load_anim_t anim, uint32_t time) {
@@ -156,13 +156,13 @@ STYLE_PROPS = {
156
156
  "opa_layered": lvalid.opacity,
157
157
  "outline_color": lvalid.lv_color,
158
158
  "outline_opa": lvalid.opacity,
159
- "outline_pad": lvalid.pixels,
159
+ "outline_pad": lvalid.padding,
160
160
  "outline_width": lvalid.pixels,
161
- "pad_all": lvalid.pixels,
162
- "pad_bottom": lvalid.pixels,
163
- "pad_left": lvalid.pixels,
164
- "pad_right": lvalid.pixels,
165
- "pad_top": lvalid.pixels,
161
+ "pad_all": lvalid.padding,
162
+ "pad_bottom": lvalid.padding,
163
+ "pad_left": lvalid.padding,
164
+ "pad_right": lvalid.padding,
165
+ "pad_top": lvalid.padding,
166
166
  "shadow_color": lvalid.lv_color,
167
167
  "shadow_ofs_x": lvalid.lv_int,
168
168
  "shadow_ofs_y": lvalid.lv_int,
@@ -226,8 +226,8 @@ FULL_STYLE_SCHEMA = STYLE_SCHEMA.extend(
226
226
  {
227
227
  cv.Optional(df.CONF_GRID_CELL_X_ALIGN): grid_alignments,
228
228
  cv.Optional(df.CONF_GRID_CELL_Y_ALIGN): grid_alignments,
229
- cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
230
- cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
229
+ cv.Optional(df.CONF_PAD_ROW): lvalid.padding,
230
+ cv.Optional(df.CONF_PAD_COLUMN): lvalid.padding,
231
231
  }
232
232
  )
233
233
 
@@ -370,8 +370,8 @@ LAYOUT_SCHEMA = {
370
370
  cv.Required(df.CONF_GRID_COLUMNS): [grid_spec],
371
371
  cv.Optional(df.CONF_GRID_COLUMN_ALIGN): grid_alignments,
372
372
  cv.Optional(df.CONF_GRID_ROW_ALIGN): grid_alignments,
373
- cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
374
- cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
373
+ cv.Optional(df.CONF_PAD_ROW): lvalid.padding,
374
+ cv.Optional(df.CONF_PAD_COLUMN): lvalid.padding,
375
375
  },
376
376
  df.TYPE_FLEX: {
377
377
  cv.Optional(
@@ -380,8 +380,8 @@ LAYOUT_SCHEMA = {
380
380
  cv.Optional(df.CONF_FLEX_ALIGN_MAIN, default="start"): flex_alignments,
381
381
  cv.Optional(df.CONF_FLEX_ALIGN_CROSS, default="start"): flex_alignments,
382
382
  cv.Optional(df.CONF_FLEX_ALIGN_TRACK, default="start"): flex_alignments,
383
- cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
384
- cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
383
+ cv.Optional(df.CONF_PAD_ROW): lvalid.padding,
384
+ cv.Optional(df.CONF_PAD_COLUMN): lvalid.padding,
385
385
  },
386
386
  },
387
387
  lower=True,
@@ -427,8 +427,8 @@ ALL_STYLES = {
427
427
  **STYLE_PROPS,
428
428
  **GRID_CELL_SCHEMA,
429
429
  **FLEX_OBJ_SCHEMA,
430
- cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
431
- cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
430
+ cv.Optional(df.CONF_PAD_ROW): lvalid.padding,
431
+ cv.Optional(df.CONF_PAD_COLUMN): lvalid.padding,
432
432
  }
433
433
 
434
434
 
@@ -67,12 +67,13 @@ class ArcType(NumberType):
67
67
  lv.arc_set_mode(w.obj, literal(config[CONF_MODE]))
68
68
  lv.arc_set_change_rate(w.obj, config[CONF_CHANGE_RATE])
69
69
 
70
- if config.get(CONF_ADJUSTABLE) is False:
71
- lv_obj.remove_style(w.obj, nullptr, literal("LV_PART_KNOB"))
72
- w.clear_flag("LV_OBJ_FLAG_CLICKABLE")
73
- elif CONF_GROUP not in config:
74
- # For some reason arc does not get automatically added to the default group
75
- lv.group_add_obj(lv_expr.group_get_default(), w.obj)
70
+ if CONF_ADJUSTABLE in config:
71
+ if not config[CONF_ADJUSTABLE]:
72
+ lv_obj.remove_style(w.obj, nullptr, literal("LV_PART_KNOB"))
73
+ w.clear_flag("LV_OBJ_FLAG_CLICKABLE")
74
+ elif CONF_GROUP not in config:
75
+ # For some reason arc does not get automatically added to the default group
76
+ lv.group_add_obj(lv_expr.group_get_default(), w.obj)
76
77
 
77
78
  value = await get_start_value(config)
78
79
  if value is not None:
@@ -19,7 +19,7 @@ from ..defines import (
19
19
  CONF_SELECTED,
20
20
  )
21
21
  from ..helpers import lvgl_components_required
22
- from ..lv_validation import key_code, lv_bool, pixels
22
+ from ..lv_validation import key_code, lv_bool, padding
23
23
  from ..lvcode import lv, lv_add, lv_expr
24
24
  from ..schemas import automation_schema
25
25
  from ..types import (
@@ -59,8 +59,8 @@ BUTTONMATRIX_BUTTON_SCHEMA = cv.Schema(
59
59
  BUTTONMATRIX_SCHEMA = cv.Schema(
60
60
  {
61
61
  cv.Optional(CONF_ONE_CHECKED, default=False): lv_bool,
62
- cv.Optional(CONF_PAD_ROW): pixels,
63
- cv.Optional(CONF_PAD_COLUMN): pixels,
62
+ cv.Optional(CONF_PAD_ROW): padding,
63
+ cv.Optional(CONF_PAD_COLUMN): padding,
64
64
  cv.GenerateID(CONF_BUTTON_TEXT_LIST_ID): cv.declare_id(char_ptr),
65
65
  cv.Required(CONF_ROWS): cv.ensure_list(
66
66
  cv.Schema(
@@ -2,7 +2,7 @@ from esphome.config_validation import Optional
2
2
  from esphome.const import CONF_TEXT
3
3
 
4
4
  from ..defines import CONF_INDICATOR, CONF_MAIN, CONF_PAD_COLUMN
5
- from ..lv_validation import lv_text, pixels
5
+ from ..lv_validation import lv_text, padding
6
6
  from ..lvcode import lv
7
7
  from ..schemas import TEXT_SCHEMA
8
8
  from ..types import LvBoolean
@@ -19,7 +19,7 @@ class CheckboxType(WidgetType):
19
19
  (CONF_MAIN, CONF_INDICATOR),
20
20
  TEXT_SCHEMA.extend(
21
21
  {
22
- Optional(CONF_PAD_COLUMN): pixels,
22
+ Optional(CONF_PAD_COLUMN): padding,
23
23
  }
24
24
  ),
25
25
  )
@@ -36,7 +36,6 @@ DROPDOWN_BASE_SCHEMA = cv.Schema(
36
36
  cv.Optional(CONF_SYMBOL): lv_text,
37
37
  cv.Exclusive(CONF_SELECTED_INDEX, CONF_SELECTED_TEXT): lv_int,
38
38
  cv.Exclusive(CONF_SELECTED_TEXT, CONF_SELECTED_TEXT): lv_text,
39
- cv.Optional(CONF_DIR, default="BOTTOM"): DIRECTIONS.one_of,
40
39
  cv.Optional(CONF_DROPDOWN_LIST): part_schema(dropdown_list_spec.parts),
41
40
  }
42
41
  )
@@ -44,12 +43,14 @@ DROPDOWN_BASE_SCHEMA = cv.Schema(
44
43
  DROPDOWN_SCHEMA = DROPDOWN_BASE_SCHEMA.extend(
45
44
  {
46
45
  cv.Required(CONF_OPTIONS): cv.ensure_list(option_string),
46
+ cv.Optional(CONF_DIR, default="BOTTOM"): DIRECTIONS.one_of,
47
47
  }
48
48
  )
49
49
 
50
50
  DROPDOWN_UPDATE_SCHEMA = DROPDOWN_BASE_SCHEMA.extend(
51
51
  {
52
52
  cv.Optional(CONF_OPTIONS): cv.ensure_list(option_string),
53
+ cv.Optional(CONF_DIR): DIRECTIONS.one_of,
53
54
  }
54
55
  )
55
56
 
@@ -10,7 +10,7 @@ from ..defines import (
10
10
  CONF_ZOOM,
11
11
  LvConstant,
12
12
  )
13
- from ..lv_validation import angle, lv_bool, lv_image, size, zoom
13
+ from ..lv_validation import lv_angle, lv_bool, lv_image, size, zoom
14
14
  from ..lvcode import lv
15
15
  from ..types import lv_img_t
16
16
  from . import Widget, WidgetType
@@ -20,9 +20,9 @@ CONF_IMAGE = "image"
20
20
 
21
21
  BASE_IMG_SCHEMA = cv.Schema(
22
22
  {
23
- cv.Optional(CONF_PIVOT_X, default="50%"): size,
24
- cv.Optional(CONF_PIVOT_Y, default="50%"): size,
25
- cv.Optional(CONF_ANGLE): angle,
23
+ cv.Optional(CONF_PIVOT_X): size,
24
+ cv.Optional(CONF_PIVOT_Y): size,
25
+ cv.Optional(CONF_ANGLE): lv_angle,
26
26
  cv.Optional(CONF_ZOOM): zoom,
27
27
  cv.Optional(CONF_OFFSET_X): size,
28
28
  cv.Optional(CONF_OFFSET_Y): size,
@@ -63,19 +63,22 @@ class ImgType(WidgetType):
63
63
  async def to_code(self, w: Widget, config):
64
64
  if src := config.get(CONF_SRC):
65
65
  lv.img_set_src(w.obj, await lv_image.process(src))
66
+ if (pivot_x := config.get(CONF_PIVOT_X)) and (
67
+ pivot_y := config.get(CONF_PIVOT_Y)
68
+ ):
69
+ lv.img_set_pivot(
70
+ w.obj, await size.process(pivot_x), await size.process(pivot_y)
71
+ )
66
72
  if (cf_angle := config.get(CONF_ANGLE)) is not None:
67
- pivot_x = config[CONF_PIVOT_X]
68
- pivot_y = config[CONF_PIVOT_Y]
69
- lv.img_set_pivot(w.obj, pivot_x, pivot_y)
70
- lv.img_set_angle(w.obj, cf_angle)
73
+ lv.img_set_angle(w.obj, await lv_angle.process(cf_angle))
71
74
  if (img_zoom := config.get(CONF_ZOOM)) is not None:
72
- lv.img_set_zoom(w.obj, img_zoom)
75
+ lv.img_set_zoom(w.obj, await zoom.process(img_zoom))
73
76
  if (offset := config.get(CONF_OFFSET_X)) is not None:
74
- lv.img_set_offset_x(w.obj, offset)
77
+ lv.img_set_offset_x(w.obj, await size.process(offset))
75
78
  if (offset := config.get(CONF_OFFSET_Y)) is not None:
76
- lv.img_set_offset_y(w.obj, offset)
79
+ lv.img_set_offset_y(w.obj, await size.process(offset))
77
80
  if CONF_ANTIALIAS in config:
78
- lv.img_set_antialias(w.obj, config[CONF_ANTIALIAS])
81
+ lv.img_set_antialias(w.obj, await lv_bool.process(config[CONF_ANTIALIAS]))
79
82
  if mode := config.get(CONF_MODE):
80
83
  await w.set_property("size_mode", mode)
81
84
 
@@ -134,11 +134,13 @@ MEDIA_PLAYER_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(
134
134
  )
135
135
 
136
136
 
137
- MEDIA_PLAYER_ACTION_SCHEMA = cv.Schema(
138
- {
139
- cv.GenerateID(): cv.use_id(MediaPlayer),
140
- cv.Optional(CONF_ANNOUNCEMENT, default=False): cv.templatable(cv.boolean),
141
- }
137
+ MEDIA_PLAYER_ACTION_SCHEMA = automation.maybe_simple_id(
138
+ cv.Schema(
139
+ {
140
+ cv.GenerateID(): cv.use_id(MediaPlayer),
141
+ cv.Optional(CONF_ANNOUNCEMENT, default=False): cv.templatable(cv.boolean),
142
+ }
143
+ )
142
144
  )
143
145
 
144
146
  MEDIA_PLAYER_CONDITION_SCHEMA = automation.maybe_simple_id(
@@ -111,7 +111,7 @@ void OnlineImage::update() {
111
111
  case ImageFormat::BMP:
112
112
  accept_mime_type = "image/bmp";
113
113
  break;
114
- #endif // ONLINE_IMAGE_BMP_SUPPORT
114
+ #endif // USE_ONLINE_IMAGE_BMP_SUPPORT
115
115
  #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT
116
116
  case ImageFormat::JPEG:
117
117
  accept_mime_type = "image/jpeg";
@@ -121,7 +121,7 @@ void OnlineImage::update() {
121
121
  case ImageFormat::PNG:
122
122
  accept_mime_type = "image/png";
123
123
  break;
124
- #endif // ONLINE_IMAGE_PNG_SUPPORT
124
+ #endif // USE_ONLINE_IMAGE_PNG_SUPPORT
125
125
  default:
126
126
  accept_mime_type = "image/*";
127
127
  }
@@ -159,7 +159,7 @@ void OnlineImage::update() {
159
159
  ESP_LOGD(TAG, "Allocating BMP decoder");
160
160
  this->decoder_ = make_unique<BmpDecoder>(this);
161
161
  }
162
- #endif // ONLINE_IMAGE_BMP_SUPPORT
162
+ #endif // USE_ONLINE_IMAGE_BMP_SUPPORT
163
163
  #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT
164
164
  if (this->format_ == ImageFormat::JPEG) {
165
165
  ESP_LOGD(TAG, "Allocating JPEG decoder");
@@ -171,7 +171,7 @@ void OnlineImage::update() {
171
171
  ESP_LOGD(TAG, "Allocating PNG decoder");
172
172
  this->decoder_ = make_unique<PngDecoder>(this);
173
173
  }
174
- #endif // ONLINE_IMAGE_PNG_SUPPORT
174
+ #endif // USE_ONLINE_IMAGE_PNG_SUPPORT
175
175
 
176
176
  if (!this->decoder_) {
177
177
  ESP_LOGE(TAG, "Could not instantiate decoder. Image format unsupported: %d", this->format_);
@@ -185,7 +185,7 @@ void OnlineImage::update() {
185
185
  this->download_error_callback_.call();
186
186
  return;
187
187
  }
188
- ESP_LOGI(TAG, "Downloading image (Size: %d)", total_size);
188
+ ESP_LOGI(TAG, "Downloading image (Size: %zu)", total_size);
189
189
  this->start_time_ = ::time(nullptr);
190
190
  }
191
191
 
@@ -1,7 +1,8 @@
1
1
 
2
2
  #ifdef USE_ESP32
3
3
  #include "psram.h"
4
- #ifdef USE_ESP_IDF
4
+ #include <esp_idf_version.h>
5
+ #if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5
5
6
  #include <esp_psram.h>
6
7
  #endif // USE_ESP_IDF
7
8
 
@@ -15,7 +16,7 @@ static const char *const TAG = "psram";
15
16
 
16
17
  void PsramComponent::dump_config() {
17
18
  ESP_LOGCONFIG(TAG, "PSRAM:");
18
- #ifdef USE_ESP_IDF
19
+ #if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5
19
20
  bool available = esp_psram_is_initialized();
20
21
 
21
22
  ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available));
@@ -68,7 +68,7 @@ void TT21100Touchscreen::setup() {
68
68
  this->x_raw_max_ = this->display_->get_native_width();
69
69
  }
70
70
  if (this->y_raw_max_ == this->y_raw_min_) {
71
- this->x_raw_max_ = this->display_->get_native_height();
71
+ this->y_raw_max_ = this->display_->get_native_height();
72
72
  }
73
73
  }
74
74
 
@@ -6,6 +6,7 @@
6
6
  #include <cinttypes>
7
7
  #include <cstdint>
8
8
  #ifdef USE_ESP32
9
+ #include <soc/soc_caps.h>
9
10
  #include "esp_idf_version.h"
10
11
  #include "esp_task_wdt.h"
11
12
  #endif
@@ -40,7 +41,7 @@ void WatchdogManager::set_timeout_(uint32_t timeout_ms) {
40
41
  #if ESP_IDF_VERSION_MAJOR >= 5
41
42
  esp_task_wdt_config_t wdt_config = {
42
43
  .timeout_ms = timeout_ms,
43
- .idle_core_mask = 0x03,
44
+ .idle_core_mask = (1 << SOC_CPU_CORES_NUM) - 1,
44
45
  .trigger_panic = true,
45
46
  };
46
47
  esp_task_wdt_reconfigure(&wdt_config);
esphome/const.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Constants used by esphome."""
2
2
 
3
- __version__ = "2025.4.0b3"
3
+ __version__ = "2025.4.2"
4
4
 
5
5
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
6
6
  VALID_SUBSTITUTIONS_CHARACTERS = (
esphome/log.py CHANGED
@@ -74,13 +74,14 @@ def setup_log(
74
74
 
75
75
  colorama.init()
76
76
 
77
- if log_level == logging.DEBUG:
77
+ # Setup logging - will map log level from string to constant
78
+ logging.basicConfig(level=log_level)
79
+
80
+ if logging.root.level == logging.DEBUG:
78
81
  CORE.verbose = True
79
- elif log_level == logging.CRITICAL:
82
+ elif logging.root.level == logging.CRITICAL:
80
83
  CORE.quiet = True
81
84
 
82
- logging.basicConfig(level=log_level)
83
-
84
85
  logging.getLogger("urllib3").setLevel(logging.WARNING)
85
86
 
86
87
  logging.getLogger().handlers[0].setFormatter(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esphome
3
- Version: 2025.4.0b3
3
+ Version: 2025.4.2
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
@@ -5,7 +5,7 @@ esphome/codegen.py,sha256=GePHUM7xdXb_Pil59SHVsXg2F4VBPgkH-Fz2PDX8Z54,1873
5
5
  esphome/config.py,sha256=fFrDYbhWY1xn_onAl_0jwlg9D8NkK_FdKULTlnjZtxs,39832
6
6
  esphome/config_helpers.py,sha256=MKf_wzO35nn41FvigXE0iYKDslPgL2ruf8R-EPtTT2I,3256
7
7
  esphome/config_validation.py,sha256=cjOlphJs-ybsA2VlXXPY-lYq80Vm2uPJ8oIXtWhiPU4,62490
8
- esphome/const.py,sha256=YmUUDO7IIGmZtHl5_2ncQyd2O0m97EQf-lynj7iIzbo,40830
8
+ esphome/const.py,sha256=JZQdmKUfNp5HreoPb6afXt42EzzB-sIATioDXTxeASo,40828
9
9
  esphome/coroutine.py,sha256=j_14z8dIIzIBeuNO30D4c1RJvMMt1xZFZ58Evd-EvJA,9344
10
10
  esphome/cpp_generator.py,sha256=1g-y3fxWSrd5Kpbz6DrJXaQajjuwQiTIaTRIz9n7svI,31237
11
11
  esphome/cpp_helpers.py,sha256=6C2vNbOIhZKi43xRVlk5hp9GfshfBn-rc5D_ZFUEYaE,4801
@@ -16,7 +16,7 @@ esphome/final_validate.py,sha256=EPhbU4xyEL3POdSY7oygyAIVvkeYM7qH-6eZWb76DFE,189
16
16
  esphome/git.py,sha256=rKb5JUc05nbRlvR4tRWGL851ANZUYuS7YZp5Tm5wHjE,6296
17
17
  esphome/helpers.py,sha256=2mQ0eyOLjdjaLRL6jdcJfg4UMnqEFY8ORrmEGc5yNHc,12435
18
18
  esphome/loader.py,sha256=5C-agEUY5AnES6Tdn8KTfot89HIQPeGYu8W1s4ZqT9M,6821
19
- esphome/log.py,sha256=HByzlt3RWl0bVsBnu43veUpVHSCdBjL9W6gYEhdNJkE,2098
19
+ esphome/log.py,sha256=XqVmsRvi4hHUkjcjwTSFBYbbXonNeoRKPE9bx9kfWf0,2181
20
20
  esphome/mqtt.py,sha256=jjmdEk-_ov_pAuy-FqNPQlPB1VOJEs8iFi4pe2gdiTM,9223
21
21
  esphome/pins.py,sha256=wO0d-2qn0fhT6WEN0H0AmYRSH90jW154hZT7RewMGYI,10713
22
22
  esphome/platformio_api.py,sha256=OEWhPZ2NQnTrZ3Vtm0IqW0E-xE7EyVhs5w3OtT2xfDY,11905
@@ -211,7 +211,7 @@ esphome/components/as3935/binary_sensor.py,sha256=jYvWfaqn_fiLsrgDDOUkYwjX8fqoos
211
211
  esphome/components/as3935/sensor.py,sha256=3oujDzOXmrtkj039se1uQANl81S6DqJ29a66cScc5H4,1200
212
212
  esphome/components/as3935_i2c/__init__.py,sha256=uVai73RnVf3KSevyinEZNXush_-OkCTml916Ry5C_Mc,710
213
213
  esphome/components/as3935_i2c/as3935_i2c.cpp,sha256=hgsX0IBzLntVsQst41EhOTaMD-Ja9Efr-9bFl6eG3fQ,1091
214
- esphome/components/as3935_i2c/as3935_i2c.h,sha256=EC2TIc1yyS6e373ZUjeIrX_JrD-4xO9DdnUHR-P9-co,622
214
+ esphome/components/as3935_i2c/as3935_i2c.h,sha256=Y_ZgPtVLwNe5oLrA841PuX4lLxqcxpiDonWaqK_YItQ,480
215
215
  esphome/components/as3935_spi/__init__.py,sha256=391auaqRigi9P7cZydd-5VKadpNK-1zbLyxp5syXDEQ,726
216
216
  esphome/components/as3935_spi/as3935_spi.cpp,sha256=H48t8Kjo3sqUD5oreznQOiQQFsC6kDmxCgE3Fm8w-Qo,1231
217
217
  esphome/components/as3935_spi/as3935_spi.h,sha256=5TKfNr9Pu4j196xmExGhde7LjxKVrpHsgF7uWna7r7A,870
@@ -380,7 +380,7 @@ esphome/components/ble_scanner/text_sensor.py,sha256=yOB-AMBbNwJ0K9zYXh3ZedA42Os
380
380
  esphome/components/bluetooth_proxy/__init__.py,sha256=yBpHNPhRuw7B_LKUvGFZLnrqItID31kQG-DTT679uu8,3282
381
381
  esphome/components/bluetooth_proxy/bluetooth_connection.cpp,sha256=KBSjOMljcqOsJ0hDSuJjhi8A9GK0_JnL9CPMfs1CDkc,11223
382
382
  esphome/components/bluetooth_proxy/bluetooth_connection.h,sha256=oR0r7QAUNABFMKB_anI_l7lI-iOE6RbyBPkDozoC14Y,1171
383
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp,sha256=Y6IEGD1-jzbcOYM4vHib0fHO2NSDZCu0RRN6JPSyPsU,22136
383
+ esphome/components/bluetooth_proxy/bluetooth_proxy.cpp,sha256=J5365iSzQ6C61hAAHqnd1jBhjPqp0dsmiat0mDLWv_Q,22466
384
384
  esphome/components/bluetooth_proxy/bluetooth_proxy.h,sha256=lEx8Qx2fcjkBU24vT39VUUuwkVJdQ2cB0lG9hTp0lM8,5144
385
385
  esphome/components/bme280_base/__init__.py,sha256=KQhkrj8Ny2lMRUdJXaem5z3-fiR2J82b9AGe58xnZgE,3688
386
386
  esphome/components/bme280_base/bme280_base.cpp,sha256=st3cMKvdG49rHF-pRfplpqhcFAfLZ_YxNmGouiPUQH4,12989
@@ -691,8 +691,8 @@ esphome/components/display/display.h,sha256=uIs9FRgOYUXvOuEJ1NWsXtfja0a3SWCdmx-g
691
691
  esphome/components/display/display_buffer.cpp,sha256=0jL60x2WNyDTNgjK2Iv7R4ZlA57cbIt1-J_QvGFKlbM,1896
692
692
  esphome/components/display/display_buffer.h,sha256=RkFqe72PZtSKR60mWlb79FDqVQQFsefcEOdOMwIjuGc,809
693
693
  esphome/components/display/display_color_utils.h,sha256=iThP3_WMbS5X9gKhARTTxAunrsMKuuTZxKPwOJ_JFXE,6099
694
- esphome/components/display/rect.cpp,sha256=wxsV5mOJ3ur2ijJ1ODpNK-KKaOBYTmhUrud6IBztNyE,2623
695
- esphome/components/display/rect.h,sha256=P0sq4_urG2AuELjK4FtD02Xi9aZjLCGfnbxYVRV_sn4,1182
694
+ esphome/components/display/rect.cpp,sha256=cG_Dx0Y5rztBVC5qQCWiD3eY0m8HWKL8G175NZnjyv8,2435
695
+ esphome/components/display/rect.h,sha256=vzVoMZ6U-77oCsZseuCOY2pyZym8jwjt5oUkR81DgjY,1160
696
696
  esphome/components/display_menu_base/__init__.py,sha256=gHT0iF3_twzYOyU00M5lOJTUHu9_VhZCSU-ZcBf3XFA,15518
697
697
  esphome/components/display_menu_base/automation.h,sha256=CyIxTQm84XO7gZX2hcOyFU_zGMnk6bEk0Zhu-ysSw5s,3577
698
698
  esphome/components/display_menu_base/display_menu_base.cpp,sha256=R1ZJmNHkrVmaJj7c6T8l3JnNve6KkbZmQjbLwUy4EjM,7647
@@ -754,7 +754,7 @@ esphome/components/endstop/endstop_cover.h,sha256=RRAAHaZRkRjH9Q2KMLDCoGnQ44Z_lC
754
754
  esphome/components/ens160/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
755
755
  esphome/components/ens160/sensor.py,sha256=JmqJW89ItAMvLqzpgrwWuLsNJctyV-_6i18t4rb-KcA,164
756
756
  esphome/components/ens160_base/__init__.py,sha256=VGWuu4IdB7GWLOns49nmj1dWQAUD3FmTYyyxYRRqMAI,2473
757
- esphome/components/ens160_base/ens160_base.cpp,sha256=SbEkBiH0BI8SLUIxsP7bNSyLOBkcAWtSBALqWlwVwts,9984
757
+ esphome/components/ens160_base/ens160_base.cpp,sha256=PRgqcB07kwVCQuquMFx5SjtT8j5ON3ZB-a6x2m2yn0M,9982
758
758
  esphome/components/ens160_base/ens160_base.h,sha256=u8rmUObUBj9JtxNJLjGS_Mv4ZhSmd0R9NwJeNX4D-yo,1732
759
759
  esphome/components/ens160_i2c/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
760
760
  esphome/components/ens160_i2c/ens160_i2c.cpp,sha256=qXi0VlzYvveeoNPMJh6DmGM_QG-Zc15aKL7T9HS76-0,932
@@ -806,14 +806,13 @@ esphome/components/esp32/post_build.py.script,sha256=ZBsPNunx2BH4ZiRyXnjTP7D7eN2
806
806
  esphome/components/esp32/preferences.cpp,sha256=6mrR6ziH2dnBcMKPD5RwYYB16tkAy0w75x_mRy4wQCY,6294
807
807
  esphome/components/esp32/preferences.h,sha256=9HIy-BOgjOXJiEgOizZ_Qb8-l6K4eb3VSPW8Y8ffuWM,165
808
808
  esphome/components/esp32_ble/__init__.py,sha256=quQt0RzBsZATfQRrrkXwSO8r-CTXyqx-iu5IXdB72iI,5608
809
- esphome/components/esp32_ble/ble.cpp,sha256=w51oEvWeMcYs2CgIlCLTFEMaxxzxW0hAstWhwHl_oQM,13661
809
+ esphome/components/esp32_ble/ble.cpp,sha256=DDkePu7NZrAXGViBYJaix07irL8GacZtLSiYtYPCCXM,13456
810
810
  esphome/components/esp32_ble/ble.h,sha256=1USMpwRwVHc6_CnxieJa55mMPq3GFfkEPPYarySc05Y,5234
811
811
  esphome/components/esp32_ble/ble_advertising.cpp,sha256=nWetDKFwcdhyaqRyq8KKmsFctLEF-4Bw81QPYHmxi24,6039
812
812
  esphome/components/esp32_ble/ble_advertising.h,sha256=dLksw168KS1wh3_X7GhesS9nacINphlZUl4nMgYSA8M,1480
813
813
  esphome/components/esp32_ble/ble_event.h,sha256=ED5C_SrTybqtu30vevlPr8NBsBUVKK6MSVC9UzwspHc,2771
814
814
  esphome/components/esp32_ble/ble_uuid.cpp,sha256=2go_q78xgFlQRH_ZpM4tdsDJqyqe_3Ssn2PJFkpjlfI,6167
815
815
  esphome/components/esp32_ble/ble_uuid.h,sha256=K7SoC6fQB7u_FQc4u__crSBLhxpCezc75uO7JFfaX7E,916
816
- esphome/components/esp32_ble/const_esp32c6.h,sha256=7FO00jYbc2-0BFhKWfCbcTkNdvRB-9Z0WX5o-EdddDE,3472
817
816
  esphome/components/esp32_ble/queue.h,sha256=w5h55_n5iNqMyCY3rEsrIzJdhGiCNf32_M1OjVIUKtE,1188
818
817
  esphome/components/esp32_ble_beacon/__init__.py,sha256=ts8d3ZFLBH_QE6cW748AZUXaK_yCqg3rzlJcObTGkAQ,3190
819
818
  esphome/components/esp32_ble_beacon/esp32_ble_beacon.cpp,sha256=Y1xsFMHU306rZ8ZU7Y0UmhU22gXYe_28o7jg1t5e3Ms,4202
@@ -842,7 +841,7 @@ esphome/components/esp32_ble_server/ble_service.h,sha256=BvKpr2fsUlNnviH9gdokI7I
842
841
  esphome/components/esp32_ble_tracker/__init__.py,sha256=mfStrLvJxJcTc1koz1grSqbslqG0SxCpQfi1899vRZk,14649
843
842
  esphome/components/esp32_ble_tracker/automation.h,sha256=0pDA6EX__f14sT0KJwcnqg7UOsueKjjegHPznQj9biw,3795
844
843
  esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp,sha256=-h-yvcDYOCk9zKLmMo45aroEg5vguELxJ3YiW8X-mYA,27960
845
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h,sha256=tsiHIew8JftoOwHDI9AcD8CSKQLTqnxTHONdvwPix0g,9348
844
+ esphome/components/esp32_ble_tracker/esp32_ble_tracker.h,sha256=D5YTrA5WROUkupXP5uW5y_xqAmfAoT3xxuHHsQ0-Dso,9488
846
845
  esphome/components/esp32_camera/__init__.py,sha256=JL1umjoPo8qLDUaFYQWI34j-ItCshy8COQgn2sa3csM,12630
847
846
  esphome/components/esp32_camera/esp32_camera.cpp,sha256=Ba2nu453rF4FDSlIJwD5sLnzE8ru4kKK4xVCvMdoyac,16960
848
847
  esphome/components/esp32_camera/esp32_camera.h,sha256=3-MKRSBcjDgI3I0uKmt0bGSfp2t6B85Zsjr06tmpa9Q,7590
@@ -1108,7 +1107,7 @@ esphome/components/hitachi_ac424/climate.py,sha256=oQMtfzZtDyvc8SoTq24ShaqECR_37
1108
1107
  esphome/components/hitachi_ac424/hitachi_ac424.cpp,sha256=-w70IYJ2Zgy7IbHavS9PVOz1pOQuSexnj0Ty_RWL4xQ,12416
1109
1108
  esphome/components/hitachi_ac424/hitachi_ac424.h,sha256=Dsq22csVCEnBEaSNdCp8mqQxXd6ZZzOTmILYmNSImmg,5189
1110
1109
  esphome/components/hlw8012/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1111
- esphome/components/hlw8012/hlw8012.cpp,sha256=AOUf2ngMWX1IwFsEGAaCHYNZXFWowsz-WR1UYmcenHU,4208
1110
+ esphome/components/hlw8012/hlw8012.cpp,sha256=eO7HueZ9mxOT_SSMbP3AWb0HXdES_UHfGB9LTZ8gyE0,4241
1112
1111
  esphome/components/hlw8012/hlw8012.h,sha256=rqkj3nhiQ7OPZYCs0ndl7ZpAM5yRkFtXF4plp7gE1jI,2760
1113
1112
  esphome/components/hlw8012/sensor.py,sha256=pGRSxb4G5gQ9GtDeQehaMzao9hWXC3qn_d5Cud5q0nM,4491
1114
1113
  esphome/components/hm3301/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1522,13 +1521,13 @@ esphome/components/lvgl/gradient.py,sha256=K60e7b52N8i7aQjkLIsij7OOXmVhBnJnxj4J3
1522
1521
  esphome/components/lvgl/hello_world.py,sha256=iwfSWO0TT0CEGN5M_QBY_oKqmYshT69jOBDFTTUyBII,1417
1523
1522
  esphome/components/lvgl/helpers.py,sha256=XI3C5IHwoSVlgR32kMxeXTZWK6iW112nmWv5wByrKLY,1253
1524
1523
  esphome/components/lvgl/keypads.py,sha256=jtQjAG4vbTzI5Pr1IBfrEEPzV_0k4wkKfCMfsef6VT4,2124
1525
- esphome/components/lvgl/lv_validation.py,sha256=8FoODFSzpxWUzRcwk7zOmv6TIpN9yXaHDIJjoCifOiA,13843
1524
+ esphome/components/lvgl/lv_validation.py,sha256=pnM6YNZvuVPAJyVlOFUyELpdHyULMS8e2AysrxhQgtw,14067
1526
1525
  esphome/components/lvgl/lvcode.py,sha256=pTpwXB0ZehgHVMF1y-fAvaTZPTbWfwA-iZwTbl2W9hI,10118
1527
- esphome/components/lvgl/lvgl_esphome.cpp,sha256=ZxJ-bm7wTxIbNST4uPLlhvGysfqOVqKyg1AOJzQe0aE,19253
1526
+ esphome/components/lvgl/lvgl_esphome.cpp,sha256=ffClk2SbGPxafbMZRshkkO-4MESBih4ADsfVpbj7cAg,19289
1528
1527
  esphome/components/lvgl/lvgl_esphome.h,sha256=8a5DaKfK0jWa1dQsA0bC0aw_RoPrLXC5vcBzVi4CCXU,13927
1529
1528
  esphome/components/lvgl/lvgl_hal.h,sha256=aZqWpSmKKAB-ZfNxxgxjgASTtLpAZjXJKuoTiPB0qqU,431
1530
1529
  esphome/components/lvgl/lvgl_proxy.h,sha256=JPmVBVh5zD5nraJCN7PqXVmQQlc4CPJe_X9tA6IAtXQ,547
1531
- esphome/components/lvgl/schemas.py,sha256=MsnVBsMAUB7xrZXZiZPFrpkLrhoOKxjbB94GgRkYUJQ,16213
1530
+ esphome/components/lvgl/schemas.py,sha256=NhbLKOS93LT4MWYmIP63VqaxamqzLx24GnFiPeVhg0A,16227
1532
1531
  esphome/components/lvgl/styles.py,sha256=HTqSzCIy2WUZhhChafVhBeVEemWqFfNyWtXII34XI7k,3010
1533
1532
  esphome/components/lvgl/touchscreens.py,sha256=CntwVa1EUu6iBnxfvuv0rCYd_Njmf451CYdRqQyb9N4,1607
1534
1533
  esphome/components/lvgl/trigger.py,sha256=nk36OgqEQWuSwFsTHprM-bhIjh15bh3NyrsK-ffqGsw,3442
@@ -1548,13 +1547,13 @@ esphome/components/lvgl/text/lvgl_text.h,sha256=H0tLRmOMCKTelGj-kLF0J6CGoOPQo142
1548
1547
  esphome/components/lvgl/text_sensor/__init__.py,sha256=UtZwQ09zNCVaR48v7UodRSa-rY-1XF9YBg-jPTRNKRg,1103
1549
1548
  esphome/components/lvgl/widgets/__init__.py,sha256=IcHp4fcwJsT-fglO2UngisZCkcsWdzXkiiv7XdcL9pE,14360
1550
1549
  esphome/components/lvgl/widgets/animimg.py,sha256=RWPVVkMRhpnJPN_OLeuZq0eBHbW3TG-42G0HROM07BU,3120
1551
- esphome/components/lvgl/widgets/arc.py,sha256=Gmqxe2AyROyU-7C9XKfzBY3g5CowV0ZJVsDzJAfUvCY,2522
1550
+ esphome/components/lvgl/widgets/arc.py,sha256=vsB_I-4cEU2GfUJ1VaPZ5QAwr5_QGBczOr88uBKdhJk,2575
1552
1551
  esphome/components/lvgl/widgets/button.py,sha256=lR_8dHZK3P9AY6WbjfL3Sj9oyTOf-i9qbvkGzcPpzgk,423
1553
- esphome/components/lvgl/widgets/buttonmatrix.py,sha256=6t3EsaoiCscj0kbilAbbc3XRO-PuPGTYX9TFVppP6xY,8642
1552
+ esphome/components/lvgl/widgets/buttonmatrix.py,sha256=32WhGeM2BOrVVQn92Kz6PVPrQst1wtdJZajV3Cbmsy8,8645
1554
1553
  esphome/components/lvgl/widgets/canvas.py,sha256=2d28uDfpRUZtN9pjEE2nAXWuQFUCywsPFj8rox0fvdQ,12329
1555
- esphome/components/lvgl/widgets/checkbox.py,sha256=5MiANLeX3o1uDAlCorw1aOfAkNx1SMnGm6rcXsSgq_c,891
1556
- esphome/components/lvgl/widgets/dropdown.py,sha256=po7WxHBEU53HiB7srKPgI-cOe3dKcoG8RgpSvmB0gMY,3048
1557
- esphome/components/lvgl/widgets/img.py,sha256=bWCMc7KO8Mzyvs8cGX1CVGL7qPi3rMH8v8fwX95wzqM,2374
1554
+ esphome/components/lvgl/widgets/checkbox.py,sha256=3oUHWxATPbAo6pwWuP9CqHe0-s5VU55igQzLMA7DvmM,893
1555
+ esphome/components/lvgl/widgets/dropdown.py,sha256=ee7F6dmZ3ND-Boc6Ok7EIuauKZpEhmMTgR85nhozw6E,3098
1556
+ esphome/components/lvgl/widgets/img.py,sha256=vd0Nz14yO8FE1lRTl6xvAh8hUAqZpLqb8BdP1rPg9VQ,2555
1558
1557
  esphome/components/lvgl/widgets/keyboard.py,sha256=US2TmB_8QMKsyftdDICPbNcVfmKiGYxriJ7T8HM-9sY,1765
1559
1558
  esphome/components/lvgl/widgets/label.py,sha256=5xl1a6apdJgGKmkpL8m7RDASjaeKzjKTllhY26Gbfag,1139
1560
1559
  esphome/components/lvgl/widgets/led.py,sha256=qoe_kvZpoRkwbxz25Z66KQ__KLC2tfhAukChp1jdlDc,888
@@ -1715,7 +1714,7 @@ esphome/components/mdns/mdns_esp8266.cpp,sha256=vL7EDV3Zw4O3lco43vb0q57GIcZfPdPN
1715
1714
  esphome/components/mdns/mdns_host.cpp,sha256=H5Phb-CqVmuoKF1LafoRvl8rJjem33Q8iKg2opykyzg,421
1716
1715
  esphome/components/mdns/mdns_libretiny.cpp,sha256=j3uX11MTYYO1WEN6X-UyuqMt9i6Fz0MbUgWUvNChwho,1225
1717
1716
  esphome/components/mdns/mdns_rp2040.cpp,sha256=AzSFWtVJtq2dA9wJIFkvZvk8r_7oYbdFVtGVRxNBSgg,1306
1718
- esphome/components/media_player/__init__.py,sha256=5JO0c-8j-kOBXCOaN-FiYlQh0vw9DHEnTuj_muZAalc,8337
1717
+ esphome/components/media_player/__init__.py,sha256=20NmFZBdDwZBBDLhMmgymYG0Dz5Y-lXWSMLNQSwk9jM,8391
1719
1718
  esphome/components/media_player/automation.h,sha256=1aQDiCcXCfbwi2WrU8WyaPnW9MfR95-f9MhFNBhQ3kI,3685
1720
1719
  esphome/components/media_player/media_player.cpp,sha256=VIaMoEUzX7Z95Ng8iCfBWEG3_2469WETuhokRRF2KP4,4453
1721
1720
  esphome/components/media_player/media_player.h,sha256=dXDuZ2apylAj78YccKfoJzX_qscoUN-5KYGKYxiwYv4,3252
@@ -2028,7 +2027,7 @@ esphome/components/online_image/image_decoder.cpp,sha256=p_693Ac8F-vs2n_1AZ7E57H
2028
2027
  esphome/components/online_image/image_decoder.h,sha256=A8sU-3m5dkyR8S2wXbeR7v7C5mRSLxrvfvsBPYz3a90,3798
2029
2028
  esphome/components/online_image/jpeg_image.cpp,sha256=1qDTfzp7H6oxuRVBVXXgglourmlcBO4uvxQK6YLDFl4,2867
2030
2029
  esphome/components/online_image/jpeg_image.h,sha256=RxlXrSxgd_j7tXYMGdkU1gVmkWB6Jc0YHuq13NrY9fc,741
2031
- esphome/components/online_image/online_image.cpp,sha256=4gJksrHknRF4ZxKRL8gnBMsh_kKY_YV5177tIrr4hzw,10568
2030
+ esphome/components/online_image/online_image.cpp,sha256=NpXUoKdbIJRdPcY5tQ-fxa6WLpTYeRs8sHJnNP2M2pA,10585
2032
2031
  esphome/components/online_image/online_image.h,sha256=40F0zWRI0p6A8pFfQdQ1eD5tnwgCxBDbeNcpCHgeUzk,7177
2033
2032
  esphome/components/online_image/png_image.cpp,sha256=ysXfjX05YPuZaG0wxHg0EiPlj3HlddQqUdDG25W1jpY,2432
2034
2033
  esphome/components/online_image/png_image.h,sha256=oDyTIkyOB2MiKxZ9YmctwN7sbc_E7Qz0PvFxWg9Lip8,783
@@ -2197,7 +2196,7 @@ esphome/components/prometheus/__init__.py,sha256=V3QD6_RZk7tY7PDuKNbQzzimbgRJ0hk
2197
2196
  esphome/components/prometheus/prometheus_handler.cpp,sha256=CYECmgJoD3rXlcBN5GPrDStNuIT34JAAOmpjLL27F64,30420
2198
2197
  esphome/components/prometheus/prometheus_handler.h,sha256=iw1ecV2tnDMA1H6kk59P0I-fE-P8bOrHkRnURi3epRg,6773
2199
2198
  esphome/components/psram/__init__.py,sha256=fmi0xiOuhBdYMt5Wab9PetwRLCbPEz7PtmZHf0CEXzo,3983
2200
- esphome/components/psram/psram.cpp,sha256=S4KxEKxGihvP4GMvpmgGe6KluasB7XUTPpiqtHYS1bs,1408
2199
+ esphome/components/psram/psram.cpp,sha256=ryng74NZ0ok4miBDb21vgwDjl2IWFirZXeh3S4tNfNY,1509
2201
2200
  esphome/components/psram/psram.h,sha256=LdElwxbKK68o4J9sdmMX8RZn5D94lXhCCSDm83Ge2jc,239
2202
2201
  esphome/components/pulse_counter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2203
2202
  esphome/components/pulse_counter/automation.h,sha256=y-QRATOjByPNkmMaTlaIwvO3q1hpJyifb39GV85CS7c,644
@@ -3061,7 +3060,7 @@ esphome/components/tt21100/binary_sensor/__init__.py,sha256=OjI12GxEqj5vWFeDlKNu
3061
3060
  esphome/components/tt21100/binary_sensor/tt21100_button.cpp,sha256=ZOA10bQSzemgI_AI8HGACr7asmIT2VRT8VwmegX246Y,610
3062
3061
  esphome/components/tt21100/binary_sensor/tt21100_button.h,sha256=tRjNrAMHz41egQW_XoSXynISS_xWaKSokWOKrXRZrqo,726
3063
3062
  esphome/components/tt21100/touchscreen/__init__.py,sha256=98ImW5iZ9wjnNBZGcJCHCkS2bs56hLcsCdN8K7Ag5ig,1293
3064
- esphome/components/tt21100/touchscreen/tt21100.cpp,sha256=r1j4Dz2hWJtdZhPTiPmEKHWoybCbkrgBS6EGtw45sOA,4598
3063
+ esphome/components/tt21100/touchscreen/tt21100.cpp,sha256=F4FVjQt2IVmiZCnCP-nDuxwFbUAzKRiGjzk7YlFP3QQ,4598
3065
3064
  esphome/components/tt21100/touchscreen/tt21100.h,sha256=WHhvc2epRkatp_50A1gGlR3QLopGVg2IhzbUo-yqNnM,1058
3066
3065
  esphome/components/ttp229_bsf/__init__.py,sha256=RmcTeVNSps5N6vw0CQRzRfWp2pmjYVvYOwMtLjlXRtk,938
3067
3066
  esphome/components/ttp229_bsf/binary_sensor.py,sha256=7hlkGgcFbJi1GcycV04tQRoYW64yBuznrnAPrGnQvo0,792
@@ -3220,7 +3219,7 @@ esphome/components/wake_on_lan/button.py,sha256=QQwzh-kUVI8RJVxCP_JpQUk0A9lDDf-c
3220
3219
  esphome/components/wake_on_lan/wake_on_lan.cpp,sha256=6rxv_zyBNuYUn-DoahTna0qusEkw4KuU9ccvWU3ZZTY,3114
3221
3220
  esphome/components/wake_on_lan/wake_on_lan.h,sha256=46_1RmAkbCIzHZc0m4ZuJgdO2QHkiWjGuB7hw7MgKZM,984
3222
3221
  esphome/components/watchdog/__init__.py,sha256=phrvkU9sRMp2iVLKx5pNCG11R1HtrJChggVbad-OVWA,26
3223
- esphome/components/watchdog/watchdog.cpp,sha256=oQlZLqWN3CiiyKqn_R77K_IOtjKJbrzPvcc8dKWL1r8,1633
3222
+ esphome/components/watchdog/watchdog.cpp,sha256=A8--WFI3ccw62n7A-MZSmwtO_I2g2rC4bpEUB-kbEWo,1683
3224
3223
  esphome/components/watchdog/watchdog.h,sha256=8Ro3Kgi9C1bYFBkNEeKc188EK63uI48VuzhF5yHPuCk,400
3225
3224
  esphome/components/waveshare_epaper/__init__.py,sha256=4Nn7UhpMJ9oSbuLdyVEW7G9PlIey2v33SWRNVizt9Oc,30
3226
3225
  esphome/components/waveshare_epaper/display.py,sha256=DBEN5glBcXQBvv0bwLcddNzP-fkeyk-yKeHsfPXw1nM,9794
@@ -3481,9 +3480,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
3481
3480
  esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
3482
3481
  esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
3483
3482
  esphome/dashboard/util/text.py,sha256=ENDnfN4O0NdA3CKVJjQYabFbwbrsIhVKrAMQe53qYu4,534
3484
- esphome-2025.4.0b3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3485
- esphome-2025.4.0b3.dist-info/METADATA,sha256=Jt9b7fnpji_hJPcBRJbXakJEdCnvd-2YgwXzUbqTx-4,3673
3486
- esphome-2025.4.0b3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
3487
- esphome-2025.4.0b3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3488
- esphome-2025.4.0b3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3489
- esphome-2025.4.0b3.dist-info/RECORD,,
3483
+ esphome-2025.4.2.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3484
+ esphome-2025.4.2.dist-info/METADATA,sha256=Op0OgVC82_DSnkLCjGQ8qQrB3Gl9NAm5huIJb_QWls0,3671
3485
+ esphome-2025.4.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
3486
+ esphome-2025.4.2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3487
+ esphome-2025.4.2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3488
+ esphome-2025.4.2.dist-info/RECORD,,
@@ -1,74 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef USE_ESP32_VARIANT_ESP32C6
4
-
5
- #include <esp_bt.h>
6
-
7
- namespace esphome {
8
- namespace esp32_ble {
9
-
10
- static const esp_bt_controller_config_t BT_CONTROLLER_CONFIG = {
11
- .config_version = CONFIG_VERSION,
12
- .ble_ll_resolv_list_size = CONFIG_BT_LE_LL_RESOLV_LIST_SIZE,
13
- .ble_hci_evt_hi_buf_count = DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT,
14
- .ble_hci_evt_lo_buf_count = DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT,
15
- .ble_ll_sync_list_cnt = DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST,
16
- .ble_ll_sync_cnt = DEFAULT_BT_LE_MAX_PERIODIC_SYNCS,
17
- .ble_ll_rsp_dup_list_count = CONFIG_BT_LE_LL_DUP_SCAN_LIST_COUNT,
18
- .ble_ll_adv_dup_list_count = CONFIG_BT_LE_LL_DUP_SCAN_LIST_COUNT,
19
- .ble_ll_tx_pwr_dbm = BLE_LL_TX_PWR_DBM_N,
20
- .rtc_freq = RTC_FREQ_N,
21
- .ble_ll_sca = CONFIG_BT_LE_LL_SCA,
22
- .ble_ll_scan_phy_number = BLE_LL_SCAN_PHY_NUMBER_N,
23
- .ble_ll_conn_def_auth_pyld_tmo = BLE_LL_CONN_DEF_AUTH_PYLD_TMO_N,
24
- .ble_ll_jitter_usecs = BLE_LL_JITTER_USECS_N,
25
- .ble_ll_sched_max_adv_pdu_usecs = BLE_LL_SCHED_MAX_ADV_PDU_USECS_N,
26
- .ble_ll_sched_direct_adv_max_usecs = BLE_LL_SCHED_DIRECT_ADV_MAX_USECS_N,
27
- .ble_ll_sched_adv_max_usecs = BLE_LL_SCHED_ADV_MAX_USECS_N,
28
- .ble_scan_rsp_data_max_len = DEFAULT_BT_LE_SCAN_RSP_DATA_MAX_LEN_N,
29
- .ble_ll_cfg_num_hci_cmd_pkts = BLE_LL_CFG_NUM_HCI_CMD_PKTS_N,
30
- .ble_ll_ctrl_proc_timeout_ms = BLE_LL_CTRL_PROC_TIMEOUT_MS_N,
31
- .nimble_max_connections = DEFAULT_BT_LE_MAX_CONNECTIONS,
32
- .ble_whitelist_size = DEFAULT_BT_NIMBLE_WHITELIST_SIZE, // NOLINT
33
- .ble_acl_buf_size = DEFAULT_BT_LE_ACL_BUF_SIZE,
34
- .ble_acl_buf_count = DEFAULT_BT_LE_ACL_BUF_COUNT,
35
- .ble_hci_evt_buf_size = DEFAULT_BT_LE_HCI_EVT_BUF_SIZE,
36
- .ble_multi_adv_instances = DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES,
37
- .ble_ext_adv_max_size = DEFAULT_BT_LE_EXT_ADV_MAX_SIZE,
38
- .controller_task_stack_size = NIMBLE_LL_STACK_SIZE,
39
- .controller_task_prio = ESP_TASK_BT_CONTROLLER_PRIO,
40
- .controller_run_cpu = 0,
41
- .enable_qa_test = RUN_QA_TEST,
42
- .enable_bqb_test = RUN_BQB_TEST,
43
- #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 3, 1)
44
- // The following fields have been removed since ESP IDF version 5.3.1, see commit:
45
- // https://github.com/espressif/esp-idf/commit/e761c1de8f9c0777829d597b4d5a33bb070a30a8
46
- .enable_uart_hci = HCI_UART_EN,
47
- .ble_hci_uart_port = DEFAULT_BT_LE_HCI_UART_PORT,
48
- .ble_hci_uart_baud = DEFAULT_BT_LE_HCI_UART_BAUD,
49
- .ble_hci_uart_data_bits = DEFAULT_BT_LE_HCI_UART_DATA_BITS,
50
- .ble_hci_uart_stop_bits = DEFAULT_BT_LE_HCI_UART_STOP_BITS,
51
- .ble_hci_uart_flow_ctrl = DEFAULT_BT_LE_HCI_UART_FLOW_CTRL,
52
- .ble_hci_uart_uart_parity = DEFAULT_BT_LE_HCI_UART_PARITY,
53
- #endif
54
- .enable_tx_cca = DEFAULT_BT_LE_TX_CCA_ENABLED,
55
- .cca_rssi_thresh = 256 - DEFAULT_BT_LE_CCA_RSSI_THRESH,
56
- .sleep_en = NIMBLE_SLEEP_ENABLE,
57
- .coex_phy_coded_tx_rx_time_limit = DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF,
58
- .dis_scan_backoff = NIMBLE_DISABLE_SCAN_BACKOFF,
59
- .ble_scan_classify_filter_enable = 1,
60
- .main_xtal_freq = CONFIG_XTAL_FREQ,
61
- .version_num = (uint8_t) efuse_hal_chip_revision(),
62
- .cpu_freq_mhz = CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ,
63
- .ignore_wl_for_direct_adv = 0,
64
- .enable_pcl = DEFAULT_BT_LE_POWER_CONTROL_ENABLED,
65
- #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 3)
66
- .csa2_select = DEFAULT_BT_LE_50_FEATURE_SUPPORT,
67
- #endif
68
- .config_magic = CONFIG_MAGIC,
69
- };
70
-
71
- } // namespace esp32_ble
72
- } // namespace esphome
73
-
74
- #endif // USE_ESP32_VARIANT_ESP32C6