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
@@ -19,10 +19,12 @@ void LCDCharacterMenuComponent::setup() {
19
19
  float LCDCharacterMenuComponent::get_setup_priority() const { return setup_priority::PROCESSOR - 1.0f; }
20
20
 
21
21
  void LCDCharacterMenuComponent::dump_config() {
22
- ESP_LOGCONFIG(TAG, "LCD Menu");
23
- ESP_LOGCONFIG(TAG, " Columns: %u, Rows: %u", this->columns_, this->rows_);
24
- ESP_LOGCONFIG(TAG, " Mark characters: %02x, %02x, %02x, %02x", this->mark_selected_, this->mark_editing_,
25
- this->mark_submenu_, this->mark_back_);
22
+ ESP_LOGCONFIG(TAG,
23
+ "LCD Menu\n"
24
+ " Columns: %u, Rows: %u\n"
25
+ " Mark characters: %02x, %02x, %02x, %02x",
26
+ this->columns_, this->rows_, this->mark_selected_, this->mark_editing_, this->mark_submenu_,
27
+ this->mark_back_);
26
28
  if (this->is_failed()) {
27
29
  ESP_LOGE(TAG, "The connected display failed, the menu is disabled!");
28
30
  }
@@ -11,7 +11,7 @@ static const uint8_t LCD_DISPLAY_BACKLIGHT_ON = 0x08;
11
11
  static const uint8_t LCD_DISPLAY_BACKLIGHT_OFF = 0x00;
12
12
 
13
13
  void PCF8574LCDDisplay::setup() {
14
- ESP_LOGCONFIG(TAG, "Setting up PCF8574 LCD Display...");
14
+ ESP_LOGCONFIG(TAG, "Running setup");
15
15
  this->backlight_value_ = LCD_DISPLAY_BACKLIGHT_ON;
16
16
  if (!this->write_bytes(this->backlight_value_, nullptr, 0)) {
17
17
  this->mark_failed();
@@ -21,12 +21,14 @@ void PCF8574LCDDisplay::setup() {
21
21
  LCDDisplay::setup();
22
22
  }
23
23
  void PCF8574LCDDisplay::dump_config() {
24
- ESP_LOGCONFIG(TAG, "PCF8574 LCD Display:");
25
- ESP_LOGCONFIG(TAG, " Columns: %u, Rows: %u", this->columns_, this->rows_);
24
+ ESP_LOGCONFIG(TAG,
25
+ "PCF8574 LCD Display:\n"
26
+ " Columns: %u, Rows: %u",
27
+ this->columns_, this->rows_);
26
28
  LOG_I2C_DEVICE(this);
27
29
  LOG_UPDATE_INTERVAL(this);
28
30
  if (this->is_failed()) {
29
- ESP_LOGE(TAG, "Communication with LCD Display failed!");
31
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
30
32
  }
31
33
  }
32
34
  void PCF8574LCDDisplay::write_n_bits(uint8_t value, uint8_t n) {
@@ -72,17 +72,16 @@ void LD2410Component::dump_config() {
72
72
  }
73
73
  #endif
74
74
  this->read_all_info();
75
- ESP_LOGCONFIG(TAG, " Throttle_ : %ums", this->throttle_);
76
- ESP_LOGCONFIG(TAG, " MAC Address : %s", const_cast<char *>(this->mac_.c_str()));
77
- ESP_LOGCONFIG(TAG, " Firmware Version : %s", const_cast<char *>(this->version_.c_str()));
75
+ ESP_LOGCONFIG(TAG,
76
+ " Throttle_ : %ums\n"
77
+ " MAC Address : %s\n"
78
+ " Firmware Version : %s",
79
+ this->throttle_, const_cast<char *>(this->mac_.c_str()), const_cast<char *>(this->version_.c_str()));
78
80
  }
79
81
 
80
82
  void LD2410Component::setup() {
81
- ESP_LOGCONFIG(TAG, "Setting up LD2410...");
83
+ ESP_LOGCONFIG(TAG, "Running setup");
82
84
  this->read_all_info();
83
- ESP_LOGCONFIG(TAG, "Mac Address : %s", const_cast<char *>(this->mac_.c_str()));
84
- ESP_LOGCONFIG(TAG, "Firmware Version : %s", const_cast<char *>(this->version_.c_str()));
85
- ESP_LOGCONFIG(TAG, "LD2410 setup complete.");
86
85
  }
87
86
 
88
87
  void LD2410Component::read_all_info() {
@@ -65,9 +65,11 @@ static const char *const TAG = "ld2420";
65
65
  float LD2420Component::get_setup_priority() const { return setup_priority::BUS; }
66
66
 
67
67
  void LD2420Component::dump_config() {
68
- ESP_LOGCONFIG(TAG, "LD2420:");
69
- ESP_LOGCONFIG(TAG, " Firmware Version : %7s", this->ld2420_firmware_ver_);
70
- ESP_LOGCONFIG(TAG, "LD2420 Number:");
68
+ ESP_LOGCONFIG(TAG,
69
+ "LD2420:\n"
70
+ " Firmware Version : %7s\n"
71
+ "LD2420 Number:",
72
+ this->ld2420_firmware_ver_);
71
73
  #ifdef USE_NUMBER
72
74
  LOG_NUMBER(TAG, " Gate Timeout:", this->gate_timeout_number_);
73
75
  LOG_NUMBER(TAG, " Gate Max Distance:", this->max_gate_distance_number_);
@@ -111,7 +113,7 @@ int LD2420Component::get_firmware_int_(const char *version_string) {
111
113
  }
112
114
 
113
115
  void LD2420Component::setup() {
114
- ESP_LOGCONFIG(TAG, "Setting up LD2420...");
116
+ ESP_LOGCONFIG(TAG, "Running setup");
115
117
  if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
116
118
  ESP_LOGE(TAG, "LD2420 module has failed to respond, check baud rate and serial connections.");
117
119
  this->mark_failed();
@@ -158,7 +160,7 @@ void LD2420Component::apply_config_action() {
158
160
  ESP_LOGCONFIG(TAG, "No configuration change detected");
159
161
  return;
160
162
  }
161
- ESP_LOGCONFIG(TAG, "Reconfiguring LD2420...");
163
+ ESP_LOGCONFIG(TAG, "Reconfiguring LD2420");
162
164
  if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
163
165
  ESP_LOGE(TAG, "LD2420 module has failed to respond, check baud rate and serial connections.");
164
166
  this->mark_failed();
@@ -180,7 +182,7 @@ void LD2420Component::apply_config_action() {
180
182
  }
181
183
 
182
184
  void LD2420Component::factory_reset_action() {
183
- ESP_LOGCONFIG(TAG, "Setting factory defaults...");
185
+ ESP_LOGCONFIG(TAG, "Setting factory defaults");
184
186
  if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
185
187
  ESP_LOGE(TAG, "LD2420 module has failed to respond, check baud rate and serial connections.");
186
188
  this->mark_failed();
@@ -209,7 +211,7 @@ void LD2420Component::factory_reset_action() {
209
211
  }
210
212
 
211
213
  void LD2420Component::restart_module_action() {
212
- ESP_LOGCONFIG(TAG, "Restarting LD2420 module...");
214
+ ESP_LOGCONFIG(TAG, "Restarting LD2420 module");
213
215
  this->send_module_restart();
214
216
  this->set_timeout(250, [this]() {
215
217
  this->set_config_mode(true);
@@ -109,7 +109,7 @@ static inline std::string format_version(uint8_t *buffer) {
109
109
  LD2450Component::LD2450Component() {}
110
110
 
111
111
  void LD2450Component::setup() {
112
- ESP_LOGCONFIG(TAG, "Setting up HLK-LD2450...");
112
+ ESP_LOGCONFIG(TAG, "Running setup");
113
113
  #ifdef USE_NUMBER
114
114
  if (this->presence_timeout_number_ != nullptr) {
115
115
  this->pref_ = global_preferences->make_preference<float>(this->presence_timeout_number_->get_object_id_hash());
@@ -188,9 +188,11 @@ void LD2450Component::dump_config() {
188
188
  #ifdef USE_NUMBER
189
189
  LOG_NUMBER(" ", "PresenceTimeoutNumber", this->presence_timeout_number_);
190
190
  #endif
191
- ESP_LOGCONFIG(TAG, " Throttle : %ums", this->throttle_);
192
- ESP_LOGCONFIG(TAG, " MAC Address : %s", const_cast<char *>(this->mac_.c_str()));
193
- ESP_LOGCONFIG(TAG, " Firmware version : %s", const_cast<char *>(this->version_.c_str()));
191
+ ESP_LOGCONFIG(TAG,
192
+ " Throttle : %ums\n"
193
+ " MAC Address : %s\n"
194
+ " Firmware version : %s",
195
+ this->throttle_, const_cast<char *>(this->mac_.c_str()), const_cast<char *>(this->version_.c_str()));
194
196
  }
195
197
 
196
198
  void LD2450Component::loop() {
@@ -6,6 +6,8 @@ from esphome.const import (
6
6
  CONF_DISTANCE,
7
7
  CONF_RESOLUTION,
8
8
  CONF_SPEED,
9
+ CONF_X,
10
+ CONF_Y,
9
11
  DEVICE_CLASS_DISTANCE,
10
12
  DEVICE_CLASS_SPEED,
11
13
  UNIT_DEGREES,
@@ -19,8 +21,6 @@ DEPENDENCIES = ["ld2450"]
19
21
  CONF_MOVING_TARGET_COUNT = "moving_target_count"
20
22
  CONF_STILL_TARGET_COUNT = "still_target_count"
21
23
  CONF_TARGET_COUNT = "target_count"
22
- CONF_X = "x"
23
- CONF_Y = "y"
24
24
 
25
25
  ICON_ACCOUNT_GROUP = "mdi:account-group"
26
26
  ICON_ACCOUNT_SWITCH = "mdi:account-switch"
@@ -46,11 +46,13 @@ inline ledc_mode_t get_speed_mode(uint8_t) { return LEDC_LOW_SPEED_MODE; }
46
46
  #endif
47
47
  #endif
48
48
 
49
- float ledc_max_frequency_for_bit_depth(uint8_t bit_depth) { return CLOCK_FREQUENCY / float(1 << bit_depth); }
49
+ float ledc_max_frequency_for_bit_depth(uint8_t bit_depth) {
50
+ return static_cast<float>(CLOCK_FREQUENCY) / static_cast<float>(1 << bit_depth);
51
+ }
50
52
 
51
53
  float ledc_min_frequency_for_bit_depth(uint8_t bit_depth, bool low_frequency) {
52
54
  const float max_div_num = ((1 << MAX_RES_BITS) - 1) / (low_frequency ? 32.0f : 256.0f);
53
- return CLOCK_FREQUENCY / (max_div_num * float(1 << bit_depth));
55
+ return static_cast<float>(CLOCK_FREQUENCY) / (max_div_num * static_cast<float>(1 << bit_depth));
54
56
  }
55
57
 
56
58
  optional<uint8_t> ledc_bit_depth_for_frequency(float frequency) {
@@ -100,13 +102,13 @@ esp_err_t configure_timer_frequency(ledc_mode_t speed_mode, ledc_timer_t timer_n
100
102
 
101
103
  #ifdef USE_ESP_IDF
102
104
  constexpr int ledc_angle_to_htop(float angle, uint8_t bit_depth) {
103
- return static_cast<int>(angle * ((1U << bit_depth) - 1) / 360.);
105
+ return static_cast<int>(angle * ((1U << bit_depth) - 1) / 360.0f);
104
106
  }
105
107
  #endif // USE_ESP_IDF
106
108
 
107
109
  void LEDCOutput::write_state(float state) {
108
- if (!initialized_) {
109
- ESP_LOGW(TAG, "LEDC output hasn't been initialized yet!");
110
+ if (!this->initialized_) {
111
+ ESP_LOGW(TAG, "Not yet initialized");
110
112
  return;
111
113
  }
112
114
 
@@ -122,8 +124,8 @@ void LEDCOutput::write_state(float state) {
122
124
  ledcWrite(this->channel_, duty);
123
125
  #endif
124
126
  #ifdef USE_ESP_IDF
125
- auto speed_mode = get_speed_mode(channel_);
126
- auto chan_num = static_cast<ledc_channel_t>(channel_ % 8);
127
+ auto speed_mode = get_speed_mode(this->channel_);
128
+ auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
127
129
  int hpoint = ledc_angle_to_htop(this->phase_angle_, this->bit_depth_);
128
130
  if (duty == max_duty) {
129
131
  ledc_stop(speed_mode, chan_num, 1);
@@ -137,7 +139,7 @@ void LEDCOutput::write_state(float state) {
137
139
  }
138
140
 
139
141
  void LEDCOutput::setup() {
140
- ESP_LOGV(TAG, "Entering setup...");
142
+ ESP_LOGCONFIG(TAG, "Running setup");
141
143
  #ifdef USE_ARDUINO
142
144
  this->update_frequency(this->frequency_);
143
145
  this->turn_off();
@@ -145,9 +147,9 @@ void LEDCOutput::setup() {
145
147
  ledcAttachPin(this->pin_->get_pin(), this->channel_);
146
148
  #endif
147
149
  #ifdef USE_ESP_IDF
148
- auto speed_mode = get_speed_mode(channel_);
149
- auto timer_num = static_cast<ledc_timer_t>((channel_ % 8) / 2);
150
- auto chan_num = static_cast<ledc_channel_t>(channel_ % 8);
150
+ auto speed_mode = get_speed_mode(this->channel_);
151
+ auto timer_num = static_cast<ledc_timer_t>((this->channel_ % 8) / 2);
152
+ auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
151
153
 
152
154
  esp_err_t timer_init_result =
153
155
  configure_timer_frequency(speed_mode, timer_num, chan_num, this->channel_, this->bit_depth_, this->frequency_);
@@ -163,26 +165,28 @@ void LEDCOutput::setup() {
163
165
  ESP_LOGV(TAG, "Angle of %.1f° results in hpoint %u", this->phase_angle_, hpoint);
164
166
 
165
167
  ledc_channel_config_t chan_conf{};
166
- chan_conf.gpio_num = pin_->get_pin();
168
+ chan_conf.gpio_num = this->pin_->get_pin();
167
169
  chan_conf.speed_mode = speed_mode;
168
170
  chan_conf.channel = chan_num;
169
171
  chan_conf.intr_type = LEDC_INTR_DISABLE;
170
172
  chan_conf.timer_sel = timer_num;
171
- chan_conf.duty = inverted_ == pin_->is_inverted() ? 0 : (1U << bit_depth_);
173
+ chan_conf.duty = this->inverted_ == this->pin_->is_inverted() ? 0 : (1U << this->bit_depth_);
172
174
  chan_conf.hpoint = hpoint;
173
175
  ledc_channel_config(&chan_conf);
174
- initialized_ = true;
176
+ this->initialized_ = true;
175
177
  this->status_clear_error();
176
178
  #endif
177
179
  }
178
180
 
179
181
  void LEDCOutput::dump_config() {
180
- ESP_LOGCONFIG(TAG, "LEDC Output:");
182
+ ESP_LOGCONFIG(TAG, "Output:");
181
183
  LOG_PIN(" Pin ", this->pin_);
182
- ESP_LOGCONFIG(TAG, " LEDC Channel: %u", this->channel_);
183
- ESP_LOGCONFIG(TAG, " PWM Frequency: %.1f Hz", this->frequency_);
184
- ESP_LOGCONFIG(TAG, " Phase angle: %.1f°", this->phase_angle_);
185
- ESP_LOGCONFIG(TAG, " Bit depth: %u", this->bit_depth_);
184
+ ESP_LOGCONFIG(TAG,
185
+ " Channel: %u\n"
186
+ " PWM Frequency: %.1f Hz\n"
187
+ " Phase angle: %.1f°\n"
188
+ " Bit depth: %u",
189
+ this->channel_, this->frequency_, this->phase_angle_, this->bit_depth_);
186
190
  ESP_LOGV(TAG, " Max frequency for bit depth: %f", ledc_max_frequency_for_bit_depth(this->bit_depth_));
187
191
  ESP_LOGV(TAG, " Min frequency for bit depth: %f",
188
192
  ledc_min_frequency_for_bit_depth(this->bit_depth_, (this->frequency_ < 100)));
@@ -205,17 +209,17 @@ void LEDCOutput::update_frequency(float frequency) {
205
209
  this->bit_depth_ = bit_depth_opt.value_or(8);
206
210
  this->frequency_ = frequency;
207
211
  #ifdef USE_ARDUINO
208
- ESP_LOGV(TAG, "Using Arduino API - Trying to define channel, frequency and bit depth...");
212
+ ESP_LOGV(TAG, "Using Arduino API - Trying to define channel, frequency and bit depth");
209
213
  u_int32_t configured_frequency = 0;
210
214
 
211
215
  // Configure LEDC channel, frequency and bit depth with fallback
212
216
  int attempt_count_max = SETUP_ATTEMPT_COUNT_MAX;
213
217
  while (attempt_count_max > 0 && configured_frequency == 0) {
214
- ESP_LOGV(TAG, "Trying initialize channel %u with frequency %.1f and bit depth of %u...", this->channel_,
215
- this->frequency_, this->bit_depth_);
218
+ ESP_LOGV(TAG, "Initializing channel %u with frequency %.1f and bit depth of %u", this->channel_, this->frequency_,
219
+ this->bit_depth_);
216
220
  configured_frequency = ledcSetup(this->channel_, frequency, this->bit_depth_);
217
221
  if (configured_frequency != 0) {
218
- initialized_ = true;
222
+ this->initialized_ = true;
219
223
  this->status_clear_error();
220
224
  ESP_LOGV(TAG, "Configured frequency: %u with bit depth: %u", configured_frequency, this->bit_depth_);
221
225
  } else {
@@ -236,14 +240,14 @@ void LEDCOutput::update_frequency(float frequency) {
236
240
 
237
241
  #endif // USE_ARDUINO
238
242
  #ifdef USE_ESP_IDF
239
- if (!initialized_) {
240
- ESP_LOGW(TAG, "LEDC output hasn't been initialized yet!");
243
+ if (!this->initialized_) {
244
+ ESP_LOGW(TAG, "Not yet initialized");
241
245
  return;
242
246
  }
243
247
 
244
- auto speed_mode = get_speed_mode(channel_);
245
- auto timer_num = static_cast<ledc_timer_t>((channel_ % 8) / 2);
246
- auto chan_num = static_cast<ledc_channel_t>(channel_ % 8);
248
+ auto speed_mode = get_speed_mode(this->channel_);
249
+ auto timer_num = static_cast<ledc_timer_t>((this->channel_ % 8) / 2);
250
+ auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
247
251
 
248
252
  esp_err_t timer_init_result =
249
253
  configure_timer_frequency(speed_mode, timer_num, chan_num, this->channel_, this->bit_depth_, this->frequency_);
@@ -1,5 +1,5 @@
1
+ from collections.abc import Callable
1
2
  from dataclasses import dataclass
2
- from typing import Callable
3
3
 
4
4
  import esphome.codegen as cg
5
5
 
@@ -1,8 +1,8 @@
1
1
  #ifdef USE_LIBRETINY
2
2
 
3
- #include "esphome/core/preferences.h"
4
3
  #include "esphome/core/helpers.h"
5
4
  #include "esphome/core/log.h"
5
+ #include "esphome/core/preferences.h"
6
6
  #include <flashdb.h>
7
7
  #include <cstring>
8
8
  #include <vector>
@@ -101,7 +101,7 @@ class LibreTinyPreferences : public ESPPreferences {
101
101
  if (s_pending_save.empty())
102
102
  return true;
103
103
 
104
- ESP_LOGD(TAG, "Saving %d preferences to flash...", s_pending_save.size());
104
+ ESP_LOGV(TAG, "Saving %d items...", s_pending_save.size());
105
105
  // goal try write all pending saves even if one fails
106
106
  int cached = 0, written = 0, failed = 0;
107
107
  fdb_err_t last_err = FDB_NO_ERR;
@@ -129,11 +129,10 @@ class LibreTinyPreferences : public ESPPreferences {
129
129
  }
130
130
  s_pending_save.erase(s_pending_save.begin() + i);
131
131
  }
132
- ESP_LOGD(TAG, "Saving %d preferences to flash: %d cached, %d written, %d failed", cached + written + failed, cached,
133
- written, failed);
132
+ ESP_LOGD(TAG, "Writing %d items: %d cached, %d written, %d failed", cached + written + failed, cached, written,
133
+ failed);
134
134
  if (failed > 0) {
135
- ESP_LOGE(TAG, "Error saving %d preferences to flash. Last error=%d for key=%s", failed, last_err,
136
- last_key.c_str());
135
+ ESP_LOGE(TAG, "Writing %d items failed. Last error=%d for key=%s", failed, last_err, last_key.c_str());
137
136
  }
138
137
 
139
138
  return failed == 0;
@@ -158,7 +157,7 @@ class LibreTinyPreferences : public ESPPreferences {
158
157
  }
159
158
 
160
159
  bool reset() override {
161
- ESP_LOGD(TAG, "Cleaning up preferences in flash...");
160
+ ESP_LOGD(TAG, "Erasing storage");
162
161
  s_pending_save.clear();
163
162
 
164
163
  fdb_kv_set_default(&db);
@@ -37,7 +37,7 @@ from esphome.const import (
37
37
  CONF_WEB_SERVER,
38
38
  CONF_WHITE,
39
39
  )
40
- from esphome.core import coroutine_with_priority
40
+ from esphome.core import CORE, coroutine_with_priority
41
41
  from esphome.cpp_generator import MockObjClass
42
42
  from esphome.cpp_helpers import setup_entity
43
43
 
@@ -270,6 +270,7 @@ async def setup_light_core_(light_var, output_var, config):
270
270
  async def register_light(output_var, config):
271
271
  light_var = cg.new_Pvariable(config[CONF_ID], output_var)
272
272
  cg.add(cg.App.register_light(light_var))
273
+ CORE.register_platform_component("light", light_var)
273
274
  await cg.register_component(light_var, config)
274
275
  await setup_light_core_(light_var, output_var, config)
275
276
 
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/helpers.h"
4
3
  #include "esphome/core/color.h"
4
+ #include "esphome/core/helpers.h"
5
5
 
6
6
  namespace esphome {
7
7
  namespace light {
@@ -18,7 +18,7 @@ LightCall LightState::toggle() { return this->make_call().set_state(!this->remot
18
18
  LightCall LightState::make_call() { return LightCall(this); }
19
19
 
20
20
  void LightState::setup() {
21
- ESP_LOGCONFIG(TAG, "Setting up light '%s'...", this->get_name().c_str());
21
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
22
22
 
23
23
  this->output_->setup_state(this);
24
24
  for (auto *effect : this->effects_) {
@@ -91,12 +91,16 @@ void LightState::setup() {
91
91
  void LightState::dump_config() {
92
92
  ESP_LOGCONFIG(TAG, "Light '%s'", this->get_name().c_str());
93
93
  if (this->get_traits().supports_color_capability(ColorCapability::BRIGHTNESS)) {
94
- ESP_LOGCONFIG(TAG, " Default Transition Length: %.1fs", this->default_transition_length_ / 1e3f);
95
- ESP_LOGCONFIG(TAG, " Gamma Correct: %.2f", this->gamma_correct_);
94
+ ESP_LOGCONFIG(TAG,
95
+ " Default Transition Length: %.1fs\n"
96
+ " Gamma Correct: %.2f",
97
+ this->default_transition_length_ / 1e3f, this->gamma_correct_);
96
98
  }
97
99
  if (this->get_traits().supports_color_capability(ColorCapability::COLOR_TEMPERATURE)) {
98
- ESP_LOGCONFIG(TAG, " Min Mireds: %.1f", this->get_traits().get_min_mireds());
99
- ESP_LOGCONFIG(TAG, " Max Mireds: %.1f", this->get_traits().get_max_mireds());
100
+ ESP_LOGCONFIG(TAG,
101
+ " Min Mireds: %.1f\n"
102
+ " Max Mireds: %.1f",
103
+ this->get_traits().get_min_mireds(), this->get_traits().get_max_mireds());
100
104
  }
101
105
  }
102
106
  void LightState::loop() {
@@ -17,7 +17,7 @@ namespace light {
17
17
 
18
18
  class LightOutput;
19
19
 
20
- enum LightRestoreMode {
20
+ enum LightRestoreMode : uint8_t {
21
21
  LIGHT_RESTORE_DEFAULT_OFF,
22
22
  LIGHT_RESTORE_DEFAULT_ON,
23
23
  LIGHT_ALWAYS_OFF,
@@ -212,12 +212,18 @@ class LightState : public EntityBase, public Component {
212
212
 
213
213
  /// Store the output to allow effects to have more access.
214
214
  LightOutput *output_;
215
- /// Value for storing the index of the currently active effect. 0 if no effect is active
216
- uint32_t active_effect_index_{};
217
215
  /// The currently active transformer for this light (transition/flash).
218
216
  std::unique_ptr<LightTransformer> transformer_{nullptr};
219
- /// Whether the light value should be written in the next cycle.
220
- bool next_write_{true};
217
+ /// List of effects for this light.
218
+ std::vector<LightEffect *> effects_;
219
+ /// Value for storing the index of the currently active effect. 0 if no effect is active
220
+ uint32_t active_effect_index_{};
221
+ /// Default transition length for all transitions in ms.
222
+ uint32_t default_transition_length_{};
223
+ /// Transition length to use for flash transitions.
224
+ uint32_t flash_transition_length_{};
225
+ /// Gamma correction factor for the light.
226
+ float gamma_correct_{};
221
227
 
222
228
  /// Object used to store the persisted values of the light.
223
229
  ESPPreferenceObject rtc_;
@@ -236,19 +242,13 @@ class LightState : public EntityBase, public Component {
236
242
  */
237
243
  CallbackManager<void()> target_state_reached_callback_{};
238
244
 
239
- /// Default transition length for all transitions in ms.
240
- uint32_t default_transition_length_{};
241
- /// Transition length to use for flash transitions.
242
- uint32_t flash_transition_length_{};
243
- /// Gamma correction factor for the light.
244
- float gamma_correct_{};
245
- /// Restore mode of the light.
246
- LightRestoreMode restore_mode_;
247
245
  /// Initial state of the light.
248
246
  optional<LightStateRTCState> initial_state_{};
249
- /// List of effects for this light.
250
- std::vector<LightEffect *> effects_;
251
247
 
248
+ /// Restore mode of the light.
249
+ LightRestoreMode restore_mode_;
250
+ /// Whether the light value should be written in the next cycle.
251
+ bool next_write_{true};
252
252
  // for effects, true if a transformer (transition) is active.
253
253
  bool is_transformer_active_ = false;
254
254
  };
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/helpers.h"
4
3
  #include "esphome/core/hal.h"
4
+ #include "esphome/core/helpers.h"
5
5
  #include "light_color_values.h"
6
6
 
7
7
  namespace esphome {
@@ -8,8 +8,8 @@
8
8
  #include "LwTx.h"
9
9
  #include <cstring>
10
10
  #include <Arduino.h>
11
- #include "esphome/core/log.h"
12
11
  #include "esphome/core/helpers.h"
12
+ #include "esphome/core/log.h"
13
13
 
14
14
  namespace esphome {
15
15
  namespace lightwaverf {
@@ -14,7 +14,7 @@ static const bool DEFAULT_INVERT = false;
14
14
  static const uint32_t DEFAULT_TICK = 330;
15
15
 
16
16
  void LightWaveRF::setup() {
17
- ESP_LOGCONFIG(TAG, "Setting up Lightwave RF...");
17
+ ESP_LOGCONFIG(TAG, "Running setup");
18
18
 
19
19
  this->lwtx_.lwtx_setup(pin_tx_, DEFAULT_REPEAT, DEFAULT_INVERT, DEFAULT_TICK);
20
20
  this->lwrx_.lwrx_setup(pin_rx_);
@@ -24,7 +24,7 @@ static const uint8_t READ_TOUCH[1] = {0x07};
24
24
  }
25
25
 
26
26
  void LilygoT547Touchscreen::setup() {
27
- ESP_LOGCONFIG(TAG, "Setting up Lilygo T5 4.7 Touchscreen...");
27
+ ESP_LOGCONFIG(TAG, "Running setup");
28
28
  this->interrupt_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
29
29
  this->interrupt_pin_->setup();
30
30
 
@@ -115,6 +115,7 @@ async def register_lock(var, config):
115
115
  if not CORE.has_id(config[CONF_ID]):
116
116
  var = cg.Pvariable(config[CONF_ID], var)
117
117
  cg.add(cg.App.register_lock(var))
118
+ CORE.register_platform_component("lock", var)
118
119
  await _setup_lock_core(var, config)
119
120
 
120
121
 
@@ -2,9 +2,9 @@
2
2
 
3
3
  #include "esphome/core/component.h"
4
4
  #include "esphome/core/entity_base.h"
5
- #include "esphome/core/preferences.h"
6
5
  #include "esphome/core/helpers.h"
7
6
  #include "esphome/core/log.h"
7
+ #include "esphome/core/preferences.h"
8
8
  #include <set>
9
9
 
10
10
  namespace esphome {
@@ -8,8 +8,10 @@ from esphome.components.esp32.const import (
8
8
  VARIANT_ESP32,
9
9
  VARIANT_ESP32C2,
10
10
  VARIANT_ESP32C3,
11
+ VARIANT_ESP32C5,
11
12
  VARIANT_ESP32C6,
12
13
  VARIANT_ESP32H2,
14
+ VARIANT_ESP32P4,
13
15
  VARIANT_ESP32S2,
14
16
  VARIANT_ESP32S3,
15
17
  )
@@ -88,8 +90,10 @@ UART_SELECTION_ESP32 = {
88
90
  VARIANT_ESP32S3: [UART0, UART1, USB_CDC, USB_SERIAL_JTAG],
89
91
  VARIANT_ESP32C3: [UART0, UART1, USB_CDC, USB_SERIAL_JTAG],
90
92
  VARIANT_ESP32C2: [UART0, UART1],
93
+ VARIANT_ESP32C5: [UART0, UART1, USB_CDC, USB_SERIAL_JTAG],
91
94
  VARIANT_ESP32C6: [UART0, UART1, USB_CDC, USB_SERIAL_JTAG],
92
95
  VARIANT_ESP32H2: [UART0, UART1, USB_CDC, USB_SERIAL_JTAG],
96
+ VARIANT_ESP32P4: [UART0, UART1, USB_CDC, USB_SERIAL_JTAG],
93
97
  }
94
98
 
95
99
  UART_SELECTION_ESP8266 = [UART0, UART0_SWAP, UART1]
@@ -205,8 +209,10 @@ CONFIG_SCHEMA = cv.All(
205
209
  esp32_s3_idf=USB_SERIAL_JTAG,
206
210
  esp32_c3_arduino=USB_CDC,
207
211
  esp32_c3_idf=USB_SERIAL_JTAG,
212
+ esp32_c5_idf=USB_SERIAL_JTAG,
208
213
  esp32_c6_arduino=USB_CDC,
209
214
  esp32_c6_idf=USB_SERIAL_JTAG,
215
+ esp32_p4_idf=USB_SERIAL_JTAG,
210
216
  rp2040=USB_CDC,
211
217
  bk72xx=DEFAULT,
212
218
  rtl87xx=DEFAULT,
@@ -116,7 +116,7 @@ void Logger::log_vprintf_(int level, const char *tag, int line, const __FlashStr
116
116
  if (this->baud_rate_ > 0) {
117
117
  this->write_msg_(this->tx_buffer_ + msg_start);
118
118
  }
119
- this->call_log_callbacks_(level, tag, this->tx_buffer_ + msg_start);
119
+ this->log_callback_.call(level, tag, this->tx_buffer_ + msg_start);
120
120
 
121
121
  global_recursion_guard_ = false;
122
122
  }
@@ -129,19 +129,6 @@ inline int Logger::level_for(const char *tag) {
129
129
  return this->current_level_;
130
130
  }
131
131
 
132
- void HOT Logger::call_log_callbacks_(int level, const char *tag, const char *msg) {
133
- #ifdef USE_ESP32
134
- // Suppress network-logging if memory constrained
135
- // In some configurations (eg BLE enabled) there may be some transient
136
- // memory exhaustion, and trying to log when OOM can lead to a crash. Skipping
137
- // here usually allows the stack to recover instead.
138
- // See issue #1234 for analysis.
139
- if (xPortGetFreeHeapSize() < 2048)
140
- return;
141
- #endif
142
- this->log_callback_.call(level, tag, msg);
143
- }
144
-
145
132
  Logger::Logger(uint32_t baud_rate, size_t tx_buffer_size) : baud_rate_(baud_rate), tx_buffer_size_(tx_buffer_size) {
146
133
  // add 1 to buffer size for null terminator
147
134
  this->tx_buffer_ = new char[this->tx_buffer_size_ + 1]; // NOLINT
@@ -189,7 +176,7 @@ void Logger::loop() {
189
176
  this->tx_buffer_size_);
190
177
  this->write_footer_to_buffer_(this->tx_buffer_, &this->tx_buffer_at_, this->tx_buffer_size_);
191
178
  this->tx_buffer_[this->tx_buffer_at_] = '\0';
192
- this->call_log_callbacks_(message->level, message->tag, this->tx_buffer_);
179
+ this->log_callback_.call(message->level, message->tag, this->tx_buffer_);
193
180
  // At this point all the data we need from message has been transferred to the tx_buffer
194
181
  // so we can release the message to allow other tasks to use it as soon as possible.
195
182
  this->log_buffer_->release_message_main_loop(received_token);
@@ -221,12 +208,16 @@ float Logger::get_setup_priority() const { return setup_priority::BUS + 500.0f;
221
208
  static const char *const LOG_LEVELS[] = {"NONE", "ERROR", "WARN", "INFO", "CONFIG", "DEBUG", "VERBOSE", "VERY_VERBOSE"};
222
209
 
223
210
  void Logger::dump_config() {
224
- ESP_LOGCONFIG(TAG, "Logger:");
225
- ESP_LOGCONFIG(TAG, " Max Level: %s", LOG_LEVELS[ESPHOME_LOG_LEVEL]);
226
- ESP_LOGCONFIG(TAG, " Initial Level: %s", LOG_LEVELS[this->current_level_]);
211
+ ESP_LOGCONFIG(TAG,
212
+ "Logger:\n"
213
+ " Max Level: %s\n"
214
+ " Initial Level: %s",
215
+ LOG_LEVELS[ESPHOME_LOG_LEVEL], LOG_LEVELS[this->current_level_]);
227
216
  #ifndef USE_HOST
228
- ESP_LOGCONFIG(TAG, " Log Baud Rate: %" PRIu32, this->baud_rate_);
229
- ESP_LOGCONFIG(TAG, " Hardware UART: %s", get_uart_selection_());
217
+ ESP_LOGCONFIG(TAG,
218
+ " Log Baud Rate: %" PRIu32 "\n"
219
+ " Hardware UART: %s",
220
+ this->baud_rate_, get_uart_selection_());
230
221
  #endif
231
222
  #ifdef USE_ESPHOME_TASK_LOG_BUFFER
232
223
  if (this->log_buffer_) {
@@ -156,7 +156,6 @@ class Logger : public Component {
156
156
  #endif
157
157
 
158
158
  protected:
159
- void call_log_callbacks_(int level, const char *tag, const char *msg);
160
159
  void write_msg_(const char *msg);
161
160
 
162
161
  // Format a log message with printf-style arguments and write it to a buffer with header, footer, and null terminator
@@ -191,7 +190,7 @@ class Logger : public Component {
191
190
  if (this->baud_rate_ > 0) {
192
191
  this->write_msg_(this->tx_buffer_); // If logging is enabled, write to console
193
192
  }
194
- this->call_log_callbacks_(level, tag, this->tx_buffer_);
193
+ this->log_callback_.call(level, tag, this->tx_buffer_);
195
194
  }
196
195
 
197
196
  // Write the body of the log message to the buffer