esphome 2025.9.1__py3-none-any.whl → 2025.9.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.
- esphome/components/esp32_improv/esp32_improv_component.cpp +61 -18
- esphome/components/esp32_improv/esp32_improv_component.h +9 -6
- esphome/components/heatpumpir/climate.py +1 -1
- esphome/components/mipi/__init__.py +9 -1
- esphome/components/mipi_rgb/models/waveshare.py +1 -0
- esphome/components/mipi_spi/models/amoled.py +3 -1
- esphome/components/sx126x/sx126x.cpp +6 -3
- esphome/components/usb_uart/ch34x.cpp +1 -0
- esphome/components/web_server_base/__init__.py +2 -0
- esphome/const.py +1 -1
- esphome/core/config.py +1 -1
- {esphome-2025.9.1.dist-info → esphome-2025.9.2.dist-info}/METADATA +1 -1
- {esphome-2025.9.1.dist-info → esphome-2025.9.2.dist-info}/RECORD +17 -17
- {esphome-2025.9.1.dist-info → esphome-2025.9.2.dist-info}/WHEEL +0 -0
- {esphome-2025.9.1.dist-info → esphome-2025.9.2.dist-info}/entry_points.txt +0 -0
- {esphome-2025.9.1.dist-info → esphome-2025.9.2.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.9.1.dist-info → esphome-2025.9.2.dist-info}/top_level.txt +0 -0
@@ -15,6 +15,8 @@ using namespace bytebuffer;
|
|
15
15
|
|
16
16
|
static const char *const TAG = "esp32_improv.component";
|
17
17
|
static const char *const ESPHOME_MY_LINK = "https://my.home-assistant.io/redirect/config_flow_start?domain=esphome";
|
18
|
+
static constexpr uint16_t STOP_ADVERTISING_DELAY =
|
19
|
+
10000; // Delay (ms) before stopping service to allow BLE clients to read the final state
|
18
20
|
|
19
21
|
ESP32ImprovComponent::ESP32ImprovComponent() { global_improv_component = this; }
|
20
22
|
|
@@ -31,6 +33,9 @@ void ESP32ImprovComponent::setup() {
|
|
31
33
|
#endif
|
32
34
|
global_ble_server->on(BLEServerEvt::EmptyEvt::ON_DISCONNECT,
|
33
35
|
[this](uint16_t conn_id) { this->set_error_(improv::ERROR_NONE); });
|
36
|
+
|
37
|
+
// Start with loop disabled - will be enabled by start() when needed
|
38
|
+
this->disable_loop();
|
34
39
|
}
|
35
40
|
|
36
41
|
void ESP32ImprovComponent::setup_characteristics() {
|
@@ -190,6 +195,25 @@ void ESP32ImprovComponent::set_status_indicator_state_(bool state) {
|
|
190
195
|
#endif
|
191
196
|
}
|
192
197
|
|
198
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_DEBUG
|
199
|
+
const char *ESP32ImprovComponent::state_to_string_(improv::State state) {
|
200
|
+
switch (state) {
|
201
|
+
case improv::STATE_STOPPED:
|
202
|
+
return "STOPPED";
|
203
|
+
case improv::STATE_AWAITING_AUTHORIZATION:
|
204
|
+
return "AWAITING_AUTHORIZATION";
|
205
|
+
case improv::STATE_AUTHORIZED:
|
206
|
+
return "AUTHORIZED";
|
207
|
+
case improv::STATE_PROVISIONING:
|
208
|
+
return "PROVISIONING";
|
209
|
+
case improv::STATE_PROVISIONED:
|
210
|
+
return "PROVISIONED";
|
211
|
+
default:
|
212
|
+
return "UNKNOWN";
|
213
|
+
}
|
214
|
+
}
|
215
|
+
#endif
|
216
|
+
|
193
217
|
bool ESP32ImprovComponent::check_identify_() {
|
194
218
|
uint32_t now = millis();
|
195
219
|
|
@@ -203,31 +227,42 @@ bool ESP32ImprovComponent::check_identify_() {
|
|
203
227
|
}
|
204
228
|
|
205
229
|
void ESP32ImprovComponent::set_state_(improv::State state) {
|
206
|
-
|
230
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_DEBUG
|
231
|
+
if (this->state_ != state) {
|
232
|
+
ESP_LOGD(TAG, "State transition: %s (0x%02X) -> %s (0x%02X)", this->state_to_string_(this->state_), this->state_,
|
233
|
+
this->state_to_string_(state), state);
|
234
|
+
}
|
235
|
+
#endif
|
207
236
|
this->state_ = state;
|
208
|
-
if (this->status_->get_value().empty() || this->status_->get_value()[0] != state) {
|
237
|
+
if (this->status_ != nullptr && (this->status_->get_value().empty() || this->status_->get_value()[0] != state)) {
|
209
238
|
this->status_->set_value(ByteBuffer::wrap(static_cast<uint8_t>(state)));
|
210
239
|
if (state != improv::STATE_STOPPED)
|
211
240
|
this->status_->notify();
|
212
241
|
}
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
242
|
+
// Only advertise valid Improv states (0x01-0x04).
|
243
|
+
// STATE_STOPPED (0x00) is internal only and not part of the Improv spec.
|
244
|
+
// Advertising 0x00 causes undefined behavior in some clients and makes them
|
245
|
+
// repeatedly connect trying to determine the actual state.
|
246
|
+
if (state != improv::STATE_STOPPED) {
|
247
|
+
std::vector<uint8_t> service_data(8, 0);
|
248
|
+
service_data[0] = 0x77; // PR
|
249
|
+
service_data[1] = 0x46; // IM
|
250
|
+
service_data[2] = static_cast<uint8_t>(state);
|
251
|
+
|
252
|
+
uint8_t capabilities = 0x00;
|
219
253
|
#ifdef USE_OUTPUT
|
220
|
-
|
221
|
-
|
254
|
+
if (this->status_indicator_ != nullptr)
|
255
|
+
capabilities |= improv::CAPABILITY_IDENTIFY;
|
222
256
|
#endif
|
223
257
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
258
|
+
service_data[3] = capabilities;
|
259
|
+
service_data[4] = 0x00; // Reserved
|
260
|
+
service_data[5] = 0x00; // Reserved
|
261
|
+
service_data[6] = 0x00; // Reserved
|
262
|
+
service_data[7] = 0x00; // Reserved
|
229
263
|
|
230
|
-
|
264
|
+
esp32_ble::global_ble->advertising_set_service_data(service_data);
|
265
|
+
}
|
231
266
|
#ifdef USE_ESP32_IMPROV_STATE_CALLBACK
|
232
267
|
this->state_callback_.call(this->state_, this->error_state_);
|
233
268
|
#endif
|
@@ -237,7 +272,12 @@ void ESP32ImprovComponent::set_error_(improv::Error error) {
|
|
237
272
|
if (error != improv::ERROR_NONE) {
|
238
273
|
ESP_LOGE(TAG, "Error: %d", error);
|
239
274
|
}
|
240
|
-
|
275
|
+
// The error_ characteristic is initialized in setup_characteristics() which is called
|
276
|
+
// from the loop, while the BLE disconnect callback is registered in setup().
|
277
|
+
// error_ can be nullptr if:
|
278
|
+
// 1. A client connects/disconnects before setup_characteristics() is called
|
279
|
+
// 2. The device is already provisioned so the service never starts (should_start_ is false)
|
280
|
+
if (this->error_ != nullptr && (this->error_->get_value().empty() || this->error_->get_value()[0] != error)) {
|
241
281
|
this->error_->set_value(ByteBuffer::wrap(static_cast<uint8_t>(error)));
|
242
282
|
if (this->state_ != improv::STATE_STOPPED)
|
243
283
|
this->error_->notify();
|
@@ -261,7 +301,10 @@ void ESP32ImprovComponent::start() {
|
|
261
301
|
|
262
302
|
void ESP32ImprovComponent::stop() {
|
263
303
|
this->should_start_ = false;
|
264
|
-
|
304
|
+
// Wait before stopping the service to ensure all BLE clients see the state change.
|
305
|
+
// This prevents clients from repeatedly reconnecting and wasting resources by allowing
|
306
|
+
// them to observe that the device is provisioned before the service disappears.
|
307
|
+
this->set_timeout("end-service", STOP_ADVERTISING_DELAY, [this] {
|
265
308
|
if (this->state_ == improv::STATE_STOPPED || this->service_ == nullptr)
|
266
309
|
return;
|
267
310
|
this->service_->stop();
|
@@ -79,12 +79,12 @@ class ESP32ImprovComponent : public Component {
|
|
79
79
|
std::vector<uint8_t> incoming_data_;
|
80
80
|
wifi::WiFiAP connecting_sta_;
|
81
81
|
|
82
|
-
BLEService *service_
|
83
|
-
BLECharacteristic *status_;
|
84
|
-
BLECharacteristic *error_;
|
85
|
-
BLECharacteristic *rpc_;
|
86
|
-
BLECharacteristic *rpc_response_;
|
87
|
-
BLECharacteristic *capabilities_;
|
82
|
+
BLEService *service_{nullptr};
|
83
|
+
BLECharacteristic *status_{nullptr};
|
84
|
+
BLECharacteristic *error_{nullptr};
|
85
|
+
BLECharacteristic *rpc_{nullptr};
|
86
|
+
BLECharacteristic *rpc_response_{nullptr};
|
87
|
+
BLECharacteristic *capabilities_{nullptr};
|
88
88
|
|
89
89
|
#ifdef USE_BINARY_SENSOR
|
90
90
|
binary_sensor::BinarySensor *authorizer_{nullptr};
|
@@ -108,6 +108,9 @@ class ESP32ImprovComponent : public Component {
|
|
108
108
|
void process_incoming_data_();
|
109
109
|
void on_wifi_connect_timeout_();
|
110
110
|
bool check_identify_();
|
111
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_DEBUG
|
112
|
+
const char *state_to_string_(improv::State state);
|
113
|
+
#endif
|
111
114
|
};
|
112
115
|
|
113
116
|
// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
|
@@ -401,6 +401,12 @@ class DriverChip:
|
|
401
401
|
sequence.append((MADCTL, madctl))
|
402
402
|
return madctl
|
403
403
|
|
404
|
+
def skip_command(self, command: str):
|
405
|
+
"""
|
406
|
+
Allow suppressing a standard command in the init sequence.
|
407
|
+
"""
|
408
|
+
return self.get_default(f"no_{command.lower()}", False)
|
409
|
+
|
404
410
|
def get_sequence(self, config) -> tuple[tuple[int, ...], int]:
|
405
411
|
"""
|
406
412
|
Create the init sequence for the display.
|
@@ -432,7 +438,9 @@ class DriverChip:
|
|
432
438
|
sequence.append((INVOFF,))
|
433
439
|
if brightness := config.get(CONF_BRIGHTNESS, self.get_default(CONF_BRIGHTNESS)):
|
434
440
|
sequence.append((BRIGHTNESS, brightness))
|
435
|
-
|
441
|
+
# Add a SLPOUT command if required.
|
442
|
+
if not self.skip_command("SLPOUT"):
|
443
|
+
sequence.append((SLPOUT,))
|
436
444
|
sequence.append((DISPON,))
|
437
445
|
|
438
446
|
# Flatten the sequence into a list of bytes, with the length of each command
|
@@ -27,7 +27,8 @@ DriverChip(
|
|
27
27
|
bus_mode=TYPE_QUAD,
|
28
28
|
brightness=0xD0,
|
29
29
|
color_order=MODE_RGB,
|
30
|
-
|
30
|
+
no_slpout=True, # SLPOUT is in the init sequence, early
|
31
|
+
initsequence=(SLPOUT,),
|
31
32
|
)
|
32
33
|
|
33
34
|
DriverChip(
|
@@ -95,6 +96,7 @@ CO5300 = DriverChip(
|
|
95
96
|
brightness=0xD0,
|
96
97
|
color_order=MODE_RGB,
|
97
98
|
bus_mode=TYPE_QUAD,
|
99
|
+
no_slpout=True,
|
98
100
|
initsequence=(
|
99
101
|
(SLPOUT,), # Requires early SLPOUT
|
100
102
|
(PAGESEL, 0x00),
|
@@ -217,7 +217,7 @@ void SX126x::configure() {
|
|
217
217
|
this->write_opcode_(RADIO_SET_MODULATIONPARAMS, buf, 4);
|
218
218
|
|
219
219
|
// set packet params and sync word
|
220
|
-
this->set_packet_params_(this->
|
220
|
+
this->set_packet_params_(this->get_max_packet_size());
|
221
221
|
if (this->sync_value_.size() == 2) {
|
222
222
|
this->write_register_(REG_LORA_SYNCWORD, this->sync_value_.data(), this->sync_value_.size());
|
223
223
|
}
|
@@ -236,7 +236,7 @@ void SX126x::configure() {
|
|
236
236
|
this->write_opcode_(RADIO_SET_MODULATIONPARAMS, buf, 8);
|
237
237
|
|
238
238
|
// set packet params and sync word
|
239
|
-
this->set_packet_params_(this->
|
239
|
+
this->set_packet_params_(this->get_max_packet_size());
|
240
240
|
if (!this->sync_value_.empty()) {
|
241
241
|
this->write_register_(REG_GFSK_SYNCWORD, this->sync_value_.data(), this->sync_value_.size());
|
242
242
|
}
|
@@ -274,7 +274,7 @@ void SX126x::set_packet_params_(uint8_t payload_length) {
|
|
274
274
|
buf[2] = (this->preamble_detect_ > 0) ? ((this->preamble_detect_ - 1) | 0x04) : 0x00;
|
275
275
|
buf[3] = this->sync_value_.size() * 8;
|
276
276
|
buf[4] = 0x00;
|
277
|
-
buf[5] = 0x00;
|
277
|
+
buf[5] = (this->payload_length_ > 0) ? 0x00 : 0x01;
|
278
278
|
buf[6] = payload_length;
|
279
279
|
buf[7] = this->crc_enable_ ? 0x06 : 0x01;
|
280
280
|
buf[8] = 0x00;
|
@@ -314,6 +314,9 @@ SX126xError SX126x::transmit_packet(const std::vector<uint8_t> &packet) {
|
|
314
314
|
buf[0] = 0xFF;
|
315
315
|
buf[1] = 0xFF;
|
316
316
|
this->write_opcode_(RADIO_CLR_IRQSTATUS, buf, 2);
|
317
|
+
if (this->payload_length_ == 0) {
|
318
|
+
this->set_packet_params_(this->get_max_packet_size());
|
319
|
+
}
|
317
320
|
if (this->rx_start_) {
|
318
321
|
this->set_mode_rx();
|
319
322
|
} else {
|
@@ -72,6 +72,7 @@ void USBUartTypeCH34X::enable_channels() {
|
|
72
72
|
if (channel->index_ >= 2)
|
73
73
|
cmd += 0xE;
|
74
74
|
this->control_transfer(USB_VENDOR_DEV | usb_host::USB_DIR_OUT, cmd, value, (factor << 8) | divisor, callback);
|
75
|
+
this->control_transfer(USB_VENDOR_DEV | usb_host::USB_DIR_OUT, cmd + 3, 0x80, 0, callback);
|
75
76
|
}
|
76
77
|
USBUartTypeCdcAcm::enable_channels();
|
77
78
|
}
|
@@ -40,5 +40,7 @@ async def to_code(config):
|
|
40
40
|
cg.add_library("Update", None)
|
41
41
|
if CORE.is_esp8266:
|
42
42
|
cg.add_library("ESP8266WiFi", None)
|
43
|
+
if CORE.is_libretiny:
|
44
|
+
CORE.add_platformio_option("lib_ignore", ["ESPAsyncTCP", "RPAsyncTCP"])
|
43
45
|
# https://github.com/ESP32Async/ESPAsyncWebServer/blob/main/library.json
|
44
46
|
cg.add_library("ESP32Async/ESPAsyncWebServer", "3.7.10")
|
esphome/const.py
CHANGED
esphome/core/config.py
CHANGED
@@ -396,7 +396,7 @@ async def add_includes(includes):
|
|
396
396
|
async def _add_platformio_options(pio_options):
|
397
397
|
# Add includes at the very end, so that they override everything
|
398
398
|
for key, val in pio_options.items():
|
399
|
-
if key
|
399
|
+
if key in ["build_flags", "lib_ignore"] and not isinstance(val, list):
|
400
400
|
val = [val]
|
401
401
|
cg.add_platformio_option(key, val)
|
402
402
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: esphome
|
3
|
-
Version: 2025.9.
|
3
|
+
Version: 2025.9.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=H_WB4rj0uEowvlhEb31EjJQwutLQ5CQkJIsNgDK-wx8,1917
|
|
5
5
|
esphome/config.py,sha256=74-Y3XKtlB9h__fsu-Zvj6PanDWufVGo1-W4jlG-8cg,43172
|
6
6
|
esphome/config_helpers.py,sha256=E0UO0khX9JW-br_NSsDlLH3VuE-YwMQ99_pzEQVupDc,5391
|
7
7
|
esphome/config_validation.py,sha256=WB_2g9itbOi2z8bo25t8AG1rKHzLZdfa_DiTYQMuxrQ,64839
|
8
|
-
esphome/const.py,sha256=
|
8
|
+
esphome/const.py,sha256=dni6notKlV9xFGceQNndBq1IS0SBG8ZrDkPirTxLXGA,44216
|
9
9
|
esphome/coroutine.py,sha256=JFBDo8ngY46zhxvjk5aQ5MO_-qrqKDfKQTglEIqHrYY,11946
|
10
10
|
esphome/cpp_generator.py,sha256=C9O-H6ekHHdIEsfLGiqo-Sv6LZCmS0OL4A5ZGYHyh6U,32209
|
11
11
|
esphome/cpp_helpers.py,sha256=r-hrUp7luke-ByuK2Z0TCzIvn4tTswMUkAzlVoKntiI,4039
|
@@ -929,8 +929,8 @@ esphome/components/esp32_hosted/__init__.py,sha256=crOi6AdUnpreAdJZb-OktoyyZxeU7
|
|
929
929
|
esphome/components/esp32_hosted/esp32_hosted.py.script,sha256=L3YjW8b3-7I_Cy4V95y_UGFfdKh3UqhMarwCxoVJMKw,375
|
930
930
|
esphome/components/esp32_improv/__init__.py,sha256=qzIyscmQ6VVKCGR9B7UE7hf4IsKltQ3PrsQcL-slrrU,5490
|
931
931
|
esphome/components/esp32_improv/automation.h,sha256=S2_sD9RlE1B6lWaH_l_6n5ObBB1zhQ4EDxrzOcQuvRw,2042
|
932
|
-
esphome/components/esp32_improv/esp32_improv_component.cpp,sha256=
|
933
|
-
esphome/components/esp32_improv/esp32_improv_component.h,sha256=
|
932
|
+
esphome/components/esp32_improv/esp32_improv_component.cpp,sha256=PzAURhc6XPZ11a5_k68NmcBrMw92JdPZRTiqaXkkhYw,14383
|
933
|
+
esphome/components/esp32_improv/esp32_improv_component.h,sha256=ye1i5rcjC_H7qcVkPQ_a_nAsQ8H_sppVOZSs09Qw10k,3608
|
934
934
|
esphome/components/esp32_rmt/__init__.py,sha256=S_2Wjyp9R8RZ5i_BiJToXVJHAduDHPplP-rTODgvKw0,674
|
935
935
|
esphome/components/esp32_rmt_led_strip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
936
936
|
esphome/components/esp32_rmt_led_strip/led_strip.cpp,sha256=uDBStKKGj4b66PzzHiwH1a7KZIK17RdV0UQ94KabtsA,8789
|
@@ -1178,7 +1178,7 @@ esphome/components/he60r/cover.py,sha256=83aWhKtJEOLFQLxufXEmBrfDPEP-M-I4Pf_sqh1
|
|
1178
1178
|
esphome/components/he60r/he60r.cpp,sha256=W2jb-ga2gTS5xfHsxNnFUDr6qawTvzywonh6VTW1k88,8737
|
1179
1179
|
esphome/components/he60r/he60r.h,sha256=ACMuRuz-0RAh7kp6ndkV-9qcq1XOyF_4UIXyaPXC8uQ,1371
|
1180
1180
|
esphome/components/heatpumpir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1181
|
-
esphome/components/heatpumpir/climate.py,sha256
|
1181
|
+
esphome/components/heatpumpir/climate.py,sha256=QtLWwKuoh1L0qctB8y513FOBA5BAMgNEC5K3o7le7AQ,5584
|
1182
1182
|
esphome/components/heatpumpir/heatpumpir.cpp,sha256=GXnwvflFDXl9dPnkFEXIenT1WbjV-DrcLjV3jWON4FU,10062
|
1183
1183
|
esphome/components/heatpumpir/heatpumpir.h,sha256=2jmYpGvxTlGs_hfEmB05oAsl3OfwLY4joRDSKQShNy0,3807
|
1184
1184
|
esphome/components/heatpumpir/ir_sender_esphome.cpp,sha256=MOAYkculr1fFhFIa3_12yLZFblDcWBlvFyr5cQtMYIQ,734
|
@@ -1919,7 +1919,7 @@ esphome/components/midea_ir/climate.py,sha256=SIGjpEuW2nJbXh_SjKz1Tt5zkqqC65bsZp
|
|
1919
1919
|
esphome/components/midea_ir/midea_data.h,sha256=XOHDD0CzimykTCRGWqgQGIhDgmd0bXL1AjWscswO5OE,2783
|
1920
1920
|
esphome/components/midea_ir/midea_ir.cpp,sha256=5RJ1Igf_SCFOj2OwrS3n-_aAVfQPVNjiVFqi7cHwyJE,6666
|
1921
1921
|
esphome/components/midea_ir/midea_ir.h,sha256=BNVdX5xjpFy-q0OTgBubUpFA_GQgUeK3Vx7rahOT-nM,1518
|
1922
|
-
esphome/components/mipi/__init__.py,sha256=
|
1922
|
+
esphome/components/mipi/__init__.py,sha256=SLZnWHYHE-Nzp2imYn-FhuGGHPWhA9vRE56bK3mWVTw,15742
|
1923
1923
|
esphome/components/mipi_dsi/__init__.py,sha256=0xobDY4ImBcQod3BD1spYTLRg5gBGGJiuPx8R4KYApY,111
|
1924
1924
|
esphome/components/mipi_dsi/display.py,sha256=5atj0wGqzBTuM9CvbLjHB9mCcyGiYe3xhMVSJC5fxog,8060
|
1925
1925
|
esphome/components/mipi_dsi/mipi_dsi.cpp,sha256=WrZxI9snPhBfM2S2E53vmUltnW5uLWUwkT5fkuEMvhM,14254
|
@@ -1936,14 +1936,14 @@ esphome/components/mipi_rgb/models/guition.py,sha256=WnkzED6GAYg5PA0_mapH-s4oeM7
|
|
1936
1936
|
esphome/components/mipi_rgb/models/lilygo.py,sha256=RRQYMCPZUcXUPfCPxWKnXQ7wErHRGc8whWYrV3sF5WQ,6564
|
1937
1937
|
esphome/components/mipi_rgb/models/rpi.py,sha256=TsfdCw1R34KkuWjdcpr86QVlAWKcnE3cGO7Xv6Kjokc,248
|
1938
1938
|
esphome/components/mipi_rgb/models/st7701s.py,sha256=AOOwVcOb7kOc7L_sb59-7edyIuEbW-z4x6c5o_tW_Q8,8395
|
1939
|
-
esphome/components/mipi_rgb/models/waveshare.py,sha256=
|
1939
|
+
esphome/components/mipi_rgb/models/waveshare.py,sha256=iEYTdtiuGCgL4zdsdljSVrwUZZgmS8vpHwX8UzbyERE,1618
|
1940
1940
|
esphome/components/mipi_spi/__init__.py,sha256=XJwpaWKr4Ldgbuja4FdSVVpj-0q1Ef67Qmdg-SkTR7o,102
|
1941
1941
|
esphome/components/mipi_spi/display.py,sha256=TYnbrJczX_cnpG-mw0Hj6IwBVWvfIFMcBwRxdb6Xpqc,15318
|
1942
1942
|
esphome/components/mipi_spi/mipi_spi.cpp,sha256=atqJGYm2bPQOfMrgzjfCgjxrryanTXOieAqANXj4bgU,142
|
1943
1943
|
esphome/components/mipi_spi/mipi_spi.h,sha256=HKzar37uF9edHepg7J4yXIV7-a1OqiSqE7uHyLnN1M4,23289
|
1944
1944
|
esphome/components/mipi_spi/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1945
1945
|
esphome/components/mipi_spi/models/adafruit.py,sha256=Izz_5WeYuxbDQv-5Ixtm_hrdggT1drVLbTafV4TsJbM,482
|
1946
|
-
esphome/components/mipi_spi/models/amoled.py,sha256=
|
1946
|
+
esphome/components/mipi_spi/models/amoled.py,sha256=Ac1L4Bf-ZZLTdgGYcqyj3XnQer04RcBXP7UjHi_ZsKM,1978
|
1947
1947
|
esphome/components/mipi_spi/models/cyd.py,sha256=4kAD8U4h1HNpgT-3lum7Zt-DkldHoG2_50PbSPeTYLw,131
|
1948
1948
|
esphome/components/mipi_spi/models/ili.py,sha256=cM0_-S116aHZLjenHcPXZ1jrNROWfbNHm9HOWsZ6URk,15036
|
1949
1949
|
esphome/components/mipi_spi/models/jc.py,sha256=3tBxkMWL6vvEBHj16ivGRp9qZmuQk5tAP-kTlRCBxOk,10319
|
@@ -3073,7 +3073,7 @@ esphome/components/switch/binary_sensor/switch_binary_sensor.cpp,sha256=ZPwaqXQT
|
|
3073
3073
|
esphome/components/switch/binary_sensor/switch_binary_sensor.h,sha256=xTqZLNBeZl6oah0rzOiuBfeeLTUnl-hSMzLALWhuOog,462
|
3074
3074
|
esphome/components/sx126x/__init__.py,sha256=ESYxzsog9kId6zUOE6AVohHp2UzQNM8gCB-ZnOwlDYA,11941
|
3075
3075
|
esphome/components/sx126x/automation.h,sha256=fgt45VPE4CbumQ7Cj8fsd5oKZSxDazoZROo4_sij-x0,1824
|
3076
|
-
esphome/components/sx126x/sx126x.cpp,sha256=
|
3076
|
+
esphome/components/sx126x/sx126x.cpp,sha256=IrhWIBH7dG8_teDeOQ5G65iaPM9_hDEtlZSKrLw0YvM,16828
|
3077
3077
|
esphome/components/sx126x/sx126x.h,sha256=-jHgmn1dNUwwGf1eGrU19Z3BxwpFX49JxoVxSUlMQjM,5312
|
3078
3078
|
esphome/components/sx126x/sx126x_reg.h,sha256=GSWkorZRYDeqMO8oTIozvfL2WLYAz66y3o7QeE9LlfY,3742
|
3079
3079
|
esphome/components/sx126x/packet_transport/__init__.py,sha256=pQohjHA2lZTqq3ziua_W1_DVkIY6ldh1WVzh80c8zvA,716
|
@@ -3438,7 +3438,7 @@ esphome/components/usb_host/usb_host.h,sha256=Bi1Y0ZQd_ecbEhIXdnfgO7fPEoWXxjN-hZ
|
|
3438
3438
|
esphome/components/usb_host/usb_host_client.cpp,sha256=janrFosfaoDlNz5tZn7k7v3LSVN6mzr-AK41VAyT13g,14598
|
3439
3439
|
esphome/components/usb_host/usb_host_component.cpp,sha256=wY11HpSN4Ql4puDl6qN1wKk6FW1IfnAVwxHRC4AFq5Y,916
|
3440
3440
|
esphome/components/usb_uart/__init__.py,sha256=hj_dUGWhiwrlhZaiMrY4j8IX_Kn3EIk3JfCCrths7so,4951
|
3441
|
-
esphome/components/usb_uart/ch34x.cpp,sha256=
|
3441
|
+
esphome/components/usb_uart/ch34x.cpp,sha256=7l1NrFJMN7LbXKQ6bdOHtsmCuxcMGqyTGAmj_sIJtkA,2417
|
3442
3442
|
esphome/components/usb_uart/cp210x.cpp,sha256=8h_-Rr0Hy7BBisGhbOulTaJUYO8_HlMZBVUj35UPqk8,6006
|
3443
3443
|
esphome/components/usb_uart/usb_uart.cpp,sha256=oWsXwuZhvbFd9IHtrTPr_P7ezyDynllVP5nMNc17Nlw,12872
|
3444
3444
|
esphome/components/usb_uart/usb_uart.h,sha256=z6I-t409XJcVSsvWgGk_HvscM8nsmZM6593XP-qYyUE,4977
|
@@ -3501,7 +3501,7 @@ esphome/components/web_server/web_server_v1.cpp,sha256=ZnFV1J2YAzAT2mtR-eeVgG1TS
|
|
3501
3501
|
esphome/components/web_server/ota/__init__.py,sha256=VrKoEguXiiFcZ3sxV_i1WpA6MKtDM2gqgdoNV_HkfhY,1084
|
3502
3502
|
esphome/components/web_server/ota/ota_web_server.cpp,sha256=1HRC-pcl-fEVnv5hXQ5UXUSRgSfr5mdCUQWC4G-dWCU,8676
|
3503
3503
|
esphome/components/web_server/ota/ota_web_server.h,sha256=ZZQHTxb21gqukibGei-om00MxpBD4Qyy031PXBMmjT8,604
|
3504
|
-
esphome/components/web_server_base/__init__.py,sha256=
|
3504
|
+
esphome/components/web_server_base/__init__.py,sha256=dcBEt4dQahZVrK-3FsMG1C-1qzsc08OM4QQECLuq-F8,1464
|
3505
3505
|
esphome/components/web_server_base/web_server_base.cpp,sha256=VlAnKn1jhHVca2LUL32CJRKTIvNKpxXTs4KLHw9he-E,909
|
3506
3506
|
esphome/components/web_server_base/web_server_base.h,sha256=xKlrCAtThydv7SxJohZJ1cLirtZgSQ34Qk1Ldnn0WPM,4150
|
3507
3507
|
esphome/components/web_server_idf/__init__.py,sha256=suQYP-zxgx9bk7qmUVQ0P8FkwXqajUKDoEwenxD20Hg,409
|
@@ -3715,7 +3715,7 @@ esphome/core/component.cpp,sha256=VBNDcx54BPCRkPkFjDqH3o0TLY1pehZoEEvZkwHAmiY,18
|
|
3715
3715
|
esphome/core/component.h,sha256=5GuAD5chzeqP3lcgyeFrTB66IItADmvZ4025Gw8yBKE,18089
|
3716
3716
|
esphome/core/component_iterator.cpp,sha256=6EO7M9iL3wjtC84_EeJ9EOCQi7QNKWyqK-56G3Ze9Uo,5341
|
3717
3717
|
esphome/core/component_iterator.h,sha256=Opa1AmbsPR1S4b6aWwqRksajo7G5V2FLiSQA1p-z6n4,4279
|
3718
|
-
esphome/core/config.py,sha256=
|
3718
|
+
esphome/core/config.py,sha256=F3Rt2qoXEEaonikHPm1fsGaIex34d_zKl0WG6fgUzmc,20293
|
3719
3719
|
esphome/core/controller.cpp,sha256=nRJZK4B5WWad98tGGEESSGcKWcpWhExaUOIXO3Iu_xQ,4602
|
3720
3720
|
esphome/core/controller.h,sha256=UCvtMbw21KvAQHaO_fgDRr1OjcXEYzEC8JupPmHrNic,3708
|
3721
3721
|
esphome/core/datatypes.h,sha256=TNuXjWQIK7KjDwMAccMFws2SimaUlsgim96SI0cCdCY,2110
|
@@ -3766,9 +3766,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
|
|
3766
3766
|
esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
|
3767
3767
|
esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
|
3768
3768
|
esphome/dashboard/util/text.py,sha256=wwFtORlvHjsYkqb68IT-772LHAhWxT4OtnkIcPICQB0,317
|
3769
|
-
esphome-2025.9.
|
3770
|
-
esphome-2025.9.
|
3771
|
-
esphome-2025.9.
|
3772
|
-
esphome-2025.9.
|
3773
|
-
esphome-2025.9.
|
3774
|
-
esphome-2025.9.
|
3769
|
+
esphome-2025.9.2.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
3770
|
+
esphome-2025.9.2.dist-info/METADATA,sha256=cz24zWMTn8EgyiBvfQ5Fgi9GAIQGKIO0gvyxAEwx5T4,3632
|
3771
|
+
esphome-2025.9.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
3772
|
+
esphome-2025.9.2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
3773
|
+
esphome-2025.9.2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
3774
|
+
esphome-2025.9.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|