esphome 2025.5.1__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 (720) 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 -5
  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/gpio.cpp +10 -1
  181. esphome/components/esp8266/preferences.cpp +6 -6
  182. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  183. esphome/components/esp_ldo/__init__.py +91 -0
  184. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  185. esphome/components/esp_ldo/esp_ldo.h +43 -0
  186. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  187. esphome/components/ethernet/ethernet_component.cpp +38 -26
  188. esphome/components/ethernet/ethernet_component.h +1 -1
  189. esphome/components/event/__init__.py +1 -0
  190. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  191. esphome/components/ezo/ezo.cpp +1 -1
  192. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  193. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  194. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  195. esphome/components/fan/__init__.py +1 -0
  196. esphome/components/fan/fan.cpp +4 -2
  197. esphome/components/fastled_base/fastled_light.cpp +7 -5
  198. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  199. esphome/components/fs3000/fs3000.cpp +1 -1
  200. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  201. esphome/components/ft63x6/ft63x6.cpp +5 -3
  202. esphome/components/gcja5/gcja5.cpp +0 -12
  203. esphome/components/gcja5/gcja5.h +8 -3
  204. esphome/components/gdk101/gdk101.cpp +2 -2
  205. esphome/components/globals/globals_component.h +13 -10
  206. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  207. esphome/components/gp8403/gp8403.cpp +4 -2
  208. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  209. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  210. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  211. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  212. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  213. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  214. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  215. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  216. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  217. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  218. esphome/components/haier/haier_base.cpp +2 -2
  219. esphome/components/haier/hon_climate.cpp +13 -6
  220. esphome/components/havells_solar/havells_solar.cpp +5 -2
  221. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  222. esphome/components/hdc1080/hdc1080.cpp +2 -2
  223. esphome/components/he60r/he60r.cpp +4 -2
  224. esphome/components/hlw8012/hlw8012.cpp +6 -4
  225. esphome/components/hm3301/hm3301.cpp +2 -2
  226. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  227. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  228. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  229. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  230. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  231. esphome/components/hte501/hte501.cpp +3 -2
  232. esphome/components/http_request/__init__.py +2 -2
  233. esphome/components/http_request/http_request.cpp +7 -5
  234. esphome/components/http_request/http_request_idf.cpp +4 -2
  235. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  236. esphome/components/htu21d/htu21d.cpp +2 -2
  237. esphome/components/htu31d/htu31d.cpp +2 -2
  238. esphome/components/hx711/hx711.cpp +2 -2
  239. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  240. esphome/components/hyt271/hyt271.cpp +2 -2
  241. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  242. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  243. esphome/components/i2s_audio/__init__.py +2 -0
  244. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  245. esphome/components/i2s_audio/i2s_audio.h +1 -1
  246. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  247. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  248. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +54 -64
  249. esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -0
  250. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
  251. esphome/components/iaqcore/iaqcore.cpp +3 -3
  252. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  253. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  254. esphome/components/image/image.cpp +1 -0
  255. esphome/components/ina219/ina219.cpp +2 -2
  256. esphome/components/ina226/ina226.cpp +8 -5
  257. esphome/components/ina260/ina260.cpp +1 -1
  258. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  259. esphome/components/ina3221/ina3221.cpp +2 -2
  260. esphome/components/inkplate6/display.py +12 -2
  261. esphome/components/inkplate6/inkplate.cpp +13 -9
  262. esphome/components/inkplate6/inkplate.h +7 -6
  263. esphome/components/integration/integration_sensor.cpp +1 -1
  264. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  265. esphome/components/json/json_util.cpp +4 -5
  266. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  267. esphome/components/key_collector/key_collector.cpp +4 -2
  268. esphome/components/kmeteriso/kmeteriso.cpp +2 -1
  269. esphome/components/kuntze/kuntze.cpp +4 -2
  270. esphome/components/lc709203f/__init__.py +1 -0
  271. esphome/components/lc709203f/lc709203f.cpp +299 -0
  272. esphome/components/lc709203f/lc709203f.h +55 -0
  273. esphome/components/lc709203f/sensor.py +93 -0
  274. esphome/components/lcd_base/lcd_display.cpp +2 -2
  275. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  276. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  277. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  278. esphome/components/ld2410/ld2410.cpp +6 -7
  279. esphome/components/ld2420/ld2420.cpp +9 -7
  280. esphome/components/ld2450/ld2450.cpp +6 -4
  281. esphome/components/ld2450/sensor.py +2 -2
  282. esphome/components/ledc/ledc_output.cpp +32 -28
  283. esphome/components/libretiny/const.py +1 -1
  284. esphome/components/libretiny/preferences.cpp +6 -7
  285. esphome/components/light/__init__.py +2 -1
  286. esphome/components/light/esp_hsv_color.h +1 -1
  287. esphome/components/light/light_state.cpp +9 -5
  288. esphome/components/light/light_transformer.h +1 -1
  289. esphome/components/lightwaverf/LwTx.cpp +1 -1
  290. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  291. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  292. esphome/components/lock/__init__.py +1 -0
  293. esphome/components/lock/lock.h +1 -1
  294. esphome/components/logger/__init__.py +6 -0
  295. esphome/components/logger/logger.cpp +9 -5
  296. esphome/components/logger/logger.h +4 -4
  297. esphome/components/logger/logger_esp32.cpp +5 -5
  298. esphome/components/ltr390/ltr390.cpp +8 -5
  299. esphome/components/ltr501/ltr501.cpp +19 -14
  300. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  301. esphome/components/lvgl/__init__.py +2 -2
  302. esphome/components/lvgl/automation.py +5 -4
  303. esphome/components/lvgl/defines.py +0 -2
  304. esphome/components/lvgl/lv_validation.py +1 -3
  305. esphome/components/lvgl/lvcode.py +7 -8
  306. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  307. esphome/components/lvgl/schemas.py +22 -23
  308. esphome/components/lvgl/trigger.py +8 -3
  309. esphome/components/lvgl/widgets/__init__.py +2 -2
  310. esphome/components/lvgl/widgets/canvas.py +9 -3
  311. esphome/components/lvgl/widgets/line.py +2 -1
  312. esphome/components/lvgl/widgets/tabview.py +7 -0
  313. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  314. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  315. esphome/components/max17043/max17043.cpp +2 -2
  316. esphome/components/max31855/max31855.cpp +2 -1
  317. esphome/components/max31856/max31856.cpp +9 -11
  318. esphome/components/max31865/max31865.cpp +6 -4
  319. esphome/components/max44009/max44009.cpp +2 -2
  320. esphome/components/max6675/max6675.cpp +1 -1
  321. esphome/components/max6956/max6956.cpp +5 -3
  322. esphome/components/max7219/max7219.cpp +8 -6
  323. esphome/components/max7219digit/automation.h +52 -0
  324. esphome/components/max7219digit/display.py +93 -1
  325. esphome/components/max7219digit/max7219digit.cpp +16 -13
  326. esphome/components/max9611/max9611.cpp +9 -6
  327. esphome/components/mcp23008/mcp23008.cpp +1 -1
  328. esphome/components/mcp23016/mcp23016.cpp +1 -1
  329. esphome/components/mcp23017/mcp23017.cpp +1 -1
  330. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  331. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  332. esphome/components/mcp3008/mcp3008.cpp +1 -1
  333. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  334. esphome/components/mcp3204/mcp3204.cpp +1 -1
  335. esphome/components/mcp4461/mcp4461.cpp +2 -2
  336. esphome/components/mcp4725/mcp4725.cpp +2 -2
  337. esphome/components/mcp4728/mcp4728.cpp +2 -2
  338. esphome/components/mcp9600/mcp9600.cpp +1 -1
  339. esphome/components/mcp9808/mcp9808.cpp +4 -4
  340. esphome/components/mdns/mdns_component.cpp +8 -2
  341. esphome/components/mdns/mdns_component.h +3 -1
  342. esphome/components/mdns/mdns_esp32.cpp +2 -2
  343. esphome/components/media_player/__init__.py +1 -0
  344. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  345. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  346. esphome/components/micronova/micronova.h +2 -2
  347. esphome/components/mics_4514/mics_4514.cpp +2 -2
  348. esphome/components/midea/air_conditioner.cpp +7 -5
  349. esphome/components/midea_ir/midea_ir.cpp +1 -1
  350. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  351. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  352. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  353. esphome/components/mlx90614/mlx90614.cpp +4 -3
  354. esphome/components/mmc5603/mmc5603.cpp +2 -2
  355. esphome/components/mmc5983/mmc5983.cpp +1 -1
  356. esphome/components/modbus/modbus.cpp +7 -5
  357. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  358. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  359. esphome/components/modbus_controller/switch/__init__.py +6 -2
  360. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  361. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  362. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  363. esphome/components/mpr121/mpr121.cpp +2 -2
  364. esphome/components/mpu6050/mpu6050.cpp +6 -6
  365. esphome/components/mpu6886/mpu6886.cpp +6 -6
  366. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  367. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  368. esphome/components/mqtt/mqtt_client.cpp +31 -24
  369. esphome/components/mqtt/mqtt_component.cpp +2 -2
  370. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  371. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  372. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  373. esphome/components/ms5611/ms5611.cpp +2 -2
  374. esphome/components/ms8607/ms8607.cpp +2 -2
  375. esphome/components/msa3xx/msa3xx.cpp +16 -12
  376. esphome/components/my9231/my9231.cpp +7 -5
  377. esphome/components/nau7802/nau7802.cpp +6 -4
  378. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  379. esphome/components/network/ip_address.h +1 -1
  380. esphome/components/network/util.cpp +13 -0
  381. esphome/components/nextion/base_component.py +2 -0
  382. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +2 -3
  383. esphome/components/nextion/display.py +34 -22
  384. esphome/components/nextion/nextion.cpp +182 -143
  385. esphome/components/nextion/nextion.h +36 -0
  386. esphome/components/nextion/nextion_commands.cpp +3 -3
  387. esphome/components/nextion/nextion_upload_arduino.cpp +58 -61
  388. esphome/components/nextion/nextion_upload_idf.cpp +69 -72
  389. esphome/components/nextion/sensor/nextion_sensor.cpp +4 -4
  390. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  391. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +2 -2
  392. esphome/components/nfc/nci_message.h +1 -1
  393. esphome/components/nfc/ndef_record.h +1 -1
  394. esphome/components/nfc/ndef_record_text.h +1 -1
  395. esphome/components/nfc/ndef_record_uri.h +1 -1
  396. esphome/components/nfc/nfc.h +1 -1
  397. esphome/components/nfc/nfc_tag.h +1 -1
  398. esphome/components/noblex/noblex.cpp +1 -1
  399. esphome/components/npi19/npi19.cpp +5 -7
  400. esphome/components/number/__init__.py +11 -0
  401. esphome/components/online_image/__init__.py +13 -1
  402. esphome/components/online_image/online_image.cpp +26 -4
  403. esphome/components/online_image/online_image.h +21 -4
  404. esphome/components/opentherm/generate.py +3 -3
  405. esphome/components/opentherm/hub.cpp +11 -7
  406. esphome/components/opentherm/number/number.cpp +5 -3
  407. esphome/components/opentherm/opentherm.h +1 -1
  408. esphome/components/opentherm/schema.py +13 -13
  409. esphome/components/opentherm/validate.py +1 -1
  410. esphome/components/openthread/__init__.py +146 -0
  411. esphome/components/openthread/const.py +10 -0
  412. esphome/components/openthread/openthread.cpp +206 -0
  413. esphome/components/openthread/openthread.h +68 -0
  414. esphome/components/openthread/openthread_esp.cpp +164 -0
  415. esphome/components/openthread/tlv.py +58 -0
  416. esphome/components/openthread_info/__init__.py +0 -0
  417. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  418. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  419. esphome/components/openthread_info/text_sensor.py +105 -0
  420. esphome/components/output/float_output.cpp +1 -1
  421. esphome/components/output/switch/output_switch.cpp +1 -1
  422. esphome/components/packet_transport/packet_transport.cpp +6 -4
  423. esphome/components/pca6416a/pca6416a.cpp +2 -2
  424. esphome/components/pca9554/pca9554.cpp +6 -4
  425. esphome/components/pca9685/pca9685_output.cpp +12 -8
  426. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  427. esphome/components/pcf85063/pcf85063.cpp +2 -2
  428. esphome/components/pcf8563/pcf8563.cpp +2 -2
  429. esphome/components/pcf8574/pcf8574.cpp +2 -2
  430. esphome/components/pid/pid_climate.cpp +8 -5
  431. esphome/components/pid/pid_climate.h +1 -1
  432. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  433. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  434. esphome/components/pipsolar/pipsolar.cpp +3 -3
  435. esphome/components/pm1006/pm1006.cpp +3 -7
  436. esphome/components/pm1006/pm1006.h +4 -1
  437. esphome/components/pm2005/pm2005.cpp +12 -13
  438. esphome/components/pm2005/sensor.py +1 -1
  439. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  440. esphome/components/pmsx003/pmsx003.cpp +0 -4
  441. esphome/components/pmsx003/pmsx003.h +5 -2
  442. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  443. esphome/components/pmwcs3/pmwcs3.h +0 -1
  444. esphome/components/pn532/pn532.cpp +7 -7
  445. esphome/components/pn532/pn532.h +1 -1
  446. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  447. esphome/components/pn7150/pn7150.cpp +4 -4
  448. esphome/components/pn7160/pn7160.cpp +4 -4
  449. esphome/components/power_supply/power_supply.cpp +6 -4
  450. esphome/components/power_supply/power_supply.h +1 -1
  451. esphome/components/psram/__init__.py +59 -35
  452. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  453. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  454. esphome/components/pylontech/pylontech.cpp +2 -2
  455. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  456. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  457. esphome/components/pzemac/pzemac.cpp +4 -2
  458. esphome/components/pzemdc/pzemdc.cpp +4 -2
  459. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  460. esphome/components/qmp6988/qmp6988.cpp +2 -2
  461. esphome/components/qmp6988/qmp6988.h +1 -1
  462. esphome/components/qr_code/qr_code.cpp +5 -3
  463. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  464. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  465. esphome/components/rc522/rc522.cpp +5 -5
  466. esphome/components/rdm6300/rdm6300.cpp +1 -0
  467. esphome/components/remote_receiver/__init__.py +10 -2
  468. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  469. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  470. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  471. esphome/components/remote_transmitter/__init__.py +10 -2
  472. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  473. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  474. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  475. esphome/components/resistance/resistance_sensor.cpp +6 -3
  476. esphome/components/restart/button/restart_button.cpp +1 -1
  477. esphome/components/restart/switch/restart_switch.cpp +1 -1
  478. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  479. esphome/components/rp2040/__init__.py +7 -0
  480. esphome/components/rp2040/core.cpp +8 -1
  481. esphome/components/rp2040/gpio.cpp +26 -9
  482. esphome/components/rp2040/preferences.cpp +3 -3
  483. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  484. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  485. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  486. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  487. esphome/components/rtttl/rtttl.cpp +11 -9
  488. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  489. esphome/components/safe_mode/safe_mode.cpp +9 -8
  490. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  491. esphome/components/scd30/scd30.cpp +11 -8
  492. esphome/components/scd4x/scd4x.cpp +12 -8
  493. esphome/components/sdl/display.py +40 -0
  494. esphome/components/sdl/sdl_esphome.cpp +2 -2
  495. esphome/components/sdl/sdl_esphome.h +8 -0
  496. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  497. esphome/components/sdp3x/sdp3x.cpp +11 -11
  498. esphome/components/sds011/sds011.cpp +5 -6
  499. esphome/components/sds011/sds011.h +4 -1
  500. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  501. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  502. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  503. esphome/components/selec_meter/selec_meter.cpp +5 -2
  504. esphome/components/select/__init__.py +1 -0
  505. esphome/components/sen0321/sen0321.cpp +2 -2
  506. esphome/components/sen21231/sen21231.cpp +1 -1
  507. esphome/components/sen5x/sen5x.cpp +10 -7
  508. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  509. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  510. esphome/components/sensor/__init__.py +11 -1
  511. esphome/components/sensor/filter.h +1 -1
  512. esphome/components/sensor/sensor.h +9 -5
  513. esphome/components/servo/servo.cpp +12 -9
  514. esphome/components/servo/servo.h +1 -1
  515. esphome/components/sfa30/sfa30.cpp +1 -1
  516. esphome/components/sgp30/sgp30.cpp +10 -8
  517. esphome/components/sgp4x/sgp4x.cpp +49 -61
  518. esphome/components/sgp4x/sgp4x.h +0 -1
  519. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  520. esphome/components/sht3xd/sht3xd.cpp +1 -1
  521. esphome/components/sht4x/sht4x.cpp +2 -2
  522. esphome/components/shtcx/shtcx.cpp +13 -16
  523. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  524. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  525. esphome/components/sim800l/sim800l.cpp +2 -2
  526. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  527. esphome/components/sm16716/sm16716.cpp +1 -1
  528. esphome/components/sm2135/sm2135.cpp +1 -1
  529. esphome/components/sm2235/sm2235.cpp +5 -3
  530. esphome/components/sm2335/sm2335.cpp +5 -3
  531. esphome/components/sml/sml.cpp +1 -1
  532. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  533. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  534. esphome/components/sntp/sntp_component.cpp +1 -1
  535. esphome/components/socket/__init__.py +2 -0
  536. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  537. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  538. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  539. esphome/components/socket/socket.cpp +31 -0
  540. esphome/components/socket/socket.h +27 -1
  541. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  542. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  543. esphome/components/sound_level/sound_level.cpp +4 -2
  544. esphome/components/speaker/media_player/__init__.py +3 -0
  545. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  546. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  547. esphome/components/spi/__init__.py +10 -2
  548. esphome/components/spi/spi.cpp +4 -4
  549. esphome/components/spi_device/spi_device.cpp +1 -2
  550. esphome/components/sprinkler/sprinkler.cpp +9 -6
  551. esphome/components/sps30/sps30.cpp +16 -15
  552. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  553. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  554. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  555. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  556. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  557. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  558. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  559. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  560. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  561. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  562. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  563. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  564. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  565. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  566. esphome/components/st7567_base/st7567_base.cpp +3 -3
  567. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  568. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  569. esphome/components/st7701s/st7701s.cpp +4 -2
  570. esphome/components/st7735/st7735.cpp +3 -3
  571. esphome/components/st7789v/st7789v.cpp +10 -7
  572. esphome/components/st7920/st7920.cpp +6 -4
  573. esphome/components/statsd/statsd.cpp +9 -5
  574. esphome/components/status_led/light/status_led_light.cpp +1 -1
  575. esphome/components/status_led/status_led.cpp +1 -1
  576. esphome/components/stepper/stepper.h +5 -3
  577. esphome/components/sts3x/sts3x.cpp +2 -2
  578. esphome/components/switch/__init__.py +1 -0
  579. esphome/components/switch/switch.cpp +18 -12
  580. esphome/components/switch/switch.h +1 -1
  581. esphome/components/sx1509/__init__.py +53 -20
  582. esphome/components/sx1509/sx1509.cpp +29 -5
  583. esphome/components/sx1509/sx1509.h +9 -1
  584. esphome/components/t6615/t6615.cpp +1 -0
  585. esphome/components/tc74/tc74.cpp +1 -1
  586. esphome/components/tca9548a/tca9548a.cpp +1 -1
  587. esphome/components/tca9555/tca9555.cpp +2 -2
  588. esphome/components/tcs34725/tcs34725.cpp +4 -4
  589. esphome/components/tee501/tee501.cpp +3 -2
  590. esphome/components/tem3200/tem3200.cpp +5 -6
  591. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  592. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +38 -12
  593. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +3 -1
  594. esphome/components/template/cover/template_cover.cpp +1 -1
  595. esphome/components/template/select/template_select.cpp +6 -4
  596. esphome/components/template/text/template_text.cpp +2 -3
  597. esphome/components/template/valve/template_valve.cpp +5 -3
  598. esphome/components/text/__init__.py +10 -11
  599. esphome/components/text_sensor/__init__.py +1 -0
  600. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  601. esphome/components/time/__init__.py +1 -2
  602. esphome/components/time_based/time_based_cover.cpp +4 -2
  603. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  604. esphome/components/tm1621/tm1621.cpp +3 -3
  605. esphome/components/tm1637/tm1637.cpp +9 -7
  606. esphome/components/tm1638/tm1638.cpp +7 -5
  607. esphome/components/tm1651/tm1651.cpp +2 -2
  608. esphome/components/tmp102/tmp102.cpp +1 -3
  609. esphome/components/tmp102/tmp102.h +0 -3
  610. esphome/components/tmp1075/tmp1075.cpp +12 -9
  611. esphome/components/tmp117/tmp117.cpp +2 -2
  612. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  613. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  614. esphome/components/tsl2561/tsl2561.cpp +7 -5
  615. esphome/components/tsl2591/tsl2591.cpp +25 -27
  616. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  617. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  618. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  619. esphome/components/tuya/select/tuya_select.cpp +5 -3
  620. esphome/components/tx20/tx20.cpp +3 -3
  621. esphome/components/uart/__init__.py +4 -5
  622. esphome/components/uart/button/uart_button.cpp +1 -1
  623. esphome/components/uart/switch/uart_switch.cpp +2 -2
  624. esphome/components/uart/uart.cpp +2 -2
  625. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  626. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  627. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  628. esphome/components/uart/uart_component_host.cpp +11 -8
  629. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  630. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  631. esphome/components/udp/udp_component.cpp +9 -5
  632. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  633. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  634. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  635. esphome/components/update/__init__.py +1 -0
  636. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  637. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  638. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  639. esphome/components/usb_host/__init__.py +64 -0
  640. esphome/components/usb_host/usb_host.h +116 -0
  641. esphome/components/usb_host/usb_host_client.cpp +394 -0
  642. esphome/components/usb_host/usb_host_component.cpp +35 -0
  643. esphome/components/usb_uart/__init__.py +134 -0
  644. esphome/components/usb_uart/ch34x.cpp +80 -0
  645. esphome/components/usb_uart/cp210x.cpp +126 -0
  646. esphome/components/usb_uart/usb_uart.cpp +328 -0
  647. esphome/components/usb_uart/usb_uart.h +151 -0
  648. esphome/components/valve/__init__.py +1 -0
  649. esphome/components/veml3235/veml3235.cpp +13 -9
  650. esphome/components/veml7700/veml7700.cpp +10 -6
  651. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  652. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  653. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  654. esphome/components/web_server/server_index_v2.h +632 -630
  655. esphome/components/web_server/server_index_v3.h +411 -409
  656. esphome/components/web_server/web_server.cpp +5 -3
  657. esphome/components/web_server_base/web_server_base.cpp +1 -1
  658. esphome/components/web_server_idf/utils.cpp +1 -1
  659. esphome/components/web_server_idf/web_server_idf.cpp +1 -1
  660. esphome/components/weikai/__init__.py +2 -0
  661. esphome/components/weikai/weikai.cpp +23 -21
  662. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  663. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  664. esphome/components/wiegand/wiegand.cpp +1 -1
  665. esphome/components/wifi/wifi_component.cpp +50 -37
  666. esphome/components/wifi/wifi_component.h +7 -4
  667. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  668. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  669. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  670. esphome/components/wireguard/wireguard.cpp +21 -21
  671. esphome/components/wl_134/text_sensor.py +1 -2
  672. esphome/components/wled/wled_light_effect.cpp +1 -1
  673. esphome/components/x9c/x9c.cpp +5 -3
  674. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  675. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  676. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  677. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  678. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  679. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  680. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  681. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  682. esphome/components/xl9535/xl9535.cpp +2 -2
  683. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  684. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  685. esphome/config.py +3 -2
  686. esphome/config_validation.py +46 -17
  687. esphome/const.py +10 -1
  688. esphome/core/__init__.py +37 -18
  689. esphome/core/application.cpp +188 -5
  690. esphome/core/application.h +110 -0
  691. esphome/core/component.h +13 -0
  692. esphome/core/config.py +12 -0
  693. esphome/core/defines.h +10 -2
  694. esphome/core/hal.h +5 -0
  695. esphome/core/helpers.cpp +1 -1
  696. esphome/core/helpers.h +4 -4
  697. esphome/core/log.h +2 -0
  698. esphome/core/log_const_en.h +4 -0
  699. esphome/core/scheduler.cpp +2 -2
  700. esphome/coroutine.py +3 -4
  701. esphome/cpp_generator.py +32 -32
  702. esphome/dashboard/core.py +2 -2
  703. esphome/dashboard/web_server.py +2 -2
  704. esphome/git.py +4 -4
  705. esphome/helpers.py +5 -6
  706. esphome/loader.py +8 -7
  707. esphome/log.py +7 -1
  708. esphome/platformio_api.py +2 -3
  709. esphome/storage_json.py +13 -5
  710. esphome/types.py +12 -13
  711. esphome/util.py +1 -2
  712. esphome/writer.py +5 -3
  713. esphome/yaml_util.py +6 -1
  714. esphome/zeroconf.py +1 -1
  715. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
  716. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +720 -667
  717. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
  718. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
  719. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
  720. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -24,7 +24,7 @@ static const uint8_t QMC5883L_REGISTER_CONTROL_2 = 0x0A;
