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
@@ -26,13 +26,13 @@ static const char *const TAG = "tsl2591.sensor";
26
26
  void TSL2591Component::enable() {
27
27
  // Enable the device by setting the control bit to 0x01. Also turn on ADCs.
28
28
  if (!this->write_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_ENABLE, TSL2591_ENABLE_POWERON | TSL2591_ENABLE_AEN)) {
29
- ESP_LOGE(TAG, "Failed I2C write during enable()");
29
+ ESP_LOGE(TAG, "I2C write failed");
30
30
  }
31
31
  }
32
32
 
33
33
  void TSL2591Component::disable() {
34
34
  if (!this->write_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_ENABLE, TSL2591_ENABLE_POWEROFF)) {
35
- ESP_LOGE(TAG, "Failed I2C write during disable()");
35
+ ESP_LOGE(TAG, "I2C write failed");
36
36
  }
37
37
  }
38
38
 
@@ -43,6 +43,7 @@ void TSL2591Component::disable_if_power_saving_() {
43
43
  }
44
44
 
45
45
  void TSL2591Component::setup() {
46
+ ESP_LOGCONFIG(TAG, "Running setup for address 0x%02X", this->address_);
46
47
  switch (this->component_gain_) {
47
48
  case TSL2591_CGAIN_LOW:
48
49
  this->gain_ = TSL2591_GAIN_LOW;
@@ -61,21 +62,15 @@ void TSL2591Component::setup() {
61
62
  break;
62
63
  }
63
64
 
64
- uint8_t address = this->address_;
65
- ESP_LOGI(TAG, "Setting up TSL2591 sensor at I2C address 0x%02X", address);
66
-
67
65
  uint8_t id;
68
66
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_DEVICE_ID, &id)) {
69
- ESP_LOGE(TAG, "Failed I2C read during setup()");
67
+ ESP_LOGE(TAG, "I2C read failed");
70
68
  this->mark_failed();
71
69
  return;
72
70
  }
73
71
 
74
72
  if (id != 0x50) {
75
- ESP_LOGE(TAG,
76
- "Could not find the TSL2591 sensor. The ID register of the device at address 0x%02X reported 0x%02X "
77
- "instead of 0x50.",
78
- address, id);
73
+ ESP_LOGE(TAG, "Unknown chip ID");
79
74
  this->mark_failed();
80
75
  return;
81
76
  }
