esphome 2025.5.2__py3-none-any.whl → 2025.6.0b1__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 (715) 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 +712 -358
  29. esphome/components/api/api_connection.h +343 -284
  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 +2 -0
  33. esphome/components/api/api_pb2.h +637 -1
  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 -2
  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 +4 -3
  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 +16 -14
  67. esphome/components/bme280_base/bme280_base.cpp +3 -3
  68. esphome/components/bme680/bme680.cpp +3 -3
  69. esphome/components/bme680/sensor.py +2 -2
  70. esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
  71. esphome/components/bme680_bsec/sensor.py +7 -3
  72. esphome/components/bme68x_bsec2/__init__.py +6 -5
  73. esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
  74. esphome/components/bme68x_bsec2/sensor.py +4 -4
  75. esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
  76. esphome/components/bmi160/bmi160.cpp +11 -11
  77. esphome/components/bmp085/bmp085.cpp +2 -2
  78. esphome/components/bmp280_base/bmp280_base.cpp +3 -3
  79. esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
  80. esphome/components/bmp581/bmp581.cpp +33 -27
  81. esphome/components/bp1658cj/bp1658cj.cpp +5 -3
  82. esphome/components/bp5758d/bp5758d.cpp +1 -1
  83. esphome/components/button/__init__.py +1 -0
  84. esphome/components/canbus/canbus.cpp +1 -1
  85. esphome/components/cap1188/cap1188.cpp +6 -4
  86. esphome/components/captive_portal/captive_portal.cpp +1 -1
  87. esphome/components/ccs811/ccs811.cpp +3 -2
  88. esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
  89. esphome/components/ch422g/ch422g.cpp +2 -2
  90. esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
  91. esphome/components/climate/__init__.py +1 -0
  92. esphome/components/climate/climate.cpp +12 -7
  93. esphome/components/climate/climate.h +1 -1
  94. esphome/components/climate_ir/climate_ir.cpp +7 -4
  95. esphome/components/cm1106/__init__.py +1 -0
  96. esphome/components/cm1106/cm1106.cpp +112 -0
  97. esphome/components/cm1106/cm1106.h +40 -0
  98. esphome/components/cm1106/sensor.py +72 -0
  99. esphome/components/const/__init__.py +1 -0
  100. esphome/components/cover/__init__.py +1 -0
  101. esphome/components/cs5460a/cs5460a.cpp +16 -11
  102. esphome/components/cse7761/cse7761.cpp +2 -2
  103. esphome/components/cse7766/cse7766.cpp +0 -5
  104. esphome/components/cse7766/cse7766.h +5 -1
  105. esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
  106. esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
  107. esphome/components/current_based/current_based_cover.cpp +4 -2
  108. esphome/components/dac7678/dac7678_output.cpp +4 -4
  109. esphome/components/dallas_temp/dallas_temp.cpp +2 -3
  110. esphome/components/daly_bms/daly_bms.cpp +2 -1
  111. esphome/components/dashboard_import/__init__.py +1 -2
  112. esphome/components/datetime/__init__.py +3 -1
  113. esphome/components/debug/debug_component.cpp +1 -1
  114. esphome/components/debug/debug_component.h +1 -1
  115. esphome/components/debug/debug_esp32.cpp +4 -2
  116. esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
  117. esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
  118. esphome/components/demo/__init__.py +206 -0
  119. esphome/components/demo/demo_alarm_control_panel.h +65 -0
  120. esphome/components/demo/demo_button.h +15 -0
  121. esphome/components/demo/demo_date.h +34 -0
  122. esphome/components/demo/demo_datetime.h +40 -0
  123. esphome/components/demo/demo_lock.h +17 -0
  124. esphome/components/demo/demo_select.h +15 -0
  125. esphome/components/demo/demo_text.h +18 -0
  126. esphome/components/demo/demo_time.h +34 -0
  127. esphome/components/demo/demo_valve.h +54 -0
  128. esphome/components/dfrobot_sen0395/commands.cpp +3 -3
  129. esphome/components/dht/dht.cpp +29 -50
  130. esphome/components/dht12/dht12.cpp +2 -2
  131. esphome/components/display/display.h +5 -3
  132. esphome/components/dps310/dps310.cpp +7 -5
  133. esphome/components/ds1307/ds1307.cpp +2 -2
  134. esphome/components/dsmr/dsmr.cpp +5 -3
  135. esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
  136. esphome/components/duty_time/duty_time_sensor.cpp +5 -3
  137. esphome/components/ee895/ee895.cpp +3 -3
  138. esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
  139. esphome/components/emc2101/emc2101.cpp +11 -9
  140. esphome/components/ens160_base/ens160_base.cpp +2 -2
  141. esphome/components/ens210/ens210.cpp +2 -2
  142. esphome/components/es7210/es7210.cpp +6 -4
  143. esphome/components/es7243e/es7243e.cpp +1 -1
  144. esphome/components/es8156/es8156.cpp +1 -1
  145. esphome/components/es8311/es8311.cpp +8 -6
  146. esphome/components/es8388/__init__.py +0 -0
  147. esphome/components/es8388/audio_dac.py +26 -0
  148. esphome/components/es8388/es8388.cpp +289 -0
  149. esphome/components/es8388/es8388.h +81 -0
  150. esphome/components/es8388/es8388_const.h +83 -0
  151. esphome/components/es8388/select/__init__.py +47 -0
  152. esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
  153. esphome/components/es8388/select/adc_input_mic_select.h +15 -0
  154. esphome/components/es8388/select/dac_output_select.cpp +12 -0
  155. esphome/components/es8388/select/dac_output_select.h +15 -0
  156. esphome/components/esp32/__init__.py +88 -20
  157. esphome/components/esp32/boards.py +208 -125
  158. esphome/components/esp32/const.py +6 -0
  159. esphome/components/esp32/gpio.py +14 -1
  160. esphome/components/esp32/gpio_esp32_c5.py +45 -0
  161. esphome/components/esp32/gpio_esp32_p4.py +43 -0
  162. esphome/components/esp32/preferences.cpp +7 -7
  163. esphome/components/esp32_ble/__init__.py +115 -0
  164. esphome/components/esp32_ble/ble.cpp +11 -9
  165. esphome/components/esp32_ble/ble_uuid.h +1 -1
  166. esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
  167. esphome/components/esp32_ble_server/__init__.py +4 -1
  168. esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
  169. esphome/components/esp32_ble_server/ble_server.h +0 -1
  170. esphome/components/esp32_ble_tracker/__init__.py +6 -2
  171. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +12 -9
  172. esphome/components/esp32_camera/esp32_camera.cpp +35 -27
  173. esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
  174. esphome/components/esp32_dac/esp32_dac.cpp +2 -2
  175. esphome/components/esp32_improv/__init__.py +5 -1
  176. esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
  177. esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
  178. esphome/components/esp32_rmt_led_strip/light.py +5 -1
  179. esphome/components/esp32_touch/esp32_touch.cpp +12 -8
  180. esphome/components/esp8266/preferences.cpp +6 -6
  181. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  182. esphome/components/esp_ldo/__init__.py +91 -0
  183. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  184. esphome/components/esp_ldo/esp_ldo.h +43 -0
  185. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  186. esphome/components/ethernet/ethernet_component.cpp +38 -26
  187. esphome/components/ethernet/ethernet_component.h +1 -1
  188. esphome/components/event/__init__.py +1 -0
  189. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  190. esphome/components/ezo/ezo.cpp +1 -1
  191. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  192. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  193. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  194. esphome/components/fan/__init__.py +1 -0
  195. esphome/components/fan/fan.cpp +4 -2
  196. esphome/components/fastled_base/fastled_light.cpp +7 -5
  197. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  198. esphome/components/fs3000/fs3000.cpp +1 -1
  199. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  200. esphome/components/ft63x6/ft63x6.cpp +5 -3
  201. esphome/components/gcja5/gcja5.cpp +0 -12
  202. esphome/components/gcja5/gcja5.h +8 -3
  203. esphome/components/gdk101/gdk101.cpp +2 -2
  204. esphome/components/globals/globals_component.h +13 -10
  205. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  206. esphome/components/gp8403/gp8403.cpp +4 -2
  207. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  208. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  209. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  210. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  211. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  212. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  213. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  214. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  215. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  216. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  217. esphome/components/haier/haier_base.cpp +2 -2
  218. esphome/components/haier/hon_climate.cpp +13 -6
  219. esphome/components/havells_solar/havells_solar.cpp +5 -2
  220. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  221. esphome/components/hdc1080/hdc1080.cpp +2 -2
  222. esphome/components/he60r/he60r.cpp +4 -2
  223. esphome/components/hlw8012/hlw8012.cpp +6 -4
  224. esphome/components/hm3301/hm3301.cpp +2 -2
  225. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  226. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  227. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  228. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  229. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  230. esphome/components/hte501/hte501.cpp +3 -2
  231. esphome/components/http_request/__init__.py +2 -2
  232. esphome/components/http_request/http_request.cpp +7 -5
  233. esphome/components/http_request/http_request_idf.cpp +4 -2
  234. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  235. esphome/components/htu21d/htu21d.cpp +2 -2
  236. esphome/components/htu31d/htu31d.cpp +2 -2
  237. esphome/components/hx711/hx711.cpp +2 -2
  238. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  239. esphome/components/hyt271/hyt271.cpp +2 -2
  240. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  241. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  242. esphome/components/i2s_audio/__init__.py +2 -0
  243. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  244. esphome/components/i2s_audio/i2s_audio.h +1 -1
  245. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  246. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  247. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +1 -1
  248. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
  249. esphome/components/iaqcore/iaqcore.cpp +3 -3
  250. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  251. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  252. esphome/components/image/image.cpp +1 -0
  253. esphome/components/ina219/ina219.cpp +2 -2
  254. esphome/components/ina226/ina226.cpp +8 -5
  255. esphome/components/ina260/ina260.cpp +1 -1
  256. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  257. esphome/components/ina3221/ina3221.cpp +2 -2
  258. esphome/components/inkplate6/display.py +12 -2
  259. esphome/components/inkplate6/inkplate.cpp +13 -9
  260. esphome/components/inkplate6/inkplate.h +7 -6
  261. esphome/components/integration/integration_sensor.cpp +1 -1
  262. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  263. esphome/components/json/json_util.cpp +4 -5
  264. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  265. esphome/components/key_collector/key_collector.cpp +4 -2
  266. esphome/components/kmeteriso/kmeteriso.cpp +2 -1
  267. esphome/components/kuntze/kuntze.cpp +4 -2
  268. esphome/components/lc709203f/__init__.py +1 -0
  269. esphome/components/lc709203f/lc709203f.cpp +299 -0
  270. esphome/components/lc709203f/lc709203f.h +55 -0
  271. esphome/components/lc709203f/sensor.py +93 -0
  272. esphome/components/lcd_base/lcd_display.cpp +2 -2
  273. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  274. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  275. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  276. esphome/components/ld2410/ld2410.cpp +6 -7
  277. esphome/components/ld2420/ld2420.cpp +9 -7
  278. esphome/components/ld2450/ld2450.cpp +6 -4
  279. esphome/components/ld2450/sensor.py +2 -2
  280. esphome/components/ledc/ledc_output.cpp +32 -28
  281. esphome/components/libretiny/const.py +1 -1
  282. esphome/components/libretiny/preferences.cpp +6 -7
  283. esphome/components/light/__init__.py +2 -1
  284. esphome/components/light/esp_hsv_color.h +1 -1
  285. esphome/components/light/light_state.cpp +9 -5
  286. esphome/components/light/light_transformer.h +1 -1
  287. esphome/components/lightwaverf/LwTx.cpp +1 -1
  288. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  289. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  290. esphome/components/lock/__init__.py +1 -0
  291. esphome/components/lock/lock.h +1 -1
  292. esphome/components/logger/__init__.py +6 -0
  293. esphome/components/logger/logger.cpp +9 -5
  294. esphome/components/logger/logger_esp32.cpp +5 -5
  295. esphome/components/ltr390/ltr390.cpp +8 -5
  296. esphome/components/ltr501/ltr501.cpp +19 -14
  297. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  298. esphome/components/lvgl/__init__.py +2 -2
  299. esphome/components/lvgl/automation.py +5 -4
  300. esphome/components/lvgl/defines.py +0 -2
  301. esphome/components/lvgl/lv_validation.py +1 -3
  302. esphome/components/lvgl/lvcode.py +7 -8
  303. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  304. esphome/components/lvgl/schemas.py +22 -23
  305. esphome/components/lvgl/trigger.py +8 -3
  306. esphome/components/lvgl/widgets/__init__.py +2 -2
  307. esphome/components/lvgl/widgets/canvas.py +9 -3
  308. esphome/components/lvgl/widgets/line.py +2 -1
  309. esphome/components/lvgl/widgets/tabview.py +7 -0
  310. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  311. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  312. esphome/components/max17043/max17043.cpp +2 -2
  313. esphome/components/max31855/max31855.cpp +2 -1
  314. esphome/components/max31856/max31856.cpp +9 -11
  315. esphome/components/max31865/max31865.cpp +6 -4
  316. esphome/components/max44009/max44009.cpp +2 -2
  317. esphome/components/max6675/max6675.cpp +1 -1
  318. esphome/components/max6956/max6956.cpp +5 -3
  319. esphome/components/max7219/max7219.cpp +8 -6
  320. esphome/components/max7219digit/automation.h +52 -0
  321. esphome/components/max7219digit/display.py +93 -1
  322. esphome/components/max7219digit/max7219digit.cpp +16 -13
  323. esphome/components/max9611/max9611.cpp +9 -6
  324. esphome/components/mcp23008/mcp23008.cpp +1 -1
  325. esphome/components/mcp23016/mcp23016.cpp +1 -1
  326. esphome/components/mcp23017/mcp23017.cpp +1 -1
  327. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  328. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  329. esphome/components/mcp3008/mcp3008.cpp +1 -1
  330. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  331. esphome/components/mcp3204/mcp3204.cpp +1 -1
  332. esphome/components/mcp4461/mcp4461.cpp +2 -2
  333. esphome/components/mcp4725/mcp4725.cpp +2 -2
  334. esphome/components/mcp4728/mcp4728.cpp +2 -2
  335. esphome/components/mcp9600/mcp9600.cpp +1 -1
  336. esphome/components/mcp9808/mcp9808.cpp +4 -4
  337. esphome/components/mdns/mdns_component.cpp +8 -2
  338. esphome/components/mdns/mdns_component.h +3 -1
  339. esphome/components/mdns/mdns_esp32.cpp +2 -2
  340. esphome/components/media_player/__init__.py +1 -0
  341. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  342. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  343. esphome/components/micronova/micronova.h +2 -2
  344. esphome/components/mics_4514/mics_4514.cpp +2 -2
  345. esphome/components/midea/air_conditioner.cpp +7 -5
  346. esphome/components/midea_ir/midea_ir.cpp +1 -1
  347. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  348. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  349. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  350. esphome/components/mlx90614/mlx90614.cpp +4 -3
  351. esphome/components/mmc5603/mmc5603.cpp +2 -2
  352. esphome/components/mmc5983/mmc5983.cpp +1 -1
  353. esphome/components/modbus/modbus.cpp +7 -5
  354. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  355. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  356. esphome/components/modbus_controller/switch/__init__.py +6 -2
  357. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  358. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  359. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  360. esphome/components/mpr121/mpr121.cpp +2 -2
  361. esphome/components/mpu6050/mpu6050.cpp +6 -6
  362. esphome/components/mpu6886/mpu6886.cpp +6 -6
  363. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  364. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  365. esphome/components/mqtt/mqtt_client.cpp +31 -24
  366. esphome/components/mqtt/mqtt_component.cpp +2 -2
  367. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  368. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  369. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  370. esphome/components/ms5611/ms5611.cpp +2 -2
  371. esphome/components/ms8607/ms8607.cpp +2 -2
  372. esphome/components/msa3xx/msa3xx.cpp +16 -12
  373. esphome/components/my9231/my9231.cpp +7 -5
  374. esphome/components/nau7802/nau7802.cpp +6 -4
  375. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  376. esphome/components/network/ip_address.h +1 -1
  377. esphome/components/network/util.cpp +13 -0
  378. esphome/components/nextion/base_component.py +2 -0
  379. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +2 -3
  380. esphome/components/nextion/display.py +34 -22
  381. esphome/components/nextion/nextion.cpp +182 -143
  382. esphome/components/nextion/nextion.h +36 -0
  383. esphome/components/nextion/nextion_commands.cpp +3 -3
  384. esphome/components/nextion/nextion_upload_arduino.cpp +58 -61
  385. esphome/components/nextion/nextion_upload_idf.cpp +69 -72
  386. esphome/components/nextion/sensor/nextion_sensor.cpp +4 -4
  387. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  388. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +2 -2
  389. esphome/components/nfc/nci_message.h +1 -1
  390. esphome/components/nfc/ndef_record.h +1 -1
  391. esphome/components/nfc/ndef_record_text.h +1 -1
  392. esphome/components/nfc/ndef_record_uri.h +1 -1
  393. esphome/components/nfc/nfc.h +1 -1
  394. esphome/components/nfc/nfc_tag.h +1 -1
  395. esphome/components/noblex/noblex.cpp +1 -1
  396. esphome/components/npi19/npi19.cpp +5 -7
  397. esphome/components/number/__init__.py +11 -0
  398. esphome/components/online_image/__init__.py +13 -1
  399. esphome/components/online_image/online_image.cpp +26 -4
  400. esphome/components/online_image/online_image.h +21 -4
  401. esphome/components/opentherm/generate.py +3 -3
  402. esphome/components/opentherm/hub.cpp +11 -7
  403. esphome/components/opentherm/number/number.cpp +5 -3
  404. esphome/components/opentherm/opentherm.h +1 -1
  405. esphome/components/opentherm/schema.py +13 -13
  406. esphome/components/opentherm/validate.py +1 -1
  407. esphome/components/openthread/__init__.py +146 -0
  408. esphome/components/openthread/const.py +10 -0
  409. esphome/components/openthread/openthread.cpp +206 -0
  410. esphome/components/openthread/openthread.h +68 -0
  411. esphome/components/openthread/openthread_esp.cpp +164 -0
  412. esphome/components/openthread/tlv.py +58 -0
  413. esphome/components/openthread_info/__init__.py +0 -0
  414. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  415. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  416. esphome/components/openthread_info/text_sensor.py +105 -0
  417. esphome/components/output/float_output.cpp +1 -1
  418. esphome/components/output/switch/output_switch.cpp +1 -1
  419. esphome/components/packet_transport/packet_transport.cpp +6 -4
  420. esphome/components/pca6416a/pca6416a.cpp +2 -2
  421. esphome/components/pca9554/pca9554.cpp +6 -4
  422. esphome/components/pca9685/pca9685_output.cpp +12 -8
  423. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  424. esphome/components/pcf85063/pcf85063.cpp +2 -2
  425. esphome/components/pcf8563/pcf8563.cpp +2 -2
  426. esphome/components/pcf8574/pcf8574.cpp +2 -2
  427. esphome/components/pid/pid_climate.cpp +8 -5
  428. esphome/components/pid/pid_climate.h +1 -1
  429. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  430. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  431. esphome/components/pipsolar/pipsolar.cpp +3 -3
  432. esphome/components/pm1006/pm1006.cpp +3 -7
  433. esphome/components/pm1006/pm1006.h +4 -1
  434. esphome/components/pm2005/pm2005.cpp +12 -13
  435. esphome/components/pm2005/sensor.py +1 -1
  436. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  437. esphome/components/pmsx003/pmsx003.cpp +0 -4
  438. esphome/components/pmsx003/pmsx003.h +5 -2
  439. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  440. esphome/components/pmwcs3/pmwcs3.h +0 -1
  441. esphome/components/pn532/pn532.cpp +7 -7
  442. esphome/components/pn532/pn532.h +1 -1
  443. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  444. esphome/components/pn7150/pn7150.cpp +4 -4
  445. esphome/components/pn7160/pn7160.cpp +4 -4
  446. esphome/components/power_supply/power_supply.cpp +6 -4
  447. esphome/components/power_supply/power_supply.h +1 -1
  448. esphome/components/psram/__init__.py +59 -35
  449. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  450. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  451. esphome/components/pylontech/pylontech.cpp +2 -2
  452. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  453. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  454. esphome/components/pzemac/pzemac.cpp +4 -2
  455. esphome/components/pzemdc/pzemdc.cpp +4 -2
  456. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  457. esphome/components/qmp6988/qmp6988.cpp +2 -2
  458. esphome/components/qmp6988/qmp6988.h +1 -1
  459. esphome/components/qr_code/qr_code.cpp +5 -3
  460. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  461. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  462. esphome/components/rc522/rc522.cpp +5 -5
  463. esphome/components/rdm6300/rdm6300.cpp +1 -0
  464. esphome/components/remote_receiver/__init__.py +10 -2
  465. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  466. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  467. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  468. esphome/components/remote_transmitter/__init__.py +10 -2
  469. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  470. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  471. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  472. esphome/components/resistance/resistance_sensor.cpp +6 -3
  473. esphome/components/restart/button/restart_button.cpp +1 -1
  474. esphome/components/restart/switch/restart_switch.cpp +1 -1
  475. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  476. esphome/components/rp2040/__init__.py +7 -0
  477. esphome/components/rp2040/core.cpp +8 -1
  478. esphome/components/rp2040/preferences.cpp +3 -3
  479. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  480. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  481. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  482. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  483. esphome/components/rtttl/rtttl.cpp +11 -9
  484. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  485. esphome/components/safe_mode/safe_mode.cpp +9 -8
  486. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  487. esphome/components/scd30/scd30.cpp +11 -8
  488. esphome/components/scd4x/scd4x.cpp +12 -8
  489. esphome/components/sdl/display.py +40 -0
  490. esphome/components/sdl/sdl_esphome.cpp +2 -2
  491. esphome/components/sdl/sdl_esphome.h +8 -0
  492. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  493. esphome/components/sdp3x/sdp3x.cpp +11 -11
  494. esphome/components/sds011/sds011.cpp +5 -6
  495. esphome/components/sds011/sds011.h +4 -1
  496. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  497. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  498. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  499. esphome/components/selec_meter/selec_meter.cpp +5 -2
  500. esphome/components/select/__init__.py +1 -0
  501. esphome/components/sen0321/sen0321.cpp +2 -2
  502. esphome/components/sen21231/sen21231.cpp +1 -1
  503. esphome/components/sen5x/sen5x.cpp +10 -7
  504. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  505. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  506. esphome/components/sensor/__init__.py +11 -1
  507. esphome/components/sensor/filter.h +1 -1
  508. esphome/components/sensor/sensor.h +9 -5
  509. esphome/components/servo/servo.cpp +12 -9
  510. esphome/components/servo/servo.h +1 -1
  511. esphome/components/sfa30/sfa30.cpp +1 -1
  512. esphome/components/sgp30/sgp30.cpp +10 -8
  513. esphome/components/sgp4x/sgp4x.cpp +49 -61
  514. esphome/components/sgp4x/sgp4x.h +0 -1
  515. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  516. esphome/components/sht3xd/sht3xd.cpp +1 -1
  517. esphome/components/sht4x/sht4x.cpp +2 -2
  518. esphome/components/shtcx/shtcx.cpp +13 -16
  519. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  520. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  521. esphome/components/sim800l/sim800l.cpp +2 -2
  522. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  523. esphome/components/sm16716/sm16716.cpp +1 -1
  524. esphome/components/sm2135/sm2135.cpp +1 -1
  525. esphome/components/sm2235/sm2235.cpp +5 -3
  526. esphome/components/sm2335/sm2335.cpp +5 -3
  527. esphome/components/sml/sml.cpp +1 -1
  528. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  529. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  530. esphome/components/sntp/sntp_component.cpp +1 -1
  531. esphome/components/socket/__init__.py +2 -0
  532. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  533. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  534. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  535. esphome/components/socket/socket.cpp +31 -0
  536. esphome/components/socket/socket.h +27 -1
  537. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  538. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  539. esphome/components/sound_level/sound_level.cpp +4 -2
  540. esphome/components/speaker/media_player/__init__.py +3 -0
  541. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  542. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  543. esphome/components/spi/__init__.py +10 -2
  544. esphome/components/spi/spi.cpp +4 -4
  545. esphome/components/spi_device/spi_device.cpp +1 -2
  546. esphome/components/sprinkler/sprinkler.cpp +9 -6
  547. esphome/components/sps30/sps30.cpp +16 -15
  548. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  549. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  550. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  551. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  552. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  553. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  554. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  555. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  556. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  557. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  558. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  559. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  560. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  561. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  562. esphome/components/st7567_base/st7567_base.cpp +3 -3
  563. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  564. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  565. esphome/components/st7701s/st7701s.cpp +4 -2
  566. esphome/components/st7735/st7735.cpp +3 -3
  567. esphome/components/st7789v/st7789v.cpp +10 -7
  568. esphome/components/st7920/st7920.cpp +6 -4
  569. esphome/components/statsd/statsd.cpp +9 -5
  570. esphome/components/status_led/light/status_led_light.cpp +1 -1
  571. esphome/components/status_led/status_led.cpp +1 -1
  572. esphome/components/stepper/stepper.h +5 -3
  573. esphome/components/sts3x/sts3x.cpp +2 -2
  574. esphome/components/switch/__init__.py +1 -0
  575. esphome/components/switch/switch.cpp +18 -12
  576. esphome/components/switch/switch.h +1 -1
  577. esphome/components/sx1509/__init__.py +53 -20
  578. esphome/components/sx1509/sx1509.cpp +29 -5
  579. esphome/components/sx1509/sx1509.h +9 -1
  580. esphome/components/t6615/t6615.cpp +1 -0
  581. esphome/components/tc74/tc74.cpp +1 -1
  582. esphome/components/tca9548a/tca9548a.cpp +1 -1
  583. esphome/components/tca9555/tca9555.cpp +2 -2
  584. esphome/components/tcs34725/tcs34725.cpp +4 -4
  585. esphome/components/tee501/tee501.cpp +3 -2
  586. esphome/components/tem3200/tem3200.cpp +5 -6
  587. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  588. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +38 -12
  589. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +3 -1
  590. esphome/components/template/cover/template_cover.cpp +1 -1
  591. esphome/components/template/select/template_select.cpp +6 -4
  592. esphome/components/template/text/template_text.cpp +2 -3
  593. esphome/components/template/valve/template_valve.cpp +5 -3
  594. esphome/components/text/__init__.py +10 -11
  595. esphome/components/text_sensor/__init__.py +1 -0
  596. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  597. esphome/components/time/__init__.py +1 -2
  598. esphome/components/time_based/time_based_cover.cpp +4 -2
  599. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  600. esphome/components/tm1621/tm1621.cpp +3 -3
  601. esphome/components/tm1637/tm1637.cpp +9 -7
  602. esphome/components/tm1638/tm1638.cpp +7 -5
  603. esphome/components/tm1651/tm1651.cpp +2 -2
  604. esphome/components/tmp102/tmp102.cpp +1 -3
  605. esphome/components/tmp102/tmp102.h +0 -3
  606. esphome/components/tmp1075/tmp1075.cpp +12 -9
  607. esphome/components/tmp117/tmp117.cpp +2 -2
  608. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  609. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  610. esphome/components/tsl2561/tsl2561.cpp +7 -5
  611. esphome/components/tsl2591/tsl2591.cpp +25 -27
  612. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  613. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  614. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  615. esphome/components/tuya/select/tuya_select.cpp +5 -3
  616. esphome/components/tx20/tx20.cpp +3 -3
  617. esphome/components/uart/__init__.py +4 -5
  618. esphome/components/uart/button/uart_button.cpp +1 -1
  619. esphome/components/uart/switch/uart_switch.cpp +2 -2
  620. esphome/components/uart/uart.cpp +2 -2
  621. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  622. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  623. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  624. esphome/components/uart/uart_component_host.cpp +11 -8
  625. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  626. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  627. esphome/components/udp/udp_component.cpp +9 -5
  628. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  629. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  630. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  631. esphome/components/update/__init__.py +1 -0
  632. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  633. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  634. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  635. esphome/components/usb_host/__init__.py +64 -0
  636. esphome/components/usb_host/usb_host.h +116 -0
  637. esphome/components/usb_host/usb_host_client.cpp +394 -0
  638. esphome/components/usb_host/usb_host_component.cpp +35 -0
  639. esphome/components/usb_uart/__init__.py +134 -0
  640. esphome/components/usb_uart/ch34x.cpp +80 -0
  641. esphome/components/usb_uart/cp210x.cpp +126 -0
  642. esphome/components/usb_uart/usb_uart.cpp +328 -0
  643. esphome/components/usb_uart/usb_uart.h +151 -0
  644. esphome/components/valve/__init__.py +1 -0
  645. esphome/components/veml3235/veml3235.cpp +13 -9
  646. esphome/components/veml7700/veml7700.cpp +10 -6
  647. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  648. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  649. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  650. esphome/components/web_server/server_index_v2.h +632 -630
  651. esphome/components/web_server/server_index_v3.h +411 -409
  652. esphome/components/web_server/web_server.cpp +5 -3
  653. esphome/components/web_server_base/web_server_base.cpp +1 -1
  654. esphome/components/web_server_idf/utils.cpp +1 -1
  655. esphome/components/web_server_idf/web_server_idf.cpp +1 -1
  656. esphome/components/weikai/__init__.py +2 -0
  657. esphome/components/weikai/weikai.cpp +23 -21
  658. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  659. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  660. esphome/components/wiegand/wiegand.cpp +1 -1
  661. esphome/components/wifi/wifi_component.cpp +50 -37
  662. esphome/components/wifi/wifi_component.h +7 -4
  663. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  664. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  665. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  666. esphome/components/wireguard/wireguard.cpp +21 -21
  667. esphome/components/wl_134/text_sensor.py +1 -2
  668. esphome/components/wled/wled_light_effect.cpp +1 -1
  669. esphome/components/x9c/x9c.cpp +5 -3
  670. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  671. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  672. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  673. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  674. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  675. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  676. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  677. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  678. esphome/components/xl9535/xl9535.cpp +2 -2
  679. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  680. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  681. esphome/config.py +3 -2
  682. esphome/config_validation.py +46 -17
  683. esphome/const.py +10 -1
  684. esphome/core/__init__.py +37 -18
  685. esphome/core/application.cpp +188 -5
  686. esphome/core/application.h +110 -0
  687. esphome/core/component.h +13 -0
  688. esphome/core/config.py +12 -0
  689. esphome/core/defines.h +10 -2
  690. esphome/core/helpers.cpp +1 -1
  691. esphome/core/helpers.h +4 -4
  692. esphome/core/log.h +2 -0
  693. esphome/core/log_const_en.h +4 -0
  694. esphome/core/scheduler.cpp +2 -2
  695. esphome/coroutine.py +3 -4
  696. esphome/cpp_generator.py +32 -32
  697. esphome/dashboard/core.py +2 -2
  698. esphome/dashboard/web_server.py +2 -2
  699. esphome/git.py +4 -4
  700. esphome/helpers.py +5 -6
  701. esphome/loader.py +8 -7
  702. esphome/log.py +7 -1
  703. esphome/platformio_api.py +2 -3
  704. esphome/storage_json.py +13 -5
  705. esphome/types.py +12 -13
  706. esphome/util.py +1 -2
  707. esphome/writer.py +5 -3
  708. esphome/yaml_util.py +6 -1
  709. esphome/zeroconf.py +1 -1
  710. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
  711. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +715 -662
  712. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
  713. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
  714. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
  715. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -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() {
@@ -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,
@@ -221,12 +221,16 @@ float Logger::get_setup_priority() const { return setup_priority::BUS + 500.0f;
221
221
  static const char *const LOG_LEVELS[] = {"NONE", "ERROR", "WARN", "INFO", "CONFIG", "DEBUG", "VERBOSE", "VERY_VERBOSE"};
222
222
 
223
223
  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_]);
