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
@@ -34,7 +34,7 @@ MQTTClientComponent::MQTTClientComponent() {
34
34
 
35
35
  // Connection
36
36
  void MQTTClientComponent::setup() {
37
- ESP_LOGCONFIG(TAG, "Setting up MQTT...");
37
+ ESP_LOGCONFIG(TAG, "Running setup");
38
38
  this->mqtt_backend_.set_on_message(
39
39
  [this](const char *topic, const char *payload, size_t len, size_t index, size_t total) {
40
40
  if (index == 0)
@@ -149,18 +149,23 @@ void MQTTClientComponent::send_device_info_() {
149
149
  }
150
150
 
151
151
  void MQTTClientComponent::dump_config() {
152
- ESP_LOGCONFIG(TAG, "MQTT:");
153
- ESP_LOGCONFIG(TAG, " Server Address: %s:%u (%s)", this->credentials_.address.c_str(), this->credentials_.port,
154
- this->ip_.str().c_str());
155
- ESP_LOGCONFIG(TAG, " Username: " LOG_SECRET("'%s'"), this->credentials_.username.c_str());
156
- ESP_LOGCONFIG(TAG, " Client ID: " LOG_SECRET("'%s'"), this->credentials_.client_id.c_str());
157
- ESP_LOGCONFIG(TAG, " Clean Session: %s", YESNO(this->credentials_.clean_session));
152
+ ESP_LOGCONFIG(TAG,
153
+ "MQTT:\n"
154
+ " Server Address: %s:%u (%s)\n"
155
+ " Username: " LOG_SECRET("'%s'") "\n"
156
+ " Client ID: " LOG_SECRET("'%s'") "\n"
157
+ " Clean Session: %s",
158
+ this->credentials_.address.c_str(), this->credentials_.port, this->ip_.str().c_str(),
159
+ this->credentials_.username.c_str(), this->credentials_.client_id.c_str(),
160
+ YESNO(this->credentials_.clean_session));
158
161
  if (this->is_discovery_ip_enabled()) {
159
162
  ESP_LOGCONFIG(TAG, " Discovery IP enabled");
160
163
  }
161
164
  if (!this->discovery_info_.prefix.empty()) {
162
- ESP_LOGCONFIG(TAG, " Discovery prefix: '%s'", this->discovery_info_.prefix.c_str());
163
- ESP_LOGCONFIG(TAG, " Discovery retain: %s", YESNO(this->discovery_info_.retain));
165
+ ESP_LOGCONFIG(TAG,
166
+ " Discovery prefix: '%s'\n"
167
+ " Discovery retain: %s",
168
+ this->discovery_info_.prefix.c_str(), YESNO(this->discovery_info_.retain));
164
169
  }
165
170
  ESP_LOGCONFIG(TAG, " Topic Prefix: '%s'", this->topic_prefix_.c_str());
166
171
  if (!this->log_message_.topic.empty()) {
@@ -201,13 +206,13 @@ void MQTTClientComponent::start_dnslookup_() {
201
206
  }
202
207
  case ERR_INPROGRESS: {
203
208
  // wait for callback
204
- ESP_LOGD(TAG, "Resolving MQTT broker IP address...");
209
+ ESP_LOGD(TAG, "Resolving broker IP address");
205
210
  break;
206
211
  }
207
212
  default:
208
213
  case ERR_ARG: {
209
214
  // error
210
- ESP_LOGW(TAG, "Error resolving MQTT broker IP address: %d", err);
215
+ ESP_LOGW(TAG, "Error resolving broker IP address: %d", err);
211
216
  break;
212
217
  }
213
218
  }
@@ -221,7 +226,7 @@ void MQTTClientComponent::check_dnslookup_() {
221
226
  }
222
227
 
223
228
  if (this->dns_resolve_error_) {
224
- ESP_LOGW(TAG, "Couldn't resolve IP address for '%s'!", this->credentials_.address.c_str());
229
+ ESP_LOGW(TAG, "Couldn't resolve IP address for '%s'", this->credentials_.address.c_str());
225
230
  this->state_ = MQTT_CLIENT_DISCONNECTED;
226
231
  return;
227
232
  }
@@ -251,7 +256,7 @@ void MQTTClientComponent::start_connect_() {
251
256
  if (!network::is_connected())
252
257
  return;
253
258
 
254
- ESP_LOGI(TAG, "Connecting to MQTT...");
259
+ ESP_LOGI(TAG, "Connecting");
255
260
  // Force disconnect first
256
261
  this->mqtt_backend_.disconnect();
257
262
 
@@ -292,7 +297,7 @@ void MQTTClientComponent::check_connected() {
292
297
  this->state_ = MQTT_CLIENT_CONNECTED;
293
298
  this->sent_birth_message_ = false;
294
299
  this->status_clear_warning();
295
- ESP_LOGI(TAG, "MQTT Connected!");
300
+ ESP_LOGI(TAG, "Connected");
296
301
  // MQTT Client needs some time to be fully set up.
297
302
  delay(100); // NOLINT
298
303
 
@@ -341,7 +346,7 @@ void MQTTClientComponent::loop() {
341
346
  if (!network::is_connected()) {
342
347
  reason_s = LOG_STR("WiFi disconnected");
343
348
  }
344
- ESP_LOGW(TAG, "MQTT Disconnected: %s.", LOG_STR_ARG(reason_s));
349
+ ESP_LOGW(TAG, "Disconnected: %s", LOG_STR_ARG(reason_s));
345
350
  this->disconnect_reason_.reset();
346
351
  }
347
352
 
@@ -364,7 +369,7 @@ void MQTTClientComponent::loop() {
364
369
  case MQTT_CLIENT_CONNECTED:
365
370
  if (!this->mqtt_backend_.connected()) {
366
371
  this->state_ = MQTT_CLIENT_DISCONNECTED;
367
- ESP_LOGW(TAG, "Lost MQTT Client connection!");
372
+ ESP_LOGW(TAG, "Lost client connection");
368
373
  this->start_dnslookup_();
369
374
  } else {
370
375
  if (!this->birth_message_.topic.empty() && !this->sent_birth_message_) {
@@ -378,7 +383,7 @@ void MQTTClientComponent::loop() {
378
383
  }
379
384
 
380
385
  if (millis() - this->last_connected_ > this->reboot_timeout_ && this->reboot_timeout_ != 0) {
381
- ESP_LOGE(TAG, "Can't connect to MQTT... Restarting...");
386
+ ESP_LOGE(TAG, "Can't connect; restarting");
382
387
  App.reboot();
383
388
  }
384
389
  }
@@ -396,7 +401,7 @@ bool MQTTClientComponent::subscribe_(const char *topic, uint8_t qos) {
396
401
  ESP_LOGV(TAG, "subscribe(topic='%s')", topic);
397
402
  } else {
398
403
  delay(5);
399
- ESP_LOGV(TAG, "Subscribe failed for topic='%s'. Will retry later.", topic);
404
+ ESP_LOGV(TAG, "Subscribe failed for topic='%s'. Will retry", topic);
400
405
  this->status_momentary_warning("subscribe", 1000);
401
406
  }
402
407
  return ret != 0;
@@ -499,7 +504,7 @@ bool MQTTClientComponent::publish(const MQTTMessage &message) {
499
504
  ESP_LOGV(TAG, "Publish(topic='%s' payload='%s' retain=%d qos=%d)", message.topic.c_str(), message.payload.c_str(),
500
505
  message.retain, message.qos);
501
506
  } else {
502
- ESP_LOGV(TAG, "Publish failed for topic='%s' (len=%u). will retry later..", message.topic.c_str(),
507
+ ESP_LOGV(TAG, "Publish failed for topic='%s' (len=%u). Will retry", message.topic.c_str(),
503
508
  message.payload.length());
504
509
  this->status_momentary_warning("publish", 1000);
505
510
  }
@@ -515,7 +520,7 @@ bool MQTTClientComponent::publish_json(const std::string &topic, const json::jso
515
520
  void MQTTClientComponent::enable() {
516
521
  if (this->state_ != MQTT_CLIENT_DISABLED)
517
522
  return;
518
- ESP_LOGD(TAG, "Enabling MQTT...");
523
+ ESP_LOGD(TAG, "Enabling");
519
524
  this->state_ = MQTT_CLIENT_DISCONNECTED;
520
525
  this->last_connected_ = millis();
521
526
  this->start_dnslookup_();
@@ -524,7 +529,7 @@ void MQTTClientComponent::enable() {
524
529
  void MQTTClientComponent::disable() {
525
530
  if (this->state_ == MQTT_CLIENT_DISABLED)
526
531
  return;
527
- ESP_LOGD(TAG, "Disabling MQTT...");
532
+ ESP_LOGD(TAG, "Disabling");
528
533
  this->state_ = MQTT_CLIENT_DISABLED;
529
534
  this->on_shutdown();
530
535
  }
@@ -721,9 +726,11 @@ void MQTTMessageTrigger::setup() {
721
726
  this->qos_);
722
727
  }
723
728
  void MQTTMessageTrigger::dump_config() {
724
- ESP_LOGCONFIG(TAG, "MQTT Message Trigger:");
725
- ESP_LOGCONFIG(TAG, " Topic: '%s'", this->topic_.c_str());
726
- ESP_LOGCONFIG(TAG, " QoS: %u", this->qos_);
729
+ ESP_LOGCONFIG(TAG,
730
+ "MQTT Message Trigger:\n"
731
+ " Topic: '%s'\n"
732
+ " QoS: %u",
733
+ this->topic_.c_str(), this->qos_);
727
734
  }
728
735
  float MQTTMessageTrigger::get_setup_priority() const { return setup_priority::AFTER_CONNECTION; }
729
736
 
@@ -64,11 +64,11 @@ bool MQTTComponent::send_discovery_() {
64
64
  const MQTTDiscoveryInfo &discovery_info = global_mqtt_client->get_discovery_info();
65
65
 
66
66
  if (discovery_info.clean) {
67
- ESP_LOGV(TAG, "'%s': Cleaning discovery...", this->friendly_name().c_str());
67
+ ESP_LOGV(TAG, "'%s': Cleaning discovery", this->friendly_name().c_str());
68
68
  return global_mqtt_client->publish(this->get_discovery_topic_(discovery_info), "", 0, this->qos_, true);
69
69
  }
70
70
 
71
- ESP_LOGV(TAG, "'%s': Sending discovery...", this->friendly_name().c_str());
71
+ ESP_LOGV(TAG, "'%s': Sending discovery", this->friendly_name().c_str());
72
72
 
73
73
  return global_mqtt_client->publish_json(
74
74
  this->get_discovery_topic_(discovery_info),
@@ -54,12 +54,16 @@ void MQTTCoverComponent::dump_config() {
54
54
  bool has_command_topic = traits.get_supports_position() || !traits.get_supports_tilt();
55
55
  LOG_MQTT_COMPONENT(true, has_command_topic)
56
56
  if (traits.get_supports_position()) {
57
- ESP_LOGCONFIG(TAG, " Position State Topic: '%s'", this->get_position_state_topic().c_str());
58
- ESP_LOGCONFIG(TAG, " Position Command Topic: '%s'", this->get_position_command_topic().c_str());
57
+ ESP_LOGCONFIG(TAG,
58
+ " Position State Topic: '%s'\n"
59
+ " Position Command Topic: '%s'",
60
+ this->get_position_state_topic().c_str(), this->get_position_command_topic().c_str());
59
61
  }
60
62
  if (traits.get_supports_tilt()) {
61
- ESP_LOGCONFIG(TAG, " Tilt State Topic: '%s'", this->get_tilt_state_topic().c_str());
62
- ESP_LOGCONFIG(TAG, " Tilt Command Topic: '%s'", this->get_tilt_command_topic().c_str());
63
+ ESP_LOGCONFIG(TAG,
64
+ " Tilt State Topic: '%s'\n"
65
+ " Tilt Command Topic: '%s'",
66
+ this->get_tilt_state_topic().c_str(), this->get_tilt_command_topic().c_str());
63
67
  }
64
68
  }
65
69
  void MQTTCoverComponent::send_discovery(JsonObject root, mqtt::SendDiscoveryConfig &config) {
@@ -121,16 +121,22 @@ void MQTTFanComponent::dump_config() {
121
121
  ESP_LOGCONFIG(TAG, "MQTT Fan '%s': ", this->state_->get_name().c_str());
122
122
  LOG_MQTT_COMPONENT(true, true);
123
123
  if (this->state_->get_traits().supports_direction()) {
124
- ESP_LOGCONFIG(TAG, " Direction State Topic: '%s'", this->get_direction_state_topic().c_str());
125
- ESP_LOGCONFIG(TAG, " Direction Command Topic: '%s'", this->get_direction_command_topic().c_str());
124
+ ESP_LOGCONFIG(TAG,
125
+ " Direction State Topic: '%s'\n"
126
+ " Direction Command Topic: '%s'",
127
+ this->get_direction_state_topic().c_str(), this->get_direction_command_topic().c_str());
126
128
  }
127
129
  if (this->state_->get_traits().supports_oscillation()) {
128
- ESP_LOGCONFIG(TAG, " Oscillation State Topic: '%s'", this->get_oscillation_state_topic().c_str());
129
- ESP_LOGCONFIG(TAG, " Oscillation Command Topic: '%s'", this->get_oscillation_command_topic().c_str());
130
+ ESP_LOGCONFIG(TAG,
131
+ " Oscillation State Topic: '%s'\n"
132
+ " Oscillation Command Topic: '%s'",
133
+ this->get_oscillation_state_topic().c_str(), this->get_oscillation_command_topic().c_str());
130
134
  }
131
135
  if (this->state_->get_traits().supports_speed()) {
132
- ESP_LOGCONFIG(TAG, " Speed Level State Topic: '%s'", this->get_speed_level_state_topic().c_str());
133
- ESP_LOGCONFIG(TAG, " Speed Level Command Topic: '%s'", this->get_speed_level_command_topic().c_str());
136
+ ESP_LOGCONFIG(TAG,
137
+ " Speed Level State Topic: '%s'\n"
138
+ " Speed Level Command Topic: '%s'",
139
+ this->get_speed_level_state_topic().c_str(), this->get_speed_level_command_topic().c_str());
134
140
  }
135
141
  }
136
142
 
@@ -42,8 +42,10 @@ void MQTTValveComponent::dump_config() {
42
42
  bool has_command_topic = traits.get_supports_position();
43
43
  LOG_MQTT_COMPONENT(true, has_command_topic)
44
44
  if (traits.get_supports_position()) {
45
- ESP_LOGCONFIG(TAG, " Position State Topic: '%s'", this->get_position_state_topic().c_str());
46
- ESP_LOGCONFIG(TAG, " Position Command Topic: '%s'", this->get_position_command_topic().c_str());
45
+ ESP_LOGCONFIG(TAG,
46
+ " Position State Topic: '%s'\n"
47
+ " Position Command Topic: '%s'",
48
+ this->get_position_state_topic().c_str(), this->get_position_command_topic().c_str());
47
49
  }
48
50
  }
49
51
  void MQTTValveComponent::send_discovery(JsonObject root, mqtt::SendDiscoveryConfig &config) {
@@ -15,7 +15,7 @@ static const uint8_t MS5611_CMD_CONV_D2 = 0x50;
15
15
  static const uint8_t MS5611_CMD_READ_PROM = 0xA2;
16
16
 
17
17
  void MS5611Component::setup() {
18
- ESP_LOGCONFIG(TAG, "Setting up MS5611...");
18
+ ESP_LOGCONFIG(TAG, "Running setup");
19
19
  if (!this->write_bytes(MS5611_CMD_RESET, nullptr, 0)) {
20
20
  this->mark_failed();
21
21
  return;
@@ -32,7 +32,7 @@ void MS5611Component::dump_config() {
32
32
  ESP_LOGCONFIG(TAG, "MS5611:");
33
33
  LOG_I2C_DEVICE(this);
34
34
  if (this->is_failed()) {
35
- ESP_LOGE(TAG, "Communication with MS5611 failed!");
35
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
36
36
  }
37
37
  LOG_UPDATE_INTERVAL(this);
38
38
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
@@ -67,7 +67,7 @@ static uint8_t crc4(uint16_t *buffer, size_t length);
67
67
  static uint8_t hsensor_crc_check(uint16_t value);
68
68
 
69
69
  void MS8607Component::setup() {
70
- ESP_LOGCONFIG(TAG, "Setting up MS8607...");
70
+ ESP_LOGCONFIG(TAG, "Running setup");
71
71
  this->error_code_ = ErrorCode::NONE;
72
72
  this->setup_status_ = SetupStatus::NEEDS_RESET;
73
73
 
@@ -140,7 +140,7 @@ void MS8607Component::dump_config() {
140
140
  // LOG_I2C_DEVICE doesn't work for humidity, the `address_` is protected. Log using get_address()
141
141
  ESP_LOGCONFIG(TAG, " Address: 0x%02X", this->humidity_device_->get_address());
142
142
  if (this->is_failed()) {
143
- ESP_LOGE(TAG, "Communication with MS8607 failed.");
143
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
144
144
  switch (this->error_code_) {
145
145
  case ErrorCode::PT_RESET_FAILED:
146
146
  ESP_LOGE(TAG, "Temperature/Pressure RESET failed");
@@ -1,7 +1,7 @@
1
1
  #include "msa3xx.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/hal.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  namespace esphome {
7
7
  namespace msa3xx {
@@ -118,7 +118,7 @@ const char *orientation_xy_to_string(OrientationXY orientation) {
118
118
  const char *orientation_z_to_string(bool orientation) { return orientation ? "Downwards looking" : "Upwards looking"; }
119
119
 
120
120
  void MSA3xxComponent::setup() {
121
- ESP_LOGCONFIG(TAG, "Setting up MSA3xx...");
121
+ ESP_LOGCONFIG(TAG, "Running setup");
122
122
 
123
123
  uint8_t part_id{0xff};
124
124
  if (!this->read_byte(static_cast<uint8_t>(RegisterMap::PART_ID), &part_id) || (part_id != MSA_3XX_PART_ID)) {
@@ -159,15 +159,19 @@ void MSA3xxComponent::dump_config() {
159
159
  ESP_LOGCONFIG(TAG, "MSA3xx:");
160
160
  LOG_I2C_DEVICE(this);
161
161
  if (this->is_failed()) {
162
- ESP_LOGE(TAG, "Communication with MSA3xx failed!");
162
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
163
163
  }
164
- ESP_LOGCONFIG(TAG, " Model: %s", model_to_string(this->model_));
165
- ESP_LOGCONFIG(TAG, " Power Mode: %s", power_mode_to_string(this->power_mode_));
166
- ESP_LOGCONFIG(TAG, " Bandwidth: %s", bandwidth_to_string(this->bandwidth_));
167
- ESP_LOGCONFIG(TAG, " Range: %s", range_to_string(this->range_));
168
- ESP_LOGCONFIG(TAG, " Resolution: %s", res_to_string(this->resolution_));
169
- ESP_LOGCONFIG(TAG, " Offsets: {%.3f m/s², %.3f m/s², %.3f m/s²}", this->offset_x_, this->offset_y_, this->offset_z_);
170
- ESP_LOGCONFIG(TAG, " Transform: {mirror_x=%s, mirror_y=%s, mirror_z=%s, swap_xy=%s}", YESNO(this->swap_.x_polarity),
164
+ ESP_LOGCONFIG(TAG,
165
+ " Model: %s\n"
166
+ " Power Mode: %s\n"
167
+ " Bandwidth: %s\n"
168
+ " Range: %s\n"
169
+ " Resolution: %s\n"
170
+ " Offsets: {%.3f m/s², %.3f m/s², %.3f m/s²}\n"
171
+ " Transform: {mirror_x=%s, mirror_y=%s, mirror_z=%s, swap_xy=%s}",
172
+ model_to_string(this->model_), power_mode_to_string(this->power_mode_),
173
+ bandwidth_to_string(this->bandwidth_), range_to_string(this->range_), res_to_string(this->resolution_),
174
+ this->offset_x_, this->offset_y_, this->offset_z_, YESNO(this->swap_.x_polarity),
171
175
  YESNO(this->swap_.y_polarity), YESNO(this->swap_.z_polarity), YESNO(this->swap_.x_y_swap));
172
176
  LOG_UPDATE_INTERVAL(this);
173
177
 
@@ -248,10 +252,10 @@ void MSA3xxComponent::loop() {
248
252
  }
249
253
 
250
254
  void MSA3xxComponent::update() {
251
- ESP_LOGV(TAG, "Updating MSA3xx...");
255
+ ESP_LOGV(TAG, "Updating");
252
256
 
253
257
  if (!this->is_ready()) {
254
- ESP_LOGV(TAG, "Component MSA3xx not ready for update");
258
+ ESP_LOGV(TAG, "Not ready for update");
255
259
  return;
256
260
  }
257
261
  ESP_LOGV(TAG, "Acceleration: {x = %+1.3f m/s², y = %+1.3f m/s², z = %+1.3f m/s²}; ", this->data_.x, this->data_.y,
@@ -1,6 +1,6 @@
1
1
  #include "my9231.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 my9231 {
@@ -28,7 +28,7 @@ static const uint8_t MY9231_CMD_SCATTER_APDM = 0x0 << 0;
28
28
  static const uint8_t MY9231_CMD_SCATTER_PWM = 0x1 << 0;
29
29
 
30
30
  void MY9231OutputComponent::setup() {
31
- ESP_LOGCONFIG(TAG, "Setting up MY9231OutputComponent...");
31
+ ESP_LOGCONFIG(TAG, "Running setup");
32
32
  this->pin_di_->setup();
33
33
  this->pin_di_->digital_write(false);
34
34
  this->pin_dcki_->setup();
@@ -63,9 +63,11 @@ void MY9231OutputComponent::dump_config() {
63
63
  ESP_LOGCONFIG(TAG, "MY9231:");
64
64
  LOG_PIN(" DI Pin: ", this->pin_di_);
65
65
  LOG_PIN(" DCKI Pin: ", this->pin_dcki_);
66
- ESP_LOGCONFIG(TAG, " Total number of channels: %u", this->num_channels_);
67
- ESP_LOGCONFIG(TAG, " Number of chips: %u", this->num_chips_);
68
- ESP_LOGCONFIG(TAG, " Bit depth: %u", this->bit_depth_);
66
+ ESP_LOGCONFIG(TAG,
67
+ " Total number of channels: %u\n"
68
+ " Number of chips: %u\n"
69
+ " Bit depth: %u",
70
+ this->num_channels_, this->num_chips_, this->bit_depth_);
69
71
  }
70
72
  void MY9231OutputComponent::loop() {
71
73
  if (!this->update_)
@@ -52,8 +52,8 @@ static const uint8_t POWER_PGA_CAP_EN = 0x80;
52
52
  static const uint8_t DEVICE_REV = 0x1F;
53
53
 
54
54
  void NAU7802Sensor::setup() {
55
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
55
56
  i2c::I2CRegister pu_ctrl = this->reg(PU_CTRL_REG);
56
- ESP_LOGCONFIG(TAG, "Setting up NAU7802 '%s'...", this->name_.c_str());
57
57
  uint8_t rev;
58
58
 
59
59
  if (this->read_register(DEVICE_REV | READ_BIT, &rev, 1)) {
@@ -127,12 +127,14 @@ void NAU7802Sensor::dump_config() {
127
127
  LOG_I2C_DEVICE(this);
128
128
 
129
129
  if (this->is_failed()) {
130
- ESP_LOGE(TAG, "Communication with NAU7802 failed earlier, during setup");
130
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL_FOR, this->get_name().c_str());
131
131
  return;
132
132
  }
133
133
  // Note these may differ from the values on the device if calbration has been run
134
- ESP_LOGCONFIG(TAG, " Offset Calibration: %s", to_string(this->offset_calibration_).c_str());
135
- ESP_LOGCONFIG(TAG, " Gain Calibration: %f", this->gain_calibration_);
134
+ ESP_LOGCONFIG(TAG,
135
+ " Offset Calibration: %s\n"
136
+ " Gain Calibration: %f",
137
+ to_string(this->offset_calibration_).c_str(), this->gain_calibration_);
136
138
 
137
139
  std::string voltage = "unknown";
138
140
  switch (this->ldo_) {
@@ -2,10 +2,10 @@
2
2
 
3
3
  #ifdef USE_ARDUINO
4
4
 
5
- #include "esphome/core/macros.h"
5
+ #include "esphome/core/color.h"
6
6
  #include "esphome/core/component.h"
7
7
  #include "esphome/core/helpers.h"
8
- #include "esphome/core/color.h"
8
+ #include "esphome/core/macros.h"
9
9
  #include "esphome/components/light/light_output.h"
10
10
  #include "esphome/components/light/addressable_light.h"
11
11
 
@@ -5,8 +5,8 @@
5
5
  #include <string>
6
6
  #include <cstdio>
7
7
  #include <array>
8
- #include "esphome/core/macros.h"
9
8
  #include "esphome/core/helpers.h"
9
+ #include "esphome/core/macros.h"
10
10
 
11
11
  #if defined(USE_ESP_IDF) || defined(USE_LIBRETINY) || USE_ARDUINO_VERSION_CODE > VERSION_CODE(3, 0, 0)
12
12
  #include <lwip/ip_addr.h>
@@ -9,6 +9,10 @@
9
9
  #include "esphome/components/ethernet/ethernet_component.h"
10
10
  #endif
11
11
 
12
+ #ifdef USE_OPENTHREAD
13
+ #include "esphome/components/openthread/openthread.h"
14
+ #endif
15
+
12
16
  namespace esphome {
13
17
  namespace network {
14
18
 
@@ -23,6 +27,11 @@ bool is_connected() {
23
27
  return wifi::global_wifi_component->is_connected();
24
28
  #endif
25
29
 
30
+ #ifdef USE_OPENTHREAD
31
+ if (openthread::global_openthread_component != nullptr)
32
+ return openthread::global_openthread_component->is_connected();
33
+ #endif
34
+
26
35
  #ifdef USE_HOST
27
36
  return true; // Assume its connected
28
37
  #endif
@@ -45,6 +54,10 @@ network::IPAddresses get_ip_addresses() {
45
54
  #ifdef USE_WIFI
46
55
  if (wifi::global_wifi_component != nullptr)
47
56
  return wifi::global_wifi_component->get_ip_addresses();
57
+ #endif
58
+ #ifdef USE_OPENTHREAD
59
+ if (openthread::global_openthread_component != nullptr)
60
+ return openthread::global_openthread_component->get_ip_addresses();
48
61
  #endif
49
62
  return {};
50
63
  }
@@ -14,6 +14,8 @@ CONF_COMPONENT_NAME = "component_name"
14
14
  CONF_EXIT_REPARSE_ON_START = "exit_reparse_on_start"
15
15
  CONF_FONT_ID = "font_id"
16
16
  CONF_FOREGROUND_PRESSED_COLOR = "foreground_pressed_color"
17
+ CONF_MAX_COMMANDS_PER_LOOP = "max_commands_per_loop"
18
+ CONF_MAX_QUEUE_SIZE = "max_queue_size"
17
19
  CONF_ON_BUFFER_OVERFLOW = "on_buffer_overflow"
18
20
  CONF_ON_PAGE = "on_page"
19
21
  CONF_ON_SETUP = "on_setup"
@@ -16,7 +16,7 @@ void NextionBinarySensor::process_bool(const std::string &variable_name, bool st
16
16
 
17
17
  if (this->variable_name_ == variable_name) {
18
18
  this->publish_state(state);
19
- ESP_LOGD(TAG, "Processed binarysensor \"%s\" state %s", variable_name.c_str(), state ? "ON" : "OFF");
19
+ ESP_LOGD(TAG, "Binary sensor: %s=%s", variable_name.c_str(), ONOFF(state));
20
20
  }
21
21
  }
22
22
 
@@ -61,8 +61,7 @@ void NextionBinarySensor::set_state(bool state, bool publish, bool send_to_nexti
61
61
 
62
62
  this->update_component_settings();
63
63
 
64
- ESP_LOGN(TAG, "Wrote state for sensor \"%s\" state %s", this->variable_name_.c_str(),
65
- ONOFF(this->variable_name_.c_str()));
64
+ ESP_LOGN(TAG, "Write: %s=%s", this->variable_name_.c_str(), ONOFF(this->state));
66
65
  }
67
66
 
68
67
  } // namespace nextion
@@ -16,10 +16,12 @@ from .base_component import (
16
16
  CONF_AUTO_WAKE_ON_TOUCH,
17
17
  CONF_COMMAND_SPACING,
18
18
  CONF_EXIT_REPARSE_ON_START,
19
+ CONF_MAX_COMMANDS_PER_LOOP,
20
+ CONF_MAX_QUEUE_SIZE,
19
21
  CONF_ON_BUFFER_OVERFLOW,
22
+ CONF_ON_PAGE,
20
23
  CONF_ON_SETUP,
21
24
  CONF_ON_SLEEP,
22
- CONF_ON_PAGE,
23
25
  CONF_ON_WAKE,
24
26
  CONF_SKIP_CONNECTION_HANDSHAKE,
25
27
  CONF_START_UP_PAGE,
@@ -49,26 +51,35 @@ CONFIG_SCHEMA = (
49
51
  display.BASIC_DISPLAY_SCHEMA.extend(
50
52
  {
51
53
  cv.GenerateID(): cv.declare_id(Nextion),
52
- cv.Optional(CONF_TFT_URL): cv.url,
54
+ cv.Optional(CONF_AUTO_WAKE_ON_TOUCH, default=True): cv.boolean,
53
55
  cv.Optional(CONF_BRIGHTNESS): cv.percentage,
54
- cv.Optional(CONF_ON_SETUP): automation.validate_automation(
56
+ cv.Optional(CONF_COMMAND_SPACING): cv.All(
57
+ cv.positive_time_period_milliseconds,
58
+ cv.Range(max=TimePeriod(milliseconds=255)),
59
+ ),
60
+ cv.Optional(CONF_EXIT_REPARSE_ON_START, default=False): cv.boolean,
61
+ cv.Optional(CONF_MAX_COMMANDS_PER_LOOP): cv.uint16_t,
62
+ cv.Optional(CONF_MAX_QUEUE_SIZE): cv.positive_int,
63
+ cv.Optional(CONF_ON_BUFFER_OVERFLOW): automation.validate_automation(
55
64
  {
56
- cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(SetupTrigger),
65
+ cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
66
+ BufferOverflowTrigger
67
+ ),
57
68
  }
58
69
  ),
59
- cv.Optional(CONF_ON_SLEEP): automation.validate_automation(
70
+ cv.Optional(CONF_ON_PAGE): automation.validate_automation(
60
71
  {
61
- cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(SleepTrigger),
72
+ cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(PageTrigger),
62
73
  }
63
74
  ),
64
- cv.Optional(CONF_ON_WAKE): automation.validate_automation(
75
+ cv.Optional(CONF_ON_SETUP): automation.validate_automation(
65
76
  {
66
- cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(WakeTrigger),
77
+ cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(SetupTrigger),
67
78
  }
68
79
  ),
69
- cv.Optional(CONF_ON_PAGE): automation.validate_automation(
80
+ cv.Optional(CONF_ON_SLEEP): automation.validate_automation(
70
81
  {
71
- cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(PageTrigger),
82
+ cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(SleepTrigger),
72
83
  }
73
84
  ),
74
85
  cv.Optional(CONF_ON_TOUCH): automation.validate_automation(
@@ -76,23 +87,16 @@ CONFIG_SCHEMA = (
76
87
  cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(TouchTrigger),
77
88
  }
78
89
  ),
79
- cv.Optional(CONF_ON_BUFFER_OVERFLOW): automation.validate_automation(
90
+ cv.Optional(CONF_ON_WAKE): automation.validate_automation(
80
91
  {
81
- cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
82
- BufferOverflowTrigger
83
- ),
92
+ cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(WakeTrigger),
84
93
  }
85
94
  ),
95
+ cv.Optional(CONF_SKIP_CONNECTION_HANDSHAKE, default=False): cv.boolean,
96
+ cv.Optional(CONF_START_UP_PAGE): cv.uint8_t,
97
+ cv.Optional(CONF_TFT_URL): cv.url,
86
98
  cv.Optional(CONF_TOUCH_SLEEP_TIMEOUT): cv.int_range(min=3, max=65535),
87
99
  cv.Optional(CONF_WAKE_UP_PAGE): cv.uint8_t,
88
- cv.Optional(CONF_START_UP_PAGE): cv.uint8_t,
89
- cv.Optional(CONF_AUTO_WAKE_ON_TOUCH, default=True): cv.boolean,
90
- cv.Optional(CONF_EXIT_REPARSE_ON_START, default=False): cv.boolean,
91
- cv.Optional(CONF_SKIP_CONNECTION_HANDSHAKE, default=False): cv.boolean,
92
- cv.Optional(CONF_COMMAND_SPACING): cv.All(
93
- cv.positive_time_period_milliseconds,
94
- cv.Range(max=TimePeriod(milliseconds=255)),
95
- ),
96
100
  }
97
101
  )
98
102
  .extend(cv.polling_component_schema("5s"))
@@ -125,6 +129,10 @@ async def to_code(config):
125
129
  var = cg.new_Pvariable(config[CONF_ID])
126
130
  await uart.register_uart_device(var, config)
127
131
 
132
+ if max_queue_size := config.get(CONF_MAX_QUEUE_SIZE):
133
+ cg.add_define("USE_NEXTION_MAX_QUEUE_SIZE")
134
+ cg.add(var.set_max_queue_size(max_queue_size))
135
+
128
136
  if command_spacing := config.get(CONF_COMMAND_SPACING):
129
137
  cg.add_define("USE_NEXTION_COMMAND_SPACING")
130
138
  cg.add(var.set_command_spacing(command_spacing.total_milliseconds))
@@ -167,6 +175,10 @@ async def to_code(config):
167
175
 
168
176
  cg.add(var.set_skip_connection_handshake(config[CONF_SKIP_CONNECTION_HANDSHAKE]))
169
177
 
178
+ if max_commands_per_loop := config.get(CONF_MAX_COMMANDS_PER_LOOP):
179
+ cg.add_define("USE_NEXTION_MAX_COMMANDS_PER_LOOP")
180
+ cg.add(var.set_max_commands_per_loop(max_commands_per_loop))
181
+
170
182
  await display.register_display(var, config)
171
183
 
172
184
  for conf in config.get(CONF_ON_SETUP, []):