esphome 2025.7.0b2__py3-none-any.whl → 2025.7.0b3__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.
Potentially problematic release.
This version of esphome might be problematic. Click here for more details.
- esphome/components/esp_ldo/__init__.py +10 -8
- esphome/components/esp_ldo/esp_ldo.h +3 -0
- esphome/components/gpio/binary_sensor/__init__.py +24 -3
- esphome/components/i2s_audio/speaker/__init__.py +1 -1
- esphome/components/ld2420/binary_sensor/ld2420_binary_sensor.cpp +2 -2
- esphome/components/ld2420/button/reconfig_buttons.cpp +1 -1
- esphome/components/ld2420/ld2420.cpp +66 -57
- esphome/components/ld2420/ld2420.h +9 -11
- esphome/components/ld2420/number/gate_config_number.cpp +1 -1
- esphome/components/ld2420/select/operating_mode_select.cpp +1 -1
- esphome/components/ld2420/sensor/ld2420_sensor.cpp +2 -2
- esphome/components/ld2420/text_sensor/text_sensor.cpp +2 -2
- esphome/components/lvgl/widgets/meter.py +20 -13
- esphome/components/substitutions/__init__.py +5 -2
- esphome/const.py +1 -1
- esphome/core/component.cpp +8 -8
- esphome/core/helpers.h +1 -1
- {esphome-2025.7.0b2.dist-info → esphome-2025.7.0b3.dist-info}/METADATA +1 -1
- {esphome-2025.7.0b2.dist-info → esphome-2025.7.0b3.dist-info}/RECORD +23 -23
- {esphome-2025.7.0b2.dist-info → esphome-2025.7.0b3.dist-info}/WHEEL +0 -0
- {esphome-2025.7.0b2.dist-info → esphome-2025.7.0b3.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.0b2.dist-info → esphome-2025.7.0b3.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.0b2.dist-info → esphome-2025.7.0b3.dist-info}/top_level.txt +0 -0
|
@@ -20,14 +20,16 @@ adjusted_ids = set()
|
|
|
20
20
|
|
|
21
21
|
CONFIG_SCHEMA = cv.All(
|
|
22
22
|
cv.ensure_list(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
cv.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
cv.COMPONENT_SCHEMA.extend(
|
|
24
|
+
{
|
|
25
|
+
cv.GenerateID(): cv.declare_id(EspLdo),
|
|
26
|
+
cv.Required(CONF_VOLTAGE): cv.All(
|
|
27
|
+
cv.voltage, cv.float_range(min=0.5, max=2.7)
|
|
28
|
+
),
|
|
29
|
+
cv.Required(CONF_CHANNEL): cv.one_of(*CHANNELS, int=True),
|
|
30
|
+
cv.Optional(CONF_ADJUSTABLE, default=False): cv.boolean,
|
|
31
|
+
}
|
|
32
|
+
)
|
|
31
33
|
),
|
|
32
34
|
cv.only_with_esp_idf,
|
|
33
35
|
only_on_variant(supported=[VARIANT_ESP32P4]),
|
|
@@ -17,6 +17,9 @@ class EspLdo : public Component {
|
|
|
17
17
|
void set_adjustable(bool adjustable) { this->adjustable_ = adjustable; }
|
|
18
18
|
void set_voltage(float voltage) { this->voltage_ = voltage; }
|
|
19
19
|
void adjust_voltage(float voltage);
|
|
20
|
+
float get_setup_priority() const override {
|
|
21
|
+
return setup_priority::BUS; // LDO setup should be done early
|
|
22
|
+
}
|
|
20
23
|
|
|
21
24
|
protected:
|
|
22
25
|
int channel_;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
1
3
|
from esphome import pins
|
|
2
4
|
import esphome.codegen as cg
|
|
3
5
|
from esphome.components import binary_sensor
|
|
4
6
|
import esphome.config_validation as cv
|
|
5
|
-
from esphome.const import CONF_PIN
|
|
7
|
+
from esphome.const import CONF_ID, CONF_NAME, CONF_NUMBER, CONF_PIN
|
|
8
|
+
from esphome.core import CORE
|
|
6
9
|
|
|
7
10
|
from .. import gpio_ns
|
|
8
11
|
|
|
12
|
+
_LOGGER = logging.getLogger(__name__)
|
|
13
|
+
|
|
9
14
|
GPIOBinarySensor = gpio_ns.class_(
|
|
10
15
|
"GPIOBinarySensor", binary_sensor.BinarySensor, cg.Component
|
|
11
16
|
)
|
|
@@ -41,6 +46,22 @@ async def to_code(config):
|
|
|
41
46
|
pin = await cg.gpio_pin_expression(config[CONF_PIN])
|
|
42
47
|
cg.add(var.set_pin(pin))
|
|
43
48
|
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
# Check for ESP8266 GPIO16 interrupt limitation
|
|
50
|
+
# GPIO16 on ESP8266 is a special pin that doesn't support interrupts through
|
|
51
|
+
# the Arduino attachInterrupt() function. This is the only known GPIO pin
|
|
52
|
+
# across all supported platforms that has this limitation, so we handle it
|
|
53
|
+
# here instead of in the platform-specific code.
|
|
54
|
+
use_interrupt = config[CONF_USE_INTERRUPT]
|
|
55
|
+
if use_interrupt and CORE.is_esp8266 and config[CONF_PIN][CONF_NUMBER] == 16:
|
|
56
|
+
_LOGGER.warning(
|
|
57
|
+
"GPIO binary_sensor '%s': GPIO16 on ESP8266 doesn't support interrupts. "
|
|
58
|
+
"Falling back to polling mode (same as in ESPHome <2025.7). "
|
|
59
|
+
"The sensor will work exactly as before, but other pins have better "
|
|
60
|
+
"performance with interrupts.",
|
|
61
|
+
config.get(CONF_NAME, config[CONF_ID]),
|
|
62
|
+
)
|
|
63
|
+
use_interrupt = False
|
|
64
|
+
|
|
65
|
+
cg.add(var.set_use_interrupt(use_interrupt))
|
|
66
|
+
if use_interrupt:
|
|
46
67
|
cg.add(var.set_interrupt_type(config[CONF_INTERRUPT_TYPE]))
|
|
@@ -180,7 +180,7 @@ async def to_code(config):
|
|
|
180
180
|
await speaker.register_speaker(var, config)
|
|
181
181
|
|
|
182
182
|
if config[CONF_DAC_TYPE] == "internal":
|
|
183
|
-
cg.add(var.set_internal_dac_mode(config[
|
|
183
|
+
cg.add(var.set_internal_dac_mode(config[CONF_MODE]))
|
|
184
184
|
else:
|
|
185
185
|
cg.add(var.set_dout_pin(config[CONF_I2S_DOUT_PIN]))
|
|
186
186
|
if use_legacy():
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
namespace esphome {
|
|
6
6
|
namespace ld2420 {
|
|
7
7
|
|
|
8
|
-
static const char *const TAG = "
|
|
8
|
+
static const char *const TAG = "ld2420.binary_sensor";
|
|
9
9
|
|
|
10
10
|
void LD2420BinarySensor::dump_config() {
|
|
11
|
-
ESP_LOGCONFIG(TAG, "
|
|
11
|
+
ESP_LOGCONFIG(TAG, "Binary Sensor:");
|
|
12
12
|
LOG_BINARY_SENSOR(" ", "Presence", this->presence_bsensor_);
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -137,7 +137,7 @@ static const std::string OP_SIMPLE_MODE_STRING = "Simple";
|
|
|
137
137
|
// Memory-efficient lookup tables
|
|
138
138
|
struct StringToUint8 {
|
|
139
139
|
const char *str;
|
|
140
|
-
uint8_t value;
|
|
140
|
+
const uint8_t value;
|
|
141
141
|
};
|
|
142
142
|
|
|
143
143
|
static constexpr StringToUint8 OP_MODE_BY_STR[] = {
|
|
@@ -155,8 +155,9 @@ static constexpr const char *ERR_MESSAGE[] = {
|
|
|
155
155
|
// Helper function for lookups
|
|
156
156
|
template<size_t N> uint8_t find_uint8(const StringToUint8 (&arr)[N], const std::string &str) {
|
|
157
157
|
for (const auto &entry : arr) {
|
|
158
|
-
if (str == entry.str)
|
|
158
|
+
if (str == entry.str) {
|
|
159
159
|
return entry.value;
|
|
160
|
+
}
|
|
160
161
|
}
|
|
161
162
|
return 0xFF; // Not found
|
|
162
163
|
}
|
|
@@ -326,15 +327,8 @@ void LD2420Component::revert_config_action() {
|
|
|
326
327
|
|
|
327
328
|
void LD2420Component::loop() {
|
|
328
329
|
// If there is a active send command do not process it here, the send command call will handle it.
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
return;
|
|
332
|
-
static uint8_t buffer[2048];
|
|
333
|
-
static uint8_t rx_data;
|
|
334
|
-
while (this->available()) {
|
|
335
|
-
rx_data = this->read();
|
|
336
|
-
this->readline_(rx_data, buffer, sizeof(buffer));
|
|
337
|
-
}
|
|
330
|
+
while (!this->cmd_active_ && this->available()) {
|
|
331
|
+
this->readline_(this->read(), this->buffer_data_, MAX_LINE_LENGTH);
|
|
338
332
|
}
|
|
339
333
|
}
|
|
340
334
|
|
|
@@ -365,8 +359,9 @@ void LD2420Component::auto_calibrate_sensitivity() {
|
|
|
365
359
|
|
|
366
360
|
// Store average and peak values
|
|
367
361
|
this->gate_avg[gate] = sum / CALIBRATE_SAMPLES;
|
|
368
|
-
if (this->gate_peak[gate] < peak)
|
|
362
|
+
if (this->gate_peak[gate] < peak) {
|
|
369
363
|
this->gate_peak[gate] = peak;
|
|
364
|
+
}
|
|
370
365
|
|
|
371
366
|
uint32_t calculated_value =
|
|
372
367
|
(static_cast<uint32_t>(this->gate_peak[gate]) + (move_factor * static_cast<uint32_t>(this->gate_peak[gate])));
|
|
@@ -403,8 +398,9 @@ void LD2420Component::set_operating_mode(const std::string &state) {
|
|
|
403
398
|
}
|
|
404
399
|
} else {
|
|
405
400
|
// Set the current data back so we don't have new data that can be applied in error.
|
|
406
|
-
if (this->get_calibration_())
|
|
401
|
+
if (this->get_calibration_()) {
|
|
407
402
|
memcpy(&this->new_config, &this->current_config, sizeof(this->current_config));
|
|
403
|
+
}
|
|
408
404
|
this->set_calibration_(false);
|
|
409
405
|
}
|
|
410
406
|
} else {
|
|
@@ -414,30 +410,32 @@ void LD2420Component::set_operating_mode(const std::string &state) {
|
|
|
414
410
|
}
|
|
415
411
|
|
|
416
412
|
void LD2420Component::readline_(int rx_data, uint8_t *buffer, int len) {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
413
|
+
if (rx_data < 0) {
|
|
414
|
+
return; // No data available
|
|
415
|
+
}
|
|
416
|
+
if (this->buffer_pos_ < len - 1) {
|
|
417
|
+
buffer[this->buffer_pos_++] = rx_data;
|
|
418
|
+
buffer[this->buffer_pos_] = 0;
|
|
419
|
+
} else {
|
|
420
|
+
// We should never get here, but just in case...
|
|
421
|
+
ESP_LOGW(TAG, "Max command length exceeded; ignoring");
|
|
422
|
+
this->buffer_pos_ = 0;
|
|
423
|
+
}
|
|
424
|
+
if (this->buffer_pos_ < 4) {
|
|
425
|
+
return; // Not enough data to process yet
|
|
426
|
+
}
|
|
427
|
+
if (memcmp(&buffer[this->buffer_pos_ - 4], &CMD_FRAME_FOOTER, sizeof(CMD_FRAME_FOOTER)) == 0) {
|
|
428
|
+
this->cmd_active_ = false; // Set command state to inactive after response
|
|
429
|
+
this->handle_ack_data_(buffer, this->buffer_pos_);
|
|
430
|
+
this->buffer_pos_ = 0;
|
|
431
|
+
} else if ((buffer[this->buffer_pos_ - 2] == 0x0D && buffer[this->buffer_pos_ - 1] == 0x0A) &&
|
|
432
|
+
(this->get_mode_() == CMD_SYSTEM_MODE_SIMPLE)) {
|
|
433
|
+
this->handle_simple_mode_(buffer, this->buffer_pos_);
|
|
434
|
+
this->buffer_pos_ = 0;
|
|
435
|
+
} else if ((memcmp(&buffer[this->buffer_pos_ - 4], &ENERGY_FRAME_FOOTER, sizeof(ENERGY_FRAME_FOOTER)) == 0) &&
|
|
436
|
+
(this->get_mode_() == CMD_SYSTEM_MODE_ENERGY)) {
|
|
437
|
+
this->handle_energy_mode_(buffer, this->buffer_pos_);
|
|
438
|
+
this->buffer_pos_ = 0;
|
|
441
439
|
}
|
|
442
440
|
}
|
|
443
441
|
|
|
@@ -462,8 +460,9 @@ void LD2420Component::handle_energy_mode_(uint8_t *buffer, int len) {
|
|
|
462
460
|
|
|
463
461
|
// Resonable refresh rate for home assistant database size health
|
|
464
462
|
const int32_t current_millis = App.get_loop_component_start_time();
|
|
465
|
-
if (current_millis - this->last_periodic_millis < REFRESH_RATE_MS)
|
|
463
|
+
if (current_millis - this->last_periodic_millis < REFRESH_RATE_MS) {
|
|
466
464
|
return;
|
|
465
|
+
}
|
|
467
466
|
this->last_periodic_millis = current_millis;
|
|
468
467
|
for (auto &listener : this->listeners_) {
|
|
469
468
|
listener->on_distance(this->get_distance_());
|
|
@@ -506,14 +505,16 @@ void LD2420Component::handle_simple_mode_(const uint8_t *inbuf, int len) {
|
|
|
506
505
|
}
|
|
507
506
|
}
|
|
508
507
|
outbuf[index] = '\0';
|
|
509
|
-
if (index > 1)
|
|
508
|
+
if (index > 1) {
|
|
510
509
|
this->set_distance_(strtol(outbuf, &endptr, 10));
|
|
510
|
+
}
|
|
511
511
|
|
|
512
512
|
if (this->get_mode_() == CMD_SYSTEM_MODE_SIMPLE) {
|
|
513
513
|
// Resonable refresh rate for home assistant database size health
|
|
514
514
|
const int32_t current_millis = App.get_loop_component_start_time();
|
|
515
|
-
if (current_millis - this->last_normal_periodic_millis < REFRESH_RATE_MS)
|
|
515
|
+
if (current_millis - this->last_normal_periodic_millis < REFRESH_RATE_MS) {
|
|
516
516
|
return;
|
|
517
|
+
}
|
|
517
518
|
this->last_normal_periodic_millis = current_millis;
|
|
518
519
|
for (auto &listener : this->listeners_)
|
|
519
520
|
listener->on_distance(this->get_distance_());
|
|
@@ -593,11 +594,12 @@ void LD2420Component::handle_ack_data_(uint8_t *buffer, int len) {
|
|
|
593
594
|
int LD2420Component::send_cmd_from_array(CmdFrameT frame) {
|
|
594
595
|
uint32_t start_millis = millis();
|
|
595
596
|
uint8_t error = 0;
|
|
596
|
-
uint8_t ack_buffer[
|
|
597
|
-
uint8_t cmd_buffer[
|
|
597
|
+
uint8_t ack_buffer[MAX_LINE_LENGTH];
|
|
598
|
+
uint8_t cmd_buffer[MAX_LINE_LENGTH];
|
|
598
599
|
this->cmd_reply_.ack = false;
|
|
599
|
-
if (frame.command != CMD_RESTART)
|
|
600
|
-
this->
|
|
600
|
+
if (frame.command != CMD_RESTART) {
|
|
601
|
+
this->cmd_active_ = true;
|
|
602
|
+
} // Restart does not reply, thus no ack state required
|
|
601
603
|
uint8_t retry = 3;
|
|
602
604
|
while (retry) {
|
|
603
605
|
frame.length = 0;
|
|
@@ -619,9 +621,7 @@ int LD2420Component::send_cmd_from_array(CmdFrameT frame) {
|
|
|
619
621
|
|
|
620
622
|
memcpy(cmd_buffer + frame.length, &frame.footer, sizeof(frame.footer));
|
|
621
623
|
frame.length += sizeof(frame.footer);
|
|
622
|
-
|
|
623
|
-
this->write_byte(cmd_buffer[index]);
|
|
624
|
-
}
|
|
624
|
+
this->write_array(cmd_buffer, frame.length);
|
|
625
625
|
|
|
626
626
|
error = 0;
|
|
627
627
|
if (frame.command == CMD_RESTART) {
|
|
@@ -630,7 +630,7 @@ int LD2420Component::send_cmd_from_array(CmdFrameT frame) {
|
|
|
630
630
|
|
|
631
631
|
while (!this->cmd_reply_.ack) {
|
|
632
632
|
while (this->available()) {
|
|
633
|
-
this->readline_(read(), ack_buffer, sizeof(ack_buffer));
|
|
633
|
+
this->readline_(this->read(), ack_buffer, sizeof(ack_buffer));
|
|
634
634
|
}
|
|
635
635
|
delay_microseconds_safe(1450);
|
|
636
636
|
// Wait on an Rx from the LD2420 for up to 3 1 second loops, otherwise it could trigger a WDT.
|
|
@@ -641,10 +641,12 @@ int LD2420Component::send_cmd_from_array(CmdFrameT frame) {
|
|
|
641
641
|
break;
|
|
642
642
|
}
|
|
643
643
|
}
|
|
644
|
-
if (this->cmd_reply_.ack)
|
|
644
|
+
if (this->cmd_reply_.ack) {
|
|
645
645
|
retry = 0;
|
|
646
|
-
|
|
646
|
+
}
|
|
647
|
+
if (this->cmd_reply_.error > 0) {
|
|
647
648
|
this->handle_cmd_error(error);
|
|
649
|
+
}
|
|
648
650
|
}
|
|
649
651
|
return error;
|
|
650
652
|
}
|
|
@@ -764,8 +766,9 @@ void LD2420Component::set_system_mode(uint16_t mode) {
|
|
|
764
766
|
cmd_frame.data_length += sizeof(unknown_parm);
|
|
765
767
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
766
768
|
ESP_LOGV(TAG, "Sending write system mode command: %2X", cmd_frame.command);
|
|
767
|
-
if (this->send_cmd_from_array(cmd_frame) == 0)
|
|
769
|
+
if (this->send_cmd_from_array(cmd_frame) == 0) {
|
|
768
770
|
this->set_mode_(mode);
|
|
771
|
+
}
|
|
769
772
|
}
|
|
770
773
|
|
|
771
774
|
void LD2420Component::get_firmware_version_() {
|
|
@@ -840,18 +843,24 @@ void LD2420Component::set_gate_threshold(uint8_t gate) {
|
|
|
840
843
|
|
|
841
844
|
#ifdef USE_NUMBER
|
|
842
845
|
void LD2420Component::init_gate_config_numbers() {
|
|
843
|
-
if (this->gate_timeout_number_ != nullptr)
|
|
846
|
+
if (this->gate_timeout_number_ != nullptr) {
|
|
844
847
|
this->gate_timeout_number_->publish_state(static_cast<uint16_t>(this->current_config.timeout));
|
|
845
|
-
|
|
848
|
+
}
|
|
849
|
+
if (this->gate_select_number_ != nullptr) {
|
|
846
850
|
this->gate_select_number_->publish_state(0);
|
|
847
|
-
|
|
851
|
+
}
|
|
852
|
+
if (this->min_gate_distance_number_ != nullptr) {
|
|
848
853
|
this->min_gate_distance_number_->publish_state(static_cast<uint16_t>(this->current_config.min_gate));
|
|
849
|
-
|
|
854
|
+
}
|
|
855
|
+
if (this->max_gate_distance_number_ != nullptr) {
|
|
850
856
|
this->max_gate_distance_number_->publish_state(static_cast<uint16_t>(this->current_config.max_gate));
|
|
851
|
-
|
|
857
|
+
}
|
|
858
|
+
if (this->gate_move_sensitivity_factor_number_ != nullptr) {
|
|
852
859
|
this->gate_move_sensitivity_factor_number_->publish_state(this->gate_move_sensitivity_factor);
|
|
853
|
-
|
|
860
|
+
}
|
|
861
|
+
if (this->gate_still_sensitivity_factor_number_ != nullptr) {
|
|
854
862
|
this->gate_still_sensitivity_factor_number_->publish_state(this->gate_still_sensitivity_factor);
|
|
863
|
+
}
|
|
855
864
|
for (uint8_t gate = 0; gate < TOTAL_GATES; gate++) {
|
|
856
865
|
if (this->gate_still_threshold_numbers_[gate] != nullptr) {
|
|
857
866
|
this->gate_still_threshold_numbers_[gate]->publish_state(
|
|
@@ -20,8 +20,9 @@
|
|
|
20
20
|
namespace esphome {
|
|
21
21
|
namespace ld2420 {
|
|
22
22
|
|
|
23
|
-
static const uint8_t TOTAL_GATES = 16;
|
|
24
23
|
static const uint8_t CALIBRATE_SAMPLES = 64;
|
|
24
|
+
static const uint8_t MAX_LINE_LENGTH = 46; // Max characters for serial buffer
|
|
25
|
+
static const uint8_t TOTAL_GATES = 16;
|
|
25
26
|
|
|
26
27
|
enum OpMode : uint8_t {
|
|
27
28
|
OP_NORMAL_MODE = 1,
|
|
@@ -118,10 +119,10 @@ class LD2420Component : public Component, public uart::UARTDevice {
|
|
|
118
119
|
|
|
119
120
|
float gate_move_sensitivity_factor{0.5};
|
|
120
121
|
float gate_still_sensitivity_factor{0.5};
|
|
121
|
-
int32_t last_periodic_millis
|
|
122
|
-
int32_t report_periodic_millis
|
|
123
|
-
int32_t monitor_periodic_millis
|
|
124
|
-
int32_t last_normal_periodic_millis
|
|
122
|
+
int32_t last_periodic_millis{0};
|
|
123
|
+
int32_t report_periodic_millis{0};
|
|
124
|
+
int32_t monitor_periodic_millis{0};
|
|
125
|
+
int32_t last_normal_periodic_millis{0};
|
|
125
126
|
uint16_t radar_data[TOTAL_GATES][CALIBRATE_SAMPLES];
|
|
126
127
|
uint16_t gate_avg[TOTAL_GATES];
|
|
127
128
|
uint16_t gate_peak[TOTAL_GATES];
|
|
@@ -161,8 +162,6 @@ class LD2420Component : public Component, public uart::UARTDevice {
|
|
|
161
162
|
void set_presence_(bool presence) { this->presence_ = presence; };
|
|
162
163
|
uint16_t get_distance_() { return this->distance_; };
|
|
163
164
|
void set_distance_(uint16_t distance) { this->distance_ = distance; };
|
|
164
|
-
bool get_cmd_active_() { return this->cmd_active_; };
|
|
165
|
-
void set_cmd_active_(bool active) { this->cmd_active_ = active; };
|
|
166
165
|
void handle_simple_mode_(const uint8_t *inbuf, int len);
|
|
167
166
|
void handle_energy_mode_(uint8_t *buffer, int len);
|
|
168
167
|
void handle_ack_data_(uint8_t *buffer, int len);
|
|
@@ -181,12 +180,11 @@ class LD2420Component : public Component, public uart::UARTDevice {
|
|
|
181
180
|
std::vector<number::Number *> gate_move_threshold_numbers_ = std::vector<number::Number *>(16);
|
|
182
181
|
#endif
|
|
183
182
|
|
|
184
|
-
|
|
185
|
-
uint32_t min_distance_gate_;
|
|
183
|
+
uint16_t distance_{0};
|
|
186
184
|
uint16_t system_mode_;
|
|
187
185
|
uint16_t gate_energy_[TOTAL_GATES];
|
|
188
|
-
|
|
189
|
-
uint8_t
|
|
186
|
+
uint8_t buffer_pos_{0}; // where to resume processing/populating buffer
|
|
187
|
+
uint8_t buffer_data_[MAX_LINE_LENGTH];
|
|
190
188
|
char firmware_ver_[8]{"v0.0.0"};
|
|
191
189
|
bool cmd_active_{false};
|
|
192
190
|
bool presence_{false};
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
namespace esphome {
|
|
6
6
|
namespace ld2420 {
|
|
7
7
|
|
|
8
|
-
static const char *const TAG = "
|
|
8
|
+
static const char *const TAG = "ld2420.sensor";
|
|
9
9
|
|
|
10
10
|
void LD2420Sensor::dump_config() {
|
|
11
|
-
ESP_LOGCONFIG(TAG, "
|
|
11
|
+
ESP_LOGCONFIG(TAG, "Sensor:");
|
|
12
12
|
LOG_SENSOR(" ", "Distance", this->distance_sensor_);
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
namespace esphome {
|
|
6
6
|
namespace ld2420 {
|
|
7
7
|
|
|
8
|
-
static const char *const TAG = "
|
|
8
|
+
static const char *const TAG = "ld2420.text_sensor";
|
|
9
9
|
|
|
10
10
|
void LD2420TextSensor::dump_config() {
|
|
11
|
-
ESP_LOGCONFIG(TAG, "
|
|
11
|
+
ESP_LOGCONFIG(TAG, "Text Sensor:");
|
|
12
12
|
LOG_TEXT_SENSOR(" ", "Firmware", this->fw_version_text_sensor_);
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -29,9 +29,9 @@ from ..defines import (
|
|
|
29
29
|
)
|
|
30
30
|
from ..helpers import add_lv_use, lvgl_components_required
|
|
31
31
|
from ..lv_validation import (
|
|
32
|
-
angle,
|
|
33
32
|
get_end_value,
|
|
34
33
|
get_start_value,
|
|
34
|
+
lv_angle,
|
|
35
35
|
lv_bool,
|
|
36
36
|
lv_color,
|
|
37
37
|
lv_float,
|
|
@@ -162,7 +162,7 @@ SCALE_SCHEMA = cv.Schema(
|
|
|
162
162
|
cv.Optional(CONF_RANGE_FROM, default=0.0): cv.float_,
|
|
163
163
|
cv.Optional(CONF_RANGE_TO, default=100.0): cv.float_,
|
|
164
164
|
cv.Optional(CONF_ANGLE_RANGE, default=270): cv.int_range(0, 360),
|
|
165
|
-
cv.Optional(CONF_ROTATION):
|
|
165
|
+
cv.Optional(CONF_ROTATION): lv_angle,
|
|
166
166
|
cv.Optional(CONF_INDICATORS): cv.ensure_list(INDICATOR_SCHEMA),
|
|
167
167
|
}
|
|
168
168
|
)
|
|
@@ -187,7 +187,7 @@ class MeterType(WidgetType):
|
|
|
187
187
|
for scale_conf in config.get(CONF_SCALES, ()):
|
|
188
188
|
rotation = 90 + (360 - scale_conf[CONF_ANGLE_RANGE]) / 2
|
|
189
189
|
if CONF_ROTATION in scale_conf:
|
|
190
|
-
rotation = scale_conf[CONF_ROTATION]
|
|
190
|
+
rotation = await lv_angle.process(scale_conf[CONF_ROTATION])
|
|
191
191
|
with LocalVariable(
|
|
192
192
|
"meter_var", "lv_meter_scale_t", lv_expr.meter_add_scale(var)
|
|
193
193
|
) as meter_var:
|
|
@@ -205,21 +205,20 @@ class MeterType(WidgetType):
|
|
|
205
205
|
var,
|
|
206
206
|
meter_var,
|
|
207
207
|
ticks[CONF_COUNT],
|
|
208
|
-
ticks[CONF_WIDTH],
|
|
209
|
-
ticks[CONF_LENGTH],
|
|
208
|
+
await size.process(ticks[CONF_WIDTH]),
|
|
209
|
+
await size.process(ticks[CONF_LENGTH]),
|
|
210
210
|
color,
|
|
211
211
|
)
|
|
212
212
|
if CONF_MAJOR in ticks:
|
|
213
213
|
major = ticks[CONF_MAJOR]
|
|
214
|
-
color = await lv_color.process(major[CONF_COLOR])
|
|
215
214
|
lv.meter_set_scale_major_ticks(
|
|
216
215
|
var,
|
|
217
216
|
meter_var,
|
|
218
217
|
major[CONF_STRIDE],
|
|
219
|
-
major[CONF_WIDTH],
|
|
220
|
-
major[CONF_LENGTH],
|
|
221
|
-
|
|
222
|
-
major[CONF_LABEL_GAP],
|
|
218
|
+
await size.process(major[CONF_WIDTH]),
|
|
219
|
+
await size.process(major[CONF_LENGTH]),
|
|
220
|
+
await lv_color.process(major[CONF_COLOR]),
|
|
221
|
+
await size.process(major[CONF_LABEL_GAP]),
|
|
223
222
|
)
|
|
224
223
|
for indicator in scale_conf.get(CONF_INDICATORS, ()):
|
|
225
224
|
(t, v) = next(iter(indicator.items()))
|
|
@@ -233,7 +232,11 @@ class MeterType(WidgetType):
|
|
|
233
232
|
lv_assign(
|
|
234
233
|
ivar,
|
|
235
234
|
lv_expr.meter_add_needle_line(
|
|
236
|
-
var,
|
|
235
|
+
var,
|
|
236
|
+
meter_var,
|
|
237
|
+
await size.process(v[CONF_WIDTH]),
|
|
238
|
+
color,
|
|
239
|
+
await size.process(v[CONF_R_MOD]),
|
|
237
240
|
),
|
|
238
241
|
)
|
|
239
242
|
if t == CONF_ARC:
|
|
@@ -241,7 +244,11 @@ class MeterType(WidgetType):
|
|
|
241
244
|
lv_assign(
|
|
242
245
|
ivar,
|
|
243
246
|
lv_expr.meter_add_arc(
|
|
244
|
-
var,
|
|
247
|
+
var,
|
|
248
|
+
meter_var,
|
|
249
|
+
await size.process(v[CONF_WIDTH]),
|
|
250
|
+
color,
|
|
251
|
+
await size.process(v[CONF_R_MOD]),
|
|
245
252
|
),
|
|
246
253
|
)
|
|
247
254
|
if t == CONF_TICK_STYLE:
|
|
@@ -257,7 +264,7 @@ class MeterType(WidgetType):
|
|
|
257
264
|
color_start,
|
|
258
265
|
color_end,
|
|
259
266
|
v[CONF_LOCAL],
|
|
260
|
-
v[CONF_WIDTH],
|
|
267
|
+
size.process(v[CONF_WIDTH]),
|
|
261
268
|
),
|
|
262
269
|
)
|
|
263
270
|
if t == CONF_IMAGE:
|
|
@@ -151,8 +151,11 @@ def _substitute_item(substitutions, item, path, jinja, ignore_missing):
|
|
|
151
151
|
if sub is not None:
|
|
152
152
|
item[k] = sub
|
|
153
153
|
for old, new in replace_keys:
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
if str(new) == str(old):
|
|
155
|
+
item[new] = item[old]
|
|
156
|
+
else:
|
|
157
|
+
item[new] = merge_config(item.get(old), item.get(new))
|
|
158
|
+
del item[old]
|
|
156
159
|
elif isinstance(item, str):
|
|
157
160
|
sub = _expand_substitutions(substitutions, item, path, jinja, ignore_missing)
|
|
158
161
|
if isinstance(sub, JinjaStr) or sub != item:
|
esphome/const.py
CHANGED
esphome/core/component.cpp
CHANGED
|
@@ -138,7 +138,7 @@ void Component::call_dump_config() {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
ESP_LOGE(TAG, "
|
|
141
|
+
ESP_LOGE(TAG, " %s is marked FAILED: %s", this->get_component_source(), error_msg);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -191,7 +191,7 @@ bool Component::should_warn_of_blocking(uint32_t blocking_time) {
|
|
|
191
191
|
return false;
|
|
192
192
|
}
|
|
193
193
|
void Component::mark_failed() {
|
|
194
|
-
ESP_LOGE(TAG, "
|
|
194
|
+
ESP_LOGE(TAG, "%s was marked as failed", this->get_component_source());
|
|
195
195
|
this->component_state_ &= ~COMPONENT_STATE_MASK;
|
|
196
196
|
this->component_state_ |= COMPONENT_STATE_FAILED;
|
|
197
197
|
this->status_set_error();
|
|
@@ -229,7 +229,7 @@ void IRAM_ATTR HOT Component::enable_loop_soon_any_context() {
|
|
|
229
229
|
}
|
|
230
230
|
void Component::reset_to_construction_state() {
|
|
231
231
|
if ((this->component_state_ & COMPONENT_STATE_MASK) == COMPONENT_STATE_FAILED) {
|
|
232
|
-
ESP_LOGI(TAG, "
|
|
232
|
+
ESP_LOGI(TAG, "%s is being reset to construction state", this->get_component_source());
|
|
233
233
|
this->component_state_ &= ~COMPONENT_STATE_MASK;
|
|
234
234
|
this->component_state_ |= COMPONENT_STATE_CONSTRUCTION;
|
|
235
235
|
// Clear error status when resetting
|
|
@@ -275,14 +275,14 @@ void Component::status_set_warning(const char *message) {
|
|
|
275
275
|
return;
|
|
276
276
|
this->component_state_ |= STATUS_LED_WARNING;
|
|
277
277
|
App.app_state_ |= STATUS_LED_WARNING;
|
|
278
|
-
ESP_LOGW(TAG, "
|
|
278
|
+
ESP_LOGW(TAG, "%s set Warning flag: %s", this->get_component_source(), message);
|
|
279
279
|
}
|
|
280
280
|
void Component::status_set_error(const char *message) {
|
|
281
281
|
if ((this->component_state_ & STATUS_LED_ERROR) != 0)
|
|
282
282
|
return;
|
|
283
283
|
this->component_state_ |= STATUS_LED_ERROR;
|
|
284
284
|
App.app_state_ |= STATUS_LED_ERROR;
|
|
285
|
-
ESP_LOGE(TAG, "
|
|
285
|
+
ESP_LOGE(TAG, "%s set Error flag: %s", this->get_component_source(), message);
|
|
286
286
|
if (strcmp(message, "unspecified") != 0) {
|
|
287
287
|
// Lazy allocate the error messages vector if needed
|
|
288
288
|
if (!component_error_messages) {
|
|
@@ -303,13 +303,13 @@ void Component::status_clear_warning() {
|
|
|
303
303
|
if ((this->component_state_ & STATUS_LED_WARNING) == 0)
|
|
304
304
|
return;
|
|
305
305
|
this->component_state_ &= ~STATUS_LED_WARNING;
|
|
306
|
-
ESP_LOGW(TAG, "
|
|
306
|
+
ESP_LOGW(TAG, "%s cleared Warning flag", this->get_component_source());
|
|
307
307
|
}
|
|
308
308
|
void Component::status_clear_error() {
|
|
309
309
|
if ((this->component_state_ & STATUS_LED_ERROR) == 0)
|
|
310
310
|
return;
|
|
311
311
|
this->component_state_ &= ~STATUS_LED_ERROR;
|
|
312
|
-
ESP_LOGE(TAG, "
|
|
312
|
+
ESP_LOGE(TAG, "%s cleared Error flag", this->get_component_source());
|
|
313
313
|
}
|
|
314
314
|
void Component::status_momentary_warning(const std::string &name, uint32_t length) {
|
|
315
315
|
this->status_set_warning();
|
|
@@ -403,7 +403,7 @@ uint32_t WarnIfComponentBlockingGuard::finish() {
|
|
|
403
403
|
}
|
|
404
404
|
if (should_warn) {
|
|
405
405
|
const char *src = component_ == nullptr ? "<null>" : component_->get_component_source();
|
|
406
|
-
ESP_LOGW(TAG, "
|
|
406
|
+
ESP_LOGW(TAG, "%s took a long time for an operation (%" PRIu32 " ms)", src, blocking_time);
|
|
407
407
|
ESP_LOGW(TAG, "Components should block for at most 30 ms");
|
|
408
408
|
}
|
|
409
409
|
|
esphome/core/helpers.h
CHANGED
|
@@ -783,7 +783,7 @@ template<class T> class RAMAllocator {
|
|
|
783
783
|
T *reallocate(T *p, size_t n) { return this->reallocate(p, n, sizeof(T)); }
|
|
784
784
|
|
|
785
785
|
T *reallocate(T *p, size_t n, size_t manual_size) {
|
|
786
|
-
size_t size = n *
|
|
786
|
+
size_t size = n * manual_size;
|
|
787
787
|
T *ptr = nullptr;
|
|
788
788
|
#ifdef USE_ESP32
|
|
789
789
|
if (this->flags_ & Flags::ALLOC_EXTERNAL) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: esphome
|
|
3
|
-
Version: 2025.7.
|
|
3
|
+
Version: 2025.7.0b3
|
|
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=b-Gh-DEx_pax0ZKqHTKb5gmMIvaQA71bJvE-15AI0JI,42211
|
|
6
6
|
esphome/config_helpers.py,sha256=BpyuWRxj5edJGIW7VP4S59i4I8g8baSlWpNyu6nB_uM,5413
|
|
7
7
|
esphome/config_validation.py,sha256=_SMAcS_AhMh0kaLki86hjPZp5b95culJZtQePqoL_fU,63712
|
|
8
|
-
esphome/const.py,sha256=
|
|
8
|
+
esphome/const.py,sha256=9UDpVL3euqlC_YJOtTLYHs4MpUCqRjI8hMV_71Asw8M,43369
|
|
9
9
|
esphome/coroutine.py,sha256=HNBqqhaTbpvsOI19bTXltxJCMVtoeqZPe4qTf4CKkAc,9309
|
|
10
10
|
esphome/cpp_generator.py,sha256=khmyuRIOc-ST9zIZjX7uOWLy9sSJhk4C2KexoBv51uk,31946
|
|
11
11
|
esphome/cpp_helpers.py,sha256=P9FVGpid75_UcKxIf-sj7GbhWGQNRcBm_2XVF3r7NtU,3998
|
|
@@ -933,9 +933,9 @@ esphome/components/esp8266_pwm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
933
933
|
esphome/components/esp8266_pwm/esp8266_pwm.cpp,sha256=C6eQ2S2mgwDgeb-v1lqb81Ht462bQ8L7jyia6d9CC88,1684
|
|
934
934
|
esphome/components/esp8266_pwm/esp8266_pwm.h,sha256=YLObIixl3YFDx3biu1TVfH6qyOFFts-VGT4pxgN0PHw,1386
|
|
935
935
|
esphome/components/esp8266_pwm/output.py,sha256=s5sMTbATthPAJCJyTwvIBYQAoEcffAGxBvv7NLwtkZY,2041
|
|
936
|
-
esphome/components/esp_ldo/__init__.py,sha256=
|
|
936
|
+
esphome/components/esp_ldo/__init__.py,sha256=bBEaDXgqzFtcRSOcUttuA8VGJnayYjLU-zhvzGw8UiU,2892
|
|
937
937
|
esphome/components/esp_ldo/esp_ldo.cpp,sha256=cAnIUUnO9EGLEx2y0cZ7eT5eVeollwTxFLGQUdZ9sP8,1506
|
|
938
|
-
esphome/components/esp_ldo/esp_ldo.h,sha256=
|
|
938
|
+
esphome/components/esp_ldo/esp_ldo.h,sha256=M5pLF6Wv1_CasrOHDG9e6UIYD-7KNVbZtXk0uAt61Bc,1130
|
|
939
939
|
esphome/components/esphome/ota/__init__.py,sha256=KKXGpESL_RUHYUWqEZ_VPXnfJX5So8q7FX2E2A4hc4E,4880
|
|
940
940
|
esphome/components/esphome/ota/ota_esphome.cpp,sha256=nj1hd4fkGvKq95NYqhE9faG0pYJxeE1gLcmu-KBdwW8,12968
|
|
941
941
|
esphome/components/esphome/ota/ota_esphome.h,sha256=MHd6DPavp08gfb-bcttjCiv3U60XMSTMDi2nPcN8Y7s,1140
|
|
@@ -1044,7 +1044,7 @@ esphome/components/gp8403/output/__init__.py,sha256=3VX9AD0N0SRXdOfKJcMMgjCwA1-R
|
|
|
1044
1044
|
esphome/components/gp8403/output/gp8403_output.cpp,sha256=FQPUa_ZMgLz7LNHy6N8sNUpnI2hwOIZTRrwWtjXrbGs,714
|
|
1045
1045
|
esphome/components/gp8403/output/gp8403_output.h,sha256=wJd_-CtUSxw5ujhR21E1zCiB9hvpl3Ktt665D3iQLf4,598
|
|
1046
1046
|
esphome/components/gpio/__init__.py,sha256=afIFpPG_fsom-8vYV1yRyvhSCFyASlAdraUCuztWQZ4,103
|
|
1047
|
-
esphome/components/gpio/binary_sensor/__init__.py,sha256=
|
|
1047
|
+
esphome/components/gpio/binary_sensor/__init__.py,sha256=_rb3IP-gt1Fq5wSoFG36L7YATLF4xX2dRNlDI9sM1kU,2295
|
|
1048
1048
|
esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp,sha256=wVa5pNQMnUOO9RUovnf6G8MYQtKQoRSojA3MItHLnbg,3131
|
|
1049
1049
|
esphome/components/gpio/binary_sensor/gpio_binary_sensor.h,sha256=ukwmyxJhiYXMczcT16zwdliTX5Brf8fdgDzid6l13wE,2000
|
|
1050
1050
|
esphome/components/gpio/one_wire/__init__.py,sha256=oH6-6zy18pG_7iqzLegjh4AbjnbZHqBRZKHdHBI-828,714
|
|
@@ -1285,7 +1285,7 @@ esphome/components/i2s_audio/media_player/i2s_audio_media_player.h,sha256=gmG6n9
|
|
|
1285
1285
|
esphome/components/i2s_audio/microphone/__init__.py,sha256=m62jL72XwxBavk9cDULs2cdcbHHkM96JF5RPiPBHGcg,4281
|
|
1286
1286
|
esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp,sha256=TUsYopCDgzRWi4QRtw3hNx5qmsy4eT8hUnEeUvFyiA4,16932
|
|
1287
1287
|
esphome/components/i2s_audio/microphone/i2s_audio_microphone.h,sha256=74azu9ZjuKfbE5tPXIMDMQD241EqYU1VtV8gpwfLtHw,2409
|
|
1288
|
-
esphome/components/i2s_audio/speaker/__init__.py,sha256=
|
|
1288
|
+
esphome/components/i2s_audio/speaker/__init__.py,sha256=GqE7dlAd6cbn0Es_ZRWpLZhMG0UQrPmwABPfkdF1I_g,6149
|
|
1289
1289
|
esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp,sha256=WWsZ72wenICP37UHodPgT7_ui_SHKLsBKAff4RuCu2M,27353
|
|
1290
1290
|
esphome/components/i2s_audio/speaker/i2s_audio_speaker.h,sha256=JZLm5X2Anpx4R34eXONlHvzypJvLI8N-MQiZkFhx7B4,6697
|
|
1291
1291
|
esphome/components/iaqcore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -1433,25 +1433,25 @@ esphome/components/ld2410/switch/bluetooth_switch.h,sha256=B-oPEG1KV23aATKLLRqqt
|
|
|
1433
1433
|
esphome/components/ld2410/switch/engineering_mode_switch.cpp,sha256=DtyDtB0m9xyiEjfrKCg_z0aUVlexvS2t6EdkZ_j1S4Q,258
|
|
1434
1434
|
esphome/components/ld2410/switch/engineering_mode_switch.h,sha256=YtfYVHHSWRic0qg9iei16S52urpQHAeUMddDXon2EII,364
|
|
1435
1435
|
esphome/components/ld2420/__init__.py,sha256=iei6OBPy_GV2tvLBsK5y3BaLxGOkqPypozfNw4BfVLY,898
|
|
1436
|
-
esphome/components/ld2420/ld2420.cpp,sha256=
|
|
1437
|
-
esphome/components/ld2420/ld2420.h,sha256=
|
|
1436
|
+
esphome/components/ld2420/ld2420.cpp,sha256=gGtUOfbXuLfhiiAC5BDgAsnEQ6AQpXOJbvAuiZm-510,35757
|
|
1437
|
+
esphome/components/ld2420/ld2420.h,sha256=PDPHjm8gujPdiXyFj2PrqzmxlskuJyupyaAVysCVEJY,7605
|
|
1438
1438
|
esphome/components/ld2420/binary_sensor/__init__.py,sha256=dAItkJvREF_uaoUAwL_XZd8OpKDzFVh4IWSW6gGHY_I,1100
|
|
1439
|
-
esphome/components/ld2420/binary_sensor/ld2420_binary_sensor.cpp,sha256=
|
|
1439
|
+
esphome/components/ld2420/binary_sensor/ld2420_binary_sensor.cpp,sha256=hXrHfEkW0R4hOBnO4sf2NGJMpqbCLTrqcW0WR0__oNo,390
|
|
1440
1440
|
esphome/components/ld2420/binary_sensor/ld2420_binary_sensor.h,sha256=5xaOuNN3ewvyTyZW4eBi7G4kE9gLxPqsY3xbEibXRyQ,717
|
|
1441
1441
|
esphome/components/ld2420/button/__init__.py,sha256=vQgQJV2bMSXvGVP7UHP32CTfPpSbnYpdox_BlNnIdJE,2728
|
|
1442
|
-
esphome/components/ld2420/button/reconfig_buttons.cpp,sha256=
|
|
1442
|
+
esphome/components/ld2420/button/reconfig_buttons.cpp,sha256=X0mRuVq941A6j0AhNLVecElTKO86fzoHZ-YbP2bnarU,588
|
|
1443
1443
|
esphome/components/ld2420/button/reconfig_buttons.h,sha256=g7sUKrlQKMAXdngXnEWs6MkNPdTjdAuSa3KT9komxNQ,927
|
|
1444
1444
|
esphome/components/ld2420/number/__init__.py,sha256=Cc9MjrqowggJB6dxTptzy65rh65zWYbvFZUtm0Gcu9g,7961
|
|
1445
|
-
esphome/components/ld2420/number/gate_config_number.cpp,sha256=
|
|
1445
|
+
esphome/components/ld2420/number/gate_config_number.cpp,sha256=0a9KtptLjDRnAwGsbgGyt7l9bxq61zmqm71q1cJIcGU,2392
|
|
1446
1446
|
esphome/components/ld2420/number/gate_config_number.h,sha256=sYuklfUnQwoHsrcfzonabw9f0xfPmxyv4KrfdptqyKE,1902
|
|
1447
1447
|
esphome/components/ld2420/select/__init__.py,sha256=2e2h1F-5xUYt4ADkLgQxFsOJ1u6Xym0j1tXIhTTmF68,1013
|
|
1448
|
-
esphome/components/ld2420/select/operating_mode_select.cpp,sha256=
|
|
1448
|
+
esphome/components/ld2420/select/operating_mode_select.cpp,sha256=gfBUYCYp8GqoMcHW5ttIfYSHaYOKonS-akxQCKtC_iM,368
|
|
1449
1449
|
esphome/components/ld2420/select/operating_mode_select.h,sha256=YW2eqa9Ga6AC4-xk7UdcaMkkapQ3EVlzgdyGyKVg8zI,373
|
|
1450
1450
|
esphome/components/ld2420/sensor/__init__.py,sha256=O312BKb_LMxJM2IQDeCSHoGBfmmZ5zWUmiNWQXudE_g,1298
|
|
1451
|
-
esphome/components/ld2420/sensor/ld2420_sensor.cpp,sha256=
|
|
1451
|
+
esphome/components/ld2420/sensor/ld2420_sensor.cpp,sha256=0nkkrkvMJT2srNQ2JGGoOIOzT5p9VIka0n_Iv2NVF1U,355
|
|
1452
1452
|
esphome/components/ld2420/sensor/ld2420_sensor.h,sha256=wwS-YQmlrVFCtwshXKy3FTd16RLlx8_Qe-6j4tISXMI,1030
|
|
1453
1453
|
esphome/components/ld2420/text_sensor/__init__.py,sha256=3tURtfeJvPyYSn0qsb8ynmDx_Z0KCEXaq3VqZ8aKWY0,1139
|
|
1454
|
-
esphome/components/ld2420/text_sensor/text_sensor.cpp,sha256=
|
|
1454
|
+
esphome/components/ld2420/text_sensor/text_sensor.cpp,sha256=6rvT1dp3u9Fpmpm-3kHZTBnGZ8omsUABTM9jkey0-IA,379
|
|
1455
1455
|
esphome/components/ld2420/text_sensor/text_sensor.h,sha256=aK91ri0NvHth3ya0zN1OeX81v1nqveoiJcOfqCpaAJI,672
|
|
1456
1456
|
esphome/components/ld2450/__init__.py,sha256=n6KvEkMsoaR3DUix1a1MGq-ZyjAAIAKDZ0lYN7iKSpQ,1267
|
|
1457
1457
|
esphome/components/ld2450/binary_sensor.py,sha256=SyIw9c-4JqNm8JKuzSKA9rVWaVCGsYAslV0VbhqJnoM,1755
|
|
@@ -1628,7 +1628,7 @@ esphome/components/lvgl/widgets/label.py,sha256=5xl1a6apdJgGKmkpL8m7RDASjaeKzjKT
|
|
|
1628
1628
|
esphome/components/lvgl/widgets/led.py,sha256=qoe_kvZpoRkwbxz25Z66KQ__KLC2tfhAukChp1jdlDc,888
|
|
1629
1629
|
esphome/components/lvgl/widgets/line.py,sha256=XwTZxoLeWb5_Bx4cRBjBxLd83DLGqFXSE8t9jNYasXk,1355
|
|
1630
1630
|
esphome/components/lvgl/widgets/lv_bar.py,sha256=FbDNEL9huqeKGiE_nqyoB6BVPOCEsQd3YgO5m07SI3M,2274
|
|
1631
|
-
esphome/components/lvgl/widgets/meter.py,sha256=
|
|
1631
|
+
esphome/components/lvgl/widgets/meter.py,sha256=ptMHG6LCky1jwtUcGODek0W94Ju9PWGPbkg91l3NyKA,11520
|
|
1632
1632
|
esphome/components/lvgl/widgets/msgbox.py,sha256=i98hz6RKJRMWQ4wz9T1qOHzmdmZ6yHDvHDeJ1T9_Gt0,5335
|
|
1633
1633
|
esphome/components/lvgl/widgets/obj.py,sha256=6lKIfsdKLWIE8u_Lw0X0ChMCKcV8EZYF8WQKQEBCKYU,439
|
|
1634
1634
|
esphome/components/lvgl/widgets/page.py,sha256=W7kQ1xfJLRMdy6wFKoA6tZxUXNKGBZWrjMw9OZRfLqA,5870
|
|
@@ -2944,7 +2944,7 @@ esphome/components/sts3x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
2944
2944
|
esphome/components/sts3x/sensor.py,sha256=L3KzexM-oB7ZYLkyfuL2tGcr374xbMEtgh4qCC-O6RA,921
|
|
2945
2945
|
esphome/components/sts3x/sts3x.cpp,sha256=61I1NYl4UYc6H2LF3FCB9QJ_JV9QRFgIDXAWDuNxK7E,2080
|
|
2946
2946
|
esphome/components/sts3x/sts3x.h,sha256=MDc_-wFonrh4r4FKwm4OYT5nZiTDZKO0-gmadE-cvjA,610
|
|
2947
|
-
esphome/components/substitutions/__init__.py,sha256=
|
|
2947
|
+
esphome/components/substitutions/__init__.py,sha256=jTAm7n58NxQAfzszdlOfOIQXpAAexQ8oVHnq2Xl_NIU,7214
|
|
2948
2948
|
esphome/components/substitutions/jinja.py,sha256=knHsEQPpo2UqNS5r65CiqULoVrGp8lw3XY1_DrDzwO0,3793
|
|
2949
2949
|
esphome/components/sun/__init__.py,sha256=52Yrvmk4zJpfX3NdSaCsg3ZxXOCmY4W5cR7F5zbOzhs,5327
|
|
2950
2950
|
esphome/components/sun/sun.cpp,sha256=YEe2SsF4OEmK27NQRZ0tYBv_n5vnJd-6HA45GDTxqa8,11874
|
|
@@ -3600,7 +3600,7 @@ esphome/core/automation.h,sha256=UgoI-ebaL5YJ_cyRB-3ijHQxzt4cTbTaWw4eRGoOwBI,862
|
|
|
3600
3600
|
esphome/core/base_automation.h,sha256=wAJu_yy1tDjwARdCZ312t7anzR9dBF_54qiXm1sy-_g,11216
|
|
3601
3601
|
esphome/core/color.cpp,sha256=gcFk-FTJzvrePzqgA5gvsXv8iWct0ykdVGx_ivrilR0,254
|
|
3602
3602
|
esphome/core/color.h,sha256=K2iTTKgOgXcCm61S1f2P_k7YheKP654gUubWq5X0FhE,6647
|
|
3603
|
-
esphome/core/component.cpp,sha256
|
|
3603
|
+
esphome/core/component.cpp,sha256=HooDcPKuf7AzdOJuUAB72ecKCMqWUNGH5Z9qVVeE1OA,16722
|
|
3604
3604
|
esphome/core/component.h,sha256=Z1TYaQDGkoddm75zaPTQc_C0STpCCl200oDZsoc6yAk,17985
|
|
3605
3605
|
esphome/core/component_iterator.cpp,sha256=VD_bSv474jQlKctKIzYSPUK8zpm01PJ1Fymix1c92Jg,11121
|
|
3606
3606
|
esphome/core/component_iterator.h,sha256=-j9hGIY8mCmgq2nLuoG_IFY0lSoHkImXMEVtUKYpngA,3791
|
|
@@ -3618,7 +3618,7 @@ esphome/core/event_pool.h,sha256=TjA2sl_s5ScKC9d_5nssvImbPkpJJUWo5DDZwCaZ0QU,245
|
|
|
3618
3618
|
esphome/core/gpio.h,sha256=kLkCnPxu4_1CsLR4BI_Baj1lDGoRIh8uubbwsIkJPIA,2575
|
|
3619
3619
|
esphome/core/hal.h,sha256=Le0-vtdDylYCaE9i4yvrv5-Y5PB5xoL3PM2FfMJsIeA,970
|
|
3620
3620
|
esphome/core/helpers.cpp,sha256=eyOYJWmMEcdX8dJ3RoIcl6MeOmc0C3cTPafZDTzQ4OM,20961
|
|
3621
|
-
esphome/core/helpers.h,sha256=
|
|
3621
|
+
esphome/core/helpers.h,sha256=jhoCkhTlwqSVOXVNWK7RnIXgJQiu9QvbsZV-WmPWOTY,33362
|
|
3622
3622
|
esphome/core/lock_free_queue.h,sha256=S6QMMT8L8rG_qOzkTHWqcP9amok99hFhXGlZoj8C4XU,5104
|
|
3623
3623
|
esphome/core/log.cpp,sha256=cc6JIMRlIEk7lCQa6JFrL6bTBZ89xWNLwf26AFNzKC0,1625
|
|
3624
3624
|
esphome/core/log.h,sha256=Fb0_ORK0q-WV0i49gzb8i9_C38RUe8VILIdbu1Bel5M,6627
|
|
@@ -3655,9 +3655,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
|
|
|
3655
3655
|
esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
|
|
3656
3656
|
esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
|
|
3657
3657
|
esphome/dashboard/util/text.py,sha256=wwFtORlvHjsYkqb68IT-772LHAhWxT4OtnkIcPICQB0,317
|
|
3658
|
-
esphome-2025.7.
|
|
3659
|
-
esphome-2025.7.
|
|
3660
|
-
esphome-2025.7.
|
|
3661
|
-
esphome-2025.7.
|
|
3662
|
-
esphome-2025.7.
|
|
3663
|
-
esphome-2025.7.
|
|
3658
|
+
esphome-2025.7.0b3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
|
3659
|
+
esphome-2025.7.0b3.dist-info/METADATA,sha256=W0Ip6b7lVsdNwuH3YrV7gqVmt36KiktFKGIoFas9w6I,3707
|
|
3660
|
+
esphome-2025.7.0b3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
3661
|
+
esphome-2025.7.0b3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
|
3662
|
+
esphome-2025.7.0b3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
|
3663
|
+
esphome-2025.7.0b3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|