@@ -89,7 +84,7 @@ void TSL2591Component::dump_config() {
89
84
  LOG_I2C_DEVICE(this);
90
85
 
91
86
  if (this->is_failed()) {
92
- ESP_LOGE(TAG, "Communication with TSL2591 failed earlier, during setup");
87
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
93
88
  return;
94
89
  }
95
90
 
@@ -119,13 +114,16 @@ void TSL2591Component::dump_config() {
119
114
  gain_word = "auto";
120
115
  break;
121
116
  }
122
- ESP_LOGCONFIG(TAG, " Gain: %dx (%s)", gain, gain_word.c_str());
123
117
  TSL2591IntegrationTime raw_timing = this->integration_time_;
124
118
  int timing_ms = (1 + raw_timing) * 100;
125
- ESP_LOGCONFIG(TAG, " Integration Time: %d ms", timing_ms);
126
- ESP_LOGCONFIG(TAG, " Power save mode enabled: %s", ONOFF(this->power_save_mode_enabled_));
127
- ESP_LOGCONFIG(TAG, " Device factor: %f", this->device_factor_);
128
- ESP_LOGCONFIG(TAG, " Glass attenuation factor: %f", this->glass_attenuation_factor_);
119
+ ESP_LOGCONFIG(TAG,
120
+ " Gain: %dx (%s)"
121
+ " Integration Time: %d ms\n"
122
+ " Power save mode enabled: %s\n"
123
+ " Device factor: %f\n"
124
+ " Glass attenuation factor: %f",
125
+ gain, gain_word.c_str(), timing_ms, ONOFF(this->power_save_mode_enabled_), this->device_factor_,
126
+ this->glass_attenuation_factor_);
129
127
  LOG_SENSOR(" ", "Full spectrum:", this->full_spectrum_sensor_);
130
128
  LOG_SENSOR(" ", "Infrared:", this->infrared_sensor_);
131
129
  LOG_SENSOR(" ", "Visible:", this->visible_sensor_);
@@ -174,7 +172,7 @@ void TSL2591Component::interval_function_for_update_() {
174
172
  uint64_t now = millis();
175
173
  ESP_LOGD(TAG, "Elapsed %3llu ms; still waiting for valid ADC", (now - this->interval_start_));
176
174
  if (now > this->interval_timeout_) {
177
- ESP_LOGW(TAG, "Interval timeout for TSL2591 '%s' expired before ADCs became valid.", this->name_);
175
+ ESP_LOGW(TAG, "Interval timeout for '%s' expired before ADCs became valid", this->name_);
178
176
  this->cancel_interval(interval_name);
179
177
  }
180
178
  return;
@@ -235,7 +233,7 @@ void TSL2591Component::set_integration_time_and_gain(TSL2591IntegrationTime inte
235
233
  this->gain_ = gain;
236
234
  if (!this->write_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CONTROL,
237
235
  this->integration_time_ | this->gain_)) { // NOLINT
238
- ESP_LOGE(TAG, "Failed I2C write during set_integration_time_and_gain()");
236
+ ESP_LOGE(TAG, "I2C write failed");
239
237
  }
240
238
  // The ADC values can be confused if gain or integration time are changed in the middle of a cycle.
241
239
  // So, we unconditionally disable the device to turn the ADCs off. When re-enabling, the ADCs
@@ -255,7 +253,7 @@ float TSL2591Component::get_setup_priority() const { return setup_priority::DATA
255
253
  bool TSL2591Component::is_adc_valid() {
256
254
  uint8_t status;
257
255
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_STATUS, &status)) {
258
- ESP_LOGE(TAG, "Failed I2C read during is_adc_valid()");
256
+ ESP_LOGE(TAG, "I2C read failed");
259
257
  return false;
260
258
  }
261
259
  return status & 0x01;
@@ -281,7 +279,7 @@ uint32_t TSL2591Component::get_combined_illuminance() {
281
279
  if (!avalid) {
282
280
  // still not valid after a sutiable delay
283
281
  // we don't mark the device as failed since it might come around in the future (probably not :-()
284
- ESP_LOGE(TAG, "tsl2591 device '%s' did not return valid readings.", this->name_);
282
+ ESP_LOGE(TAG, "Device '%s' returned invalid readings", this->name_);
285
283
  this->disable_if_power_saving_();
286
284
  return 0;
287
285
  }
@@ -295,20 +293,20 @@ uint32_t TSL2591Component::get_combined_illuminance() {
295
293
  uint16_t ch0_16;
296
294
  uint16_t ch1_16;
297
295
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN0_LOW, &ch0low)) {
298
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
296
+ ESP_LOGE(TAG, "I2C read failed");
299
297
  return 0;
300
298
  }
301
299
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN0_HIGH, &ch0high)) {
302
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
300
+ ESP_LOGE(TAG, "I2C read failed");
303
301
  return 0;
304
302
  }
305
303
  ch0_16 = (ch0high << 8) | ch0low;
306
304
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN1_LOW, &ch1low)) {
307
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
305
+ ESP_LOGE(TAG, "I2C read failed");
308
306
  return 0;
309
307
  }
310
308
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN1_HIGH, &ch1high)) {
311
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
309
+ ESP_LOGE(TAG, "I2C read failed");
312
310
  return 0;
313
311
  }
314
312
  ch1_16 = (ch1high << 8) | ch1low;
@@ -335,7 +333,7 @@ uint16_t TSL2591Component::get_illuminance(TSL2591SensorChannel channel, uint32_
335
333
  return ((combined_illuminance & 0xFFFF) - (combined_illuminance >> 16));
336
334
  }
337
335
  // unknown channel!
338
- ESP_LOGE(TAG, "TSL2591Component::get_illuminance() caller requested an unknown channel: %d", channel);
336
+ ESP_LOGE(TAG, "get_illuminance() caller requested an unknown channel: %d", channel);
339
337
  return 0;
340
338
  }
341
339
 