224
+ ESP_LOGCONFIG(TAG,
225
+ "Logger:\n"
226
+ " Max Level: %s\n"
227
+ " Initial Level: %s",
228
+ LOG_LEVELS[ESPHOME_LOG_LEVEL], LOG_LEVELS[this->current_level_]);
227
229
  #ifndef USE_HOST
228
- ESP_LOGCONFIG(TAG, " Log Baud Rate: %" PRIu32, this->baud_rate_);
229
- ESP_LOGCONFIG(TAG, " Hardware UART: %s", get_uart_selection_());
230
+ ESP_LOGCONFIG(TAG,
231
+ " Log Baud Rate: %" PRIu32 "\n"
232
+ " Hardware UART: %s",
233
+ this->baud_rate_, get_uart_selection_());
230
234
  #endif
231
235
  #ifdef USE_ESPHOME_TASK_LOG_BUFFER
232
236
  if (this->log_buffer_) {
@@ -18,12 +18,12 @@
18
18
  #endif
19
19
  #endif
20
20
 
21
- #include "freertos/FreeRTOS.h"
22
21
  #include "esp_idf_version.h"
22
+ #include "freertos/FreeRTOS.h"
23
23
 
24
+ #include <fcntl.h>
24
25
  #include <cstdint>
25
26
  #include <cstdio>
26
- #include <fcntl.h>
27
27
 
28
28
  #endif // USE_ESP_IDF
29
29
 
@@ -174,11 +174,11 @@ void Logger::pre_setup() {
174
174
  #ifdef USE_ESP_IDF
175
175
  void HOT Logger::write_msg_(const char *msg) {
176
176
  if (
177
- #if defined(USE_ESP32_VARIANT_ESP32S2)
177
+ #if defined(USE_LOGGER_USB_CDC) && !defined(USE_LOGGER_USB_SERIAL_JTAG)
178
178
  this->uart_ == UART_SELECTION_USB_CDC
179
- #elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32H2)
179
+ #elif defined(USE_LOGGER_USB_SERIAL_JTAG) && !defined(USE_LOGGER_USB_CDC)
180
180
  this->uart_ == UART_SELECTION_USB_SERIAL_JTAG
181
- #elif defined(USE_ESP32_VARIANT_ESP32S3)
181
+ #elif defined(USE_LOGGER_USB_CDC) && defined(USE_LOGGER_USB_SERIAL_JTAG)
182
182
  this->uart_ == UART_SELECTION_USB_CDC || this->uart_ == UART_SELECTION_USB_SERIAL_JTAG
183
183
  #else
184
184
  /* DISABLES CODE */ (false) // NOLINT
@@ -148,7 +148,7 @@ void LTR390Component::read_mode_(int mode_index) {
148
148
  }
149
149
 
150
150
  void LTR390Component::setup() {
151
- ESP_LOGCONFIG(TAG, "Setting up ltr390...");
151
+ ESP_LOGCONFIG(TAG, "Running setup");
152
152
 
153
153
  // reset
154
154
  std::bitset<8> ctrl = this->reg(LTR390_MAIN_CTRL).get();
@@ -187,10 +187,13 @@ void LTR390Component::setup() {
187
187
 
188
188
  void LTR390Component::dump_config() {
189
189
  LOG_I2C_DEVICE(this);
190
- ESP_LOGCONFIG(TAG, " ALS Gain: X%.0f", GAINVALUES[this->gain_als_]);
191
- ESP_LOGCONFIG(TAG, " ALS Resolution: %u-bit", RESOLUTION_BITS[this->res_als_]);
192
- ESP_LOGCONFIG(TAG, " UV Gain: X%.0f", GAINVALUES[this->gain_uv_]);
193
- ESP_LOGCONFIG(TAG, " UV Resolution: %u-bit", RESOLUTION_BITS[this->res_uv_]);
190
+ ESP_LOGCONFIG(TAG,
191
+ " ALS Gain: X%.0f\n"
192
+ " ALS Resolution: %u-bit\n"
193
+ " UV Gain: X%.0f\n"
194
+ " UV Resolution: %u-bit",
195
+ GAINVALUES[this->gain_als_], RESOLUTION_BITS[this->res_als_], GAINVALUES[this->gain_uv_],
196
+ RESOLUTION_BITS[this->res_uv_]);
194
197
  }
195
198
 
196
199
  void LTR390Component::update() {
@@ -1,7 +1,7 @@
1
1
  #include "ltr501.h"
2
2
  #include "esphome/core/application.h"
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  using esphome::i2c::ErrorCode;
7
7
 
@@ -74,7 +74,7 @@ static float get_ps_gain_coeff(PsGain501 gain) {
74
74
  }
75
75
 
76
76
  void LTRAlsPs501Component::setup() {
77
- ESP_LOGCONFIG(TAG, "Setting up LTR-501/301/558");
77
+ ESP_LOGCONFIG(TAG, "Running setup");
78
78
  // As per datasheet we need to wait at least 100ms after power on to get ALS chip responsive
79
79
  this->set_timeout(100, [this]() { this->state_ = State::DELAYED_SETUP; });
80
80
  }
@@ -94,16 +94,21 @@ void LTRAlsPs501Component::dump_config() {
94
94
  };
95
95
 
96
96
  LOG_I2C_DEVICE(this);
97
- ESP_LOGCONFIG(TAG, " Device type: %s", get_device_type(this->ltr_type_));
98
- ESP_LOGCONFIG(TAG, " Automatic mode: %s", ONOFF(this->automatic_mode_enabled_));
99
- ESP_LOGCONFIG(TAG, " Gain: %.0fx", get_gain_coeff(this->gain_));
100
- ESP_LOGCONFIG(TAG, " Integration time: %d ms", get_itime_ms(this->integration_time_));
101
- ESP_LOGCONFIG(TAG, " Measurement repeat rate: %d ms", get_meas_time_ms(this->repeat_rate_));
102
- ESP_LOGCONFIG(TAG, " Glass attenuation factor: %f", this->glass_attenuation_factor_);
103
- ESP_LOGCONFIG(TAG, " Proximity gain: %.0fx", get_ps_gain_coeff(this->ps_gain_));
104
- ESP_LOGCONFIG(TAG, " Proximity cooldown time: %d s", this->ps_cooldown_time_s_);
105
- ESP_LOGCONFIG(TAG, " Proximity high threshold: %d", this->ps_threshold_high_);
106
- ESP_LOGCONFIG(TAG, " Proximity low threshold: %d", this->ps_threshold_low_);
97
+ ESP_LOGCONFIG(TAG,
98
+ " Device type: %s\n"
99
+ " Automatic mode: %s\n"
100
+ " Gain: %.0fx\n"
101
+ " Integration time: %d ms\n"
102
+ " Measurement repeat rate: %d ms\n"
103
+ " Glass attenuation factor: %f\n"
104
+ " Proximity gain: %.0fx\n"
105
+ " Proximity cooldown time: %d s\n"
106
+ " Proximity high threshold: %d\n"
107
+ " Proximity low threshold: %d",
108
+ get_device_type(this->ltr_type_), ONOFF(this->automatic_mode_enabled_), get_gain_coeff(this->gain_),
109
+ get_itime_ms(this->integration_time_), get_meas_time_ms(this->repeat_rate_),
110
+ this->glass_attenuation_factor_, get_ps_gain_coeff(this->ps_gain_), this->ps_cooldown_time_s_,
111
+ this->ps_threshold_high_, this->ps_threshold_low_);
107
112
 
108
113
  LOG_UPDATE_INTERVAL(this);
109
114
 
@@ -113,7 +118,7 @@ void LTRAlsPs501Component::dump_config() {
113
118
  LOG_SENSOR(" ", "Actual gain", this->actual_gain_sensor_);
114
119
 
115
120
  if (this->is_failed()) {
116
- ESP_LOGE(TAG, "Communication with I2C LTR-501/301/558 failed!");
121
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
117
122
  }
118
123
  }
119
124
 
@@ -306,7 +311,7 @@ void LTRAlsPs501Component::configure_als_() {
306
311
 
307
312
  uint8_t tries = MAX_TRIES;
308
313
  do {
309
- ESP_LOGV(TAG, "Waiting for ALS device to become active...");
314
+ ESP_LOGV(TAG, "Waiting for ALS device to become active");
310
315
  delay(2);
311
316
  als_ctrl.raw = this->reg((uint8_t) CommandRegisters::ALS_CONTR).get();
312
317
  } while (!als_ctrl.als_mode_active && tries--); // while active mode is not set - keep waiting
@@ -1,7 +1,7 @@
1
1
  #include "ltr_als_ps.h"
2
2
  #include "esphome/core/application.h"
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  using esphome::i2c::ErrorCode;
7
7
 
@@ -63,7 +63,7 @@ static float get_ps_gain_coeff(PsGain gain) {
63
63
  }
64
64
 
65
65
  void LTRAlsPsComponent::setup() {
66
- ESP_LOGCONFIG(TAG, "Setting up LTR-303/329/55x/659");
66
+ ESP_LOGCONFIG(TAG, "Running setup");
67
67
  // As per datasheet we need to wait at least 100ms after power on to get ALS chip responsive
68
68
  this->set_timeout(100, [this]() { this->state_ = State::DELAYED_SETUP; });
69
69
  }
@@ -85,27 +85,34 @@ void LTRAlsPsComponent::dump_config() {
85
85
  LOG_I2C_DEVICE(this);
86
86
  ESP_LOGCONFIG(TAG, " Device type: %s", get_device_type(this->ltr_type_));
87
87
  if (this->is_als_()) {
88
- ESP_LOGCONFIG(TAG, " Automatic mode: %s", ONOFF(this->automatic_mode_enabled_));
89
- ESP_LOGCONFIG(TAG, " Gain: %.0fx", get_gain_coeff(this->gain_));
90
- ESP_LOGCONFIG(TAG, " Integration time: %d ms", get_itime_ms(this->integration_time_));
91
- ESP_LOGCONFIG(TAG, " Measurement repeat rate: %d ms", get_meas_time_ms(this->repeat_rate_));
92
- ESP_LOGCONFIG(TAG, " Glass attenuation factor: %f", this->glass_attenuation_factor_);
88
+ ESP_LOGCONFIG(TAG,
89
+ " Automatic mode: %s\n"
90
+ " Gain: %.0fx\n"
91
+ " Integration time: %d ms\n"
92
+ " Measurement repeat rate: %d ms\n"
93
+ " Glass attenuation factor: %f",
94
+ ONOFF(this->automatic_mode_enabled_), get_gain_coeff(this->gain_),
95
+ get_itime_ms(this->integration_time_), get_meas_time_ms(this->repeat_rate_),
96
+ this->glass_attenuation_factor_);
93
97
  LOG_SENSOR(" ", "ALS calculated lux", this->ambient_light_sensor_);
94
98
  LOG_SENSOR(" ", "CH1 Infrared counts", this->infrared_counts_sensor_);
95
99
  LOG_SENSOR(" ", "CH0 Visible+IR counts", this->full_spectrum_counts_sensor_);
96
100
  LOG_SENSOR(" ", "Actual gain", this->actual_gain_sensor_);
97
101
  }
98
102
  if (this->is_ps_()) {
99
- ESP_LOGCONFIG(TAG, " Proximity gain: %.0fx", get_ps_gain_coeff(this->ps_gain_));
100
- ESP_LOGCONFIG(TAG, " Proximity cooldown time: %d s", this->ps_cooldown_time_s_);
101
- ESP_LOGCONFIG(TAG, " Proximity high threshold: %d", this->ps_threshold_high_);
102
- ESP_LOGCONFIG(TAG, " Proximity low threshold: %d", this->ps_threshold_low_);
103
+ ESP_LOGCONFIG(TAG,
104
+ " Proximity gain: %.0fx\n"
105
+ " Proximity cooldown time: %d s\n"
106
+ " Proximity high threshold: %d\n"
107
+ " Proximity low threshold: %d",
108
+ get_ps_gain_coeff(this->ps_gain_), this->ps_cooldown_time_s_, this->ps_threshold_high_,
109
+ this->ps_threshold_low_);
103
110
  LOG_SENSOR(" ", "Proximity counts", this->proximity_counts_sensor_);
104
111
  }
105
112
  LOG_UPDATE_INTERVAL(this);
106
113
 
107
114
  if (this->is_failed()) {
108
- ESP_LOGE(TAG, "Communication with I2C LTR-303/329/55x/659 failed!");
115
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
109
116
  }
110
117
  }
111
118
 
@@ -298,7 +305,7 @@ void LTRAlsPsComponent::configure_als_() {
298
305
 
299
306
  uint8_t tries = MAX_TRIES;
300
307
  do {
301
- ESP_LOGV(TAG, "Waiting for device to become active...");
308
+ ESP_LOGV(TAG, "Waiting for device to become active");
302
309
  delay(2);
303
310
  als_ctrl.raw = this->reg((uint8_t) CommandRegisters::ALS_CONTR).get();
304
311
  } while (!als_ctrl.active_mode && tries--); // while active mode is not set - keep waiting
@@ -321,7 +321,7 @@ async def to_code(configs):
321
321
  frac = 2
322
322
  elif frac > 0.19:
323
323
  frac = 4
324
- else:
324
+ elif frac != 0:
325
325
  frac = 8
326
326
  displays = [
327
327
  await cg.get_variable(display) for display in config[df.CONF_DISPLAYS]
@@ -422,7 +422,7 @@ LVGL_SCHEMA = cv.All(
422
422
  ): lvalid.lv_font,
423
423
  cv.Optional(df.CONF_FULL_REFRESH, default=False): cv.boolean,
424
424
  cv.Optional(CONF_DRAW_ROUNDING, default=2): cv.positive_int,
425
- cv.Optional(CONF_BUFFER_SIZE, default="100%"): cv.percentage,
425
+ cv.Optional(CONF_BUFFER_SIZE, default=0): cv.percentage,
426
426
  cv.Optional(df.CONF_LOG_LEVEL, default="WARN"): cv.one_of(
427
427
  *df.LV_LOG_LEVELS, upper=True
428
428
  ),
@@ -1,4 +1,5 @@
1
- from typing import Any, Callable
1
+ from collections.abc import Callable
2
+ from typing import Any
2
3
 
3
4
  from esphome import automation
4
5
  import esphome.codegen as cg
@@ -20,7 +21,7 @@ from .defines import (
20
21
  literal,
21
22
  static_cast,
22
23
  )
23
- from .lv_validation import lv_bool, lv_color, lv_image, opacity
24
+ from .lv_validation import lv_bool, lv_color, lv_image, lv_milliseconds, opacity
24
25
  from .lvcode import (
25
26
  LVGL_COMP_ARG,
26
27
  UPDATE_EVENT,
@@ -128,14 +129,14 @@ async def lvgl_is_paused(config, condition_id, template_arg, args):
128
129
  LVGL_SCHEMA.extend(
129
130
  {
130
131
  cv.Required(CONF_TIMEOUT): cv.templatable(
131
- cv.positive_time_period_milliseconds
132
+ lv_milliseconds,
132
133
  )
133
134
  }
134
135
  ),
135
136
  )
136
137
  async def lvgl_is_idle(config, condition_id, template_arg, args):
137
138
  lvgl = config[CONF_LVGL_ID]
138
- timeout = await cg.templatable(config[CONF_TIMEOUT], [], cg.uint32)
139
+ timeout = await lv_milliseconds.process(config[CONF_TIMEOUT])
139
140
  async with LambdaContext(LVGL_COMP_ARG, return_type=cg.bool_) as context:
140
141
  lv_add(ReturnStatement(lvgl_comp.is_idle(timeout)))
141
142
  var = cg.new_Pvariable(
@@ -519,8 +519,6 @@ CONF_UPDATE_ON_RELEASE = "update_on_release"
519
519
  CONF_VISIBLE_ROW_COUNT = "visible_row_count"
520
520
  CONF_WIDGET = "widget"
521
521
  CONF_WIDGETS = "widgets"
522
- CONF_X = "x"
523
- CONF_Y = "y"
524
522
  CONF_ZOOM = "zoom"
525
523
 
526
524
  # Keypad keys
@@ -1,5 +1,3 @@
1
- from typing import Union
2
-
3
1
  import esphome.codegen as cg
4
2
  from esphome.components import image
5
3
  from esphome.components.color import CONF_HEX, ColorStruct, from_rgbw
@@ -361,7 +359,7 @@ lv_image_list = LValidator(
361
359
  lv_bool = LValidator(cv.boolean, cg.bool_, retmapper=literal)
362
360
 
363
361
 
364
- def lv_pct(value: Union[int, float]):
362
+ def lv_pct(value: int | float):
365
363
  if isinstance(value, float):
366
364
  value = int(value * 100)
367
365
  return literal(f"lv_pct({value})")