esphome 2025.10.1__py3-none-any.whl → 2025.10.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of esphome might be problematic. Click here for more details.
- esphome/__main__.py +3 -1
- esphome/components/bme680_bsec/__init__.py +1 -1
- esphome/components/bme68x_bsec2/__init__.py +1 -1
- esphome/components/datetime/datetime_base.h +0 -2
- esphome/components/esp32/__init__.py +1 -0
- esphome/components/esp32/core.cpp +11 -0
- esphome/components/hdc1080/hdc1080.cpp +2 -1
- esphome/components/htu21d/htu21d.cpp +2 -2
- esphome/components/scd4x/sensor.py +1 -1
- esphome/components/uart/uart_component_esp8266.cpp +7 -0
- esphome/components/uart/uart_component_esp_idf.cpp +10 -0
- esphome/components/uart/uart_component_libretiny.cpp +7 -0
- esphome/components/uart/uart_component_rp2040.cpp +7 -0
- esphome/config_validation.py +14 -0
- esphome/const.py +2 -1
- esphome/core/__init__.py +4 -0
- esphome/dashboard/settings.py +10 -1
- esphome/dashboard/web_server.py +2 -1
- esphome/helpers.py +15 -14
- {esphome-2025.10.1.dist-info → esphome-2025.10.3.dist-info}/METADATA +1 -1
- {esphome-2025.10.1.dist-info → esphome-2025.10.3.dist-info}/RECORD +25 -25
- {esphome-2025.10.1.dist-info → esphome-2025.10.3.dist-info}/WHEEL +0 -0
- {esphome-2025.10.1.dist-info → esphome-2025.10.3.dist-info}/entry_points.txt +0 -0
- {esphome-2025.10.1.dist-info → esphome-2025.10.3.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.10.1.dist-info → esphome-2025.10.3.dist-info}/top_level.txt +0 -0
esphome/__main__.py
CHANGED
|
@@ -185,7 +185,9 @@ def choose_upload_log_host(
|
|
|
185
185
|
else:
|
|
186
186
|
resolved.append(device)
|
|
187
187
|
if not resolved:
|
|
188
|
-
|
|
188
|
+
raise EsphomeError(
|
|
189
|
+
f"All specified devices {defaults} could not be resolved. Is the device connected to the network?"
|
|
190
|
+
)
|
|
189
191
|
return resolved
|
|
190
192
|
|
|
191
193
|
# No devices specified, show interactive chooser
|
|
@@ -41,7 +41,7 @@ CONFIG_SCHEMA = cv.All(
|
|
|
41
41
|
cv.Schema(
|
|
42
42
|
{
|
|
43
43
|
cv.GenerateID(): cv.declare_id(BME680BSECComponent),
|
|
44
|
-
cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.
|
|
44
|
+
cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.temperature_delta,
|
|
45
45
|
cv.Optional(CONF_IAQ_MODE, default="STATIC"): cv.enum(
|
|
46
46
|
IAQ_MODE_OPTIONS, upper=True
|
|
47
47
|
),
|
|
@@ -139,7 +139,7 @@ CONFIG_SCHEMA_BASE = (
|
|
|
139
139
|
cv.Optional(CONF_SUPPLY_VOLTAGE, default="3.3V"): cv.enum(
|
|
140
140
|
VOLTAGE_OPTIONS, upper=True
|
|
141
141
|
),
|
|
142
|
-
cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.
|
|
142
|
+
cv.Optional(CONF_TEMPERATURE_OFFSET, default=0): cv.temperature_delta,
|
|
143
143
|
cv.Optional(
|
|
144
144
|
CONF_STATE_SAVE_INTERVAL, default="6hours"
|
|
145
145
|
): cv.positive_time_period_minutes,
|
|
@@ -30,14 +30,12 @@ class DateTimeBase : public EntityBase {
|
|
|
30
30
|
#endif
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
#ifdef USE_TIME
|
|
34
33
|
class DateTimeStateTrigger : public Trigger<ESPTime> {
|
|
35
34
|
public:
|
|
36
35
|
explicit DateTimeStateTrigger(DateTimeBase *parent) {
|
|
37
36
|
parent->add_on_state_callback([this, parent]() { this->trigger(parent->state_as_esptime()); });
|
|
38
37
|
}
|
|
39
38
|
};
|
|
40
|
-
#endif
|
|
41
39
|
|
|
42
40
|
} // namespace datetime
|
|
43
41
|
} // namespace esphome
|
|
@@ -790,6 +790,7 @@ async def to_code(config):
|
|
|
790
790
|
add_idf_sdkconfig_option("CONFIG_AUTOSTART_ARDUINO", True)
|
|
791
791
|
add_idf_sdkconfig_option("CONFIG_MBEDTLS_PSK_MODES", True)
|
|
792
792
|
add_idf_sdkconfig_option("CONFIG_MBEDTLS_CERTIFICATE_BUNDLE", True)
|
|
793
|
+
add_idf_sdkconfig_option("CONFIG_ESP_PHY_REDUCE_TX_POWER", True)
|
|
793
794
|
|
|
794
795
|
cg.add_build_flag("-Wno-nonnull-compare")
|
|
795
796
|
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
#include <freertos/FreeRTOS.h>
|
|
7
7
|
#include <freertos/task.h>
|
|
8
8
|
#include <esp_idf_version.h>
|
|
9
|
+
#include <esp_ota_ops.h>
|
|
9
10
|
#include <esp_task_wdt.h>
|
|
10
11
|
#include <esp_timer.h>
|
|
11
12
|
#include <soc/rtc.h>
|
|
@@ -52,6 +53,16 @@ void arch_init() {
|
|
|
52
53
|
disableCore1WDT();
|
|
53
54
|
#endif
|
|
54
55
|
#endif
|
|
56
|
+
|
|
57
|
+
// If the bootloader was compiled with CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE the current
|
|
58
|
+
// partition will get rolled back unless it is marked as valid.
|
|
59
|
+
esp_ota_img_states_t state;
|
|
60
|
+
const esp_partition_t *running = esp_ota_get_running_partition();
|
|
61
|
+
if (esp_ota_get_state_partition(running, &state) == ESP_OK) {
|
|
62
|
+
if (state == ESP_OTA_IMG_PENDING_VERIFY) {
|
|
63
|
+
esp_ota_mark_app_valid_cancel_rollback();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
55
66
|
}
|
|
56
67
|
void IRAM_ATTR HOT arch_feed_wdt() { esp_task_wdt_reset(); }
|
|
57
68
|
|
|
@@ -16,7 +16,8 @@ void HDC1080Component::setup() {
|
|
|
16
16
|
|
|
17
17
|
// if configuration fails - there is a problem
|
|
18
18
|
if (this->write_register(HDC1080_CMD_CONFIGURATION, config, 2) != i2c::ERROR_OK) {
|
|
19
|
-
|
|
19
|
+
ESP_LOGW(TAG, "Failed to configure HDC1080");
|
|
20
|
+
this->status_set_warning();
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
@@ -9,8 +9,8 @@ static const char *const TAG = "htu21d";
|
|
|
9
9
|
|
|
10
10
|
static const uint8_t HTU21D_ADDRESS = 0x40;
|
|
11
11
|
static const uint8_t HTU21D_REGISTER_RESET = 0xFE;
|
|
12
|
-
static const uint8_t HTU21D_REGISTER_TEMPERATURE =
|
|
13
|
-
static const uint8_t HTU21D_REGISTER_HUMIDITY =
|
|
12
|
+
static const uint8_t HTU21D_REGISTER_TEMPERATURE = 0xF3;
|
|
13
|
+
static const uint8_t HTU21D_REGISTER_HUMIDITY = 0xF5;
|
|
14
14
|
static const uint8_t HTU21D_WRITERHT_REG_CMD = 0xE6; /**< Write RH/T User Register 1 */
|
|
15
15
|
static const uint8_t HTU21D_REGISTER_STATUS = 0xE7;
|
|
16
16
|
static const uint8_t HTU21D_WRITEHEATER_REG_CMD = 0x51; /**< Write Heater Control Register */
|
|
@@ -81,7 +81,7 @@ CONFIG_SCHEMA = (
|
|
|
81
81
|
cv.int_range(min=0, max=0xFFFF, max_included=False),
|
|
82
82
|
),
|
|
83
83
|
cv.Optional(CONF_AMBIENT_PRESSURE_COMPENSATION): cv.pressure,
|
|
84
|
-
cv.Optional(CONF_TEMPERATURE_OFFSET, default="4°C"): cv.
|
|
84
|
+
cv.Optional(CONF_TEMPERATURE_OFFSET, default="4°C"): cv.temperature_delta,
|
|
85
85
|
cv.Optional(CONF_AMBIENT_PRESSURE_COMPENSATION_SOURCE): cv.use_id(
|
|
86
86
|
sensor.Sensor
|
|
87
87
|
),
|
|
@@ -56,6 +56,13 @@ uint32_t ESP8266UartComponent::get_config() {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
void ESP8266UartComponent::setup() {
|
|
59
|
+
if (this->rx_pin_) {
|
|
60
|
+
this->rx_pin_->setup();
|
|
61
|
+
}
|
|
62
|
+
if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
|
|
63
|
+
this->tx_pin_->setup();
|
|
64
|
+
}
|
|
65
|
+
|
|
59
66
|
// Use Arduino HardwareSerial UARTs if all used pins match the ones
|
|
60
67
|
// preconfigured by the platform. For example if RX disabled but TX pin
|
|
61
68
|
// is 1 we still want to use Serial.
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
#include "esphome/core/defines.h"
|
|
7
7
|
#include "esphome/core/helpers.h"
|
|
8
8
|
#include "esphome/core/log.h"
|
|
9
|
+
#include "esphome/core/gpio.h"
|
|
10
|
+
#include "driver/gpio.h"
|
|
11
|
+
#include "soc/gpio_num.h"
|
|
9
12
|
|
|
10
13
|
#ifdef USE_LOGGER
|
|
11
14
|
#include "esphome/components/logger/logger.h"
|
|
@@ -104,6 +107,13 @@ void IDFUARTComponent::load_settings(bool dump_config) {
|
|
|
104
107
|
return;
|
|
105
108
|
}
|
|
106
109
|
|
|
110
|
+
if (this->rx_pin_) {
|
|
111
|
+
this->rx_pin_->setup();
|
|
112
|
+
}
|
|
113
|
+
if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
|
|
114
|
+
this->tx_pin_->setup();
|
|
115
|
+
}
|
|
116
|
+
|
|
107
117
|
int8_t tx = this->tx_pin_ != nullptr ? this->tx_pin_->get_pin() : -1;
|
|
108
118
|
int8_t rx = this->rx_pin_ != nullptr ? this->rx_pin_->get_pin() : -1;
|
|
109
119
|
int8_t flow_control = this->flow_control_pin_ != nullptr ? this->flow_control_pin_->get_pin() : -1;
|
|
@@ -46,6 +46,13 @@ uint16_t LibreTinyUARTComponent::get_config() {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
void LibreTinyUARTComponent::setup() {
|
|
49
|
+
if (this->rx_pin_) {
|
|
50
|
+
this->rx_pin_->setup();
|
|
51
|
+
}
|
|
52
|
+
if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
|
|
53
|
+
this->tx_pin_->setup();
|
|
54
|
+
}
|
|
55
|
+
|
|
49
56
|
int8_t tx_pin = tx_pin_ == nullptr ? -1 : tx_pin_->get_pin();
|
|
50
57
|
int8_t rx_pin = rx_pin_ == nullptr ? -1 : rx_pin_->get_pin();
|
|
51
58
|
bool tx_inverted = tx_pin_ != nullptr && tx_pin_->is_inverted();
|
|
@@ -52,6 +52,13 @@ uint16_t RP2040UartComponent::get_config() {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
void RP2040UartComponent::setup() {
|
|
55
|
+
if (this->rx_pin_) {
|
|
56
|
+
this->rx_pin_->setup();
|
|
57
|
+
}
|
|
58
|
+
if (this->tx_pin_ && this->rx_pin_ != this->tx_pin_) {
|
|
59
|
+
this->tx_pin_->setup();
|
|
60
|
+
}
|
|
61
|
+
|
|
55
62
|
uint16_t config = get_config();
|
|
56
63
|
|
|
57
64
|
constexpr uint32_t valid_tx_uart_0 = __bitset({0, 12, 16, 28});
|
esphome/config_validation.py
CHANGED
|
@@ -244,6 +244,20 @@ RESERVED_IDS = [
|
|
|
244
244
|
"uart0",
|
|
245
245
|
"uart1",
|
|
246
246
|
"uart2",
|
|
247
|
+
# ESP32 ROM functions
|
|
248
|
+
"crc16_be",
|
|
249
|
+
"crc16_le",
|
|
250
|
+
"crc32_be",
|
|
251
|
+
"crc32_le",
|
|
252
|
+
"crc8_be",
|
|
253
|
+
"crc8_le",
|
|
254
|
+
"dbg_state",
|
|
255
|
+
"debug_timer",
|
|
256
|
+
"one_bits",
|
|
257
|
+
"recv_packet",
|
|
258
|
+
"send_packet",
|
|
259
|
+
"check_pos",
|
|
260
|
+
"software_reset",
|
|
247
261
|
]
|
|
248
262
|
|
|
249
263
|
|
esphome/const.py
CHANGED
|
@@ -4,7 +4,7 @@ from enum import Enum
|
|
|
4
4
|
|
|
5
5
|
from esphome.enum import StrEnum
|
|
6
6
|
|
|
7
|
-
__version__ = "2025.10.
|
|
7
|
+
__version__ = "2025.10.3"
|
|
8
8
|
|
|
9
9
|
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
|
10
10
|
VALID_SUBSTITUTIONS_CHARACTERS = (
|
|
@@ -696,6 +696,7 @@ CONF_OPEN_DRAIN = "open_drain"
|
|
|
696
696
|
CONF_OPEN_DRAIN_INTERRUPT = "open_drain_interrupt"
|
|
697
697
|
CONF_OPEN_DURATION = "open_duration"
|
|
698
698
|
CONF_OPEN_ENDSTOP = "open_endstop"
|
|
699
|
+
CONF_OPENTHREAD = "openthread"
|
|
699
700
|
CONF_OPERATION = "operation"
|
|
700
701
|
CONF_OPTIMISTIC = "optimistic"
|
|
701
702
|
CONF_OPTION = "option"
|
esphome/core/__init__.py
CHANGED
|
@@ -11,6 +11,7 @@ from esphome.const import (
|
|
|
11
11
|
CONF_COMMENT,
|
|
12
12
|
CONF_ESPHOME,
|
|
13
13
|
CONF_ETHERNET,
|
|
14
|
+
CONF_OPENTHREAD,
|
|
14
15
|
CONF_PORT,
|
|
15
16
|
CONF_USE_ADDRESS,
|
|
16
17
|
CONF_WEB_SERVER,
|
|
@@ -641,6 +642,9 @@ class EsphomeCore:
|
|
|
641
642
|
if CONF_ETHERNET in self.config:
|
|
642
643
|
return self.config[CONF_ETHERNET][CONF_USE_ADDRESS]
|
|
643
644
|
|
|
645
|
+
if CONF_OPENTHREAD in self.config:
|
|
646
|
+
return f"{self.name}.local"
|
|
647
|
+
|
|
644
648
|
return None
|
|
645
649
|
|
|
646
650
|
@property
|
esphome/dashboard/settings.py
CHANGED
|
@@ -10,6 +10,10 @@ from esphome.helpers import get_bool_env
|
|
|
10
10
|
|
|
11
11
|
from .util.password import password_hash
|
|
12
12
|
|
|
13
|
+
# Sentinel file name used for CORE.config_path when dashboard initializes.
|
|
14
|
+
# This ensures .parent returns the config directory instead of root.
|
|
15
|
+
_DASHBOARD_SENTINEL_FILE = "___DASHBOARD_SENTINEL___.yaml"
|
|
16
|
+
|
|
13
17
|
|
|
14
18
|
class DashboardSettings:
|
|
15
19
|
"""Settings for the dashboard."""
|
|
@@ -48,7 +52,12 @@ class DashboardSettings:
|
|
|
48
52
|
self.config_dir = Path(args.configuration)
|
|
49
53
|
self.absolute_config_dir = self.config_dir.resolve()
|
|
50
54
|
self.verbose = args.verbose
|
|
51
|
-
|
|
55
|
+
# Set to a sentinel file so .parent gives us the config directory.
|
|
56
|
+
# Previously this was `os.path.join(self.config_dir, ".")` which worked because
|
|
57
|
+
# os.path.dirname("/config/.") returns "/config", but Path("/config/.").parent
|
|
58
|
+
# normalizes to Path("/config") first, then .parent returns Path("/"), breaking
|
|
59
|
+
# secret resolution. Using a sentinel file ensures .parent gives the correct directory.
|
|
60
|
+
CORE.config_path = self.config_dir / _DASHBOARD_SENTINEL_FILE
|
|
52
61
|
|
|
53
62
|
@property
|
|
54
63
|
def relative_url(self) -> str:
|
esphome/dashboard/web_server.py
CHANGED
|
@@ -1058,7 +1058,8 @@ class DownloadBinaryRequestHandler(BaseHandler):
|
|
|
1058
1058
|
"download",
|
|
1059
1059
|
f"{storage_json.name}-{file_name}",
|
|
1060
1060
|
)
|
|
1061
|
-
|
|
1061
|
+
|
|
1062
|
+
path = storage_json.firmware_bin_path.parent.joinpath(file_name)
|
|
1062
1063
|
|
|
1063
1064
|
if not path.is_file():
|
|
1064
1065
|
args = ["esphome", "idedata", settings.rel_path(configuration)]
|
esphome/helpers.py
CHANGED
|
@@ -224,36 +224,37 @@ def resolve_ip_address(
|
|
|
224
224
|
return res
|
|
225
225
|
|
|
226
226
|
# Process hosts
|
|
227
|
-
|
|
227
|
+
|
|
228
228
|
uncached_hosts: list[str] = []
|
|
229
|
-
has_cache = address_cache is not None
|
|
230
229
|
|
|
231
230
|
for h in hosts:
|
|
232
231
|
if is_ip_address(h):
|
|
233
|
-
|
|
234
|
-
# If we have a cache, treat IPs as cached
|
|
235
|
-
cached_addresses.append(h)
|
|
236
|
-
else:
|
|
237
|
-
# If no cache, pass IPs through to resolver with hostnames
|
|
238
|
-
uncached_hosts.append(h)
|
|
232
|
+
_add_ip_addresses_to_addrinfo([h], port, res)
|
|
239
233
|
elif address_cache and (cached := address_cache.get_addresses(h)):
|
|
240
|
-
|
|
241
|
-
cached_addresses.extend(cached)
|
|
234
|
+
_add_ip_addresses_to_addrinfo(cached, port, res)
|
|
242
235
|
else:
|
|
243
236
|
# Not cached, need to resolve
|
|
244
237
|
if address_cache and address_cache.has_cache():
|
|
245
238
|
_LOGGER.info("Host %s not in cache, will need to resolve", h)
|
|
246
239
|
uncached_hosts.append(h)
|
|
247
240
|
|
|
248
|
-
# Process cached addresses (includes direct IPs and cached lookups)
|
|
249
|
-
_add_ip_addresses_to_addrinfo(cached_addresses, port, res)
|
|
250
|
-
|
|
251
241
|
# If we have uncached hosts (only non-IP hostnames), resolve them
|
|
252
242
|
if uncached_hosts:
|
|
243
|
+
from aioesphomeapi.host_resolver import AddrInfo as AioAddrInfo
|
|
244
|
+
|
|
245
|
+
from esphome.core import EsphomeError
|
|
253
246
|
from esphome.resolver import AsyncResolver
|
|
254
247
|
|
|
255
248
|
resolver = AsyncResolver(uncached_hosts, port)
|
|
256
|
-
addr_infos =
|
|
249
|
+
addr_infos: list[AioAddrInfo] = []
|
|
250
|
+
try:
|
|
251
|
+
addr_infos = resolver.resolve()
|
|
252
|
+
except EsphomeError as err:
|
|
253
|
+
if not res:
|
|
254
|
+
# No pre-resolved addresses available, DNS resolution is fatal
|
|
255
|
+
raise
|
|
256
|
+
_LOGGER.info("%s (using %d already resolved IP addresses)", err, len(res))
|
|
257
|
+
|
|
257
258
|
# Convert aioesphomeapi AddrInfo to our format
|
|
258
259
|
for addr_info in addr_infos:
|
|
259
260
|
sockaddr = addr_info.sockaddr
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: esphome
|
|
3
|
-
Version: 2025.10.
|
|
3
|
+
Version: 2025.10.3
|
|
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-Expression: MIT
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
esphome/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
esphome/__main__.py,sha256=
|
|
2
|
+
esphome/__main__.py,sha256=mZntGYZogDYs6njugstrFFe7RZx2TlQv-2AmUOCdE3I,43943
|
|
3
3
|
esphome/address_cache.py,sha256=mXLDjOZ6NZebwRXSldZLnpPn51jfXeReRx0YdQ6oxOE,4622
|
|
4
4
|
esphome/automation.py,sha256=Gd_VHPDp5a1GYVNgwrzsCMuzHobmv49gcWdlV3y646g,17696
|
|
5
5
|
esphome/codegen.py,sha256=91Q9SVbTlgH_gFU4_sbVi6YEAiOjLuAGHG6qqV3lLHo,1939
|
|
6
6
|
esphome/config.py,sha256=fu7G01comMPAfWd-ZZzUyIqO6cuLb6F44Sxv2LIFCUc,45156
|
|
7
7
|
esphome/config_helpers.py,sha256=P-tlafqFIQuCxdWERlk38MXQcB9apHcR68-DgeUco5s,6207
|
|
8
|
-
esphome/config_validation.py,sha256=
|
|
9
|
-
esphome/const.py,sha256=
|
|
8
|
+
esphome/config_validation.py,sha256=r1llmDF0ePekWWblPwLd0Cnrbxwn0W1BBZubpBtYuEc,65057
|
|
9
|
+
esphome/const.py,sha256=Iw13HI_h56ExkXtKERtARogQBNfIqEGFM1qyohOSpE0,44487
|
|
10
10
|
esphome/coroutine.py,sha256=JFBDo8ngY46zhxvjk5aQ5MO_-qrqKDfKQTglEIqHrYY,11946
|
|
11
11
|
esphome/cpp_generator.py,sha256=DhHZT5s-Pbx5MJ762N_hFOYFo4Q9c0wJQG4p7UU_1lc,31901
|
|
12
12
|
esphome/cpp_helpers.py,sha256=r-hrUp7luke-ByuK2Z0TCzIvn4tTswMUkAzlVoKntiI,4039
|
|
@@ -16,7 +16,7 @@ esphome/espota2.py,sha256=WB9STR5RuoeKEa9ELYu9q2Ax8IqIXjoNw6SPydhOGvg,15219
|
|
|
16
16
|
esphome/external_files.py,sha256=BHNQqKGkY-AWZ7hEVPoB4mxgHQi-pYYHkrUayoXTa8M,3398
|
|
17
17
|
esphome/final_validate.py,sha256=EPhbU4xyEL3POdSY7oygyAIVvkeYM7qH-6eZWb76DFE,1898
|
|
18
18
|
esphome/git.py,sha256=GClrvAo4VsAhKRRDbqSv5nivtGZThEfbTCDxgq6uJyI,6615
|
|
19
|
-
esphome/helpers.py,sha256=
|
|
19
|
+
esphome/helpers.py,sha256=mZf55V1uwR_iDvDYnw6CYwcN95uJm1nf7XnoylwVhLs,17083
|
|
20
20
|
esphome/loader.py,sha256=ZixSTTXUDHiv7QDjsVQOqNM3MMBPbsZEn5JKtAwYONM,7545
|
|
21
21
|
esphome/log.py,sha256=f2wZVDYABr-2FNy5NzHjNey6Nf6HzVCp1zubfkk8o0w,2433
|
|
22
22
|
esphome/mqtt.py,sha256=f15I9DWxxo0wDj-9Aw7afSYQ0jpcPzHbmE6VVvPFruU,9912
|
|
@@ -418,12 +418,12 @@ esphome/components/bme680/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
|
418
418
|
esphome/components/bme680/bme680.cpp,sha256=WrRH-u_NJitaM5mFZkanPTVOjzyZ4EIq3rlf9aa1Oxc,16989
|
|
419
419
|
esphome/components/bme680/bme680.h,sha256=zdTFcpzNb3nSPy7q9V3iSJ5uBsmoZgJkzxU3Fcwf_BY,4678
|
|
420
420
|
esphome/components/bme680/sensor.py,sha256=fjZOcC0AymBF4f3vdgd-WfTfkqL0QrCOnaXdnGvGolU,5801
|
|
421
|
-
esphome/components/bme680_bsec/__init__.py,sha256=
|
|
421
|
+
esphome/components/bme680_bsec/__init__.py,sha256=gv6WRGGwdPw6-F0iVde6ahKAwt3g8n9QKbPqnVWCkeE,3068
|
|
422
422
|
esphome/components/bme680_bsec/bme680_bsec.cpp,sha256=I3YR9oQF_jP-9_FAG-BMhBZi_hE0mB_Ym8u0ZN6o9Mc,22630
|
|
423
423
|
esphome/components/bme680_bsec/bme680_bsec.h,sha256=aUGZXwSiu0wOlt13_mxhy0yKxToAInX2rnhZ_UQc7TM,5907
|
|
424
424
|
esphome/components/bme680_bsec/sensor.py,sha256=Y4efGwK7zDHbS8ET7o-bF__A86OJsZt2Ypl4sRtqKLE,4114
|
|
425
425
|
esphome/components/bme680_bsec/text_sensor.py,sha256=h2WQ_GjAOTsPqhCXwlfa-WmfOsUVWBcLKU5iO0fDEFw,921
|
|
426
|
-
esphome/components/bme68x_bsec2/__init__.py,sha256=
|
|
426
|
+
esphome/components/bme68x_bsec2/__init__.py,sha256=j0KAh7MifXz7E9PWuW1G5pSMN8AdsdrwzD1ZWKjlOtM,6240
|
|
427
427
|
esphome/components/bme68x_bsec2/bme68x_bsec2.cpp,sha256=LRIAb86G4WL2orOYPsKmOaeehPgQHwjP7yXR2DH8kjQ,20493
|
|
428
428
|
esphome/components/bme68x_bsec2/bme68x_bsec2.h,sha256=EVck6JgQOYydwRfO9Vvv5YgY4CDiMMwHzOXozJZZsNA,5415
|
|
429
429
|
esphome/components/bme68x_bsec2/sensor.py,sha256=AM-oEOcJuOmu55lkYZ7SOrbqx7wUYd4ku8s_DxK1cR8,4336
|
|
@@ -673,7 +673,7 @@ esphome/components/dashboard_import/dashboard_import.h,sha256=gPLB3_vwG3ma-j-VHe
|
|
|
673
673
|
esphome/components/datetime/__init__.py,sha256=_NjXvuxRyOQvLmf5E5A9B2e3PF8ZWmRTtw98dM10GGc,8911
|
|
674
674
|
esphome/components/datetime/date_entity.cpp,sha256=IbEWpZwT6bqNOd6WRu8_Jm6RH9j2oXznydiZ_xRPg7w,3700
|
|
675
675
|
esphome/components/datetime/date_entity.h,sha256=vg5e6YYGMaRQw0lz8c-xt4Sji6Tk2rzDwp5Q4g70kq0,2592
|
|
676
|
-
esphome/components/datetime/datetime_base.h,sha256=
|
|
676
|
+
esphome/components/datetime/datetime_base.h,sha256=6exbxBZDJOcziQBQfuI4Kjxk2m6XUXO2yJbnZYCJgeM,1028
|
|
677
677
|
esphome/components/datetime/datetime_entity.cpp,sha256=gWxzAJFSnkxWw1xYdPo-KDYvjZxMs-IHT8UAN8q476A,7758
|
|
678
678
|
esphome/components/datetime/datetime_entity.h,sha256=C7wW-0U2GV6FJWSBpP5vNKJtI3pK3jJxjGggHG5kGgA,3750
|
|
679
679
|
esphome/components/datetime/time_entity.cpp,sha256=R7bZ569BcA8qxhl0cfhEyh2uyxLdIrfbcWCvM4wHjd0,4411
|
|
@@ -863,10 +863,10 @@ esphome/components/es8388/select/adc_input_mic_select.cpp,sha256=xBlweJHP_BHSvwP
|
|
|
863
863
|
esphome/components/es8388/select/adc_input_mic_select.h,sha256=1Wf54OGjnrj9vFe7WuIU10qraRAJX7HM1qEcCTTSlvc,336
|
|
864
864
|
esphome/components/es8388/select/dac_output_select.cpp,sha256=FDOC7NHBaR34BqzzsPrmzBIzY_4o_YkF3_wSs_A9LC8,302
|
|
865
865
|
esphome/components/es8388/select/dac_output_select.h,sha256=u00z0jHqKmqsaKht3b3k7aGtYudU0cCJRTOw1Zh-mbw,334
|
|
866
|
-
esphome/components/esp32/__init__.py,sha256=
|
|
866
|
+
esphome/components/esp32/__init__.py,sha256=OIvKIuakzmwF5a0VUqvI1vFhZMD_RwVk7kjgueZaDUE,39115
|
|
867
867
|
esphome/components/esp32/boards.py,sha256=O2f122xZLngeY1pBbyjThMd1rLfrda1332rZF68n2KM,58436
|
|
868
868
|
esphome/components/esp32/const.py,sha256=3sPibOKzbGgtSUIn7PfTQJRyob6x1vUtxagKCGS9CyY,1130
|
|
869
|
-
esphome/components/esp32/core.cpp,sha256=
|
|
869
|
+
esphome/components/esp32/core.cpp,sha256=wgkilw_-s3YRT-b0CBSaPNj5r3Ey77ZEE0qd63B8Drs,3197
|
|
870
870
|
esphome/components/esp32/gpio.cpp,sha256=_lXijDd4c6cB2HI8vIUtrmKodoGZ43AOSRgdOkS3pIg,6870
|
|
871
871
|
esphome/components/esp32/gpio.h,sha256=uMa21XBEGZedxBP9EsXhf815BuOSTr7md4Ww6cFHcws,2314
|
|
872
872
|
esphome/components/esp32/gpio.py,sha256=gQFf7rA1DB-TRgu72ADY11LBBmKhWWFRTuQwxGgdgSc,7760
|
|
@@ -1178,7 +1178,7 @@ esphome/components/hbridge/switch/__init__.py,sha256=7EJql03a0gGpfD_3Ofe6xSRmhwV
|
|
|
1178
1178
|
esphome/components/hbridge/switch/hbridge_switch.cpp,sha256=Eh_zNYDq0cpCV5Px22Pe5wzc7cwaWMplhn3onmtNlxA,2770
|
|
1179
1179
|
esphome/components/hbridge/switch/hbridge_switch.h,sha256=NwguFzV68Fa6OmzvzFM8Y-Ig1FYdatEwP_pe-jd8r4A,1352
|
|
1180
1180
|
esphome/components/hdc1080/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1181
|
-
esphome/components/hdc1080/hdc1080.cpp,sha256=
|
|
1181
|
+
esphome/components/hdc1080/hdc1080.cpp,sha256=EWIWrv5FodXfj0SOwgHG_OkX7DX50CRvT7hggCVKQ14,2424
|
|
1182
1182
|
esphome/components/hdc1080/hdc1080.h,sha256=jqr4UyU8o8jS929N0ba86b4wjQStYYIt1kfHdmsokGM,722
|
|
1183
1183
|
esphome/components/hdc1080/sensor.py,sha256=XSg1Ailx3GlxZX2pHwyxVxK6IaQcrZpxwfCYUiimb6g,1688
|
|
1184
1184
|
esphome/components/he60r/__init__.py,sha256=4Nn7UhpMJ9oSbuLdyVEW7G9PlIey2v33SWRNVizt9Oc,30
|
|
@@ -1286,7 +1286,7 @@ esphome/components/http_request/update/__init__.py,sha256=cIoR3Gw0Bc2ZKoc-1LfW1g
|
|
|
1286
1286
|
esphome/components/http_request/update/http_request_update.cpp,sha256=ly_2n4pE751OPPhYpXARBKswhr8krxpW5LPTCTkVLB4,7517
|
|
1287
1287
|
esphome/components/http_request/update/http_request_update.h,sha256=8OP3PwsEAUsqJfkNOwOHUJl7HJdgknHBBOiAbAiBPXU,1255
|
|
1288
1288
|
esphome/components/htu21d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1289
|
-
esphome/components/htu21d/htu21d.cpp,sha256=
|
|
1289
|
+
esphome/components/htu21d/htu21d.cpp,sha256=WP0_Wvtm7BAhb8iwTsBnQS39joxtUkzPqqrk-9ERCEI,4560
|
|
1290
1290
|
esphome/components/htu21d/htu21d.h,sha256=zbuxEFgwjRWYp1x1mW1AX0_B1ZfV5BeNX2Ce56xV1Lc,1894
|
|
1291
1291
|
esphome/components/htu21d/sensor.py,sha256=yetZH4qlaDqyFU9Mo3B7ByqB5kNpVeqrQuqJDM0Ifeg,3839
|
|
1292
1292
|
esphome/components/htu31d/__init__.py,sha256=OVxEVhYcUY-P_ZwdHRIQ_gjZCxGPi12jHy7xuix1z-A,36
|
|
@@ -2680,7 +2680,7 @@ esphome/components/scd4x/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
2680
2680
|
esphome/components/scd4x/automation.h,sha256=bGkGwV0wHimPe_0oug111GAsCJyahpr1LRoW0n1F81E,715
|
|
2681
2681
|
esphome/components/scd4x/scd4x.cpp,sha256=fgXtz-GTE4A0gFG4XJerYuAxSdXsuM1tPDTEW5uHlRY,11834
|
|
2682
2682
|
esphome/components/scd4x/scd4x.h,sha256=ZCCgczDXJ4ocxEMKeAN9RFaMcZTWls4E-tIru5DCIcU,2216
|
|
2683
|
-
esphome/components/scd4x/sensor.py,sha256=
|
|
2683
|
+
esphome/components/scd4x/sensor.py,sha256=p2C1A80yBw42C69jUtimAPdVBz3E5CjvvGY2nWf8mU8,5629
|
|
2684
2684
|
esphome/components/script/__init__.py,sha256=N4B0qNFRls5Z4LfHQLDgeCZ24RVD8mIhjA6Er-SBXCk,7771
|
|
2685
2685
|
esphome/components/script/script.cpp,sha256=7-ucdkKqP25FdHWkrEWa70oo85si2zKB1lbY1QKZXmM,531
|
|
2686
2686
|
esphome/components/script/script.h,sha256=Pc-CfDOklDggE2RIurKoLBxxeyM5LltZO636STEplwI,8584
|
|
@@ -3379,15 +3379,15 @@ esphome/components/uart/uart.cpp,sha256=OIxeRlO_6X1wKbsvqTDMf8PAr0M1c7TdM1tRAQuu
|
|
|
3379
3379
|
esphome/components/uart/uart.h,sha256=n2S1ZyH5jOf3ua9Sm5uU-HP0ZQX_OAV2TmngLUbE8bI,2531
|
|
3380
3380
|
esphome/components/uart/uart_component.cpp,sha256=5Kta9_Ubw3LOvrxooGR8hnYLOhiqLhpaAUNXoEBHuvA,864
|
|
3381
3381
|
esphome/components/uart/uart_component.h,sha256=GomkDgOYOI74H5XjRHxnqy9o8F1r5czYNiWKNQUWg9A,7142
|
|
3382
|
-
esphome/components/uart/uart_component_esp8266.cpp,sha256=
|
|
3382
|
+
esphome/components/uart/uart_component_esp8266.cpp,sha256=YfIEnD-rWqIsXGQxoZ7jBxOkbs_xdjxInMlLjd74acs,10934
|
|
3383
3383
|
esphome/components/uart/uart_component_esp8266.h,sha256=5KMN-fUHCDbS9ppn-PKziVknoBLZqy-tJx9HGXh_qOE,2428
|
|
3384
|
-
esphome/components/uart/uart_component_esp_idf.cpp,sha256=
|
|
3384
|
+
esphome/components/uart/uart_component_esp_idf.cpp,sha256=_rbThbjC_hAU7l-1ZB6Rg7LqgmnrBVgCmiGxOUZ2GDY,9186
|
|
3385
3385
|
esphome/components/uart/uart_component_esp_idf.h,sha256=WDeyfUBQ3OLX6xJoKgEPaFtjiU4f5CoN-a5NAXnXHXE,1595
|
|
3386
3386
|
esphome/components/uart/uart_component_host.cpp,sha256=s1qnqA8azZR2lLGIXRVIh22Tf02dKIOw-nDuKVZ4qns,7165
|
|
3387
3387
|
esphome/components/uart/uart_component_host.h,sha256=3U7oLyjyWW0sOuwSx1puyeWR-w_a7ukhE-3obxCyHWU,992
|
|
3388
|
-
esphome/components/uart/uart_component_libretiny.cpp,sha256=
|
|
3388
|
+
esphome/components/uart/uart_component_libretiny.cpp,sha256=8KtXFFAwaX9qDRP_SnkTp-ZcwDtRBfwPyP7kpAsbPJE,4830
|
|
3389
3389
|
esphome/components/uart/uart_component_libretiny.h,sha256=Enf4Chvo7w3I4B3e9uT7qi6frqG_lXRB4dFQRorjiGE,990
|
|
3390
|
-
esphome/components/uart/uart_component_rp2040.cpp,sha256=
|
|
3390
|
+
esphome/components/uart/uart_component_rp2040.cpp,sha256=eJ1j7F-TctzzgO8GON0pl8FD7mSJ_h815kMMLRD58RU,5583
|
|
3391
3391
|
esphome/components/uart/uart_component_rp2040.h,sha256=rRbmMP_UlTQa-Qn2i2HgbKcxisXjrTsc-7B8CWLVy44,1016
|
|
3392
3392
|
esphome/components/uart/uart_debugger.cpp,sha256=GhHBYSirECFJqmqy38eCv0ayKUYNgdD2FV9aVKQpKwk,5493
|
|
3393
3393
|
esphome/components/uart/uart_debugger.h,sha256=MCZ7YEd-iIoEJcdEoop0Xb1e4A64aNxLXPGSKcoQZCI,4008
|
|
@@ -3723,7 +3723,7 @@ esphome/components/zyaura/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
|
3723
3723
|
esphome/components/zyaura/sensor.py,sha256=cSmO4ozYdi4ZD7NK4lmYjswWVmJoDvEruU1HhGrZSE0,2476
|
|
3724
3724
|
esphome/components/zyaura/zyaura.cpp,sha256=F7WM8XAZ5MYuCD3eERm2_IA-O7sP1i-A-yF5TV4PqX8,3679
|
|
3725
3725
|
esphome/components/zyaura/zyaura.h,sha256=7O3EGFIopUEfBp3A5sBC0l4zx2mesRxDWa_MBdGtPKQ,2307
|
|
3726
|
-
esphome/core/__init__.py,sha256=
|
|
3726
|
+
esphome/core/__init__.py,sha256=a2o-xr9YWut3tF8oZZOY43pl3gdb-EhLfckgel3ZjoQ,30571
|
|
3727
3727
|
esphome/core/application.cpp,sha256=3cpbiUjvUf4W4qmDOmXMkWUVtMz5BmnOkgj3eylC1wo,22814
|
|
3728
3728
|
esphome/core/application.h,sha256=Enfg00Tc0egbU3-WvoNGqTDy4TZk12tYwMS5Laf4_Y8,20439
|
|
3729
3729
|
esphome/core/area.h,sha256=mtFxmuv8fC2hArcey3cZ0F6hMXSO2QpFZ9Xv49z4rvk,393
|
|
@@ -3775,8 +3775,8 @@ esphome/dashboard/dashboard.py,sha256=4k32z98tQXj01FKHfXePLlP_zch-piHSxdbhjdgf3a
|
|
|
3775
3775
|
esphome/dashboard/dns.py,sha256=zmePZ5i_qTMbjku-7sOFSRHLBH_BuI4wiu2nLhIlm9c,1999
|
|
3776
3776
|
esphome/dashboard/entries.py,sha256=L-o0Wvo4moS-W-OGViZ3lOUTWyR_Sm1V6P_RrbApqqw,15607
|
|
3777
3777
|
esphome/dashboard/models.py,sha256=YKr-M-PY1IO-_mtxL2sw5hWbFGXVsBQXq0-mLiyJXsc,2181
|
|
3778
|
-
esphome/dashboard/settings.py,sha256=
|
|
3779
|
-
esphome/dashboard/web_server.py,sha256=
|
|
3778
|
+
esphome/dashboard/settings.py,sha256=CI9WO--Xntt1Nyyknbj61vVfWFYGA7QUFfwoR0UOHCg,3495
|
|
3779
|
+
esphome/dashboard/web_server.py,sha256=xQ3aTnQNqpEK02Vi4YE0-ipuEp-mT9EGA8Z-bln2-ks,56665
|
|
3780
3780
|
esphome/dashboard/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3781
3781
|
esphome/dashboard/status/mdns.py,sha256=2cxZsnIxDSsaaEiNQ_jIxW-LdvEigFMerfPTr2zy31g,6621
|
|
3782
3782
|
esphome/dashboard/status/mqtt.py,sha256=2QOq1vgwJCHW5uL_hqmi_R5fX5OTeTJUHx7c0pMLQKE,2578
|
|
@@ -3786,9 +3786,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
|
|
|
3786
3786
|
esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
|
|
3787
3787
|
esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
|
|
3788
3788
|
esphome/dashboard/util/text.py,sha256=wwFtORlvHjsYkqb68IT-772LHAhWxT4OtnkIcPICQB0,317
|
|
3789
|
-
esphome-2025.10.
|
|
3790
|
-
esphome-2025.10.
|
|
3791
|
-
esphome-2025.10.
|
|
3792
|
-
esphome-2025.10.
|
|
3793
|
-
esphome-2025.10.
|
|
3794
|
-
esphome-2025.10.
|
|
3789
|
+
esphome-2025.10.3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
|
3790
|
+
esphome-2025.10.3.dist-info/METADATA,sha256=t-rv1wLsMFgKES-CpiaR1zIPZJ1hW2aNSd7n_eArdf0,3633
|
|
3791
|
+
esphome-2025.10.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
3792
|
+
esphome-2025.10.3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
|
3793
|
+
esphome-2025.10.3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
|
3794
|
+
esphome-2025.10.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|