@@ -358,13 +356,13 @@ float TSL2591Component::get_calculated_lux(uint16_t full_spectrum, uint16_t infr
358
356
  uint16_t max_count = (this->integration_time_ == TSL2591_INTEGRATION_TIME_100MS ? 36863 : 65535);
359
357
  if ((full_spectrum == max_count) || (infrared == max_count)) {
360
358
  // Signal an overflow
361
- ESP_LOGW(TAG, "Apparent saturation on TSL2591 (%s). You could reduce the gain or integration time.", this->name_);
359
+ ESP_LOGW(TAG, "Apparent saturation on '%s'; try reducing the gain or integration time", this->name_);
362
360
  return NAN;
363
361
  }
364
362
 
365
363
  if ((full_spectrum == 0) && (infrared == 0)) {
366
364
  // trivial conversion; avoids divide by 0
367
- ESP_LOGW(TAG, "Zero reading on both TSL2591 (%s) sensors. Is the device having a problem?", this->name_);
365
+ ESP_LOGW(TAG, "Zero reading on both '%s' sensors", this->name_);
368
366
  return 0.0F;
369
367
  }
370
368
 
@@ -47,7 +47,7 @@ struct TT21100TouchReport {
47
47
  float TT21100Touchscreen::get_setup_priority() const { return setup_priority::HARDWARE - 1.0f; }
48
48
 
49
49
  void TT21100Touchscreen::setup() {
50
- ESP_LOGCONFIG(TAG, "Setting up TT21100 Touchscreen...");
50
+ ESP_LOGCONFIG(TAG, "Running setup");
51
51
 
52
52
  // Register interrupt pin
53
53
  if (this->interrupt_pin_ != nullptr) {
@@ -7,7 +7,7 @@ namespace ttp229_bsf {
7
7
  static const char *const TAG = "ttp229_bsf";
8
8
 
9
9
  void TTP229BSFComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up ttp229_bsf... ");
10
+ ESP_LOGCONFIG(TAG, "Running setup");
11
11
  this->sdo_pin_->setup();
12
12
  this->scl_pin_->setup();
13
13
  this->scl_pin_->digital_write(true);
@@ -7,7 +7,7 @@ namespace ttp229_lsf {
7
7
  static const char *const TAG = "ttp229_lsf";
8
8
 
9
9
  void TTP229LSFComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up ttp229...");
10
+ ESP_LOGCONFIG(TAG, "Running setup");
11
11
  uint8_t data[2];
12
12
  if (this->read(data, 2) != i2c::ERROR_OK) {
13
13
  this->error_code_ = COMMUNICATION_FAILED;
@@ -20,7 +20,7 @@ void TTP229LSFComponent::dump_config() {
20
20
  LOG_I2C_DEVICE(this);
21
21
  switch (this->error_code_) {
22
22
  case COMMUNICATION_FAILED:
23
- ESP_LOGE(TAG, "Communication with TTP229 failed!");
23
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
24
24
  break;
25
25
  case NONE:
26
26
  default:
@@ -44,9 +44,11 @@ void TuyaSelect::control(const std::string &value) {
44
44
 
45
45
  void TuyaSelect::dump_config() {
46
46
  LOG_SELECT("", "Tuya Select", this);
47
- ESP_LOGCONFIG(TAG, " Select has datapoint ID %u", this->select_id_);
48
- ESP_LOGCONFIG(TAG, " Data type: %s", this->is_int_ ? "int" : "enum");
49
- ESP_LOGCONFIG(TAG, " Options are:");
47
+ ESP_LOGCONFIG(TAG,
48
+ " Select has datapoint ID %u\n"
49
+ " Data type: %s\n"
50
+ " Options are:",
51
+ this->select_id_, this->is_int_ ? "int" : "enum");
50
52
  auto options = this->traits.get_options();
51
53
  for (auto i = 0; i < this->mappings_.size(); i++) {
52
54
  ESP_LOGCONFIG(TAG, " %i: %s", this->mappings_.at(i), options.at(i).c_str());
@@ -1,6 +1,6 @@
1
1
  #include "tx20.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/helpers.h"
3
+ #include "esphome/core/log.h"
4
4
 
5
5
  #include <vector>
6
6
 
@@ -15,7 +15,7 @@ static const char *const DIRECTIONS[] = {"N", "NNE", "NE", "ENE", "E", "ESE", "S
15
15
  "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"};
16
16
 
17
17
  void Tx20Component::setup() {
18
- ESP_LOGCONFIG(TAG, "Setting up Tx20");
18
+ ESP_LOGCONFIG(TAG, "Running setup");
19
19
  this->pin_->setup();
20
20
 
21
21
  this->store_.buffer = new uint16_t[MAX_BUFFER_SIZE];
@@ -44,7 +44,7 @@ float Tx20Component::get_setup_priority() const { return setup_priority::DATA; }
44
44
  std::string Tx20Component::get_wind_cardinal_direction() const { return this->wind_cardinal_direction_; }
45
45
 
46
46
  void Tx20Component::decode_and_publish_() {
47
- ESP_LOGVV(TAG, "Decode Tx20...");
47
+ ESP_LOGVV(TAG, "Decode Tx20");
48
48
 
49
49
  std::string string_buffer;
50
50
  std::string string_buffer_2;
@@ -1,5 +1,4 @@
1
1
  import re
2
- from typing import Optional
3
2
 
4
3
  from esphome import automation, pins
5
4
  import esphome.codegen as cg
@@ -322,12 +321,12 @@ def final_validate_device_schema(
322
321
  name: str,
323
322
  *,
324
323
  uart_bus: str = CONF_UART_ID,
325
- baud_rate: Optional[int] = None,
324
+ baud_rate: int | None = None,
326
325
  require_tx: bool = False,
327
326
  require_rx: bool = False,
328
- data_bits: Optional[int] = None,
329
- parity: Optional[str] = None,
330
- stop_bits: Optional[int] = None,
327
+ data_bits: int | None = None,
328
+ parity: str | None = None,
329
+ stop_bits: int | None = None,
331
330
  ):
332
331
  def validate_baud_rate(value):
333
332
  if value != baud_rate:
@@ -7,7 +7,7 @@ namespace uart {
7
7
  static const char *const TAG = "uart.button";
8
8
 
9
9
  void UARTButton::press_action() {
10
- ESP_LOGD(TAG, "'%s': Sending data...", this->get_name().c_str());
10
+ ESP_LOGD(TAG, "'%s': Sending data", this->get_name().c_str());
11
11
  this->write_array(this->data_.data(), this->data_.size());
12
12
  }
13
13
 
@@ -19,11 +19,11 @@ void UARTSwitch::loop() {
19
19
 
20
20
  void UARTSwitch::write_command_(bool state) {
21
21
  if (state && !this->data_on_.empty()) {
22
- ESP_LOGD(TAG, "'%s': Sending on data...", this->get_name().c_str());
22
+ ESP_LOGD(TAG, "'%s': Sending on data", this->get_name().c_str());
23
23
  this->write_array(this->data_on_.data(), this->data_on_.size());
24
24
  }
25
25
  if (!state && !this->data_off_.empty()) {
26
- ESP_LOGD(TAG, "'%s': Sending off data...", this->get_name().c_str());
26
+ ESP_LOGD(TAG, "'%s': Sending off data", this->get_name().c_str());
27
27
  this->write_array(this->data_off_.data(), this->data_off_.size());
28
28
  }
29
29
  }
@@ -1,8 +1,8 @@
1
1
  #include "uart.h"
2
- #include "esphome/core/log.h"
3
- #include "esphome/core/helpers.h"
4
2
  #include "esphome/core/application.h"
5
3
  #include "esphome/core/defines.h"
4
+ #include "esphome/core/helpers.h"
5
+ #include "esphome/core/log.h"
6
6
  #include <cinttypes>
7
7
 
8
8
  namespace esphome {
@@ -74,7 +74,7 @@ uint32_t ESP32ArduinoUARTComponent::get_config() {
74
74
  }
75
75
 
76
76
  void ESP32ArduinoUARTComponent::setup() {
77
- ESP_LOGCONFIG(TAG, "Setting up UART...");
77
+ ESP_LOGCONFIG(TAG, "Running setup");
78
78
  // Use Arduino HardwareSerial UARTs if all used pins match the ones
79
79
  // preconfigured by the platform. For example if RX disabled but TX pin
80
80
  // is 1 we still want to use Serial.
@@ -154,10 +154,12 @@ void ESP32ArduinoUARTComponent::dump_config() {
154
154
  if (this->rx_pin_ != nullptr) {
155
155
  ESP_LOGCONFIG(TAG, " RX Buffer Size: %u", this->rx_buffer_size_);
156
156
  }
157
- ESP_LOGCONFIG(TAG, " Baud Rate: %u baud", this->baud_rate_);
158
- ESP_LOGCONFIG(TAG, " Data Bits: %u", this->data_bits_);
159
- ESP_LOGCONFIG(TAG, " Parity: %s", LOG_STR_ARG(parity_to_str(this->parity_)));
160
- ESP_LOGCONFIG(TAG, " Stop bits: %u", this->stop_bits_);
157
+ ESP_LOGCONFIG(TAG,
158
+ " Baud Rate: %u baud\n"
159
+ " Data Bits: %u\n"
160
+ " Parity: %s\n"
161
+ " Stop bits: %u",
162
+ this->baud_rate_, this->data_bits_, LOG_STR_ARG(parity_to_str(this->parity_)), this->stop_bits_);
161
163
  this->check_logger_conflict();
162
164
  }
163
165
 
@@ -191,7 +193,7 @@ bool ESP32ArduinoUARTComponent::read_array(uint8_t *data, size_t len) {
191
193
 
192
194
  int ESP32ArduinoUARTComponent::available() { return this->hw_serial_->available(); }
193
195
  void ESP32ArduinoUARTComponent::flush() {
194
- ESP_LOGVV(TAG, " Flushing...");
196
+ ESP_LOGVV(TAG, " Flushing");
195
197
  this->hw_serial_->flush();
196
198
  }
197
199
 
@@ -56,7 +56,7 @@ uint32_t ESP8266UartComponent::get_config() {
56
56
  }
57
57
 
58
58
  void ESP8266UartComponent::setup() {
59
- ESP_LOGCONFIG(TAG, "Setting up UART bus...");
59
+ ESP_LOGCONFIG(TAG, "Running setup");
60
60
  // Use Arduino HardwareSerial UARTs if all used pins match the ones
61
61
  // preconfigured by the platform. For example if RX disabled but TX pin
62
62
  // is 1 we still want to use Serial.
@@ -99,7 +99,7 @@ void ESP8266UartComponent::setup() {
99
99
  }
100
100
 
101
101
  void ESP8266UartComponent::load_settings(bool dump_config) {
102
- ESP_LOGCONFIG(TAG, "Loading UART bus settings...");
102
+ ESP_LOGCONFIG(TAG, "Loading UART bus settings");
103
103
  if (this->hw_serial_ != nullptr) {
104
104
  SerialConfig config = static_cast<SerialConfig>(get_config());
105
105
  this->hw_serial_->begin(this->baud_rate_, config);
@@ -121,10 +121,12 @@ void ESP8266UartComponent::dump_config() {
121
121
  if (this->rx_pin_ != nullptr) {
122
122
  ESP_LOGCONFIG(TAG, " RX Buffer Size: %u", this->rx_buffer_size_); // NOLINT
123
123
  }
124
- ESP_LOGCONFIG(TAG, " Baud Rate: %u baud", this->baud_rate_);
125
- ESP_LOGCONFIG(TAG, " Data Bits: %u", this->data_bits_);
126
- ESP_LOGCONFIG(TAG, " Parity: %s", LOG_STR_ARG(parity_to_str(this->parity_)));
127
- ESP_LOGCONFIG(TAG, " Stop bits: %u", this->stop_bits_);
124
+ ESP_LOGCONFIG(TAG,
125
+ " Baud Rate: %u baud\n"
126
+ " Data Bits: %u\n"
127
+ " Parity: %s\n"
128
+ " Stop bits: %u",
129
+ this->baud_rate_, this->data_bits_, LOG_STR_ARG(parity_to_str(this->parity_)), this->stop_bits_);
128
130
  if (this->hw_serial_ != nullptr) {
129
131
  ESP_LOGCONFIG(TAG, " Using hardware serial interface.");
130
132
  } else {
@@ -193,7 +195,7 @@ int ESP8266UartComponent::available() {
193
195
  }
194
196
  }
195
197
  void ESP8266UartComponent::flush() {
196
- ESP_LOGVV(TAG, " Flushing...");
198
+ ESP_LOGVV(TAG, " Flushing");
197
199
  if (this->hw_serial_ != nullptr) {
198
200
  this->hw_serial_->flush();
199
201
  } else {
@@ -85,12 +85,12 @@ void IDFUARTComponent::setup() {
85
85
  #endif // USE_LOGGER
86
86
 
87
87
  if (next_uart_num >= SOC_UART_NUM) {
88
- ESP_LOGW(TAG, "Maximum number of UART components created already.");
88
+ ESP_LOGW(TAG, "Maximum number of UART components created already");
89
89
  this->mark_failed();
90
90
  return;
91
91
  }
92
92
  this->uart_num_ = static_cast<uart_port_t>(next_uart_num++);
93
- ESP_LOGCONFIG(TAG, "Setting up UART %u...", this->uart_num_);
93
+ ESP_LOGCONFIG(TAG, "Running setup for UART %u", this->uart_num_);
94
94
 
95
95
  this->lock_ = xSemaphoreCreateMutex();
96
96
 
@@ -162,10 +162,12 @@ void IDFUARTComponent::dump_config() {
162
162
  if (this->rx_pin_ != nullptr) {
163
163
  ESP_LOGCONFIG(TAG, " RX Buffer Size: %u", this->rx_buffer_size_);
164
164
  }
165
- ESP_LOGCONFIG(TAG, " Baud Rate: %" PRIu32 " baud", this->baud_rate_);
166
- ESP_LOGCONFIG(TAG, " Data Bits: %u", this->data_bits_);
167
- ESP_LOGCONFIG(TAG, " Parity: %s", LOG_STR_ARG(parity_to_str(this->parity_)));
168
- ESP_LOGCONFIG(TAG, " Stop bits: %u", this->stop_bits_);
165
+ ESP_LOGCONFIG(TAG,
166
+ " Baud Rate: %" PRIu32 " baud\n"
167
+ " Data Bits: %u\n"
168
+ " Parity: %s\n"
169
+ " Stop bits: %u",
170
+ this->baud_rate_, this->data_bits_, LOG_STR_ARG(parity_to_str(this->parity_)), this->stop_bits_);
169
171
  this->check_logger_conflict();
170
172
  }
171
173
 
@@ -234,7 +236,7 @@ int IDFUARTComponent::available() {
234
236
  }
235
237
 
236
238
  void IDFUARTComponent::flush() {
237
- ESP_LOGVV(TAG, " Flushing...");
239
+ ESP_LOGVV(TAG, " Flushing");
238
240
  xSemaphoreTake(this->lock_, portMAX_DELAY);
239
241
  uart_wait_tx_done(this->uart_num_, portMAX_DELAY);
240
242
  xSemaphoreGive(this->lock_);
@@ -109,7 +109,7 @@ HostUartComponent::~HostUartComponent() {
109
109
  }
110
110
 
111
111
  void HostUartComponent::setup() {
112
- ESP_LOGCONFIG(TAG, "Opening UART port...");
112
+ ESP_LOGCONFIG(TAG, "Opening UART port");
113
113
  speed_t baud = get_baud(this->baud_rate_);
114
114
  if (baud == B0) {
115
115
  ESP_LOGE(TAG, "Unsupported baud rate: %d", this->baud_rate_);
@@ -188,14 +188,17 @@ void HostUartComponent::dump_config() {
188
188
  }
189
189
  return;
190
190
  }
191
- ESP_LOGCONFIG(TAG, " Port status: opened");
192
- ESP_LOGCONFIG(TAG, " Baud Rate: %d", this->baud_rate_);
193
- ESP_LOGCONFIG(TAG, " Data Bits: %d", this->data_bits_);
194
- ESP_LOGCONFIG(TAG, " Parity: %s",
191
+ ESP_LOGCONFIG(TAG,
192
+ " Port status: opened\n"
193
+ " Baud Rate: %d\n"
194
+ " Data Bits: %d\n"
195
+ " Parity: %s\n"
196
+ " Stop Bits: %d",
197
+ this->baud_rate_, this->data_bits_,
195
198
  this->parity_ == UART_CONFIG_PARITY_NONE ? "None"
196
199
  : this->parity_ == UART_CONFIG_PARITY_EVEN ? "Even"
197
- : "Odd");
198
- ESP_LOGCONFIG(TAG, " Stop Bits: %d", this->stop_bits_);
200
+ : "Odd",
201
+ this->stop_bits_);
199
202
  this->check_logger_conflict();
200
203
  }
201
204
 
@@ -283,7 +286,7 @@ void HostUartComponent::flush() {
283
286
  return;
284
287
  }
285
288
  tcflush(this->file_descriptor_, TCIOFLUSH);
286
- ESP_LOGV(TAG, " Flushing...");
289
+ ESP_LOGV(TAG, " Flushing");
287
290
  }
288
291
 
289
292
  void HostUartComponent::update_error_(const std::string &error) {
@@ -46,7 +46,7 @@ uint16_t LibreTinyUARTComponent::get_config() {
46
46
  }
47
47
 
48
48
  void LibreTinyUARTComponent::setup() {
49
- ESP_LOGCONFIG(TAG, "Setting up UART...");
49
+ ESP_LOGCONFIG(TAG, "Running setup");
50
50
 
51
51
  int8_t tx_pin = tx_pin_ == nullptr ? -1 : tx_pin_->get_pin();
52
52
  int8_t rx_pin = rx_pin_ == nullptr ? -1 : rx_pin_->get_pin();
@@ -108,10 +108,12 @@ void LibreTinyUARTComponent::dump_config() {
108
108
  if (this->rx_pin_ != nullptr) {
109
109
  ESP_LOGCONFIG(TAG, " RX Buffer Size: %u", this->rx_buffer_size_);
110
110
  }
111
- ESP_LOGCONFIG(TAG, " Baud Rate: %u baud", this->baud_rate_);
112
- ESP_LOGCONFIG(TAG, " Data Bits: %u", this->data_bits_);
113
- ESP_LOGCONFIG(TAG, " Parity: %s", LOG_STR_ARG(parity_to_str(this->parity_)));
114
- ESP_LOGCONFIG(TAG, " Stop bits: %u", this->stop_bits_);
111
+ ESP_LOGCONFIG(TAG,
112
+ " Baud Rate: %u baud\n"
113
+ " Data Bits: %u\n"
114
+ " Parity: %s\n"
115
+ " Stop bits: %u",
116
+ this->baud_rate_, this->data_bits_, LOG_STR_ARG(parity_to_str(this->parity_)), this->stop_bits_);
115
117
  this->check_logger_conflict();
116
118
  }
117
119
 
@@ -145,7 +147,7 @@ bool LibreTinyUARTComponent::read_array(uint8_t *data, size_t len) {
145
147
 
146
148
  int LibreTinyUARTComponent::available() { return this->serial_->available(); }
147
149
  void LibreTinyUARTComponent::flush() {
148
- ESP_LOGVV(TAG, " Flushing...");
150
+ ESP_LOGVV(TAG, " Flushing");
149
151
  this->serial_->flush();
150
152
  }
151
153
 
@@ -52,7 +52,7 @@ uint16_t RP2040UartComponent::get_config() {
52
52
  }
53
53
 
54
54
  void RP2040UartComponent::setup() {
55
- ESP_LOGCONFIG(TAG, "Setting up UART bus...");
55
+ ESP_LOGCONFIG(TAG, "Running setup");
56
56
 
57
57
  uint16_t config = get_config();
58
58
 
@@ -136,10 +136,12 @@ void RP2040UartComponent::dump_config() {
136
136
  if (this->rx_pin_ != nullptr) {
137
137
  ESP_LOGCONFIG(TAG, " RX Buffer Size: %u", this->rx_buffer_size_);
138
138
  }
139
- ESP_LOGCONFIG(TAG, " Baud Rate: %u baud", this->baud_rate_);
140
- ESP_LOGCONFIG(TAG, " Data Bits: %u", this->data_bits_);
141
- ESP_LOGCONFIG(TAG, " Parity: %s", LOG_STR_ARG(parity_to_str(this->parity_)));
142
- ESP_LOGCONFIG(TAG, " Stop bits: %u", this->stop_bits_);
139
+ ESP_LOGCONFIG(TAG,
140
+ " Baud Rate: %u baud\n"
141
+ " Data Bits: %u\n"
142
+ " Parity: %s\n"
143
+ " Stop bits: %u",
144
+ this->baud_rate_, this->data_bits_, LOG_STR_ARG(parity_to_str(this->parity_)), this->stop_bits_);
143
145
  if (this->hw_serial_) {
144
146
  ESP_LOGCONFIG(TAG, " Using hardware serial");
145
147
  } else {
@@ -174,7 +176,7 @@ bool RP2040UartComponent::read_array(uint8_t *data, size_t len) {
174
176
  }
175
177
  int RP2040UartComponent::available() { return this->serial_->available(); }
176
178
  void RP2040UartComponent::flush() {
177
- ESP_LOGVV(TAG, " Flushing...");
179
+ ESP_LOGVV(TAG, " Flushing");
178
180
  this->serial_->flush();
179
181
  }
180
182
 
@@ -122,16 +122,20 @@ void UDPComponent::loop() {
122
122
  }
123
123
 
124
124
  void UDPComponent::dump_config() {
125
- ESP_LOGCONFIG(TAG, "UDP:");
126
- ESP_LOGCONFIG(TAG, " Listen Port: %u", this->listen_port_);
127
- ESP_LOGCONFIG(TAG, " Broadcast Port: %u", this->broadcast_port_);
125
+ ESP_LOGCONFIG(TAG,
126
+ "UDP:\n"
127
+ " Listen Port: %u\n"
128
+ " Broadcast Port: %u",
129
+ this->listen_port_, this->broadcast_port_);
128
130
  for (const auto &address : this->addresses_)
129
131
  ESP_LOGCONFIG(TAG, " Address: %s", address.c_str());
130
132
  if (this->listen_address_.has_value()) {
131
133
  ESP_LOGCONFIG(TAG, " Listen address: %s", this->listen_address_.value().str().c_str());
132
134
  }
133
- ESP_LOGCONFIG(TAG, " Broadcasting: %s", YESNO(this->should_broadcast_));
134
- ESP_LOGCONFIG(TAG, " Listening: %s", YESNO(this->should_listen_));
135
+ ESP_LOGCONFIG(TAG,
136
+ " Broadcasting: %s\n"
137
+ " Listening: %s",
138
+ YESNO(this->should_broadcast_), YESNO(this->should_listen_));
135
139
  }
136
140
 
137
141
  void UDPComponent::send_packet(const uint8_t *data, size_t size) {
@@ -7,7 +7,7 @@ namespace ufire_ec {
7
7
  static const char *const TAG = "ufire_ec";
8
8
 
9
9
  void UFireECComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up uFire_ec...");
10
+ ESP_LOGCONFIG(TAG, "Running setup");
11
11
 
12
12
  uint8_t version;
13
13
  if (!this->read_byte(REGISTER_VERSION, &version) && version != 0xFF) {
@@ -110,8 +110,10 @@ void UFireECComponent::dump_config() {
110
110
  LOG_SENSOR(" ", "EC Sensor", this->ec_sensor_)
111
111
  LOG_SENSOR(" ", "Temperature Sensor", this->temperature_sensor_)
112
112
  LOG_SENSOR(" ", "Temperature Sensor external", this->temperature_sensor_external_)
113
- ESP_LOGCONFIG(TAG, " Temperature Compensation: %f", this->temperature_compensation_);
114
- ESP_LOGCONFIG(TAG, " Temperature Coefficient: %f", this->temperature_coefficient_);
113
+ ESP_LOGCONFIG(TAG,
114
+ " Temperature Compensation: %f\n"
115
+ " Temperature Coefficient: %f",
116
+ this->temperature_compensation_, this->temperature_coefficient_);
115
117
  }
116
118
 
117
119
  } // namespace ufire_ec
@@ -9,7 +9,7 @@ namespace ufire_ise {
9
9
  static const char *const TAG = "ufire_ise";
10
10
 
11
11
  void UFireISEComponent::setup() {
12
- ESP_LOGCONFIG(TAG, "Setting up uFire_ise...");
12
+ ESP_LOGCONFIG(TAG, "Running setup");
13
13
 
14
14
  uint8_t version;
15
15
  if (!this->read_byte(REGISTER_VERSION, &version) && version != 0xFF) {
@@ -8,7 +8,7 @@ namespace ultrasonic {
8
8
  static const char *const TAG = "ultrasonic.sensor";
9
9
 
10
10
  void UltrasonicSensorComponent::setup() {
11
- ESP_LOGCONFIG(TAG, "Setting up Ultrasonic Sensor...");
11
+ ESP_LOGCONFIG(TAG, "Running setup");
12
12
  this->trigger_pin_->setup();
13
13
  this->trigger_pin_->digital_write(false);
14
14
  this->echo_pin_->setup();
@@ -45,8 +45,10 @@ void UltrasonicSensorComponent::dump_config() {
45
45
  LOG_SENSOR("", "Ultrasonic Sensor", this);
46
46
  LOG_PIN(" Echo Pin: ", this->echo_pin_);
47
47
  LOG_PIN(" Trigger Pin: ", this->trigger_pin_);
48
- ESP_LOGCONFIG(TAG, " Pulse time: %" PRIu32 " µs", this->pulse_time_us_);
49
- ESP_LOGCONFIG(TAG, " Timeout: %" PRIu32 " µs", this->timeout_us_);
48
+ ESP_LOGCONFIG(TAG,
49
+ " Pulse time: %" PRIu32 " µs\n"
50
+ " Timeout: %" PRIu32 " µs",
51
+ this->pulse_time_us_, this->timeout_us_);
50
52
  LOG_UPDATE_INTERVAL(this);
51
53
  }
52
54
  float UltrasonicSensorComponent::us_to_m(uint32_t us) {
@@ -111,6 +111,7 @@ async def register_update(var, config):
111
111
  if not CORE.has_id(config[CONF_ID]):
112
112
  var = cg.Pvariable(config[CONF_ID], var)
113
113
  cg.add(cg.App.register_update(var))
114
+ CORE.register_platform_component("update", var)
114
115
  await setup_update_core_(var, config)
115
116
 
116
117
 
@@ -1,7 +1,7 @@
1
1
  #include "uponor_smatrix_climate.h"
2
+ #include "esphome/core/application.h"
2
3
  #include "esphome/core/helpers.h"
3
4
  #include "esphome/core/log.h"
4
- #include "esphome/core/application.h"
5
5
 
6
6
  namespace esphome {
7
7
  namespace uponor_smatrix {