esphome 2025.5.2__py3-none-any.whl → 2025.6.0__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.
Files changed (750) hide show
  1. esphome/__main__.py +20 -14
  2. esphome/components/a4988/a4988.cpp +1 -1
  3. esphome/components/absolute_humidity/absolute_humidity.cpp +6 -4
  4. esphome/components/ac_dimmer/ac_dimmer.cpp +4 -2
  5. esphome/components/adc/adc_sensor_esp32.cpp +5 -3
  6. esphome/components/adc/adc_sensor_esp8266.cpp +5 -3
  7. esphome/components/adc/adc_sensor_libretiny.cpp +5 -3
  8. esphome/components/adc/adc_sensor_rp2040.cpp +5 -3
  9. esphome/components/adc128s102/adc128s102.cpp +1 -1
  10. esphome/components/ade7880/ade7880.cpp +28 -17
  11. esphome/components/ade7953_base/ade7953_base.cpp +12 -9
  12. esphome/components/ade7953_i2c/ade7953_i2c.cpp +1 -1
  13. esphome/components/ade7953_spi/ade7953_spi.cpp +1 -1
  14. esphome/components/ads1115/ads1115.cpp +3 -5
  15. esphome/components/ads1118/ads1118.cpp +2 -1
  16. esphome/components/ags10/ags10.cpp +3 -2
  17. esphome/components/aht10/aht10.cpp +27 -29
  18. esphome/components/aic3204/aic3204.cpp +2 -2
  19. esphome/components/alarm_control_panel/__init__.py +1 -0
  20. esphome/components/am2315c/am2315c.cpp +2 -2
  21. esphome/components/am2320/am2320.cpp +2 -2
  22. esphome/components/am43/am43_base.h +1 -1
  23. esphome/components/am43/cover/am43_cover.cpp +4 -2
  24. esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +4 -2
  25. esphome/components/apds9306/apds9306.cpp +8 -5
  26. esphome/components/apds9960/apds9960.cpp +2 -2
  27. esphome/components/api/__init__.py +5 -0
  28. esphome/components/api/api_connection.cpp +753 -379
  29. esphome/components/api/api_connection.h +341 -283
  30. esphome/components/api/api_frame_helper.cpp +349 -344
  31. esphome/components/api/api_frame_helper.h +121 -94
  32. esphome/components/api/api_pb2.cpp +5 -0
  33. esphome/components/api/api_pb2.h +703 -227
  34. esphome/components/api/api_pb2_service.cpp +12 -688
  35. esphome/components/api/api_pb2_service.h +53 -207
  36. esphome/components/api/api_server.cpp +71 -29
  37. esphome/components/api/api_server.h +9 -0
  38. esphome/components/api/client.py +5 -4
  39. esphome/components/api/homeassistant_service.h +1 -1
  40. esphome/components/api/list_entities.cpp +1 -1
  41. esphome/components/api/proto.cpp +1 -0
  42. esphome/components/api/proto.h +5 -4
  43. esphome/components/api/subscribe_state.cpp +8 -16
  44. esphome/components/as3935/as3935.cpp +3 -3
  45. esphome/components/as5600/as5600.cpp +9 -7
  46. esphome/components/as7341/as7341.cpp +7 -5
  47. esphome/components/at581x/at581x.cpp +13 -10
  48. esphome/components/atm90e26/atm90e26.cpp +2 -2
  49. esphome/components/atm90e32/atm90e32.cpp +3 -3
  50. esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +5 -3
  51. esphome/components/bang_bang/bang_bang_climate.cpp +8 -5
  52. esphome/components/bedjet/bedjet_hub.cpp +6 -4
  53. esphome/components/beken_spi_led_strip/led_strip.cpp +11 -7
  54. esphome/components/bh1750/bh1750.cpp +2 -2
  55. esphome/components/binary_sensor/__init__.py +1 -0
  56. esphome/components/binary_sensor/automation.cpp +1 -2
  57. esphome/components/bl0906/bl0906.cpp +1 -1
  58. esphome/components/bl0942/bl0942.cpp +11 -8
  59. esphome/components/bl0942/sensor.py +1 -1
  60. esphome/components/ble_client/__init__.py +5 -1
  61. esphome/components/ble_client/output/ble_binary_output.cpp +6 -3
  62. esphome/components/ble_client/sensor/ble_sensor.cpp +9 -6
  63. esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +8 -5
  64. esphome/components/bluetooth_proxy/__init__.py +5 -1
  65. esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -5
  66. esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +18 -16
  67. esphome/components/bluetooth_proxy/bluetooth_proxy.h +1 -1
  68. esphome/components/bme280_base/bme280_base.cpp +5 -6
  69. esphome/components/bme680/bme680.cpp +3 -3
  70. esphome/components/bme680/sensor.py +2 -2
  71. esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
  72. esphome/components/bme680_bsec/sensor.py +7 -3
  73. esphome/components/bme68x_bsec2/__init__.py +6 -5
  74. esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
  75. esphome/components/bme68x_bsec2/sensor.py +4 -4
  76. esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
  77. esphome/components/bmi160/bmi160.cpp +11 -11
  78. esphome/components/bmp085/bmp085.cpp +2 -2
  79. esphome/components/bmp280_base/bmp280_base.cpp +3 -3
  80. esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
  81. esphome/components/bmp581/bmp581.cpp +33 -27
  82. esphome/components/bp1658cj/bp1658cj.cpp +5 -3
  83. esphome/components/bp5758d/bp5758d.cpp +1 -1
  84. esphome/components/button/__init__.py +1 -0
  85. esphome/components/canbus/canbus.cpp +1 -1
  86. esphome/components/cap1188/cap1188.cpp +6 -4
  87. esphome/components/captive_portal/captive_portal.cpp +1 -1
  88. esphome/components/ccs811/ccs811.cpp +3 -2
  89. esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
  90. esphome/components/ch422g/ch422g.cpp +2 -2
  91. esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
  92. esphome/components/climate/__init__.py +1 -0
  93. esphome/components/climate/climate.cpp +12 -7
  94. esphome/components/climate/climate.h +1 -1
  95. esphome/components/climate_ir/climate_ir.cpp +7 -4
  96. esphome/components/cm1106/__init__.py +1 -0
  97. esphome/components/cm1106/cm1106.cpp +112 -0
  98. esphome/components/cm1106/cm1106.h +40 -0
  99. esphome/components/cm1106/sensor.py +72 -0
  100. esphome/components/const/__init__.py +1 -0
  101. esphome/components/cover/__init__.py +1 -0
  102. esphome/components/cs5460a/cs5460a.cpp +16 -11
  103. esphome/components/cse7761/cse7761.cpp +2 -2
  104. esphome/components/cse7766/cse7766.cpp +0 -5
  105. esphome/components/cse7766/cse7766.h +5 -1
  106. esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
  107. esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
  108. esphome/components/current_based/current_based_cover.cpp +4 -2
  109. esphome/components/dac7678/dac7678_output.cpp +4 -4
  110. esphome/components/dallas_temp/dallas_temp.cpp +2 -3
  111. esphome/components/daly_bms/daly_bms.cpp +2 -1
  112. esphome/components/dashboard_import/__init__.py +1 -2
  113. esphome/components/datetime/__init__.py +3 -1
  114. esphome/components/datetime/date_entity.cpp +5 -5
  115. esphome/components/datetime/datetime_base.h +0 -5
  116. esphome/components/datetime/datetime_entity.cpp +8 -8
  117. esphome/components/datetime/time_entity.cpp +4 -4
  118. esphome/components/debug/debug_component.cpp +1 -1
  119. esphome/components/debug/debug_component.h +1 -1
  120. esphome/components/debug/debug_esp32.cpp +4 -2
  121. esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
  122. esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
  123. esphome/components/demo/__init__.py +206 -0
  124. esphome/components/demo/demo_alarm_control_panel.h +65 -0
  125. esphome/components/demo/demo_button.h +15 -0
  126. esphome/components/demo/demo_date.h +34 -0
  127. esphome/components/demo/demo_datetime.h +40 -0
  128. esphome/components/demo/demo_lock.h +17 -0
  129. esphome/components/demo/demo_select.h +15 -0
  130. esphome/components/demo/demo_text.h +18 -0
  131. esphome/components/demo/demo_time.h +34 -0
  132. esphome/components/demo/demo_valve.h +54 -0
  133. esphome/components/dfrobot_sen0395/commands.cpp +3 -3
  134. esphome/components/dht/dht.cpp +29 -50
  135. esphome/components/dht12/dht12.cpp +2 -2
  136. esphome/components/display/display.h +5 -3
  137. esphome/components/dps310/dps310.cpp +7 -5
  138. esphome/components/ds1307/ds1307.cpp +2 -2
  139. esphome/components/dsmr/dsmr.cpp +5 -3
  140. esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
  141. esphome/components/duty_time/duty_time_sensor.cpp +5 -3
  142. esphome/components/ee895/ee895.cpp +3 -3
  143. esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
  144. esphome/components/emc2101/emc2101.cpp +11 -9
  145. esphome/components/ens160_base/ens160_base.cpp +2 -2
  146. esphome/components/ens210/ens210.cpp +2 -2
  147. esphome/components/es7210/es7210.cpp +6 -4
  148. esphome/components/es7243e/es7243e.cpp +1 -1
  149. esphome/components/es8156/es8156.cpp +1 -1
  150. esphome/components/es8311/es8311.cpp +8 -6
  151. esphome/components/es8388/__init__.py +0 -0
  152. esphome/components/es8388/audio_dac.py +26 -0
  153. esphome/components/es8388/es8388.cpp +289 -0
  154. esphome/components/es8388/es8388.h +81 -0
  155. esphome/components/es8388/es8388_const.h +83 -0
  156. esphome/components/es8388/select/__init__.py +47 -0
  157. esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
  158. esphome/components/es8388/select/adc_input_mic_select.h +15 -0
  159. esphome/components/es8388/select/dac_output_select.cpp +12 -0
  160. esphome/components/es8388/select/dac_output_select.h +15 -0
  161. esphome/components/esp32/__init__.py +118 -23
  162. esphome/components/esp32/boards.py +208 -125
  163. esphome/components/esp32/const.py +6 -0
  164. esphome/components/esp32/gpio.py +14 -1
  165. esphome/components/esp32/gpio_esp32_c5.py +45 -0
  166. esphome/components/esp32/gpio_esp32_p4.py +43 -0
  167. esphome/components/esp32/preferences.cpp +7 -7
  168. esphome/components/esp32_ble/__init__.py +115 -0
  169. esphome/components/esp32_ble/ble.cpp +101 -54
  170. esphome/components/esp32_ble/ble.h +24 -5
  171. esphome/components/esp32_ble/ble_event.h +172 -32
  172. esphome/components/esp32_ble/ble_scan_result.h +24 -0
  173. esphome/components/esp32_ble/ble_uuid.h +1 -1
  174. esphome/components/esp32_ble/queue.h +53 -27
  175. esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
  176. esphome/components/esp32_ble_server/__init__.py +4 -1
  177. esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
  178. esphome/components/esp32_ble_server/ble_server.h +0 -1
  179. esphome/components/esp32_ble_tracker/__init__.py +7 -2
  180. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +107 -75
  181. esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +16 -16
  182. esphome/components/esp32_camera/esp32_camera.cpp +35 -27
  183. esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
  184. esphome/components/esp32_dac/esp32_dac.cpp +2 -2
  185. esphome/components/esp32_improv/__init__.py +5 -1
  186. esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
  187. esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
  188. esphome/components/esp32_rmt_led_strip/light.py +5 -1
  189. esphome/components/esp32_touch/esp32_touch.cpp +12 -8
  190. esphome/components/esp8266/preferences.cpp +6 -6
  191. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  192. esphome/components/esp_ldo/__init__.py +91 -0
  193. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  194. esphome/components/esp_ldo/esp_ldo.h +43 -0
  195. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  196. esphome/components/ethernet/ethernet_component.cpp +38 -26
  197. esphome/components/ethernet/ethernet_component.h +1 -1
  198. esphome/components/event/__init__.py +1 -0
  199. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  200. esphome/components/ezo/ezo.cpp +1 -1
  201. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  202. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  203. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  204. esphome/components/fan/__init__.py +1 -0
  205. esphome/components/fan/fan.cpp +30 -19
  206. esphome/components/fastled_base/fastled_light.cpp +7 -5
  207. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  208. esphome/components/fs3000/fs3000.cpp +1 -1
  209. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  210. esphome/components/ft63x6/ft63x6.cpp +5 -3
  211. esphome/components/gcja5/gcja5.cpp +0 -12
  212. esphome/components/gcja5/gcja5.h +8 -3
  213. esphome/components/gdk101/gdk101.cpp +2 -2
  214. esphome/components/globals/globals_component.h +13 -10
  215. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  216. esphome/components/gp8403/gp8403.cpp +4 -2
  217. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  218. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  219. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  220. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  221. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  222. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  223. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  224. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  225. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  226. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  227. esphome/components/haier/haier_base.cpp +2 -2
  228. esphome/components/haier/hon_climate.cpp +13 -6
  229. esphome/components/havells_solar/havells_solar.cpp +5 -2
  230. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  231. esphome/components/hdc1080/hdc1080.cpp +2 -2
  232. esphome/components/he60r/he60r.cpp +4 -2
  233. esphome/components/hlw8012/hlw8012.cpp +6 -4
  234. esphome/components/hm3301/hm3301.cpp +2 -2
  235. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  236. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  237. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  238. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  239. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  240. esphome/components/hte501/hte501.cpp +3 -2
  241. esphome/components/http_request/__init__.py +2 -2
  242. esphome/components/http_request/http_request.cpp +7 -5
  243. esphome/components/http_request/http_request_idf.cpp +4 -2
  244. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  245. esphome/components/htu21d/htu21d.cpp +2 -2
  246. esphome/components/htu31d/htu31d.cpp +2 -2
  247. esphome/components/hx711/hx711.cpp +2 -2
  248. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  249. esphome/components/hyt271/hyt271.cpp +2 -2
  250. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  251. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  252. esphome/components/i2s_audio/__init__.py +2 -0
  253. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  254. esphome/components/i2s_audio/i2s_audio.h +1 -1
  255. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  256. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  257. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +48 -30
  258. esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +2 -0
  259. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +29 -11
  260. esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +1 -0
  261. esphome/components/iaqcore/iaqcore.cpp +3 -3
  262. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  263. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  264. esphome/components/image/image.cpp +1 -0
  265. esphome/components/ina219/ina219.cpp +2 -2
  266. esphome/components/ina226/ina226.cpp +8 -5
  267. esphome/components/ina260/ina260.cpp +1 -1
  268. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  269. esphome/components/ina3221/ina3221.cpp +2 -2
  270. esphome/components/inkplate6/display.py +12 -2
  271. esphome/components/inkplate6/inkplate.cpp +13 -9
  272. esphome/components/inkplate6/inkplate.h +7 -6
  273. esphome/components/integration/integration_sensor.cpp +1 -1
  274. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  275. esphome/components/json/json_util.cpp +4 -5
  276. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  277. esphome/components/key_collector/key_collector.cpp +4 -2
  278. esphome/components/kmeteriso/kmeteriso.cpp +4 -4
  279. esphome/components/kuntze/kuntze.cpp +4 -2
  280. esphome/components/lc709203f/__init__.py +1 -0
  281. esphome/components/lc709203f/lc709203f.cpp +299 -0
  282. esphome/components/lc709203f/lc709203f.h +55 -0
  283. esphome/components/lc709203f/sensor.py +93 -0
  284. esphome/components/lcd_base/lcd_display.cpp +2 -2
  285. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  286. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  287. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  288. esphome/components/ld2410/ld2410.cpp +6 -7
  289. esphome/components/ld2420/ld2420.cpp +9 -7
  290. esphome/components/ld2450/ld2450.cpp +6 -4
  291. esphome/components/ld2450/sensor.py +2 -2
  292. esphome/components/ledc/ledc_output.cpp +32 -28
  293. esphome/components/libretiny/const.py +1 -1
  294. esphome/components/libretiny/preferences.cpp +6 -7
  295. esphome/components/light/__init__.py +2 -1
  296. esphome/components/light/esp_hsv_color.h +1 -1
  297. esphome/components/light/light_state.cpp +9 -5
  298. esphome/components/light/light_state.h +15 -15
  299. esphome/components/light/light_transformer.h +1 -1
  300. esphome/components/lightwaverf/LwTx.cpp +1 -1
  301. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  302. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  303. esphome/components/lock/__init__.py +1 -0
  304. esphome/components/lock/lock.h +1 -1
  305. esphome/components/logger/__init__.py +6 -0
  306. esphome/components/logger/logger.cpp +11 -20
  307. esphome/components/logger/logger.h +1 -2
  308. esphome/components/logger/logger_esp32.cpp +5 -5
  309. esphome/components/ltr390/ltr390.cpp +8 -5
  310. esphome/components/ltr501/ltr501.cpp +19 -14
  311. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  312. esphome/components/lvgl/__init__.py +2 -2
  313. esphome/components/lvgl/automation.py +5 -4
  314. esphome/components/lvgl/defines.py +0 -2
  315. esphome/components/lvgl/lv_validation.py +1 -3
  316. esphome/components/lvgl/lvcode.py +7 -8
  317. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  318. esphome/components/lvgl/schemas.py +22 -23
  319. esphome/components/lvgl/trigger.py +8 -3
  320. esphome/components/lvgl/widgets/__init__.py +2 -2
  321. esphome/components/lvgl/widgets/canvas.py +9 -3
  322. esphome/components/lvgl/widgets/line.py +2 -1
  323. esphome/components/lvgl/widgets/tabview.py +7 -0
  324. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  325. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  326. esphome/components/max17043/max17043.cpp +2 -2
  327. esphome/components/max31855/max31855.cpp +2 -1
  328. esphome/components/max31856/max31856.cpp +9 -11
  329. esphome/components/max31865/max31865.cpp +6 -4
  330. esphome/components/max44009/max44009.cpp +2 -2
  331. esphome/components/max6675/max6675.cpp +1 -1
  332. esphome/components/max6956/max6956.cpp +5 -3
  333. esphome/components/max7219/max7219.cpp +8 -6
  334. esphome/components/max7219digit/automation.h +52 -0
  335. esphome/components/max7219digit/display.py +93 -1
  336. esphome/components/max7219digit/max7219digit.cpp +16 -13
  337. esphome/components/max9611/max9611.cpp +9 -6
  338. esphome/components/mcp23008/mcp23008.cpp +1 -1
  339. esphome/components/mcp23016/mcp23016.cpp +1 -1
  340. esphome/components/mcp23017/mcp23017.cpp +1 -1
  341. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  342. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  343. esphome/components/mcp3008/mcp3008.cpp +1 -1
  344. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  345. esphome/components/mcp3204/mcp3204.cpp +1 -1
  346. esphome/components/mcp4461/mcp4461.cpp +2 -2
  347. esphome/components/mcp4725/mcp4725.cpp +2 -2
  348. esphome/components/mcp4728/mcp4728.cpp +2 -2
  349. esphome/components/mcp9600/mcp9600.cpp +1 -1
  350. esphome/components/mcp9808/mcp9808.cpp +4 -4
  351. esphome/components/mdns/mdns_component.cpp +8 -2
  352. esphome/components/mdns/mdns_component.h +3 -1
  353. esphome/components/mdns/mdns_esp32.cpp +2 -2
  354. esphome/components/media_player/__init__.py +1 -0
  355. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  356. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  357. esphome/components/micronova/micronova.h +2 -2
  358. esphome/components/mics_4514/mics_4514.cpp +2 -2
  359. esphome/components/midea/air_conditioner.cpp +7 -5
  360. esphome/components/midea_ir/midea_ir.cpp +1 -1
  361. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  362. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  363. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  364. esphome/components/mlx90614/mlx90614.cpp +4 -3
  365. esphome/components/mmc5603/mmc5603.cpp +2 -2
  366. esphome/components/mmc5983/mmc5983.cpp +1 -1
  367. esphome/components/modbus/modbus.cpp +7 -5
  368. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  369. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  370. esphome/components/modbus_controller/switch/__init__.py +6 -2
  371. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  372. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  373. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  374. esphome/components/mpr121/mpr121.cpp +2 -2
  375. esphome/components/mpu6050/mpu6050.cpp +6 -6
  376. esphome/components/mpu6886/mpu6886.cpp +6 -6
  377. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  378. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  379. esphome/components/mqtt/mqtt_client.cpp +31 -24
  380. esphome/components/mqtt/mqtt_component.cpp +3 -3
  381. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  382. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  383. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  384. esphome/components/ms5611/ms5611.cpp +2 -2
  385. esphome/components/ms8607/ms8607.cpp +2 -2
  386. esphome/components/msa3xx/msa3xx.cpp +16 -12
  387. esphome/components/my9231/my9231.cpp +7 -5
  388. esphome/components/nau7802/nau7802.cpp +6 -4
  389. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  390. esphome/components/network/ip_address.h +1 -1
  391. esphome/components/network/util.cpp +13 -0
  392. esphome/components/nextion/base_component.py +2 -0
  393. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +3 -4
  394. esphome/components/nextion/display.py +34 -22
  395. esphome/components/nextion/nextion.cpp +182 -143
  396. esphome/components/nextion/nextion.h +36 -0
  397. esphome/components/nextion/nextion_commands.cpp +3 -3
  398. esphome/components/nextion/nextion_upload_arduino.cpp +69 -69
  399. esphome/components/nextion/nextion_upload_idf.cpp +79 -80
  400. esphome/components/nextion/sensor/nextion_sensor.cpp +5 -5
  401. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  402. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +3 -3
  403. esphome/components/nfc/nci_message.h +1 -1
  404. esphome/components/nfc/ndef_record.h +1 -1
  405. esphome/components/nfc/ndef_record_text.h +1 -1
  406. esphome/components/nfc/ndef_record_uri.h +1 -1
  407. esphome/components/nfc/nfc.h +1 -1
  408. esphome/components/nfc/nfc_tag.h +1 -1
  409. esphome/components/noblex/noblex.cpp +1 -1
  410. esphome/components/npi19/npi19.cpp +5 -7
  411. esphome/components/number/__init__.py +11 -0
  412. esphome/components/number/number.cpp +1 -1
  413. esphome/components/number/number.h +0 -4
  414. esphome/components/online_image/__init__.py +13 -1
  415. esphome/components/online_image/online_image.cpp +26 -4
  416. esphome/components/online_image/online_image.h +21 -4
  417. esphome/components/opentherm/generate.py +3 -3
  418. esphome/components/opentherm/hub.cpp +11 -7
  419. esphome/components/opentherm/number/number.cpp +5 -3
  420. esphome/components/opentherm/opentherm.h +1 -1
  421. esphome/components/opentherm/schema.py +13 -13
  422. esphome/components/opentherm/validate.py +1 -1
  423. esphome/components/openthread/__init__.py +146 -0
  424. esphome/components/openthread/const.py +10 -0
  425. esphome/components/openthread/openthread.cpp +206 -0
  426. esphome/components/openthread/openthread.h +68 -0
  427. esphome/components/openthread/openthread_esp.cpp +164 -0
  428. esphome/components/openthread/tlv.py +58 -0
  429. esphome/components/openthread_info/__init__.py +0 -0
  430. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  431. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  432. esphome/components/openthread_info/text_sensor.py +105 -0
  433. esphome/components/output/float_output.cpp +1 -1
  434. esphome/components/output/switch/output_switch.cpp +1 -1
  435. esphome/components/packet_transport/packet_transport.cpp +6 -4
  436. esphome/components/pca6416a/pca6416a.cpp +2 -2
  437. esphome/components/pca9554/pca9554.cpp +6 -4
  438. esphome/components/pca9685/pca9685_output.cpp +12 -8
  439. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  440. esphome/components/pcf85063/pcf85063.cpp +2 -2
  441. esphome/components/pcf8563/pcf8563.cpp +2 -2
  442. esphome/components/pcf8574/pcf8574.cpp +2 -2
  443. esphome/components/pid/pid_climate.cpp +8 -5
  444. esphome/components/pid/pid_climate.h +1 -1
  445. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  446. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  447. esphome/components/pipsolar/pipsolar.cpp +3 -3
  448. esphome/components/pm1006/pm1006.cpp +3 -7
  449. esphome/components/pm1006/pm1006.h +4 -1
  450. esphome/components/pm2005/pm2005.cpp +12 -13
  451. esphome/components/pm2005/sensor.py +1 -1
  452. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  453. esphome/components/pmsx003/pmsx003.cpp +0 -4
  454. esphome/components/pmsx003/pmsx003.h +5 -2
  455. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  456. esphome/components/pmwcs3/pmwcs3.h +0 -1
  457. esphome/components/pn532/pn532.cpp +7 -7
  458. esphome/components/pn532/pn532.h +1 -1
  459. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  460. esphome/components/pn7150/pn7150.cpp +4 -4
  461. esphome/components/pn7160/pn7160.cpp +4 -4
  462. esphome/components/power_supply/power_supply.cpp +6 -4
  463. esphome/components/power_supply/power_supply.h +1 -1
  464. esphome/components/prometheus/__init__.py +0 -1
  465. esphome/components/psram/__init__.py +59 -35
  466. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  467. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  468. esphome/components/pylontech/pylontech.cpp +2 -2
  469. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  470. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  471. esphome/components/pzemac/pzemac.cpp +4 -2
  472. esphome/components/pzemdc/pzemdc.cpp +4 -2
  473. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  474. esphome/components/qmp6988/qmp6988.cpp +2 -2
  475. esphome/components/qmp6988/qmp6988.h +1 -1
  476. esphome/components/qr_code/qr_code.cpp +5 -3
  477. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  478. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  479. esphome/components/rc522/rc522.cpp +5 -5
  480. esphome/components/rdm6300/rdm6300.cpp +1 -0
  481. esphome/components/remote_receiver/__init__.py +10 -2
  482. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  483. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  484. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  485. esphome/components/remote_transmitter/__init__.py +10 -2
  486. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  487. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  488. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  489. esphome/components/resistance/resistance_sensor.cpp +6 -3
  490. esphome/components/restart/button/restart_button.cpp +1 -1
  491. esphome/components/restart/switch/restart_switch.cpp +1 -1
  492. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  493. esphome/components/rp2040/__init__.py +7 -0
  494. esphome/components/rp2040/core.cpp +8 -1
  495. esphome/components/rp2040/preferences.cpp +3 -3
  496. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  497. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  498. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  499. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  500. esphome/components/rtttl/rtttl.cpp +11 -9
  501. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  502. esphome/components/safe_mode/safe_mode.cpp +9 -8
  503. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  504. esphome/components/scd30/scd30.cpp +11 -8
  505. esphome/components/scd4x/scd4x.cpp +12 -8
  506. esphome/components/sdl/display.py +40 -0
  507. esphome/components/sdl/sdl_esphome.cpp +2 -2
  508. esphome/components/sdl/sdl_esphome.h +8 -0
  509. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  510. esphome/components/sdp3x/sdp3x.cpp +11 -11
  511. esphome/components/sds011/sds011.cpp +5 -6
  512. esphome/components/sds011/sds011.h +4 -1
  513. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  514. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  515. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  516. esphome/components/selec_meter/selec_meter.cpp +5 -2
  517. esphome/components/select/__init__.py +1 -0
  518. esphome/components/select/select.cpp +1 -1
  519. esphome/components/select/select.h +0 -4
  520. esphome/components/sen0321/sen0321.cpp +2 -2
  521. esphome/components/sen21231/sen21231.cpp +1 -1
  522. esphome/components/sen5x/sen5x.cpp +10 -7
  523. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  524. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  525. esphome/components/sensor/__init__.py +11 -1
  526. esphome/components/sensor/filter.h +1 -1
  527. esphome/components/sensor/sensor.cpp +8 -4
  528. esphome/components/sensor/sensor.h +12 -11
  529. esphome/components/servo/servo.cpp +12 -9
  530. esphome/components/servo/servo.h +1 -1
  531. esphome/components/sfa30/sfa30.cpp +1 -1
  532. esphome/components/sgp30/sgp30.cpp +10 -8
  533. esphome/components/sgp4x/sgp4x.cpp +49 -61
  534. esphome/components/sgp4x/sgp4x.h +0 -1
  535. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  536. esphome/components/sht3xd/sht3xd.cpp +1 -1
  537. esphome/components/sht4x/sht4x.cpp +2 -2
  538. esphome/components/shtcx/shtcx.cpp +13 -16
  539. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  540. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  541. esphome/components/sim800l/sim800l.cpp +2 -2
  542. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  543. esphome/components/sm16716/sm16716.cpp +1 -1
  544. esphome/components/sm2135/sm2135.cpp +1 -1
  545. esphome/components/sm2235/sm2235.cpp +5 -3
  546. esphome/components/sm2335/sm2335.cpp +5 -3
  547. esphome/components/sml/sml.cpp +1 -1
  548. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  549. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  550. esphome/components/sntp/sntp_component.cpp +1 -1
  551. esphome/components/socket/__init__.py +2 -0
  552. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  553. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  554. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  555. esphome/components/socket/socket.cpp +31 -0
  556. esphome/components/socket/socket.h +27 -1
  557. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  558. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  559. esphome/components/sound_level/sound_level.cpp +4 -2
  560. esphome/components/speaker/media_player/__init__.py +3 -0
  561. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  562. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  563. esphome/components/spi/__init__.py +10 -2
  564. esphome/components/spi/spi.cpp +4 -4
  565. esphome/components/spi/spi_arduino.cpp +22 -9
  566. esphome/components/spi_device/spi_device.cpp +1 -2
  567. esphome/components/sprinkler/sprinkler.cpp +9 -6
  568. esphome/components/sps30/sps30.cpp +16 -15
  569. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  570. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  571. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  572. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  573. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  574. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  575. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  576. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  577. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  578. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  579. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  580. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  581. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  582. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  583. esphome/components/st7567_base/st7567_base.cpp +3 -3
  584. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  585. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  586. esphome/components/st7701s/st7701s.cpp +4 -2
  587. esphome/components/st7735/st7735.cpp +3 -3
  588. esphome/components/st7789v/st7789v.cpp +10 -7
  589. esphome/components/st7920/st7920.cpp +6 -4
  590. esphome/components/statsd/statsd.cpp +9 -5
  591. esphome/components/status_led/light/status_led_light.cpp +3 -3
  592. esphome/components/status_led/light/status_led_light.h +1 -1
  593. esphome/components/status_led/status_led.cpp +1 -1
  594. esphome/components/stepper/stepper.h +5 -3
  595. esphome/components/sts3x/sts3x.cpp +2 -2
  596. esphome/components/switch/__init__.py +1 -0
  597. esphome/components/switch/switch.cpp +18 -12
  598. esphome/components/switch/switch.h +14 -8
  599. esphome/components/sx1509/__init__.py +53 -20
  600. esphome/components/sx1509/sx1509.cpp +29 -5
  601. esphome/components/sx1509/sx1509.h +9 -1
  602. esphome/components/t6615/t6615.cpp +1 -0
  603. esphome/components/tc74/tc74.cpp +1 -1
  604. esphome/components/tca9548a/tca9548a.cpp +1 -1
  605. esphome/components/tca9555/tca9555.cpp +2 -2
  606. esphome/components/tcs34725/tcs34725.cpp +4 -4
  607. esphome/components/tee501/tee501.cpp +3 -2
  608. esphome/components/tem3200/tem3200.cpp +5 -6
  609. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  610. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +43 -12
  611. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +4 -1
  612. esphome/components/template/cover/template_cover.cpp +1 -1
  613. esphome/components/template/select/template_select.cpp +6 -4
  614. esphome/components/template/text/template_text.cpp +2 -3
  615. esphome/components/template/valve/template_valve.cpp +5 -3
  616. esphome/components/text/__init__.py +10 -11
  617. esphome/components/text/text.cpp +1 -1
  618. esphome/components/text/text.h +0 -4
  619. esphome/components/text_sensor/__init__.py +1 -0
  620. esphome/components/text_sensor/text_sensor.cpp +8 -4
  621. esphome/components/text_sensor/text_sensor.h +6 -6
  622. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  623. esphome/components/time/__init__.py +1 -2
  624. esphome/components/time_based/time_based_cover.cpp +4 -2
  625. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  626. esphome/components/tm1621/tm1621.cpp +3 -3
  627. esphome/components/tm1637/tm1637.cpp +9 -7
  628. esphome/components/tm1638/tm1638.cpp +7 -5
  629. esphome/components/tm1651/tm1651.cpp +2 -2
  630. esphome/components/tmp102/tmp102.cpp +1 -3
  631. esphome/components/tmp102/tmp102.h +0 -3
  632. esphome/components/tmp1075/tmp1075.cpp +12 -9
  633. esphome/components/tmp117/tmp117.cpp +2 -2
  634. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  635. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  636. esphome/components/tsl2561/tsl2561.cpp +7 -5
  637. esphome/components/tsl2591/tsl2591.cpp +25 -27
  638. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  639. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  640. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  641. esphome/components/tuya/select/tuya_select.cpp +5 -3
  642. esphome/components/tx20/tx20.cpp +3 -3
  643. esphome/components/uart/__init__.py +4 -5
  644. esphome/components/uart/button/uart_button.cpp +1 -1
  645. esphome/components/uart/switch/uart_switch.cpp +2 -2
  646. esphome/components/uart/uart.cpp +2 -2
  647. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  648. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  649. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  650. esphome/components/uart/uart_component_host.cpp +11 -8
  651. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  652. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  653. esphome/components/udp/udp_component.cpp +9 -5
  654. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  655. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  656. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  657. esphome/components/update/__init__.py +1 -0
  658. esphome/components/update/update_entity.cpp +1 -1
  659. esphome/components/update/update_entity.h +0 -3
  660. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  661. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  662. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  663. esphome/components/uptime/sensor/uptime_timestamp_sensor.cpp +1 -1
  664. esphome/components/usb_host/__init__.py +64 -0
  665. esphome/components/usb_host/usb_host.h +116 -0
  666. esphome/components/usb_host/usb_host_client.cpp +394 -0
  667. esphome/components/usb_host/usb_host_component.cpp +35 -0
  668. esphome/components/usb_uart/__init__.py +134 -0
  669. esphome/components/usb_uart/ch34x.cpp +80 -0
  670. esphome/components/usb_uart/cp210x.cpp +126 -0
  671. esphome/components/usb_uart/usb_uart.cpp +328 -0
  672. esphome/components/usb_uart/usb_uart.h +151 -0
  673. esphome/components/valve/__init__.py +1 -0
  674. esphome/components/veml3235/veml3235.cpp +13 -9
  675. esphome/components/veml7700/veml7700.cpp +10 -6
  676. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  677. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  678. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  679. esphome/components/web_server/server_index_v2.h +632 -630
  680. esphome/components/web_server/server_index_v3.h +411 -409
  681. esphome/components/web_server/web_server.cpp +5 -3
  682. esphome/components/web_server_base/web_server_base.cpp +1 -1
  683. esphome/components/web_server_idf/__init__.py +0 -2
  684. esphome/components/web_server_idf/utils.cpp +1 -1
  685. esphome/components/web_server_idf/web_server_idf.cpp +7 -3
  686. esphome/components/web_server_idf/web_server_idf.h +7 -0
  687. esphome/components/weikai/__init__.py +2 -0
  688. esphome/components/weikai/weikai.cpp +24 -22
  689. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  690. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  691. esphome/components/wiegand/wiegand.cpp +1 -1
  692. esphome/components/wifi/wifi_component.cpp +50 -37
  693. esphome/components/wifi/wifi_component.h +7 -4
  694. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  695. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  696. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  697. esphome/components/wireguard/wireguard.cpp +21 -21
  698. esphome/components/wl_134/text_sensor.py +1 -2
  699. esphome/components/wled/wled_light_effect.cpp +1 -1
  700. esphome/components/x9c/x9c.cpp +5 -3
  701. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  702. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  703. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  704. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  705. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  706. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  707. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  708. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  709. esphome/components/xl9535/xl9535.cpp +2 -2
  710. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  711. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  712. esphome/config.py +3 -2
  713. esphome/config_validation.py +46 -17
  714. esphome/const.py +10 -1
  715. esphome/core/__init__.py +37 -18
  716. esphome/core/application.cpp +197 -8
  717. esphome/core/application.h +116 -6
  718. esphome/core/component.cpp +36 -15
  719. esphome/core/component.h +43 -13
  720. esphome/core/config.py +12 -0
  721. esphome/core/defines.h +10 -2
  722. esphome/core/entity_base.cpp +4 -16
  723. esphome/core/entity_base.h +27 -13
  724. esphome/core/helpers.cpp +1 -1
  725. esphome/core/helpers.h +5 -5
  726. esphome/core/log.h +2 -0
  727. esphome/core/log_const_en.h +4 -0
  728. esphome/core/scheduler.cpp +2 -2
  729. esphome/coroutine.py +3 -4
  730. esphome/cpp_generator.py +32 -32
  731. esphome/dashboard/core.py +2 -2
  732. esphome/dashboard/web_server.py +2 -2
  733. esphome/git.py +4 -4
  734. esphome/helpers.py +5 -6
  735. esphome/loader.py +8 -7
  736. esphome/log.py +7 -1
  737. esphome/platformio_api.py +2 -3
  738. esphome/storage_json.py +13 -5
  739. esphome/types.py +12 -13
  740. esphome/util.py +1 -2
  741. esphome/wizard.py +0 -16
  742. esphome/writer.py +5 -3
  743. esphome/yaml_util.py +6 -1
  744. esphome/zeroconf.py +1 -1
  745. {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/METADATA +12 -11
  746. {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/RECORD +750 -696
  747. {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/WHEEL +1 -1
  748. {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/entry_points.txt +0 -0
  749. {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/licenses/LICENSE +0 -0
  750. {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/top_level.txt +0 -0
@@ -91,7 +91,7 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
91
91
  bool ret = WiFiClass::mode(set_mode);
92
92
 
93
93
  if (!ret) {
94
- ESP_LOGW(TAG, "Setting WiFi mode failed!");
94
+ ESP_LOGW(TAG, "Setting mode failed");
95
95
  return false;
96
96
  }
97
97
 
@@ -590,7 +590,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
590
590
  // Mitigate CVE-2020-12638
591
591
  // https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors
592
592
  if (it.old_mode != WIFI_AUTH_OPEN && it.new_mode == WIFI_AUTH_OPEN) {
593
- ESP_LOGW(TAG, "Potential Authmode downgrade detected, disconnecting...");
593
+ ESP_LOGW(TAG, "Potential Authmode downgrade detected, disconnecting");
594
594
  // we can't call retry_connect() from this context, so disconnect immediately
595
595
  // and notify main thread with error_from_callback_
596
596
  err_t err = esp_wifi_disconnect();
@@ -32,11 +32,11 @@ extern "C" {
32
32
  #endif
33
33
  }
34
34
 
35
+ #include "esphome/core/application.h"
36
+ #include "esphome/core/hal.h"
35
37
  #include "esphome/core/helpers.h"
36
38
  #include "esphome/core/log.h"
37
- #include "esphome/core/hal.h"
38
39
  #include "esphome/core/util.h"
39
- #include "esphome/core/application.h"
40
40
 
41
41
  namespace esphome {
42
42
  namespace wifi {
@@ -525,7 +525,7 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
525
525
  // Mitigate CVE-2020-12638
526
526
  // https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors
527
527
  if (it.old_mode != AUTH_OPEN && it.new_mode == AUTH_OPEN) {
528
- ESP_LOGW(TAG, "Potential Authmode downgrade detected, disconnecting...");
528
+ ESP_LOGW(TAG, "Potential Authmode downgrade detected, disconnecting");
529
529
  // we can't call retry_connect() from this context, so disconnect immediately
530
530
  // and notify main thread with error_from_callback_
531
531
  wifi_station_disconnect();
@@ -9,10 +9,10 @@
9
9
  #include "lwip/err.h"
10
10
  #include "lwip/dns.h"
11
11
 
12
+ #include "esphome/core/application.h"
13
+ #include "esphome/core/hal.h"
12
14
  #include "esphome/core/helpers.h"
13
15
  #include "esphome/core/log.h"
14
- #include "esphome/core/hal.h"
15
- #include "esphome/core/application.h"
16
16
  #include "esphome/core/util.h"
17
17
 
18
18
  namespace esphome {
@@ -50,7 +50,7 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
50
50
  bool ret = WiFi.mode(static_cast<wifi_mode_t>(mode));
51
51
 
52
52
  if (!ret) {
53
- ESP_LOGW(TAG, "Setting WiFi mode failed!");
53
+ ESP_LOGW(TAG, "Setting mode failed");
54
54
  }
55
55
 
56
56
  return ret;
@@ -315,7 +315,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
315
315
  // Mitigate CVE-2020-12638
316
316
  // https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors
317
317
  if (it.old_mode != WIFI_AUTH_OPEN && it.new_mode == WIFI_AUTH_OPEN) {
318
- ESP_LOGW(TAG, "Potential Authmode downgrade detected, disconnecting...");
318
+ ESP_LOGW(TAG, "Potential Authmode downgrade detected, disconnecting");
319
319
  // we can't call retry_connect() from this context, so disconnect immediately
320
320
  // and notify main thread with error_from_callback_
321
321
  WiFi.disconnect();
@@ -21,13 +21,13 @@ static const char *const TAG = "wireguard";
21
21
  * Cannot use `static const char*` for LOGMSG_PEER_STATUS on esp8266 platform
22
22
  * because log messages in `Wireguard::update()` method fail.
23
23
  */
24
- #define LOGMSG_PEER_STATUS "WireGuard remote peer is %s (latest handshake %s)"
24
+ #define LOGMSG_PEER_STATUS "Remote peer is %s (latest handshake %s)"
25
25
 
26
26
  static const char *const LOGMSG_ONLINE = "online";
27
27
  static const char *const LOGMSG_OFFLINE = "offline";
28
28
 
29
29
  void Wireguard::setup() {
30
- ESP_LOGD(TAG, "initializing WireGuard...");
30
+ ESP_LOGCONFIG(TAG, "Running setup");
31
31
 
32
32
  this->wg_config_.address = this->address_.c_str();
33
33
  this->wg_config_.private_key = this->private_key_.c_str();
@@ -45,7 +45,7 @@ void Wireguard::setup() {
45
45
  this->wg_initialized_ = esp_wireguard_init(&(this->wg_config_), &(this->wg_ctx_));
46
46
 
47
47
  if (this->wg_initialized_ == ESP_OK) {
48
- ESP_LOGI(TAG, "WireGuard initialized");
48
+ ESP_LOGI(TAG, "Initialized");
49
49
  this->wg_peer_offline_time_ = millis();
50
50
  this->srctime_->add_on_time_sync_callback(std::bind(&Wireguard::start_connection_, this));
51
51
  this->defer(std::bind(&Wireguard::start_connection_, this)); // defer to avoid blocking setup
@@ -56,7 +56,7 @@ void Wireguard::setup() {
56
56
  }
57
57
  #endif
58
58
  } else {
59
- ESP_LOGE(TAG, "cannot initialize WireGuard, error code %d", this->wg_initialized_);
59
+ ESP_LOGE(TAG, "Cannot initialize: error code %d", this->wg_initialized_);
60
60
  this->mark_failed();
61
61
  }
62
62
  }
@@ -67,7 +67,7 @@ void Wireguard::loop() {
67
67
  }
68
68
 
69
69
  if ((this->wg_initialized_ == ESP_OK) && (this->wg_connected_ == ESP_OK) && (!network::is_connected())) {
70
- ESP_LOGV(TAG, "local network connection has been lost, stopping WireGuard...");
70
+ ESP_LOGV(TAG, "Local network connection has been lost, stopping");
71
71
  this->stop_connection_();
72
72
  }
73
73
  }
@@ -109,7 +109,7 @@ void Wireguard::update() {
109
109
  // check reboot timeout every time the peer is down
110
110
  if (this->enabled_ && this->reboot_timeout_ > 0) {
111
111
  if (millis() - this->wg_peer_offline_time_ > this->reboot_timeout_) {
112
- ESP_LOGE(TAG, "WireGuard remote peer is unreachable, rebooting...");
112
+ ESP_LOGE(TAG, "Remote peer is unreachable; rebooting");
113
113
  App.reboot();
114
114
  }
115
115
  }
@@ -201,14 +201,14 @@ void Wireguard::disable_auto_proceed() { this->proceed_allowed_ = false; }
201
201
 
202
202
  void Wireguard::enable() {
203
203
  this->enabled_ = true;
204
- ESP_LOGI(TAG, "WireGuard enabled");
204
+ ESP_LOGI(TAG, "Enabled");
205
205
  this->publish_enabled_state();
206
206
  }
207
207
 
208
208
  void Wireguard::disable() {
209
209
  this->enabled_ = false;
210
210
  this->defer(std::bind(&Wireguard::stop_connection_, this)); // defer to avoid blocking running loop
211
- ESP_LOGI(TAG, "WireGuard disabled");
211
+ ESP_LOGI(TAG, "Disabled");
212
212
  this->publish_enabled_state();
213
213
  }
214
214
 
@@ -224,44 +224,44 @@ bool Wireguard::is_enabled() { return this->enabled_; }
224
224
 
225
225
  void Wireguard::start_connection_() {
226
226
  if (!this->enabled_) {
227
- ESP_LOGV(TAG, "WireGuard is disabled, cannot start connection");
227
+ ESP_LOGV(TAG, "Disabled, cannot start connection");
228
228
  return;
229
229
  }
230
230
 
231
231
  if (this->wg_initialized_ != ESP_OK) {
232
- ESP_LOGE(TAG, "cannot start WireGuard, initialization in error with code %d", this->wg_initialized_);
232
+ ESP_LOGE(TAG, "Cannot start: error code %d", this->wg_initialized_);
233
233
  return;
234
234
  }
235
235
 
236
236
  if (!network::is_connected()) {
237
- ESP_LOGD(TAG, "WireGuard is waiting for local network connection to be available");
237
+ ESP_LOGD(TAG, "Waiting for local network connection to be available");
238
238
  return;
239
239
  }
240
240
 
241
241
  if (!this->srctime_->now().is_valid()) {
242
- ESP_LOGD(TAG, "WireGuard is waiting for system time to be synchronized");
242
+ ESP_LOGD(TAG, "Waiting for system time to be synchronized");
243
243
  return;
244
244
  }
245
245
 
246
246
  if (this->wg_connected_ == ESP_OK) {
247
- ESP_LOGV(TAG, "WireGuard connection already started");
247
+ ESP_LOGV(TAG, "Connection already started");
248
248
  return;
249
249
  }
250
250
 
251
- ESP_LOGD(TAG, "starting WireGuard connection...");
251
+ ESP_LOGD(TAG, "Starting connection");
252
252
  this->wg_connected_ = esp_wireguard_connect(&(this->wg_ctx_));
253
253
 
254
254
  if (this->wg_connected_ == ESP_OK) {
255
- ESP_LOGI(TAG, "WireGuard connection started");
255
+ ESP_LOGI(TAG, "Connection started");
256
256
  } else if (this->wg_connected_ == ESP_ERR_RETRY) {
257
- ESP_LOGD(TAG, "WireGuard is waiting for endpoint IP address to be available");
257
+ ESP_LOGD(TAG, "Waiting for endpoint IP address to be available");
258
258
  return;
259
259
  } else {
260
- ESP_LOGW(TAG, "cannot start WireGuard connection, error code %d", this->wg_connected_);
260
+ ESP_LOGW(TAG, "Cannot start connection, error code %d", this->wg_connected_);
261
261
  return;
262
262
  }
263
263
 
264
- ESP_LOGD(TAG, "configuring WireGuard allowed IPs list...");
264
+ ESP_LOGD(TAG, "Configuring allowed IPs list");
265
265
  bool allowed_ips_ok = true;
266
266
  for (std::tuple<std::string, std::string> ip : this->allowed_ips_) {
267
267
  allowed_ips_ok &=
@@ -269,9 +269,9 @@ void Wireguard::start_connection_() {
269
269
  }
270
270
 
271
271
  if (allowed_ips_ok) {
272
- ESP_LOGD(TAG, "allowed IPs list configured correctly");
272
+ ESP_LOGD(TAG, "Allowed IPs list configured correctly");
273
273
  } else {
274
- ESP_LOGE(TAG, "cannot configure WireGuard allowed IPs list, aborting...");
274
+ ESP_LOGE(TAG, "Cannot configure allowed IPs list, aborting");
275
275
  this->stop_connection_();
276
276
  this->mark_failed();
277
277
  }
@@ -279,7 +279,7 @@ void Wireguard::start_connection_() {
279
279
 
280
280
  void Wireguard::stop_connection_() {
281
281
  if (this->wg_initialized_ == ESP_OK && this->wg_connected_ == ESP_OK) {
282
- ESP_LOGD(TAG, "stopping WireGuard connection...");
282
+ ESP_LOGD(TAG, "Stopping connection");
283
283
  esp_wireguard_disconnect(&(this->wg_ctx_));
284
284
  this->wg_connected_ = ESP_FAIL;
285
285
  }
@@ -1,11 +1,10 @@
1
1
  import esphome.codegen as cg
2
2
  from esphome.components import text_sensor, uart
3
3
  import esphome.config_validation as cv
4
- from esphome.const import ICON_FINGERPRINT
4
+ from esphome.const import CONF_RESET, ICON_FINGERPRINT
5
5
 
6
6
  CODEOWNERS = ["@hobbypunk90"]
7
7
  DEPENDENCIES = ["uart"]
8
- CONF_RESET = "reset"
9
8
 
10
9
  wl134_ns = cg.esphome_ns.namespace("wl_134")
11
10
  Wl134Component = wl134_ns.class_(
@@ -1,8 +1,8 @@
1
1
  #ifdef USE_ARDUINO
2
2
 
3
3
  #include "wled_light_effect.h"
4
- #include "esphome/core/log.h"
5
4
  #include "esphome/core/helpers.h"
5
+ #include "esphome/core/log.h"
6
6
 
7
7
  #ifdef USE_ESP32
8
8
  #include <WiFi.h>
@@ -34,7 +34,7 @@ void X9cOutput::trim_value(int change_amount) {
34
34
  }
35
35
 
36
36
  void X9cOutput::setup() {
37
- ESP_LOGCONFIG(TAG, "Setting up X9C Potentiometer with initial value of %f", this->initial_value_);
37
+ ESP_LOGCONFIG(TAG, "Running setup");
38
38
 
39
39
  this->inc_pin_->get_pin();
40
40
  this->inc_pin_->setup();
@@ -68,8 +68,10 @@ void X9cOutput::dump_config() {
68
68
  LOG_PIN(" Chip Select Pin: ", this->cs_pin_);
69
69
  LOG_PIN(" Increment Pin: ", this->inc_pin_);
70
70
  LOG_PIN(" Up/Down Pin: ", this->ud_pin_);
71
- ESP_LOGCONFIG(TAG, " Initial Value: %f", this->initial_value_);
72
- ESP_LOGCONFIG(TAG, " Step Delay: %d", this->step_delay_);
71
+ ESP_LOGCONFIG(TAG,
72
+ " Initial Value: %f\n"
73
+ " Step Delay: %d",
74
+ this->initial_value_, this->step_delay_);
73
75
  LOG_FLOAT_OUTPUT(this);
74
76
  }
75
77
 
@@ -1,7 +1,7 @@
1
1
  #include "xgzp68xx.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/hal.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
  #include "esphome/components/i2c/i2c.h"
6
6
 
7
7
  #include <cinttypes>
@@ -69,22 +69,24 @@ void XGZP68XXComponent::update() {
69
69
  }
70
70
 
71
71
  void XGZP68XXComponent::setup() {
72
- ESP_LOGD(TAG, "Setting up XGZP68xx...");
72
+ ESP_LOGCONFIG(TAG, "Running setup");
73
73
  uint8_t config;
74
74
 
75
75
  // Display some sample bits to confirm we are talking to the sensor
76
76
  this->read_register(SYSCONFIG_ADDRESS, &config, 1);
77
- ESP_LOGCONFIG(TAG, "Gain value is %d", (config >> 3) & 0b111);
78
- ESP_LOGCONFIG(TAG, "XGZP68xx started!");
77
+ ESP_LOGCONFIG(TAG,
78
+ "Gain value is %d\n"
79
+ "XGZP68xx started!",
80
+ (config >> 3) & 0b111);
79
81
  }
80
82
 
81
83
  void XGZP68XXComponent::dump_config() {
82
- ESP_LOGCONFIG(TAG, "XGZP68xx");
84
+ ESP_LOGCONFIG(TAG, "XGZP68xx:");
83
85
  LOG_SENSOR(" ", "Temperature: ", this->temperature_sensor_);
84
86
  LOG_SENSOR(" ", "Pressure: ", this->pressure_sensor_);
85
87
  LOG_I2C_DEVICE(this);
86
88
  if (this->is_failed()) {
87
- ESP_LOGE(TAG, " Connection with XGZP68xx failed!");
89
+ ESP_LOGE(TAG, " Connection failed");
88
90
  }
89
91
  LOG_UPDATE_INTERVAL(this);
90
92
  }
@@ -9,8 +9,10 @@ namespace xiaomi_cgd1 {
9
9
  static const char *const TAG = "xiaomi_cgd1";
10
10
 
11
11
  void XiaomiCGD1::dump_config() {
12
- ESP_LOGCONFIG(TAG, "Xiaomi CGD1");
13
- ESP_LOGCONFIG(TAG, " Bindkey: %s", format_hex_pretty(this->bindkey_, 16).c_str());
12
+ ESP_LOGCONFIG(TAG,
13
+ "Xiaomi CGD1\n"
14
+ " Bindkey: %s",
15
+ format_hex_pretty(this->bindkey_, 16).c_str());
14
16
  LOG_SENSOR(" ", "Temperature", this->temperature_);
15
17
  LOG_SENSOR(" ", "Humidity", this->humidity_);
16
18
  LOG_SENSOR(" ", "Battery Level", this->battery_level_);
@@ -9,8 +9,10 @@ namespace xiaomi_cgdk2 {
9
9
  static const char *const TAG = "xiaomi_cgdk2";
10
10
 
11
11
  void XiaomiCGDK2::dump_config() {
12
- ESP_LOGCONFIG(TAG, "Xiaomi CGDK2");
13
- ESP_LOGCONFIG(TAG, " Bindkey: %s", format_hex_pretty(this->bindkey_, 16).c_str());
12
+ ESP_LOGCONFIG(TAG,
13
+ "Xiaomi CGDK2\n"
14
+ " Bindkey: %s",
15
+ format_hex_pretty(this->bindkey_, 16).c_str());
14
16
  LOG_SENSOR(" ", "Temperature", this->temperature_);
15
17
  LOG_SENSOR(" ", "Humidity", this->humidity_);
16
18
  LOG_SENSOR(" ", "Battery Level", this->battery_level_);
@@ -9,8 +9,10 @@ namespace xiaomi_cgg1 {
9
9
  static const char *const TAG = "xiaomi_cgg1";
10
10
 
11
11
  void XiaomiCGG1::dump_config() {
12
- ESP_LOGCONFIG(TAG, "Xiaomi CGG1");
13
- ESP_LOGCONFIG(TAG, " Bindkey: %s", format_hex_pretty(this->bindkey_, 16).c_str());
12
+ ESP_LOGCONFIG(TAG,
13
+ "Xiaomi CGG1\n"
14
+ " Bindkey: %s",
15
+ format_hex_pretty(this->bindkey_, 16).c_str());
14
16
  LOG_SENSOR(" ", "Temperature", this->temperature_);
15
17
  LOG_SENSOR(" ", "Humidity", this->humidity_);
16
18
  LOG_SENSOR(" ", "Battery Level", this->battery_level_);
@@ -1,6 +1,6 @@
1
1
  #include "xiaomi_hhccjcy10.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/helpers.h"
3
+ #include "esphome/core/log.h"
4
4
 
5
5
  #ifdef USE_ESP32
6
6
 
@@ -9,8 +9,10 @@ namespace xiaomi_lywsd02mmc {
9
9
  static const char *const TAG = "xiaomi_lywsd02mmc";
10
10
 
11
11
  void XiaomiLYWSD02MMC::dump_config() {
12
- ESP_LOGCONFIG(TAG, "Xiaomi LYWSD02MMC");
13
- ESP_LOGCONFIG(TAG, " Bindkey: %s", format_hex_pretty(this->bindkey_, 16).c_str());
12
+ ESP_LOGCONFIG(TAG,
13
+ "Xiaomi LYWSD02MMC\n"
14
+ " Bindkey: %s",
15
+ format_hex_pretty(this->bindkey_, 16).c_str());
14
16
  LOG_SENSOR(" ", "Temperature", this->temperature_);
15
17
  LOG_SENSOR(" ", "Humidity", this->humidity_);
16
18
  LOG_SENSOR(" ", "Battery Level", this->battery_level_);
@@ -9,8 +9,10 @@ namespace xiaomi_lywsd03mmc {
9
9
  static const char *const TAG = "xiaomi_lywsd03mmc";
10
10
 
11
11
  void XiaomiLYWSD03MMC::dump_config() {
12
- ESP_LOGCONFIG(TAG, "Xiaomi LYWSD03MMC");
13
- ESP_LOGCONFIG(TAG, " Bindkey: %s", format_hex_pretty(this->bindkey_, 16).c_str());
12
+ ESP_LOGCONFIG(TAG,
13
+ "Xiaomi LYWSD03MMC\n"
14
+ " Bindkey: %s",
15
+ format_hex_pretty(this->bindkey_, 16).c_str());
14
16
  LOG_SENSOR(" ", "Temperature", this->temperature_);
15
17
  LOG_SENSOR(" ", "Humidity", this->humidity_);
16
18
  LOG_SENSOR(" ", "Battery Level", this->battery_level_);
@@ -9,8 +9,10 @@ namespace xiaomi_mhoc401 {
9
9
  static const char *const TAG = "xiaomi_mhoc401";
10
10
 
11
11
  void XiaomiMHOC401::dump_config() {
12
- ESP_LOGCONFIG(TAG, "Xiaomi MHOC401");
13
- ESP_LOGCONFIG(TAG, " Bindkey: %s", format_hex_pretty(this->bindkey_, 16).c_str());
12
+ ESP_LOGCONFIG(TAG,
13
+ "Xiaomi MHOC401\n"
14
+ " Bindkey: %s",
15
+ format_hex_pretty(this->bindkey_, 16).c_str());
14
16
  LOG_SENSOR(" ", "Temperature", this->temperature_);
15
17
  LOG_SENSOR(" ", "Humidity", this->humidity_);
16
18
  LOG_SENSOR(" ", "Battery Level", this->battery_level_);
@@ -7,7 +7,7 @@ namespace xl9535 {
7
7
  static const char *const TAG = "xl9535";
8
8
 
9
9
  void XL9535Component::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up XL9535...");
10
+ ESP_LOGCONFIG(TAG, "Running setup");
11
11
 
12
12
  // Check to see if the device can read from the register
13
13
  uint8_t port = 0;
@@ -22,7 +22,7 @@ void XL9535Component::dump_config() {
22
22
  LOG_I2C_DEVICE(this);
23
23
 
24
24
  if (this->is_failed()) {
25
- ESP_LOGE(TAG, "Communication with XL9535 failed!");
25
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
26
26
  }
27
27
  }
28
28
 
@@ -1,6 +1,6 @@
1
1
  #include "xpt2046.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/helpers.h"
3
+ #include "esphome/core/log.h"
4
4
 
5
5
  #include <algorithm>
6
6
 
@@ -62,16 +62,17 @@ void XPT2046Component::dump_config() {
62
62
  ESP_LOGCONFIG(TAG, "XPT2046:");
63
63
 
64
64
  LOG_PIN(" IRQ Pin: ", this->irq_pin_);
65
- ESP_LOGCONFIG(TAG, " X min: %d", this->x_raw_min_);
66
- ESP_LOGCONFIG(TAG, " X max: %d", this->x_raw_max_);
67
- ESP_LOGCONFIG(TAG, " Y min: %d", this->y_raw_min_);
68
- ESP_LOGCONFIG(TAG, " Y max: %d", this->y_raw_max_);
69
-
70
- ESP_LOGCONFIG(TAG, " Swap X/Y: %s", YESNO(this->swap_x_y_));
71
- ESP_LOGCONFIG(TAG, " Invert X: %s", YESNO(this->invert_x_));
72
- ESP_LOGCONFIG(TAG, " Invert Y: %s", YESNO(this->invert_y_));
73
-
74
- ESP_LOGCONFIG(TAG, " threshold: %d", this->threshold_);
65
+ ESP_LOGCONFIG(TAG,
66
+ " X min: %d\n"
67
+ " X max: %d\n"
68
+ " Y min: %d\n"
69
+ " Y max: %d\n"
70
+ " Swap X/Y: %s\n"
71
+ " Invert X: %s\n"
72
+ " Invert Y: %s\n"
73
+ " threshold: %d",
74
+ this->x_raw_min_, this->x_raw_max_, this->y_raw_min_, this->y_raw_max_, YESNO(this->swap_x_y_),
75
+ YESNO(this->invert_x_), YESNO(this->invert_y_), this->threshold_);
75
76
 
76
77
  LOG_UPDATE_INTERVAL(this);
77
78
  }
@@ -1,9 +1,9 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/component.h"
4
- #include "esphome/core/automation.h"
5
3
  #include "esphome/components/spi/spi.h"
6
4
  #include "esphome/components/touchscreen/touchscreen.h"
5
+ #include "esphome/core/automation.h"
6
+ #include "esphome/core/component.h"
7
7
  #include "esphome/core/helpers.h"
8
8
  #include "esphome/core/log.h"
9
9
 
esphome/config.py CHANGED
@@ -7,7 +7,7 @@ import functools
7
7
  import heapq
8
8
  import logging
9
9
  import re
10
- from typing import Any, Union
10
+ from typing import Any
11
11
 
12
12
  import voluptuous as vol
13
13
 
@@ -63,7 +63,7 @@ def iter_component_configs(config):
63
63
  yield p_name, platform, p_config
64
64
 
65
65
 
66
- ConfigPath = list[Union[str, int]]
66
+ ConfigPath = list[str | int]
67
67
  path_context = contextvars.ContextVar("Config path")
68
68
 
69
69
 
@@ -389,6 +389,7 @@ class LoadValidationStep(ConfigValidationStep):
389
389
  result.add_str_error(f"Platform not found: '{p_domain}'", path)
390
390
  continue
391
391
  CORE.loaded_integrations.add(p_name)
392
+ CORE.loaded_platforms.add(f"{self.domain}/{p_name}")
392
393
 
393
394
  # Process AUTO_LOAD
394
395
  for load in platform.auto_load:
@@ -982,23 +982,32 @@ def uuid(value):
982
982
 
983
983
 
984
984
  METRIC_SUFFIXES = {
985
- "E": 1e18,
986
- "P": 1e15,
987
- "T": 1e12,
988
- "G": 1e9,
989
- "M": 1e6,
990
- "k": 1e3,
991
- "da": 10,
992
- "d": 1e-1,
993
- "c": 1e-2,
994
- "m": 0.001,
995
- "µ": 1e-6,
996
- "u": 1e-6,
997
- "n": 1e-9,
998
- "p": 1e-12,
999
- "f": 1e-15,
1000
- "a": 1e-18,
1001
- "": 1,
985
+ "Q": 1e30, # Quetta
986
+ "R": 1e27, # Ronna
987
+ "Y": 1e24, # Yotta
988
+ "Z": 1e21, # Zetta
989
+ "E": 1e18, # Exa
990
+ "P": 1e15, # Peta
991
+ "T": 1e12, # Tera
992
+ "G": 1e9, # Giga
993
+ "M": 1e6, # Mega
994
+ "k": 1e3, # Kilo
995
+ "h": 1e2, # Hecto
996
+ "da": 1e1, # Deca
997
+ "": 1e0, # No prefix
998
+ "d": 1e-1, # Deci
999
+ "c": 1e-2, # Centi
1000
+ "m": 1e-3, # Milli
1001
+ "µ": 1e-6, # Micro
1002
+ "u": 1e-6, # Micro (same as µ)
1003
+ "n": 1e-9, # Nano
1004
+ "p": 1e-12, # Pico
1005
+ "f": 1e-15, # Femto
1006
+ "a": 1e-18, # Atto
1007
+ "z": 1e-21, # Zepto
1008
+ "y": 1e-24, # Yocto
1009
+ "r": 1e-27, # Ronto
1010
+ "q": 1e-30, # Quecto
1002
1011
  }
1003
1012
 
1004
1013
 
@@ -1658,6 +1667,26 @@ class OnlyWith(Optional):
1658
1667
  pass
1659
1668
 
1660
1669
 
1670
+ class OnlyWithout(Optional):
1671
+ """Set the default value only if the given component is NOT loaded."""
1672
+
1673
+ def __init__(self, key, component, default=None):
1674
+ super().__init__(key)
1675
+ self._component = component
1676
+ self._default = vol.default_factory(default)
1677
+
1678
+ @property
1679
+ def default(self):
1680
+ if self._component not in CORE.loaded_integrations:
1681
+ return self._default
1682
+ return vol.UNDEFINED
1683
+
1684
+ @default.setter
1685
+ def default(self, value):
1686
+ # Ignore default set from vol.Optional
1687
+ pass
1688
+
1689
+
1661
1690
  def _entity_base_validator(config):
1662
1691
  if CONF_NAME not in config and CONF_ID not in config:
1663
1692
  raise Invalid("At least one of 'id:' or 'name:' is required!")
esphome/const.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Constants used by esphome."""
2
2
 
3
- __version__ = "2025.5.2"
3
+ __version__ = "2025.6.0"
4
4
 
5
5
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
6
6
  VALID_SUBSTITUTIONS_CHARACTERS = (
@@ -735,6 +735,7 @@ CONF_REFRESH = "refresh"
735
735
  CONF_RELABEL = "relabel"
736
736
  CONF_REPEAT = "repeat"
737
737
  CONF_REPOSITORY = "repository"
738
+ CONF_RESET = "reset"
738
739
  CONF_RESET_DURATION = "reset_duration"
739
740
  CONF_RESET_PIN = "reset_pin"
740
741
  CONF_RESIZE = "resize"
@@ -962,6 +963,7 @@ CONF_WAND_ID = "wand_id"
962
963
  CONF_WARM_WHITE = "warm_white"
963
964
  CONF_WARM_WHITE_COLOR_TEMPERATURE = "warm_white_color_temperature"
964
965
  CONF_WATCHDOG_THRESHOLD = "watchdog_threshold"
966
+ CONF_WATCHDOG_TIMEOUT = "watchdog_timeout"
965
967
  CONF_WEB_SERVER = "web_server"
966
968
  CONF_WEB_SERVER_ID = "web_server_id"
967
969
  CONF_WEIGHT = "weight"
@@ -974,7 +976,9 @@ CONF_WIND_DIRECTION_DEGREES = "wind_direction_degrees"
974
976
  CONF_WIND_SPEED = "wind_speed"
975
977
  CONF_WINDOW_SIZE = "window_size"
976
978
  CONF_WRITE_PIN = "write_pin"
979
+ CONF_X = "x"
977
980
  CONF_X_GRID = "x_grid"
981
+ CONF_Y = "y"
978
982
  CONF_Y_GRID = "y_grid"
979
983
  CONF_YEAR = "year"
980
984
  CONF_ZERO = "zero"
@@ -1130,11 +1134,13 @@ UNIT_WATT_HOURS = "Wh"
1130
1134
  # device classes
1131
1135
  DEVICE_CLASS_APPARENT_POWER = "apparent_power"
1132
1136
  DEVICE_CLASS_AQI = "aqi"
1137
+ DEVICE_CLASS_AREA = "area"
1133
1138
  DEVICE_CLASS_ATMOSPHERIC_PRESSURE = "atmospheric_pressure"
1134
1139
  DEVICE_CLASS_AWNING = "awning"
1135
1140
  DEVICE_CLASS_BATTERY = "battery"
1136
1141
  DEVICE_CLASS_BATTERY_CHARGING = "battery_charging"
1137
1142
  DEVICE_CLASS_BLIND = "blind"
1143
+ DEVICE_CLASS_BLOOD_GLUCOSE_CONCENTRATION = "blood_glucose_concentration"
1138
1144
  DEVICE_CLASS_BUTTON = "button"
1139
1145
  DEVICE_CLASS_CARBON_DIOXIDE = "carbon_dioxide"
1140
1146
  DEVICE_CLASS_CARBON_MONOXIDE = "carbon_monoxide"
@@ -1153,6 +1159,7 @@ DEVICE_CLASS_DOORBELL = "doorbell"
1153
1159
  DEVICE_CLASS_DURATION = "duration"
1154
1160
  DEVICE_CLASS_EMPTY = ""
1155
1161
  DEVICE_CLASS_ENERGY = "energy"
1162
+ DEVICE_CLASS_ENERGY_DISTANCE = "energy_distance"
1156
1163
  DEVICE_CLASS_ENERGY_STORAGE = "energy_storage"
1157
1164
  DEVICE_CLASS_FIRMWARE = "firmware"
1158
1165
  DEVICE_CLASS_FREQUENCY = "frequency"
@@ -1190,6 +1197,7 @@ DEVICE_CLASS_PRECIPITATION_INTENSITY = "precipitation_intensity"
1190
1197
  DEVICE_CLASS_PRESENCE = "presence"
1191
1198
  DEVICE_CLASS_PRESSURE = "pressure"
1192
1199
  DEVICE_CLASS_PROBLEM = "problem"
1200
+ DEVICE_CLASS_REACTIVE_ENERGY = "reactive_energy"
1193
1201
  DEVICE_CLASS_REACTIVE_POWER = "reactive_power"
1194
1202
  DEVICE_CLASS_RESTART = "restart"
1195
1203
  DEVICE_CLASS_RUNNING = "running"
@@ -1217,6 +1225,7 @@ DEVICE_CLASS_VOLUME_STORAGE = "volume_storage"
1217
1225
  DEVICE_CLASS_WATER = "water"
1218
1226
  DEVICE_CLASS_WEIGHT = "weight"
1219
1227
  DEVICE_CLASS_WINDOW = "window"
1228
+ DEVICE_CLASS_WIND_DIRECTION = "wind_direction"
1220
1229
  DEVICE_CLASS_WIND_SPEED = "wind_speed"
1221
1230
 
1222
1231
  # state classes