esphome 2025.5.2__py3-none-any.whl → 2025.6.0b2__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 (746) hide show
  1. esphome/__main__.py +20 -14
  2. esphome/components/a4988/a4988.cpp +1 -1
  3. esphome/components/absolute_humidity/absolute_humidity.cpp +6 -4
  4. esphome/components/ac_dimmer/ac_dimmer.cpp +4 -2
  5. esphome/components/adc/adc_sensor_esp32.cpp +5 -3
  6. esphome/components/adc/adc_sensor_esp8266.cpp +5 -3
  7. esphome/components/adc/adc_sensor_libretiny.cpp +5 -3
  8. esphome/components/adc/adc_sensor_rp2040.cpp +5 -3
  9. esphome/components/adc128s102/adc128s102.cpp +1 -1
  10. esphome/components/ade7880/ade7880.cpp +28 -17
  11. esphome/components/ade7953_base/ade7953_base.cpp +12 -9
  12. esphome/components/ade7953_i2c/ade7953_i2c.cpp +1 -1
  13. esphome/components/ade7953_spi/ade7953_spi.cpp +1 -1
  14. esphome/components/ads1115/ads1115.cpp +3 -5
  15. esphome/components/ads1118/ads1118.cpp +2 -1
  16. esphome/components/ags10/ags10.cpp +3 -2
  17. esphome/components/aht10/aht10.cpp +27 -29
  18. esphome/components/aic3204/aic3204.cpp +2 -2
  19. esphome/components/alarm_control_panel/__init__.py +1 -0
  20. esphome/components/am2315c/am2315c.cpp +2 -2
  21. esphome/components/am2320/am2320.cpp +2 -2
  22. esphome/components/am43/am43_base.h +1 -1
  23. esphome/components/am43/cover/am43_cover.cpp +4 -2
  24. esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +4 -2
  25. esphome/components/apds9306/apds9306.cpp +8 -5
  26. esphome/components/apds9960/apds9960.cpp +2 -2
  27. esphome/components/api/__init__.py +5 -0
  28. esphome/components/api/api_connection.cpp +753 -379
  29. esphome/components/api/api_connection.h +341 -283
  30. esphome/components/api/api_frame_helper.cpp +349 -344
  31. esphome/components/api/api_frame_helper.h +121 -94
  32. esphome/components/api/api_pb2.cpp +3 -0
  33. esphome/components/api/api_pb2.h +702 -227
  34. esphome/components/api/api_pb2_service.cpp +12 -688
  35. esphome/components/api/api_pb2_service.h +53 -207
  36. esphome/components/api/api_server.cpp +71 -29
  37. esphome/components/api/api_server.h +9 -0
  38. esphome/components/api/client.py +5 -4
  39. esphome/components/api/homeassistant_service.h +1 -1
  40. esphome/components/api/list_entities.cpp +1 -1
  41. esphome/components/api/proto.cpp +1 -0
  42. esphome/components/api/proto.h +5 -4
  43. esphome/components/api/subscribe_state.cpp +8 -16
  44. esphome/components/as3935/as3935.cpp +3 -3
  45. esphome/components/as5600/as5600.cpp +9 -7
  46. esphome/components/as7341/as7341.cpp +7 -5
  47. esphome/components/at581x/at581x.cpp +13 -10
  48. esphome/components/atm90e26/atm90e26.cpp +2 -2
  49. esphome/components/atm90e32/atm90e32.cpp +3 -3
  50. esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +5 -3
  51. esphome/components/bang_bang/bang_bang_climate.cpp +8 -5
  52. esphome/components/bedjet/bedjet_hub.cpp +6 -4
  53. esphome/components/beken_spi_led_strip/led_strip.cpp +11 -7
  54. esphome/components/bh1750/bh1750.cpp +2 -2
  55. esphome/components/binary_sensor/__init__.py +1 -0
  56. esphome/components/binary_sensor/automation.cpp +1 -2
  57. esphome/components/bl0906/bl0906.cpp +1 -1
  58. esphome/components/bl0942/bl0942.cpp +11 -8
  59. esphome/components/bl0942/sensor.py +1 -1
  60. esphome/components/ble_client/__init__.py +5 -1
  61. esphome/components/ble_client/output/ble_binary_output.cpp +6 -3
  62. esphome/components/ble_client/sensor/ble_sensor.cpp +9 -6
  63. esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +8 -5
  64. esphome/components/bluetooth_proxy/__init__.py +5 -1
  65. esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -5
  66. esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +18 -16
  67. esphome/components/bluetooth_proxy/bluetooth_proxy.h +1 -1
  68. esphome/components/bme280_base/bme280_base.cpp +5 -6
  69. esphome/components/bme680/bme680.cpp +3 -3
  70. esphome/components/bme680/sensor.py +2 -2
  71. esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
  72. esphome/components/bme680_bsec/sensor.py +7 -3
  73. esphome/components/bme68x_bsec2/__init__.py +6 -5
  74. esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
  75. esphome/components/bme68x_bsec2/sensor.py +4 -4
  76. esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
  77. esphome/components/bmi160/bmi160.cpp +11 -11
  78. esphome/components/bmp085/bmp085.cpp +2 -2
  79. esphome/components/bmp280_base/bmp280_base.cpp +3 -3
  80. esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
  81. esphome/components/bmp581/bmp581.cpp +33 -27
  82. esphome/components/bp1658cj/bp1658cj.cpp +5 -3
  83. esphome/components/bp5758d/bp5758d.cpp +1 -1
  84. esphome/components/button/__init__.py +1 -0
  85. esphome/components/canbus/canbus.cpp +1 -1
  86. esphome/components/cap1188/cap1188.cpp +6 -4
  87. esphome/components/captive_portal/captive_portal.cpp +1 -1
  88. esphome/components/ccs811/ccs811.cpp +3 -2
  89. esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
  90. esphome/components/ch422g/ch422g.cpp +2 -2
  91. esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
  92. esphome/components/climate/__init__.py +1 -0
  93. esphome/components/climate/climate.cpp +12 -7
  94. esphome/components/climate/climate.h +1 -1
  95. esphome/components/climate_ir/climate_ir.cpp +7 -4
  96. esphome/components/cm1106/__init__.py +1 -0
  97. esphome/components/cm1106/cm1106.cpp +112 -0
  98. esphome/components/cm1106/cm1106.h +40 -0
  99. esphome/components/cm1106/sensor.py +72 -0
  100. esphome/components/const/__init__.py +1 -0
  101. esphome/components/cover/__init__.py +1 -0
  102. esphome/components/cs5460a/cs5460a.cpp +16 -11
  103. esphome/components/cse7761/cse7761.cpp +2 -2
  104. esphome/components/cse7766/cse7766.cpp +0 -5
  105. esphome/components/cse7766/cse7766.h +5 -1
  106. esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
  107. esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
  108. esphome/components/current_based/current_based_cover.cpp +4 -2
  109. esphome/components/dac7678/dac7678_output.cpp +4 -4
  110. esphome/components/dallas_temp/dallas_temp.cpp +2 -3
  111. esphome/components/daly_bms/daly_bms.cpp +2 -1
  112. esphome/components/dashboard_import/__init__.py +1 -2
  113. esphome/components/datetime/__init__.py +3 -1
  114. esphome/components/datetime/date_entity.cpp +5 -5
  115. esphome/components/datetime/datetime_base.h +0 -5
  116. esphome/components/datetime/datetime_entity.cpp +8 -8
  117. esphome/components/datetime/time_entity.cpp +4 -4
  118. esphome/components/debug/debug_component.cpp +1 -1
  119. esphome/components/debug/debug_component.h +1 -1
  120. esphome/components/debug/debug_esp32.cpp +4 -2
  121. esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
  122. esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
  123. esphome/components/demo/__init__.py +206 -0
  124. esphome/components/demo/demo_alarm_control_panel.h +65 -0
  125. esphome/components/demo/demo_button.h +15 -0
  126. esphome/components/demo/demo_date.h +34 -0
  127. esphome/components/demo/demo_datetime.h +40 -0
  128. esphome/components/demo/demo_lock.h +17 -0
  129. esphome/components/demo/demo_select.h +15 -0
  130. esphome/components/demo/demo_text.h +18 -0
  131. esphome/components/demo/demo_time.h +34 -0
  132. esphome/components/demo/demo_valve.h +54 -0
  133. esphome/components/dfrobot_sen0395/commands.cpp +3 -3
  134. esphome/components/dht/dht.cpp +29 -50
  135. esphome/components/dht12/dht12.cpp +2 -2
  136. esphome/components/display/display.h +5 -3
  137. esphome/components/dps310/dps310.cpp +7 -5
  138. esphome/components/ds1307/ds1307.cpp +2 -2
  139. esphome/components/dsmr/dsmr.cpp +5 -3
  140. esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
  141. esphome/components/duty_time/duty_time_sensor.cpp +5 -3
  142. esphome/components/ee895/ee895.cpp +3 -3
  143. esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
  144. esphome/components/emc2101/emc2101.cpp +11 -9
  145. esphome/components/ens160_base/ens160_base.cpp +2 -2
  146. esphome/components/ens210/ens210.cpp +2 -2
  147. esphome/components/es7210/es7210.cpp +6 -4
  148. esphome/components/es7243e/es7243e.cpp +1 -1
  149. esphome/components/es8156/es8156.cpp +1 -1
  150. esphome/components/es8311/es8311.cpp +8 -6
  151. esphome/components/es8388/__init__.py +0 -0
  152. esphome/components/es8388/audio_dac.py +26 -0
  153. esphome/components/es8388/es8388.cpp +289 -0
  154. esphome/components/es8388/es8388.h +81 -0
  155. esphome/components/es8388/es8388_const.h +83 -0
  156. esphome/components/es8388/select/__init__.py +47 -0
  157. esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
  158. esphome/components/es8388/select/adc_input_mic_select.h +15 -0
  159. esphome/components/es8388/select/dac_output_select.cpp +12 -0
  160. esphome/components/es8388/select/dac_output_select.h +15 -0
  161. esphome/components/esp32/__init__.py +118 -23
  162. esphome/components/esp32/boards.py +208 -125
  163. esphome/components/esp32/const.py +6 -0
  164. esphome/components/esp32/gpio.py +14 -1
  165. esphome/components/esp32/gpio_esp32_c5.py +45 -0
  166. esphome/components/esp32/gpio_esp32_p4.py +43 -0
  167. esphome/components/esp32/preferences.cpp +7 -7
  168. esphome/components/esp32_ble/__init__.py +115 -0
  169. esphome/components/esp32_ble/ble.cpp +101 -54
  170. esphome/components/esp32_ble/ble.h +24 -5
  171. esphome/components/esp32_ble/ble_event.h +172 -32
  172. esphome/components/esp32_ble/ble_scan_result.h +24 -0
  173. esphome/components/esp32_ble/ble_uuid.h +1 -1
  174. esphome/components/esp32_ble/queue.h +53 -27
  175. esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
  176. esphome/components/esp32_ble_server/__init__.py +4 -1
  177. esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
  178. esphome/components/esp32_ble_server/ble_server.h +0 -1
  179. esphome/components/esp32_ble_tracker/__init__.py +7 -2
  180. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +107 -75
  181. esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +16 -16
  182. esphome/components/esp32_camera/esp32_camera.cpp +35 -27
  183. esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
  184. esphome/components/esp32_dac/esp32_dac.cpp +2 -2
  185. esphome/components/esp32_improv/__init__.py +5 -1
  186. esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
  187. esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
  188. esphome/components/esp32_rmt_led_strip/light.py +5 -1
  189. esphome/components/esp32_touch/esp32_touch.cpp +12 -8
  190. esphome/components/esp8266/preferences.cpp +6 -6
  191. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  192. esphome/components/esp_ldo/__init__.py +91 -0
  193. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  194. esphome/components/esp_ldo/esp_ldo.h +43 -0
  195. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  196. esphome/components/ethernet/ethernet_component.cpp +38 -26
  197. esphome/components/ethernet/ethernet_component.h +1 -1
  198. esphome/components/event/__init__.py +1 -0
  199. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  200. esphome/components/ezo/ezo.cpp +1 -1
  201. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  202. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  203. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  204. esphome/components/fan/__init__.py +1 -0
  205. esphome/components/fan/fan.cpp +30 -19
  206. esphome/components/fastled_base/fastled_light.cpp +7 -5
  207. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  208. esphome/components/fs3000/fs3000.cpp +1 -1
  209. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  210. esphome/components/ft63x6/ft63x6.cpp +5 -3
  211. esphome/components/gcja5/gcja5.cpp +0 -12
  212. esphome/components/gcja5/gcja5.h +8 -3
  213. esphome/components/gdk101/gdk101.cpp +2 -2
  214. esphome/components/globals/globals_component.h +13 -10
  215. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  216. esphome/components/gp8403/gp8403.cpp +4 -2
  217. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  218. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  219. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  220. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  221. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  222. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  223. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  224. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  225. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  226. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  227. esphome/components/haier/haier_base.cpp +2 -2
  228. esphome/components/haier/hon_climate.cpp +13 -6
  229. esphome/components/havells_solar/havells_solar.cpp +5 -2
  230. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  231. esphome/components/hdc1080/hdc1080.cpp +2 -2
  232. esphome/components/he60r/he60r.cpp +4 -2
  233. esphome/components/hlw8012/hlw8012.cpp +6 -4
  234. esphome/components/hm3301/hm3301.cpp +2 -2
  235. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  236. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  237. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  238. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  239. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  240. esphome/components/hte501/hte501.cpp +3 -2
  241. esphome/components/http_request/__init__.py +2 -2
  242. esphome/components/http_request/http_request.cpp +7 -5
  243. esphome/components/http_request/http_request_idf.cpp +4 -2
  244. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  245. esphome/components/htu21d/htu21d.cpp +2 -2
  246. esphome/components/htu31d/htu31d.cpp +2 -2
  247. esphome/components/hx711/hx711.cpp +2 -2
  248. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  249. esphome/components/hyt271/hyt271.cpp +2 -2
  250. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  251. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  252. esphome/components/i2s_audio/__init__.py +2 -0
  253. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  254. esphome/components/i2s_audio/i2s_audio.h +1 -1
  255. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  256. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  257. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +13 -10
  258. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
  259. esphome/components/iaqcore/iaqcore.cpp +3 -3
  260. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  261. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  262. esphome/components/image/image.cpp +1 -0
  263. esphome/components/ina219/ina219.cpp +2 -2
  264. esphome/components/ina226/ina226.cpp +8 -5
  265. esphome/components/ina260/ina260.cpp +1 -1
  266. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  267. esphome/components/ina3221/ina3221.cpp +2 -2
  268. esphome/components/inkplate6/display.py +12 -2
  269. esphome/components/inkplate6/inkplate.cpp +13 -9
  270. esphome/components/inkplate6/inkplate.h +7 -6
  271. esphome/components/integration/integration_sensor.cpp +1 -1
  272. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  273. esphome/components/json/json_util.cpp +4 -5
  274. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  275. esphome/components/key_collector/key_collector.cpp +4 -2
  276. esphome/components/kmeteriso/kmeteriso.cpp +4 -4
  277. esphome/components/kuntze/kuntze.cpp +4 -2
  278. esphome/components/lc709203f/__init__.py +1 -0
  279. esphome/components/lc709203f/lc709203f.cpp +299 -0
  280. esphome/components/lc709203f/lc709203f.h +55 -0
  281. esphome/components/lc709203f/sensor.py +93 -0
  282. esphome/components/lcd_base/lcd_display.cpp +2 -2
  283. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  284. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  285. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  286. esphome/components/ld2410/ld2410.cpp +6 -7
  287. esphome/components/ld2420/ld2420.cpp +9 -7
  288. esphome/components/ld2450/ld2450.cpp +6 -4
  289. esphome/components/ld2450/sensor.py +2 -2
  290. esphome/components/ledc/ledc_output.cpp +32 -28
  291. esphome/components/libretiny/const.py +1 -1
  292. esphome/components/libretiny/preferences.cpp +6 -7
  293. esphome/components/light/__init__.py +2 -1
  294. esphome/components/light/esp_hsv_color.h +1 -1
  295. esphome/components/light/light_state.cpp +9 -5
  296. esphome/components/light/light_transformer.h +1 -1
  297. esphome/components/lightwaverf/LwTx.cpp +1 -1
  298. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  299. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  300. esphome/components/lock/__init__.py +1 -0
  301. esphome/components/lock/lock.h +1 -1
  302. esphome/components/logger/__init__.py +6 -0
  303. esphome/components/logger/logger.cpp +11 -20
  304. esphome/components/logger/logger.h +1 -2
  305. esphome/components/logger/logger_esp32.cpp +5 -5
  306. esphome/components/ltr390/ltr390.cpp +8 -5
  307. esphome/components/ltr501/ltr501.cpp +19 -14
  308. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  309. esphome/components/lvgl/__init__.py +2 -2
  310. esphome/components/lvgl/automation.py +5 -4
  311. esphome/components/lvgl/defines.py +0 -2
  312. esphome/components/lvgl/lv_validation.py +1 -3
  313. esphome/components/lvgl/lvcode.py +7 -8
  314. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  315. esphome/components/lvgl/schemas.py +22 -23
  316. esphome/components/lvgl/trigger.py +8 -3
  317. esphome/components/lvgl/widgets/__init__.py +2 -2
  318. esphome/components/lvgl/widgets/canvas.py +9 -3
  319. esphome/components/lvgl/widgets/line.py +2 -1
  320. esphome/components/lvgl/widgets/tabview.py +7 -0
  321. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  322. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  323. esphome/components/max17043/max17043.cpp +2 -2
  324. esphome/components/max31855/max31855.cpp +2 -1
  325. esphome/components/max31856/max31856.cpp +9 -11
  326. esphome/components/max31865/max31865.cpp +6 -4
  327. esphome/components/max44009/max44009.cpp +2 -2
  328. esphome/components/max6675/max6675.cpp +1 -1
  329. esphome/components/max6956/max6956.cpp +5 -3
  330. esphome/components/max7219/max7219.cpp +8 -6
  331. esphome/components/max7219digit/automation.h +52 -0
  332. esphome/components/max7219digit/display.py +93 -1
  333. esphome/components/max7219digit/max7219digit.cpp +16 -13
  334. esphome/components/max9611/max9611.cpp +9 -6
  335. esphome/components/mcp23008/mcp23008.cpp +1 -1
  336. esphome/components/mcp23016/mcp23016.cpp +1 -1
  337. esphome/components/mcp23017/mcp23017.cpp +1 -1
  338. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  339. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  340. esphome/components/mcp3008/mcp3008.cpp +1 -1
  341. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  342. esphome/components/mcp3204/mcp3204.cpp +1 -1
  343. esphome/components/mcp4461/mcp4461.cpp +2 -2
  344. esphome/components/mcp4725/mcp4725.cpp +2 -2
  345. esphome/components/mcp4728/mcp4728.cpp +2 -2
  346. esphome/components/mcp9600/mcp9600.cpp +1 -1
  347. esphome/components/mcp9808/mcp9808.cpp +4 -4
  348. esphome/components/mdns/mdns_component.cpp +8 -2
  349. esphome/components/mdns/mdns_component.h +3 -1
  350. esphome/components/mdns/mdns_esp32.cpp +2 -2
  351. esphome/components/media_player/__init__.py +1 -0
  352. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  353. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  354. esphome/components/micronova/micronova.h +2 -2
  355. esphome/components/mics_4514/mics_4514.cpp +2 -2
  356. esphome/components/midea/air_conditioner.cpp +7 -5
  357. esphome/components/midea_ir/midea_ir.cpp +1 -1
  358. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  359. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  360. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  361. esphome/components/mlx90614/mlx90614.cpp +4 -3
  362. esphome/components/mmc5603/mmc5603.cpp +2 -2
  363. esphome/components/mmc5983/mmc5983.cpp +1 -1
  364. esphome/components/modbus/modbus.cpp +7 -5
  365. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  366. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  367. esphome/components/modbus_controller/switch/__init__.py +6 -2
  368. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  369. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  370. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  371. esphome/components/mpr121/mpr121.cpp +2 -2
  372. esphome/components/mpu6050/mpu6050.cpp +6 -6
  373. esphome/components/mpu6886/mpu6886.cpp +6 -6
  374. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  375. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  376. esphome/components/mqtt/mqtt_client.cpp +31 -24
  377. esphome/components/mqtt/mqtt_component.cpp +3 -3
  378. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  379. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  380. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  381. esphome/components/ms5611/ms5611.cpp +2 -2
  382. esphome/components/ms8607/ms8607.cpp +2 -2
  383. esphome/components/msa3xx/msa3xx.cpp +16 -12
  384. esphome/components/my9231/my9231.cpp +7 -5
  385. esphome/components/nau7802/nau7802.cpp +6 -4
  386. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  387. esphome/components/network/ip_address.h +1 -1
  388. esphome/components/network/util.cpp +13 -0
  389. esphome/components/nextion/base_component.py +2 -0
  390. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +3 -4
  391. esphome/components/nextion/display.py +34 -22
  392. esphome/components/nextion/nextion.cpp +182 -143
  393. esphome/components/nextion/nextion.h +36 -0
  394. esphome/components/nextion/nextion_commands.cpp +3 -3
  395. esphome/components/nextion/nextion_upload_arduino.cpp +69 -69
  396. esphome/components/nextion/nextion_upload_idf.cpp +79 -80
  397. esphome/components/nextion/sensor/nextion_sensor.cpp +5 -5
  398. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  399. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +3 -3
  400. esphome/components/nfc/nci_message.h +1 -1
  401. esphome/components/nfc/ndef_record.h +1 -1
  402. esphome/components/nfc/ndef_record_text.h +1 -1
  403. esphome/components/nfc/ndef_record_uri.h +1 -1
  404. esphome/components/nfc/nfc.h +1 -1
  405. esphome/components/nfc/nfc_tag.h +1 -1
  406. esphome/components/noblex/noblex.cpp +1 -1
  407. esphome/components/npi19/npi19.cpp +5 -7
  408. esphome/components/number/__init__.py +11 -0
  409. esphome/components/number/number.cpp +1 -1
  410. esphome/components/number/number.h +0 -4
  411. esphome/components/online_image/__init__.py +13 -1
  412. esphome/components/online_image/online_image.cpp +26 -4
  413. esphome/components/online_image/online_image.h +21 -4
  414. esphome/components/opentherm/generate.py +3 -3
  415. esphome/components/opentherm/hub.cpp +11 -7
  416. esphome/components/opentherm/number/number.cpp +5 -3
  417. esphome/components/opentherm/opentherm.h +1 -1
  418. esphome/components/opentherm/schema.py +13 -13
  419. esphome/components/opentherm/validate.py +1 -1
  420. esphome/components/openthread/__init__.py +146 -0
  421. esphome/components/openthread/const.py +10 -0
  422. esphome/components/openthread/openthread.cpp +206 -0
  423. esphome/components/openthread/openthread.h +68 -0
  424. esphome/components/openthread/openthread_esp.cpp +164 -0
  425. esphome/components/openthread/tlv.py +58 -0
  426. esphome/components/openthread_info/__init__.py +0 -0
  427. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  428. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  429. esphome/components/openthread_info/text_sensor.py +105 -0
  430. esphome/components/output/float_output.cpp +1 -1
  431. esphome/components/output/switch/output_switch.cpp +1 -1
  432. esphome/components/packet_transport/packet_transport.cpp +6 -4
  433. esphome/components/pca6416a/pca6416a.cpp +2 -2
  434. esphome/components/pca9554/pca9554.cpp +6 -4
  435. esphome/components/pca9685/pca9685_output.cpp +12 -8
  436. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  437. esphome/components/pcf85063/pcf85063.cpp +2 -2
  438. esphome/components/pcf8563/pcf8563.cpp +2 -2
  439. esphome/components/pcf8574/pcf8574.cpp +2 -2
  440. esphome/components/pid/pid_climate.cpp +8 -5
  441. esphome/components/pid/pid_climate.h +1 -1
  442. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  443. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  444. esphome/components/pipsolar/pipsolar.cpp +3 -3
  445. esphome/components/pm1006/pm1006.cpp +3 -7
  446. esphome/components/pm1006/pm1006.h +4 -1
  447. esphome/components/pm2005/pm2005.cpp +12 -13
  448. esphome/components/pm2005/sensor.py +1 -1
  449. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  450. esphome/components/pmsx003/pmsx003.cpp +0 -4
  451. esphome/components/pmsx003/pmsx003.h +5 -2
  452. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  453. esphome/components/pmwcs3/pmwcs3.h +0 -1
  454. esphome/components/pn532/pn532.cpp +7 -7
  455. esphome/components/pn532/pn532.h +1 -1
  456. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  457. esphome/components/pn7150/pn7150.cpp +4 -4
  458. esphome/components/pn7160/pn7160.cpp +4 -4
  459. esphome/components/power_supply/power_supply.cpp +6 -4
  460. esphome/components/power_supply/power_supply.h +1 -1
  461. esphome/components/prometheus/__init__.py +0 -1
  462. esphome/components/psram/__init__.py +59 -35
  463. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  464. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  465. esphome/components/pylontech/pylontech.cpp +2 -2
  466. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  467. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  468. esphome/components/pzemac/pzemac.cpp +4 -2
  469. esphome/components/pzemdc/pzemdc.cpp +4 -2
  470. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  471. esphome/components/qmp6988/qmp6988.cpp +2 -2
  472. esphome/components/qmp6988/qmp6988.h +1 -1
  473. esphome/components/qr_code/qr_code.cpp +5 -3
  474. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  475. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  476. esphome/components/rc522/rc522.cpp +5 -5
  477. esphome/components/rdm6300/rdm6300.cpp +1 -0
  478. esphome/components/remote_receiver/__init__.py +10 -2
  479. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  480. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  481. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  482. esphome/components/remote_transmitter/__init__.py +10 -2
  483. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  484. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  485. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  486. esphome/components/resistance/resistance_sensor.cpp +6 -3
  487. esphome/components/restart/button/restart_button.cpp +1 -1
  488. esphome/components/restart/switch/restart_switch.cpp +1 -1
  489. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  490. esphome/components/rp2040/__init__.py +7 -0
  491. esphome/components/rp2040/core.cpp +8 -1
  492. esphome/components/rp2040/preferences.cpp +3 -3
  493. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  494. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  495. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  496. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  497. esphome/components/rtttl/rtttl.cpp +11 -9
  498. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  499. esphome/components/safe_mode/safe_mode.cpp +9 -8
  500. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  501. esphome/components/scd30/scd30.cpp +11 -8
  502. esphome/components/scd4x/scd4x.cpp +12 -8
  503. esphome/components/sdl/display.py +40 -0
  504. esphome/components/sdl/sdl_esphome.cpp +2 -2
  505. esphome/components/sdl/sdl_esphome.h +8 -0
  506. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  507. esphome/components/sdp3x/sdp3x.cpp +11 -11
  508. esphome/components/sds011/sds011.cpp +5 -6
  509. esphome/components/sds011/sds011.h +4 -1
  510. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  511. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  512. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  513. esphome/components/selec_meter/selec_meter.cpp +5 -2
  514. esphome/components/select/__init__.py +1 -0
  515. esphome/components/select/select.cpp +1 -1
  516. esphome/components/select/select.h +0 -4
  517. esphome/components/sen0321/sen0321.cpp +2 -2
  518. esphome/components/sen21231/sen21231.cpp +1 -1
  519. esphome/components/sen5x/sen5x.cpp +10 -7
  520. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  521. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  522. esphome/components/sensor/__init__.py +11 -1
  523. esphome/components/sensor/filter.h +1 -1
  524. esphome/components/sensor/sensor.cpp +8 -4
  525. esphome/components/sensor/sensor.h +12 -11
  526. esphome/components/servo/servo.cpp +12 -9
  527. esphome/components/servo/servo.h +1 -1
  528. esphome/components/sfa30/sfa30.cpp +1 -1
  529. esphome/components/sgp30/sgp30.cpp +10 -8
  530. esphome/components/sgp4x/sgp4x.cpp +49 -61
  531. esphome/components/sgp4x/sgp4x.h +0 -1
  532. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  533. esphome/components/sht3xd/sht3xd.cpp +1 -1
  534. esphome/components/sht4x/sht4x.cpp +2 -2
  535. esphome/components/shtcx/shtcx.cpp +13 -16
  536. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  537. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  538. esphome/components/sim800l/sim800l.cpp +2 -2
  539. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  540. esphome/components/sm16716/sm16716.cpp +1 -1
  541. esphome/components/sm2135/sm2135.cpp +1 -1
  542. esphome/components/sm2235/sm2235.cpp +5 -3
  543. esphome/components/sm2335/sm2335.cpp +5 -3
  544. esphome/components/sml/sml.cpp +1 -1
  545. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  546. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  547. esphome/components/sntp/sntp_component.cpp +1 -1
  548. esphome/components/socket/__init__.py +2 -0
  549. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  550. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  551. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  552. esphome/components/socket/socket.cpp +31 -0
  553. esphome/components/socket/socket.h +27 -1
  554. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  555. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  556. esphome/components/sound_level/sound_level.cpp +4 -2
  557. esphome/components/speaker/media_player/__init__.py +3 -0
  558. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  559. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  560. esphome/components/spi/__init__.py +10 -2
  561. esphome/components/spi/spi.cpp +4 -4
  562. esphome/components/spi_device/spi_device.cpp +1 -2
  563. esphome/components/sprinkler/sprinkler.cpp +9 -6
  564. esphome/components/sps30/sps30.cpp +16 -15
  565. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  566. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  567. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  568. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  569. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  570. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  571. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  572. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  573. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  574. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  575. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  576. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  577. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  578. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  579. esphome/components/st7567_base/st7567_base.cpp +3 -3
  580. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  581. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  582. esphome/components/st7701s/st7701s.cpp +4 -2
  583. esphome/components/st7735/st7735.cpp +3 -3
  584. esphome/components/st7789v/st7789v.cpp +10 -7
  585. esphome/components/st7920/st7920.cpp +6 -4
  586. esphome/components/statsd/statsd.cpp +9 -5
  587. esphome/components/status_led/light/status_led_light.cpp +3 -3
  588. esphome/components/status_led/light/status_led_light.h +1 -1
  589. esphome/components/status_led/status_led.cpp +1 -1
  590. esphome/components/stepper/stepper.h +5 -3
  591. esphome/components/sts3x/sts3x.cpp +2 -2
  592. esphome/components/switch/__init__.py +1 -0
  593. esphome/components/switch/switch.cpp +18 -12
  594. esphome/components/switch/switch.h +1 -1
  595. esphome/components/sx1509/__init__.py +53 -20
  596. esphome/components/sx1509/sx1509.cpp +29 -5
  597. esphome/components/sx1509/sx1509.h +9 -1
  598. esphome/components/t6615/t6615.cpp +1 -0
  599. esphome/components/tc74/tc74.cpp +1 -1
  600. esphome/components/tca9548a/tca9548a.cpp +1 -1
  601. esphome/components/tca9555/tca9555.cpp +2 -2
  602. esphome/components/tcs34725/tcs34725.cpp +4 -4
  603. esphome/components/tee501/tee501.cpp +3 -2
  604. esphome/components/tem3200/tem3200.cpp +5 -6
  605. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  606. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +43 -12
  607. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +4 -1
  608. esphome/components/template/cover/template_cover.cpp +1 -1
  609. esphome/components/template/select/template_select.cpp +6 -4
  610. esphome/components/template/text/template_text.cpp +2 -3
  611. esphome/components/template/valve/template_valve.cpp +5 -3
  612. esphome/components/text/__init__.py +10 -11
  613. esphome/components/text/text.cpp +1 -1
  614. esphome/components/text/text.h +0 -4
  615. esphome/components/text_sensor/__init__.py +1 -0
  616. esphome/components/text_sensor/text_sensor.cpp +8 -4
  617. esphome/components/text_sensor/text_sensor.h +6 -6
  618. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  619. esphome/components/time/__init__.py +1 -2
  620. esphome/components/time_based/time_based_cover.cpp +4 -2
  621. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  622. esphome/components/tm1621/tm1621.cpp +3 -3
  623. esphome/components/tm1637/tm1637.cpp +9 -7
  624. esphome/components/tm1638/tm1638.cpp +7 -5
  625. esphome/components/tm1651/tm1651.cpp +2 -2
  626. esphome/components/tmp102/tmp102.cpp +1 -3
  627. esphome/components/tmp102/tmp102.h +0 -3
  628. esphome/components/tmp1075/tmp1075.cpp +12 -9
  629. esphome/components/tmp117/tmp117.cpp +2 -2
  630. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  631. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  632. esphome/components/tsl2561/tsl2561.cpp +7 -5
  633. esphome/components/tsl2591/tsl2591.cpp +25 -27
  634. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  635. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  636. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  637. esphome/components/tuya/select/tuya_select.cpp +5 -3
  638. esphome/components/tx20/tx20.cpp +3 -3
  639. esphome/components/uart/__init__.py +4 -5
  640. esphome/components/uart/button/uart_button.cpp +1 -1
  641. esphome/components/uart/switch/uart_switch.cpp +2 -2
  642. esphome/components/uart/uart.cpp +2 -2
  643. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  644. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  645. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  646. esphome/components/uart/uart_component_host.cpp +11 -8
  647. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  648. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  649. esphome/components/udp/udp_component.cpp +9 -5
  650. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  651. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  652. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  653. esphome/components/update/__init__.py +1 -0
  654. esphome/components/update/update_entity.cpp +1 -1
  655. esphome/components/update/update_entity.h +0 -3
  656. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  657. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  658. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  659. esphome/components/uptime/sensor/uptime_timestamp_sensor.cpp +1 -1
  660. esphome/components/usb_host/__init__.py +64 -0
  661. esphome/components/usb_host/usb_host.h +116 -0
  662. esphome/components/usb_host/usb_host_client.cpp +394 -0
  663. esphome/components/usb_host/usb_host_component.cpp +35 -0
  664. esphome/components/usb_uart/__init__.py +134 -0
  665. esphome/components/usb_uart/ch34x.cpp +80 -0
  666. esphome/components/usb_uart/cp210x.cpp +126 -0
  667. esphome/components/usb_uart/usb_uart.cpp +328 -0
  668. esphome/components/usb_uart/usb_uart.h +151 -0
  669. esphome/components/valve/__init__.py +1 -0
  670. esphome/components/veml3235/veml3235.cpp +13 -9
  671. esphome/components/veml7700/veml7700.cpp +10 -6
  672. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  673. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  674. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  675. esphome/components/web_server/server_index_v2.h +632 -630
  676. esphome/components/web_server/server_index_v3.h +411 -409
  677. esphome/components/web_server/web_server.cpp +5 -3
  678. esphome/components/web_server_base/web_server_base.cpp +1 -1
  679. esphome/components/web_server_idf/__init__.py +0 -2
  680. esphome/components/web_server_idf/utils.cpp +1 -1
  681. esphome/components/web_server_idf/web_server_idf.cpp +7 -3
  682. esphome/components/web_server_idf/web_server_idf.h +7 -0
  683. esphome/components/weikai/__init__.py +2 -0
  684. esphome/components/weikai/weikai.cpp +24 -22
  685. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  686. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  687. esphome/components/wiegand/wiegand.cpp +1 -1
  688. esphome/components/wifi/wifi_component.cpp +50 -37
  689. esphome/components/wifi/wifi_component.h +7 -4
  690. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  691. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  692. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  693. esphome/components/wireguard/wireguard.cpp +21 -21
  694. esphome/components/wl_134/text_sensor.py +1 -2
  695. esphome/components/wled/wled_light_effect.cpp +1 -1
  696. esphome/components/x9c/x9c.cpp +5 -3
  697. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  698. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  699. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  700. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  701. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  702. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  703. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  704. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  705. esphome/components/xl9535/xl9535.cpp +2 -2
  706. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  707. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  708. esphome/config.py +3 -2
  709. esphome/config_validation.py +46 -17
  710. esphome/const.py +10 -1
  711. esphome/core/__init__.py +37 -18
  712. esphome/core/application.cpp +197 -8
  713. esphome/core/application.h +116 -6
  714. esphome/core/component.cpp +36 -15
  715. esphome/core/component.h +43 -13
  716. esphome/core/config.py +12 -0
  717. esphome/core/defines.h +10 -2
  718. esphome/core/entity_base.cpp +4 -16
  719. esphome/core/entity_base.h +27 -13
  720. esphome/core/helpers.cpp +1 -1
  721. esphome/core/helpers.h +5 -5
  722. esphome/core/log.h +2 -0
  723. esphome/core/log_const_en.h +4 -0
  724. esphome/core/scheduler.cpp +2 -2
  725. esphome/coroutine.py +3 -4
  726. esphome/cpp_generator.py +32 -32
  727. esphome/dashboard/core.py +2 -2
  728. esphome/dashboard/web_server.py +2 -2
  729. esphome/git.py +4 -4
  730. esphome/helpers.py +5 -6
  731. esphome/loader.py +8 -7
  732. esphome/log.py +7 -1
  733. esphome/platformio_api.py +2 -3
  734. esphome/storage_json.py +13 -5
  735. esphome/types.py +12 -13
  736. esphome/util.py +1 -2
  737. esphome/wizard.py +0 -16
  738. esphome/writer.py +5 -3
  739. esphome/yaml_util.py +6 -1
  740. esphome/zeroconf.py +1 -1
  741. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/METADATA +12 -11
  742. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/RECORD +746 -692
  743. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/WHEEL +1 -1
  744. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/entry_points.txt +0 -0
  745. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/licenses/LICENSE +0 -0
  746. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/top_level.txt +0 -0
