esphome 2024.11.0b4__py3-none-any.whl → 2024.11.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/components/binary_sensor/binary_sensor.h +1 -1
- esphome/components/esphome/ota/__init__.py +4 -4
- esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +6 -5
- esphome/components/http_request/http_request.h +1 -1
- esphome/components/lvgl/__init__.py +1 -1
- esphome/components/lvgl/lv_validation.py +2 -1
- esphome/components/lvgl/schemas.py +1 -0
- esphome/components/lvgl/widgets/line.py +4 -1
- esphome/components/matrix_keypad/binary_sensor/matrix_keypad_binary_sensor.h +1 -1
- esphome/components/modbus/modbus.cpp +2 -1
- esphome/components/modbus_controller/__init__.py +1 -1
- esphome/components/modbus_controller/modbus_controller.cpp +54 -18
- esphome/components/ota/__init__.py +1 -0
- esphome/components/qspi_dbi/models.py +3 -0
- esphome/components/qspi_dbi/qspi_dbi.cpp +0 -1
- esphome/components/rtttl/rtttl.h +1 -7
- esphome/components/speaker/__init__.py +1 -0
- esphome/components/status/binary_sensor.py +2 -0
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +20 -4
- esphome/components/wifi/wifi_component_esp8266.cpp +20 -4
- esphome/components/wifi/wifi_component_esp_idf.cpp +20 -4
- esphome/const.py +1 -1
- esphome/core/config.py +3 -0
- esphome/dashboard/core.py +1 -1
- esphome/dashboard/web_server.py +3 -2
- {esphome-2024.11.0b4.dist-info → esphome-2024.11.2.dist-info}/METADATA +1 -1
- {esphome-2024.11.0b4.dist-info → esphome-2024.11.2.dist-info}/RECORD +31 -31
- {esphome-2024.11.0b4.dist-info → esphome-2024.11.2.dist-info}/LICENSE +0 -0
- {esphome-2024.11.0b4.dist-info → esphome-2024.11.2.dist-info}/WHEEL +0 -0
- {esphome-2024.11.0b4.dist-info → esphome-2024.11.2.dist-info}/entry_points.txt +0 -0
- {esphome-2024.11.0b4.dist-info → esphome-2024.11.2.dist-info}/top_level.txt +0 -0
@@ -58,7 +58,7 @@ class BinarySensor : public EntityBase, public EntityBase_DeviceClass {
|
|
58
58
|
void publish_initial_state(bool state);
|
59
59
|
|
60
60
|
/// The current reported state of the binary sensor.
|
61
|
-
bool state;
|
61
|
+
bool state{false};
|
62
62
|
|
63
63
|
void add_filter(Filter *filter);
|
64
64
|
void add_filters(const std::vector<Filter *> &filters);
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import logging
|
2
2
|
|
3
3
|
import esphome.codegen as cg
|
4
|
-
|
5
|
-
import esphome.final_validate as fv
|
6
|
-
from esphome.components.ota import BASE_OTA_SCHEMA, ota_to_code, OTAComponent
|
4
|
+
from esphome.components.ota import BASE_OTA_SCHEMA, OTAComponent, ota_to_code
|
7
5
|
from esphome.config_helpers import merge_config
|
6
|
+
import esphome.config_validation as cv
|
8
7
|
from esphome.const import (
|
9
8
|
CONF_ESPHOME,
|
10
9
|
CONF_ID,
|
@@ -18,6 +17,7 @@ from esphome.const import (
|
|
18
17
|
CONF_VERSION,
|
19
18
|
)
|
20
19
|
from esphome.core import coroutine_with_priority
|
20
|
+
import esphome.final_validate as fv
|
21
21
|
|
22
22
|
_LOGGER = logging.getLogger(__name__)
|
23
23
|
|
@@ -124,7 +124,6 @@ FINAL_VALIDATE_SCHEMA = ota_esphome_final_validate
|
|
124
124
|
@coroutine_with_priority(52.0)
|
125
125
|
async def to_code(config):
|
126
126
|
var = cg.new_Pvariable(config[CONF_ID])
|
127
|
-
await ota_to_code(var, config)
|
128
127
|
cg.add(var.set_port(config[CONF_PORT]))
|
129
128
|
if CONF_PASSWORD in config:
|
130
129
|
cg.add(var.set_auth_password(config[CONF_PASSWORD]))
|
@@ -132,3 +131,4 @@ async def to_code(config):
|
|
132
131
|
cg.add_define("USE_OTA_VERSION", config[CONF_VERSION])
|
133
132
|
|
134
133
|
await cg.register_component(var, config)
|
134
|
+
await ota_to_code(var, config)
|
@@ -15,7 +15,7 @@ static const char *const TAG = "honeywellabp2";
|
|
15
15
|
void HONEYWELLABP2Sensor::read_sensor_data() {
|
16
16
|
if (this->read(raw_data_, 7) != i2c::ERROR_OK) {
|
17
17
|
ESP_LOGE(TAG, "Communication with ABP2 failed!");
|
18
|
-
this->
|
18
|
+
this->status_set_warning("couldn't read sensor data");
|
19
19
|
return;
|
20
20
|
}
|
21
21
|
float press_counts = encode_uint24(raw_data_[1], raw_data_[2], raw_data_[3]); // calculate digital pressure counts
|
@@ -25,12 +25,13 @@ void HONEYWELLABP2Sensor::read_sensor_data() {
|
|
25
25
|
(this->max_pressure_ - this->min_pressure_)) +
|
26
26
|
this->min_pressure_;
|
27
27
|
this->last_temperature_ = (temp_counts * 200 / 16777215) - 50;
|
28
|
+
this->status_clear_warning();
|
28
29
|
}
|
29
30
|
|
30
31
|
void HONEYWELLABP2Sensor::start_measurement() {
|
31
32
|
if (this->write(i2c_cmd_, 3) != i2c::ERROR_OK) {
|
32
33
|
ESP_LOGE(TAG, "Communication with ABP2 failed!");
|
33
|
-
this->
|
34
|
+
this->status_set_warning("couldn't start measurement");
|
34
35
|
return;
|
35
36
|
}
|
36
37
|
this->measurement_running_ = true;
|
@@ -39,7 +40,7 @@ void HONEYWELLABP2Sensor::start_measurement() {
|
|
39
40
|
bool HONEYWELLABP2Sensor::is_measurement_ready() {
|
40
41
|
if (this->read(raw_data_, 1) != i2c::ERROR_OK) {
|
41
42
|
ESP_LOGE(TAG, "Communication with ABP2 failed!");
|
42
|
-
this->
|
43
|
+
this->status_set_warning("couldn't check measurement");
|
43
44
|
return false;
|
44
45
|
}
|
45
46
|
if ((raw_data_[0] & (0x1 << STATUS_BIT_BUSY)) > 0) {
|
@@ -52,7 +53,7 @@ bool HONEYWELLABP2Sensor::is_measurement_ready() {
|
|
52
53
|
void HONEYWELLABP2Sensor::measurement_timeout() {
|
53
54
|
ESP_LOGE(TAG, "Timeout!");
|
54
55
|
this->measurement_running_ = false;
|
55
|
-
this->
|
56
|
+
this->status_set_warning("measurement timed out");
|
56
57
|
}
|
57
58
|
|
58
59
|
float HONEYWELLABP2Sensor::get_pressure() { return this->last_pressure_; }
|
@@ -79,7 +80,7 @@ void HONEYWELLABP2Sensor::update() {
|
|
79
80
|
ESP_LOGV(TAG, "Update Honeywell ABP2 Sensor");
|
80
81
|
|
81
82
|
this->start_measurement();
|
82
|
-
this->set_timeout("meas_timeout",
|
83
|
+
this->set_timeout("meas_timeout", 100, [this] { this->measurement_timeout(); });
|
83
84
|
}
|
84
85
|
|
85
86
|
void HONEYWELLABP2Sensor::dump_config() {
|
@@ -322,8 +322,8 @@ async def to_code(configs):
|
|
322
322
|
await encoders_to_code(lv_component, config, default_group)
|
323
323
|
await keypads_to_code(lv_component, config, default_group)
|
324
324
|
await theme_to_code(config)
|
325
|
-
await styles_to_code(config)
|
326
325
|
await gradients_to_code(config)
|
326
|
+
await styles_to_code(config)
|
327
327
|
await set_obj_properties(lv_scr_act, config)
|
328
328
|
await add_widgets(lv_scr_act, config)
|
329
329
|
await add_pages(lv_component, config)
|
@@ -30,7 +30,7 @@ from .defines import (
|
|
30
30
|
call_lambda,
|
31
31
|
literal,
|
32
32
|
)
|
33
|
-
from .helpers import esphome_fonts_used, lv_fonts_used, requires_component
|
33
|
+
from .helpers import add_lv_use, esphome_fonts_used, lv_fonts_used, requires_component
|
34
34
|
from .types import lv_font_t, lv_gradient_t, lv_img_t
|
35
35
|
|
36
36
|
opacity_consts = LvConstant("LV_OPA_", "TRANSP", "COVER")
|
@@ -326,6 +326,7 @@ def image_validator(value):
|
|
326
326
|
value = requires_component("image")(value)
|
327
327
|
value = cv.use_id(Image_)(value)
|
328
328
|
lv_images_used.add(value)
|
329
|
+
add_lv_use("img", "label")
|
329
330
|
return value
|
330
331
|
|
331
332
|
|
@@ -39,7 +39,10 @@ LINE_SCHEMA = {
|
|
39
39
|
class LineType(WidgetType):
|
40
40
|
def __init__(self):
|
41
41
|
super().__init__(
|
42
|
-
CONF_LINE,
|
42
|
+
CONF_LINE,
|
43
|
+
LvType("lv_line_t"),
|
44
|
+
(CONF_MAIN,),
|
45
|
+
LINE_SCHEMA,
|
43
46
|
)
|
44
47
|
|
45
48
|
async def to_code(self, w: Widget, config):
|
@@ -6,7 +6,7 @@
|
|
6
6
|
namespace esphome {
|
7
7
|
namespace matrix_keypad {
|
8
8
|
|
9
|
-
class MatrixKeypadBinarySensor : public MatrixKeypadListener, public binary_sensor::
|
9
|
+
class MatrixKeypadBinarySensor : public MatrixKeypadListener, public binary_sensor::BinarySensorInitiallyOff {
|
10
10
|
public:
|
11
11
|
MatrixKeypadBinarySensor(uint8_t key) : has_key_(true), key_(key){};
|
12
12
|
MatrixKeypadBinarySensor(const char *key) : has_key_(true), key_((uint8_t) key[0]){};
|
@@ -38,8 +38,9 @@ void Modbus::loop() {
|
|
38
38
|
|
39
39
|
// stop blocking new send commands after sent_wait_time_ ms after response received
|
40
40
|
if (now - this->last_send_ > send_wait_time_) {
|
41
|
-
if (waiting_for_response > 0)
|
41
|
+
if (waiting_for_response > 0) {
|
42
42
|
ESP_LOGV(TAG, "Stop waiting for response from %d", waiting_for_response);
|
43
|
+
}
|
43
44
|
waiting_for_response = 0;
|
44
45
|
}
|
45
46
|
}
|
@@ -163,7 +163,7 @@ CONFIG_SCHEMA = cv.All(
|
|
163
163
|
),
|
164
164
|
cv.Optional(CONF_ON_OFFLINE): automation.validate_automation(
|
165
165
|
{
|
166
|
-
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
166
|
+
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(ModbusOfflineTrigger),
|
167
167
|
}
|
168
168
|
),
|
169
169
|
}
|
@@ -622,51 +622,87 @@ int64_t payload_to_number(const std::vector<uint8_t> &data, SensorValueType sens
|
|
622
622
|
uint32_t bitmask) {
|
623
623
|
int64_t value = 0; // int64_t because it can hold signed and unsigned 32 bits
|
624
624
|
|
625
|
+
size_t size = data.size() - offset;
|
626
|
+
bool error = false;
|
625
627
|
switch (sensor_value_type) {
|
626
628
|
case SensorValueType::U_WORD:
|
627
|
-
|
629
|
+
if (size >= 2) {
|
630
|
+
value = mask_and_shift_by_rightbit(get_data<uint16_t>(data, offset), bitmask); // default is 0xFFFF ;
|
631
|
+
} else {
|
632
|
+
error = true;
|
633
|
+
}
|
628
634
|
break;
|
629
635
|
case SensorValueType::U_DWORD:
|
630
636
|
case SensorValueType::FP32:
|
631
|
-
|
632
|
-
|
637
|
+
if (size >= 4) {
|
638
|
+
value = get_data<uint32_t>(data, offset);
|
639
|
+
value = mask_and_shift_by_rightbit((uint32_t) value, bitmask);
|
640
|
+
} else {
|
641
|
+
error = true;
|
642
|
+
}
|
633
643
|
break;
|
634
644
|
case SensorValueType::U_DWORD_R:
|
635
645
|
case SensorValueType::FP32_R:
|
636
|
-
|
637
|
-
|
638
|
-
|
646
|
+
if (size >= 4) {
|
647
|
+
value = get_data<uint32_t>(data, offset);
|
648
|
+
value = static_cast<uint32_t>(value & 0xFFFF) << 16 | (value & 0xFFFF0000) >> 16;
|
649
|
+
value = mask_and_shift_by_rightbit((uint32_t) value, bitmask);
|
650
|
+
} else {
|
651
|
+
error = true;
|
652
|
+
}
|
639
653
|
break;
|
640
654
|
case SensorValueType::S_WORD:
|
641
|
-
|
642
|
-
|
655
|
+
if (size >= 2) {
|
656
|
+
value = mask_and_shift_by_rightbit(get_data<int16_t>(data, offset),
|
657
|
+
bitmask); // default is 0xFFFF ;
|
658
|
+
} else {
|
659
|
+
error = true;
|
660
|
+
}
|
643
661
|
break;
|
644
662
|
case SensorValueType::S_DWORD:
|
645
|
-
|
663
|
+
if (size >= 4) {
|
664
|
+
value = mask_and_shift_by_rightbit(get_data<int32_t>(data, offset), bitmask);
|
665
|
+
} else {
|
666
|
+
error = true;
|
667
|
+
}
|
646
668
|
break;
|
647
669
|
case SensorValueType::S_DWORD_R: {
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
670
|
+
if (size >= 4) {
|
671
|
+
value = get_data<uint32_t>(data, offset);
|
672
|
+
// Currently the high word is at the low position
|
673
|
+
// the sign bit is therefore at low before the switch
|
674
|
+
uint32_t sign_bit = (value & 0x8000) << 16;
|
675
|
+
value = mask_and_shift_by_rightbit(
|
676
|
+
static_cast<int32_t>(((value & 0x7FFF) << 16 | (value & 0xFFFF0000) >> 16) | sign_bit), bitmask);
|
677
|
+
} else {
|
678
|
+
error = true;
|
679
|
+
}
|
654
680
|
} break;
|
655
681
|
case SensorValueType::U_QWORD:
|
656
682
|
case SensorValueType::S_QWORD:
|
657
683
|
// Ignore bitmask for QWORD
|
658
|
-
|
684
|
+
if (size >= 8) {
|
685
|
+
value = get_data<uint64_t>(data, offset);
|
686
|
+
} else {
|
687
|
+
error = true;
|
688
|
+
}
|
659
689
|
break;
|
660
690
|
case SensorValueType::U_QWORD_R:
|
661
691
|
case SensorValueType::S_QWORD_R: {
|
662
692
|
// Ignore bitmask for QWORD
|
663
|
-
|
664
|
-
|
693
|
+
if (size >= 8) {
|
694
|
+
uint64_t tmp = get_data<uint64_t>(data, offset);
|
695
|
+
value = (tmp << 48) | (tmp >> 48) | ((tmp & 0xFFFF0000) << 16) | ((tmp >> 16) & 0xFFFF0000);
|
696
|
+
} else {
|
697
|
+
error = true;
|
698
|
+
}
|
665
699
|
} break;
|
666
700
|
case SensorValueType::RAW:
|
667
701
|
default:
|
668
702
|
break;
|
669
703
|
}
|
704
|
+
if (error)
|
705
|
+
ESP_LOGE(TAG, "not enough data for value");
|
670
706
|
return value;
|
671
707
|
}
|
672
708
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Commands
|
2
2
|
SW_RESET_CMD = 0x01
|
3
3
|
SLEEP_OUT = 0x11
|
4
|
+
NORON = 0x13
|
4
5
|
INVERT_OFF = 0x20
|
5
6
|
INVERT_ON = 0x21
|
6
7
|
ALL_ON = 0x23
|
@@ -55,6 +56,8 @@ chip.cmd(PAGESEL, 0x00)
|
|
55
56
|
chip.cmd(0xC2, 0x00)
|
56
57
|
chip.delay(10)
|
57
58
|
chip.cmd(TEON, 0x00)
|
59
|
+
chip.cmd(PIXFMT, 0x55)
|
60
|
+
chip.cmd(NORON)
|
58
61
|
|
59
62
|
chip = DriverChip("AXS15231")
|
60
63
|
chip.cmd(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5)
|
esphome/components/rtttl/rtttl.h
CHANGED
@@ -40,13 +40,7 @@ class Rtttl : public Component {
|
|
40
40
|
void set_speaker(speaker::Speaker *speaker) { this->speaker_ = speaker; }
|
41
41
|
#endif
|
42
42
|
float get_gain() { return gain_; }
|
43
|
-
void set_gain(float gain) {
|
44
|
-
if (gain < 0.1f)
|
45
|
-
gain = 0.1f;
|
46
|
-
if (gain > 1.0f)
|
47
|
-
gain = 1.0f;
|
48
|
-
this->gain_ = gain;
|
49
|
-
}
|
43
|
+
void set_gain(float gain) { this->gain_ = clamp(gain, 0.0f, 1.0f); }
|
50
44
|
void play(std::string rtttl);
|
51
45
|
void stop();
|
52
46
|
void dump_config() override;
|
@@ -137,8 +137,16 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
|
|
137
137
|
// https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html#_CPPv417wifi_sta_config_t
|
138
138
|
wifi_config_t conf;
|
139
139
|
memset(&conf, 0, sizeof(conf));
|
140
|
-
|
141
|
-
|
140
|
+
if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) {
|
141
|
+
ESP_LOGE(TAG, "SSID is too long");
|
142
|
+
return false;
|
143
|
+
}
|
144
|
+
if (ap.get_password().size() > sizeof(conf.sta.password)) {
|
145
|
+
ESP_LOGE(TAG, "password is too long");
|
146
|
+
return false;
|
147
|
+
}
|
148
|
+
memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
|
149
|
+
memcpy(reinterpret_cast<char *>(conf.sta.password), ap.get_password().c_str(), ap.get_password().size());
|
142
150
|
|
143
151
|
// The weakest authmode to accept in the fast scan mode
|
144
152
|
if (ap.get_password().empty()) {
|
@@ -746,7 +754,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
|
|
746
754
|
|
747
755
|
wifi_config_t conf;
|
748
756
|
memset(&conf, 0, sizeof(conf));
|
749
|
-
|
757
|
+
if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) {
|
758
|
+
ESP_LOGE(TAG, "AP SSID is too long");
|
759
|
+
return false;
|
760
|
+
}
|
761
|
+
memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
|
750
762
|
conf.ap.channel = ap.get_channel().value_or(1);
|
751
763
|
conf.ap.ssid_hidden = ap.get_ssid().size();
|
752
764
|
conf.ap.max_connection = 5;
|
@@ -757,7 +769,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
|
|
757
769
|
*conf.ap.password = 0;
|
758
770
|
} else {
|
759
771
|
conf.ap.authmode = WIFI_AUTH_WPA2_PSK;
|
760
|
-
|
772
|
+
if (ap.get_password().size() > sizeof(conf.ap.password)) {
|
773
|
+
ESP_LOGE(TAG, "AP password is too long");
|
774
|
+
return false;
|
775
|
+
}
|
776
|
+
memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size());
|
761
777
|
}
|
762
778
|
|
763
779
|
// pairwise cipher of SoftAP, group cipher will be derived using this.
|
@@ -236,8 +236,16 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
|
|
236
236
|
|
237
237
|
struct station_config conf {};
|
238
238
|
memset(&conf, 0, sizeof(conf));
|
239
|
-
|
240
|
-
|
239
|
+
if (ap.get_ssid().size() > sizeof(conf.ssid)) {
|
240
|
+
ESP_LOGE(TAG, "SSID is too long");
|
241
|
+
return false;
|
242
|
+
}
|
243
|
+
if (ap.get_password().size() > sizeof(conf.password)) {
|
244
|
+
ESP_LOGE(TAG, "password is too long");
|
245
|
+
return false;
|
246
|
+
}
|
247
|
+
memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
|
248
|
+
memcpy(reinterpret_cast<char *>(conf.password), ap.get_password().c_str(), ap.get_password().size());
|
241
249
|
|
242
250
|
if (ap.get_bssid().has_value()) {
|
243
251
|
conf.bssid_set = 1;
|
@@ -775,7 +783,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
|
|
775
783
|
return false;
|
776
784
|
|
777
785
|
struct softap_config conf {};
|
778
|
-
|
786
|
+
if (ap.get_ssid().size() > sizeof(conf.ssid)) {
|
787
|
+
ESP_LOGE(TAG, "AP SSID is too long");
|
788
|
+
return false;
|
789
|
+
}
|
790
|
+
memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
|
779
791
|
conf.ssid_len = static_cast<uint8>(ap.get_ssid().size());
|
780
792
|
conf.channel = ap.get_channel().value_or(1);
|
781
793
|
conf.ssid_hidden = ap.get_hidden();
|
@@ -787,7 +799,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
|
|
787
799
|
*conf.password = 0;
|
788
800
|
} else {
|
789
801
|
conf.authmode = AUTH_WPA2_PSK;
|
790
|
-
|
802
|
+
if (ap.get_password().size() > sizeof(conf.password)) {
|
803
|
+
ESP_LOGE(TAG, "AP password is too long");
|
804
|
+
return false;
|
805
|
+
}
|
806
|
+
memcpy(reinterpret_cast<char *>(conf.password), ap.get_password().c_str(), ap.get_password().size());
|
791
807
|
}
|
792
808
|
|
793
809
|
ETS_UART_INTR_DISABLE();
|
@@ -289,8 +289,16 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
|
|
289
289
|
// https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html#_CPPv417wifi_sta_config_t
|
290
290
|
wifi_config_t conf;
|
291
291
|
memset(&conf, 0, sizeof(conf));
|
292
|
-
|
293
|
-
|
292
|
+
if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) {
|
293
|
+
ESP_LOGE(TAG, "SSID is too long");
|
294
|
+
return false;
|
295
|
+
}
|
296
|
+
if (ap.get_password().size() > sizeof(conf.sta.password)) {
|
297
|
+
ESP_LOGE(TAG, "password is too long");
|
298
|
+
return false;
|
299
|
+
}
|
300
|
+
memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
|
301
|
+
memcpy(reinterpret_cast<char *>(conf.sta.password), ap.get_password().c_str(), ap.get_password().size());
|
294
302
|
|
295
303
|
// The weakest authmode to accept in the fast scan mode
|
296
304
|
if (ap.get_password().empty()) {
|
@@ -902,7 +910,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
|
|
902
910
|
|
903
911
|
wifi_config_t conf;
|
904
912
|
memset(&conf, 0, sizeof(conf));
|
905
|
-
|
913
|
+
if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) {
|
914
|
+
ESP_LOGE(TAG, "AP SSID is too long");
|
915
|
+
return false;
|
916
|
+
}
|
917
|
+
memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
|
906
918
|
conf.ap.channel = ap.get_channel().value_or(1);
|
907
919
|
conf.ap.ssid_hidden = ap.get_ssid().size();
|
908
920
|
conf.ap.max_connection = 5;
|
@@ -913,7 +925,11 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
|
|
913
925
|
*conf.ap.password = 0;
|
914
926
|
} else {
|
915
927
|
conf.ap.authmode = WIFI_AUTH_WPA2_PSK;
|
916
|
-
|
928
|
+
if (ap.get_password().size() > sizeof(conf.ap.password)) {
|
929
|
+
ESP_LOGE(TAG, "AP password is too long");
|
930
|
+
return false;
|
931
|
+
}
|
932
|
+
memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size());
|
917
933
|
}
|
918
934
|
|
919
935
|
// pairwise cipher of SoftAP, group cipher will be derived using this.
|
esphome/const.py
CHANGED
esphome/core/config.py
CHANGED
@@ -184,6 +184,9 @@ PRELOAD_CONFIG_SCHEMA = cv.Schema(
|
|
184
184
|
cv.Optional(CONF_ESP8266_RESTORE_FROM_FLASH): cv.valid,
|
185
185
|
cv.Optional(CONF_BOARD_FLASH_MODE): cv.valid,
|
186
186
|
cv.Optional(CONF_ARDUINO_VERSION): cv.valid,
|
187
|
+
cv.Optional(CONF_MIN_VERSION, default=ESPHOME_VERSION): cv.All(
|
188
|
+
cv.version_number, cv.validate_esphome_version
|
189
|
+
),
|
187
190
|
},
|
188
191
|
extra=cv.ALLOW_EXTRA,
|
189
192
|
)
|
esphome/dashboard/core.py
CHANGED
@@ -103,7 +103,7 @@ class ESPHomeDashboard:
|
|
103
103
|
self.loop = asyncio.get_running_loop()
|
104
104
|
self.ping_request = asyncio.Event()
|
105
105
|
self.entries = DashboardEntries(self)
|
106
|
-
self.load_ignored_devices
|
106
|
+
await self.loop.run_in_executor(None, self.load_ignored_devices)
|
107
107
|
|
108
108
|
def load_ignored_devices(self) -> None:
|
109
109
|
storage_path = Path(ignored_devices_storage_path())
|
esphome/dashboard/web_server.py
CHANGED
@@ -544,7 +544,7 @@ class ImportRequestHandler(BaseHandler):
|
|
544
544
|
|
545
545
|
class IgnoreDeviceRequestHandler(BaseHandler):
|
546
546
|
@authenticated
|
547
|
-
def post(self) -> None:
|
547
|
+
async def post(self) -> None:
|
548
548
|
dashboard = DASHBOARD
|
549
549
|
try:
|
550
550
|
args = json.loads(self.request.body.decode())
|
@@ -576,7 +576,8 @@ class IgnoreDeviceRequestHandler(BaseHandler):
|
|
576
576
|
else:
|
577
577
|
dashboard.ignored_devices.discard(ignored_device.device_name)
|
578
578
|
|
579
|
-
|
579
|
+
loop = asyncio.get_running_loop()
|
580
|
+
await loop.run_in_executor(None, dashboard.save_ignored_devices)
|
580
581
|
|
581
582
|
self.set_status(204)
|
582
583
|
self.finish()
|
@@ -5,7 +5,7 @@ esphome/codegen.py,sha256=GePHUM7xdXb_Pil59SHVsXg2F4VBPgkH-Fz2PDX8Z54,1873
|
|
5
5
|
esphome/config.py,sha256=nOiXPZv8wHtmytkNlGcewp0uuJd9G5rRjkqevYXtjzo,39618
|
6
6
|
esphome/config_helpers.py,sha256=MKf_wzO35nn41FvigXE0iYKDslPgL2ruf8R-EPtTT2I,3256
|
7
7
|
esphome/config_validation.py,sha256=RaF7hC9-VwtWA8C6vYaKVzyz4XqeoOOajr3EJDnaBaI,66311
|
8
|
-
esphome/const.py,sha256=
|
8
|
+
esphome/const.py,sha256=oHBWQlbPybxl4kgkm3InPSx9FK0v8rqQfL6FxBBBX_Y,40259
|
9
9
|
esphome/coroutine.py,sha256=j_14z8dIIzIBeuNO30D4c1RJvMMt1xZFZ58Evd-EvJA,9344
|
10
10
|
esphome/cpp_generator.py,sha256=lXPXHYUsFIvBSAoZ93mXYlGcXYg5L18nTtYGHE4_rr8,31203
|
11
11
|
esphome/cpp_helpers.py,sha256=6C2vNbOIhZKi43xRVlk5hp9GfshfBn-rc5D_ZFUEYaE,4801
|
@@ -301,7 +301,7 @@ esphome/components/binary_sensor/__init__.py,sha256=B9P32IzsFQIAKZrsWJi4hd28PVNV
|
|
301
301
|
esphome/components/binary_sensor/automation.cpp,sha256=oTQ2zjqYwNhJiY6IQ7qBQgJ3XUz2TNZqfn6TqEZ-_l0,4201
|
302
302
|
esphome/components/binary_sensor/automation.h,sha256=5W8ExbRo-zbiwrjPXmYJdDmpi39x76XP8ae_Vjmxprg,4611
|
303
303
|
esphome/components/binary_sensor/binary_sensor.cpp,sha256=6H8ycTYJO8Wpr_T8-3a5LUK4FuFFtmR_1awMAkp9lWY,1924
|
304
|
-
esphome/components/binary_sensor/binary_sensor.h,sha256=
|
304
|
+
esphome/components/binary_sensor/binary_sensor.h,sha256=u9tZYhlp-27ZT480Uq2yJBoNC6gTLepFmMfD0JLTM-0,2727
|
305
305
|
esphome/components/binary_sensor/filter.cpp,sha256=Gc45eMmI-TS7gzCF_PhtPwJJjb7NBckWSfY_H1DK-xI,4240
|
306
306
|
esphome/components/binary_sensor/filter.h,sha256=ko00IiyMD5g2lRpPNZb36czAHRy_iK5YcBW6UQPZHz0,2968
|
307
307
|
esphome/components/binary_sensor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -868,7 +868,7 @@ esphome/components/esp8266_pwm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
868
868
|
esphome/components/esp8266_pwm/esp8266_pwm.cpp,sha256=c4_NPBOfBdguJghAdx7d9cwtyJscVEhWD4_Xkavbmfw,1703
|
869
869
|
esphome/components/esp8266_pwm/esp8266_pwm.h,sha256=YLObIixl3YFDx3biu1TVfH6qyOFFts-VGT4pxgN0PHw,1386
|
870
870
|
esphome/components/esp8266_pwm/output.py,sha256=7qgJT-O8nr0HjFajwbw2k_DlXwG_SLfP4ma82-GF-ew,2062
|
871
|
-
esphome/components/esphome/ota/__init__.py,sha256=
|
871
|
+
esphome/components/esphome/ota/__init__.py,sha256=8TRsZ2HUPIGzaWZ2iHCRq9Ey_h-gWgheoROTQydkxfo,4851
|
872
872
|
esphome/components/esphome/ota/ota_esphome.cpp,sha256=znmin_DY2kH_D0ijlfDI7unzjGHl6vkxvk7Ksv6u--U,12355
|
873
873
|
esphome/components/esphome/ota/ota_esphome.h,sha256=MHd6DPavp08gfb-bcttjCiv3U60XMSTMDi2nPcN8Y7s,1140
|
874
874
|
esphome/components/ethernet/__init__.py,sha256=OTxnBMnP_mjB3SUJsVcTDvxQqTNmOaF4LXamQx9EAyI,11646
|
@@ -1127,7 +1127,7 @@ esphome/components/honeywellabp/honeywellabp.cpp,sha256=ZL8OUA2VyjcuFga9Rxw1c0ko
|
|
1127
1127
|
esphome/components/honeywellabp/honeywellabp.h,sha256=yy0ATFdIV4YI_EaCSXKgeRaOPjyzxzch35RrCLthM2Q,1809
|
1128
1128
|
esphome/components/honeywellabp/sensor.py,sha256=FXe0LjBwUElNKSrsob1Jfx1LJEXtfniqztA34tpZ62Q,2233
|
1129
1129
|
esphome/components/honeywellabp2_i2c/__init__.py,sha256=q4EX44dXWVPn_6bcR0pbzsGWt3AGvtFshH-O_T8YfOs,59
|
1130
|
-
esphome/components/honeywellabp2_i2c/honeywellabp2.cpp,sha256=
|
1130
|
+
esphome/components/honeywellabp2_i2c/honeywellabp2.cpp,sha256=Dn8vtVDQxJ4RI0sd6e3xBKZlf7pa0ZqTdM2sDAWJwnA,3602
|
1131
1131
|
esphome/components/honeywellabp2_i2c/honeywellabp2.h,sha256=oKx_nWi07fYioDxWPcNKtzDVKiyqBTvDIdREJoaHfMY,2140
|
1132
1132
|
esphome/components/honeywellabp2_i2c/sensor.py,sha256=RepjqSYlTrq-IgTMhB-y1oBkjAPdEm2uRiCH_zWDMeU,2574
|
1133
1133
|
esphome/components/host/__init__.py,sha256=GXt0D2oYrLC10UJKXle3oZtoEc4HRYDKHVO-pmWXFZA,1190
|
@@ -1150,7 +1150,7 @@ esphome/components/hte501/hte501.h,sha256=EY-aX8KwudhZPQ3tyRzSU2hPFUzFkmAhrGdhAX
|
|
1150
1150
|
esphome/components/hte501/sensor.py,sha256=H7cfhfjQ0lyUgHABpoyiKOaj_f2qhN7nDW-tTj2sttQ,1723
|
1151
1151
|
esphome/components/http_request/__init__.py,sha256=4_uFrwkt-A5zGn3yg_9OmTeqG_B-0-qLdVB7OpDdkT8,10324
|
1152
1152
|
esphome/components/http_request/http_request.cpp,sha256=UFpMPffAuE2enh8iBvZzV3EDr7lS-MoLaquDoi5FGEw,705
|
1153
|
-
esphome/components/http_request/http_request.h,sha256=
|
1153
|
+
esphome/components/http_request/http_request.h,sha256=_2_0II69bDV-vlgr53p102VpekXijU_KQekjZOBmRF0,8653
|
1154
1154
|
esphome/components/http_request/http_request_arduino.cpp,sha256=btiSWqmr45miC9yIjjiTKrMhvtJ45JieiO0V9h1EjBo,5452
|
1155
1155
|
esphome/components/http_request/http_request_arduino.h,sha256=iaOY5aKpQJREygOoyBB8Nsozp4cfETDt-G6Hgu_pkm0,871
|
1156
1156
|
esphome/components/http_request/http_request_idf.cpp,sha256=qVH3oaYuqfwRrDmviMOxwiof7PrIAqvg7Nc75UD2xmo,6200
|
@@ -1457,7 +1457,7 @@ esphome/components/ltr_als_ps/ltr_als_ps.cpp,sha256=a5NBwe7wtJHwLgIDFoollhz1VSDI
|
|
1457
1457
|
esphome/components/ltr_als_ps/ltr_als_ps.h,sha256=TxgTmv7apRGsxHAxDow6-CpkQsdWID2KLk-lSDi7KtQ,6466
|
1458
1458
|
esphome/components/ltr_als_ps/ltr_definitions.h,sha256=yaIvnLQBIBnPuQBvHDD9Q_16Uoq1vnABwsTm8j77a3w,7255
|
1459
1459
|
esphome/components/ltr_als_ps/sensor.py,sha256=0HSnG34wHnaj9s-qRO7tYn5p0rSBlGmVXaVDSG520sg,9980
|
1460
|
-
esphome/components/lvgl/__init__.py,sha256=
|
1460
|
+
esphome/components/lvgl/__init__.py,sha256=6MAh-NMXgsoYxKaURc3KMrk0WQxwa14njGY1Ni24yZM,17415
|
1461
1461
|
esphome/components/lvgl/automation.py,sha256=xFlt6T-qL1WYEFMQ5loHqCjtm2wC_Ml4VPDa1GAxikg,10204
|
1462
1462
|
esphome/components/lvgl/defines.py,sha256=UtXGBexJNUgFuOrAtGEyDcRp0qLioLG0VLr8f-UQbMo,13414
|
1463
1463
|
esphome/components/lvgl/encoders.py,sha256=l296tfKdDzhRNPmU1chvAosNRrmBhITlB43OtNVBrRw,3189
|
@@ -1466,13 +1466,13 @@ esphome/components/lvgl/gradient.py,sha256=K60e7b52N8i7aQjkLIsij7OOXmVhBnJnxj4J3
|
|
1466
1466
|
esphome/components/lvgl/hello_world.py,sha256=iwfSWO0TT0CEGN5M_QBY_oKqmYshT69jOBDFTTUyBII,1417
|
1467
1467
|
esphome/components/lvgl/helpers.py,sha256=XI3C5IHwoSVlgR32kMxeXTZWK6iW112nmWv5wByrKLY,1253
|
1468
1468
|
esphome/components/lvgl/keypads.py,sha256=jtQjAG4vbTzI5Pr1IBfrEEPzV_0k4wkKfCMfsef6VT4,2124
|
1469
|
-
esphome/components/lvgl/lv_validation.py,sha256=
|
1469
|
+
esphome/components/lvgl/lv_validation.py,sha256=fss9CHNO4JsWf3VYk9bxPYz0Z2ulx8kzilF4XjNv0bk,13581
|
1470
1470
|
esphome/components/lvgl/lvcode.py,sha256=IkvCq59dR0RYJ-wKeO95zJEX-vNBWUkHEX5tJJfvv-Q,10018
|
1471
1471
|
esphome/components/lvgl/lvgl_esphome.cpp,sha256=6-qhT-eqKkJt1R_xfZUWaVN2Ko5h5zuxB7ewcb3r9_0,19102
|
1472
1472
|
esphome/components/lvgl/lvgl_esphome.h,sha256=DbwbGatY62fONYXhObsUGjAxpSOq7Abrt1I91IMeBEA,11916
|
1473
1473
|
esphome/components/lvgl/lvgl_hal.h,sha256=aZqWpSmKKAB-ZfNxxgxjgASTtLpAZjXJKuoTiPB0qqU,431
|
1474
1474
|
esphome/components/lvgl/lvgl_proxy.h,sha256=JPmVBVh5zD5nraJCN7PqXVmQQlc4CPJe_X9tA6IAtXQ,547
|
1475
|
-
esphome/components/lvgl/schemas.py,sha256=
|
1475
|
+
esphome/components/lvgl/schemas.py,sha256=t_tWtSSPwJWnPS8xNVDupo3HOLfkL8PihDatdJWIQOE,14271
|
1476
1476
|
esphome/components/lvgl/styles.py,sha256=oTrJp-Y8lr0fUuVRvYMAFLNJzlW8Y4f9VT3pUq7NYX0,2254
|
1477
1477
|
esphome/components/lvgl/touchscreens.py,sha256=CntwVa1EUu6iBnxfvuv0rCYd_Njmf451CYdRqQyb9N4,1607
|
1478
1478
|
esphome/components/lvgl/trigger.py,sha256=igqFoYZqjgF-XQbGyuEQhFqYsXGq1BadS8CK_M2XTLs,2221
|
@@ -1501,7 +1501,7 @@ esphome/components/lvgl/widgets/img.py,sha256=UE8X_RQhirIgJploL1VNHNuzdhlnhpZz41
|
|
1501
1501
|
esphome/components/lvgl/widgets/keyboard.py,sha256=1WBm_nfeFpWvzYts68FN_arqovOwMFs47TQAPCKour8,1543
|
1502
1502
|
esphome/components/lvgl/widgets/label.py,sha256=5xl1a6apdJgGKmkpL8m7RDASjaeKzjKTllhY26Gbfag,1139
|
1503
1503
|
esphome/components/lvgl/widgets/led.py,sha256=qoe_kvZpoRkwbxz25Z66KQ__KLC2tfhAukChp1jdlDc,888
|
1504
|
-
esphome/components/lvgl/widgets/line.py,sha256=
|
1504
|
+
esphome/components/lvgl/widgets/line.py,sha256=b0lb8RAJwvLNknRhMsqD1iOOX0sE-vFZLnCC-rMOLzA,1411
|
1505
1505
|
esphome/components/lvgl/widgets/lv_bar.py,sha256=DbiUvhKdh9bsRMTU-rJYYA5KCjBUxDsW-7tvx8-CIRM,1670
|
1506
1506
|
esphome/components/lvgl/widgets/meter.py,sha256=pqSwtQWoyluLKmTSUR1gnsueUDi3lPm4lat8jV3Pi8Q,10985
|
1507
1507
|
esphome/components/lvgl/widgets/msgbox.py,sha256=xiB_-lOhsIDoeYpmf_66fdiq-2yd1wloBb_6beg5ZwI,5273
|
@@ -1532,7 +1532,7 @@ esphome/components/matrix_keypad/__init__.py,sha256=CRTWzuhJdPMb-xY5wj26OaQf0RLD
|
|
1532
1532
|
esphome/components/matrix_keypad/matrix_keypad.cpp,sha256=BenTjvW_skypNg6VIS2ysUdvYJNEQ1iUS23sm36EkNA,2984
|
1533
1533
|
esphome/components/matrix_keypad/matrix_keypad.h,sha256=RktGC4bHUNkBS_5svvfJCOVPHn1B8e_mU9RcONMrVdk,1483
|
1534
1534
|
esphome/components/matrix_keypad/binary_sensor/__init__.py,sha256=GyuSn0SbvIjeWAY8VL2h1ZBu_F_6IieB8kHzi3lA96c,1638
|
1535
|
-
esphome/components/matrix_keypad/binary_sensor/matrix_keypad_binary_sensor.h,sha256=
|
1535
|
+
esphome/components/matrix_keypad/binary_sensor/matrix_keypad_binary_sensor.h,sha256=3fxEP2Oz7a7VT3AT6Y60IfOWKbN4p2byrwZGCuHob2Y,1333
|
1536
1536
|
esphome/components/max17043/__init__.py,sha256=b0G6mAuSTWpAdOVf7rn3zBVRHoJZeZ8i6mkNLqOQfDI,28
|
1537
1537
|
esphome/components/max17043/automation.h,sha256=rw2HnS8IuniX5673CzvfbIpjyO-Jtay2Q_S1MSEOoi4,434
|
1538
1538
|
esphome/components/max17043/max17043.cpp,sha256=rl6WPIT4dzrCQSWe21zvMt7f-lp6DFnxH6-mL3HpcXM,3189
|
@@ -1728,12 +1728,12 @@ esphome/components/mmc5983/mmc5983.cpp,sha256=6tH7TsB2jSTYDR3-SQ90JgKNMQtFvG1OJH
|
|
1728
1728
|
esphome/components/mmc5983/mmc5983.h,sha256=djHDHSC4UAimrWpqnKB-g1wycM5ym7vOLHU7BDRfwA8,784
|
1729
1729
|
esphome/components/mmc5983/sensor.py,sha256=_eAPEfWzxYWsp5kPji_Rb99X6j9RxlReC4boxYWUtWY,1670
|
1730
1730
|
esphome/components/modbus/__init__.py,sha256=pe9aU_PBNR9h9TqqezEE8zyvp7PLOtsa01Zaf08DMfk,3111
|
1731
|
-
esphome/components/modbus/modbus.cpp,sha256=
|
1731
|
+
esphome/components/modbus/modbus.cpp,sha256=aNZF9Qc2AhrV9hGvfMVkRMqjxQllHdi5D_5MPE1ReuI,8526
|
1732
1732
|
esphome/components/modbus/modbus.h,sha256=lDXklIqGZsyXnvf4oFslaGtD7yd9YwRkUYSpYsQRcAg,2477
|
1733
|
-
esphome/components/modbus_controller/__init__.py,sha256=
|
1733
|
+
esphome/components/modbus_controller/__init__.py,sha256=2qkvQDczAkOFHGBOszDRhCtR9kl3XeddSa8PCHspKW0,11987
|
1734
1734
|
esphome/components/modbus_controller/automation.h,sha256=YzVMgVu37jvwsvCz3tSheYDJeZwi3IMx6NuMo1xgw7g,1106
|
1735
1735
|
esphome/components/modbus_controller/const.py,sha256=dw_zuK27lFuR5aDtlOs_nVaFB9Snx3l48dgwc9_OAMg,825
|
1736
|
-
esphome/components/modbus_controller/modbus_controller.cpp,sha256=
|
1736
|
+
esphome/components/modbus_controller/modbus_controller.cpp,sha256=X02K_sdHi13Y_31HbKkv7k1Qpm7qwkqEGiKO6kU6CMI,28520
|
1737
1737
|
esphome/components/modbus_controller/modbus_controller.h,sha256=R80yn8_lFDQo6pQ-8tQxl0V9IuKKqAQnkhh4IuymYJw,23454
|
1738
1738
|
esphome/components/modbus_controller/binary_sensor/__init__.py,sha256=sFeTUMZlQwtIHKtX8kUDT5wvIk25SCiZG0Wdl6EYdFU,1634
|
1739
1739
|
esphome/components/modbus_controller/binary_sensor/modbus_binarysensor.cpp,sha256=wsRl8P37mxr24CQJ4gCrFsUTlgVVKOVsY8HJTN1sUA8,1197
|
@@ -1977,7 +1977,7 @@ esphome/components/opentherm/sensor/__init__.py,sha256=pGVYAMSxHkEArf7jEY3YjWhIa
|
|
1977
1977
|
esphome/components/opentherm/switch/__init__.py,sha256=bbPSrKbqGnipfPdoaPWvdNPbs7CheZT51KUMkFc7Of4,1216
|
1978
1978
|
esphome/components/opentherm/switch/switch.cpp,sha256=UurvOy-U1IEmNxWMCCpkPCueR-POh-FBI8fBjWWc64o,820
|
1979
1979
|
esphome/components/opentherm/switch/switch.h,sha256=JhJFaXrJi3orbavFDc4llzmmHwU0yN2v_VuwJx3r7FU,410
|
1980
|
-
esphome/components/ota/__init__.py,sha256=
|
1980
|
+
esphome/components/ota/__init__.py,sha256=uHRMl_VVt5RBPmi3u7GQ8ezglq_H39qsg3cpv0tbFkQ,4353
|
1981
1981
|
esphome/components/ota/automation.h,sha256=UaasWG6gZG59MtC5DHHfMhRb7BXYmLlkOyYujZReEV0,2044
|
1982
1982
|
esphome/components/ota/ota_backend.cpp,sha256=IfpR0mvzSs9ugJa2LRi4AtYHT4Ht6PoS9BY5Ydjs_eE,587
|
1983
1983
|
esphome/components/ota/ota_backend.h,sha256=ILfnmlVzp0qhHFv13jZ6GQ7MLgKf5ICtL6xI4ojg4K8,2806
|
@@ -2176,8 +2176,8 @@ esphome/components/qr_code/qr_code.h,sha256=av3KfyeLMVzuXarboSTGBIeWsZww5k1aQXcX
|
|
2176
2176
|
esphome/components/qspi_amoled/display.py,sha256=RKxYuiRRDxMz2JkpCZuc0Mc4KEsfFXG1lnAdE96j-6o,125
|
2177
2177
|
esphome/components/qspi_dbi/__init__.py,sha256=4Nn7UhpMJ9oSbuLdyVEW7G9PlIey2v33SWRNVizt9Oc,30
|
2178
2178
|
esphome/components/qspi_dbi/display.py,sha256=FSAqnA_rpdhYDX1wKzYvKQekPKVZms5r5xkxLbID29A,6470
|
2179
|
-
esphome/components/qspi_dbi/models.py,sha256=
|
2180
|
-
esphome/components/qspi_dbi/qspi_dbi.cpp,sha256=
|
2179
|
+
esphome/components/qspi_dbi/models.py,sha256=SteqD6BaCNLuuPpZWR6qfH7V-EDQ4La53Yv2PV9o9Cg,1378
|
2180
|
+
esphome/components/qspi_dbi/qspi_dbi.cpp,sha256=8aihsspfl44eXLkdXj6TppBoO46K7bnTi8lpqwRG2YE,7422
|
2181
2181
|
esphome/components/qspi_dbi/qspi_dbi.h,sha256=Vnsliv6CNN_h-ZCvLraQYb9461qdvIh8jhFwhx1-ffk,6150
|
2182
2182
|
esphome/components/qwiic_pir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2183
2183
|
esphome/components/qwiic_pir/binary_sensor.py,sha256=JnaxTc_TLDq77ju6bnbR2KP8QOzasX0_3QoQwvmgVXE,2001
|
@@ -2339,7 +2339,7 @@ esphome/components/rtl87xx/__init__.py,sha256=HIcczzFYGdNtOj635-gH0VVmBOZjmvcS4m
|
|
2339
2339
|
esphome/components/rtl87xx/boards.py,sha256=JItSPj4n2UAvUXISoL2PTyTAqIi2Wp3sjGjs1fgS-3M,29269
|
2340
2340
|
esphome/components/rtttl/__init__.py,sha256=m8vjSNfwcgbJm6NhDe_ErddMMwUpe2StubWcMY8sd28,4383
|
2341
2341
|
esphome/components/rtttl/rtttl.cpp,sha256=cuoIUm1xDUlrTW1lOSb5w9iMu94lUfUESTgtXbXSwPQ,10911
|
2342
|
-
esphome/components/rtttl/rtttl.h,sha256=
|
2342
|
+
esphome/components/rtttl/rtttl.h,sha256=djIjq7Cq1aZ4uQz_VHboPIdRYcYJ0j0E7uIOXr86cP0,2916
|
2343
2343
|
esphome/components/ruuvi_ble/__init__.py,sha256=9LmcfStqBeEzcuWdON_iGuI6Xh0BUssV1Aebv98Krks,619
|
2344
2344
|
esphome/components/ruuvi_ble/ruuvi_ble.cpp,sha256=XXeYIgr1OB20MxtdcTDAWowFeK8qRQmQKTMeSEuhAec,5724
|
2345
2345
|
esphome/components/ruuvi_ble/ruuvi_ble.h,sha256=F5lb-4gHnOMArTrh0jTPUjRcScDFEX2V9JHwd_Q_-t4,997
|
@@ -2585,7 +2585,7 @@ esphome/components/sonoff_d1/__init__.py,sha256=ZmxkvMwdesGJglhRfdWU41Fb_ib3xOhx
|
|
2585
2585
|
esphome/components/sonoff_d1/light.py,sha256=YLxoJWC9w_TBPyGX_2_rDCuMfc4AZtuNG0PaLlFWig0,1443
|
2586
2586
|
esphome/components/sonoff_d1/sonoff_d1.cpp,sha256=9xT42oxeLJ5CGrZ7wqIH5KVTkwW3XYNSXSXEc5_vzq0,12746
|
2587
2587
|
esphome/components/sonoff_d1/sonoff_d1.h,sha256=FNHcaqGktpV3S19A1LD2wtpRpEqA0h6g9GFb36pMy_E,3457
|
2588
|
-
esphome/components/speaker/__init__.py,sha256=
|
2588
|
+
esphome/components/speaker/__init__.py,sha256=TO94-8JNv5kTQVzvKGd5UotPrmFmzmq4jSRACkJX_kU,4352
|
2589
2589
|
esphome/components/speaker/automation.h,sha256=tVSTV49GvHk0bCEgLz3rNYFe8B1F0kXLgE-WihuRaV8,2320
|
2590
2590
|
esphome/components/speaker/speaker.h,sha256=wTyEdWsBR8tJM_VvvZFx1orEd_ZDNE9rnHOqBY46jCU,3559
|
2591
2591
|
esphome/components/speed/__init__.py,sha256=Bfyz1MHHvLHj93TfN53E2uhKXKLYtp0k4st6Xb3760o,74
|
@@ -2694,7 +2694,7 @@ esphome/components/statsd/__init__.py,sha256=l8GtFsbqmF4uWjc8bQ6JugaP4XomCB1SqCX
|
|
2694
2694
|
esphome/components/statsd/statsd.cpp,sha256=L4BgLvEvU_esYz6M1lLUr012D2E-QXsNV9wRJLepZZU,4016
|
2695
2695
|
esphome/components/statsd/statsd.h,sha256=5IJl84anEly8as3ONh4s9KjIYmfhuAez-mHkdzWqIDY,1805
|
2696
2696
|
esphome/components/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2697
|
-
esphome/components/status/binary_sensor.py,sha256=
|
2697
|
+
esphome/components/status/binary_sensor.py,sha256=NPwpCVJ6KBoKVkF1zcQwMVoqtYHJVTCMnWEQImdpyjA,718
|
2698
2698
|
esphome/components/status/status_binary_sensor.cpp,sha256=VaLg8eURQHNXOB-JC-SpR5wzVclpIYGS2lXdpTAwDfg,963
|
2699
2699
|
esphome/components/status/status_binary_sensor.h,sha256=z84fHtyQuDzrdvadDUXlnBZhSopkVIDx3L1spOkfrjg,518
|
2700
2700
|
esphome/components/status_led/__init__.py,sha256=ch8SQ_0fAHxPqWydVtfl0XUDVy7v0D-hc2-gN4nVvrM,782
|
@@ -3144,9 +3144,9 @@ esphome/components/wiegand/wiegand.h,sha256=gyg5szEK0okoeLBQR284k84xy-ln19kNIkeO
|
|
3144
3144
|
esphome/components/wifi/__init__.py,sha256=6FJ70aZwjp6tqMecz3bfesxvHn8QLcWZKZqGrzhUTxc,16419
|
3145
3145
|
esphome/components/wifi/wifi_component.cpp,sha256=55x9pFgJm12ZcLsGoRzT6-2I3UXGblVIpxJYMZZQgfo,28991
|
3146
3146
|
esphome/components/wifi/wifi_component.h,sha256=VQWxTtMOL2Xc_9fZLklYT0cenyFlIzUuWZ3xzlhvoEY,12394
|
3147
|
-
esphome/components/wifi/wifi_component_esp32_arduino.cpp,sha256=
|
3148
|
-
esphome/components/wifi/wifi_component_esp8266.cpp,sha256=
|
3149
|
-
esphome/components/wifi/wifi_component_esp_idf.cpp,sha256=
|
3147
|
+
esphome/components/wifi/wifi_component_esp32_arduino.cpp,sha256=RnqQCAqEGGE3bmIboozw0leO7fgIsXkT8APfmMy6AHw,27583
|
3148
|
+
esphome/components/wifi/wifi_component_esp8266.cpp,sha256=NZhivdJTTWfamh_WLgRjpdrEBwNSbrBJifceNi4OX94,27621
|
3149
|
+
esphome/components/wifi/wifi_component_esp_idf.cpp,sha256=ZaL8sNHeifl6eSw3Fz_KC23kNhgAhuA-ORwA4mYpzPE,35994
|
3150
3150
|
esphome/components/wifi/wifi_component_libretiny.cpp,sha256=ASeaZMVG2WJi321sfp1OuELAvvEh8W2Ooy2aG1MVUYE,16275
|
3151
3151
|
esphome/components/wifi/wifi_component_pico_w.cpp,sha256=eDRB45mojDBWAFYMxuVPLb0mhFVCjRi5nrhpcxDusGQ,6392
|
3152
3152
|
esphome/components/wifi/wpa2_eap.py,sha256=484kRwbjD-KGb1VqtER7V-3_3Bt7QDS4CCmpdZNOFNk,4859
|
@@ -3308,7 +3308,7 @@ esphome/core/component.cpp,sha256=Uea5Hkm0E9yJMJYnrbLFFVpdcBZgaWSxfAiwcyGKByA,93
|
|
3308
3308
|
esphome/core/component.h,sha256=U4m8_g9gSBBIjRNw4k36entP2JcA6F3SsWbwty_hKdo,11744
|
3309
3309
|
esphome/core/component_iterator.cpp,sha256=TUu2K34ATYa1Qyf2s-sZJBksAiFIGj3egzbDKPuFtTQ,11117
|
3310
3310
|
esphome/core/component_iterator.h,sha256=cjacKgRrlxl-VwPOysfBJZNK0NMzcc-w9xXn82m5dYc,3599
|
3311
|
-
esphome/core/config.py,sha256=
|
3311
|
+
esphome/core/config.py,sha256=PbySZ7vj6t2t3mNbWpKR732frQD3Eqp1eLMDflW_3rI,14740
|
3312
3312
|
esphome/core/controller.cpp,sha256=feO4yH0GETNCqi9MTZEtsOaoo-CPV2rM9S7UfQXY6Ew,4553
|
3313
3313
|
esphome/core/controller.h,sha256=PXCcMqYpq0xjFCdlOKv6WuYlcETnB4sq3UQWdOTt9PU,3720
|
3314
3314
|
esphome/core/datatypes.h,sha256=wN8xro8vqXT13w9KvVOXeQfBwlI_WQZ6uFaIGyub67E,2114
|
@@ -3338,13 +3338,13 @@ esphome/core/util.h,sha256=UeGZvUEvEaOMxLqJOA7GE178z5U37681RtFk6Ho1KCw,407
|
|
3338
3338
|
esphome/core/version.h,sha256=HkOTdiyOMRgIuYAAXpsN_8_IKye3rMK0LbtpcjZVXqY,431
|
3339
3339
|
esphome/dashboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3340
3340
|
esphome/dashboard/const.py,sha256=y4myJErHI7AUrfCum9IxnEM9bzOLL8DZQQffE_NgifA,292
|
3341
|
-
esphome/dashboard/core.py,sha256=
|
3341
|
+
esphome/dashboard/core.py,sha256=3sxsSeD1R1rK9qBZGvh7D5C8IQPeeADwvwZ49idyfgM,5678
|
3342
3342
|
esphome/dashboard/dashboard.py,sha256=EspMigIPXAci4MJXNcAG_BlxP86kUB49ddwne8iJs5A,4747
|
3343
3343
|
esphome/dashboard/dns.py,sha256=zJjzjjuJsnHXW59V-H1QqjwwqJFgtJUIsB2QUcALZns,1369
|
3344
3344
|
esphome/dashboard/entries.py,sha256=jbmvXQ5-zeUBVrd80tupYmStRsTwGp0hbfG7ZIRQF94,13130
|
3345
3345
|
esphome/dashboard/enum.py,sha256=rlQFVVxyBt5Iw7OL0o9F8D5LGgw23tbvi-KYjzP0QUQ,597
|
3346
3346
|
esphome/dashboard/settings.py,sha256=xoN2eLh-t0hmVYLmZm9beVOqonPNqWkzpRsoPbEomoA,2962
|
3347
|
-
esphome/dashboard/web_server.py,sha256=
|
3347
|
+
esphome/dashboard/web_server.py,sha256=SnAB_8ndfY91SPmY1cwCYkKxtWF9ppDgbD7soSzs3YQ,41837
|
3348
3348
|
esphome/dashboard/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3349
3349
|
esphome/dashboard/status/mdns.py,sha256=FuASYxcQ-LQVK5vqX9ZLs9wIXlmXZh4tjXhg-Zmpq14,3741
|
3350
3350
|
esphome/dashboard/status/mqtt.py,sha256=ZRb18LOvl4975Pzc4Fdr5ErML3WKwV8Pv1sD2qdSJ1s,1965
|
@@ -3355,9 +3355,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
|
|
3355
3355
|
esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
|
3356
3356
|
esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
|
3357
3357
|
esphome/dashboard/util/text.py,sha256=ENDnfN4O0NdA3CKVJjQYabFbwbrsIhVKrAMQe53qYu4,534
|
3358
|
-
esphome-2024.11.
|
3359
|
-
esphome-2024.11.
|
3360
|
-
esphome-2024.11.
|
3361
|
-
esphome-2024.11.
|
3362
|
-
esphome-2024.11.
|
3363
|
-
esphome-2024.11.
|
3358
|
+
esphome-2024.11.2.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
3359
|
+
esphome-2024.11.2.dist-info/METADATA,sha256=CzCGTqK8SxTLlFSVTWRFFmmsxaMHl1EXpL0Xdfh3MY8,3453
|
3360
|
+
esphome-2024.11.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
3361
|
+
esphome-2024.11.2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
3362
|
+
esphome-2024.11.2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
3363
|
+
esphome-2024.11.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|