esphome 2024.6.2__py3-none-any.whl → 2024.6.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.
esphome/codegen.py CHANGED
@@ -60,6 +60,7 @@ from esphome.cpp_types import ( # noqa
60
60
  std_ns,
61
61
  std_shared_ptr,
62
62
  std_string,
63
+ std_string_ref,
63
64
  std_vector,
64
65
  uint8,
65
66
  uint16,
@@ -145,24 +145,21 @@ bool DallasTemperatureSensor::check_scratch_pad_() {
145
145
  float DallasTemperatureSensor::get_temp_c_() {
146
146
  int16_t temp = (this->scratch_pad_[1] << 8) | this->scratch_pad_[0];
147
147
  if ((this->address_ & 0xff) == DALLAS_MODEL_DS18S20) {
148
- if (this->scratch_pad_[7] != 0x10)
149
- ESP_LOGE(TAG, "unexpected COUNT_PER_C value: %u", this->scratch_pad_[7]);
150
- temp = ((temp & 0xfff7) << 3) + (0x10 - this->scratch_pad_[6]) - 4;
151
- } else {
152
- switch (this->resolution_) {
153
- case 9:
154
- temp &= 0xfff8;
155
- break;
156
- case 10:
157
- temp &= 0xfffc;
158
- break;
159
- case 11:
160
- temp &= 0xfffe;
161
- break;
162
- case 12:
163
- default:
164
- break;
165
- }
148
+ return (temp >> 1) + (this->scratch_pad_[7] - this->scratch_pad_[6]) / float(this->scratch_pad_[7]) - 0.25;
149
+ }
150
+ switch (this->resolution_) {
151
+ case 9:
152
+ temp &= 0xfff8;
153
+ break;
154
+ case 10:
155
+ temp &= 0xfffc;
156
+ break;
157
+ case 11:
158
+ temp &= 0xfffe;
159
+ break;
160
+ case 12:
161
+ default:
162
+ break;
166
163
  }
167
164
 
168
165
  return temp / 16.0f;
@@ -37,14 +37,18 @@ void DS1307Component::read_time() {
37
37
  ESP_LOGW(TAG, "RTC halted, not syncing to system clock.");
38
38
  return;
39
39
  }
40
- ESPTime rtc_time{.second = uint8_t(ds1307_.reg.second + 10 * ds1307_.reg.second_10),
41
- .minute = uint8_t(ds1307_.reg.minute + 10u * ds1307_.reg.minute_10),
42
- .hour = uint8_t(ds1307_.reg.hour + 10u * ds1307_.reg.hour_10),
43
- .day_of_week = uint8_t(ds1307_.reg.weekday),
44
- .day_of_month = uint8_t(ds1307_.reg.day + 10u * ds1307_.reg.day_10),
45
- .day_of_year = 1, // ignored by recalc_timestamp_utc(false)
46
- .month = uint8_t(ds1307_.reg.month + 10u * ds1307_.reg.month_10),
47
- .year = uint16_t(ds1307_.reg.year + 10u * ds1307_.reg.year_10 + 2000)};
40
+ ESPTime rtc_time{
41
+ .second = uint8_t(ds1307_.reg.second + 10 * ds1307_.reg.second_10),
42
+ .minute = uint8_t(ds1307_.reg.minute + 10u * ds1307_.reg.minute_10),
43
+ .hour = uint8_t(ds1307_.reg.hour + 10u * ds1307_.reg.hour_10),
44
+ .day_of_week = uint8_t(ds1307_.reg.weekday),
45
+ .day_of_month = uint8_t(ds1307_.reg.day + 10u * ds1307_.reg.day_10),
46
+ .day_of_year = 1, // ignored by recalc_timestamp_utc(false)
47
+ .month = uint8_t(ds1307_.reg.month + 10u * ds1307_.reg.month_10),
48
+ .year = uint16_t(ds1307_.reg.year + 10u * ds1307_.reg.year_10 + 2000),
49
+ .is_dst = false, // not used
50
+ .timestamp = 0 // overwritten by recalc_timestamp_utc(false)
51
+ };
48
52
  rtc_time.recalc_timestamp_utc(false);
49
53
  if (!rtc_time.is_valid()) {
50
54
  ESP_LOGE(TAG, "Invalid RTC time, not syncing to system clock.");
@@ -1,10 +1,14 @@
1
1
  import esphome.codegen as cg
2
2
  import esphome.config_validation as cv
3
+ import esphome.final_validate as fv
3
4
  from esphome.components.ota import BASE_OTA_SCHEMA, ota_to_code, OTAComponent
4
5
  from esphome.const import (
6
+ CONF_ESPHOME,
5
7
  CONF_ID,
6
8
  CONF_NUM_ATTEMPTS,
9
+ CONF_OTA,
7
10
  CONF_PASSWORD,
11
+ CONF_PLATFORM,
8
12
  CONF_PORT,
9
13
  CONF_REBOOT_TIMEOUT,
10
14
  CONF_SAFE_MODE,
@@ -21,6 +25,19 @@ esphome = cg.esphome_ns.namespace("esphome")
21
25
  ESPHomeOTAComponent = esphome.class_("ESPHomeOTAComponent", OTAComponent)
22
26
 
23
27
 
28
+ def ota_esphome_final_validate(config):
29
+ fconf = fv.full_config.get()[CONF_OTA]
30
+ used_ports = []
31
+ for ota_conf in fconf:
32
+ if ota_conf.get(CONF_PLATFORM) == CONF_ESPHOME:
33
+ if (plat_port := ota_conf.get(CONF_PORT)) not in used_ports:
34
+ used_ports.append(plat_port)
35
+ else:
36
+ raise cv.Invalid(
37
+ f"Only one instance of the {CONF_ESPHOME} {CONF_OTA} {CONF_PLATFORM} is allowed per port. Note that this error may result from OTA specified in packages"
38
+ )
39
+
40
+
24
41
  CONFIG_SCHEMA = (
25
42
  cv.Schema(
26
43
  {
@@ -50,6 +67,8 @@ CONFIG_SCHEMA = (
50
67
  .extend(cv.COMPONENT_SCHEMA)
51
68
  )
52
69
 
70
+ FINAL_VALIDATE_SCHEMA = ota_esphome_final_validate
71
+
53
72
 
54
73
  @coroutine_with_priority(52.0)
55
74
  async def to_code(config):
@@ -257,7 +257,7 @@ async def http_request_action_to_code(config, action_id, template_arg, args):
257
257
  trigger,
258
258
  [
259
259
  (cg.std_shared_ptr.template(HttpContainer), "response"),
260
- (cg.std_string, "body"),
260
+ (cg.std_string_ref, "body"),
261
261
  ],
262
262
  conf,
263
263
  )
@@ -43,10 +43,10 @@ class HttpContainer : public Parented<HttpRequestComponent> {
43
43
  bool secure_{false};
44
44
  };
45
45
 
46
- class HttpRequestResponseTrigger : public Trigger<std::shared_ptr<HttpContainer>, std::string> {
46
+ class HttpRequestResponseTrigger : public Trigger<std::shared_ptr<HttpContainer>, std::string &> {
47
47
  public:
48
- void process(std::shared_ptr<HttpContainer> container, std::string response_body) {
49
- this->trigger(std::move(container), std::move(response_body));
48
+ void process(std::shared_ptr<HttpContainer> container, std::string &response_body) {
49
+ this->trigger(std::move(container), response_body);
50
50
  }
51
51
  };
52
52
 
@@ -153,8 +153,17 @@ template<typename... Ts> class HttpRequestSendAction : public Action<Ts...> {
153
153
  }
154
154
  }
155
155
 
156
- for (auto *trigger : this->response_triggers_) {
157
- trigger->process(container, response_body);
156
+ if (this->response_triggers_.size() == 1) {
157
+ // if there is only one trigger, no need to copy the response body
158
+ this->response_triggers_[0]->process(container, response_body);
159
+ } else {
160
+ for (auto *trigger : this->response_triggers_) {
161
+ // with multiple triggers, pass a copy of the response body to each
162
+ // one so that modifications made in one trigger are not visible to
163
+ // the others
164
+ auto response_body_copy = std::string(response_body);
165
+ trigger->process(container, response_body_copy);
166
+ }
158
167
  }
159
168
  container->end();
160
169
  }
@@ -116,7 +116,8 @@ void ModbusController::on_modbus_read_registers(uint8_t function_code, uint16_t
116
116
  ESP_LOGD(TAG, "Matched register. Address: 0x%02X. Value type: %zu. Register count: %u. Value: %0.1f.",
117
117
  server_register->address, static_cast<uint8_t>(server_register->value_type),
118
118
  server_register->register_count, value);
119
- number_to_payload(sixteen_bit_response, value, server_register->value_type);
119
+ std::vector<uint16_t> payload = float_to_payload(value, server_register->value_type);
120
+ sixteen_bit_response.insert(sixteen_bit_response.end(), payload.cbegin(), payload.cend());
120
121
  current_address += server_register->register_count;
121
122
  found = true;
122
123
  break;
@@ -15,7 +15,7 @@ void ModbusTextSensor::parse_and_publish(const std::vector<uint8_t> &data) {
15
15
  std::ostringstream output;
16
16
  uint8_t items_left = this->response_bytes;
17
17
  uint8_t index = this->offset;
18
- char buffer[4];
18
+ char buffer[5];
19
19
  while ((items_left > 0) && index < data.size()) {
20
20
  uint8_t b = data[index];
21
21
  switch (this->encode_) {
@@ -56,21 +56,20 @@ CONFIG_SCHEMA = cv.All(
56
56
 
57
57
  @coroutine_with_priority(50.0)
58
58
  async def to_code(config):
59
- if config[CONF_DISABLED]:
60
- return
59
+ if not config[CONF_DISABLED]:
60
+ var = cg.new_Pvariable(config[CONF_ID])
61
+ await cg.register_component(var, config)
61
62
 
62
- var = cg.new_Pvariable(config[CONF_ID])
63
- await cg.register_component(var, config)
63
+ for conf in config.get(CONF_ON_SAFE_MODE, []):
64
+ trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
65
+ await automation.build_automation(trigger, [], conf)
64
66
 
65
- for conf in config.get(CONF_ON_SAFE_MODE, []):
66
- trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
67
- await automation.build_automation(trigger, [], conf)
67
+ condition = var.should_enter_safe_mode(
68
+ config[CONF_NUM_ATTEMPTS],
69
+ config[CONF_REBOOT_TIMEOUT],
70
+ config[CONF_BOOT_IS_GOOD_AFTER],
71
+ )
72
+ cg.add(RawExpression(f"if ({condition}) return"))
68
73
 
69
- condition = var.should_enter_safe_mode(
70
- config[CONF_NUM_ATTEMPTS],
71
- config[CONF_REBOOT_TIMEOUT],
72
- config[CONF_BOOT_IS_GOOD_AFTER],
73
- )
74
- cg.add(RawExpression(f"if ({condition}) return"))
75
74
  CORE.data[CONF_SAFE_MODE] = {}
76
75
  CORE.data[CONF_SAFE_MODE][KEY_PAST_SAFE_MODE] = True
esphome/const.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Constants used by esphome."""
2
2
 
3
- __version__ = "2024.6.2"
3
+ __version__ = "2024.6.3"
4
4
 
5
5
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
6
6
  VALID_SUBSTITUTIONS_CHARACTERS = (
esphome/cpp_types.py CHANGED
@@ -10,6 +10,7 @@ int_ = global_ns.namespace("int")
10
10
  std_ns = global_ns.namespace("std")
11
11
  std_shared_ptr = std_ns.class_("shared_ptr")
12
12
  std_string = std_ns.class_("string")
13
+ std_string_ref = std_ns.namespace("string &")
13
14
  std_vector = std_ns.class_("vector")
14
15
  uint8 = global_ns.namespace("uint8_t")
15
16
  uint16 = global_ns.namespace("uint16_t")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: esphome
3
- Version: 2024.6.2
3
+ Version: 2024.6.3
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
@@ -1,15 +1,15 @@
1
1
  esphome/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  esphome/__main__.py,sha256=q5bitlzrHuGTKl-wPanxoq2W-__D6v9FR7igo91fWj0,33402
3
3
  esphome/automation.py,sha256=wnD7iJvGPSz7q8AJo2o5KglnN_uuhKcWOpYp95Vg9Oc,14507
4
- esphome/codegen.py,sha256=A8O0Jr8qBILHlr7NwPPeW2DSKQ9H5d85j5fOXQw0rSQ,1835
4
+ esphome/codegen.py,sha256=LCJVpAwy1L9DTBsIvbgAbHj1TOXUSPgBoN--aio0gBk,1855
5
5
  esphome/config.py,sha256=wztK2UmO7-hc6HFDAi6YWtrPVy5mH0diKuqpsWp4-XA,39616
6
6
  esphome/config_helpers.py,sha256=MKf_wzO35nn41FvigXE0iYKDslPgL2ruf8R-EPtTT2I,3256
7
7
  esphome/config_validation.py,sha256=G79LGVIh5BdpGkzuehkm7Db_llpbC2of4dKqZEpHc3A,64838
8
- esphome/const.py,sha256=t7mcNQSRESKbGK0F1xgxTRv3S-TtQyyep8LhYzIfgQc,38841
8
+ esphome/const.py,sha256=xBNzlCHOc7TMF2WgpADpQbGL4C-nEc93fw_8J0tdr2A,38841
9
9
  esphome/coroutine.py,sha256=IG2kC92OrenyiRm7Qo9uC-4qU4b4-Lmj0TkMIjRG2RY,9344
10
10
  esphome/cpp_generator.py,sha256=hW2EfubUiildhKXZIdV8Dr3Q9TM5oHybFwiTo5-vEUE,31203
11
11
  esphome/cpp_helpers.py,sha256=KadRBBoo4QRT-VwdWFtvxv_FYjqhZTkBhfMX-JhEMwg,4803
12
- esphome/cpp_types.py,sha256=oBTacD_31cjRQaW85_W3o5G1cRXD4dKfQ8lsmpqSd6k,1741
12
+ esphome/cpp_types.py,sha256=e4e7bEc_tuH_tVlU1ninne7fYuMFa1SdUzN99OQ-i4g,1787
13
13
  esphome/espota2.py,sha256=KuDuWCn_IHd3VBmVf2T00T1k25l3ty63_WluRMirYKs,11760
14
14
  esphome/external_files.py,sha256=jKQkWlv-MeK9apLz9hTu1TKTicb3bfujy11BnJuRuYM,2586
15
15
  esphome/final_validate.py,sha256=oW3hlx3K7fuyEZ6N7R4L-_LLXMY622DSEIU78smsUfk,1898
@@ -560,7 +560,7 @@ esphome/components/daikin_brc/daikin_brc.h,sha256=ew2Yes19rWaev5GtDhi-9Wz7XbZli-
560
560
  esphome/components/dallas/__init__.py,sha256=U1GxxurgZ3PsVb_HAxZiW6QB_7WGsJmgp48xyPgsdt4,205
561
561
  esphome/components/dallas/sensor.py,sha256=aOiKX3STBILtpFe0J_iKfgjCEFKwyWPASxbP__MMJh8,167
562
562
  esphome/components/dallas_temp/__init__.py,sha256=4y1dHAQV9d7Pm8PXNX-UzFwUa4Uqyl1zsYN7tefVu9Q,24
563
- esphome/components/dallas_temp/dallas_temp.cpp,sha256=q65_me6HkSdZR9Yxqxhdbnehmiked6Pl2n6hpxTOgwQ,4700
563
+ esphome/components/dallas_temp/dallas_temp.cpp,sha256=eVjftHbHUZ4sbVwcX3Rw27IqxSDFUc6QPXNQiF0Jc28,4582
564
564
  esphome/components/dallas_temp/dallas_temp.h,sha256=HbCVQ_uho9u1Pq-l1LeHBbT0fYkp3kabT6w9Ql9RyIg,885
565
565
  esphome/components/dallas_temp/sensor.py,sha256=t9KDm7H-6RRxz4KaJF1nLPM_Bn5dULH1FuI2CdUUhQ8,1152
566
566
  esphome/components/daly_bms/__init__.py,sha256=FyoXD_Y23-mRrnndBS70JY7UHKC0eEcJgWCF38DbCXA,897
@@ -649,7 +649,7 @@ esphome/components/dps310/dps310.cpp,sha256=kfzM0Pydy5kgJFTo5QP-WLajKgmqYVOpfb3W
649
649
  esphome/components/dps310/dps310.h,sha256=-kD5VuLWA1yIQEIf9ki0zeW9Y37mSIvWZysPA57Oqh0,3376
650
650
  esphome/components/dps310/sensor.py,sha256=SKJHun9LArscv6kJ9YBzqlaLmOiKYtYAA-Gd_l5qOCU,1839
651
651
  esphome/components/ds1307/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
652
- esphome/components/ds1307/ds1307.cpp,sha256=502oadoTW6P7znuy95rQboPa2KvcJMtFekBDxPg4cFE,3956
652
+ esphome/components/ds1307/ds1307.cpp,sha256=0MU8vTJJovdp4LDv1mUNZoffr-Iur3abS3l9SrfQSOo,3982
653
653
  esphome/components/ds1307/ds1307.h,sha256=elw1vByu25ZCykDalNyVt85i4uCcohJPXlwpLlwS8Gs,1616
654
654
  esphome/components/ds1307/time.py,sha256=UlnG10Tt8ISnSBYcfhZzXHIE8cZh5G2TBXo7MwkPNhg,1605
655
655
  esphome/components/dsmr/__init__.py,sha256=RlEfHH24fQ41WDeQuJwJL9-AjEjHvMnoCVp3BXA8XUw,3321
@@ -813,7 +813,7 @@ esphome/components/esp8266_pwm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
813
813
  esphome/components/esp8266_pwm/esp8266_pwm.cpp,sha256=c4_NPBOfBdguJghAdx7d9cwtyJscVEhWD4_Xkavbmfw,1703
814
814
  esphome/components/esp8266_pwm/esp8266_pwm.h,sha256=YLObIixl3YFDx3biu1TVfH6qyOFFts-VGT4pxgN0PHw,1386
815
815
  esphome/components/esp8266_pwm/output.py,sha256=7qgJT-O8nr0HjFajwbw2k_DlXwG_SLfP4ma82-GF-ew,2062
816
- esphome/components/esphome/ota/__init__.py,sha256=vEQQb_hakG8DVtF6KmiDyvEIvXQ4Glrf_hSQIUKR8rE,2248
816
+ esphome/components/esphome/ota/__init__.py,sha256=1m6H-VfFmFX1Y3lbDDQNwsn4SEDVjhI8D3IfMtC5jz4,2937
817
817
  esphome/components/esphome/ota/ota_esphome.cpp,sha256=k2mo3SWZvQXLCZIeEIb_d6IV8D5vD5ynnlcjq_zPyCM,12334
818
818
  esphome/components/esphome/ota/ota_esphome.h,sha256=8j_EDYbc7UiALElGt6NN834RDfCxD8oLHkJbhyaXtV4,1118
819
819
  esphome/components/ethernet/__init__.py,sha256=5mP3op-0A0eSGc8NyrmzEEPaDgt4pBj2NKFubj7E7tw,8821
@@ -1065,9 +1065,9 @@ esphome/components/hte501/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
1065
1065
  esphome/components/hte501/hte501.cpp,sha256=PZjDGzy2AAZ6tz4xvrlAD0GGcFmV-HjSnsZ5lIptkNM,2789
1066
1066
  esphome/components/hte501/hte501.h,sha256=EY-aX8KwudhZPQ3tyRzSU2hPFUzFkmAhrGdhAXR-8rA,998
1067
1067
  esphome/components/hte501/sensor.py,sha256=H7cfhfjQ0lyUgHABpoyiKOaj_f2qhN7nDW-tTj2sttQ,1723
1068
- esphome/components/http_request/__init__.py,sha256=u9mjkozOhInNrvyIXxbhxdRqFLWqv2MG8ZIWylzH86g,9332
1068
+ esphome/components/http_request/__init__.py,sha256=iEloLmhwKBRUHqIVjYN0LmxzrIUAMlttDrU7qPP55IU,9336
1069
1069
  esphome/components/http_request/http_request.cpp,sha256=UFpMPffAuE2enh8iBvZzV3EDr7lS-MoLaquDoi5FGEw,705
1070
- esphome/components/http_request/http_request.h,sha256=aiWpp-SlpjeGje1DEMPsYb6_pCvCVf1Dsr-33Vu4A7U,6309
1070
+ esphome/components/http_request/http_request.h,sha256=-QVBxaH5iOFuzuvdmBDrjL81YM63mv3zILS4m8E4Oa4,6758
1071
1071
  esphome/components/http_request/http_request_arduino.cpp,sha256=Bgobw_5kJ4WoimlmFS9msB6ftHoUhNYKf3Rj3xNY9fQ,5174
1072
1072
  esphome/components/http_request/http_request_arduino.h,sha256=iaOY5aKpQJREygOoyBB8Nsozp4cfETDt-G6Hgu_pkm0,871
1073
1073
  esphome/components/http_request/http_request_idf.cpp,sha256=7WJQ4woRdTGzeiaI9Aa2Xu0aDX5EAxydE0cbKbGLifE,4382
@@ -1565,7 +1565,7 @@ esphome/components/modbus/modbus.cpp,sha256=O8O9s4mHIyhmRzRAQ8fK88dYljQEhNv-DKaD
1565
1565
  esphome/components/modbus/modbus.h,sha256=lDXklIqGZsyXnvf4oFslaGtD7yd9YwRkUYSpYsQRcAg,2477
1566
1566
  esphome/components/modbus_controller/__init__.py,sha256=OvVJfEMgw5VrBKdFsEi06AWIfa3dRh4mh9uBb0JnQnE,9652
1567
1567
  esphome/components/modbus_controller/const.py,sha256=oe_0YOtwnzRI5hppgFgjkzhw_PkLS4_GWadjbCt393A,624
1568
- esphome/components/modbus_controller/modbus_controller.cpp,sha256=C6QH-Ef5XK15hptJ78oRm7ADQwoKaVp6nio38MprYVo,26614
1568
+ esphome/components/modbus_controller/modbus_controller.cpp,sha256=bhd8P4jAEX_ariFyslyhvF9yJN5P64ZK2EBK2LczIjY,26722
1569
1569
  esphome/components/modbus_controller/modbus_controller.h,sha256=CsCLbWC7xpMK77FzRl1qxgeXLXq32d0woD7tLM8n1Is,21910
1570
1570
  esphome/components/modbus_controller/binary_sensor/__init__.py,sha256=HZe6vDNIMUOyQ2jJTZSbu_SSJFSxNVVxjYtXuyJ62GU,1634
1571
1571
  esphome/components/modbus_controller/binary_sensor/modbus_binarysensor.cpp,sha256=wsRl8P37mxr24CQJ4gCrFsUTlgVVKOVsY8HJTN1sUA8,1197
@@ -1586,7 +1586,7 @@ esphome/components/modbus_controller/switch/__init__.py,sha256=7kNXF7HkcD5GwA5tu
1586
1586
  esphome/components/modbus_controller/switch/modbus_switch.cpp,sha256=cb_pXmVCiln4I3p-IatuDABPt66UPRcMe87d1btKxS0,4227
1587
1587
  esphome/components/modbus_controller/switch/modbus_switch.h,sha256=XUBdWMh0paqx6saqwABLj1Z6ClPcWTHlaOPpDJY8qvY,2026
1588
1588
  esphome/components/modbus_controller/text_sensor/__init__.py,sha256=6KJrt-Ja1byI68RX9CRb-VsBh40jIr_8_DuC7UOPb_s,2422
1589
- esphome/components/modbus_controller/text_sensor/modbus_textsensor.cpp,sha256=qNHfAHEoEz9wwaN20gkzqiAed04Np9aH47K_eF2rmyE,1534
1589
+ esphome/components/modbus_controller/text_sensor/modbus_textsensor.cpp,sha256=YadSV04TlvACAjyAfpISGv05i6oKof8od0UxqqPo6gs,1534
1590
1590
  esphome/components/modbus_controller/text_sensor/modbus_textsensor.h,sha256=v3-AXp4xL8dbPMAsPFYd65IJ2AIPQXLwLhMICuHT2ww,1498
1591
1591
  esphome/components/monochromatic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1592
1592
  esphome/components/monochromatic/light.py,sha256=THKgebL_J4kCyt42O5y0kBbMZP1f885MO7fEbycvxnA,761
@@ -2137,7 +2137,7 @@ esphome/components/ruuvitag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
2137
2137
  esphome/components/ruuvitag/ruuvitag.cpp,sha256=4oJLZsX4jyfgMnloAtR7_DwwYla5Ni3r8Q-oLPqZMPE,939
2138
2138
  esphome/components/ruuvitag/ruuvitag.h,sha256=ryiJUzyWmF1xXuyEjFyT1nufKS7hJaw5-Dh7Y9-BVqY,3955
2139
2139
  esphome/components/ruuvitag/sensor.py,sha256=4DsRPn4JriUoJPnz3pI5r3qMxcFpVwo4yLa1AmRJaX0,6217
2140
- esphome/components/safe_mode/__init__.py,sha256=RD07w3EI2BZzmZNUeCA56-0VKsDUtRvzHIjEoCGGIpU,2363
2140
+ esphome/components/safe_mode/__init__.py,sha256=sr35sEw2lxmjYZKYsxWBBd-9fjQGubDK_uxoOwG4tqs,2396
2141
2141
  esphome/components/safe_mode/automation.h,sha256=ZXlH1n-aHmd5hUCITSUIZrihPL8cNwaISzEb0o9q0gU,356
2142
2142
  esphome/components/safe_mode/safe_mode.cpp,sha256=s0XE1iGHA7vNX7m7fJ0AOksQCAuTTp0qbYy6HNWQTKg,4267
2143
2143
  esphome/components/safe_mode/safe_mode.h,sha256=o53FPXkL9-W9_SVJEa7KHBFr1BCUtzo1I-q9mL-PIpQ,1692
@@ -3113,9 +3113,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
3113
3113
  esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
3114
3114
  esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
3115
3115
  esphome/dashboard/util/text.py,sha256=ENDnfN4O0NdA3CKVJjQYabFbwbrsIhVKrAMQe53qYu4,534
3116
- esphome-2024.6.2.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3117
- esphome-2024.6.2.dist-info/METADATA,sha256=nBAQYftljTMkR8H7FHjhh3aZG7D7ESz62ffgoGnLQ3M,3263
3118
- esphome-2024.6.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
3119
- esphome-2024.6.2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3120
- esphome-2024.6.2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3121
- esphome-2024.6.2.dist-info/RECORD,,
3116
+ esphome-2024.6.3.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3117
+ esphome-2024.6.3.dist-info/METADATA,sha256=XxGlE7TMgBTmVRtBdXeX1mk18OohHoKKDrVxSbduukM,3263
3118
+ esphome-2024.6.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
3119
+ esphome-2024.6.3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3120
+ esphome-2024.6.3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3121
+ esphome-2024.6.3.dist-info/RECORD,,