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
@@ -14,7 +14,7 @@ void FactoryResetSwitch::write_state(bool state) {
14
14
  this->publish_state(false);
15
15
 
16
16
  if (state) {
17
- ESP_LOGI(TAG, "Resetting to factory defaults...");
17
+ ESP_LOGI(TAG, "Resetting");
18
18
  // Let MQTT settle a bit
19
19
  delay(100); // NOLINT
20
20
  global_preferences->reset();
@@ -296,6 +296,7 @@ async def register_fan(var, config):
296
296
  if not CORE.has_id(config[CONF_ID]):
297
297
  var = cg.Pvariable(config[CONF_ID], var)
298
298
  cg.add(cg.App.register_fan(var))
299
+ CORE.register_platform_component("fan", var)
299
300
  await setup_fan_core_(var, config)
300
301
 
301
302
 
@@ -189,8 +189,10 @@ void Fan::dump_traits_(const char *tag, const char *prefix) {
189
189
  auto traits = this->get_traits();
190
190
 
191
191
  if (traits.supports_speed()) {
192
- ESP_LOGCONFIG(tag, "%s Speed: YES", prefix);
193
- ESP_LOGCONFIG(tag, "%s Speed count: %d", prefix, traits.supported_speed_count());
192
+ ESP_LOGCONFIG(tag,
193
+ "%s Speed: YES\n"
194
+ "%s Speed count: %d",
195
+ prefix, prefix, traits.supported_speed_count());
194
196
  }
195
197
  if (traits.supports_oscillation()) {
196
198
  ESP_LOGCONFIG(tag, "%s Oscillation: YES", prefix);
@@ -9,7 +9,7 @@ namespace fastled_base {
9
9
  static const char *const TAG = "fastled";
10
10
 
11
11
  void FastLEDLightOutput::setup() {
12
- ESP_LOGCONFIG(TAG, "Setting up FastLED light...");
12
+ ESP_LOGCONFIG(TAG, "Running setup");
13
13
  this->controller_->init();
14
14
  this->controller_->setLeds(this->leds_, this->num_leds_);
15
15
  this->effect_data_ = new uint8_t[this->num_leds_]; // NOLINT
@@ -18,9 +18,11 @@ void FastLEDLightOutput::setup() {
18
18
  }
19
19
  }
20
20
  void FastLEDLightOutput::dump_config() {
21
- ESP_LOGCONFIG(TAG, "FastLED light:");
22
- ESP_LOGCONFIG(TAG, " Num LEDs: %u", this->num_leds_);
23
- ESP_LOGCONFIG(TAG, " Max refresh rate: %u", *this->max_refresh_rate_);
21
+ ESP_LOGCONFIG(TAG,
22
+ "FastLED light:\n"
23
+ " Num LEDs: %u\n"
24
+ " Max refresh rate: %u",
25
+ this->num_leds_, *this->max_refresh_rate_);
24
26
  }
25
27
  void FastLEDLightOutput::write_state(light::LightState *state) {
26
28
  // protect from refreshing too often
@@ -33,7 +35,7 @@ void FastLEDLightOutput::write_state(light::LightState *state) {
33
35
  this->last_refresh_ = now;
34
36
  this->mark_shown_();
35
37
 
36
- ESP_LOGVV(TAG, "Writing RGB values to bus...");
38
+ ESP_LOGVV(TAG, "Writing RGB values to bus");
37
39
  this->controller_->showLeds(this->state_parent_->current_values.get_brightness() * 255);
38
40
  }
39
41
 
@@ -57,7 +57,7 @@ void FingerprintGrowComponent::update() {
57
57
  }
58
58
 
59
59
  void FingerprintGrowComponent::setup() {
60
- ESP_LOGCONFIG(TAG, "Setting up Grow Fingerprint Reader...");
60
+ ESP_LOGCONFIG(TAG, "Running setup");
61
61
 
62
62
  this->has_sensing_pin_ = (this->sensing_pin_ != nullptr);
63
63
  this->has_power_pin_ = (this->sensor_power_pin_ != nullptr);
@@ -534,11 +534,13 @@ void FingerprintGrowComponent::sensor_sleep_() {
534
534
  }
535
535
 
536
536
  void FingerprintGrowComponent::dump_config() {
537
- ESP_LOGCONFIG(TAG, "GROW_FINGERPRINT_READER:");
538
- ESP_LOGCONFIG(TAG, " System Identifier Code: 0x%.4X", this->system_identifier_code_);
539
- ESP_LOGCONFIG(TAG, " Touch Sensing Pin: %s",
540
- this->has_sensing_pin_ ? this->sensing_pin_->dump_summary().c_str() : "None");
541
- ESP_LOGCONFIG(TAG, " Sensor Power Pin: %s",
537
+ ESP_LOGCONFIG(TAG,
538
+ "GROW_FINGERPRINT_READER:\n"
539
+ " System Identifier Code: 0x%.4X\n"
540
+ " Touch Sensing Pin: %s\n"
541
+ " Sensor Power Pin: %s",
542
+ this->system_identifier_code_,
543
+ this->has_sensing_pin_ ? this->sensing_pin_->dump_summary().c_str() : "None",
542
544
  this->has_power_pin_ ? this->sensor_power_pin_->dump_summary().c_str() : "None");
543
545
  if (this->idle_period_to_sleep_ms_ < UINT32_MAX) {
544
546
  ESP_LOGCONFIG(TAG, " Idle Period to Sleep: %" PRIu32 " ms", this->idle_period_to_sleep_ms_);
@@ -7,7 +7,7 @@ namespace fs3000 {
7
7
  static const char *const TAG = "fs3000";
8
8
 
9
9
  void FS3000Component::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up FS3000...");
10
+ ESP_LOGCONFIG(TAG, "Running setup");
11
11
 
12
12
  if (model_ == FIVE) {
13
13
  // datasheet gives 9 points to interpolate from for the 1005 model
@@ -1,5 +1,6 @@
1
1
  #include "ft5x06_touchscreen.h"
2
2
 
3
+ #include "esphome/core/helpers.h"
3
4
  #include "esphome/core/log.h"
4
5
 
5
6
  namespace esphome {
@@ -8,7 +9,7 @@ namespace ft5x06 {
8
9
  static const char *const TAG = "ft5x06.touchscreen";
9
10
 
10
11
  void FT5x06Touchscreen::setup() {
11
- ESP_LOGCONFIG(TAG, "Setting up FT5x06 Touchscreen...");
12
+ ESP_LOGCONFIG(TAG, "Running setup");
12
13
  if (this->interrupt_pin_ != nullptr) {
13
14
  this->interrupt_pin_->setup();
14
15
  this->interrupt_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
@@ -81,9 +82,11 @@ void FT5x06Touchscreen::update_touches() {
81
82
  }
82
83
 
83
84
  void FT5x06Touchscreen::dump_config() {
84
- ESP_LOGCONFIG(TAG, "FT5x06 Touchscreen:");
85
- ESP_LOGCONFIG(TAG, " Address: 0x%02X", this->address_);
86
- ESP_LOGCONFIG(TAG, " Vendor ID: 0x%X", (int) this->vendor_id_);
85
+ ESP_LOGCONFIG(TAG,
86
+ "FT5x06 Touchscreen:\n"
87
+ " Address: 0x%02X\n"
88
+ " Vendor ID: 0x%X",
89
+ this->address_, (int) this->vendor_id_);
87
90
  }
88
91
 
89
92
  bool FT5x06Touchscreen::err_check_(i2c::ErrorCode err, const char *msg) {
@@ -28,7 +28,7 @@ static const uint8_t FT63X6_ADDR_CHIP_ID = 0xA3;
28
28
  static const char *const TAG = "FT63X6";
29
29
 
30
30
  void FT63X6Touchscreen::setup() {
31
- ESP_LOGCONFIG(TAG, "Setting up FT63X6 Touchscreen...");
31
+ ESP_LOGCONFIG(TAG, "Running setup");
32
32
  if (this->interrupt_pin_ != nullptr) {
33
33
  this->interrupt_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
34
34
  this->interrupt_pin_->setup();
@@ -71,8 +71,10 @@ void FT63X6Touchscreen::dump_config() {
71
71
  LOG_I2C_DEVICE(this);
72
72
  LOG_PIN(" Interrupt Pin: ", this->interrupt_pin_);
73
73
  LOG_PIN(" Reset Pin: ", this->reset_pin_);
74
- ESP_LOGCONFIG(TAG, " X Calibration: [%d, %d]", this->x_raw_min_, this->x_raw_max_);
75
- ESP_LOGCONFIG(TAG, " Y Calibration: [%d, %d]", this->y_raw_min_, this->y_raw_max_);
74
+ ESP_LOGCONFIG(TAG,
75
+ " X Calibration: [%d, %d]\n"
76
+ " Y Calibration: [%d, %d]",
77
+ this->x_raw_min_, this->x_raw_max_, this->y_raw_min_, this->y_raw_max_);
76
78
  LOG_UPDATE_INTERVAL(this);
77
79
  }
78
80
 
@@ -14,8 +14,6 @@ namespace gcja5 {
14
14
 
15
15
  static const char *const TAG = "gcja5";
16
16
 
17
- void GCJA5Component::setup() { ESP_LOGCONFIG(TAG, "Setting up gcja5..."); }
18
-
19
17
  void GCJA5Component::loop() {
20
18
  const uint32_t now = App.get_loop_component_start_time();
21
19
  if (now - this->last_transmission_ >= 500) {
@@ -78,16 +76,6 @@ bool GCJA5Component::calculate_checksum_() {
78
76
  return (crc == this->rx_message_[30]);
79
77
  }
80
78
 
81
- uint32_t GCJA5Component::get_32_bit_uint_(uint8_t start_index) {
82
- return (((uint32_t) this->rx_message_[start_index + 3]) << 24) |
83
- (((uint32_t) this->rx_message_[start_index + 2]) << 16) |
84
- (((uint32_t) this->rx_message_[start_index + 1]) << 8) | ((uint32_t) this->rx_message_[start_index]);
85
- }
86
-
87
- uint16_t GCJA5Component::get_16_bit_uint_(uint8_t start_index) {
88
- return (((uint32_t) this->rx_message_[start_index + 1]) << 8) | ((uint32_t) this->rx_message_[start_index]);
89
- }
90
-
91
79
  void GCJA5Component::parse_data_() {
92
80
  ESP_LOGVV(TAG, "GCJA5 Data: ");
93
81
  for (uint8_t i = 0; i < 32; i++) {
@@ -1,6 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #include "esphome/core/component.h"
4
+ #include "esphome/core/helpers.h"
4
5
  #include "esphome/components/sensor/sensor.h"
5
6
  #include "esphome/components/uart/uart.h"
6
7
 
@@ -9,7 +10,6 @@ namespace gcja5 {
9
10
 
10
11
  class GCJA5Component : public Component, public uart::UARTDevice {
11
12
  public:
12
- void setup() override;
13
13
  void dump_config() override;
14
14
  void loop() override;
15
15
  float get_setup_priority() const override { return setup_priority::DATA; }
@@ -29,8 +29,13 @@ class GCJA5Component : public Component, public uart::UARTDevice {
29
29
  void parse_data_();
30
30
  bool calculate_checksum_();
31
31
 
32
- uint32_t get_32_bit_uint_(uint8_t start_index);
33
- uint16_t get_16_bit_uint_(uint8_t start_index);
32
+ uint16_t get_16_bit_uint_(uint8_t start_index) const {
33
+ return encode_uint16(this->rx_message_[start_index + 1], this->rx_message_[start_index]);
34
+ }
35
+ uint32_t get_32_bit_uint_(uint8_t start_index) const {
36
+ return encode_uint32(this->rx_message_[start_index + 3], this->rx_message_[start_index + 2],
37
+ this->rx_message_[start_index + 1], this->rx_message_[start_index]);
38
+ }
34
39
  uint32_t last_transmission_{0};
35
40
  std::vector<uint8_t> rx_message_;
36
41
 
@@ -34,7 +34,7 @@ void GDK101Component::update() {
34
34
 
35
35
  void GDK101Component::setup() {
36
36
  uint8_t data[2];
37
- ESP_LOGCONFIG(TAG, "Setting up GDK101...");
37
+ ESP_LOGCONFIG(TAG, "Running setup");
38
38
  // first, reset the sensor
39
39
  if (!this->reset_sensor_(data)) {
40
40
  this->status_set_error("Reset failed!");
@@ -60,7 +60,7 @@ void GDK101Component::dump_config() {
60
60
  ESP_LOGCONFIG(TAG, "GDK101:");
61
61
  LOG_I2C_DEVICE(this);
62
62
  if (this->is_failed()) {
63
- ESP_LOGE(TAG, "Communication with GDK101 failed!");
63
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
64
64
  }
65
65
  #ifdef USE_SENSOR
66
66
  LOG_SENSOR(" ", "Firmware Version", this->fw_version_sensor_);
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/component.h"
4
3
  #include "esphome/core/automation.h"
4
+ #include "esphome/core/component.h"
5
5
  #include "esphome/core/helpers.h"
6
6
  #include <cstring>
7
7
 
@@ -39,7 +39,7 @@ template<typename T> class RestoringGlobalsComponent : public Component {
39
39
  void setup() override {
40
40
  this->rtc_ = global_preferences->make_preference<T>(1944399030U ^ this->name_hash_);
41
41
  this->rtc_.load(&this->value_);
42
- memcpy(&this->prev_value_, &this->value_, sizeof(T));
42
+ memcpy(&this->last_checked_value_, &this->value_, sizeof(T));
43
43
  }
44
44
 
45
45
  float get_setup_priority() const override { return setup_priority::HARDWARE; }
@@ -52,15 +52,15 @@ template<typename T> class RestoringGlobalsComponent : public Component {
52
52
 
53
53
  protected:
54
54
  void store_value_() {
55
- int diff = memcmp(&this->value_, &this->prev_value_, sizeof(T));
55
+ int diff = memcmp(&this->value_, &this->last_checked_value_, sizeof(T));
56
56
  if (diff != 0) {
57
57
  this->rtc_.save(&this->value_);
58
- memcpy(&this->prev_value_, &this->value_, sizeof(T));
58
+ memcpy(&this->last_checked_value_, &this->value_, sizeof(T));
59
59
  }
60
60
  }
61
61
 
62
62
  T value_{};
63
- T prev_value_{};
63
+ T last_checked_value_{};
64
64
  uint32_t name_hash_{};
65
65
  ESPPreferenceObject rtc_;
66
66
  };
@@ -85,7 +85,7 @@ template<typename T, uint8_t SZ> class RestoringGlobalStringComponent : public C
85
85
  if (hasdata) {
86
86
  this->value_.assign(temp + 1, temp[0]);
87
87
  }
88
- this->prev_value_.assign(this->value_);
88
+ this->last_checked_value_.assign(this->value_);
89
89
  }
90
90
 
91
91
  float get_setup_priority() const override { return setup_priority::HARDWARE; }
@@ -98,13 +98,12 @@ template<typename T, uint8_t SZ> class RestoringGlobalStringComponent : public C
98
98
 
99
99
  protected:
100
100
  void store_value_() {
101
- int diff = this->value_.compare(this->prev_value_);
101
+ int diff = this->value_.compare(this->last_checked_value_);
102
102
  if (diff != 0) {
103
103
  // Make it into a length prefixed thing
104
104
  unsigned char temp[SZ];
105
105
 
106
106
  // If string is bigger than the allocation, do not save it.
107
- // We don't need to waste ram setting prev_value either.
108
107
  int size = this->value_.size();
109
108
  // Less than, not less than or equal, SZ includes the length byte.
110
109
  if (size < SZ) {
@@ -112,13 +111,17 @@ template<typename T, uint8_t SZ> class RestoringGlobalStringComponent : public C
112
111
  // SZ should be pre checked at the schema level, it can't go past the char range.
113
112
  temp[0] = ((unsigned char) size);
114
113
  this->rtc_.save(&temp);
115
- this->prev_value_.assign(this->value_);
116
114
  }
115
+ // Always update last_checked_value_ to match current value, even for oversized strings.
116
+ // This prevents redundant size checks on every loop iteration when a string remains oversized.
117
+ // Without this, the diff != 0 check would pass repeatedly for the same oversized string,
118
+ // wasting CPU cycles on size comparisons.
119
+ this->last_checked_value_.assign(this->value_);
117
120
  }
118
121
  }
119
122
 
120
123
  T value_{};
121
- T prev_value_{};
124
+ T last_checked_value_{};
122
125
  uint32_t name_hash_{};
123
126
  ESPPreferenceObject rtc_;
124
127
  };
@@ -13,8 +13,10 @@ static const float MAX_VOLTAGE = 4.0f;
13
13
 
14
14
  void GP2Y1010AU0FSensor::dump_config() {
15
15
  LOG_SENSOR("", "Sharp GP2Y1010AU0F PM2.5 Sensor", this);
16
- ESP_LOGCONFIG(TAG, " Sampling duration: %" PRId32 " ms", this->sample_duration_);
17
- ESP_LOGCONFIG(TAG, " ADC voltage multiplier: %.3f", this->voltage_multiplier_);
16
+ ESP_LOGCONFIG(TAG,
17
+ " Sampling duration: %" PRId32 " ms\n"
18
+ " ADC voltage multiplier: %.3f",
19
+ this->sample_duration_, this->voltage_multiplier_);
18
20
  LOG_UPDATE_INTERVAL(this);
19
21
  }
20
22
 
@@ -12,8 +12,10 @@ static const uint8_t RANGE_REGISTER = 0x01;
12
12
  void GP8403::setup() { this->write_register(RANGE_REGISTER, (uint8_t *) (&this->voltage_), 1); }
13
13
 
14
14
  void GP8403::dump_config() {
15
- ESP_LOGCONFIG(TAG, "GP8403:");
16
- ESP_LOGCONFIG(TAG, " Voltage: %dV", this->voltage_ == GP8403_VOLTAGE_5V ? 5 : 10);
15
+ ESP_LOGCONFIG(TAG,
16
+ "GP8403:\n"
17
+ " Voltage: %dV",
18
+ this->voltage_ == GP8403_VOLTAGE_5V ? 5 : 10);
17
19
  LOG_I2C_DEVICE(this);
18
20
  }
19
21
 
@@ -10,8 +10,10 @@ static const char *const TAG = "gp8403.output";
10
10
  static const uint8_t OUTPUT_REGISTER = 0x02;
11
11
 
12
12
  void GP8403Output::dump_config() {
13
- ESP_LOGCONFIG(TAG, "GP8403 Output:");
14
- ESP_LOGCONFIG(TAG, " Channel: %u", this->channel_);
13
+ ESP_LOGCONFIG(TAG,
14
+ "GP8403 Output:\n"
15
+ " Channel: %u",
16
+ this->channel_);
15
17
  }
16
18
 
17
19
  void GP8403Output::write_state(float state) {
@@ -1,6 +1,6 @@
1
1
  #include "gpio_one_wire.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 gpio {
@@ -8,7 +8,7 @@ namespace gpio {
8
8
  static const char *const TAG = "gpio.one_wire";
9
9
 
10
10
  void GPIOOneWireBus::setup() {
11
- ESP_LOGCONFIG(TAG, "Setting up 1-wire bus...");
11
+ ESP_LOGCONFIG(TAG, "Running setup");
12
12
  this->t_pin_->setup();
13
13
  this->t_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
14
14
  // clear bus with 480µs high, otherwise initial reset in search might fail
@@ -7,7 +7,7 @@ namespace gpio {
7
7
  static const char *const TAG = "gpio.output";
8
8
 
9
9
  void GPIOBinaryOutput::dump_config() {
10
- ESP_LOGCONFIG(TAG, "GPIO Binary Output:");
10
+ ESP_LOGCONFIG(TAG, "Binary Output:");
11
11
  LOG_PIN(" Pin: ", this->pin_);
12
12
  LOG_BINARY_OUTPUT(this);
13
13
  }
@@ -8,7 +8,7 @@ static const char *const TAG = "switch.gpio";
8
8
 
9
9
  float GPIOSwitch::get_setup_priority() const { return setup_priority::HARDWARE; }
10
10
  void GPIOSwitch::setup() {
11
- ESP_LOGCONFIG(TAG, "Setting up GPIO Switch '%s'...", this->name_.c_str());
11
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
12
12
 
13
13
  bool initial_state = this->get_initial_state_with_restore_mode().value_or(false);
14
14
 
@@ -36,14 +36,18 @@ void GraphicalDisplayMenu::setup() {
36
36
  }
37
37
 
38
38
  void GraphicalDisplayMenu::dump_config() {
39
- ESP_LOGCONFIG(TAG, "Graphical Display Menu");
40
- ESP_LOGCONFIG(TAG, "Has Display: %s", YESNO(this->display_ != nullptr));
41
- ESP_LOGCONFIG(TAG, "Popup Mode: %s", YESNO(this->display_ != nullptr));
42
- ESP_LOGCONFIG(TAG, "Advanced Drawing Mode: %s", YESNO(this->display_ == nullptr));
43
- ESP_LOGCONFIG(TAG, "Has Font: %s", YESNO(this->font_ != nullptr));
44
- ESP_LOGCONFIG(TAG, "Mode: %s", this->mode_ == display_menu_base::MENU_MODE_ROTARY ? "Rotary" : "Joystick");
45
- ESP_LOGCONFIG(TAG, "Active: %s", YESNO(this->active_));
46
- ESP_LOGCONFIG(TAG, "Menu items:");
39
+ ESP_LOGCONFIG(TAG,
40
+ "Graphical Display Menu\n"
41
+ "Has Display: %s\n"
42
+ "Popup Mode: %s\n"
43
+ "Advanced Drawing Mode: %s\n"
44
+ "Has Font: %s\n"
45
+ "Mode: %s\n"
46
+ "Active: %s\n"
47
+ "Menu items:",
48
+ YESNO(this->display_ != nullptr), YESNO(this->display_ != nullptr), YESNO(this->display_ == nullptr),
49
+ YESNO(this->font_ != nullptr),
50
+ this->mode_ == display_menu_base::MENU_MODE_ROTARY ? "Rotary" : "Joystick", YESNO(this->active_));
47
51
  for (size_t i = 0; i < this->displayed_item_->items_size(); i++) {
48
52
  auto *item = this->displayed_item_->get_item(i);
49
53
  ESP_LOGCONFIG(TAG, " %i: %s (Type: %s, Immediate Edit: %s)", i, item->get_text().c_str(),
@@ -33,8 +33,7 @@ bool GroveGasMultichannelV2Component::read_sensor_(uint8_t address, sensor::Sens
33
33
  }
34
34
 
35
35
  void GroveGasMultichannelV2Component::setup() {
36
- ESP_LOGCONFIG(TAG, "Setting up Grove Multichannel Gas Sensor V2...");
37
-
36
+ ESP_LOGCONFIG(TAG, "Running setup");
38
37
  // Before reading sensor values, must preheat sensor
39
38
  if (!(this->write_bytes(GROVE_GAS_MC_V2_HEAT_ON, {}))) {
40
39
  this->mark_failed();
@@ -68,17 +67,17 @@ void GroveGasMultichannelV2Component::dump_config() {
68
67
  if (this->is_failed()) {
69
68
  switch (this->error_code_) {
70
69
  case COMMUNICATION_FAILED:
71
- ESP_LOGW(TAG, "Communication failed! Is the sensor connected?");
70
+ ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
72
71
  break;
73
72
  case APP_INVALID:
74
- ESP_LOGW(TAG, "Sensor reported invalid APP installed.");
73
+ ESP_LOGW(TAG, "Sensor reported invalid APP installed");
75
74
  break;
76
75
  case APP_START_FAILED:
77
- ESP_LOGW(TAG, "Sensor reported APP start failed.");
76
+ ESP_LOGW(TAG, "Sensor reported APP start failed");
78
77
  break;
79
78
  case UNKNOWN:
80
79
  default:
81
- ESP_LOGW(TAG, "Unknown setup error!");
80
+ ESP_LOGW(TAG, "Unknown setup error");
82
81
  break;
83
82
  }
84
83
  }
@@ -24,7 +24,7 @@ void GroveMotorDriveTB6612FNG::dump_config() {
24
24
  }
25
25
 
26
26
  void GroveMotorDriveTB6612FNG::setup() {
27
- ESP_LOGCONFIG(TAG, "Setting up Grove Motor Drive TB6612FNG ...");
27
+ ESP_LOGCONFIG(TAG, "Running setup");
28
28
  if (!this->standby()) {
29
29
  this->mark_failed();
30
30
  return;
@@ -1,9 +1,9 @@
1
1
  #pragma once
2
2
 
3
3
  #include "esphome/components/i2c/i2c.h"
4
+ #include "esphome/core/automation.h"
4
5
  #include "esphome/core/component.h"
5
6
  #include "esphome/core/hal.h"
6
- #include "esphome/core/automation.h"
7
7
  //#include "esphome/core/helpers.h"
8
8
 
9
9
  /*
@@ -1,6 +1,7 @@
1
1
  #include "growatt_solar.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 growatt_solar {
@@ -134,8 +135,10 @@ void GrowattSolar::on_modbus_data(const std::vector<uint8_t> &data) {
134
135
  }
135
136
 
136
137
  void GrowattSolar::dump_config() {
137
- ESP_LOGCONFIG(TAG, "GROWATT Solar:");
138
- ESP_LOGCONFIG(TAG, " Address: 0x%02X", this->address_);
138
+ ESP_LOGCONFIG(TAG,
139
+ "GROWATT Solar:\n"
140
+ " Address: 0x%02X",
141
+ this->address_);
139
142
  }
140
143
 
141
144
  } // namespace growatt_solar
@@ -25,7 +25,7 @@ static const size_t MAX_BUTTONS = 4; // max number of buttons scanned
25
25
 
26
26
  void GT911Touchscreen::setup() {
27
27
  i2c::ErrorCode err;
28
- ESP_LOGCONFIG(TAG, "Setting up GT911 Touchscreen...");
28
+ ESP_LOGCONFIG(TAG, "Running setup");
29
29
  if (this->reset_pin_ != nullptr) {
30
30
  this->reset_pin_->setup();
31
31
  this->reset_pin_->digital_write(false);
@@ -242,7 +242,7 @@ haier_protocol::HandlerError HaierClimateBase::timeout_default_handler_(haier_pr
242
242
  }
243
243
 
244
244
  void HaierClimateBase::setup() {
245
- ESP_LOGI(TAG, "Haier initialization...");
245
+ ESP_LOGCONFIG(TAG, "Running setup");
246
246
  // Set timestamp here to give AC time to boot
247
247
  this->last_request_timestamp_ = std::chrono::steady_clock::now();
248
248
  this->set_phase(ProtocolPhases::SENDING_INIT_1);
@@ -286,7 +286,7 @@ void HaierClimateBase::loop() {
286
286
  if (this->action_request_.has_value() && this->prepare_pending_action()) {
287
287
  this->set_phase(ProtocolPhases::SENDING_ACTION_COMMAND);
288
288
  } else if (this->next_hvac_settings_.valid || this->force_send_control_) {
289
- ESP_LOGV(TAG, "Control packet is pending...");
289
+ ESP_LOGV(TAG, "Control packet is pending");
290
290
  this->set_phase(ProtocolPhases::SENDING_CONTROL);
291
291
  if (this->next_hvac_settings_.valid) {
292
292
  this->current_hvac_settings_ = this->next_hvac_settings_;
@@ -339,13 +339,20 @@ void HonClimate::set_handlers() {
339
339
 
340
340
  void HonClimate::dump_config() {
341
341
  HaierClimateBase::dump_config();
342
- ESP_LOGCONFIG(TAG, " Protocol version: hOn");
343
- ESP_LOGCONFIG(TAG, " Control method: %d", (uint8_t) this->control_method_);
342
+ ESP_LOGCONFIG(TAG,
343
+ " Protocol version: hOn\n"
344
+ " Control method: %d",
345
+ (uint8_t) this->control_method_);
344
346
  if (this->hvac_hardware_info_.has_value()) {
345
- ESP_LOGCONFIG(TAG, " Device protocol version: %s", this->hvac_hardware_info_.value().protocol_version_.c_str());
346
- ESP_LOGCONFIG(TAG, " Device software version: %s", this->hvac_hardware_info_.value().software_version_.c_str());
347
- ESP_LOGCONFIG(TAG, " Device hardware version: %s", this->hvac_hardware_info_.value().hardware_version_.c_str());
348
- ESP_LOGCONFIG(TAG, " Device name: %s", this->hvac_hardware_info_.value().device_name_.c_str());
347
+ ESP_LOGCONFIG(TAG,
348
+ " Device protocol version: %s\n"
349
+ " Device software version: %s\n"
350
+ " Device hardware version: %s\n"
351
+ " Device name: %s",
352
+ this->hvac_hardware_info_.value().protocol_version_.c_str(),
353
+ this->hvac_hardware_info_.value().software_version_.c_str(),
354
+ this->hvac_hardware_info_.value().hardware_version_.c_str(),
355
+ this->hvac_hardware_info_.value().device_name_.c_str());
349
356
  ESP_LOGCONFIG(TAG, " Device features:%s%s%s%s%s",
350
357
  (this->hvac_hardware_info_.value().functions_[0] ? " interactive" : ""),
351
358
  (this->hvac_hardware_info_.value().functions_[1] ? " controller-device" : ""),
@@ -1,5 +1,6 @@
1
1
  #include "havells_solar.h"
2
2
  #include "havells_solar_registers.h"
3
+ #include "esphome/core/helpers.h"
3
4
  #include "esphome/core/log.h"
4
5
 
5
6
  namespace esphome {
@@ -123,8 +124,10 @@ void HavellsSolar::on_modbus_data(const std::vector<uint8_t> &data) {
123
124
 
124
125
  void HavellsSolar::update() { this->send(MODBUS_CMD_READ_IN_REGISTERS, 0, MODBUS_REGISTER_COUNT); }
125
126
  void HavellsSolar::dump_config() {
126
- ESP_LOGCONFIG(TAG, "HAVELLS Solar:");
127
- ESP_LOGCONFIG(TAG, " Address: 0x%02X", this->address_);
127
+ ESP_LOGCONFIG(TAG,
128
+ "HAVELLS Solar:\n"
129
+ " Address: 0x%02X",
130
+ this->address_);
128
131
  for (uint8_t i = 0; i < 3; i++) {
129
132
  auto phase = this->phases_[i];
130
133
  if (!phase.setup)
@@ -10,7 +10,7 @@ static const char *const TAG = "switch.hbridge";
10
10
 
11
11
  float HBridgeSwitch::get_setup_priority() const { return setup_priority::HARDWARE; }
12
12
  void HBridgeSwitch::setup() {
13
- ESP_LOGCONFIG(TAG, "Setting up H-Bridge Switch '%s'...", this->name_.c_str());
13
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
14
14
 
15
15
  optional<bool> initial_state = this->get_initial_state_with_restore_mode();
16
16
 
@@ -13,7 +13,7 @@ static const uint8_t HDC1080_CMD_TEMPERATURE = 0x00;
13
13
  static const uint8_t HDC1080_CMD_HUMIDITY = 0x01;
14
14
 
15
15
  void HDC1080Component::setup() {
16
- ESP_LOGCONFIG(TAG, "Setting up HDC1080...");
16
+ ESP_LOGCONFIG(TAG, "Running setup");
17
17
 
18
18
  const uint8_t data[2] = {
19
19
  0b00000000, // resolution 14bit for both humidity and temperature
@@ -31,7 +31,7 @@ void HDC1080Component::dump_config() {
31
31
  ESP_LOGCONFIG(TAG, "HDC1080:");
32
32
  LOG_I2C_DEVICE(this);
33
33
  if (this->is_failed()) {
34
- ESP_LOGE(TAG, "Communication with HDC1080 failed!");
34
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
35
35
  }
36
36
  LOG_UPDATE_INTERVAL(this);
37
37
  LOG_SENSOR(" ", "Temperature", this->temperature_);
@@ -40,8 +40,10 @@ CoverTraits HE60rCover::get_traits() {
40
40
  void HE60rCover::dump_config() {
41
41
  LOG_COVER("", "HE60R Cover", this);
42
42
  this->check_uart_settings(1200, 1, uart::UART_CONFIG_PARITY_EVEN, 8);
43
- ESP_LOGCONFIG(TAG, " Open Duration: %.1fs", this->open_duration_ / 1e3f);
44
- ESP_LOGCONFIG(TAG, " Close Duration: %.1fs", this->close_duration_ / 1e3f);
43
+ ESP_LOGCONFIG(TAG,
44
+ " Open Duration: %.1fs\n"
45
+ " Close Duration: %.1fs",
46
+ this->open_duration_ / 1e3f, this->close_duration_ / 1e3f);
45
47
  auto restore = this->restore_state_();
46
48
  if (restore.has_value())
47
49
  ESP_LOGCONFIG(TAG, " Saved position %d%%", (int) (restore->position * 100.f));