esphome 2024.7.1__py3-none-any.whl → 2024.7.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/components/http_request/__init__.py +7 -7
- esphome/components/http_request/http_request.h +1 -1
- esphome/components/http_request/http_request_idf.cpp +54 -10
- esphome/components/micro_wake_word/streaming_model.cpp +6 -4
- esphome/components/mitsubishi/mitsubishi.cpp +7 -1
- esphome/components/pmwcs3/pmwcs3.cpp +31 -30
- esphome/const.py +1 -1
- {esphome-2024.7.1.dist-info → esphome-2024.7.3.dist-info}/METADATA +1 -1
- {esphome-2024.7.1.dist-info → esphome-2024.7.3.dist-info}/RECORD +13 -13
- {esphome-2024.7.1.dist-info → esphome-2024.7.3.dist-info}/LICENSE +0 -0
- {esphome-2024.7.1.dist-info → esphome-2024.7.3.dist-info}/WHEEL +0 -0
- {esphome-2024.7.1.dist-info → esphome-2024.7.3.dist-info}/entry_points.txt +0 -0
- {esphome-2024.7.1.dist-info → esphome-2024.7.3.dist-info}/top_level.txt +0 -0
@@ -1,17 +1,17 @@
|
|
1
|
+
from esphome import automation
|
1
2
|
import esphome.codegen as cg
|
3
|
+
from esphome.components import esp32
|
2
4
|
import esphome.config_validation as cv
|
3
|
-
from esphome import automation
|
4
5
|
from esphome.const import (
|
5
|
-
|
6
|
+
CONF_ESP8266_DISABLE_SSL_SUPPORT,
|
6
7
|
CONF_ID,
|
7
|
-
CONF_TIMEOUT,
|
8
8
|
CONF_METHOD,
|
9
|
+
CONF_TIMEOUT,
|
9
10
|
CONF_TRIGGER_ID,
|
10
11
|
CONF_URL,
|
11
|
-
|
12
|
+
__version__,
|
12
13
|
)
|
13
|
-
from esphome.core import
|
14
|
-
from esphome.components import esp32
|
14
|
+
from esphome.core import CORE, Lambda
|
15
15
|
|
16
16
|
DEPENDENCIES = ["network"]
|
17
17
|
AUTO_LOAD = ["json"]
|
@@ -99,7 +99,7 @@ CONFIG_SCHEMA = cv.All(
|
|
99
99
|
cv.Optional(CONF_FOLLOW_REDIRECTS, True): cv.boolean,
|
100
100
|
cv.Optional(CONF_REDIRECT_LIMIT, 3): cv.int_,
|
101
101
|
cv.Optional(
|
102
|
-
CONF_TIMEOUT, default="5s"
|
102
|
+
CONF_TIMEOUT, default="4.5s"
|
103
103
|
): cv.positive_time_period_milliseconds,
|
104
104
|
cv.SplitDefault(CONF_ESP8266_DISABLE_SSL_SUPPORT, esp8266=False): cv.All(
|
105
105
|
cv.only_on_esp8266, cv.boolean
|
@@ -77,7 +77,7 @@ std::shared_ptr<HttpContainer> HttpRequestIDF::start(std::string url, std::strin
|
|
77
77
|
esp_http_client_set_header(client, header.name, header.value);
|
78
78
|
}
|
79
79
|
|
80
|
-
int body_len = body.length();
|
80
|
+
const int body_len = body.length();
|
81
81
|
|
82
82
|
esp_err_t err = esp_http_client_open(client, body_len);
|
83
83
|
if (err != ESP_OK) {
|
@@ -109,18 +109,62 @@ std::shared_ptr<HttpContainer> HttpRequestIDF::start(std::string url, std::strin
|
|
109
109
|
return nullptr;
|
110
110
|
}
|
111
111
|
|
112
|
+
auto is_ok = [](int code) { return code >= HttpStatus_Ok && code < HttpStatus_MultipleChoices; };
|
113
|
+
|
112
114
|
container->content_length = esp_http_client_fetch_headers(client);
|
113
|
-
|
114
|
-
container->status_code
|
115
|
+
container->status_code = esp_http_client_get_status_code(client);
|
116
|
+
if (is_ok(container->status_code)) {
|
117
|
+
container->duration_ms = millis() - start;
|
118
|
+
return container;
|
119
|
+
}
|
115
120
|
|
116
|
-
if (
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
+
if (this->follow_redirects_) {
|
122
|
+
auto is_redirect = [](int code) {
|
123
|
+
return code == HttpStatus_MovedPermanently || code == HttpStatus_Found || code == HttpStatus_SeeOther ||
|
124
|
+
code == HttpStatus_TemporaryRedirect || code == HttpStatus_PermanentRedirect;
|
125
|
+
};
|
126
|
+
auto num_redirects = this->redirect_limit_;
|
127
|
+
while (is_redirect(container->status_code) && num_redirects > 0) {
|
128
|
+
err = esp_http_client_set_redirection(client);
|
129
|
+
if (err != ESP_OK) {
|
130
|
+
ESP_LOGE(TAG, "esp_http_client_set_redirection failed: %s", esp_err_to_name(err));
|
131
|
+
this->status_momentary_error("failed", 1000);
|
132
|
+
esp_http_client_cleanup(client);
|
133
|
+
return nullptr;
|
134
|
+
}
|
135
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
|
136
|
+
char url[256]{};
|
137
|
+
if (esp_http_client_get_url(client, url, sizeof(url) - 1) == ESP_OK) {
|
138
|
+
ESP_LOGV(TAG, "redirecting to url: %s", url);
|
139
|
+
}
|
140
|
+
#endif
|
141
|
+
err = esp_http_client_open(client, 0);
|
142
|
+
if (err != ESP_OK) {
|
143
|
+
ESP_LOGE(TAG, "esp_http_client_open failed: %s", esp_err_to_name(err));
|
144
|
+
this->status_momentary_error("failed", 1000);
|
145
|
+
esp_http_client_cleanup(client);
|
146
|
+
return nullptr;
|
147
|
+
}
|
148
|
+
|
149
|
+
container->content_length = esp_http_client_fetch_headers(client);
|
150
|
+
container->status_code = esp_http_client_get_status_code(client);
|
151
|
+
if (is_ok(container->status_code)) {
|
152
|
+
container->duration_ms = millis() - start;
|
153
|
+
return container;
|
154
|
+
}
|
155
|
+
|
156
|
+
num_redirects--;
|
157
|
+
}
|
158
|
+
|
159
|
+
if (num_redirects == 0) {
|
160
|
+
ESP_LOGW(TAG, "Reach redirect limit count=%d", this->redirect_limit_);
|
161
|
+
}
|
121
162
|
}
|
122
|
-
|
123
|
-
|
163
|
+
|
164
|
+
ESP_LOGE(TAG, "HTTP Request failed; URL: %s; Code: %d", url.c_str(), container->status_code);
|
165
|
+
this->status_momentary_error("failed", 1000);
|
166
|
+
esp_http_client_cleanup(client);
|
167
|
+
return nullptr;
|
124
168
|
}
|
125
169
|
|
126
170
|
int HttpContainerIDF::read(uint8_t *buf, size_t max_len) {
|
@@ -148,7 +148,7 @@ WakeWordModel::WakeWordModel(const uint8_t *model_start, float probability_cutof
|
|
148
148
|
};
|
149
149
|
|
150
150
|
bool WakeWordModel::determine_detected() {
|
151
|
-
|
151
|
+
uint32_t sum = 0;
|
152
152
|
for (auto &prob : this->recent_streaming_probabilities_) {
|
153
153
|
sum += prob;
|
154
154
|
}
|
@@ -175,12 +175,14 @@ VADModel::VADModel(const uint8_t *model_start, float probability_cutoff, size_t
|
|
175
175
|
};
|
176
176
|
|
177
177
|
bool VADModel::determine_detected() {
|
178
|
-
|
178
|
+
uint32_t sum = 0;
|
179
179
|
for (auto &prob : this->recent_streaming_probabilities_) {
|
180
|
-
|
180
|
+
sum += prob;
|
181
181
|
}
|
182
182
|
|
183
|
-
|
183
|
+
float sliding_window_average = static_cast<float>(sum) / static_cast<float>(255 * this->sliding_window_size_);
|
184
|
+
|
185
|
+
return sliding_window_average > this->probability_cutoff_;
|
184
186
|
}
|
185
187
|
|
186
188
|
} // namespace micro_wake_word
|
@@ -110,7 +110,7 @@ void MitsubishiClimate::transmit_state() {
|
|
110
110
|
// Byte 15: HVAC specfic, i.e. POWERFUL, SMART SET, PLASMA, always 0x00
|
111
111
|
// Byte 16: Constant 0x00
|
112
112
|
// Byte 17: Checksum: SUM[Byte0...Byte16]
|
113
|
-
uint8_t remote_state[18] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x20,
|
113
|
+
uint8_t remote_state[18] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00,
|
114
114
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
115
115
|
|
116
116
|
switch (this->mode) {
|
@@ -136,6 +136,12 @@ void MitsubishiClimate::transmit_state() {
|
|
136
136
|
break;
|
137
137
|
case climate::CLIMATE_MODE_OFF:
|
138
138
|
default:
|
139
|
+
remote_state[6] = MITSUBISHI_MODE_COOL;
|
140
|
+
remote_state[8] = MITSUBISHI_MODE_A_COOL;
|
141
|
+
if (this->supports_heat_) {
|
142
|
+
remote_state[6] = MITSUBISHI_MODE_HEAT;
|
143
|
+
remote_state[8] = MITSUBISHI_MODE_A_HEAT;
|
144
|
+
}
|
139
145
|
remote_state[5] = MITSUBISHI_OFF;
|
140
146
|
break;
|
141
147
|
}
|
@@ -72,43 +72,44 @@ void PMWCS3Component::dump_config() {
|
|
72
72
|
LOG_SENSOR(" ", "vwc", this->vwc_sensor_);
|
73
73
|
}
|
74
74
|
void PMWCS3Component::read_data_() {
|
75
|
-
uint8_t data[8];
|
76
|
-
float e25, ec, temperature, vwc;
|
77
|
-
|
78
75
|
/////// Super important !!!! first activate reading PMWCS3_REG_READ_START (if not, return always the same values) ////
|
79
|
-
|
80
76
|
if (!this->write_bytes(PMWCS3_REG_READ_START, nullptr, 0)) {
|
81
77
|
this->status_set_warning();
|
82
78
|
ESP_LOGVV(TAG, "Failed to write into REG_READ_START register !!!");
|
83
79
|
return;
|
84
80
|
}
|
85
|
-
// NOLINT delay(100);
|
86
81
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
82
|
+
// Wait for the sensor to be ready.
|
83
|
+
// 80ms empirically determined (conservative).
|
84
|
+
this->set_timeout(80, [this] {
|
85
|
+
uint8_t data[8];
|
86
|
+
float e25, ec, temperature, vwc;
|
87
|
+
if (!this->read_bytes(PMWCS3_REG_GET_DATA, (uint8_t *) &data, 8)) {
|
88
|
+
ESP_LOGVV(TAG, "Error reading PMWCS3_REG_GET_DATA registers");
|
89
|
+
this->mark_failed();
|
90
|
+
return;
|
91
|
+
}
|
92
|
+
if (this->e25_sensor_ != nullptr) {
|
93
|
+
e25 = ((data[1] << 8) | data[0]) / 100.0;
|
94
|
+
this->e25_sensor_->publish_state(e25);
|
95
|
+
ESP_LOGVV(TAG, "e25: data[0]=%d, data[1]=%d, result=%f", data[0], data[1], e25);
|
96
|
+
}
|
97
|
+
if (this->ec_sensor_ != nullptr) {
|
98
|
+
ec = ((data[3] << 8) | data[2]) / 10.0;
|
99
|
+
this->ec_sensor_->publish_state(ec);
|
100
|
+
ESP_LOGVV(TAG, "ec: data[2]=%d, data[3]=%d, result=%f", data[2], data[3], ec);
|
101
|
+
}
|
102
|
+
if (this->temperature_sensor_ != nullptr) {
|
103
|
+
temperature = ((data[5] << 8) | data[4]) / 100.0;
|
104
|
+
this->temperature_sensor_->publish_state(temperature);
|
105
|
+
ESP_LOGVV(TAG, "temp: data[4]=%d, data[5]=%d, result=%f", data[4], data[5], temperature);
|
106
|
+
}
|
107
|
+
if (this->vwc_sensor_ != nullptr) {
|
108
|
+
vwc = ((data[7] << 8) | data[6]) / 10.0;
|
109
|
+
this->vwc_sensor_->publish_state(vwc);
|
110
|
+
ESP_LOGVV(TAG, "vwc: data[6]=%d, data[7]=%d, result=%f", data[6], data[7], vwc);
|
111
|
+
}
|
112
|
+
});
|
112
113
|
}
|
113
114
|
|
114
115
|
} // namespace pmwcs3
|
esphome/const.py
CHANGED
@@ -5,7 +5,7 @@ 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=
|
8
|
+
esphome/const.py,sha256=1PQbwSwz4Bnz6ui99tW_E1dqnesos5OVohXk2Vy3Yyg,38952
|
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
|
@@ -1065,12 +1065,12 @@ 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=
|
1068
|
+
esphome/components/http_request/__init__.py,sha256=VrQgzo1UIKfaTLjvz2j2z-CUXm2WF32IR1rC16234Pw,9338
|
1069
1069
|
esphome/components/http_request/http_request.cpp,sha256=UFpMPffAuE2enh8iBvZzV3EDr7lS-MoLaquDoi5FGEw,705
|
1070
|
-
esphome/components/http_request/http_request.h,sha256
|
1070
|
+
esphome/components/http_request/http_request.h,sha256=HjVTuX_TtonLmNNajf_W-Q-zwsXsbiUMpI0EV3xinCI,6758
|
1071
1071
|
esphome/components/http_request/http_request_arduino.cpp,sha256=HyePONw2B2095vN-f9WOFkuWkhZSYLYrcwYI5tfzakk,5362
|
1072
1072
|
esphome/components/http_request/http_request_arduino.h,sha256=iaOY5aKpQJREygOoyBB8Nsozp4cfETDt-G6Hgu_pkm0,871
|
1073
|
-
esphome/components/http_request/http_request_idf.cpp,sha256=
|
1073
|
+
esphome/components/http_request/http_request_idf.cpp,sha256=BW2i4wHlQedmtiUh0Escvwyby8nSwFg5vILRCEfQltI,6108
|
1074
1074
|
esphome/components/http_request/http_request_idf.h,sha256=RmtzXsXsi8M66Lnf6eHbdEK5PIwALlvHyNXVz4skeGQ,774
|
1075
1075
|
esphome/components/http_request/watchdog.cpp,sha256=vrRWycQv1a4iOxYaR2Ld4UJdnYgp-s2E1V6kLjqoK_w,1687
|
1076
1076
|
esphome/components/http_request/watchdog.h,sha256=45UrEdgj6KmB7lLPIK4-_BdpwZy-aDki3tMWrQn-hF8,454
|
@@ -1499,7 +1499,7 @@ esphome/components/micro_wake_word/__init__.py,sha256=WLqfgLyGTF7S6kwvvOoiyHaxxV
|
|
1499
1499
|
esphome/components/micro_wake_word/micro_wake_word.cpp,sha256=qj_wsPQY23sg12Wr2nIvitFSvghzfXkBamak7ZPNeAI,15280
|
1500
1500
|
esphome/components/micro_wake_word/micro_wake_word.h,sha256=3Ge-mL0fVeM-s6XdmeoPGATLZ7x8tr73iXEkO9nqLJ4,6091
|
1501
1501
|
esphome/components/micro_wake_word/preprocessor_settings.h,sha256=fz5-wfah78sWnY-iNXuGu6K5TpbGfeQCcgPIdPBNPg4,488
|
1502
|
-
esphome/components/micro_wake_word/streaming_model.cpp,sha256=
|
1502
|
+
esphome/components/micro_wake_word/streaming_model.cpp,sha256=c2dqFd7LU2yDghhbQlkeOZhrpCIzZxNTyD65REGZJOU,6966
|
1503
1503
|
esphome/components/micro_wake_word/streaming_model.h,sha256=f_Wu2-GqyjPvDqSCAEWuGioq-bySlOu0cOkJ0PzuipA,2658
|
1504
1504
|
esphome/components/micronova/__init__.py,sha256=6VoJfNv9YbawzAh8zrXzDkdOQwyX0bg-cZpxI_HwqVo,2677
|
1505
1505
|
esphome/components/micronova/micronova.cpp,sha256=gc0xDasM0sBvU6BNnT24ArBJ1bgrnoPcq9dWLuFbTD8,5297
|
@@ -1544,7 +1544,7 @@ esphome/components/midea_ir/midea_ir.cpp,sha256=Ry2O2HU9NlVSiaqZHybujJUqoky4rk2K
|
|
1544
1544
|
esphome/components/midea_ir/midea_ir.h,sha256=BNVdX5xjpFy-q0OTgBubUpFA_GQgUeK3Vx7rahOT-nM,1518
|
1545
1545
|
esphome/components/mitsubishi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1546
1546
|
esphome/components/mitsubishi/climate.py,sha256=EEQ54_K8833gtQP90yySmX8kMCnXxsYPk0UazUMMZsI,2791
|
1547
|
-
esphome/components/mitsubishi/mitsubishi.cpp,sha256=
|
1547
|
+
esphome/components/mitsubishi/mitsubishi.cpp,sha256=ItAO65EyN-kiijdLRk71oIEyjMW5VG5NCdW6PotWJPY,14228
|
1548
1548
|
esphome/components/mitsubishi/mitsubishi.h,sha256=DDSRb5mYr2RsocbBTQahdGJaHtH-k6oHIsBIDSHuopk,3047
|
1549
1549
|
esphome/components/mlx90393/__init__.py,sha256=Ao5t2TsBxYT6KIJJ4Nnbg5_drJijuBxe7SIdBe31Fjs,34
|
1550
1550
|
esphome/components/mlx90393/sensor.py,sha256=wpYFYEHIxu7HP0E40Fc15uUzgCBT-nszvjf0FdlyGwQ,4183
|
@@ -1867,7 +1867,7 @@ esphome/components/pmsx003/pmsx003.cpp,sha256=CuW4H-i8AGkH-kwRuGJ9cWzSAonWvau-Vm
|
|
1867
1867
|
esphome/components/pmsx003/pmsx003.h,sha256=kfpbz3CJxYeKKtMi5-dYSO5d3LCbQAXxMpu_VcAOI1Q,3554
|
1868
1868
|
esphome/components/pmsx003/sensor.py,sha256=gKXskfE46TeQR29R3SCcOAVs91rqBnWe-D1MS0NqUXc,9889
|
1869
1869
|
esphome/components/pmwcs3/__init__.py,sha256=zezs6ulxMCdOcTvftGJFBZCt1AKLqAHqesJSfecUlO0,28
|
1870
|
-
esphome/components/pmwcs3/pmwcs3.cpp,sha256=
|
1870
|
+
esphome/components/pmwcs3/pmwcs3.cpp,sha256=UNpLRfxVsRUjQYH9wdLonyXXd_zynZredkOIW__HE-c,4290
|
1871
1871
|
esphome/components/pmwcs3/pmwcs3.h,sha256=AqspEHCKFSQZh7o2WZBLjTCBMKgYufENxJ5Bd1HSxvQ,2112
|
1872
1872
|
esphome/components/pmwcs3/sensor.py,sha256=3p74vLRDpdjKxet4rgsRo9aCGJuKxXqa-MTUqE622qg,4048
|
1873
1873
|
esphome/components/pn532/__init__.py,sha256=GY7ZRgRi8YhcswqISdOTCqwppdRdPKDxBW4UFgwm-TM,2933
|
@@ -3119,9 +3119,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
|
|
3119
3119
|
esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
|
3120
3120
|
esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
|
3121
3121
|
esphome/dashboard/util/text.py,sha256=ENDnfN4O0NdA3CKVJjQYabFbwbrsIhVKrAMQe53qYu4,534
|
3122
|
-
esphome-2024.7.
|
3123
|
-
esphome-2024.7.
|
3124
|
-
esphome-2024.7.
|
3125
|
-
esphome-2024.7.
|
3126
|
-
esphome-2024.7.
|
3127
|
-
esphome-2024.7.
|
3122
|
+
esphome-2024.7.3.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
3123
|
+
esphome-2024.7.3.dist-info/METADATA,sha256=pP2io3DbvZBe9lmBiQ9vfPq3kKkyMF_OA9cCxFggvug,3263
|
3124
|
+
esphome-2024.7.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
3125
|
+
esphome-2024.7.3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
3126
|
+
esphome-2024.7.3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
3127
|
+
esphome-2024.7.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|