esphome 2024.11.1__py3-none-any.whl → 2024.11.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.
@@ -58,7 +58,7 @@ class BinarySensor : public EntityBase, public EntityBase_DeviceClass {
58
58
  void publish_initial_state(bool state);
59
59
 
60
60
  /// The current reported state of the binary sensor.
61
- bool state;
61
+ bool state{false};
62
62
 
63
63
  void add_filter(Filter *filter);
64
64
  void add_filters(const std::vector<Filter *> &filters);
@@ -15,7 +15,7 @@ static const char *const TAG = "honeywellabp2";
15
15
  void HONEYWELLABP2Sensor::read_sensor_data() {
16
16
  if (this->read(raw_data_, 7) != i2c::ERROR_OK) {
17
17
  ESP_LOGE(TAG, "Communication with ABP2 failed!");
18
- this->mark_failed();
18
+ this->status_set_warning("couldn't read sensor data");
19
19
  return;
20
20
  }
21
21
  float press_counts = encode_uint24(raw_data_[1], raw_data_[2], raw_data_[3]); // calculate digital pressure counts
@@ -25,12 +25,13 @@ void HONEYWELLABP2Sensor::read_sensor_data() {
25
25
  (this->max_pressure_ - this->min_pressure_)) +
26
26
  this->min_pressure_;
27
27
  this->last_temperature_ = (temp_counts * 200 / 16777215) - 50;
28
+ this->status_clear_warning();
28
29
  }
29
30
 
30
31
  void HONEYWELLABP2Sensor::start_measurement() {
31
32
  if (this->write(i2c_cmd_, 3) != i2c::ERROR_OK) {
32
33
  ESP_LOGE(TAG, "Communication with ABP2 failed!");
33
- this->mark_failed();
34
+ this->status_set_warning("couldn't start measurement");
34
35
  return;
35
36
  }
36
37
  this->measurement_running_ = true;
@@ -39,7 +40,7 @@ void HONEYWELLABP2Sensor::start_measurement() {
39
40
  bool HONEYWELLABP2Sensor::is_measurement_ready() {
40
41
  if (this->read(raw_data_, 1) != i2c::ERROR_OK) {
41
42
  ESP_LOGE(TAG, "Communication with ABP2 failed!");
42
- this->mark_failed();
43
+ this->status_set_warning("couldn't check measurement");
43
44
  return false;
44
45
  }
45
46
  if ((raw_data_[0] & (0x1 << STATUS_BIT_BUSY)) > 0) {
@@ -52,7 +53,7 @@ bool HONEYWELLABP2Sensor::is_measurement_ready() {
52
53
  void HONEYWELLABP2Sensor::measurement_timeout() {
53
54
  ESP_LOGE(TAG, "Timeout!");
54
55
  this->measurement_running_ = false;
55
- this->mark_failed();
56
+ this->status_set_warning("measurement timed out");
56
57
  }
57
58
 
58
59
  float HONEYWELLABP2Sensor::get_pressure() { return this->last_pressure_; }
@@ -79,7 +80,7 @@ void HONEYWELLABP2Sensor::update() {
79
80
  ESP_LOGV(TAG, "Update Honeywell ABP2 Sensor");
80
81
 
81
82
  this->start_measurement();
82
- this->set_timeout("meas_timeout", 50, [this] { this->measurement_timeout(); });
83
+ this->set_timeout("meas_timeout", 100, [this] { this->measurement_timeout(); });
83
84
  }
84
85
 
85
86
  void HONEYWELLABP2Sensor::dump_config() {
@@ -322,8 +322,8 @@ async def to_code(configs):
322
322
  await encoders_to_code(lv_component, config, default_group)
323
323
  await keypads_to_code(lv_component, config, default_group)
324
324
  await theme_to_code(config)
325
- await styles_to_code(config)
326
325
  await gradients_to_code(config)
326
+ await styles_to_code(config)
327
327
  await set_obj_properties(lv_scr_act, config)
328
328
  await add_widgets(lv_scr_act, config)
329
329
  await add_pages(lv_component, config)
@@ -30,7 +30,7 @@ from .defines import (
30
30
  call_lambda,
31
31
  literal,
32
32
  )
33
- from .helpers import esphome_fonts_used, lv_fonts_used, requires_component
33
+ from .helpers import add_lv_use, esphome_fonts_used, lv_fonts_used, requires_component
34
34
  from .types import lv_font_t, lv_gradient_t, lv_img_t
35
35
 
36
36
  opacity_consts = LvConstant("LV_OPA_", "TRANSP", "COVER")
@@ -326,6 +326,7 @@ def image_validator(value):
326
326
  value = requires_component("image")(value)
327
327
  value = cv.use_id(Image_)(value)
328
328
  lv_images_used.add(value)
329
+ add_lv_use("img", "label")
329
330
  return value
330
331
 
331
332
 
@@ -341,6 +341,7 @@ FLEX_OBJ_SCHEMA = {
341
341
  cv.Optional(df.CONF_FLEX_GROW): cv.int_,
342
342
  }
343
343
 
344
+
344
345
  DISP_BG_SCHEMA = cv.Schema(
345
346
  {
346
347
  cv.Optional(df.CONF_DISP_BG_IMAGE): lv_image,
@@ -39,7 +39,10 @@ LINE_SCHEMA = {
39
39
  class LineType(WidgetType):
40
40
  def __init__(self):
41
41
  super().__init__(
42
- CONF_LINE, LvType("lv_line_t"), (CONF_MAIN,), LINE_SCHEMA, modify_schema={}
42
+ CONF_LINE,
43
+ LvType("lv_line_t"),
44
+ (CONF_MAIN,),
45
+ LINE_SCHEMA,
43
46
  )
44
47
 
45
48
  async def to_code(self, w: Widget, config):
@@ -6,7 +6,7 @@
6
6
  namespace esphome {
7
7
  namespace matrix_keypad {
8
8
 
9
- class MatrixKeypadBinarySensor : public MatrixKeypadListener, public binary_sensor::BinarySensor {
9
+ class MatrixKeypadBinarySensor : public MatrixKeypadListener, public binary_sensor::BinarySensorInitiallyOff {
10
10
  public:
11
11
  MatrixKeypadBinarySensor(uint8_t key) : has_key_(true), key_(key){};
12
12
  MatrixKeypadBinarySensor(const char *key) : has_key_(true), key_((uint8_t) key[0]){};
@@ -38,8 +38,9 @@ void Modbus::loop() {
38
38
 
39
39
  // stop blocking new send commands after sent_wait_time_ ms after response received
40
40
  if (now - this->last_send_ > send_wait_time_) {
41
- if (waiting_for_response > 0)
41
+ if (waiting_for_response > 0) {
42
42
  ESP_LOGV(TAG, "Stop waiting for response from %d", waiting_for_response);
43
+ }
43
44
  waiting_for_response = 0;
44
45
  }
45
46
  }
@@ -163,7 +163,7 @@ CONFIG_SCHEMA = cv.All(
163
163
  ),
164
164
  cv.Optional(CONF_ON_OFFLINE): automation.validate_automation(
165
165
  {
166
- cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(ModbusOnlineTrigger),
166
+ cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(ModbusOfflineTrigger),
167
167
  }
168
168
  ),
169
169
  }
@@ -622,51 +622,87 @@ int64_t payload_to_number(const std::vector<uint8_t> &data, SensorValueType sens
622
622
  uint32_t bitmask) {
623
623
  int64_t value = 0; // int64_t because it can hold signed and unsigned 32 bits
624
624
 
625
+ size_t size = data.size() - offset;
626
+ bool error = false;
625
627
  switch (sensor_value_type) {
626
628
  case SensorValueType::U_WORD:
627
- value = mask_and_shift_by_rightbit(get_data<uint16_t>(data, offset), bitmask); // default is 0xFFFF ;
629
+ if (size >= 2) {
630
+ value = mask_and_shift_by_rightbit(get_data<uint16_t>(data, offset), bitmask); // default is 0xFFFF ;
631
+ } else {
632
+ error = true;
633
+ }
628
634
  break;
629
635
  case SensorValueType::U_DWORD:
630
636
  case SensorValueType::FP32:
631
- value = get_data<uint32_t>(data, offset);
632
- value = mask_and_shift_by_rightbit((uint32_t) value, bitmask);
637
+ if (size >= 4) {
638
+ value = get_data<uint32_t>(data, offset);
639
+ value = mask_and_shift_by_rightbit((uint32_t) value, bitmask);
640
+ } else {
641
+ error = true;
642
+ }
633
643
  break;
634
644
  case SensorValueType::U_DWORD_R:
635
645
  case SensorValueType::FP32_R:
636
- value = get_data<uint32_t>(data, offset);
637
- value = static_cast<uint32_t>(value & 0xFFFF) << 16 | (value & 0xFFFF0000) >> 16;
638
- value = mask_and_shift_by_rightbit((uint32_t) value, bitmask);
646
+ if (size >= 4) {
647
+ value = get_data<uint32_t>(data, offset);
648
+ value = static_cast<uint32_t>(value & 0xFFFF) << 16 | (value & 0xFFFF0000) >> 16;
649
+ value = mask_and_shift_by_rightbit((uint32_t) value, bitmask);
650
+ } else {
651
+ error = true;
652
+ }
639
653
  break;
640
654
  case SensorValueType::S_WORD:
641
- value = mask_and_shift_by_rightbit(get_data<int16_t>(data, offset),
642
- bitmask); // default is 0xFFFF ;
655
+ if (size >= 2) {
656
+ value = mask_and_shift_by_rightbit(get_data<int16_t>(data, offset),
657
+ bitmask); // default is 0xFFFF ;
658
+ } else {
659
+ error = true;
660
+ }
643
661
  break;
644
662
  case SensorValueType::S_DWORD:
645
- value = mask_and_shift_by_rightbit(get_data<int32_t>(data, offset), bitmask);
663
+ if (size >= 4) {
664
+ value = mask_and_shift_by_rightbit(get_data<int32_t>(data, offset), bitmask);
665
+ } else {
666
+ error = true;
667
+ }
646
668
  break;
647
669
  case SensorValueType::S_DWORD_R: {
648
- value = get_data<uint32_t>(data, offset);
649
- // Currently the high word is at the low position
650
- // the sign bit is therefore at low before the switch
651
- uint32_t sign_bit = (value & 0x8000) << 16;
652
- value = mask_and_shift_by_rightbit(
653
- static_cast<int32_t>(((value & 0x7FFF) << 16 | (value & 0xFFFF0000) >> 16) | sign_bit), bitmask);
670
+ if (size >= 4) {
671
+ value = get_data<uint32_t>(data, offset);
672
+ // Currently the high word is at the low position
673
+ // the sign bit is therefore at low before the switch
674
+ uint32_t sign_bit = (value & 0x8000) << 16;
675
+ value = mask_and_shift_by_rightbit(
676
+ static_cast<int32_t>(((value & 0x7FFF) << 16 | (value & 0xFFFF0000) >> 16) | sign_bit), bitmask);
677
+ } else {
678
+ error = true;
679
+ }
654
680
  } break;
655
681
  case SensorValueType::U_QWORD:
656
682
  case SensorValueType::S_QWORD:
657
683
  // Ignore bitmask for QWORD
658
- value = get_data<uint64_t>(data, offset);
684
+ if (size >= 8) {
685
+ value = get_data<uint64_t>(data, offset);
686
+ } else {
687
+ error = true;
688
+ }
659
689
  break;
660
690
  case SensorValueType::U_QWORD_R:
661
691
  case SensorValueType::S_QWORD_R: {
662
692
  // Ignore bitmask for QWORD
663
- uint64_t tmp = get_data<uint64_t>(data, offset);
664
- value = (tmp << 48) | (tmp >> 48) | ((tmp & 0xFFFF0000) << 16) | ((tmp >> 16) & 0xFFFF0000);
693
+ if (size >= 8) {
694
+ uint64_t tmp = get_data<uint64_t>(data, offset);
695
+ value = (tmp << 48) | (tmp >> 48) | ((tmp & 0xFFFF0000) << 16) | ((tmp >> 16) & 0xFFFF0000);
696
+ } else {
697
+ error = true;
698
+ }
665
699
  } break;
666
700
  case SensorValueType::RAW:
667
701
  default:
668
702
  break;
669
703
  }
704
+ if (error)
705
+ ESP_LOGE(TAG, "not enough data for value");
670
706
  return value;
671
707
  }
672
708
 
@@ -1,6 +1,7 @@
1
1
  # Commands
2
2
  SW_RESET_CMD = 0x01
3
3
  SLEEP_OUT = 0x11
4
+ NORON = 0x13
4
5
  INVERT_OFF = 0x20
5
6
  INVERT_ON = 0x21
6
7
  ALL_ON = 0x23
@@ -56,6 +57,7 @@ chip.cmd(0xC2, 0x00)
56
57
  chip.delay(10)
57
58
  chip.cmd(TEON, 0x00)
58
59
  chip.cmd(PIXFMT, 0x55)
60
+ chip.cmd(NORON)
59
61
 
60
62
  chip = DriverChip("AXS15231")
61
63
  chip.cmd(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5)
@@ -111,7 +111,6 @@ void QspiDbi::reset_params_(bool ready) {
111
111
  mad |= MADCTL_MY;
112
112
  this->write_command_(MADCTL_CMD, mad);
113
113
  this->write_command_(BRIGHTNESS, this->brightness_);
114
- this->write_command_(NORON);
115
114
  this->write_command_(DISPLAY_ON);
116
115
  }
117
116
 
@@ -6,6 +6,8 @@ from esphome.const import (
6
6
  ENTITY_CATEGORY_DIAGNOSTIC,
7
7
  )
8
8
 
9
+ DEPENDENCIES = ["network"]
10
+
9
11
  status_ns = cg.esphome_ns.namespace("status")
10
12
  StatusBinarySensor = status_ns.class_(
11
13
  "StatusBinarySensor", binary_sensor.BinarySensor, cg.Component
@@ -137,8 +137,16 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
137
137
  // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html#_CPPv417wifi_sta_config_t
138
138
  wifi_config_t conf;
139
139
  memset(&conf, 0, sizeof(conf));
140
- snprintf(reinterpret_cast<char *>(conf.sta.ssid), sizeof(conf.sta.ssid), "%s", ap.get_ssid().c_str());
141
- snprintf(reinterpret_cast<char *>(conf.sta.password), sizeof(conf.sta.password), "%s", ap.get_password().c_str());
140
+ if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) {
141
+ ESP_LOGE(TAG, "SSID is too long");
142
+ return false;
143
+ }
144
+ if (ap.get_password().size() > sizeof(conf.sta.password)) {
145
+ ESP_LOGE(TAG, "password is too long");
146
+ return false;
147
+ }
148
+ memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
149
+ memcpy(reinterpret_cast<char *>(conf.sta.password), ap.get_password().c_str(), ap.get_password().size());
142
150
 
143
151
  // The weakest authmode to accept in the fast scan mode
144
152
  if (ap.get_password().empty()) {
@@ -746,7 +754,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
746
754
 
747
755
  wifi_config_t conf;
748
756
  memset(&conf, 0, sizeof(conf));
749
- snprintf(reinterpret_cast<char *>(conf.ap.ssid), sizeof(conf.ap.ssid), "%s", ap.get_ssid().c_str());
757
+ if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) {
758
+ ESP_LOGE(TAG, "AP SSID is too long");
759
+ return false;
760
+ }
761
+ memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
750
762
  conf.ap.channel = ap.get_channel().value_or(1);
751
763
  conf.ap.ssid_hidden = ap.get_ssid().size();
752
764
  conf.ap.max_connection = 5;
@@ -757,7 +769,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
757
769
  *conf.ap.password = 0;
758
770
  } else {
759
771
  conf.ap.authmode = WIFI_AUTH_WPA2_PSK;
760
- snprintf(reinterpret_cast<char *>(conf.ap.password), sizeof(conf.ap.password), "%s", ap.get_password().c_str());
772
+ if (ap.get_password().size() > sizeof(conf.ap.password)) {
773
+ ESP_LOGE(TAG, "AP password is too long");
774
+ return false;
775
+ }
776
+ memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size());
761
777
  }
762
778
 
763
779
  // pairwise cipher of SoftAP, group cipher will be derived using this.
@@ -236,8 +236,16 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
236
236
 
237
237
  struct station_config conf {};
238
238
  memset(&conf, 0, sizeof(conf));
239
- snprintf(reinterpret_cast<char *>(conf.ssid), sizeof(conf.ssid), "%s", ap.get_ssid().c_str());
240
- snprintf(reinterpret_cast<char *>(conf.password), sizeof(conf.password), "%s", ap.get_password().c_str());
239
+ if (ap.get_ssid().size() > sizeof(conf.ssid)) {
240
+ ESP_LOGE(TAG, "SSID is too long");
241
+ return false;
242
+ }
243
+ if (ap.get_password().size() > sizeof(conf.password)) {
244
+ ESP_LOGE(TAG, "password is too long");
245
+ return false;
246
+ }
247
+ memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
248
+ memcpy(reinterpret_cast<char *>(conf.password), ap.get_password().c_str(), ap.get_password().size());
241
249
 
242
250
  if (ap.get_bssid().has_value()) {
243
251
  conf.bssid_set = 1;
@@ -775,7 +783,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
775
783
  return false;
776
784
 
777
785
  struct softap_config conf {};
778
- snprintf(reinterpret_cast<char *>(conf.ssid), sizeof(conf.ssid), "%s", ap.get_ssid().c_str());
786
+ if (ap.get_ssid().size() > sizeof(conf.ssid)) {
787
+ ESP_LOGE(TAG, "AP SSID is too long");
788
+ return false;
789
+ }
790
+ memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
779
791
  conf.ssid_len = static_cast<uint8>(ap.get_ssid().size());
780
792
  conf.channel = ap.get_channel().value_or(1);
781
793
  conf.ssid_hidden = ap.get_hidden();
@@ -787,7 +799,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
787
799
  *conf.password = 0;
788
800
  } else {
789
801
  conf.authmode = AUTH_WPA2_PSK;
790
- snprintf(reinterpret_cast<char *>(conf.password), sizeof(conf.password), "%s", ap.get_password().c_str());
802
+ if (ap.get_password().size() > sizeof(conf.password)) {
803
+ ESP_LOGE(TAG, "AP password is too long");
804
+ return false;
805
+ }
806
+ memcpy(reinterpret_cast<char *>(conf.password), ap.get_password().c_str(), ap.get_password().size());
791
807
  }
792
808
 
793
809
  ETS_UART_INTR_DISABLE();
@@ -289,8 +289,16 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
289
289
  // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html#_CPPv417wifi_sta_config_t
290
290
  wifi_config_t conf;
291
291
  memset(&conf, 0, sizeof(conf));
292
- snprintf(reinterpret_cast<char *>(conf.sta.ssid), sizeof(conf.sta.ssid), "%s", ap.get_ssid().c_str());
293
- snprintf(reinterpret_cast<char *>(conf.sta.password), sizeof(conf.sta.password), "%s", ap.get_password().c_str());
292
+ if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) {
293
+ ESP_LOGE(TAG, "SSID is too long");
294
+ return false;
295
+ }
296
+ if (ap.get_password().size() > sizeof(conf.sta.password)) {
297
+ ESP_LOGE(TAG, "password is too long");
298
+ return false;
299
+ }
300
+ memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
301
+ memcpy(reinterpret_cast<char *>(conf.sta.password), ap.get_password().c_str(), ap.get_password().size());
294
302
 
295
303
  // The weakest authmode to accept in the fast scan mode
296
304
  if (ap.get_password().empty()) {
@@ -902,7 +910,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
902
910
 
903
911
  wifi_config_t conf;
904
912
  memset(&conf, 0, sizeof(conf));
905
- strncpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), sizeof(conf.ap.ssid));
913
+ if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) {
914
+ ESP_LOGE(TAG, "AP SSID is too long");
915
+ return false;
916
+ }
917
+ memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
906
918
  conf.ap.channel = ap.get_channel().value_or(1);
907
919
  conf.ap.ssid_hidden = ap.get_ssid().size();
908
920
  conf.ap.max_connection = 5;
@@ -913,7 +925,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
913
925
  *conf.ap.password = 0;
914
926
  } else {
915
927
  conf.ap.authmode = WIFI_AUTH_WPA2_PSK;
916
- strncpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), sizeof(conf.ap.password));
928
+ if (ap.get_password().size() > sizeof(conf.ap.password)) {
929
+ ESP_LOGE(TAG, "AP password is too long");
930
+ return false;
931
+ }
932
+ memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size());
917
933
  }
918
934
 
919
935
  // pairwise cipher of SoftAP, group cipher will be derived using this.
esphome/const.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Constants used by esphome."""
2
2
 
3
- __version__ = "2024.11.1"
3
+ __version__ = "2024.11.2"
4
4
 
5
5
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
6
6
  VALID_SUBSTITUTIONS_CHARACTERS = (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: esphome
3
- Version: 2024.11.1
3
+ Version: 2024.11.2
4
4
  Summary: Make creating custom firmwares for ESP32/ESP8266 super easy.
5
5
  Author-email: The ESPHome Authors <esphome@nabucasa.com>
6
6
  License: MIT
@@ -5,7 +5,7 @@ esphome/codegen.py,sha256=GePHUM7xdXb_Pil59SHVsXg2F4VBPgkH-Fz2PDX8Z54,1873
5
5
  esphome/config.py,sha256=nOiXPZv8wHtmytkNlGcewp0uuJd9G5rRjkqevYXtjzo,39618
6
6
  esphome/config_helpers.py,sha256=MKf_wzO35nn41FvigXE0iYKDslPgL2ruf8R-EPtTT2I,3256
7
7
  esphome/config_validation.py,sha256=RaF7hC9-VwtWA8C6vYaKVzyz4XqeoOOajr3EJDnaBaI,66311
8
- esphome/const.py,sha256=oDvb9zE2wQ8gEmq6yEdcTJpEoUljU6Kp1S8pwZTbOJs,40259
8
+ esphome/const.py,sha256=oHBWQlbPybxl4kgkm3InPSx9FK0v8rqQfL6FxBBBX_Y,40259
9
9
  esphome/coroutine.py,sha256=j_14z8dIIzIBeuNO30D4c1RJvMMt1xZFZ58Evd-EvJA,9344
10
10
  esphome/cpp_generator.py,sha256=lXPXHYUsFIvBSAoZ93mXYlGcXYg5L18nTtYGHE4_rr8,31203
11
11
  esphome/cpp_helpers.py,sha256=6C2vNbOIhZKi43xRVlk5hp9GfshfBn-rc5D_ZFUEYaE,4801
@@ -301,7 +301,7 @@ esphome/components/binary_sensor/__init__.py,sha256=B9P32IzsFQIAKZrsWJi4hd28PVNV
301
301
  esphome/components/binary_sensor/automation.cpp,sha256=oTQ2zjqYwNhJiY6IQ7qBQgJ3XUz2TNZqfn6TqEZ-_l0,4201
302
302
  esphome/components/binary_sensor/automation.h,sha256=5W8ExbRo-zbiwrjPXmYJdDmpi39x76XP8ae_Vjmxprg,4611
303
303
  esphome/components/binary_sensor/binary_sensor.cpp,sha256=6H8ycTYJO8Wpr_T8-3a5LUK4FuFFtmR_1awMAkp9lWY,1924
304
- esphome/components/binary_sensor/binary_sensor.h,sha256=f0hweLyEKWgLO-eVKDeUl2ajZElORfjouZprOEImv0k,2720
304
+ esphome/components/binary_sensor/binary_sensor.h,sha256=u9tZYhlp-27ZT480Uq2yJBoNC6gTLepFmMfD0JLTM-0,2727
305
305
  esphome/components/binary_sensor/filter.cpp,sha256=Gc45eMmI-TS7gzCF_PhtPwJJjb7NBckWSfY_H1DK-xI,4240
306
306
  esphome/components/binary_sensor/filter.h,sha256=ko00IiyMD5g2lRpPNZb36czAHRy_iK5YcBW6UQPZHz0,2968
307
307
  esphome/components/binary_sensor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1127,7 +1127,7 @@ esphome/components/honeywellabp/honeywellabp.cpp,sha256=ZL8OUA2VyjcuFga9Rxw1c0ko
1127
1127
  esphome/components/honeywellabp/honeywellabp.h,sha256=yy0ATFdIV4YI_EaCSXKgeRaOPjyzxzch35RrCLthM2Q,1809
1128
1128
  esphome/components/honeywellabp/sensor.py,sha256=FXe0LjBwUElNKSrsob1Jfx1LJEXtfniqztA34tpZ62Q,2233
1129
1129
  esphome/components/honeywellabp2_i2c/__init__.py,sha256=q4EX44dXWVPn_6bcR0pbzsGWt3AGvtFshH-O_T8YfOs,59
1130
- esphome/components/honeywellabp2_i2c/honeywellabp2.cpp,sha256=BNId9_2ey5W97Z8C7iyf8UynCczC4NvrmNy57eXVb8I,3435
1130
+ esphome/components/honeywellabp2_i2c/honeywellabp2.cpp,sha256=Dn8vtVDQxJ4RI0sd6e3xBKZlf7pa0ZqTdM2sDAWJwnA,3602
1131
1131
  esphome/components/honeywellabp2_i2c/honeywellabp2.h,sha256=oKx_nWi07fYioDxWPcNKtzDVKiyqBTvDIdREJoaHfMY,2140
1132
1132
  esphome/components/honeywellabp2_i2c/sensor.py,sha256=RepjqSYlTrq-IgTMhB-y1oBkjAPdEm2uRiCH_zWDMeU,2574
1133
1133
  esphome/components/host/__init__.py,sha256=GXt0D2oYrLC10UJKXle3oZtoEc4HRYDKHVO-pmWXFZA,1190
@@ -1457,7 +1457,7 @@ esphome/components/ltr_als_ps/ltr_als_ps.cpp,sha256=a5NBwe7wtJHwLgIDFoollhz1VSDI
1457
1457
  esphome/components/ltr_als_ps/ltr_als_ps.h,sha256=TxgTmv7apRGsxHAxDow6-CpkQsdWID2KLk-lSDi7KtQ,6466
1458
1458
  esphome/components/ltr_als_ps/ltr_definitions.h,sha256=yaIvnLQBIBnPuQBvHDD9Q_16Uoq1vnABwsTm8j77a3w,7255
1459
1459
  esphome/components/ltr_als_ps/sensor.py,sha256=0HSnG34wHnaj9s-qRO7tYn5p0rSBlGmVXaVDSG520sg,9980
1460
- esphome/components/lvgl/__init__.py,sha256=CzOK7zq-s_TbVcYKTKkD3BjU40eElF1_ymvI9UDNmAE,17415
1460
+ esphome/components/lvgl/__init__.py,sha256=6MAh-NMXgsoYxKaURc3KMrk0WQxwa14njGY1Ni24yZM,17415
1461
1461
  esphome/components/lvgl/automation.py,sha256=xFlt6T-qL1WYEFMQ5loHqCjtm2wC_Ml4VPDa1GAxikg,10204
1462
1462
  esphome/components/lvgl/defines.py,sha256=UtXGBexJNUgFuOrAtGEyDcRp0qLioLG0VLr8f-UQbMo,13414
1463
1463
  esphome/components/lvgl/encoders.py,sha256=l296tfKdDzhRNPmU1chvAosNRrmBhITlB43OtNVBrRw,3189
@@ -1466,13 +1466,13 @@ esphome/components/lvgl/gradient.py,sha256=K60e7b52N8i7aQjkLIsij7OOXmVhBnJnxj4J3
1466
1466
  esphome/components/lvgl/hello_world.py,sha256=iwfSWO0TT0CEGN5M_QBY_oKqmYshT69jOBDFTTUyBII,1417
1467
1467
  esphome/components/lvgl/helpers.py,sha256=XI3C5IHwoSVlgR32kMxeXTZWK6iW112nmWv5wByrKLY,1253
1468
1468
  esphome/components/lvgl/keypads.py,sha256=jtQjAG4vbTzI5Pr1IBfrEEPzV_0k4wkKfCMfsef6VT4,2124
1469
- esphome/components/lvgl/lv_validation.py,sha256=oou753_mUXsaX1s3q2Ei5qtCZIkBIGDc852lhBXv9ns,13538
1469
+ esphome/components/lvgl/lv_validation.py,sha256=fss9CHNO4JsWf3VYk9bxPYz0Z2ulx8kzilF4XjNv0bk,13581
1470
1470
  esphome/components/lvgl/lvcode.py,sha256=IkvCq59dR0RYJ-wKeO95zJEX-vNBWUkHEX5tJJfvv-Q,10018
1471
1471
  esphome/components/lvgl/lvgl_esphome.cpp,sha256=6-qhT-eqKkJt1R_xfZUWaVN2Ko5h5zuxB7ewcb3r9_0,19102
1472
1472
  esphome/components/lvgl/lvgl_esphome.h,sha256=DbwbGatY62fONYXhObsUGjAxpSOq7Abrt1I91IMeBEA,11916
1473
1473
  esphome/components/lvgl/lvgl_hal.h,sha256=aZqWpSmKKAB-ZfNxxgxjgASTtLpAZjXJKuoTiPB0qqU,431
1474
1474
  esphome/components/lvgl/lvgl_proxy.h,sha256=JPmVBVh5zD5nraJCN7PqXVmQQlc4CPJe_X9tA6IAtXQ,547
1475
- esphome/components/lvgl/schemas.py,sha256=CMWq6TLb4AlDRLj85xfExyH6q_USP0Buqx9Ecmkl-dM,14270
1475
+ esphome/components/lvgl/schemas.py,sha256=t_tWtSSPwJWnPS8xNVDupo3HOLfkL8PihDatdJWIQOE,14271
1476
1476
  esphome/components/lvgl/styles.py,sha256=oTrJp-Y8lr0fUuVRvYMAFLNJzlW8Y4f9VT3pUq7NYX0,2254
1477
1477
  esphome/components/lvgl/touchscreens.py,sha256=CntwVa1EUu6iBnxfvuv0rCYd_Njmf451CYdRqQyb9N4,1607
1478
1478
  esphome/components/lvgl/trigger.py,sha256=igqFoYZqjgF-XQbGyuEQhFqYsXGq1BadS8CK_M2XTLs,2221
@@ -1501,7 +1501,7 @@ esphome/components/lvgl/widgets/img.py,sha256=UE8X_RQhirIgJploL1VNHNuzdhlnhpZz41
1501
1501
  esphome/components/lvgl/widgets/keyboard.py,sha256=1WBm_nfeFpWvzYts68FN_arqovOwMFs47TQAPCKour8,1543
1502
1502
  esphome/components/lvgl/widgets/label.py,sha256=5xl1a6apdJgGKmkpL8m7RDASjaeKzjKTllhY26Gbfag,1139
1503
1503
  esphome/components/lvgl/widgets/led.py,sha256=qoe_kvZpoRkwbxz25Z66KQ__KLC2tfhAukChp1jdlDc,888
1504
- esphome/components/lvgl/widgets/line.py,sha256=bIlKIEnVYPENG5cqupakoqCMj-Oddgun-X5nmTpOMig,1392
1504
+ esphome/components/lvgl/widgets/line.py,sha256=b0lb8RAJwvLNknRhMsqD1iOOX0sE-vFZLnCC-rMOLzA,1411
1505
1505
  esphome/components/lvgl/widgets/lv_bar.py,sha256=DbiUvhKdh9bsRMTU-rJYYA5KCjBUxDsW-7tvx8-CIRM,1670
1506
1506
  esphome/components/lvgl/widgets/meter.py,sha256=pqSwtQWoyluLKmTSUR1gnsueUDi3lPm4lat8jV3Pi8Q,10985
1507
1507
  esphome/components/lvgl/widgets/msgbox.py,sha256=xiB_-lOhsIDoeYpmf_66fdiq-2yd1wloBb_6beg5ZwI,5273
@@ -1532,7 +1532,7 @@ esphome/components/matrix_keypad/__init__.py,sha256=CRTWzuhJdPMb-xY5wj26OaQf0RLD
1532
1532
  esphome/components/matrix_keypad/matrix_keypad.cpp,sha256=BenTjvW_skypNg6VIS2ysUdvYJNEQ1iUS23sm36EkNA,2984
1533
1533
  esphome/components/matrix_keypad/matrix_keypad.h,sha256=RktGC4bHUNkBS_5svvfJCOVPHn1B8e_mU9RcONMrVdk,1483
1534
1534
  esphome/components/matrix_keypad/binary_sensor/__init__.py,sha256=GyuSn0SbvIjeWAY8VL2h1ZBu_F_6IieB8kHzi3lA96c,1638
1535
- esphome/components/matrix_keypad/binary_sensor/matrix_keypad_binary_sensor.h,sha256=nQ2YDdOetTpAgGWbDf3tbLLou3DX5Mq_i4ATj0X3sOw,1321
1535
+ esphome/components/matrix_keypad/binary_sensor/matrix_keypad_binary_sensor.h,sha256=3fxEP2Oz7a7VT3AT6Y60IfOWKbN4p2byrwZGCuHob2Y,1333
1536
1536
  esphome/components/max17043/__init__.py,sha256=b0G6mAuSTWpAdOVf7rn3zBVRHoJZeZ8i6mkNLqOQfDI,28
1537
1537
  esphome/components/max17043/automation.h,sha256=rw2HnS8IuniX5673CzvfbIpjyO-Jtay2Q_S1MSEOoi4,434
1538
1538
  esphome/components/max17043/max17043.cpp,sha256=rl6WPIT4dzrCQSWe21zvMt7f-lp6DFnxH6-mL3HpcXM,3189
@@ -1728,12 +1728,12 @@ esphome/components/mmc5983/mmc5983.cpp,sha256=6tH7TsB2jSTYDR3-SQ90JgKNMQtFvG1OJH
1728
1728
  esphome/components/mmc5983/mmc5983.h,sha256=djHDHSC4UAimrWpqnKB-g1wycM5ym7vOLHU7BDRfwA8,784
1729
1729
  esphome/components/mmc5983/sensor.py,sha256=_eAPEfWzxYWsp5kPji_Rb99X6j9RxlReC4boxYWUtWY,1670
1730
1730
  esphome/components/modbus/__init__.py,sha256=pe9aU_PBNR9h9TqqezEE8zyvp7PLOtsa01Zaf08DMfk,3111
1731
- esphome/components/modbus/modbus.cpp,sha256=c0Q4E44zXtPQq3eMlqyNUlXnHcCW8rwdCIv3-_i5eLo,8516
1731
+ esphome/components/modbus/modbus.cpp,sha256=aNZF9Qc2AhrV9hGvfMVkRMqjxQllHdi5D_5MPE1ReuI,8526
1732
1732
  esphome/components/modbus/modbus.h,sha256=lDXklIqGZsyXnvf4oFslaGtD7yd9YwRkUYSpYsQRcAg,2477
1733
- esphome/components/modbus_controller/__init__.py,sha256=EW8ih7wV_8DXG7HKuKzOa2GLe-GF3ndhEbImcq7_b8g,11986
1733
+ esphome/components/modbus_controller/__init__.py,sha256=2qkvQDczAkOFHGBOszDRhCtR9kl3XeddSa8PCHspKW0,11987
1734
1734
  esphome/components/modbus_controller/automation.h,sha256=YzVMgVu37jvwsvCz3tSheYDJeZwi3IMx6NuMo1xgw7g,1106
1735
1735
  esphome/components/modbus_controller/const.py,sha256=dw_zuK27lFuR5aDtlOs_nVaFB9Snx3l48dgwc9_OAMg,825
1736
- esphome/components/modbus_controller/modbus_controller.cpp,sha256=FMl8Ym83pMxzx3PKRHmNrsppdm-g7ho2Ql_NxbeVReM,27819
1736
+ esphome/components/modbus_controller/modbus_controller.cpp,sha256=X02K_sdHi13Y_31HbKkv7k1Qpm7qwkqEGiKO6kU6CMI,28520
1737
1737
  esphome/components/modbus_controller/modbus_controller.h,sha256=R80yn8_lFDQo6pQ-8tQxl0V9IuKKqAQnkhh4IuymYJw,23454
1738
1738
  esphome/components/modbus_controller/binary_sensor/__init__.py,sha256=sFeTUMZlQwtIHKtX8kUDT5wvIk25SCiZG0Wdl6EYdFU,1634
1739
1739
  esphome/components/modbus_controller/binary_sensor/modbus_binarysensor.cpp,sha256=wsRl8P37mxr24CQJ4gCrFsUTlgVVKOVsY8HJTN1sUA8,1197
@@ -2176,8 +2176,8 @@ esphome/components/qr_code/qr_code.h,sha256=av3KfyeLMVzuXarboSTGBIeWsZww5k1aQXcX
2176
2176
  esphome/components/qspi_amoled/display.py,sha256=RKxYuiRRDxMz2JkpCZuc0Mc4KEsfFXG1lnAdE96j-6o,125
2177
2177
  esphome/components/qspi_dbi/__init__.py,sha256=4Nn7UhpMJ9oSbuLdyVEW7G9PlIey2v33SWRNVizt9Oc,30
2178
2178
  esphome/components/qspi_dbi/display.py,sha256=FSAqnA_rpdhYDX1wKzYvKQekPKVZms5r5xkxLbID29A,6470
2179
- esphome/components/qspi_dbi/models.py,sha256=d0SVPgOyuHgDzdXAPomACtUibZjS2vaO10K4Ka-pGy4,1349
2180
- esphome/components/qspi_dbi/qspi_dbi.cpp,sha256=iu0fjvpj4bgGVUr-0moxKs5dtSAUd10Cv_iwd5pAlT8,7453
2179
+ esphome/components/qspi_dbi/models.py,sha256=SteqD6BaCNLuuPpZWR6qfH7V-EDQ4La53Yv2PV9o9Cg,1378
2180
+ esphome/components/qspi_dbi/qspi_dbi.cpp,sha256=8aihsspfl44eXLkdXj6TppBoO46K7bnTi8lpqwRG2YE,7422
2181
2181
  esphome/components/qspi_dbi/qspi_dbi.h,sha256=Vnsliv6CNN_h-ZCvLraQYb9461qdvIh8jhFwhx1-ffk,6150
2182
2182
  esphome/components/qwiic_pir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2183
2183
  esphome/components/qwiic_pir/binary_sensor.py,sha256=JnaxTc_TLDq77ju6bnbR2KP8QOzasX0_3QoQwvmgVXE,2001
@@ -2694,7 +2694,7 @@ esphome/components/statsd/__init__.py,sha256=l8GtFsbqmF4uWjc8bQ6JugaP4XomCB1SqCX
2694
2694
  esphome/components/statsd/statsd.cpp,sha256=L4BgLvEvU_esYz6M1lLUr012D2E-QXsNV9wRJLepZZU,4016
2695
2695
  esphome/components/statsd/statsd.h,sha256=5IJl84anEly8as3ONh4s9KjIYmfhuAez-mHkdzWqIDY,1805
2696
2696
  esphome/components/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2697
- esphome/components/status/binary_sensor.py,sha256=qEHhIOHK0Lh-U-mZNjqutjFTMe5Sw3TMJy8IT7PRgNY,690
2697
+ esphome/components/status/binary_sensor.py,sha256=NPwpCVJ6KBoKVkF1zcQwMVoqtYHJVTCMnWEQImdpyjA,718
2698
2698
  esphome/components/status/status_binary_sensor.cpp,sha256=VaLg8eURQHNXOB-JC-SpR5wzVclpIYGS2lXdpTAwDfg,963
2699
2699
  esphome/components/status/status_binary_sensor.h,sha256=z84fHtyQuDzrdvadDUXlnBZhSopkVIDx3L1spOkfrjg,518
2700
2700
  esphome/components/status_led/__init__.py,sha256=ch8SQ_0fAHxPqWydVtfl0XUDVy7v0D-hc2-gN4nVvrM,782
@@ -3144,9 +3144,9 @@ esphome/components/wiegand/wiegand.h,sha256=gyg5szEK0okoeLBQR284k84xy-ln19kNIkeO
3144
3144
  esphome/components/wifi/__init__.py,sha256=6FJ70aZwjp6tqMecz3bfesxvHn8QLcWZKZqGrzhUTxc,16419
3145
3145
  esphome/components/wifi/wifi_component.cpp,sha256=55x9pFgJm12ZcLsGoRzT6-2I3UXGblVIpxJYMZZQgfo,28991
3146
3146
  esphome/components/wifi/wifi_component.h,sha256=VQWxTtMOL2Xc_9fZLklYT0cenyFlIzUuWZ3xzlhvoEY,12394
3147
- esphome/components/wifi/wifi_component_esp32_arduino.cpp,sha256=kwydBMeyVhT5GbzXAnoBZ_Du_xsUETaIY2WyUef_K7M,27121
3148
- esphome/components/wifi/wifi_component_esp8266.cpp,sha256=qtZzGum8-ZOr8MFLM2G3Z2br7SB6a-rDVU60gvyS7dc,27159
3149
- esphome/components/wifi/wifi_component_esp_idf.cpp,sha256=OCpmQudJRYVBrtL04Uhz7QMSWsu6gjLn-1pjVL3_9Y8,35518
3147
+ esphome/components/wifi/wifi_component_esp32_arduino.cpp,sha256=RnqQCAqEGGE3bmIboozw0leO7fgIsXkT8APfmMy6AHw,27583
3148
+ esphome/components/wifi/wifi_component_esp8266.cpp,sha256=NZhivdJTTWfamh_WLgRjpdrEBwNSbrBJifceNi4OX94,27621
3149
+ esphome/components/wifi/wifi_component_esp_idf.cpp,sha256=ZaL8sNHeifl6eSw3Fz_KC23kNhgAhuA-ORwA4mYpzPE,35994
3150
3150
  esphome/components/wifi/wifi_component_libretiny.cpp,sha256=ASeaZMVG2WJi321sfp1OuELAvvEh8W2Ooy2aG1MVUYE,16275
3151
3151
  esphome/components/wifi/wifi_component_pico_w.cpp,sha256=eDRB45mojDBWAFYMxuVPLb0mhFVCjRi5nrhpcxDusGQ,6392
3152
3152
  esphome/components/wifi/wpa2_eap.py,sha256=484kRwbjD-KGb1VqtER7V-3_3Bt7QDS4CCmpdZNOFNk,4859
@@ -3355,9 +3355,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
3355
3355
  esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
3356
3356
  esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
3357
3357
  esphome/dashboard/util/text.py,sha256=ENDnfN4O0NdA3CKVJjQYabFbwbrsIhVKrAMQe53qYu4,534
3358
- esphome-2024.11.1.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3359
- esphome-2024.11.1.dist-info/METADATA,sha256=OkKwQUu72jOkGlFwAb3s8fV8bhV5cKcuqKLNmvpltgM,3453
3360
- esphome-2024.11.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
3361
- esphome-2024.11.1.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3362
- esphome-2024.11.1.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3363
- esphome-2024.11.1.dist-info/RECORD,,
3358
+ esphome-2024.11.2.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3359
+ esphome-2024.11.2.dist-info/METADATA,sha256=CzCGTqK8SxTLlFSVTWRFFmmsxaMHl1EXpL0Xdfh3MY8,3453
3360
+ esphome-2024.11.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
3361
+ esphome-2024.11.2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3362
+ esphome-2024.11.2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3363
+ esphome-2024.11.2.dist-info/RECORD,,