esphome 2025.9.0b2__py3-none-any.whl → 2025.9.0b3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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, BVRMS, [](float val) { return val / 10000.0f; });
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
@@ -4,7 +4,7 @@ from enum import Enum
4
4
 
5
5
  from esphome.enum import StrEnum
6
6
 
7
- __version__ = "2025.9.0b2"
7
+ __version__ = "2025.9.0b3"
8
8
 
9
9
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
10
10
  VALID_SUBSTITUTIONS_CHARACTERS = (
esphome/core/defines.h CHANGED
@@ -175,6 +175,7 @@
175
175
  #ifdef USE_ARDUINO
176
176
  #define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 2, 1)
177
177
  #define USE_ETHERNET
178
+ #define USE_ETHERNET_KSZ8081
178
179
  #endif
179
180
 
180
181
  #ifdef USE_ESP_IDF
@@ -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
- name = storage_json.name
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):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esphome
3
- Version: 2025.9.0b2
3
+ Version: 2025.9.0b3
4
4
  Summary: ESPHome is a system to configure your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.
5
5
  Author-email: The ESPHome Authors <esphome@openhomefoundation.org>
6
6
  License: MIT
@@ -5,7 +5,7 @@ esphome/codegen.py,sha256=H_WB4rj0uEowvlhEb31EjJQwutLQ5CQkJIsNgDK-wx8,1917
5
5
  esphome/config.py,sha256=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=3TdQgJcux_o-t8wMvUmXnoUaYCEBuMGFUW0JXRWo4Mk,44218
8
+ esphome/const.py,sha256=V_KL_7copxuxPEKCWshLHGBtUhTkAZLPBRuELUzro5M,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
@@ -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=eAKL9P-3q-zOYpGM8dMeGQ-2fsIFPEgaHTc9Qdyldeo,12933
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=9udaNkXPZkH6aBlVzMRfI-3VP8P8CMUzFUBLrabsi08,12800
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=J6fKYFn03QKYX0-GcPWDhYoteedgvP43TUG0CFdeICE,27653
976
- esphome/components/ethernet/ethernet_component.h,sha256=bRL5FKVxoAK8vwpfUPVepXbEKgGA4OhRviF538yw5QU,4805
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=TwKQh_EVIUS0ur5SUxrwpFQ4FFx1aI3IrYNdQSKM-9A,26306
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=1TYub0pDh-FYtdx9h0qw2xKzbilRGDwsuVI6ldj2yTM,1683
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=PdH-8q4ZwU9JEW66kUCiJM6qDlNuyRH-rHVGOdK1fCU,4076
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=ub9tWEaGAVPO7fcvWO4g1ts8gYONkQz5ZyemRJcWK2g,7270
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=hG1E7X3hr2OsLmSvrFONaI1NrAIwiBBKDq-cvbXEDvw,46564
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.0b2.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3770
- esphome-2025.9.0b2.dist-info/METADATA,sha256=94QmB9AbcAdH7XfLOB9w4pDrjAglqbUaFDoRDLOdDHE,3634
3771
- esphome-2025.9.0b2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3772
- esphome-2025.9.0b2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3773
- esphome-2025.9.0b2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3774
- esphome-2025.9.0b2.dist-info/RECORD,,
3769
+ esphome-2025.9.0b3.dist-info/licenses/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3770
+ esphome-2025.9.0b3.dist-info/METADATA,sha256=qSVncUotX9od12PP0k-zlr5QbEYVydHb7mXyQAhegj4,3634
3771
+ esphome-2025.9.0b3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3772
+ esphome-2025.9.0b3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3773
+ esphome-2025.9.0b3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3774
+ esphome-2025.9.0b3.dist-info/RECORD,,