esphome 2025.5.2__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 (715) 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 -1
  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/preferences.cpp +6 -6
  181. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  182. esphome/components/esp_ldo/__init__.py +91 -0
  183. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  184. esphome/components/esp_ldo/esp_ldo.h +43 -0
  185. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  186. esphome/components/ethernet/ethernet_component.cpp +38 -26
  187. esphome/components/ethernet/ethernet_component.h +1 -1
  188. esphome/components/event/__init__.py +1 -0
  189. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  190. esphome/components/ezo/ezo.cpp +1 -1
  191. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  192. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  193. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  194. esphome/components/fan/__init__.py +1 -0
  195. esphome/components/fan/fan.cpp +4 -2
  196. esphome/components/fastled_base/fastled_light.cpp +7 -5
  197. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  198. esphome/components/fs3000/fs3000.cpp +1 -1
  199. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  200. esphome/components/ft63x6/ft63x6.cpp +5 -3
  201. esphome/components/gcja5/gcja5.cpp +0 -12
  202. esphome/components/gcja5/gcja5.h +8 -3
  203. esphome/components/gdk101/gdk101.cpp +2 -2
  204. esphome/components/globals/globals_component.h +13 -10
  205. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  206. esphome/components/gp8403/gp8403.cpp +4 -2
  207. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  208. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  209. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  210. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  211. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  212. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  213. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  214. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  215. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  216. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  217. esphome/components/haier/haier_base.cpp +2 -2
  218. esphome/components/haier/hon_climate.cpp +13 -6
  219. esphome/components/havells_solar/havells_solar.cpp +5 -2
  220. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  221. esphome/components/hdc1080/hdc1080.cpp +2 -2
  222. esphome/components/he60r/he60r.cpp +4 -2
  223. esphome/components/hlw8012/hlw8012.cpp +6 -4
  224. esphome/components/hm3301/hm3301.cpp +2 -2
  225. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  226. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  227. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  228. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  229. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  230. esphome/components/hte501/hte501.cpp +3 -2
  231. esphome/components/http_request/__init__.py +2 -2
  232. esphome/components/http_request/http_request.cpp +7 -5
  233. esphome/components/http_request/http_request_idf.cpp +4 -2
  234. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  235. esphome/components/htu21d/htu21d.cpp +2 -2
  236. esphome/components/htu31d/htu31d.cpp +2 -2
  237. esphome/components/hx711/hx711.cpp +2 -2
  238. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  239. esphome/components/hyt271/hyt271.cpp +2 -2
  240. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  241. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  242. esphome/components/i2s_audio/__init__.py +2 -0
  243. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  244. esphome/components/i2s_audio/i2s_audio.h +1 -1
  245. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  246. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  247. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +1 -1
  248. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
  249. esphome/components/iaqcore/iaqcore.cpp +3 -3
  250. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  251. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  252. esphome/components/image/image.cpp +1 -0
  253. esphome/components/ina219/ina219.cpp +2 -2
  254. esphome/components/ina226/ina226.cpp +8 -5
  255. esphome/components/ina260/ina260.cpp +1 -1
  256. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  257. esphome/components/ina3221/ina3221.cpp +2 -2
  258. esphome/components/inkplate6/display.py +12 -2
  259. esphome/components/inkplate6/inkplate.cpp +13 -9
  260. esphome/components/inkplate6/inkplate.h +7 -6
  261. esphome/components/integration/integration_sensor.cpp +1 -1
  262. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  263. esphome/components/json/json_util.cpp +4 -5
  264. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  265. esphome/components/key_collector/key_collector.cpp +4 -2
  266. esphome/components/kmeteriso/kmeteriso.cpp +2 -1
  267. esphome/components/kuntze/kuntze.cpp +4 -2
  268. esphome/components/lc709203f/__init__.py +1 -0
  269. esphome/components/lc709203f/lc709203f.cpp +299 -0
  270. esphome/components/lc709203f/lc709203f.h +55 -0
  271. esphome/components/lc709203f/sensor.py +93 -0
  272. esphome/components/lcd_base/lcd_display.cpp +2 -2
  273. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  274. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  275. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  276. esphome/components/ld2410/ld2410.cpp +6 -7
  277. esphome/components/ld2420/ld2420.cpp +9 -7
  278. esphome/components/ld2450/ld2450.cpp +6 -4
  279. esphome/components/ld2450/sensor.py +2 -2
  280. esphome/components/ledc/ledc_output.cpp +32 -28
  281. esphome/components/libretiny/const.py +1 -1
  282. esphome/components/libretiny/preferences.cpp +6 -7
  283. esphome/components/light/__init__.py +2 -1
  284. esphome/components/light/esp_hsv_color.h +1 -1
  285. esphome/components/light/light_state.cpp +9 -5
  286. esphome/components/light/light_transformer.h +1 -1
  287. esphome/components/lightwaverf/LwTx.cpp +1 -1
  288. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  289. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  290. esphome/components/lock/__init__.py +1 -0
  291. esphome/components/lock/lock.h +1 -1
  292. esphome/components/logger/__init__.py +6 -0
  293. esphome/components/logger/logger.cpp +9 -5
  294. esphome/components/logger/logger_esp32.cpp +5 -5
  295. esphome/components/ltr390/ltr390.cpp +8 -5
  296. esphome/components/ltr501/ltr501.cpp +19 -14
  297. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  298. esphome/components/lvgl/__init__.py +2 -2
  299. esphome/components/lvgl/automation.py +5 -4
  300. esphome/components/lvgl/defines.py +0 -2
  301. esphome/components/lvgl/lv_validation.py +1 -3
  302. esphome/components/lvgl/lvcode.py +7 -8
  303. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  304. esphome/components/lvgl/schemas.py +22 -23
  305. esphome/components/lvgl/trigger.py +8 -3
  306. esphome/components/lvgl/widgets/__init__.py +2 -2
  307. esphome/components/lvgl/widgets/canvas.py +9 -3
  308. esphome/components/lvgl/widgets/line.py +2 -1
  309. esphome/components/lvgl/widgets/tabview.py +7 -0
  310. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  311. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  312. esphome/components/max17043/max17043.cpp +2 -2
  313. esphome/components/max31855/max31855.cpp +2 -1
  314. esphome/components/max31856/max31856.cpp +9 -11
  315. esphome/components/max31865/max31865.cpp +6 -4
  316. esphome/components/max44009/max44009.cpp +2 -2
  317. esphome/components/max6675/max6675.cpp +1 -1
  318. esphome/components/max6956/max6956.cpp +5 -3
  319. esphome/components/max7219/max7219.cpp +8 -6
  320. esphome/components/max7219digit/automation.h +52 -0
  321. esphome/components/max7219digit/display.py +93 -1
  322. esphome/components/max7219digit/max7219digit.cpp +16 -13
  323. esphome/components/max9611/max9611.cpp +9 -6
  324. esphome/components/mcp23008/mcp23008.cpp +1 -1
  325. esphome/components/mcp23016/mcp23016.cpp +1 -1
  326. esphome/components/mcp23017/mcp23017.cpp +1 -1
  327. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  328. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  329. esphome/components/mcp3008/mcp3008.cpp +1 -1
  330. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  331. esphome/components/mcp3204/mcp3204.cpp +1 -1
  332. esphome/components/mcp4461/mcp4461.cpp +2 -2
  333. esphome/components/mcp4725/mcp4725.cpp +2 -2
  334. esphome/components/mcp4728/mcp4728.cpp +2 -2
  335. esphome/components/mcp9600/mcp9600.cpp +1 -1
  336. esphome/components/mcp9808/mcp9808.cpp +4 -4
  337. esphome/components/mdns/mdns_component.cpp +8 -2
  338. esphome/components/mdns/mdns_component.h +3 -1
  339. esphome/components/mdns/mdns_esp32.cpp +2 -2
  340. esphome/components/media_player/__init__.py +1 -0
  341. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  342. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  343. esphome/components/micronova/micronova.h +2 -2
  344. esphome/components/mics_4514/mics_4514.cpp +2 -2
  345. esphome/components/midea/air_conditioner.cpp +7 -5
  346. esphome/components/midea_ir/midea_ir.cpp +1 -1
  347. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  348. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  349. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  350. esphome/components/mlx90614/mlx90614.cpp +4 -3
  351. esphome/components/mmc5603/mmc5603.cpp +2 -2
  352. esphome/components/mmc5983/mmc5983.cpp +1 -1
  353. esphome/components/modbus/modbus.cpp +7 -5
  354. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  355. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  356. esphome/components/modbus_controller/switch/__init__.py +6 -2
  357. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  358. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  359. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  360. esphome/components/mpr121/mpr121.cpp +2 -2
  361. esphome/components/mpu6050/mpu6050.cpp +6 -6
  362. esphome/components/mpu6886/mpu6886.cpp +6 -6
  363. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  364. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  365. esphome/components/mqtt/mqtt_client.cpp +31 -24
  366. esphome/components/mqtt/mqtt_component.cpp +2 -2
  367. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  368. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  369. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  370. esphome/components/ms5611/ms5611.cpp +2 -2
  371. esphome/components/ms8607/ms8607.cpp +2 -2
  372. esphome/components/msa3xx/msa3xx.cpp +16 -12
  373. esphome/components/my9231/my9231.cpp +7 -5
  374. esphome/components/nau7802/nau7802.cpp +6 -4
  375. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  376. esphome/components/network/ip_address.h +1 -1
  377. esphome/components/network/util.cpp +13 -0
  378. esphome/components/nextion/base_component.py +2 -0
  379. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +2 -3
  380. esphome/components/nextion/display.py +34 -22
  381. esphome/components/nextion/nextion.cpp +182 -143
  382. esphome/components/nextion/nextion.h +36 -0
  383. esphome/components/nextion/nextion_commands.cpp +3 -3
  384. esphome/components/nextion/nextion_upload_arduino.cpp +58 -61
  385. esphome/components/nextion/nextion_upload_idf.cpp +69 -72
  386. esphome/components/nextion/sensor/nextion_sensor.cpp +4 -4
  387. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  388. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +2 -2
  389. esphome/components/nfc/nci_message.h +1 -1
  390. esphome/components/nfc/ndef_record.h +1 -1
  391. esphome/components/nfc/ndef_record_text.h +1 -1
  392. esphome/components/nfc/ndef_record_uri.h +1 -1
  393. esphome/components/nfc/nfc.h +1 -1
  394. esphome/components/nfc/nfc_tag.h +1 -1
  395. esphome/components/noblex/noblex.cpp +1 -1
  396. esphome/components/npi19/npi19.cpp +5 -7
  397. esphome/components/number/__init__.py +11 -0
  398. esphome/components/online_image/__init__.py +13 -1
  399. esphome/components/online_image/online_image.cpp +26 -4
  400. esphome/components/online_image/online_image.h +21 -4
  401. esphome/components/opentherm/generate.py +3 -3
  402. esphome/components/opentherm/hub.cpp +11 -7
  403. esphome/components/opentherm/number/number.cpp +5 -3
  404. esphome/components/opentherm/opentherm.h +1 -1
  405. esphome/components/opentherm/schema.py +13 -13
  406. esphome/components/opentherm/validate.py +1 -1
  407. esphome/components/openthread/__init__.py +146 -0
  408. esphome/components/openthread/const.py +10 -0
  409. esphome/components/openthread/openthread.cpp +206 -0
  410. esphome/components/openthread/openthread.h +68 -0
  411. esphome/components/openthread/openthread_esp.cpp +164 -0
  412. esphome/components/openthread/tlv.py +58 -0
  413. esphome/components/openthread_info/__init__.py +0 -0
  414. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  415. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  416. esphome/components/openthread_info/text_sensor.py +105 -0
  417. esphome/components/output/float_output.cpp +1 -1
  418. esphome/components/output/switch/output_switch.cpp +1 -1
  419. esphome/components/packet_transport/packet_transport.cpp +6 -4
  420. esphome/components/pca6416a/pca6416a.cpp +2 -2
  421. esphome/components/pca9554/pca9554.cpp +6 -4
  422. esphome/components/pca9685/pca9685_output.cpp +12 -8
  423. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  424. esphome/components/pcf85063/pcf85063.cpp +2 -2
  425. esphome/components/pcf8563/pcf8563.cpp +2 -2
  426. esphome/components/pcf8574/pcf8574.cpp +2 -2
  427. esphome/components/pid/pid_climate.cpp +8 -5
  428. esphome/components/pid/pid_climate.h +1 -1
  429. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  430. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  431. esphome/components/pipsolar/pipsolar.cpp +3 -3
  432. esphome/components/pm1006/pm1006.cpp +3 -7
  433. esphome/components/pm1006/pm1006.h +4 -1
  434. esphome/components/pm2005/pm2005.cpp +12 -13
  435. esphome/components/pm2005/sensor.py +1 -1
  436. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  437. esphome/components/pmsx003/pmsx003.cpp +0 -4
  438. esphome/components/pmsx003/pmsx003.h +5 -2
  439. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  440. esphome/components/pmwcs3/pmwcs3.h +0 -1
  441. esphome/components/pn532/pn532.cpp +7 -7
  442. esphome/components/pn532/pn532.h +1 -1
  443. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  444. esphome/components/pn7150/pn7150.cpp +4 -4
  445. esphome/components/pn7160/pn7160.cpp +4 -4
  446. esphome/components/power_supply/power_supply.cpp +6 -4
  447. esphome/components/power_supply/power_supply.h +1 -1
  448. esphome/components/psram/__init__.py +59 -35
  449. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  450. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  451. esphome/components/pylontech/pylontech.cpp +2 -2
  452. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  453. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  454. esphome/components/pzemac/pzemac.cpp +4 -2
  455. esphome/components/pzemdc/pzemdc.cpp +4 -2
  456. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  457. esphome/components/qmp6988/qmp6988.cpp +2 -2
  458. esphome/components/qmp6988/qmp6988.h +1 -1
  459. esphome/components/qr_code/qr_code.cpp +5 -3
  460. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  461. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  462. esphome/components/rc522/rc522.cpp +5 -5
  463. esphome/components/rdm6300/rdm6300.cpp +1 -0
  464. esphome/components/remote_receiver/__init__.py +10 -2
  465. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  466. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  467. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  468. esphome/components/remote_transmitter/__init__.py +10 -2
  469. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  470. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  471. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  472. esphome/components/resistance/resistance_sensor.cpp +6 -3
  473. esphome/components/restart/button/restart_button.cpp +1 -1
  474. esphome/components/restart/switch/restart_switch.cpp +1 -1
  475. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  476. esphome/components/rp2040/__init__.py +7 -0
  477. esphome/components/rp2040/core.cpp +8 -1
  478. esphome/components/rp2040/preferences.cpp +3 -3
  479. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  480. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  481. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  482. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  483. esphome/components/rtttl/rtttl.cpp +11 -9
  484. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  485. esphome/components/safe_mode/safe_mode.cpp +9 -8
  486. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  487. esphome/components/scd30/scd30.cpp +11 -8
  488. esphome/components/scd4x/scd4x.cpp +12 -8
  489. esphome/components/sdl/display.py +40 -0
  490. esphome/components/sdl/sdl_esphome.cpp +2 -2
  491. esphome/components/sdl/sdl_esphome.h +8 -0
  492. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  493. esphome/components/sdp3x/sdp3x.cpp +11 -11
  494. esphome/components/sds011/sds011.cpp +5 -6
  495. esphome/components/sds011/sds011.h +4 -1
  496. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  497. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  498. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  499. esphome/components/selec_meter/selec_meter.cpp +5 -2
  500. esphome/components/select/__init__.py +1 -0
  501. esphome/components/sen0321/sen0321.cpp +2 -2
  502. esphome/components/sen21231/sen21231.cpp +1 -1
  503. esphome/components/sen5x/sen5x.cpp +10 -7
  504. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  505. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  506. esphome/components/sensor/__init__.py +11 -1
  507. esphome/components/sensor/filter.h +1 -1
  508. esphome/components/sensor/sensor.h +9 -5
  509. esphome/components/servo/servo.cpp +12 -9
  510. esphome/components/servo/servo.h +1 -1
  511. esphome/components/sfa30/sfa30.cpp +1 -1
  512. esphome/components/sgp30/sgp30.cpp +10 -8
  513. esphome/components/sgp4x/sgp4x.cpp +49 -61
  514. esphome/components/sgp4x/sgp4x.h +0 -1
  515. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  516. esphome/components/sht3xd/sht3xd.cpp +1 -1
  517. esphome/components/sht4x/sht4x.cpp +2 -2
  518. esphome/components/shtcx/shtcx.cpp +13 -16
  519. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  520. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  521. esphome/components/sim800l/sim800l.cpp +2 -2
  522. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  523. esphome/components/sm16716/sm16716.cpp +1 -1
  524. esphome/components/sm2135/sm2135.cpp +1 -1
  525. esphome/components/sm2235/sm2235.cpp +5 -3
  526. esphome/components/sm2335/sm2335.cpp +5 -3
  527. esphome/components/sml/sml.cpp +1 -1
  528. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  529. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  530. esphome/components/sntp/sntp_component.cpp +1 -1
  531. esphome/components/socket/__init__.py +2 -0
  532. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  533. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  534. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  535. esphome/components/socket/socket.cpp +31 -0
  536. esphome/components/socket/socket.h +27 -1
  537. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  538. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  539. esphome/components/sound_level/sound_level.cpp +4 -2
  540. esphome/components/speaker/media_player/__init__.py +3 -0
  541. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  542. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  543. esphome/components/spi/__init__.py +10 -2
  544. esphome/components/spi/spi.cpp +4 -4
  545. esphome/components/spi_device/spi_device.cpp +1 -2
  546. esphome/components/sprinkler/sprinkler.cpp +9 -6
  547. esphome/components/sps30/sps30.cpp +16 -15
  548. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  549. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  550. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  551. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  552. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  553. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  554. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  555. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  556. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  557. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  558. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  559. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  560. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  561. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  562. esphome/components/st7567_base/st7567_base.cpp +3 -3
  563. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  564. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  565. esphome/components/st7701s/st7701s.cpp +4 -2
  566. esphome/components/st7735/st7735.cpp +3 -3
  567. esphome/components/st7789v/st7789v.cpp +10 -7
  568. esphome/components/st7920/st7920.cpp +6 -4
  569. esphome/components/statsd/statsd.cpp +9 -5
  570. esphome/components/status_led/light/status_led_light.cpp +1 -1
  571. esphome/components/status_led/status_led.cpp +1 -1
  572. esphome/components/stepper/stepper.h +5 -3
  573. esphome/components/sts3x/sts3x.cpp +2 -2
  574. esphome/components/switch/__init__.py +1 -0
  575. esphome/components/switch/switch.cpp +18 -12
  576. esphome/components/switch/switch.h +1 -1
  577. esphome/components/sx1509/__init__.py +53 -20
  578. esphome/components/sx1509/sx1509.cpp +29 -5
  579. esphome/components/sx1509/sx1509.h +9 -1
  580. esphome/components/t6615/t6615.cpp +1 -0
  581. esphome/components/tc74/tc74.cpp +1 -1
  582. esphome/components/tca9548a/tca9548a.cpp +1 -1
  583. esphome/components/tca9555/tca9555.cpp +2 -2
  584. esphome/components/tcs34725/tcs34725.cpp +4 -4
  585. esphome/components/tee501/tee501.cpp +3 -2
  586. esphome/components/tem3200/tem3200.cpp +5 -6
  587. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  588. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +38 -12
  589. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +3 -1
  590. esphome/components/template/cover/template_cover.cpp +1 -1
  591. esphome/components/template/select/template_select.cpp +6 -4
  592. esphome/components/template/text/template_text.cpp +2 -3
  593. esphome/components/template/valve/template_valve.cpp +5 -3
  594. esphome/components/text/__init__.py +10 -11
  595. esphome/components/text_sensor/__init__.py +1 -0
  596. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  597. esphome/components/time/__init__.py +1 -2
  598. esphome/components/time_based/time_based_cover.cpp +4 -2
  599. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  600. esphome/components/tm1621/tm1621.cpp +3 -3
  601. esphome/components/tm1637/tm1637.cpp +9 -7
  602. esphome/components/tm1638/tm1638.cpp +7 -5
  603. esphome/components/tm1651/tm1651.cpp +2 -2
  604. esphome/components/tmp102/tmp102.cpp +1 -3
  605. esphome/components/tmp102/tmp102.h +0 -3
  606. esphome/components/tmp1075/tmp1075.cpp +12 -9
  607. esphome/components/tmp117/tmp117.cpp +2 -2
  608. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  609. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  610. esphome/components/tsl2561/tsl2561.cpp +7 -5
  611. esphome/components/tsl2591/tsl2591.cpp +25 -27
  612. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  613. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  614. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  615. esphome/components/tuya/select/tuya_select.cpp +5 -3
  616. esphome/components/tx20/tx20.cpp +3 -3
  617. esphome/components/uart/__init__.py +4 -5
  618. esphome/components/uart/button/uart_button.cpp +1 -1
  619. esphome/components/uart/switch/uart_switch.cpp +2 -2
  620. esphome/components/uart/uart.cpp +2 -2
  621. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  622. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  623. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  624. esphome/components/uart/uart_component_host.cpp +11 -8
  625. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  626. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  627. esphome/components/udp/udp_component.cpp +9 -5
  628. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  629. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  630. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  631. esphome/components/update/__init__.py +1 -0
  632. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  633. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  634. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  635. esphome/components/usb_host/__init__.py +64 -0
  636. esphome/components/usb_host/usb_host.h +116 -0
  637. esphome/components/usb_host/usb_host_client.cpp +394 -0
  638. esphome/components/usb_host/usb_host_component.cpp +35 -0
  639. esphome/components/usb_uart/__init__.py +134 -0
  640. esphome/components/usb_uart/ch34x.cpp +80 -0
  641. esphome/components/usb_uart/cp210x.cpp +126 -0
  642. esphome/components/usb_uart/usb_uart.cpp +328 -0
  643. esphome/components/usb_uart/usb_uart.h +151 -0
  644. esphome/components/valve/__init__.py +1 -0
  645. esphome/components/veml3235/veml3235.cpp +13 -9
  646. esphome/components/veml7700/veml7700.cpp +10 -6
  647. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  648. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  649. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  650. esphome/components/web_server/server_index_v2.h +632 -630
  651. esphome/components/web_server/server_index_v3.h +411 -409
  652. esphome/components/web_server/web_server.cpp +5 -3
  653. esphome/components/web_server_base/web_server_base.cpp +1 -1
  654. esphome/components/web_server_idf/utils.cpp +1 -1
  655. esphome/components/web_server_idf/web_server_idf.cpp +1 -1
  656. esphome/components/weikai/__init__.py +2 -0
  657. esphome/components/weikai/weikai.cpp +23 -21
  658. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  659. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  660. esphome/components/wiegand/wiegand.cpp +1 -1
  661. esphome/components/wifi/wifi_component.cpp +50 -37
  662. esphome/components/wifi/wifi_component.h +7 -4
  663. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  664. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  665. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  666. esphome/components/wireguard/wireguard.cpp +21 -21
  667. esphome/components/wl_134/text_sensor.py +1 -2
  668. esphome/components/wled/wled_light_effect.cpp +1 -1
  669. esphome/components/x9c/x9c.cpp +5 -3
  670. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  671. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  672. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  673. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  674. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  675. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  676. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  677. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  678. esphome/components/xl9535/xl9535.cpp +2 -2
  679. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  680. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  681. esphome/config.py +3 -2
  682. esphome/config_validation.py +46 -17
  683. esphome/const.py +10 -1
  684. esphome/core/__init__.py +37 -18
  685. esphome/core/application.cpp +188 -5
  686. esphome/core/application.h +110 -0
  687. esphome/core/component.h +13 -0
  688. esphome/core/config.py +12 -0
  689. esphome/core/defines.h +10 -2
  690. esphome/core/helpers.cpp +1 -1
  691. esphome/core/helpers.h +4 -4
  692. esphome/core/log.h +2 -0
  693. esphome/core/log_const_en.h +4 -0
  694. esphome/core/scheduler.cpp +2 -2
  695. esphome/coroutine.py +3 -4
  696. esphome/cpp_generator.py +32 -32
  697. esphome/dashboard/core.py +2 -2
  698. esphome/dashboard/web_server.py +2 -2
  699. esphome/git.py +4 -4
  700. esphome/helpers.py +5 -6
  701. esphome/loader.py +8 -7
  702. esphome/log.py +7 -1
  703. esphome/platformio_api.py +2 -3
  704. esphome/storage_json.py +13 -5
  705. esphome/types.py +12 -13
  706. esphome/util.py +1 -2
  707. esphome/writer.py +5 -3
  708. esphome/yaml_util.py +6 -1
  709. esphome/zeroconf.py +1 -1
  710. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
  711. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +715 -662
  712. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
  713. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
  714. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
  715. {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  #include "dht.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 dht {
@@ -8,25 +8,19 @@ namespace dht {
8
8
  static const char *const TAG = "dht";
9
9
 
10
10
  void DHT::setup() {
11
- ESP_LOGCONFIG(TAG, "Setting up DHT...");
11
+ ESP_LOGCONFIG(TAG, "Running setup");
12
12
  this->pin_->digital_write(true);
13
13
  this->pin_->setup();
14
14
  this->pin_->digital_write(true);
15
15
  }
16
+
16
17
  void DHT::dump_config() {
17
18
  ESP_LOGCONFIG(TAG, "DHT:");
18
19
  LOG_PIN(" Pin: ", this->pin_);
19
- if (this->is_auto_detect_) {
20
- ESP_LOGCONFIG(TAG, " Auto-detected model: %s", this->model_ == DHT_MODEL_DHT11 ? "DHT11" : "DHT22");
21
- } else if (this->model_ == DHT_MODEL_DHT11) {
22
- ESP_LOGCONFIG(TAG, " Model: DHT11");
23
- } else {
24
- ESP_LOGCONFIG(TAG, " Model: DHT22 (or equivalent)");
25
- }
26
- ESP_LOGCONFIG(TAG, " Internal Pull-up: %s", ONOFF(this->pin_->get_flags() & gpio::FLAG_PULLUP));
27
-
20
+ ESP_LOGCONFIG(TAG, " %sModel: %s", this->is_auto_detect_ ? "Auto-detected " : "",
21
+ this->model_ == DHT_MODEL_DHT11 ? "DHT11" : "DHT22 or equivalent");
22
+ ESP_LOGCONFIG(TAG, " Internal pull-up: %s", ONOFF(this->pin_->get_flags() & gpio::FLAG_PULLUP));
28
23
  LOG_UPDATE_INTERVAL(this);
29
-
30
24
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
31
25
  LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
32
26
  }
@@ -46,7 +40,7 @@ void DHT::update() {
46
40
  }
47
41
 
48
42
  if (success) {
49
- ESP_LOGD(TAG, "Got Temperature=%.1f°C Humidity=%.1f%%", temperature, humidity);
43
+ ESP_LOGD(TAG, "Temperature %.1f°C Humidity %.1f%%", temperature, humidity);
50
44
 
51
45
  if (this->temperature_sensor_ != nullptr)
52
46
  this->temperature_sensor_->publish_state(temperature);
@@ -54,11 +48,8 @@ void DHT::update() {
54
48
  this->humidity_sensor_->publish_state(humidity);
55
49
  this->status_clear_warning();
56
50
  } else {
57
- const char *str = "";
58
- if (this->is_auto_detect_) {
59
- str = " and consider manually specifying the DHT model using the model option";
60
- }
61
- ESP_LOGW(TAG, "Invalid readings! Please check your wiring (pull-up resistor, pin number)%s.", str);
51
+ ESP_LOGW(TAG, "Invalid readings! Check pin number and pull-up resistor%s.",
52
+ this->is_auto_detect_ ? " and try manually specifying the model" : "");
62
53
  if (this->temperature_sensor_ != nullptr)
63
54
  this->temperature_sensor_->publish_state(NAN);
64
55
  if (this->humidity_sensor_ != nullptr)
@@ -68,10 +59,12 @@ void DHT::update() {
68
59
  }
69
60
 
70
61
  float DHT::get_setup_priority() const { return setup_priority::DATA; }
62
+
71
63
  void DHT::set_dht_model(DHTModel model) {
72
64
  this->model_ = model;
73
65
  this->is_auto_detect_ = model == DHT_MODEL_AUTO_DETECT;
74
66
  }
67
+
75
68
  bool HOT IRAM_ATTR DHT::read_sensor_(float *temperature, float *humidity, bool report_errors) {
76
69
  *humidity = NAN;
77
70
  *temperature = NAN;
@@ -121,9 +114,9 @@ bool HOT IRAM_ATTR DHT::read_sensor_(float *temperature, float *humidity, bool r
121
114
  while (!this->pin_->digital_read()) {
122
115
  if (micros() - start_time > 90) {
123
116
  if (i < 0) {
124
- error_code = 1;
117
+ error_code = 1; // line didn't clear
125
118
  } else {
126
- error_code = 2;
119
+ error_code = 2; // rising edge for bit i timeout
127
120
  }
128
121
  break;
129
122
  }
@@ -139,9 +132,9 @@ bool HOT IRAM_ATTR DHT::read_sensor_(float *temperature, float *humidity, bool r
139
132
  end_time = micros();
140
133
  if (end_time - start_time > 90) {
141
134
  if (i < 0) {
142
- error_code = 3;
135
+ error_code = 3; // requesting data failed
143
136
  } else {
144
- error_code = 4;
137
+ error_code = 4; // falling edge for bit i timeout
145
138
  }
146
139
  break;
147
140
  }
@@ -166,22 +159,9 @@ bool HOT IRAM_ATTR DHT::read_sensor_(float *temperature, float *humidity, bool r
166
159
  if (!report_errors && error_code != 0)
167
160
  return false;
168
161
 
169
- switch (error_code) {
170
- case 1:
171
- ESP_LOGW(TAG, "Waiting for DHT communication to clear failed!");
172
- return false;
173
- case 2:
174
- ESP_LOGW(TAG, "Rising edge for bit %d failed!", i);
175
- return false;
176
- case 3:
177
- ESP_LOGW(TAG, "Requesting data from DHT failed!");
178
- return false;
179
- case 4:
180
- ESP_LOGW(TAG, "Falling edge for bit %d failed!", i);
181
- return false;
182
- case 0:
183
- default:
184
- break;
162
+ if (error_code) {
163
+ ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
164
+ return false;
185
165
  }
186
166
 
187
167
  ESP_LOGVV(TAG,
@@ -206,15 +186,15 @@ bool HOT IRAM_ATTR DHT::read_sensor_(float *temperature, float *humidity, bool r
206
186
  if (checksum_a == data[4]) {
207
187
  // Data format: 8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data + 8bit
208
188
  // check sum - some models always have 0 in the decimal part
209
- const uint16_t raw_temperature = uint16_t(data[2]) * 10 + (data[3] & 0x7F);
210
- *temperature = raw_temperature / 10.0f;
189
+ const uint16_t raw_temperature = static_cast<uint16_t>(data[2]) * 10 + (data[3] & 0x7F);
190
+ *temperature = static_cast<float>(raw_temperature) / 10.0f;
211
191
  if ((data[3] & 0x80) != 0) {
212
192
  // negative
213
193
  *temperature *= -1;
214
194
  }
215
195
 
216
- const uint16_t raw_humidity = uint16_t(data[0]) * 10 + data[1];
217
- *humidity = raw_humidity / 10.0f;
196
+ const uint16_t raw_humidity = static_cast<uint16_t>(data[0]) * 10 + data[1];
197
+ *humidity = static_cast<float>(raw_humidity) / 10.0f;
218
198
  } else {
219
199
  // For compatibility with DHT11 models which might only use 2 bytes checksums, only use the data from these two
220
200
  // bytes
@@ -222,8 +202,8 @@ bool HOT IRAM_ATTR DHT::read_sensor_(float *temperature, float *humidity, bool r
222
202
  *humidity = data[0];
223
203
  }
224
204
  } else {
225
- uint16_t raw_humidity = (uint16_t(data[0] & 0xFF) << 8) | (data[1] & 0xFF);
226
- uint16_t raw_temperature = (uint16_t(data[2] & 0xFF) << 8) | (data[3] & 0xFF);
205
+ uint16_t raw_humidity = encode_uint16(data[0], data[1]);
206
+ uint16_t raw_temperature = encode_uint16(data[2], data[3]);
227
207
 
228
208
  if (raw_temperature & 0x8000) {
229
209
  if (!(raw_temperature & 0x4000))
@@ -234,24 +214,23 @@ bool HOT IRAM_ATTR DHT::read_sensor_(float *temperature, float *humidity, bool r
234
214
 
235
215
  if (raw_temperature == 1 && raw_humidity == 10) {
236
216
  if (report_errors) {
237
- ESP_LOGW(TAG, "Invalid temperature+humidity! Sensor reported 1°C and 1%% Hum");
217
+ ESP_LOGW(TAG, "Invalid data");
238
218
  }
239
219
  return false;
240
220
  }
241
221
 
242
- *humidity = raw_humidity * 0.1f;
243
- if (*humidity > 100)
222
+ *humidity = static_cast<float>(raw_humidity) * 0.1f;
223
+ if (*humidity > 100.0f)
244
224
  *humidity = NAN;
245
- *temperature = int16_t(raw_temperature) * 0.1f;
225
+ *temperature = static_cast<int16_t>(raw_temperature) * 0.1f;
246
226
  }
247
227
 
248
228
  if (*temperature == 0.0f && (*humidity == 1.0f || *humidity == 2.0f)) {
249
229
  if (report_errors) {
250
- ESP_LOGW(TAG, "DHT reports invalid data. Is the update interval too high or the sensor damaged?");
230
+ ESP_LOGW(TAG, "Invalid data");
251
231
  }
252
232
  return false;
253
233
  }
254
-
255
234
  return true;
256
235
  }
257
236
 
@@ -34,7 +34,7 @@ void DHT12Component::update() {
34
34
  this->status_clear_warning();
35
35
  }
36
36
  void DHT12Component::setup() {
37
- ESP_LOGCONFIG(TAG, "Setting up DHT12...");
37
+ ESP_LOGCONFIG(TAG, "Running setup");
38
38
  uint8_t data[5];
39
39
  if (!this->read_data_(data)) {
40
40
  this->mark_failed();
@@ -45,7 +45,7 @@ void DHT12Component::dump_config() {
45
45
  ESP_LOGD(TAG, "DHT12:");
46
46
  LOG_I2C_DEVICE(this);
47
47
  if (this->is_failed()) {
48
- ESP_LOGE(TAG, "Communication with DHT12 failed!");
48
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
49
49
  }
50
50
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
51
51
  LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
@@ -182,9 +182,11 @@ using display_writer_t = std::function<void(Display &)>;
182
182
 
183
183
  #define LOG_DISPLAY(prefix, type, obj) \
184
184
  if ((obj) != nullptr) { \
185
- ESP_LOGCONFIG(TAG, prefix type); \
186
- ESP_LOGCONFIG(TAG, "%s Rotations: %d °", prefix, (obj)->rotation_); \
187
- ESP_LOGCONFIG(TAG, "%s Dimensions: %dpx x %dpx", prefix, (obj)->get_width(), (obj)->get_height()); \
185
+ ESP_LOGCONFIG(TAG, \
186
+ prefix type "\n" \
187
+ "%s Rotations: %d °\n" \
188
+ "%s Dimensions: %dpx x %dpx", \
189
+ prefix, (obj)->rotation_, prefix, (obj)->get_width(), (obj)->get_height()); \
188
190
  }
189
191
 
190
192
  /// Turn the pixel OFF.
@@ -12,7 +12,7 @@ void DPS310Component::setup() {
12
12
  auto timer = DPS310_INIT_TIMEOUT;
13
13
  uint8_t reg = 0;
14
14
 
15
- ESP_LOGCONFIG(TAG, "Setting up DPS310...");
15
+ ESP_LOGCONFIG(TAG, "Running setup");
16
16
  // first, reset the sensor
17
17
  if (!this->write_byte(DPS310_REG_RESET, DPS310_CMD_RESET)) {
18
18
  this->mark_failed();
@@ -86,12 +86,14 @@ void DPS310Component::setup() {
86
86
  }
87
87
 
88
88
  void DPS310Component::dump_config() {
89
- ESP_LOGCONFIG(TAG, "DPS310:");
90
- ESP_LOGCONFIG(TAG, " Product ID: %u", this->prod_rev_id_ & 0x0F);
91
- ESP_LOGCONFIG(TAG, " Revision ID: %u", (this->prod_rev_id_ >> 4) & 0x0F);
89
+ ESP_LOGCONFIG(TAG,
90
+ "DPS310:\n"
91
+ " Product ID: %u\n"
92
+ " Revision ID: %u",
93
+ this->prod_rev_id_ & 0x0F, (this->prod_rev_id_ >> 4) & 0x0F);
92
94
  LOG_I2C_DEVICE(this);
93
95
  if (this->is_failed()) {
94
- ESP_LOGE(TAG, "Communication with DPS310 failed!");
96
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
95
97
  }
96
98
  LOG_UPDATE_INTERVAL(this);
97
99
  LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
@@ -10,7 +10,7 @@ namespace ds1307 {
10
10
  static const char *const TAG = "ds1307";
11
11
 
12
12
  void DS1307Component::setup() {
13
- ESP_LOGCONFIG(TAG, "Setting up DS1307...");
13
+ ESP_LOGCONFIG(TAG, "Running setup");
14
14
  if (!this->read_rtc_()) {
15
15
  this->mark_failed();
16
16
  }
@@ -22,7 +22,7 @@ void DS1307Component::dump_config() {
22
22
  ESP_LOGCONFIG(TAG, "DS1307:");
23
23
  LOG_I2C_DEVICE(this);
24
24
  if (this->is_failed()) {
25
- ESP_LOGE(TAG, "Communication with DS1307 failed!");
25
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
26
26
  }
27
27
  ESP_LOGCONFIG(TAG, " Timezone: '%s'", this->timezone_.c_str());
28
28
  }
@@ -278,9 +278,11 @@ bool Dsmr::parse_telegram() {
278
278
  }
279
279
 
280
280
  void Dsmr::dump_config() {
281
- ESP_LOGCONFIG(TAG, "DSMR:");
282
- ESP_LOGCONFIG(TAG, " Max telegram length: %d", this->max_telegram_len_);
283
- ESP_LOGCONFIG(TAG, " Receive timeout: %.1fs", this->receive_timeout_ / 1e3f);
281
+ ESP_LOGCONFIG(TAG,
282
+ "DSMR:\n"
283
+ " Max telegram length: %d\n"
284
+ " Receive timeout: %.1fs",
285
+ this->max_telegram_len_, this->receive_timeout_ / 1e3f);
284
286
  if (this->request_pin_ != nullptr) {
285
287
  LOG_PIN(" Request Pin: ", this->request_pin_);
286
288
  }
@@ -1,6 +1,6 @@
1
1
  #include "duty_cycle_sensor.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 duty_cycle {
@@ -8,7 +8,7 @@ namespace duty_cycle {
8
8
  static const char *const TAG = "duty_cycle";
9
9
 
10
10
  void DutyCycleSensor::setup() {
11
- ESP_LOGCONFIG(TAG, "Setting up Duty Cycle Sensor '%s'...", this->get_name().c_str());
11
+ ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
12
12
  this->pin_->setup();
13
13
  this->store_.pin = this->pin_->to_isr();
14
14
  this->store_.last_level = this->pin_->digital_read();
@@ -94,9 +94,11 @@ void DutyTimeSensor::publish_and_save_(const uint32_t sec, const uint32_t ms) {
94
94
  }
95
95
 
96
96
  void DutyTimeSensor::dump_config() {
97
- ESP_LOGCONFIG(TAG, "Duty Time:");
98
- ESP_LOGCONFIG(TAG, " Update Interval: %" PRId32 "ms", this->get_update_interval());
99
- ESP_LOGCONFIG(TAG, " Restore: %s", ONOFF(this->restore_));
97
+ ESP_LOGCONFIG(TAG,
98
+ "Duty Time:\n"
99
+ " Update Interval: %" PRId32 "ms\n"
100
+ " Restore: %s",
101
+ this->get_update_interval(), ONOFF(this->restore_));
100
102
  LOG_SENSOR(" ", "Duty Time Sensor:", this);
101
103
  LOG_SENSOR(" ", "Last Duty Time Sensor:", this->last_duty_time_sensor_);
102
104
  }
@@ -1,6 +1,6 @@
1
1
  #include "ee895.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 ee895 {
@@ -16,7 +16,7 @@ static const uint16_t PRESSURE_ADDRESS = 0x04B0;
16
16
 
17
17
  void EE895Component::setup() {
18
18
  uint16_t crc16_check = 0;
19
- ESP_LOGCONFIG(TAG, "Setting up EE895...");
19
+ ESP_LOGCONFIG(TAG, "Running setup");
20
20
  write_command_(SERIAL_NUMBER, 8);
21
21
  uint8_t serial_number[20];
22
22
  this->read(serial_number, 20);
@@ -35,7 +35,7 @@ void EE895Component::dump_config() {
35
35
  LOG_I2C_DEVICE(this);
36
36
  switch (this->error_code_) {
37
37
  case COMMUNICATION_FAILED:
38
- ESP_LOGE(TAG, "Communication with EE895 failed!");
38
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
39
39
  break;
40
40
  case CRC_CHECK_FAILED:
41
41
  ESP_LOGE(TAG, "The crc check failed");
@@ -16,7 +16,7 @@ static const uint8_t GET_Y_RES[4] = {0x53, 0x63, 0x00, 0x00};
16
16
  static const uint8_t GET_POWER_STATE_CMD[4] = {0x53, 0x50, 0x00, 0x01};
17
17
 
18
18
  void EKTF2232Touchscreen::setup() {
19
- ESP_LOGCONFIG(TAG, "Setting up EKT2232 Touchscreen...");
19
+ ESP_LOGCONFIG(TAG, "Running setup");
20
20
  this->interrupt_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
21
21
  this->interrupt_pin_->setup();
22
22
 
@@ -57,7 +57,7 @@ static const uint8_t EMC2101_POLARITY_BIT = 1 << 4;
57
57
  float Emc2101Component::get_setup_priority() const { return setup_priority::HARDWARE; }
58
58
 
59
59
  void Emc2101Component::setup() {
60
- ESP_LOGCONFIG(TAG, "Setting up Emc2101 sensor...");
60
+ ESP_LOGCONFIG(TAG, "Running setup");
61
61
 
62
62
  // make sure we're talking to the right chip
63
63
  uint8_t chip_id = reg(EMC2101_REGISTER_WHOAMI).get();
@@ -94,14 +94,16 @@ void Emc2101Component::dump_config() {
94
94
  ESP_LOGCONFIG(TAG, "Emc2101 component:");
95
95
  LOG_I2C_DEVICE(this);
96
96
  if (this->is_failed()) {
97
- ESP_LOGE(TAG, "Communication with EMC2101 failed!");
97
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
98
98
  }
99
99
  ESP_LOGCONFIG(TAG, " Mode: %s", this->dac_mode_ ? "DAC" : "PWM");
100
100
  if (this->dac_mode_) {
101
101
  ESP_LOGCONFIG(TAG, " DAC Conversion Rate: %X", this->dac_conversion_rate_);
102
102
  } else {
103
- ESP_LOGCONFIG(TAG, " PWM Resolution: %02X", this->pwm_resolution_);
104
- ESP_LOGCONFIG(TAG, " PWM Divider: %02X", this->pwm_divider_);
103
+ ESP_LOGCONFIG(TAG,
104
+ " PWM Resolution: %02X\n"
105
+ " PWM Divider: %02X",
106
+ this->pwm_resolution_, this->pwm_divider_);
105
107
  }
106
108
  ESP_LOGCONFIG(TAG, " Inverted: %s", YESNO(this->inverted_));
107
109
  }
@@ -110,7 +112,7 @@ void Emc2101Component::set_duty_cycle(float value) {
110
112
  uint8_t duty_cycle = remap(value, 0.0f, 1.0f, (uint8_t) 0, this->max_output_value_);
111
113
  ESP_LOGD(TAG, "Setting duty fan setting to %02X", duty_cycle);
112
114
  if (!this->write_byte(EMC2101_REGISTER_FAN_SETTING, duty_cycle)) {
113
- ESP_LOGE(TAG, "Communication with EMC2101 failed!");
115
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
114
116
  this->status_set_warning();
115
117
  return;
116
118
  }
@@ -119,7 +121,7 @@ void Emc2101Component::set_duty_cycle(float value) {
119
121
  float Emc2101Component::get_duty_cycle() {
120
122
  uint8_t duty_cycle;
121
123
  if (!this->read_byte(EMC2101_REGISTER_FAN_SETTING, &duty_cycle)) {
122
- ESP_LOGE(TAG, "Communication with EMC2101 failed!");
124
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
123
125
  this->status_set_warning();
124
126
  return NAN;
125
127
  }
@@ -129,7 +131,7 @@ float Emc2101Component::get_duty_cycle() {
129
131
  float Emc2101Component::get_internal_temperature() {
130
132
  uint8_t temperature;
131
133
  if (!this->read_byte(EMC2101_REGISTER_INTERNAL_TEMP, &temperature)) {
132
- ESP_LOGE(TAG, "Communication with EMC2101 failed!");
134
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
133
135
  this->status_set_warning();
134
136
  return NAN;
135
137
  }
@@ -141,7 +143,7 @@ float Emc2101Component::get_external_temperature() {
141
143
  uint8_t lsb, msb;
142
144
  if (!this->read_byte(EMC2101_REGISTER_EXTERNAL_TEMP_MSB, &msb) ||
143
145
  !this->read_byte(EMC2101_REGISTER_EXTERNAL_TEMP_LSB, &lsb)) {
144
- ESP_LOGE(TAG, "Communication with EMC2101 failed!");
146
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
145
147
  this->status_set_warning();
146
148
  return NAN;
147
149
  }
@@ -155,7 +157,7 @@ float Emc2101Component::get_speed() {
155
157
  // Read **LSB** first to match 'Data Read Interlock' behavior from 6.1 of datasheet
156
158
  uint8_t lsb, msb;
157
159
  if (!this->read_byte(EMC2101_REGISTER_TACH_LSB, &lsb) || !this->read_byte(EMC2101_REGISTER_TACH_MSB, &msb)) {
158
- ESP_LOGE(TAG, "Communication with EMC2101 failed!");
160
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
159
161
  this->status_set_warning();
160
162
  return NAN;
161
163
  }
@@ -49,7 +49,7 @@ static const uint8_t ENS160_DATA_STATUS_NEWGPR = 0x01;
49
49
  static const uint8_t ENS160_DATA_AQI = 0x07;
50
50
 
51
51
  void ENS160Component::setup() {
52
- ESP_LOGCONFIG(TAG, "Setting up ENS160...");
52
+ ESP_LOGCONFIG(TAG, "Running setup");
53
53
 
54
54
  // check part_id
55
55
  uint16_t part_id;
@@ -279,7 +279,7 @@ void ENS160Component::dump_config() {
279
279
 
280
280
  switch (this->error_code_) {
281
281
  case COMMUNICATION_FAILED:
282
- ESP_LOGE(TAG, "Communication failed! Is the sensor connected?");
282
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
283
283
  break;
284
284
  case READ_FAILED:
285
285
  ESP_LOGE(TAG, "Error reading from register");
@@ -87,7 +87,7 @@ static uint32_t crc7(uint32_t value) {
87
87
  }
88
88
 
89
89
  void ENS210Component::setup() {
90
- ESP_LOGCONFIG(TAG, "Setting up ENS210...");
90
+ ESP_LOGCONFIG(TAG, "Running setup");
91
91
  uint8_t data[2];
92
92
  uint16_t part_id = 0;
93
93
  // Reset
@@ -163,7 +163,7 @@ void ENS210Component::update() {
163
163
 
164
164
  // Read T_VAL and H_VAL
165
165
  if (!this->read_bytes(ENS210_REGISTER_T_VAL, data, 6)) {
166
- ESP_LOGE(TAG, "Communication with ENS210 failed!");
166
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
167
167
  this->status_set_warning();
168
168
  return;
169
169
  }
@@ -25,9 +25,11 @@ static const size_t MCLK_DIV_FRE = 256;
25
25
  }
26
26
 
27
27
  void ES7210::dump_config() {
28
- ESP_LOGCONFIG(TAG, "ES7210 audio ADC:");
29
- ESP_LOGCONFIG(TAG, " Bits Per Sample: %" PRIu8, this->bits_per_sample_);
30
- ESP_LOGCONFIG(TAG, " Sample Rate: %" PRIu32, this->sample_rate_);
28
+ ESP_LOGCONFIG(TAG,
29
+ "ES7210 audio ADC:\n"
30
+ " Bits Per Sample: %" PRIu8 "\n"
31
+ " Sample Rate: %" PRIu32,
32
+ this->bits_per_sample_, this->sample_rate_);
31
33
 
32
34
  if (this->is_failed()) {
33
35
  ESP_LOGE(TAG, " Failed to initialize");
@@ -36,7 +38,7 @@ void ES7210::dump_config() {
36
38
  }
37
39
 
38
40
  void ES7210::setup() {
39
- ESP_LOGCONFIG(TAG, "Setting up ES7210...");
41
+ ESP_LOGCONFIG(TAG, "Running setup");
40
42
 
41
43
  // Software reset
42
44
  ES7210_ERROR_FAILED(this->write_byte(ES7210_RESET_REG00, 0xff));
@@ -34,7 +34,7 @@ void ES7243E::dump_config() {
34
34
  }
35
35
 
36
36
  void ES7243E::setup() {
37
- ESP_LOGCONFIG(TAG, "Setting up ES7243E...");
37
+ ESP_LOGCONFIG(TAG, "Running setup");
38
38
 
39
39
  ES7243E_ERROR_FAILED(this->write_byte(ES7243E_CLOCK_MGR_REG01, 0x3A));
40
40
  ES7243E_ERROR_FAILED(this->write_byte(ES7243E_RESET_REG00, 0x80));
@@ -17,7 +17,7 @@ static const char *const TAG = "es8156";
17
17
  }
18
18
 
19
19
  void ES8156::setup() {
20
- ESP_LOGCONFIG(TAG, "Setting up ES8156...");
20
+ ESP_LOGCONFIG(TAG, "Running setup");
21
21
 
22
22
  ES8156_ERROR_FAILED(this->write_byte(ES8156_REG02_SCLK_MODE, 0x04));
23
23
  ES8156_ERROR_FAILED(this->write_byte(ES8156_REG20_ANALOG_SYS1, 0x2A));
@@ -22,7 +22,7 @@ static const char *const TAG = "es8311";
22
22
  }
23
23
 
24
24
  void ES8311::setup() {
25
- ESP_LOGCONFIG(TAG, "Setting up ES8311...");
25
+ ESP_LOGCONFIG(TAG, "Running setup");
26
26
 
27
27
  // Reset
28
28
  ES8311_ERROR_FAILED(this->write_byte(ES8311_REG00_RESET, 0x1F));
@@ -52,11 +52,13 @@ void ES8311::setup() {
52
52
  }
53
53
 
54
54
  void ES8311::dump_config() {
55
- ESP_LOGCONFIG(TAG, "ES8311 Audio Codec:");
56
- ESP_LOGCONFIG(TAG, " Use MCLK: %s", YESNO(this->use_mclk_));
57
- ESP_LOGCONFIG(TAG, " Use Microphone: %s", YESNO(this->use_mic_));
58
- ESP_LOGCONFIG(TAG, " DAC Bits per Sample: %" PRIu8, this->resolution_out_);
59
- ESP_LOGCONFIG(TAG, " Sample Rate: %" PRIu32, this->sample_frequency_);
55
+ ESP_LOGCONFIG(TAG,
56
+ "ES8311 Audio Codec:\n"
57
+ " Use MCLK: %s\n"
58
+ " Use Microphone: %s\n"
59
+ " DAC Bits per Sample: %" PRIu8 "\n"
60
+ " Sample Rate: %" PRIu32,
61
+ YESNO(this->use_mclk_), YESNO(this->use_mic_), this->resolution_out_, this->sample_frequency_);
60
62
 
61
63
  if (this->is_failed()) {
62
64
  ESP_LOGCONFIG(TAG, " Failed to initialize!");
File without changes
@@ -0,0 +1,26 @@
1
+ import esphome.codegen as cg
2
+ from esphome.components import i2c
3
+ from esphome.components.audio_dac import AudioDac
4
+ import esphome.config_validation as cv
5
+ from esphome.const import CONF_ID
6
+
7
+ CODEOWNERS = ["@P4uLT"]
8
+ CONF_ES8388_ID = "es8388_id"
9
+
10
+ es8388_ns = cg.esphome_ns.namespace("es8388")
11
+
12
+ ES8388 = es8388_ns.class_("ES8388", AudioDac, cg.Component, i2c.I2CDevice)
13
+
14
+ DEPENDENCIES = ["i2c"]
15
+
16
+ CONFIG_SCHEMA = (
17
+ cv.Schema({cv.GenerateID(): cv.declare_id(ES8388)})
18
+ .extend(cv.COMPONENT_SCHEMA)
19
+ .extend(i2c.i2c_device_schema(0x10))
20
+ )
21
+
22
+
23
+ async def to_code(config):
24
+ var = cg.new_Pvariable(config[CONF_ID])
25
+ await cg.register_component(var, config)
26
+ await i2c.register_i2c_device(var, config)