esphome 2025.9.0b2__py3-none-any.whl → 2025.9.0b4__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/ade7880/ade7880.cpp +1 -1
- esphome/components/ethernet/__init__.py +11 -0
- esphome/components/ethernet/ethernet_component.cpp +4 -0
- esphome/components/ethernet/ethernet_component.h +2 -0
- esphome/components/mqtt/mqtt_client.cpp +1 -1
- esphome/components/select/select.cpp +3 -3
- esphome/components/select/select_call.cpp +1 -1
- esphome/const.py +1 -1
- esphome/core/defines.h +1 -0
- esphome/dashboard/web_server.py +2 -5
- esphome/wizard.py +42 -8
- esphome/writer.py +13 -0
- {esphome-2025.9.0b2.dist-info → esphome-2025.9.0b4.dist-info}/METADATA +1 -1
- {esphome-2025.9.0b2.dist-info → esphome-2025.9.0b4.dist-info}/RECORD +18 -18
- {esphome-2025.9.0b2.dist-info → esphome-2025.9.0b4.dist-info}/WHEEL +0 -0
- {esphome-2025.9.0b2.dist-info → esphome-2025.9.0b4.dist-info}/entry_points.txt +0 -0
- {esphome-2025.9.0b2.dist-info → esphome-2025.9.0b4.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.9.0b2.dist-info → esphome-2025.9.0b4.dist-info}/top_level.txt +0 -0
@@ -113,7 +113,7 @@ void ADE7880::update() {
|
|
113
113
|
if (this->channel_a_ != nullptr) {
|
114
114
|
auto *chan = this->channel_a_;
|
115
115
|
this->update_sensor_from_s24zp_register16_(chan->current, AIRMS, [](float val) { return val / 100000.0f; });
|
116
|
-
this->update_sensor_from_s24zp_register16_(chan->voltage,
|
116
|
+
this->update_sensor_from_s24zp_register16_(chan->voltage, AVRMS, [](float val) { return val / 10000.0f; });
|
117
117
|
this->update_sensor_from_s24zp_register16_(chan->active_power, AWATT, [](float val) { return val / 100.0f; });
|
118
118
|
this->update_sensor_from_s24zp_register16_(chan->apparent_power, AVA, [](float val) { return val / 100.0f; });
|
119
119
|
this->update_sensor_from_s16_register16_(chan->power_factor, APF,
|
@@ -77,6 +77,13 @@ ETHERNET_TYPES = {
|
|
77
77
|
"DM9051": EthernetType.ETHERNET_TYPE_DM9051,
|
78
78
|
}
|
79
79
|
|
80
|
+
# PHY types that need compile-time defines for conditional compilation
|
81
|
+
_PHY_TYPE_TO_DEFINE = {
|
82
|
+
"KSZ8081": "USE_ETHERNET_KSZ8081",
|
83
|
+
"KSZ8081RNA": "USE_ETHERNET_KSZ8081",
|
84
|
+
# Add other PHY types here only if they need conditional compilation
|
85
|
+
}
|
86
|
+
|
80
87
|
SPI_ETHERNET_TYPES = ["W5500", "DM9051"]
|
81
88
|
SPI_ETHERNET_DEFAULT_POLLING_INTERVAL = TimePeriodMilliseconds(milliseconds=10)
|
82
89
|
|
@@ -345,6 +352,10 @@ async def to_code(config):
|
|
345
352
|
if CONF_MANUAL_IP in config:
|
346
353
|
cg.add(var.set_manual_ip(manual_ip(config[CONF_MANUAL_IP])))
|
347
354
|
|
355
|
+
# Add compile-time define for PHY types with specific code
|
356
|
+
if phy_define := _PHY_TYPE_TO_DEFINE.get(config[CONF_TYPE]):
|
357
|
+
cg.add_define(phy_define)
|
358
|
+
|
348
359
|
cg.add_define("USE_ETHERNET")
|
349
360
|
|
350
361
|
# Disable WiFi when using Ethernet to save memory
|
@@ -229,10 +229,12 @@ void EthernetComponent::setup() {
|
|
229
229
|
ESPHL_ERROR_CHECK(err, "ETH driver install error");
|
230
230
|
|
231
231
|
#ifndef USE_ETHERNET_SPI
|
232
|
+
#ifdef USE_ETHERNET_KSZ8081
|
232
233
|
if (this->type_ == ETHERNET_TYPE_KSZ8081RNA && this->clk_mode_ == EMAC_CLK_OUT) {
|
233
234
|
// KSZ8081RNA default is incorrect. It expects a 25MHz clock instead of the 50MHz we provide.
|
234
235
|
this->ksz8081_set_clock_reference_(mac);
|
235
236
|
}
|
237
|
+
#endif // USE_ETHERNET_KSZ8081
|
236
238
|
|
237
239
|
for (const auto &phy_register : this->phy_registers_) {
|
238
240
|
this->write_phy_register_(mac, phy_register);
|
@@ -721,6 +723,7 @@ bool EthernetComponent::powerdown() {
|
|
721
723
|
|
722
724
|
#ifndef USE_ETHERNET_SPI
|
723
725
|
|
726
|
+
#ifdef USE_ETHERNET_KSZ8081
|
724
727
|
constexpr uint8_t KSZ80XX_PC2R_REG_ADDR = 0x1F;
|
725
728
|
|
726
729
|
void EthernetComponent::ksz8081_set_clock_reference_(esp_eth_mac_t *mac) {
|
@@ -749,6 +752,7 @@ void EthernetComponent::ksz8081_set_clock_reference_(esp_eth_mac_t *mac) {
|
|
749
752
|
ESP_LOGVV(TAG, "KSZ8081 PHY Control 2: %s", format_hex_pretty((u_int8_t *) &phy_control_2, 2).c_str());
|
750
753
|
}
|
751
754
|
}
|
755
|
+
#endif // USE_ETHERNET_KSZ8081
|
752
756
|
|
753
757
|
void EthernetComponent::write_phy_register_(esp_eth_mac_t *mac, PHYRegister register_data) {
|
754
758
|
esp_err_t err;
|
@@ -104,8 +104,10 @@ class EthernetComponent : public Component {
|
|
104
104
|
void start_connect_();
|
105
105
|
void finish_connect_();
|
106
106
|
void dump_connect_params_();
|
107
|
+
#ifdef USE_ETHERNET_KSZ8081
|
107
108
|
/// @brief Set `RMII Reference Clock Select` bit for KSZ8081.
|
108
109
|
void ksz8081_set_clock_reference_(esp_eth_mac_t *mac);
|
110
|
+
#endif
|
109
111
|
/// @brief Set arbitratry PHY registers from config.
|
110
112
|
void write_phy_register_(esp_eth_mac_t *mac, PHYRegister register_data);
|
111
113
|
|
@@ -491,7 +491,7 @@ bool MQTTClientComponent::publish(const std::string &topic, const std::string &p
|
|
491
491
|
|
492
492
|
bool MQTTClientComponent::publish(const std::string &topic, const char *payload, size_t payload_length, uint8_t qos,
|
493
493
|
bool retain) {
|
494
|
-
return publish({.topic = topic, .payload = payload, .qos = qos, .retain = retain});
|
494
|
+
return publish({.topic = topic, .payload = std::string(payload, payload_length), .qos = qos, .retain = retain});
|
495
495
|
}
|
496
496
|
|
497
497
|
bool MQTTClientComponent::publish(const MQTTMessage &message) {
|
@@ -28,12 +28,12 @@ bool Select::has_option(const std::string &option) const { return this->index_of
|
|
28
28
|
bool Select::has_index(size_t index) const { return index < this->size(); }
|
29
29
|
|
30
30
|
size_t Select::size() const {
|
31
|
-
auto options = traits.get_options();
|
31
|
+
const auto &options = traits.get_options();
|
32
32
|
return options.size();
|
33
33
|
}
|
34
34
|
|
35
35
|
optional<size_t> Select::index_of(const std::string &option) const {
|
36
|
-
auto options = traits.get_options();
|
36
|
+
const auto &options = traits.get_options();
|
37
37
|
auto it = std::find(options.begin(), options.end(), option);
|
38
38
|
if (it == options.end()) {
|
39
39
|
return {};
|
@@ -51,7 +51,7 @@ optional<size_t> Select::active_index() const {
|
|
51
51
|
|
52
52
|
optional<std::string> Select::at(size_t index) const {
|
53
53
|
if (this->has_index(index)) {
|
54
|
-
auto options = traits.get_options();
|
54
|
+
const auto &options = traits.get_options();
|
55
55
|
return options.at(index);
|
56
56
|
} else {
|
57
57
|
return {};
|
@@ -45,7 +45,7 @@ void SelectCall::perform() {
|
|
45
45
|
auto *parent = this->parent_;
|
46
46
|
const auto *name = parent->get_name().c_str();
|
47
47
|
const auto &traits = parent->traits;
|
48
|
-
auto options = traits.get_options();
|
48
|
+
const auto &options = traits.get_options();
|
49
49
|
|
50
50
|
if (this->operation_ == SELECT_OP_NONE) {
|
51
51
|
ESP_LOGW(TAG, "'%s' - SelectCall performed without selecting an operation", name);
|
esphome/const.py
CHANGED
esphome/core/defines.h
CHANGED
esphome/dashboard/web_server.py
CHANGED
@@ -1038,12 +1038,9 @@ class ArchiveRequestHandler(BaseHandler):
|
|
1038
1038
|
shutil.move(config_file, os.path.join(archive_path, configuration))
|
1039
1039
|
|
1040
1040
|
storage_json = StorageJSON.load(storage_path)
|
1041
|
-
if storage_json is not None:
|
1041
|
+
if storage_json is not None and storage_json.build_path:
|
1042
1042
|
# Delete build folder (if exists)
|
1043
|
-
|
1044
|
-
build_folder = os.path.join(settings.config_dir, name)
|
1045
|
-
if build_folder is not None:
|
1046
|
-
shutil.rmtree(build_folder, os.path.join(archive_path, name))
|
1043
|
+
shutil.rmtree(storage_json.build_path, ignore_errors=True)
|
1047
1044
|
|
1048
1045
|
|
1049
1046
|
class UnArchiveRequestHandler(BaseHandler):
|
esphome/wizard.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import os
|
2
2
|
import random
|
3
3
|
import string
|
4
|
+
from typing import Literal, NotRequired, TypedDict, Unpack
|
4
5
|
import unicodedata
|
5
6
|
|
6
7
|
import voluptuous as vol
|
@@ -103,11 +104,25 @@ HARDWARE_BASE_CONFIGS = {
|
|
103
104
|
}
|
104
105
|
|
105
106
|
|
106
|
-
def sanitize_double_quotes(value):
|
107
|
+
def sanitize_double_quotes(value: str) -> str:
|
107
108
|
return value.replace("\\", "\\\\").replace('"', '\\"')
|
108
109
|
|
109
110
|
|
110
|
-
|
111
|
+
class WizardFileKwargs(TypedDict):
|
112
|
+
"""Keyword arguments for wizard_file function."""
|
113
|
+
|
114
|
+
name: str
|
115
|
+
platform: Literal["ESP8266", "ESP32", "RP2040", "BK72XX", "LN882X", "RTL87XX"]
|
116
|
+
board: str
|
117
|
+
ssid: NotRequired[str]
|
118
|
+
psk: NotRequired[str]
|
119
|
+
password: NotRequired[str]
|
120
|
+
ota_password: NotRequired[str]
|
121
|
+
api_encryption_key: NotRequired[str]
|
122
|
+
friendly_name: NotRequired[str]
|
123
|
+
|
124
|
+
|
125
|
+
def wizard_file(**kwargs: Unpack[WizardFileKwargs]) -> str:
|
111
126
|
letters = string.ascii_letters + string.digits
|
112
127
|
ap_name_base = kwargs["name"].replace("_", " ").title()
|
113
128
|
ap_name = f"{ap_name_base} Fallback Hotspot"
|
@@ -180,7 +195,25 @@ captive_portal:
|
|
180
195
|
return config
|
181
196
|
|
182
197
|
|
183
|
-
|
198
|
+
class WizardWriteKwargs(TypedDict):
|
199
|
+
"""Keyword arguments for wizard_write function."""
|
200
|
+
|
201
|
+
name: str
|
202
|
+
type: Literal["basic", "empty", "upload"]
|
203
|
+
# Required for "basic" type
|
204
|
+
board: NotRequired[str]
|
205
|
+
platform: NotRequired[str]
|
206
|
+
ssid: NotRequired[str]
|
207
|
+
psk: NotRequired[str]
|
208
|
+
password: NotRequired[str]
|
209
|
+
ota_password: NotRequired[str]
|
210
|
+
api_encryption_key: NotRequired[str]
|
211
|
+
friendly_name: NotRequired[str]
|
212
|
+
# Required for "upload" type
|
213
|
+
file_text: NotRequired[str]
|
214
|
+
|
215
|
+
|
216
|
+
def wizard_write(path: str, **kwargs: Unpack[WizardWriteKwargs]) -> bool:
|
184
217
|
from esphome.components.bk72xx import boards as bk72xx_boards
|
185
218
|
from esphome.components.esp32 import boards as esp32_boards
|
186
219
|
from esphome.components.esp8266 import boards as esp8266_boards
|
@@ -237,14 +270,14 @@ def wizard_write(path, **kwargs):
|
|
237
270
|
|
238
271
|
if get_bool_env(ENV_QUICKWIZARD):
|
239
272
|
|
240
|
-
def sleep(time):
|
273
|
+
def sleep(time: float) -> None:
|
241
274
|
pass
|
242
275
|
|
243
276
|
else:
|
244
277
|
from time import sleep
|
245
278
|
|
246
279
|
|
247
|
-
def safe_print_step(step, big):
|
280
|
+
def safe_print_step(step: int, big: str) -> None:
|
248
281
|
safe_print()
|
249
282
|
safe_print()
|
250
283
|
safe_print(f"============= STEP {step} =============")
|
@@ -253,14 +286,14 @@ def safe_print_step(step, big):
|
|
253
286
|
sleep(0.25)
|
254
287
|
|
255
288
|
|
256
|
-
def default_input(text, default):
|
289
|
+
def default_input(text: str, default: str) -> str:
|
257
290
|
safe_print()
|
258
291
|
safe_print(f"Press ENTER for default ({default})")
|
259
292
|
return safe_input(text.format(default)) or default
|
260
293
|
|
261
294
|
|
262
295
|
# From https://stackoverflow.com/a/518232/8924614
|
263
|
-
def strip_accents(value):
|
296
|
+
def strip_accents(value: str) -> str:
|
264
297
|
return "".join(
|
265
298
|
c
|
266
299
|
for c in unicodedata.normalize("NFD", str(value))
|
@@ -268,7 +301,7 @@ def strip_accents(value):
|
|
268
301
|
)
|
269
302
|
|
270
303
|
|
271
|
-
def wizard(path):
|
304
|
+
def wizard(path: str) -> int:
|
272
305
|
from esphome.components.bk72xx import boards as bk72xx_boards
|
273
306
|
from esphome.components.esp32 import boards as esp32_boards
|
274
307
|
from esphome.components.esp8266 import boards as esp8266_boards
|
@@ -509,6 +542,7 @@ def wizard(path):
|
|
509
542
|
ssid=ssid,
|
510
543
|
psk=psk,
|
511
544
|
password=password,
|
545
|
+
type="basic",
|
512
546
|
):
|
513
547
|
return 1
|
514
548
|
|
esphome/writer.py
CHANGED
@@ -315,6 +315,19 @@ def clean_build():
|
|
315
315
|
_LOGGER.info("Deleting %s", dependencies_lock)
|
316
316
|
os.remove(dependencies_lock)
|
317
317
|
|
318
|
+
# Clean PlatformIO cache to resolve CMake compiler detection issues
|
319
|
+
# This helps when toolchain paths change or get corrupted
|
320
|
+
try:
|
321
|
+
from platformio.project.helpers import get_project_cache_dir
|
322
|
+
except ImportError:
|
323
|
+
# PlatformIO is not available, skip cache cleaning
|
324
|
+
pass
|
325
|
+
else:
|
326
|
+
cache_dir = get_project_cache_dir()
|
327
|
+
if cache_dir and cache_dir.strip() and os.path.isdir(cache_dir):
|
328
|
+
_LOGGER.info("Deleting PlatformIO cache %s", cache_dir)
|
329
|
+
shutil.rmtree(cache_dir)
|
330
|
+
|
318
331
|
|
319
332
|
GITIGNORE_CONTENT = """# Gitignore settings for ESPHome
|
320
333
|
# This is an example and may include too much for your use-case.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: esphome
|
3
|
-
Version: 2025.9.
|
3
|
+
Version: 2025.9.0b4
|
4
4
|
Summary: ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.
|
5
5
|
Author-email: The ESPHome Authors <esphome@openhomefoundation.org>
|
6
6
|
License: MIT
|
@@ -5,7 +5,7 @@ esphome/codegen.py,sha256=H_WB4rj0uEowvlhEb31EjJQwutLQ5CQkJIsNgDK-wx8,1917
|
|
5
5
|
esphome/config.py,sha256=74-Y3XKtlB9h__fsu-Zvj6PanDWufVGo1-W4jlG-8cg,43172
|
6
6
|
esphome/config_helpers.py,sha256=E0UO0khX9JW-br_NSsDlLH3VuE-YwMQ99_pzEQVupDc,5391
|
7
7
|
esphome/config_validation.py,sha256=WB_2g9itbOi2z8bo25t8AG1rKHzLZdfa_DiTYQMuxrQ,64839
|
8
|
-
esphome/const.py,sha256=
|
8
|
+
esphome/const.py,sha256=OJSPrWEJdmTRErus6q7bm4Ci5G8OZWQQetSOVvFoJYg,44218
|
9
9
|
esphome/coroutine.py,sha256=q2Bcr0MU6CviHLYRV_0lvSo0sLKQnsVlDM0yw-JxOa4,11587
|
10
10
|
esphome/cpp_generator.py,sha256=C9O-H6ekHHdIEsfLGiqo-Sv6LZCmS0OL4A5ZGYHyh6U,32209
|
11
11
|
esphome/cpp_helpers.py,sha256=r-hrUp7luke-ByuK2Z0TCzIvn4tTswMUkAzlVoKntiI,4039
|
@@ -28,8 +28,8 @@ esphome/types.py,sha256=w5JgG0GQ3vWRwcLpf7A-hkbjRNDX70G0ye845zSyWfg,625
|
|
28
28
|
esphome/util.py,sha256=IJvyB7f305s8YSM4WgjIPNavTlDPapKnUqmIEARpF2s,11213
|
29
29
|
esphome/voluptuous_schema.py,sha256=EKm4CIP5-e6wY6L1_RleMGCDYbFOWTK_Sa_oO94Advc,9529
|
30
30
|
esphome/vscode.py,sha256=Zg6ToHy7holnMswcSUGm6-89mRsf88owU2kr864eTP0,4241
|
31
|
-
esphome/wizard.py,sha256=
|
32
|
-
esphome/writer.py,sha256=
|
31
|
+
esphome/wizard.py,sha256=xDcHKoJa4pCUJBQjL8BuB2QnwFu1E7z1GlEqW0kFUFo,17573
|
32
|
+
esphome/writer.py,sha256=FGHW4MrPDv6GSOZdu8jTYf6FdwyjODIydHf2_DTlUNA,10904
|
33
33
|
esphome/yaml_util.py,sha256=_NKLTaGK9rqjV3r3i-5d_HfZoPBtbtqIvZZ86qMt-oI,23166
|
34
34
|
esphome/zeroconf.py,sha256=dy3aWh1Lf4Sh5e7Izlq30FkdzAKWA6IGvZkXuxYrxFE,6511
|
35
35
|
esphome/build_gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -78,7 +78,7 @@ esphome/components/addressable_light/addressable_light_display.cpp,sha256=fjrgB1
|
|
78
78
|
esphome/components/addressable_light/addressable_light_display.h,sha256=EMj2TMZ5OqUI4WR359i14Bi69iWnP648bkYV45TDpuE,2131
|
79
79
|
esphome/components/addressable_light/display.py,sha256=StgJQLmL0a9_r3fwzaeK8eVtftOxaxUetHTflo4GsmI,2011
|
80
80
|
esphome/components/ade7880/__init__.py,sha256=KMBEOgB15HIAc5zEuHpqMdxuFR_pJl0aUKDmnRXaEcg,28
|
81
|
-
esphome/components/ade7880/ade7880.cpp,sha256=
|
81
|
+
esphome/components/ade7880/ade7880.cpp,sha256=xNG6IaYf8phgHwXdlLqkC-TXt0pj3W-6MKVHMprWjaM,12933
|
82
82
|
esphome/components/ade7880/ade7880.h,sha256=GbZyr59cjZqW8C4OVWCpmGEp6NgcXcWgFoPb4wCpsPE,5210
|
83
83
|
esphome/components/ade7880/ade7880_i2c.cpp,sha256=sp3QBp1Obs7MSpMbv3JPR4Rt1P1gEsBVKFQVgS-BM2s,3666
|
84
84
|
esphome/components/ade7880/ade7880_registers.h,sha256=kQCxkKmnPCgGNHwYt0-anwhChIN3HgrCn8WLp1Xe2Xg,7558
|
@@ -970,10 +970,10 @@ esphome/components/espnow/espnow_component.cpp,sha256=cVGDLhpyYV33P0B5U__M9HUJTX
|
|
970
970
|
esphome/components/espnow/espnow_component.h,sha256=wQpUgP7vnQ8quScoOxdfEyyDQ77B4i1ryhSiwbNnqSI,6971
|
971
971
|
esphome/components/espnow/espnow_err.h,sha256=XpcviJ6_EdTPdJ7f_DX3pWcKsm9FVfLtczO-JeGMoRg,649
|
972
972
|
esphome/components/espnow/espnow_packet.h,sha256=zZGNt5qGWWcq9Sfwmc685VgLH4AEmYYzxZBF0uHrvMM,5692
|
973
|
-
esphome/components/ethernet/__init__.py,sha256=
|
973
|
+
esphome/components/ethernet/__init__.py,sha256=fRSFyrdu_o2396Feu7bHETyDWgtdV90lVFS-rO-Q6xE,13215
|
974
974
|
esphome/components/ethernet/esp_eth_phy_jl1101.c,sha256=WQ-RuJHLTlY61Ywkf8g56CaJke0RDoGwLwbOtyV83DE,12287
|
975
|
-
esphome/components/ethernet/ethernet_component.cpp,sha256=
|
976
|
-
esphome/components/ethernet/ethernet_component.h,sha256=
|
975
|
+
esphome/components/ethernet/ethernet_component.cpp,sha256=Wtw6RUOEi_qZ4H3xFcMTHSDqzsYA3n219ron7QJEH9Q,27773
|
976
|
+
esphome/components/ethernet/ethernet_component.h,sha256=pV6TAVNoDMUD0hxVEs8D324BfDprn3FIbkvQS-qYfYc,4840
|
977
977
|
esphome/components/ethernet_info/__init__.py,sha256=LoiZr_nRyJfR5w1ZWOFppOVTQRwlgmHU-boDala2fLA,33
|
978
978
|
esphome/components/ethernet_info/ethernet_info_text_sensor.cpp,sha256=nfP7xeusvbzee1KHfuipELWvF1vmuk_2e4G_NlLeJ3M,564
|
979
979
|
esphome/components/ethernet_info/ethernet_info_text_sensor.h,sha256=kYs65vLLwVtuDcfOoQnGyDJoWL-mfsZHeAWQRafEq9I,2131
|
@@ -2050,7 +2050,7 @@ esphome/components/mqtt/mqtt_binary_sensor.cpp,sha256=wd5mAnBieyl8zNGoDwWbVFuaKZ
|
|
2050
2050
|
esphome/components/mqtt/mqtt_binary_sensor.h,sha256=QwGVAYkOcEVkvNjtBu6JHJYXXwc-0AOTNIBS1otLzig,958
|
2051
2051
|
esphome/components/mqtt/mqtt_button.cpp,sha256=Q6NZfbwDfLuObMJH6KIrNEvWZJLNwxDdWck6p0CQfr4,1510
|
2052
2052
|
esphome/components/mqtt/mqtt_button.h,sha256=GJ6D6ANZgy3azdLjnHDhSrjuxEOSigYSjWs2J-akOPw,906
|
2053
|
-
esphome/components/mqtt/mqtt_client.cpp,sha256=
|
2053
|
+
esphome/components/mqtt/mqtt_client.cpp,sha256=eGSysFcIY3l4l0jc6D2fMD_eZXoeU_4r1F9yM_7SBB4,26335
|
2054
2054
|
esphome/components/mqtt/mqtt_client.h,sha256=MLFPh-shnPx_3-76019kGxS97VhYRkrE6QtkRk8X2kU,16299
|
2055
2055
|
esphome/components/mqtt/mqtt_climate.cpp,sha256=L62VSe9KWn8ELhfuNn4i8Hh841VdgL4hQsuH55ovwkk,16850
|
2056
2056
|
esphome/components/mqtt/mqtt_climate.h,sha256=20FAWmZ-zk2RFakvRSyiZEHemo8kBKxPi3xDmJfzXLw,1805
|
@@ -2761,9 +2761,9 @@ esphome/components/selec_meter/selec_meter_registers.h,sha256=fcST4F67QNayD7A33Z
|
|
2761
2761
|
esphome/components/selec_meter/sensor.py,sha256=HCdBr4XMdTsnKDiS_PCXa0r1TuG0LDpI9SYqNj0BdGA,5493
|
2762
2762
|
esphome/components/select/__init__.py,sha256=-FF6tzuKehcRD0Xvk1ppi6a_Gk9rgRb5YWNq2s77zY4,7488
|
2763
2763
|
esphome/components/select/automation.h,sha256=LM-EbLGcn2LzEBIjw5YZwGijausYO2F93QeIl7d_3T8,1706
|
2764
|
-
esphome/components/select/select.cpp,sha256=
|
2764
|
+
esphome/components/select/select.cpp,sha256=hd88H6EAotqO8CZuUPftlVlDYmF1AZrHtP-uD0hQzy0,1704
|
2765
2765
|
esphome/components/select/select.h,sha256=RlznGN1X3MeYGc6Mis-Qz2RkBbS0BIjaFT1enGMaX4s,2293
|
2766
|
-
esphome/components/select/select_call.cpp,sha256=
|
2766
|
+
esphome/components/select/select_call.cpp,sha256=XoRm141bJzAioYtW3aVFegXjvvX1qMq5RiFgDOuu6PY,4083
|
2767
2767
|
esphome/components/select/select_call.h,sha256=I7ViWLJLigDaLbkKF18zMQDQCIBiA8SfaIRPXKwj3rM,1005
|
2768
2768
|
esphome/components/select/select_traits.cpp,sha256=p8ed8VtOtqjCJT_6LESNDWcqZYNqHsxLoJOQB_TG0RA,316
|
2769
2769
|
esphome/components/select/select_traits.h,sha256=d7xBQPiAm0AD5eldo166KqPVb9R3lraACYz6BeBT500,331
|
@@ -3719,7 +3719,7 @@ esphome/core/config.py,sha256=VQb2e4WIyGJapk0aIOywRyUZx2WC10aI3O49eJ_ItlM,20277
|
|
3719
3719
|
esphome/core/controller.cpp,sha256=nRJZK4B5WWad98tGGEESSGcKWcpWhExaUOIXO3Iu_xQ,4602
|
3720
3720
|
esphome/core/controller.h,sha256=UCvtMbw21KvAQHaO_fgDRr1OjcXEYzEC8JupPmHrNic,3708
|
3721
3721
|
esphome/core/datatypes.h,sha256=TNuXjWQIK7KjDwMAccMFws2SimaUlsgim96SI0cCdCY,2110
|
3722
|
-
esphome/core/defines.h,sha256=
|
3722
|
+
esphome/core/defines.h,sha256=mUISx1WQozHWfJz6umQeiLbhjG7NbHufQKKySKlBYtA,7299
|
3723
3723
|
esphome/core/device.h,sha256=mYTwRg92-BU8uTTzmrufH-KkHCMLKsKWnvM-mjzw6I0,531
|
3724
3724
|
esphome/core/doxygen.h,sha256=9fAJ2T-1z96-NYnj63vQhsnKthHBrh3EqBnY0h3ZN-A,439
|
3725
3725
|
esphome/core/entity_base.cpp,sha256=l9qlYIsZFbQMBlwNbi6khjiFNNo9Gaz6twLJKMozSis,3069
|
@@ -3755,7 +3755,7 @@ esphome/dashboard/dashboard.py,sha256=4k32z98tQXj01FKHfXePLlP_zch-piHSxdbhjdgf3a
|
|
3755
3755
|
esphome/dashboard/dns.py,sha256=nxAFb99G7U_rE5euO9CZPKpcZbXZvYcdVDuTppBNZag,1385
|
3756
3756
|
esphome/dashboard/entries.py,sha256=SxxsrgSe2phKbvwj_4_oG2leav8ev9qpPIZb5RMJxQ0,15673
|
3757
3757
|
esphome/dashboard/settings.py,sha256=1iIGNTgU7xg6xvjazHYq8UHC6JXocKjKlsed0cQ-nkw,2858
|
3758
|
-
esphome/dashboard/web_server.py,sha256=
|
3758
|
+
esphome/dashboard/web_server.py,sha256=I_7ZdfCgU19at1vQKirrijgQinaQAB0Q35lau_AeKHc,46440
|
3759
3759
|
esphome/dashboard/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3760
3760
|
esphome/dashboard/status/mdns.py,sha256=jAjLuysjr29HUGA0Y_IQp4D1Qm-d3yHdHY6K00gUCD4,4775
|
3761
3761
|
esphome/dashboard/status/mqtt.py,sha256=2QOq1vgwJCHW5uL_hqmi_R5fX5OTeTJUHx7c0pMLQKE,2578
|
@@ -3766,9 +3766,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
|
|
3766
3766
|
esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
|
3767
3767
|
esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
|
3768
3768
|
esphome/dashboard/util/text.py,sha256=wwFtORlvHjsYkqb68IT-772LHAhWxT4OtnkIcPICQB0,317
|
3769
|
-
esphome-2025.9.
|
3770
|
-
esphome-2025.9.
|
3771
|
-
esphome-2025.9.
|
3772
|
-
esphome-2025.9.
|
3773
|
-
esphome-2025.9.
|
3774
|
-
esphome-2025.9.
|
3769
|
+
esphome-2025.9.0b4.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
3770
|
+
esphome-2025.9.0b4.dist-info/METADATA,sha256=Tqq-x-J8pFDxL0NdKjhu3gkOzagg4xnE2V4TBtFm8Es,3634
|
3771
|
+
esphome-2025.9.0b4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
3772
|
+
esphome-2025.9.0b4.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
3773
|
+
esphome-2025.9.0b4.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
3774
|
+
esphome-2025.9.0b4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|