24
24
  static const uint8_t QMC5883L_REGISTER_PERIOD = 0x0B;
25
25
 
26
26
  void QMC5883LComponent::setup() {
27
- ESP_LOGCONFIG(TAG, "Setting up QMC5883L...");
27
+ ESP_LOGCONFIG(TAG, "Running setup");
28
28
  // Soft Reset
29
29
  if (!this->write_byte(QMC5883L_REGISTER_CONTROL_2, 1 << 7)) {
30
30
  this->error_code_ = COMMUNICATION_FAILED;
@@ -69,7 +69,7 @@ void QMC5883LComponent::dump_config() {
69
69
  ESP_LOGCONFIG(TAG, "QMC5883L:");
70
70
  LOG_I2C_DEVICE(this);
71
71
  if (this->error_code_ == COMMUNICATION_FAILED) {
72
- ESP_LOGE(TAG, "Communication with QMC5883L failed!");
72
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
73
73
  }
74
74
  LOG_UPDATE_INTERVAL(this);
75
75
 
@@ -348,7 +348,7 @@ void QMP6988Component::calculate_pressure_() {
348
348
  }
349
349
 
350
350
  void QMP6988Component::setup() {
351
- ESP_LOGCONFIG(TAG, "Setting up QMP6988");
351
+ ESP_LOGCONFIG(TAG, "Running setup");
352
352
 
353
353
  bool ret;
354
354
  ret = this->device_check_();
@@ -368,7 +368,7 @@ void QMP6988Component::dump_config() {
368
368
  ESP_LOGCONFIG(TAG, "QMP6988:");
369
369
  LOG_I2C_DEVICE(this);
370
370
  if (this->is_failed()) {
371
- ESP_LOGE(TAG, "Communication with QMP6988 failed!");
371
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
372
372
  }
373
373
  LOG_UPDATE_INTERVAL(this);
374
374
 
@@ -1,9 +1,9 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/component.h"
5
4
  #include "esphome/core/hal.h"
6
5
  #include "esphome/core/helpers.h"
6
+ #include "esphome/core/log.h"
7
7
  #include "esphome/components/sensor/sensor.h"
8
8
  #include "esphome/components/i2c/i2c.h"
9
9
 
@@ -9,8 +9,10 @@ namespace qr_code {
9
9
  static const char *const TAG = "qr_code";
10
10
 
11
11
  void QrCode::dump_config() {
12
- ESP_LOGCONFIG(TAG, "QR code:");
13
- ESP_LOGCONFIG(TAG, " Value: '%s'", this->value_.c_str());
12
+ ESP_LOGCONFIG(TAG,
13
+ "QR code:\n"
14
+ " Value: '%s'",
15
+ this->value_.c_str());
14
16
  }
15
17
 
16
18
  void QrCode::set_value(const std::string &value) {
@@ -24,7 +26,7 @@ void QrCode::set_ecc(qrcodegen_Ecc ecc) {
24
26
  }
25
27
 
26
28
  void QrCode::generate_qr_code() {
27
- ESP_LOGV(TAG, "Generating QR code...");
29
+ ESP_LOGV(TAG, "Generating QR code");
28
30
  uint8_t tempbuffer[qrcodegen_BUFFER_LEN_MAX];
29
31
 
30
32
  if (!qrcodegen_encodeText(this->value_.c_str(), tempbuffer, this->qr_, this->ecc_, qrcodegen_VERSION_MIN,
@@ -6,7 +6,7 @@ namespace esphome {
6
6
  namespace qspi_dbi {
7
7
 
8
8
  void QspiDbi::setup() {
9
- ESP_LOGCONFIG(TAG, "Setting up QSPI_DBI");
9
+ ESP_LOGCONFIG(TAG, "Running setup");
10
10
  this->spi_setup();
11
11
  if (this->enable_pin_ != nullptr) {
12
12
  this->enable_pin_->setup();
@@ -7,35 +7,28 @@ namespace qwiic_pir {
7
7
  static const char *const TAG = "qwiic_pir";
8
8
 
9
9
  void QwiicPIRComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up Qwiic PIR...");
10
+ ESP_LOGCONFIG(TAG, "Running setup");
11
11
 
12
12
  // Verify I2C communcation by reading and verifying the chip ID
13
13
  uint8_t chip_id;
14
-
15
14
  if (!this->read_byte(QWIIC_PIR_CHIP_ID, &chip_id)) {
16
- ESP_LOGE(TAG, "Failed to read the chip's ID");
17
-
15
+ ESP_LOGE(TAG, "Failed to read chip ID");
18
16
  this->error_code_ = ERROR_COMMUNICATION_FAILED;
19
17
  this->mark_failed();
20
-
21
18
  return;
22
19
  }
23
20
 
24
21
  if (chip_id != QWIIC_PIR_DEVICE_ID) {
25
- ESP_LOGE(TAG, "Unknown chip ID, is this a Qwiic PIR?");
26
-
22
+ ESP_LOGE(TAG, "Unknown chip ID");
27
23
  this->error_code_ = ERROR_WRONG_CHIP_ID;
28
24
  this->mark_failed();
29
-
30
25
  return;
31
26
  }
32
27
 
33
28
  if (!this->write_byte_16(QWIIC_PIR_DEBOUNCE_TIME, this->debounce_time_)) {
34
- ESP_LOGE(TAG, "Failed to configure debounce time.");
35
-
29
+ ESP_LOGE(TAG, "Failed to configure debounce time");
36
30
  this->error_code_ = ERROR_COMMUNICATION_FAILED;
37
31
  this->mark_failed();
38
-
39
32
  return;
40
33
  }
41
34
 
@@ -43,11 +36,9 @@ void QwiicPIRComponent::setup() {
43
36
  // Publish the starting raw state of the PIR sensor
44
37
  // If NATIVE mode, the binary_sensor state would be unknown until a motion event
45
38
  if (!this->read_byte(QWIIC_PIR_EVENT_STATUS, &this->event_register_.reg)) {
46
- ESP_LOGE(TAG, "Failed to read initial sensor state.");
47
-
39
+ ESP_LOGE(TAG, "Failed to read initial state");
48
40
  this->error_code_ = ERROR_COMMUNICATION_FAILED;
49
41
  this->mark_failed();
50
-
51
42
  return;
52
43
  }
53
44
 
@@ -58,8 +49,7 @@ void QwiicPIRComponent::setup() {
58
49
  void QwiicPIRComponent::loop() {
59
50
  // Read Event Register
60
51
  if (!this->read_byte(QWIIC_PIR_EVENT_STATUS, &this->event_register_.reg)) {
61
- ESP_LOGW(TAG, "Failed to communicate with sensor");
62
-
52
+ ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
63
53
  return;
64
54
  }
65
55
 
@@ -98,39 +88,47 @@ void QwiicPIRComponent::loop() {
98
88
  }
99
89
 
100
90
  void QwiicPIRComponent::dump_config() {
101
- ESP_LOGCONFIG(TAG, "Qwiic PIR:");
91
+ static const char *const RAW = "RAW";
92
+ static const char *const NATIVE = "NATIVE";
93
+ static const char *const HYBRID = "HYBRID";
102
94
 
103
- if (this->debounce_mode_ == RAW_DEBOUNCE_MODE) {
104
- ESP_LOGCONFIG(TAG, " Debounce Mode: RAW");
105
- } else if (this->debounce_mode_ == NATIVE_DEBOUNCE_MODE) {
106
- ESP_LOGCONFIG(TAG, " Debounce Mode: NATIVE");
107
- ESP_LOGCONFIG(TAG, " Debounce Time: %ums", this->debounce_time_);
95
+ const char *debounce_mode_str = RAW;
96
+ if (this->debounce_mode_ == NATIVE_DEBOUNCE_MODE) {
97
+ debounce_mode_str = NATIVE;
108
98
  } else if (this->debounce_mode_ == HYBRID_DEBOUNCE_MODE) {
109
- ESP_LOGCONFIG(TAG, " Debounce Mode: HYBRID");
99
+ debounce_mode_str = HYBRID;
100
+ }
101
+
102
+ ESP_LOGCONFIG(TAG,
103
+ "Qwiic PIR:\n"
104
+ " Debounce Mode: %s",
105
+ debounce_mode_str);
106
+ if (this->debounce_mode_ == NATIVE_DEBOUNCE_MODE) {
107
+ ESP_LOGCONFIG(TAG, " Debounce Time: %ums", this->debounce_time_);
110
108
  }
111
109
 
112
110
  switch (this->error_code_) {
113
111
  case NONE:
114
112
  break;
115
113
  case ERROR_COMMUNICATION_FAILED:
116
- ESP_LOGE(TAG, " Communication with Qwiic PIR failed!");
114
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
117
115
  break;
118
116
  case ERROR_WRONG_CHIP_ID:
119
- ESP_LOGE(TAG, " Qwiic PIR has wrong chip ID - please verify you are using a Qwiic PIR");
117
+ ESP_LOGE(TAG, "Unknown chip ID");
120
118
  break;
121
119
  default:
122
- ESP_LOGE(TAG, " Qwiic PIR error code %d", (int) this->error_code_);
120
+ ESP_LOGE(TAG, "Error %d", (int) this->error_code_);
123
121
  break;
124
122
  }
125
123
 
126
124
  LOG_I2C_DEVICE(this);
127
- LOG_BINARY_SENSOR(" ", "Qwiic PIR Binary Sensor", this);
125
+ LOG_BINARY_SENSOR(" ", "Binary Sensor", this);
128
126
  }
129
127
 
130
128
  void QwiicPIRComponent::clear_events_() {
131
129
  // Clear event status register
132
130
  if (!this->write_byte(QWIIC_PIR_EVENT_STATUS, 0x00))
133
- ESP_LOGW(TAG, "Failed to clear events on sensor");
131
+ ESP_LOGW(TAG, "Failed to clear events");
134
132
  }
135
133
 
136
134
  } // namespace qwiic_pir
@@ -46,7 +46,7 @@ void RC522::setup() {
46
46
  reset_pin_->pin_mode(gpio::FLAG_INPUT);
47
47
 
48
48
  if (!reset_pin_->digital_read()) { // The MFRC522 chip is in power down mode.
49
- ESP_LOGV(TAG, "Power down mode detected. Hard resetting...");
49
+ ESP_LOGV(TAG, "Power down mode detected. Hard resetting");
50
50
  reset_pin_->pin_mode(gpio::FLAG_OUTPUT); // Now set the resetPowerDownPin as digital output.
51
51
  reset_pin_->digital_write(false); // Make sure we have a clean LOW state.
52
52
  delayMicroseconds(2); // 8.8.1 Reset timing requirements says about 100ns. Let us be generous: 2μsl
@@ -101,7 +101,7 @@ void RC522::dump_config() {
101
101
  case NONE:
102
102
  break;
103
103
  case RESET_FAILED:
104
- ESP_LOGE(TAG, "Reset command failed!");
104
+ ESP_LOGE(TAG, "Reset command failed");
105
105
  break;
106
106
  }
107
107
 
@@ -292,7 +292,7 @@ void RC522::pcd_reset_() {
292
292
  return;
293
293
 
294
294
  if (reset_count_ == RESET_COUNT) {
295
- ESP_LOGI(TAG, "Soft reset...");
295
+ ESP_LOGI(TAG, "Soft reset");
296
296
  // Issue the SoftReset command.
297
297
  pcd_write_register(COMMAND_REG, PCD_SOFT_RESET);
298
298
  }
@@ -300,14 +300,14 @@ void RC522::pcd_reset_() {
300
300
  // Expect the PowerDown bit in CommandReg to be cleared (max 3x50ms)
301
301
  if ((pcd_read_register(COMMAND_REG) & (1 << 4)) == 0) {
302
302
  reset_count_ = 0;
303
- ESP_LOGI(TAG, "Device online.");
303
+ ESP_LOGI(TAG, "Device online");
304
304
  // Wait for initialize
305
305
  reset_timeout_ = millis();
306
306
  return;
307
307
  }
308
308
 
309
309
  if (--reset_count_ == 0) {
310
- ESP_LOGE(TAG, "Unable to reset RC522.");
310
+ ESP_LOGE(TAG, "Unable to reset");
311
311
  this->error_code_ = RESET_FAILED;
312
312
  mark_failed();
313
313
  }
@@ -1,4 +1,5 @@
1
1
  #include "rdm6300.h"
2
+ #include "esphome/core/helpers.h"
2
3
  #include "esphome/core/log.h"
3
4
 
4
5
  namespace esphome {
@@ -1,6 +1,6 @@
1
1
  from esphome import pins
2
2
  import esphome.codegen as cg
3
- from esphome.components import esp32_rmt, remote_base
3
+ from esphome.components import esp32, esp32_rmt, remote_base
4
4
  import esphome.config_validation as cv
5
5
  from esphome.const import (
6
6
  CONF_BUFFER_SIZE,
@@ -128,7 +128,9 @@ CONFIG_SCHEMA = remote_base.validate_triggers(
128
128
  esp32_idf=192,
129
129
  esp32_s2_idf=192,
130
130
  esp32_s3_idf=192,
131
+ esp32_p4_idf=192,
131
132
  esp32_c3_idf=96,
133
+ esp32_c5_idf=96,
132
134
  esp32_c6_idf=96,
133
135
  esp32_h2_idf=96,
134
136
  ): cv.All(cv.only_with_esp_idf, cv.int_range(min=2)),
@@ -139,7 +141,13 @@ CONFIG_SCHEMA = remote_base.validate_triggers(
139
141
  CONF_RECEIVE_SYMBOLS,
140
142
  esp32_idf=192,
141
143
  ): cv.All(cv.only_with_esp_idf, cv.int_range(min=2)),
142
- cv.Optional(CONF_USE_DMA): cv.All(cv.only_with_esp_idf, cv.boolean),
144
+ cv.Optional(CONF_USE_DMA): cv.All(
145
+ esp32.only_on_variant(
146
+ supported=[esp32.const.VARIANT_ESP32S3, esp32.const.VARIANT_ESP32P4]
147
+ ),
148
+ cv.only_with_esp_idf,
149
+ cv.boolean,
150
+ ),
143
151
  }
144
152
  ).extend(cv.COMPONENT_SCHEMA)
145
153
  )
@@ -40,7 +40,7 @@ static bool IRAM_ATTR HOT rmt_callback(rmt_channel_handle_t channel, const rmt_r
40
40
  #endif
41
41
 
42
42
  void RemoteReceiverComponent::setup() {
43
- ESP_LOGCONFIG(TAG, "Setting up Remote Receiver...");
43
+ ESP_LOGCONFIG(TAG, "Running setup");
44
44
  #if ESP_IDF_VERSION_MAJOR >= 5
45
45
  rmt_rx_channel_config_t channel;
46
46
  memset(&channel, 0, sizeof(channel));
@@ -161,23 +161,33 @@ void RemoteReceiverComponent::dump_config() {
161
161
  ESP_LOGCONFIG(TAG, "Remote Receiver:");
162
162
  LOG_PIN(" Pin: ", this->pin_);
163
163
  #if ESP_IDF_VERSION_MAJOR >= 5
164
- ESP_LOGCONFIG(TAG, " Clock resolution: %" PRIu32 " hz", this->clock_resolution_);
165
- ESP_LOGCONFIG(TAG, " RMT symbols: %" PRIu32, this->rmt_symbols_);
166
- ESP_LOGCONFIG(TAG, " Filter symbols: %" PRIu32, this->filter_symbols_);
167
- ESP_LOGCONFIG(TAG, " Receive symbols: %" PRIu32, this->receive_symbols_);
164
+ ESP_LOGCONFIG(TAG,
165
+ " Clock resolution: %" PRIu32 " hz\n"
166
+ " RMT symbols: %" PRIu32 "\n"
167
+ " Filter symbols: %" PRIu32 "\n"
168
+ " Receive symbols: %" PRIu32 "\n"
169
+ " Tolerance: %" PRIu32 "%s\n"
170
+ " Filter out pulses shorter than: %" PRIu32 " us\n"
171
+ " Signal is done after %" PRIu32 " us of no changes",
172
+ this->clock_resolution_, this->rmt_symbols_, this->filter_symbols_, this->receive_symbols_,
173
+ this->tolerance_, (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%",
174
+ this->filter_us_, this->idle_us_);
168
175
  #else
169
176
  if (this->pin_->digital_read()) {
170
177
  ESP_LOGW(TAG, "Remote Receiver Signal starts with a HIGH value. Usually this means you have to "
171
178
  "invert the signal using 'inverted: True' in the pin schema!");
172
179
  }
173
- ESP_LOGCONFIG(TAG, " Channel: %d", this->channel_);
174
- ESP_LOGCONFIG(TAG, " RMT memory blocks: %d", this->mem_block_num_);
175
- ESP_LOGCONFIG(TAG, " Clock divider: %u", this->clock_divider_);
180
+ ESP_LOGCONFIG(TAG,
181
+ " Channel: %d\n"
182
+ " RMT memory blocks: %d\n"
183
+ " Clock divider: %u\n"
184
+ " Tolerance: %" PRIu32 "%s\n"
185
+ " Filter out pulses shorter than: %" PRIu32 " us\n"
186
+ " Signal is done after %" PRIu32 " us of no changes",
187
+ this->channel_, this->mem_block_num_, this->clock_divider_, this->tolerance_,
188
+ (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%", this->filter_us_,
189
+ this->idle_us_);
176
190
  #endif
177
- ESP_LOGCONFIG(TAG, " Tolerance: %" PRIu32 "%s", this->tolerance_,
178
- (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%");
179
- ESP_LOGCONFIG(TAG, " Filter out pulses shorter than: %" PRIu32 " us", this->filter_us_);
180
- ESP_LOGCONFIG(TAG, " Signal is done after %" PRIu32 " us of no changes", this->idle_us_);
181
191
  if (this->is_failed()) {
182
192
  ESP_LOGE(TAG, "Configuring RMT driver failed: %s (%s)", esp_err_to_name(this->error_code_),
183
193
  this->error_string_.c_str());
@@ -1,7 +1,7 @@
1
1
  #include "remote_receiver.h"
2
2
  #include "esphome/core/hal.h"
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  #ifdef USE_ESP8266
7
7
 
@@ -31,7 +31,7 @@ void IRAM_ATTR HOT RemoteReceiverComponentStore::gpio_intr(RemoteReceiverCompone
31
31
  }
32
32
 
33
33
  void RemoteReceiverComponent::setup() {
34
- ESP_LOGCONFIG(TAG, "Setting up Remote Receiver...");
34
+ ESP_LOGCONFIG(TAG, "Running setup");
35
35
  this->pin_->setup();
36
36
  auto &s = this->store_;
37
37
  s.filter_us = this->filter_us_;
@@ -63,11 +63,14 @@ void RemoteReceiverComponent::dump_config() {
63
63
  ESP_LOGW(TAG, "Remote Receiver Signal starts with a HIGH value. Usually this means you have to "
64
64
  "invert the signal using 'inverted: True' in the pin schema!");
65
65
  }
66
- ESP_LOGCONFIG(TAG, " Buffer Size: %u", this->buffer_size_);
67
- ESP_LOGCONFIG(TAG, " Tolerance: %u%s", this->tolerance_,
68
- (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%");
69
- ESP_LOGCONFIG(TAG, " Filter out pulses shorter than: %u us", this->filter_us_);
70
- ESP_LOGCONFIG(TAG, " Signal is done after %u us of no changes", this->idle_us_);
66
+ ESP_LOGCONFIG(TAG,
67
+ " Buffer Size: %u\n"
68
+ " Tolerance: %u%s\n"
69
+ " Filter out pulses shorter than: %u us\n"
70
+ " Signal is done after %u us of no changes",
71
+ this->buffer_size_, this->tolerance_,
72
+ (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%", this->filter_us_,
73
+ this->idle_us_);
71
74
  }
72
75
 
73
76
  void RemoteReceiverComponent::loop() {
@@ -1,7 +1,7 @@
1
1
  #include "remote_receiver.h"
2
2
  #include "esphome/core/hal.h"
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  #ifdef USE_LIBRETINY
7
7
 
@@ -31,7 +31,7 @@ void IRAM_ATTR HOT RemoteReceiverComponentStore::gpio_intr(RemoteReceiverCompone
31
31
  }
32
32
 
33
33
  void RemoteReceiverComponent::setup() {
34
- ESP_LOGCONFIG(TAG, "Setting up Remote Receiver...");
34
+ ESP_LOGCONFIG(TAG, "Running setup");
35
35
  this->pin_->setup();
36
36
  auto &s = this->store_;
37
37
  s.filter_us = this->filter_us_;
@@ -63,11 +63,14 @@ void RemoteReceiverComponent::dump_config() {
63
63
  ESP_LOGW(TAG, "Remote Receiver Signal starts with a HIGH value. Usually this means you have to "
64
64
  "invert the signal using 'inverted: True' in the pin schema!");
65
65
  }
66
- ESP_LOGCONFIG(TAG, " Buffer Size: %u", this->buffer_size_);
67
- ESP_LOGCONFIG(TAG, " Tolerance: %u%s", this->tolerance_,
68
- (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%");
69
- ESP_LOGCONFIG(TAG, " Filter out pulses shorter than: %u us", this->filter_us_);
70
- ESP_LOGCONFIG(TAG, " Signal is done after %u us of no changes", this->idle_us_);
66
+ ESP_LOGCONFIG(TAG,
67
+ " Buffer Size: %u\n"
68
+ " Tolerance: %u%s\n"
69
+ " Filter out pulses shorter than: %u us\n"
70
+ " Signal is done after %u us of no changes",
71
+ this->buffer_size_, this->tolerance_,
72
+ (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%", this->filter_us_,
73
+ this->idle_us_);
71
74
  }
72
75
 
73
76
  void RemoteReceiverComponent::loop() {
@@ -1,6 +1,6 @@
1
1
  from esphome import automation, pins
2
2
  import esphome.codegen as cg
3
- from esphome.components import esp32_rmt, remote_base
3
+ from esphome.components import esp32, esp32_rmt, remote_base
4
4
  import esphome.config_validation as cv
5
5
  from esphome.const import (
6
6
  CONF_CARRIER_DUTY_PERCENT,
@@ -45,13 +45,21 @@ CONFIG_SCHEMA = cv.Schema(
45
45
  cv.only_on_esp32, cv.only_with_arduino, cv.int_range(min=1, max=255)
46
46
  ),
47
47
  cv.Optional(CONF_EOT_LEVEL): cv.All(cv.only_with_esp_idf, cv.boolean),
48
- cv.Optional(CONF_USE_DMA): cv.All(cv.only_with_esp_idf, cv.boolean),
48
+ cv.Optional(CONF_USE_DMA): cv.All(
49
+ esp32.only_on_variant(
50
+ supported=[esp32.const.VARIANT_ESP32S3, esp32.const.VARIANT_ESP32P4]
51
+ ),
52
+ cv.only_with_esp_idf,
53
+ cv.boolean,
54
+ ),
49
55
  cv.SplitDefault(
50
56
  CONF_RMT_SYMBOLS,
51
57
  esp32_idf=64,
52
58
  esp32_s2_idf=64,
53
59
  esp32_s3_idf=48,
60
+ esp32_p4_idf=48,
54
61
  esp32_c3_idf=48,
62
+ esp32_c5_idf=48,
55
63
  esp32_c6_idf=48,
56
64
  esp32_h2_idf=48,
57
65
  ): cv.All(cv.only_with_esp_idf, cv.int_range(min=2)),
@@ -11,7 +11,7 @@ namespace remote_transmitter {
11
11
  static const char *const TAG = "remote_transmitter";
12
12
 
13
13
  void RemoteTransmitterComponent::setup() {
14
- ESP_LOGCONFIG(TAG, "Setting up Remote Transmitter...");
14
+ ESP_LOGCONFIG(TAG, "Running setup");
15
15
  this->inverted_ = this->pin_->is_inverted();
16
16
  this->configure_rmt_();
17
17
  }
@@ -19,12 +19,16 @@ void RemoteTransmitterComponent::setup() {
19
19
  void RemoteTransmitterComponent::dump_config() {
20
20
  ESP_LOGCONFIG(TAG, "Remote Transmitter:");
21
21
  #if ESP_IDF_VERSION_MAJOR >= 5
22
- ESP_LOGCONFIG(TAG, " Clock resolution: %" PRIu32 " hz", this->clock_resolution_);
23
- ESP_LOGCONFIG(TAG, " RMT symbols: %" PRIu32, this->rmt_symbols_);
22
+ ESP_LOGCONFIG(TAG,
23
+ " Clock resolution: %" PRIu32 " hz\n"
24
+ " RMT symbols: %" PRIu32,
25
+ this->clock_resolution_, this->rmt_symbols_);
24
26
  #else
25
- ESP_LOGCONFIG(TAG, " Channel: %d", this->channel_);
26
- ESP_LOGCONFIG(TAG, " RMT memory blocks: %d", this->mem_block_num_);
27
- ESP_LOGCONFIG(TAG, " Clock divider: %u", this->clock_divider_);
27
+ ESP_LOGCONFIG(TAG,
28
+ " Channel: %d\n"
29
+ " RMT memory blocks: %d\n"
30
+ " Clock divider: %u",
31
+ this->channel_, this->mem_block_num_, this->clock_divider_);
28
32
  #endif
29
33
  LOG_PIN(" Pin: ", this->pin_);
30
34
 
@@ -15,8 +15,10 @@ void RemoteTransmitterComponent::setup() {
15
15
  }
16
16
 
17
17
  void RemoteTransmitterComponent::dump_config() {
18
- ESP_LOGCONFIG(TAG, "Remote Transmitter...");
19
- ESP_LOGCONFIG(TAG, " Carrier Duty: %u%%", this->carrier_duty_percent_);
18
+ ESP_LOGCONFIG(TAG,
19
+ "Remote Transmitter:\n"
20
+ " Carrier Duty: %u%%",
21
+ this->carrier_duty_percent_);
20
22
  LOG_PIN(" Pin: ", this->pin_);
21
23
  }
22
24
 
@@ -72,7 +74,7 @@ void RemoteTransmitterComponent::space_(uint32_t usec) {
72
74
  }
73
75
 
74
76
  void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
75
- ESP_LOGD(TAG, "Sending remote code...");
77
+ ESP_LOGD(TAG, "Sending remote code");
76
78
  uint32_t on_time, off_time;
77
79
  this->calculate_on_off_time_(this->temp_.get_carrier_frequency(), &on_time, &off_time);
78
80
  this->target_time_ = 0;
@@ -15,8 +15,10 @@ void RemoteTransmitterComponent::setup() {
15
15
  }
16
16
 
17
17
  void RemoteTransmitterComponent::dump_config() {
18
- ESP_LOGCONFIG(TAG, "Remote Transmitter...");
19
- ESP_LOGCONFIG(TAG, " Carrier Duty: %u%%", this->carrier_duty_percent_);
18
+ ESP_LOGCONFIG(TAG,
19
+ "Remote Transmitter:\n"
20
+ " Carrier Duty: %u%%",
21
+ this->carrier_duty_percent_);
20
22
  LOG_PIN(" Pin: ", this->pin_);
21
23
  }
22
24
 
@@ -74,7 +76,7 @@ void RemoteTransmitterComponent::space_(uint32_t usec) {
74
76
  }
75
77
 
76
78
  void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
77
- ESP_LOGD(TAG, "Sending remote code...");
79
+ ESP_LOGD(TAG, "Sending remote code");
78
80
  uint32_t on_time, off_time;
79
81
  this->calculate_on_off_time_(this->temp_.get_carrier_frequency(), &on_time, &off_time);
80
82
  this->target_time_ = 0;
@@ -8,9 +8,12 @@ static const char *const TAG = "resistance";
8
8
 
9
9
  void ResistanceSensor::dump_config() {
10
10
  LOG_SENSOR("", "Resistance Sensor", this);
11
- ESP_LOGCONFIG(TAG, " Configuration: %s", this->configuration_ == UPSTREAM ? "UPSTREAM" : "DOWNSTREAM");
12
- ESP_LOGCONFIG(TAG, " Resistor: %.2fΩ", this->resistor_);
13
- ESP_LOGCONFIG(TAG, " Reference Voltage: %.1fV", this->reference_voltage_);
11
+ ESP_LOGCONFIG(TAG,
12
+ " Configuration: %s\n"
13
+ " Resistor: %.2fΩ\n"
14
+ " Reference Voltage: %.1fV",
15
+ this->configuration_ == UPSTREAM ? "UPSTREAM" : "DOWNSTREAM", this->resistor_,
16
+ this->reference_voltage_);
14
17
  }
15
18
  void ResistanceSensor::process_(float value) {
16
19
  if (std::isnan(value)) {
@@ -9,7 +9,7 @@ namespace restart {
9
9
  static const char *const TAG = "restart.button";
10
10
 
11
11
  void RestartButton::press_action() {
12
- ESP_LOGI(TAG, "Restarting device...");
12
+ ESP_LOGI(TAG, "Restarting device");
13
13
  // Let MQTT settle a bit
14
14
  delay(100); // NOLINT
15
15
  App.safe_reboot();
@@ -13,7 +13,7 @@ void RestartSwitch::write_state(bool state) {
13
13
  this->publish_state(false);
14
14
 
15
15
  if (state) {
16
- ESP_LOGI(TAG, "Restarting device...");
16
+ ESP_LOGI(TAG, "Restarting device");
17
17
  // Let MQTT settle a bit
18
18
  delay(100); // NOLINT
19
19
  App.safe_reboot();
@@ -1,6 +1,6 @@
1
1
  #include "rotary_encoder.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/helpers.h"
3
+ #include "esphome/core/log.h"
4
4
 
5
5
  namespace esphome {
6
6
  namespace rotary_encoder {
@@ -129,7 +129,7 @@ void IRAM_ATTR HOT RotaryEncoderSensorStore::gpio_intr(RotaryEncoderSensorStore
129
129
  }
130
130
 
131
131
  void RotaryEncoderSensor::setup() {
132
- ESP_LOGCONFIG(TAG, "Setting up Rotary Encoder '%s'...", this->name_.c_str());
132
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
133
133
 
134
134
  int32_t initial_value = 0;
135
135
  switch (this->restore_mode_) {
@@ -10,6 +10,7 @@ from esphome.const import (
10
10
  CONF_PLATFORM_VERSION,
11
11
  CONF_SOURCE,
12
12
  CONF_VERSION,
13
+ CONF_WATCHDOG_TIMEOUT,
13
14
  KEY_CORE,
14
15
  KEY_FRAMEWORK_VERSION,
15
16
  KEY_TARGET_FRAMEWORK,
@@ -147,6 +148,10 @@ CONFIG_SCHEMA = cv.All(
147
148
  {
148
149
  cv.Required(CONF_BOARD): cv.string_strict,
149
150
  cv.Optional(CONF_FRAMEWORK, default={}): ARDUINO_FRAMEWORK_SCHEMA,
151
+ cv.Optional(CONF_WATCHDOG_TIMEOUT, default="8388ms"): cv.All(
152
+ cv.positive_time_period_milliseconds,
153
+ cv.Range(max=cv.TimePeriod(milliseconds=8388)),
154
+ ),
150
155
  }
151
156
  ),
152
157
  set_core_data,
@@ -189,6 +194,8 @@ async def to_code(config):
189
194
  cg.RawExpression(f"VERSION_CODE({ver.major}, {ver.minor}, {ver.patch})"),
190
195
  )
191
196
 
197
+ cg.add_define("USE_RP2040_WATCHDOG_TIMEOUT", config[CONF_WATCHDOG_TIMEOUT])
198
+
192
199
 
193
200
  def add_pio_file(component: str, key: str, data: str):
194
201
  try:
@@ -1,6 +1,7 @@
1
1
  #ifdef USE_RP2040
2
2
 
3
3
  #include "core.h"
4
+ #include "esphome/core/defines.h"
4
5
  #include "esphome/core/hal.h"
5
6
  #include "esphome/core/helpers.h"
6
7
 
@@ -19,7 +20,13 @@ void arch_restart() {
19
20
  continue;
20
21
  }
21
22
  }
22
- void arch_init() { watchdog_enable(0x7fffff, false); }
23
+
24
+ void arch_init() {
25
+ #if USE_RP2040_WATCHDOG_TIMEOUT > 0
26
+ watchdog_enable(USE_RP2040_WATCHDOG_TIMEOUT, false);
27
+ #endif
28
+ }
29
+
23
30
  void IRAM_ATTR HOT arch_feed_wdt() { watchdog_update(); }
24
31
 
25
32
  uint8_t progmem_read_byte(const uint8_t *addr) {