@@ -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
 
@@ -30,7 +30,7 @@ void UpdateEntity::publish_state() {
30
30
  ESP_LOGD(TAG, " Progress: %.0f%%", this->update_info_.progress);
31
31
  }
32
32
 
33
- this->has_state_ = true;
33
+ this->set_has_state(true);
34
34
  this->state_callback_.call();
35
35
  }
36
36
 
@@ -28,8 +28,6 @@ enum UpdateState : uint8_t {
28
28
 
29
29
  class UpdateEntity : public EntityBase, public EntityBase_DeviceClass {
30
30
  public:
31
- bool has_state() const { return this->has_state_; }
32
-
33
31
  void publish_state();
34
32
 
35
33
  void perform() { this->perform(false); }
@@ -44,7 +42,6 @@ class UpdateEntity : public EntityBase, public EntityBase_DeviceClass {
44
42
  protected:
45
43
  UpdateState state_{UPDATE_STATE_UNKNOWN};
46
44
  UpdateInfo update_info_;
47
- bool has_state_{false};
48
45
 
49
46
  CallbackManager<void()> state_callback_{};
50
47
  };
@@ -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 {
@@ -7,8 +7,10 @@ namespace uponor_smatrix {
7
7
  static const char *const TAG = "uponor_smatrix.sensor";
8
8
 
9
9
  void UponorSmatrixSensor::dump_config() {
10
- ESP_LOGCONFIG(TAG, "Uponor Smatrix Sensor");
11
- ESP_LOGCONFIG(TAG, " Device address: 0x%04X", this->address_);
10
+ ESP_LOGCONFIG(TAG,
11
+ "Uponor Smatrix Sensor\n"
12
+ " Device address: 0x%04X",
13
+ this->address_);
12
14
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
13
15
  LOG_SENSOR(" ", "External Temperature", this->external_temperature_sensor_);
14
16
  LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
@@ -1,6 +1,7 @@
1
1
  #include "uponor_smatrix.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/application.h"
3
+ #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
4
5
 
5
6
  namespace esphome {
6
7
  namespace uponor_smatrix {
@@ -13,7 +13,7 @@ static const char *const TAG = "uptime.sensor";
13
13
 
14
14
  void UptimeTimestampSensor::setup() {
15
15
  this->time_->add_on_time_sync_callback([this]() {
16
- if (this->has_state_)
16
+ if (this->has_state())
17
17
  return; // No need to update the timestamp if it's already set
18
18
 
19
19
  auto now = this->time_->now();
@@ -0,0 +1,64 @@
1
+ import esphome.codegen as cg
2
+ from esphome.components.esp32 import (
3
+ VARIANT_ESP32S2,
4
+ VARIANT_ESP32S3,
5
+ add_idf_sdkconfig_option,
6
+ only_on_variant,
7
+ )
8
+ import esphome.config_validation as cv
9
+ from esphome.const import CONF_ID
10
+ from esphome.cpp_types import Component
11
+
12
+ AUTO_LOAD = ["bytebuffer"]
13
+ CODEOWNERS = ["@clydebarrow"]
14
+ DEPENDENCIES = ["esp32"]
15
+ usb_host_ns = cg.esphome_ns.namespace("usb_host")
16
+ USBHost = usb_host_ns.class_("USBHost", Component)
17
+ USBClient = usb_host_ns.class_("USBClient", Component)
18
+
19
+ CONF_DEVICES = "devices"
20
+ CONF_VID = "vid"
21
+ CONF_PID = "pid"
22
+
23
+
24
+ def usb_device_schema(cls=USBClient, vid: int = None, pid: [int] = None) -> cv.Schema:
25
+ schema = cv.COMPONENT_SCHEMA.extend(
26
+ {
27
+ cv.GenerateID(): cv.declare_id(cls),
28
+ }
29
+ )
30
+ if vid:
31
+ schema = schema.extend({cv.Optional(CONF_VID, default=vid): cv.hex_uint16_t})
32
+ else:
33
+ schema = schema.extend({cv.Required(CONF_VID): cv.hex_uint16_t})
34
+ if pid:
35
+ schema = schema.extend({cv.Optional(CONF_PID, default=pid): cv.hex_uint16_t})
36
+ else:
37
+ schema = schema.extend({cv.Required(CONF_PID): cv.hex_uint16_t})
38
+ return schema
39
+
40
+
41
+ CONFIG_SCHEMA = cv.All(
42
+ cv.COMPONENT_SCHEMA.extend(
43
+ {
44
+ cv.GenerateID(): cv.declare_id(USBHost),
45
+ cv.Optional(CONF_DEVICES): cv.ensure_list(usb_device_schema()),
46
+ }
47
+ ),
48
+ cv.only_with_esp_idf,
49
+ only_on_variant(supported=[VARIANT_ESP32S2, VARIANT_ESP32S3]),
50
+ )
51
+
52
+
53
+ async def register_usb_client(config):
54
+ var = cg.new_Pvariable(config[CONF_ID], config[CONF_VID], config[CONF_PID])
55
+ await cg.register_component(var, config)
56
+ return var
57
+
58
+
59
+ async def to_code(config):
60
+ add_idf_sdkconfig_option("CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE", 1024)
61
+ var = cg.new_Pvariable(config[CONF_ID])
62
+ await cg.register_component(var, config)
63
+ for device in config.get(CONF_DEVICES) or ():
64
+ await register_usb_client(device)