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
esphome/__main__.py CHANGED
@@ -134,6 +134,7 @@ def get_port_type(port):
134
134
 
135
135
 
136
136
  def run_miniterm(config, port, args):
137
+ from aioesphomeapi import LogParser
137
138
  import serial
138
139
 
139
140
  from esphome import platformio_api
@@ -158,6 +159,7 @@ def run_miniterm(config, port, args):
158
159
  ser.dtr = False
159
160
  ser.rts = False
160
161
 
162
+ parser = LogParser()
161
163
  tries = 0
162
164
  while tries < 5:
163
165
  try:
@@ -174,8 +176,7 @@ def run_miniterm(config, port, args):
174
176
  .decode("utf8", "backslashreplace")
175
177
  )
176
178
  time_str = datetime.now().time().strftime("[%H:%M:%S]")
177
- message = time_str + line
178
- safe_print(message)
179
+ safe_print(parser.parse_line(line, time_str))
179
180
 
180
181
  backtrace_state = platformio_api.process_stacktrace(
181
182
  config, line, backtrace_state=backtrace_state
@@ -593,15 +594,20 @@ def command_update_all(args):
593
594
  middle_text = f" {middle_text} "
594
595
  width = len(click.unstyle(middle_text))
595
596
  half_line = "=" * ((twidth - width) // 2)
596
- click.echo(f"{half_line}{middle_text}{half_line}")
597
+ safe_print(f"{half_line}{middle_text}{half_line}")
597
598
 
598
599
  for f in files:
599
- print(f"Updating {color(AnsiFore.CYAN, f)}")
600
- print("-" * twidth)
601
- print()
602
- rc = run_external_process(
603
- "esphome", "--dashboard", "run", f, "--no-logs", "--device", "OTA"
604
- )
600
+ safe_print(f"Updating {color(AnsiFore.CYAN, f)}")
601
+ safe_print("-" * twidth)
602
+ safe_print()
603
+ if CORE.dashboard:
604
+ rc = run_external_process(
605
+ "esphome", "--dashboard", "run", f, "--no-logs", "--device", "OTA"
606
+ )
607
+ else:
608
+ rc = run_external_process(
609
+ "esphome", "run", f, "--no-logs", "--device", "OTA"
610
+ )
605
611
  if rc == 0:
606
612
  print_bar(f"[{color(AnsiFore.BOLD_GREEN, 'SUCCESS')}] {f}")
607
613
  success[f] = True
@@ -609,17 +615,17 @@ def command_update_all(args):
609
615
  print_bar(f"[{color(AnsiFore.BOLD_RED, 'ERROR')}] {f}")
610
616
  success[f] = False
611
617
 
612
- print()
613
- print()
614
- print()
618
+ safe_print()
619
+ safe_print()
620
+ safe_print()
615
621
 
616
622
  print_bar(f"[{color(AnsiFore.BOLD_WHITE, 'SUMMARY')}]")
617
623
  failed = 0
618
624
  for f in files:
619
625
  if success[f]:
620
- print(f" - {f}: {color(AnsiFore.GREEN, 'SUCCESS')}")
626
+ safe_print(f" - {f}: {color(AnsiFore.GREEN, 'SUCCESS')}")
621
627
  else:
622
- print(f" - {f}: {color(AnsiFore.BOLD_RED, 'FAILED')}")
628
+ safe_print(f" - {f}: {color(AnsiFore.BOLD_RED, 'FAILED')}")
623
629
  failed += 1
624
630
  return failed
625
631
 
@@ -7,7 +7,7 @@ namespace a4988 {
7
7
  static const char *const TAG = "a4988.stepper";
8
8
 
9
9
  void A4988::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up A4988...");
10
+ ESP_LOGCONFIG(TAG, "Running setup");
11
11
  if (this->sleep_pin_ != nullptr) {
12
12
  this->sleep_pin_->setup();
13
13
  this->sleep_pin_->digital_write(false);
@@ -7,7 +7,7 @@ namespace absolute_humidity {
7
7
  static const char *const TAG = "absolute_humidity.sensor";
8
8
 
9
9
  void AbsoluteHumidityComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Setting up absolute humidity '%s'...", this->get_name().c_str());
10
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
11
11
 
12
12
  ESP_LOGD(TAG, " Added callback for temperature '%s'", this->temperature_sensor_->get_name().c_str());
13
13
  this->temperature_sensor_->add_on_state_callback([this](float state) { this->temperature_callback_(state); });
@@ -40,9 +40,11 @@ void AbsoluteHumidityComponent::dump_config() {
40
40
  break;
41
41
  }
42
42
 
43
- ESP_LOGCONFIG(TAG, "Sources");
44
- ESP_LOGCONFIG(TAG, " Temperature: '%s'", this->temperature_sensor_->get_name().c_str());
45
- ESP_LOGCONFIG(TAG, " Relative Humidity: '%s'", this->humidity_sensor_->get_name().c_str());
43
+ ESP_LOGCONFIG(TAG,
44
+ "Sources\n"
45
+ " Temperature: '%s'\n"
46
+ " Relative Humidity: '%s'",
47
+ this->temperature_sensor_->get_name().c_str(), this->humidity_sensor_->get_name().c_str());
46
48
  }
47
49
 
48
50
  float AbsoluteHumidityComponent::get_setup_priority() const { return setup_priority::DATA; }
@@ -214,8 +214,10 @@ void AcDimmer::dump_config() {
214
214
  ESP_LOGCONFIG(TAG, "AcDimmer:");
215
215
  LOG_PIN(" Output Pin: ", this->gate_pin_);
216
216
  LOG_PIN(" Zero-Cross Pin: ", this->zero_cross_pin_);
217
- ESP_LOGCONFIG(TAG, " Min Power: %.1f%%", this->store_.min_power / 10.0f);
218
- ESP_LOGCONFIG(TAG, " Init with half cycle: %s", YESNO(this->init_with_half_cycle_));
217
+ ESP_LOGCONFIG(TAG,
218
+ " Min Power: %.1f%%\n"
219
+ " Init with half cycle: %s",
220
+ this->store_.min_power / 10.0f, YESNO(this->init_with_half_cycle_));
219
221
  if (method_ == DIM_METHOD_LEADING_PULSE) {
220
222
  ESP_LOGCONFIG(TAG, " Method: leading pulse");
221
223
  } else if (method_ == DIM_METHOD_LEADING) {
@@ -22,7 +22,7 @@ static const int ADC_MAX = (1 << SOC_ADC_RTC_MAX_BITWIDTH) - 1;
22
22
  static const int ADC_HALF = (1 << SOC_ADC_RTC_MAX_BITWIDTH) >> 1;
23
23
 
24
24
  void ADCSensor::setup() {
25
- ESP_LOGCONFIG(TAG, "Setting up ADC '%s'...", this->get_name().c_str());
25
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
26
26
 
27
27
  if (this->channel1_ != ADC1_CHANNEL_MAX) {
28
28
  adc1_config_width(ADC_WIDTH_MAX_SOC_BITS);
@@ -77,8 +77,10 @@ void ADCSensor::dump_config() {
77
77
  break;
78
78
  }
79
79
  }
80
- ESP_LOGCONFIG(TAG, " Samples: %i", this->sample_count_);
81
- ESP_LOGCONFIG(TAG, " Sampling mode: %s", LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
80
+ ESP_LOGCONFIG(TAG,
81
+ " Samples: %i\n"
82
+ " Sampling mode: %s",
83
+ this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
82
84
  LOG_UPDATE_INTERVAL(this);
83
85
  }
84
86
 
@@ -17,7 +17,7 @@ namespace adc {
17
17
  static const char *const TAG = "adc.esp8266";
18
18
 
19
19
  void ADCSensor::setup() {
20
- ESP_LOGCONFIG(TAG, "Setting up ADC '%s'...", this->get_name().c_str());
20
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
21
21
  #ifndef USE_ADC_SENSOR_VCC
22
22
  this->pin_->setup();
23
23
  #endif
@@ -30,8 +30,10 @@ void ADCSensor::dump_config() {
30
30
  #else
31
31
  LOG_PIN(" Pin: ", this->pin_);
32
32
  #endif // USE_ADC_SENSOR_VCC
33
- ESP_LOGCONFIG(TAG, " Samples: %i", this->sample_count_);
34
- ESP_LOGCONFIG(TAG, " Sampling mode: %s", LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
33
+ ESP_LOGCONFIG(TAG,
34
+ " Samples: %i\n"
35
+ " Sampling mode: %s",
36
+ this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
35
37
  LOG_UPDATE_INTERVAL(this);
36
38
  }
37
39
 
@@ -9,7 +9,7 @@ namespace adc {
9
9
  static const char *const TAG = "adc.libretiny";
10
10
 
11
11
  void ADCSensor::setup() {
12
- ESP_LOGCONFIG(TAG, "Setting up ADC '%s'...", this->get_name().c_str());
12
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
13
13
  #ifndef USE_ADC_SENSOR_VCC
14
14
  this->pin_->setup();
15
15
  #endif // !USE_ADC_SENSOR_VCC
@@ -22,8 +22,10 @@ void ADCSensor::dump_config() {
22
22
  #else // USE_ADC_SENSOR_VCC
23
23
  LOG_PIN(" Pin: ", this->pin_);
24
24
  #endif // USE_ADC_SENSOR_VCC
25
- ESP_LOGCONFIG(TAG, " Samples: %i", this->sample_count_);
26
- ESP_LOGCONFIG(TAG, " Sampling mode: %s", LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
25
+ ESP_LOGCONFIG(TAG,
26
+ " Samples: %i\n"
27
+ " Sampling mode: %s",
28
+ this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
27
29
  LOG_UPDATE_INTERVAL(this);
28
30
  }
29
31
 
@@ -14,7 +14,7 @@ namespace adc {
14
14
  static const char *const TAG = "adc.rp2040";
15
15
 
16
16
  void ADCSensor::setup() {
17
- ESP_LOGCONFIG(TAG, "Setting up ADC '%s'...", this->get_name().c_str());
17
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
18
18
  static bool initialized = false;
19
19
  if (!initialized) {
20
20
  adc_init();
@@ -33,8 +33,10 @@ void ADCSensor::dump_config() {
33
33
  LOG_PIN(" Pin: ", this->pin_);
34
34
  #endif // USE_ADC_SENSOR_VCC
35
35
  }
36
- ESP_LOGCONFIG(TAG, " Samples: %i", this->sample_count_);
37
- ESP_LOGCONFIG(TAG, " Sampling mode: %s", LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
36
+ ESP_LOGCONFIG(TAG,
37
+ " Samples: %i\n"
38
+ " Sampling mode: %s",
39
+ this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
38
40
  LOG_UPDATE_INTERVAL(this);
39
41
  }
40
42
 
@@ -9,7 +9,7 @@ static const char *const TAG = "adc128s102";
9
9
  float ADC128S102::get_setup_priority() const { return setup_priority::HARDWARE; }
10
10
 
11
11
  void ADC128S102::setup() {
12
- ESP_LOGCONFIG(TAG, "Setting up adc128s102");
12
+ ESP_LOGCONFIG(TAG, "Running setup");
13
13
  this->spi_setup();
14
14
  }
15
15
 
@@ -177,11 +177,14 @@ void ADE7880::dump_config() {
177
177
  LOG_SENSOR(" ", "Power Factor", this->channel_a_->power_factor);
178
178
  LOG_SENSOR(" ", "Forward Active Energy", this->channel_a_->forward_active_energy);
179
179
  LOG_SENSOR(" ", "Reverse Active Energy", this->channel_a_->reverse_active_energy);
180
- ESP_LOGCONFIG(TAG, " Calibration:");
181
- ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_a_->current_gain_calibration);
182
- ESP_LOGCONFIG(TAG, " Voltage: %" PRId32, this->channel_a_->voltage_gain_calibration);
183
- ESP_LOGCONFIG(TAG, " Power: %" PRId32, this->channel_a_->power_gain_calibration);
184
- ESP_LOGCONFIG(TAG, " Phase Angle: %u", this->channel_a_->phase_angle_calibration);
180
+ ESP_LOGCONFIG(TAG,
181
+ " Calibration:\n"
182
+ " Current: %" PRId32 "\n"
183
+ " Voltage: %" PRId32 "\n"
184
+ " Power: %" PRId32 "\n"
185
+ " Phase Angle: %u",
186
+ this->channel_a_->current_gain_calibration, this->channel_a_->voltage_gain_calibration,
187
+ this->channel_a_->power_gain_calibration, this->channel_a_->phase_angle_calibration);
185
188
  }
186
189
 
187
190
  if (this->channel_b_ != nullptr) {
@@ -193,11 +196,14 @@ void ADE7880::dump_config() {
193
196
  LOG_SENSOR(" ", "Power Factor", this->channel_b_->power_factor);
194
197
  LOG_SENSOR(" ", "Forward Active Energy", this->channel_b_->forward_active_energy);
195
198
  LOG_SENSOR(" ", "Reverse Active Energy", this->channel_b_->reverse_active_energy);
196
- ESP_LOGCONFIG(TAG, " Calibration:");
197
- ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_b_->current_gain_calibration);
198
- ESP_LOGCONFIG(TAG, " Voltage: %" PRId32, this->channel_b_->voltage_gain_calibration);
199
- ESP_LOGCONFIG(TAG, " Power: %" PRId32, this->channel_b_->power_gain_calibration);
200
- ESP_LOGCONFIG(TAG, " Phase Angle: %u", this->channel_b_->phase_angle_calibration);
199
+ ESP_LOGCONFIG(TAG,
200
+ " Calibration:\n"
201
+ " Current: %" PRId32 "\n"
202
+ " Voltage: %" PRId32 "\n"
203
+ " Power: %" PRId32 "\n"
204
+ " Phase Angle: %u",
205
+ this->channel_b_->current_gain_calibration, this->channel_b_->voltage_gain_calibration,
206
+ this->channel_b_->power_gain_calibration, this->channel_b_->phase_angle_calibration);
201
207
  }
202
208
 
203
209
  if (this->channel_c_ != nullptr) {
@@ -209,18 +215,23 @@ void ADE7880::dump_config() {
209
215
  LOG_SENSOR(" ", "Power Factor", this->channel_c_->power_factor);
210
216
  LOG_SENSOR(" ", "Forward Active Energy", this->channel_c_->forward_active_energy);
211
217
  LOG_SENSOR(" ", "Reverse Active Energy", this->channel_c_->reverse_active_energy);
212
- ESP_LOGCONFIG(TAG, " Calibration:");
213
- ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_c_->current_gain_calibration);
214
- ESP_LOGCONFIG(TAG, " Voltage: %" PRId32, this->channel_c_->voltage_gain_calibration);
215
- ESP_LOGCONFIG(TAG, " Power: %" PRId32, this->channel_c_->power_gain_calibration);
216
- ESP_LOGCONFIG(TAG, " Phase Angle: %u", this->channel_c_->phase_angle_calibration);
218
+ ESP_LOGCONFIG(TAG,
219
+ " Calibration:\n"
220
+ " Current: %" PRId32 "\n"
221
+ " Voltage: %" PRId32 "\n"
222
+ " Power: %" PRId32 "\n"
223
+ " Phase Angle: %u",
224
+ this->channel_c_->current_gain_calibration, this->channel_c_->voltage_gain_calibration,
225
+ this->channel_c_->power_gain_calibration, this->channel_c_->phase_angle_calibration);
217
226
  }
218
227
 
219
228
  if (this->channel_n_ != nullptr) {
220
229
  ESP_LOGCONFIG(TAG, " Neutral:");
221
230
  LOG_SENSOR(" ", "Current", this->channel_n_->current);
222
- ESP_LOGCONFIG(TAG, " Calibration:");
223
- ESP_LOGCONFIG(TAG, " Current: %" PRId32, this->channel_n_->current_gain_calibration);
231
+ ESP_LOGCONFIG(TAG,
232
+ " Calibration:\n"
233
+ " Current: %" PRId32,
234
+ this->channel_n_->current_gain_calibration);
224
235
  }
225
236
 
226
237
  LOG_I2C_DEVICE(this);
@@ -58,15 +58,18 @@ void ADE7953::dump_config() {
58
58
  LOG_SENSOR(" ", "Active Power B Sensor", this->active_power_b_sensor_);
59
59
  LOG_SENSOR(" ", "Rective Power A Sensor", this->reactive_power_a_sensor_);
60
60
  LOG_SENSOR(" ", "Reactive Power B Sensor", this->reactive_power_b_sensor_);
61
- ESP_LOGCONFIG(TAG, " USE_ACC_ENERGY_REGS: %d", this->use_acc_energy_regs_);
62
- ESP_LOGCONFIG(TAG, " PGA_V_8: 0x%X", pga_v_);
63
- ESP_LOGCONFIG(TAG, " PGA_IA_8: 0x%X", pga_ia_);
64
- ESP_LOGCONFIG(TAG, " PGA_IB_8: 0x%X", pga_ib_);
65
- ESP_LOGCONFIG(TAG, " VGAIN_32: 0x%08jX", (uintmax_t) vgain_);
66
- ESP_LOGCONFIG(TAG, " AIGAIN_32: 0x%08jX", (uintmax_t) aigain_);
67
- ESP_LOGCONFIG(TAG, " BIGAIN_32: 0x%08jX", (uintmax_t) bigain_);
68
- ESP_LOGCONFIG(TAG, " AWGAIN_32: 0x%08jX", (uintmax_t) awgain_);
69
- ESP_LOGCONFIG(TAG, " BWGAIN_32: 0x%08jX", (uintmax_t) bwgain_);
61
+ ESP_LOGCONFIG(TAG,
62
+ " USE_ACC_ENERGY_REGS: %d\n"
63
+ " PGA_V_8: 0x%X\n"
64
+ " PGA_IA_8: 0x%X\n"
65
+ " PGA_IB_8: 0x%X\n"
66
+ " VGAIN_32: 0x%08jX\n"
67
+ " AIGAIN_32: 0x%08jX\n"
68
+ " BIGAIN_32: 0x%08jX\n"
69
+ " AWGAIN_32: 0x%08jX\n"
70
+ " BWGAIN_32: 0x%08jX",
71
+ this->use_acc_energy_regs_, pga_v_, pga_ia_, pga_ib_, (uintmax_t) vgain_, (uintmax_t) aigain_,
72
+ (uintmax_t) bigain_, (uintmax_t) awgain_, (uintmax_t) bwgain_);
70
73
  }
71
74
 
72
75
  #define ADE_PUBLISH_(name, val, factor) \
@@ -1,6 +1,6 @@
1
1
  #include "ade7953_i2c.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 ade7953_i2c {
@@ -1,6 +1,6 @@
1
1
  #include "ade7953_spi.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 ade7953_spi {
@@ -10,15 +10,13 @@ static const uint8_t ADS1115_REGISTER_CONVERSION = 0x00;
10
10
  static const uint8_t ADS1115_REGISTER_CONFIG = 0x01;
11
11
 
12
12
  void ADS1115Component::setup() {
13
- ESP_LOGCONFIG(TAG, "Setting up ADS1115...");
13
+ ESP_LOGCONFIG(TAG, "Running setup");
14
14
  uint16_t value;
15
15
  if (!this->read_byte_16(ADS1115_REGISTER_CONVERSION, &value)) {
16
16
  this->mark_failed();
17
17
  return;
18
18
  }
19
19
 
20
- ESP_LOGCONFIG(TAG, "Configuring ADS1115...");
21
-
22
20
  uint16_t config = 0;
23
21
  // Clear single-shot bit
24
22
  // 0b0xxxxxxxxxxxxxxx
@@ -68,10 +66,10 @@ void ADS1115Component::setup() {
68
66
  this->prev_config_ = config;
69
67
  }
70
68
  void ADS1115Component::dump_config() {
71
- ESP_LOGCONFIG(TAG, "Setting up ADS1115...");
69
+ ESP_LOGCONFIG(TAG, "ADS1115:");
72
70
  LOG_I2C_DEVICE(this);
73
71
  if (this->is_failed()) {
74
- ESP_LOGE(TAG, "Communication with ADS1115 failed!");
72
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
75
73
  }
76
74
  }
77
75
  float ADS1115Component::request_measurement(ADS1115Multiplexer multiplexer, ADS1115Gain gain,
@@ -1,4 +1,5 @@
1
1
  #include "ads1118.h"
2
+ #include "esphome/core/helpers.h"
2
3
  #include "esphome/core/log.h"
3
4
 
4
5
  namespace esphome {
@@ -8,7 +9,7 @@ static const char *const TAG = "ads1118";
8
9
  static const uint8_t ADS1118_DATA_RATE_860_SPS = 0b111;
9
10
 
10
11
  void ADS1118::setup() {
11
- ESP_LOGCONFIG(TAG, "Setting up ads1118");
12
+ ESP_LOGCONFIG(TAG, "Running setup");
12
13
  this->spi_setup();
13
14
 
14
15
  this->config_ = 0;
@@ -1,4 +1,5 @@
1
1
  #include "ags10.h"
2
+ #include "esphome/core/helpers.h"
2
3
 
3
4
  #include <cinttypes>
4
5
 
@@ -23,7 +24,7 @@ static const uint16_t ZP_CURRENT = 0x0000;
23
24
  static const uint16_t ZP_DEFAULT = 0xFFFF;
24
25
 
25
26
  void AGS10Component::setup() {
26
- ESP_LOGCONFIG(TAG, "Setting up ags10...");
27
+ ESP_LOGCONFIG(TAG, "Running setup");
27
28
 
28
29
  auto version = this->read_version_();
29
30
  if (version) {
@@ -65,7 +66,7 @@ void AGS10Component::dump_config() {
65
66
  case NONE:
66
67
  break;
67
68
  case COMMUNICATION_FAILED:
68
- ESP_LOGE(TAG, "Communication with AGS10 failed!");
69
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
69
70
  break;
70
71
  case CRC_CHECK_FAILED:
71
72
  ESP_LOGE(TAG, "The crc check failed");
@@ -13,8 +13,9 @@
13
13
  // results making successive requests; the current implementation makes 3 attempts with a delay of 30ms each time.
14
14
 
15
15
  #include "aht10.h"
16
- #include "esphome/core/log.h"
17
16
  #include "esphome/core/hal.h"
17
+ #include "esphome/core/helpers.h"
18
+ #include "esphome/core/log.h"
18
19
 
19
20
  namespace esphome {
20
21
  namespace aht10 {
@@ -34,57 +35,59 @@ static const uint8_t AHT10_INIT_ATTEMPTS = 10;
34
35
 
35
36
  static const uint8_t AHT10_STATUS_BUSY = 0x80;
36
37
 
38
+ static const float AHT10_DIVISOR = 1048576.0f; // 2^20, used for temperature and humidity calculations
39
+
37
40
  void AHT10Component::setup() {
41
+ ESP_LOGCONFIG(TAG, "Running setup");
42
+
38
43
  if (this->write(AHT10_SOFTRESET_CMD, sizeof(AHT10_SOFTRESET_CMD)) != i2c::ERROR_OK) {
39
- ESP_LOGE(TAG, "Reset AHT10 failed!");
44
+ ESP_LOGE(TAG, "Reset failed");
40
45
  }
41
46
  delay(AHT10_SOFTRESET_DELAY);
42
47
 
43
48
  i2c::ErrorCode error_code = i2c::ERROR_INVALID_ARGUMENT;
44
49
  switch (this->variant_) {
45
50
  case AHT10Variant::AHT20:
46
- ESP_LOGCONFIG(TAG, "Setting up AHT20");
47
51
  error_code = this->write(AHT20_INITIALIZE_CMD, sizeof(AHT20_INITIALIZE_CMD));
48
52
  break;
49
53
  case AHT10Variant::AHT10:
50
- ESP_LOGCONFIG(TAG, "Setting up AHT10");
51
54
  error_code = this->write(AHT10_INITIALIZE_CMD, sizeof(AHT10_INITIALIZE_CMD));
52
55
  break;
53
56
  }
54
57
  if (error_code != i2c::ERROR_OK) {
55
- ESP_LOGE(TAG, "Communication with AHT10 failed!");
58
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
56
59
  this->mark_failed();
57
60
  return;
58
61
  }
62
+ uint8_t cal_attempts = 0;
59
63
  uint8_t data = AHT10_STATUS_BUSY;
60
- int cal_attempts = 0;
61
64
  while (data & AHT10_STATUS_BUSY) {
62
65
  delay(AHT10_DEFAULT_DELAY);
63
66
  if (this->read(&data, 1) != i2c::ERROR_OK) {
64
- ESP_LOGE(TAG, "Communication with AHT10 failed!");
67
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
65
68
  this->mark_failed();
66
69
  return;
67
70
  }
68
71
  ++cal_attempts;
69
72
  if (cal_attempts > AHT10_INIT_ATTEMPTS) {
70
- ESP_LOGE(TAG, "AHT10 initialization timed out!");
73
+ ESP_LOGE(TAG, "Initialization timed out");
71
74
  this->mark_failed();
72
75
  return;
73
76
  }
74
77
  }
75
78
  if ((data & 0x68) != 0x08) { // Bit[6:5] = 0b00, NORMAL mode and Bit[3] = 0b1, CALIBRATED
76
- ESP_LOGE(TAG, "AHT10 initialization failed!");
79
+ ESP_LOGE(TAG, "Initialization failed");
77
80
  this->mark_failed();
78
81
  return;
79
82
  }
80
83
 
81
- ESP_LOGV(TAG, "AHT10 initialization");
84
+ ESP_LOGV(TAG, "Initialization complete");
82
85
  }
83
86
 
84
87
  void AHT10Component::restart_read_() {
85
88
  if (this->read_count_ == AHT10_ATTEMPTS) {
86
89
  this->read_count_ = 0;
87
- this->status_set_error("Measurements reading timed-out!");
90
+ this->status_set_error("Reading timed out");
88
91
  return;
89
92
  }
90
93
  this->read_count_++;
@@ -97,24 +100,24 @@ void AHT10Component::read_data_() {
97
100
  ESP_LOGD(TAG, "Read attempt %d at %ums", this->read_count_, (unsigned) (millis() - this->start_time_));
98
101
  }
99
102
  if (this->read(data, 6) != i2c::ERROR_OK) {
100
- this->status_set_warning("AHT10 read failed, retrying soon");
103
+ this->status_set_warning("Read failed, will retry");
101
104
  this->restart_read_();
102
105
  return;
103
106
  }
104
107
 
105
108
  if ((data[0] & 0x80) == 0x80) { // Bit[7] = 0b1, device is busy
106
- ESP_LOGD(TAG, "AHT10 is busy, waiting...");
109
+ ESP_LOGD(TAG, "Device busy, will retry");
107
110
  this->restart_read_();
108
111
  return;
109
112
  }
110
113
  if (data[1] == 0x0 && data[2] == 0x0 && (data[3] >> 4) == 0x0) {
111
- // Unrealistic humidity (0x0)
114
+ // Invalid humidity (0x0)
112
115
  if (this->humidity_sensor_ == nullptr) {
113
- ESP_LOGV(TAG, "ATH10 Unrealistic humidity (0x0), but humidity is not required");
116
+ ESP_LOGV(TAG, "Invalid humidity (reading not required)");
114
117
  } else {
115
- ESP_LOGD(TAG, "ATH10 Unrealistic humidity (0x0), retrying...");
118
+ ESP_LOGD(TAG, "Invalid humidity, retrying");
116
119
  if (this->write(AHT10_MEASURE_CMD, sizeof(AHT10_MEASURE_CMD)) != i2c::ERROR_OK) {
117
- this->status_set_warning("Communication with AHT10 failed!");
120
+ this->status_set_warning(ESP_LOG_MSG_COMM_FAIL);
118
121
  }
119
122
  this->restart_read_();
120
123
  return;
@@ -123,22 +126,17 @@ void AHT10Component::read_data_() {
123
126
  if (this->read_count_ > 1) {
124
127
  ESP_LOGD(TAG, "Success at %ums", (unsigned) (millis() - this->start_time_));
125
128
  }
126
- uint32_t raw_temperature = ((data[3] & 0x0F) << 16) | (data[4] << 8) | data[5];
127
- uint32_t raw_humidity = ((data[1] << 16) | (data[2] << 8) | data[3]) >> 4;
129
+ uint32_t raw_temperature = encode_uint24(data[3] & 0xF, data[4], data[5]);
130
+ uint32_t raw_humidity = encode_uint24(data[1], data[2], data[3]) >> 4;
128
131
 
129
132
  if (this->temperature_sensor_ != nullptr) {
130
- float temperature = ((200.0f * (float) raw_temperature) / 1048576.0f) - 50.0f;
133
+ float temperature = ((200.0f * static_cast<float>(raw_temperature)) / AHT10_DIVISOR) - 50.0f;
131
134
  this->temperature_sensor_->publish_state(temperature);
132
135
  }
133
136
  if (this->humidity_sensor_ != nullptr) {
134
- float humidity;
135
- if (raw_humidity == 0) { // unrealistic value
136
- humidity = NAN;
137
- } else {
138
- humidity = (float) raw_humidity * 100.0f / 1048576.0f;
139
- }
137
+ float humidity = raw_humidity == 0 ? NAN : static_cast<float>(raw_humidity) * 100.0f / AHT10_DIVISOR;
140
138
  if (std::isnan(humidity)) {
141
- ESP_LOGW(TAG, "Invalid humidity! Sensor reported 0%% Hum");
139
+ ESP_LOGW(TAG, "Invalid humidity reading (0%%), ");
142
140
  }
143
141
  this->humidity_sensor_->publish_state(humidity);
144
142
  }
@@ -150,7 +148,7 @@ void AHT10Component::update() {
150
148
  return;
151
149
  this->start_time_ = millis();
152
150
  if (this->write(AHT10_MEASURE_CMD, sizeof(AHT10_MEASURE_CMD)) != i2c::ERROR_OK) {
153
- this->status_set_warning("Communication with AHT10 failed!");
151
+ this->status_set_warning(ESP_LOG_MSG_COMM_FAIL);
154
152
  return;
155
153
  }
156
154
  this->restart_read_();
@@ -162,7 +160,7 @@ void AHT10Component::dump_config() {
162
160
  ESP_LOGCONFIG(TAG, "AHT10:");
163
161
  LOG_I2C_DEVICE(this);
164
162
  if (this->is_failed()) {
165
- ESP_LOGE(TAG, "Communication with AHT10 failed!");
163
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
166
164
  }
167
165
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
168
166
  LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
@@ -17,7 +17,7 @@ static const char *const TAG = "aic3204";
17
17
  }
18
18
 
19
19
  void AIC3204::setup() {
20
- ESP_LOGCONFIG(TAG, "Setting up AIC3204...");
20
+ ESP_LOGCONFIG(TAG, "Running setup");
21
21
 
22
22
  // Set register page to 0
23
23
  ERROR_CHECK(this->write_byte(AIC3204_PAGE_CTRL, 0x00), "Set page 0 failed");
@@ -113,7 +113,7 @@ void AIC3204::dump_config() {
113
113
  LOG_I2C_DEVICE(this);
114
114
 
115
115
  if (this->is_failed()) {
116
- ESP_LOGE(TAG, "Communication with AIC3204 failed");
116
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
117
117
  }
118
118
  }
119
119
 
@@ -235,6 +235,7 @@ async def register_alarm_control_panel(var, config):
235
235
  if not CORE.has_id(config[CONF_ID]):
236
236
  var = cg.Pvariable(config[CONF_ID], var)
237
237
  cg.add(cg.App.register_alarm_control_panel(var))
238
+ CORE.register_platform_component("alarm_control_panel", var)
238
239
  await setup_alarm_control_panel_core_(var, config)
239
240
 
240
241
 
@@ -90,7 +90,7 @@ bool AM2315C::convert_(uint8_t *data, float &humidity, float &temperature) {
90
90
  }
91
91
 
92
92
  void AM2315C::setup() {
93
- ESP_LOGCONFIG(TAG, "Setting up AM2315C...");
93
+ ESP_LOGCONFIG(TAG, "Running setup");
94
94
 
95
95
  // get status
96
96
  uint8_t status = 0;
@@ -188,7 +188,7 @@ void AM2315C::dump_config() {
188
188
  ESP_LOGCONFIG(TAG, "AM2315C:");
189
189
  LOG_I2C_DEVICE(this);
190
190
  if (this->is_failed()) {
191
- ESP_LOGE(TAG, "Communication with AM2315C failed!");
191
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
192
192
  }
193
193
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
194
194
  LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
@@ -34,7 +34,7 @@ void AM2320Component::update() {
34
34
  this->status_clear_warning();
35
35
  }
36
36
  void AM2320Component::setup() {
37
- ESP_LOGCONFIG(TAG, "Setting up AM2320...");
37
+ ESP_LOGCONFIG(TAG, "Running setup");
38
38
  uint8_t data[8];
39
39
  data[0] = 0;
40
40
  data[1] = 4;
@@ -47,7 +47,7 @@ void AM2320Component::dump_config() {
47
47
  ESP_LOGD(TAG, "AM2320:");
48
48
  LOG_I2C_DEVICE(this);
49
49
  if (this->is_failed()) {
50
- ESP_LOGE(TAG, "Communication with AM2320 failed!");
50
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
51
51
  }
52
52
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
53
53
  LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  namespace esphome {
7
7
  namespace am43 {