esphome 2025.5.2__py3-none-any.whl → 2025.6.0b2__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 (746) 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 +753 -379
  29. esphome/components/api/api_connection.h +341 -283
  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 +3 -0
  33. esphome/components/api/api_pb2.h +702 -227
  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 -4
  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 +5 -4
  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 +18 -16
  67. esphome/components/bluetooth_proxy/bluetooth_proxy.h +1 -1
  68. esphome/components/bme280_base/bme280_base.cpp +5 -6
  69. esphome/components/bme680/bme680.cpp +3 -3
  70. esphome/components/bme680/sensor.py +2 -2
  71. esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
  72. esphome/components/bme680_bsec/sensor.py +7 -3
  73. esphome/components/bme68x_bsec2/__init__.py +6 -5
  74. esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
  75. esphome/components/bme68x_bsec2/sensor.py +4 -4
  76. esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
  77. esphome/components/bmi160/bmi160.cpp +11 -11
  78. esphome/components/bmp085/bmp085.cpp +2 -2
  79. esphome/components/bmp280_base/bmp280_base.cpp +3 -3
  80. esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
  81. esphome/components/bmp581/bmp581.cpp +33 -27
  82. esphome/components/bp1658cj/bp1658cj.cpp +5 -3
  83. esphome/components/bp5758d/bp5758d.cpp +1 -1
  84. esphome/components/button/__init__.py +1 -0
  85. esphome/components/canbus/canbus.cpp +1 -1
  86. esphome/components/cap1188/cap1188.cpp +6 -4
  87. esphome/components/captive_portal/captive_portal.cpp +1 -1
  88. esphome/components/ccs811/ccs811.cpp +3 -2
  89. esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
  90. esphome/components/ch422g/ch422g.cpp +2 -2
  91. esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
  92. esphome/components/climate/__init__.py +1 -0
  93. esphome/components/climate/climate.cpp +12 -7
  94. esphome/components/climate/climate.h +1 -1
  95. esphome/components/climate_ir/climate_ir.cpp +7 -4
  96. esphome/components/cm1106/__init__.py +1 -0
  97. esphome/components/cm1106/cm1106.cpp +112 -0
  98. esphome/components/cm1106/cm1106.h +40 -0
  99. esphome/components/cm1106/sensor.py +72 -0
  100. esphome/components/const/__init__.py +1 -0
  101. esphome/components/cover/__init__.py +1 -0
  102. esphome/components/cs5460a/cs5460a.cpp +16 -11
  103. esphome/components/cse7761/cse7761.cpp +2 -2
  104. esphome/components/cse7766/cse7766.cpp +0 -5
  105. esphome/components/cse7766/cse7766.h +5 -1
  106. esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
  107. esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
  108. esphome/components/current_based/current_based_cover.cpp +4 -2
  109. esphome/components/dac7678/dac7678_output.cpp +4 -4
  110. esphome/components/dallas_temp/dallas_temp.cpp +2 -3
  111. esphome/components/daly_bms/daly_bms.cpp +2 -1
  112. esphome/components/dashboard_import/__init__.py +1 -2
  113. esphome/components/datetime/__init__.py +3 -1
  114. esphome/components/datetime/date_entity.cpp +5 -5
  115. esphome/components/datetime/datetime_base.h +0 -5
  116. esphome/components/datetime/datetime_entity.cpp +8 -8
  117. esphome/components/datetime/time_entity.cpp +4 -4
  118. esphome/components/debug/debug_component.cpp +1 -1
  119. esphome/components/debug/debug_component.h +1 -1
  120. esphome/components/debug/debug_esp32.cpp +4 -2
  121. esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
  122. esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
  123. esphome/components/demo/__init__.py +206 -0
  124. esphome/components/demo/demo_alarm_control_panel.h +65 -0
  125. esphome/components/demo/demo_button.h +15 -0
  126. esphome/components/demo/demo_date.h +34 -0
  127. esphome/components/demo/demo_datetime.h +40 -0
  128. esphome/components/demo/demo_lock.h +17 -0
  129. esphome/components/demo/demo_select.h +15 -0
  130. esphome/components/demo/demo_text.h +18 -0
  131. esphome/components/demo/demo_time.h +34 -0
  132. esphome/components/demo/demo_valve.h +54 -0
  133. esphome/components/dfrobot_sen0395/commands.cpp +3 -3
  134. esphome/components/dht/dht.cpp +29 -50
  135. esphome/components/dht12/dht12.cpp +2 -2
  136. esphome/components/display/display.h +5 -3
  137. esphome/components/dps310/dps310.cpp +7 -5
  138. esphome/components/ds1307/ds1307.cpp +2 -2
  139. esphome/components/dsmr/dsmr.cpp +5 -3
  140. esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
  141. esphome/components/duty_time/duty_time_sensor.cpp +5 -3
  142. esphome/components/ee895/ee895.cpp +3 -3
  143. esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
  144. esphome/components/emc2101/emc2101.cpp +11 -9
  145. esphome/components/ens160_base/ens160_base.cpp +2 -2
  146. esphome/components/ens210/ens210.cpp +2 -2
  147. esphome/components/es7210/es7210.cpp +6 -4
  148. esphome/components/es7243e/es7243e.cpp +1 -1
  149. esphome/components/es8156/es8156.cpp +1 -1
  150. esphome/components/es8311/es8311.cpp +8 -6
  151. esphome/components/es8388/__init__.py +0 -0
  152. esphome/components/es8388/audio_dac.py +26 -0
  153. esphome/components/es8388/es8388.cpp +289 -0
  154. esphome/components/es8388/es8388.h +81 -0
  155. esphome/components/es8388/es8388_const.h +83 -0
  156. esphome/components/es8388/select/__init__.py +47 -0
  157. esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
  158. esphome/components/es8388/select/adc_input_mic_select.h +15 -0
  159. esphome/components/es8388/select/dac_output_select.cpp +12 -0
  160. esphome/components/es8388/select/dac_output_select.h +15 -0
  161. esphome/components/esp32/__init__.py +118 -23
  162. esphome/components/esp32/boards.py +208 -125
  163. esphome/components/esp32/const.py +6 -0
  164. esphome/components/esp32/gpio.py +14 -1
  165. esphome/components/esp32/gpio_esp32_c5.py +45 -0
  166. esphome/components/esp32/gpio_esp32_p4.py +43 -0
  167. esphome/components/esp32/preferences.cpp +7 -7
  168. esphome/components/esp32_ble/__init__.py +115 -0
  169. esphome/components/esp32_ble/ble.cpp +101 -54
  170. esphome/components/esp32_ble/ble.h +24 -5
  171. esphome/components/esp32_ble/ble_event.h +172 -32
  172. esphome/components/esp32_ble/ble_scan_result.h +24 -0
  173. esphome/components/esp32_ble/ble_uuid.h +1 -1
  174. esphome/components/esp32_ble/queue.h +53 -27
  175. esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
  176. esphome/components/esp32_ble_server/__init__.py +4 -1
  177. esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
  178. esphome/components/esp32_ble_server/ble_server.h +0 -1
  179. esphome/components/esp32_ble_tracker/__init__.py +7 -2
  180. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +107 -75
  181. esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +16 -16
  182. esphome/components/esp32_camera/esp32_camera.cpp +35 -27
  183. esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
  184. esphome/components/esp32_dac/esp32_dac.cpp +2 -2
  185. esphome/components/esp32_improv/__init__.py +5 -1
  186. esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
  187. esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
  188. esphome/components/esp32_rmt_led_strip/light.py +5 -1
  189. esphome/components/esp32_touch/esp32_touch.cpp +12 -8
  190. esphome/components/esp8266/preferences.cpp +6 -6
  191. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  192. esphome/components/esp_ldo/__init__.py +91 -0
  193. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  194. esphome/components/esp_ldo/esp_ldo.h +43 -0
  195. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  196. esphome/components/ethernet/ethernet_component.cpp +38 -26
  197. esphome/components/ethernet/ethernet_component.h +1 -1
  198. esphome/components/event/__init__.py +1 -0
  199. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  200. esphome/components/ezo/ezo.cpp +1 -1
  201. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  202. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  203. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  204. esphome/components/fan/__init__.py +1 -0
  205. esphome/components/fan/fan.cpp +30 -19
  206. esphome/components/fastled_base/fastled_light.cpp +7 -5
  207. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  208. esphome/components/fs3000/fs3000.cpp +1 -1
  209. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  210. esphome/components/ft63x6/ft63x6.cpp +5 -3
  211. esphome/components/gcja5/gcja5.cpp +0 -12
  212. esphome/components/gcja5/gcja5.h +8 -3
  213. esphome/components/gdk101/gdk101.cpp +2 -2
  214. esphome/components/globals/globals_component.h +13 -10
  215. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  216. esphome/components/gp8403/gp8403.cpp +4 -2
  217. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  218. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  219. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  220. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  221. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  222. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  223. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  224. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  225. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  226. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  227. esphome/components/haier/haier_base.cpp +2 -2
  228. esphome/components/haier/hon_climate.cpp +13 -6
  229. esphome/components/havells_solar/havells_solar.cpp +5 -2
  230. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  231. esphome/components/hdc1080/hdc1080.cpp +2 -2
  232. esphome/components/he60r/he60r.cpp +4 -2
  233. esphome/components/hlw8012/hlw8012.cpp +6 -4
  234. esphome/components/hm3301/hm3301.cpp +2 -2
  235. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  236. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  237. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  238. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  239. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  240. esphome/components/hte501/hte501.cpp +3 -2
  241. esphome/components/http_request/__init__.py +2 -2
  242. esphome/components/http_request/http_request.cpp +7 -5
  243. esphome/components/http_request/http_request_idf.cpp +4 -2
  244. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  245. esphome/components/htu21d/htu21d.cpp +2 -2
  246. esphome/components/htu31d/htu31d.cpp +2 -2
  247. esphome/components/hx711/hx711.cpp +2 -2
  248. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  249. esphome/components/hyt271/hyt271.cpp +2 -2
  250. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  251. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  252. esphome/components/i2s_audio/__init__.py +2 -0
  253. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  254. esphome/components/i2s_audio/i2s_audio.h +1 -1
  255. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  256. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  257. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +13 -10
  258. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
  259. esphome/components/iaqcore/iaqcore.cpp +3 -3
  260. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  261. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  262. esphome/components/image/image.cpp +1 -0
  263. esphome/components/ina219/ina219.cpp +2 -2
  264. esphome/components/ina226/ina226.cpp +8 -5
  265. esphome/components/ina260/ina260.cpp +1 -1
  266. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  267. esphome/components/ina3221/ina3221.cpp +2 -2
  268. esphome/components/inkplate6/display.py +12 -2
  269. esphome/components/inkplate6/inkplate.cpp +13 -9
  270. esphome/components/inkplate6/inkplate.h +7 -6
  271. esphome/components/integration/integration_sensor.cpp +1 -1
  272. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  273. esphome/components/json/json_util.cpp +4 -5
  274. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  275. esphome/components/key_collector/key_collector.cpp +4 -2
  276. esphome/components/kmeteriso/kmeteriso.cpp +4 -4
  277. esphome/components/kuntze/kuntze.cpp +4 -2
  278. esphome/components/lc709203f/__init__.py +1 -0
  279. esphome/components/lc709203f/lc709203f.cpp +299 -0
  280. esphome/components/lc709203f/lc709203f.h +55 -0
  281. esphome/components/lc709203f/sensor.py +93 -0
  282. esphome/components/lcd_base/lcd_display.cpp +2 -2
  283. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  284. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  285. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  286. esphome/components/ld2410/ld2410.cpp +6 -7
  287. esphome/components/ld2420/ld2420.cpp +9 -7
  288. esphome/components/ld2450/ld2450.cpp +6 -4
  289. esphome/components/ld2450/sensor.py +2 -2
  290. esphome/components/ledc/ledc_output.cpp +32 -28
  291. esphome/components/libretiny/const.py +1 -1
  292. esphome/components/libretiny/preferences.cpp +6 -7
  293. esphome/components/light/__init__.py +2 -1
  294. esphome/components/light/esp_hsv_color.h +1 -1
  295. esphome/components/light/light_state.cpp +9 -5
  296. esphome/components/light/light_transformer.h +1 -1
  297. esphome/components/lightwaverf/LwTx.cpp +1 -1
  298. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  299. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  300. esphome/components/lock/__init__.py +1 -0
  301. esphome/components/lock/lock.h +1 -1
  302. esphome/components/logger/__init__.py +6 -0
  303. esphome/components/logger/logger.cpp +11 -20
  304. esphome/components/logger/logger.h +1 -2
  305. esphome/components/logger/logger_esp32.cpp +5 -5
  306. esphome/components/ltr390/ltr390.cpp +8 -5
  307. esphome/components/ltr501/ltr501.cpp +19 -14
  308. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  309. esphome/components/lvgl/__init__.py +2 -2
  310. esphome/components/lvgl/automation.py +5 -4
  311. esphome/components/lvgl/defines.py +0 -2
  312. esphome/components/lvgl/lv_validation.py +1 -3
  313. esphome/components/lvgl/lvcode.py +7 -8
  314. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  315. esphome/components/lvgl/schemas.py +22 -23
  316. esphome/components/lvgl/trigger.py +8 -3
  317. esphome/components/lvgl/widgets/__init__.py +2 -2
  318. esphome/components/lvgl/widgets/canvas.py +9 -3
  319. esphome/components/lvgl/widgets/line.py +2 -1
  320. esphome/components/lvgl/widgets/tabview.py +7 -0
  321. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  322. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  323. esphome/components/max17043/max17043.cpp +2 -2
  324. esphome/components/max31855/max31855.cpp +2 -1
  325. esphome/components/max31856/max31856.cpp +9 -11
  326. esphome/components/max31865/max31865.cpp +6 -4
  327. esphome/components/max44009/max44009.cpp +2 -2
  328. esphome/components/max6675/max6675.cpp +1 -1
  329. esphome/components/max6956/max6956.cpp +5 -3
  330. esphome/components/max7219/max7219.cpp +8 -6
  331. esphome/components/max7219digit/automation.h +52 -0
  332. esphome/components/max7219digit/display.py +93 -1
  333. esphome/components/max7219digit/max7219digit.cpp +16 -13
  334. esphome/components/max9611/max9611.cpp +9 -6
  335. esphome/components/mcp23008/mcp23008.cpp +1 -1
  336. esphome/components/mcp23016/mcp23016.cpp +1 -1
  337. esphome/components/mcp23017/mcp23017.cpp +1 -1
  338. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  339. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  340. esphome/components/mcp3008/mcp3008.cpp +1 -1
  341. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  342. esphome/components/mcp3204/mcp3204.cpp +1 -1
  343. esphome/components/mcp4461/mcp4461.cpp +2 -2
  344. esphome/components/mcp4725/mcp4725.cpp +2 -2
  345. esphome/components/mcp4728/mcp4728.cpp +2 -2
  346. esphome/components/mcp9600/mcp9600.cpp +1 -1
  347. esphome/components/mcp9808/mcp9808.cpp +4 -4
  348. esphome/components/mdns/mdns_component.cpp +8 -2
  349. esphome/components/mdns/mdns_component.h +3 -1
  350. esphome/components/mdns/mdns_esp32.cpp +2 -2
  351. esphome/components/media_player/__init__.py +1 -0
  352. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  353. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  354. esphome/components/micronova/micronova.h +2 -2
  355. esphome/components/mics_4514/mics_4514.cpp +2 -2
  356. esphome/components/midea/air_conditioner.cpp +7 -5
  357. esphome/components/midea_ir/midea_ir.cpp +1 -1
  358. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  359. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  360. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  361. esphome/components/mlx90614/mlx90614.cpp +4 -3
  362. esphome/components/mmc5603/mmc5603.cpp +2 -2
  363. esphome/components/mmc5983/mmc5983.cpp +1 -1
  364. esphome/components/modbus/modbus.cpp +7 -5
  365. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  366. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  367. esphome/components/modbus_controller/switch/__init__.py +6 -2
  368. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  369. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  370. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  371. esphome/components/mpr121/mpr121.cpp +2 -2
  372. esphome/components/mpu6050/mpu6050.cpp +6 -6
  373. esphome/components/mpu6886/mpu6886.cpp +6 -6
  374. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  375. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  376. esphome/components/mqtt/mqtt_client.cpp +31 -24
  377. esphome/components/mqtt/mqtt_component.cpp +3 -3
  378. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  379. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  380. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  381. esphome/components/ms5611/ms5611.cpp +2 -2
  382. esphome/components/ms8607/ms8607.cpp +2 -2
  383. esphome/components/msa3xx/msa3xx.cpp +16 -12
  384. esphome/components/my9231/my9231.cpp +7 -5
  385. esphome/components/nau7802/nau7802.cpp +6 -4
  386. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  387. esphome/components/network/ip_address.h +1 -1
  388. esphome/components/network/util.cpp +13 -0
  389. esphome/components/nextion/base_component.py +2 -0
  390. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +3 -4
  391. esphome/components/nextion/display.py +34 -22
  392. esphome/components/nextion/nextion.cpp +182 -143
  393. esphome/components/nextion/nextion.h +36 -0
  394. esphome/components/nextion/nextion_commands.cpp +3 -3
  395. esphome/components/nextion/nextion_upload_arduino.cpp +69 -69
  396. esphome/components/nextion/nextion_upload_idf.cpp +79 -80
  397. esphome/components/nextion/sensor/nextion_sensor.cpp +5 -5
  398. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  399. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +3 -3
  400. esphome/components/nfc/nci_message.h +1 -1
  401. esphome/components/nfc/ndef_record.h +1 -1
  402. esphome/components/nfc/ndef_record_text.h +1 -1
  403. esphome/components/nfc/ndef_record_uri.h +1 -1
  404. esphome/components/nfc/nfc.h +1 -1
  405. esphome/components/nfc/nfc_tag.h +1 -1
  406. esphome/components/noblex/noblex.cpp +1 -1
  407. esphome/components/npi19/npi19.cpp +5 -7
  408. esphome/components/number/__init__.py +11 -0
  409. esphome/components/number/number.cpp +1 -1
  410. esphome/components/number/number.h +0 -4
  411. esphome/components/online_image/__init__.py +13 -1
  412. esphome/components/online_image/online_image.cpp +26 -4
  413. esphome/components/online_image/online_image.h +21 -4
  414. esphome/components/opentherm/generate.py +3 -3
  415. esphome/components/opentherm/hub.cpp +11 -7
  416. esphome/components/opentherm/number/number.cpp +5 -3
  417. esphome/components/opentherm/opentherm.h +1 -1
  418. esphome/components/opentherm/schema.py +13 -13
  419. esphome/components/opentherm/validate.py +1 -1
  420. esphome/components/openthread/__init__.py +146 -0
  421. esphome/components/openthread/const.py +10 -0
  422. esphome/components/openthread/openthread.cpp +206 -0
  423. esphome/components/openthread/openthread.h +68 -0
  424. esphome/components/openthread/openthread_esp.cpp +164 -0
  425. esphome/components/openthread/tlv.py +58 -0
  426. esphome/components/openthread_info/__init__.py +0 -0
  427. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  428. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  429. esphome/components/openthread_info/text_sensor.py +105 -0
  430. esphome/components/output/float_output.cpp +1 -1
  431. esphome/components/output/switch/output_switch.cpp +1 -1
  432. esphome/components/packet_transport/packet_transport.cpp +6 -4
  433. esphome/components/pca6416a/pca6416a.cpp +2 -2
  434. esphome/components/pca9554/pca9554.cpp +6 -4
  435. esphome/components/pca9685/pca9685_output.cpp +12 -8
  436. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  437. esphome/components/pcf85063/pcf85063.cpp +2 -2
  438. esphome/components/pcf8563/pcf8563.cpp +2 -2
  439. esphome/components/pcf8574/pcf8574.cpp +2 -2
  440. esphome/components/pid/pid_climate.cpp +8 -5
  441. esphome/components/pid/pid_climate.h +1 -1
  442. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  443. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  444. esphome/components/pipsolar/pipsolar.cpp +3 -3
  445. esphome/components/pm1006/pm1006.cpp +3 -7
  446. esphome/components/pm1006/pm1006.h +4 -1
  447. esphome/components/pm2005/pm2005.cpp +12 -13
  448. esphome/components/pm2005/sensor.py +1 -1
  449. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  450. esphome/components/pmsx003/pmsx003.cpp +0 -4
  451. esphome/components/pmsx003/pmsx003.h +5 -2
  452. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  453. esphome/components/pmwcs3/pmwcs3.h +0 -1
  454. esphome/components/pn532/pn532.cpp +7 -7
  455. esphome/components/pn532/pn532.h +1 -1
  456. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  457. esphome/components/pn7150/pn7150.cpp +4 -4
  458. esphome/components/pn7160/pn7160.cpp +4 -4
  459. esphome/components/power_supply/power_supply.cpp +6 -4
  460. esphome/components/power_supply/power_supply.h +1 -1
  461. esphome/components/prometheus/__init__.py +0 -1
  462. esphome/components/psram/__init__.py +59 -35
  463. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  464. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  465. esphome/components/pylontech/pylontech.cpp +2 -2
  466. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  467. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  468. esphome/components/pzemac/pzemac.cpp +4 -2
  469. esphome/components/pzemdc/pzemdc.cpp +4 -2
  470. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  471. esphome/components/qmp6988/qmp6988.cpp +2 -2
  472. esphome/components/qmp6988/qmp6988.h +1 -1
  473. esphome/components/qr_code/qr_code.cpp +5 -3
  474. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  475. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  476. esphome/components/rc522/rc522.cpp +5 -5
  477. esphome/components/rdm6300/rdm6300.cpp +1 -0
  478. esphome/components/remote_receiver/__init__.py +10 -2
  479. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  480. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  481. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  482. esphome/components/remote_transmitter/__init__.py +10 -2
  483. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  484. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  485. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  486. esphome/components/resistance/resistance_sensor.cpp +6 -3
  487. esphome/components/restart/button/restart_button.cpp +1 -1
  488. esphome/components/restart/switch/restart_switch.cpp +1 -1
  489. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  490. esphome/components/rp2040/__init__.py +7 -0
  491. esphome/components/rp2040/core.cpp +8 -1
  492. esphome/components/rp2040/preferences.cpp +3 -3
  493. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  494. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  495. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  496. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  497. esphome/components/rtttl/rtttl.cpp +11 -9
  498. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  499. esphome/components/safe_mode/safe_mode.cpp +9 -8
  500. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  501. esphome/components/scd30/scd30.cpp +11 -8
  502. esphome/components/scd4x/scd4x.cpp +12 -8
  503. esphome/components/sdl/display.py +40 -0
  504. esphome/components/sdl/sdl_esphome.cpp +2 -2
  505. esphome/components/sdl/sdl_esphome.h +8 -0
  506. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  507. esphome/components/sdp3x/sdp3x.cpp +11 -11
  508. esphome/components/sds011/sds011.cpp +5 -6
  509. esphome/components/sds011/sds011.h +4 -1
  510. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  511. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  512. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  513. esphome/components/selec_meter/selec_meter.cpp +5 -2
  514. esphome/components/select/__init__.py +1 -0
  515. esphome/components/select/select.cpp +1 -1
  516. esphome/components/select/select.h +0 -4
  517. esphome/components/sen0321/sen0321.cpp +2 -2
  518. esphome/components/sen21231/sen21231.cpp +1 -1
  519. esphome/components/sen5x/sen5x.cpp +10 -7
  520. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  521. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  522. esphome/components/sensor/__init__.py +11 -1
  523. esphome/components/sensor/filter.h +1 -1
  524. esphome/components/sensor/sensor.cpp +8 -4
  525. esphome/components/sensor/sensor.h +12 -11
  526. esphome/components/servo/servo.cpp +12 -9
  527. esphome/components/servo/servo.h +1 -1
  528. esphome/components/sfa30/sfa30.cpp +1 -1
  529. esphome/components/sgp30/sgp30.cpp +10 -8
  530. esphome/components/sgp4x/sgp4x.cpp +49 -61
  531. esphome/components/sgp4x/sgp4x.h +0 -1
  532. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  533. esphome/components/sht3xd/sht3xd.cpp +1 -1
  534. esphome/components/sht4x/sht4x.cpp +2 -2
  535. esphome/components/shtcx/shtcx.cpp +13 -16
  536. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  537. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  538. esphome/components/sim800l/sim800l.cpp +2 -2
  539. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  540. esphome/components/sm16716/sm16716.cpp +1 -1
  541. esphome/components/sm2135/sm2135.cpp +1 -1
  542. esphome/components/sm2235/sm2235.cpp +5 -3
  543. esphome/components/sm2335/sm2335.cpp +5 -3
  544. esphome/components/sml/sml.cpp +1 -1
  545. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  546. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  547. esphome/components/sntp/sntp_component.cpp +1 -1
  548. esphome/components/socket/__init__.py +2 -0
  549. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  550. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  551. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  552. esphome/components/socket/socket.cpp +31 -0
  553. esphome/components/socket/socket.h +27 -1
  554. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  555. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  556. esphome/components/sound_level/sound_level.cpp +4 -2
  557. esphome/components/speaker/media_player/__init__.py +3 -0
  558. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  559. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  560. esphome/components/spi/__init__.py +10 -2
  561. esphome/components/spi/spi.cpp +4 -4
  562. esphome/components/spi_device/spi_device.cpp +1 -2
  563. esphome/components/sprinkler/sprinkler.cpp +9 -6
  564. esphome/components/sps30/sps30.cpp +16 -15
  565. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  566. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  567. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  568. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  569. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  570. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  571. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  572. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  573. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  574. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  575. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  576. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  577. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  578. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  579. esphome/components/st7567_base/st7567_base.cpp +3 -3
  580. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  581. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  582. esphome/components/st7701s/st7701s.cpp +4 -2
  583. esphome/components/st7735/st7735.cpp +3 -3
  584. esphome/components/st7789v/st7789v.cpp +10 -7
  585. esphome/components/st7920/st7920.cpp +6 -4
  586. esphome/components/statsd/statsd.cpp +9 -5
  587. esphome/components/status_led/light/status_led_light.cpp +3 -3
  588. esphome/components/status_led/light/status_led_light.h +1 -1
  589. esphome/components/status_led/status_led.cpp +1 -1
  590. esphome/components/stepper/stepper.h +5 -3
  591. esphome/components/sts3x/sts3x.cpp +2 -2
  592. esphome/components/switch/__init__.py +1 -0
  593. esphome/components/switch/switch.cpp +18 -12
  594. esphome/components/switch/switch.h +1 -1
  595. esphome/components/sx1509/__init__.py +53 -20
  596. esphome/components/sx1509/sx1509.cpp +29 -5
  597. esphome/components/sx1509/sx1509.h +9 -1
  598. esphome/components/t6615/t6615.cpp +1 -0
  599. esphome/components/tc74/tc74.cpp +1 -1
  600. esphome/components/tca9548a/tca9548a.cpp +1 -1
  601. esphome/components/tca9555/tca9555.cpp +2 -2
  602. esphome/components/tcs34725/tcs34725.cpp +4 -4
  603. esphome/components/tee501/tee501.cpp +3 -2
  604. esphome/components/tem3200/tem3200.cpp +5 -6
  605. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  606. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +43 -12
  607. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +4 -1
  608. esphome/components/template/cover/template_cover.cpp +1 -1
  609. esphome/components/template/select/template_select.cpp +6 -4
  610. esphome/components/template/text/template_text.cpp +2 -3
  611. esphome/components/template/valve/template_valve.cpp +5 -3
  612. esphome/components/text/__init__.py +10 -11
  613. esphome/components/text/text.cpp +1 -1
  614. esphome/components/text/text.h +0 -4
  615. esphome/components/text_sensor/__init__.py +1 -0
  616. esphome/components/text_sensor/text_sensor.cpp +8 -4
  617. esphome/components/text_sensor/text_sensor.h +6 -6
  618. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  619. esphome/components/time/__init__.py +1 -2
  620. esphome/components/time_based/time_based_cover.cpp +4 -2
  621. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  622. esphome/components/tm1621/tm1621.cpp +3 -3
  623. esphome/components/tm1637/tm1637.cpp +9 -7
  624. esphome/components/tm1638/tm1638.cpp +7 -5
  625. esphome/components/tm1651/tm1651.cpp +2 -2
  626. esphome/components/tmp102/tmp102.cpp +1 -3
  627. esphome/components/tmp102/tmp102.h +0 -3
  628. esphome/components/tmp1075/tmp1075.cpp +12 -9
  629. esphome/components/tmp117/tmp117.cpp +2 -2
  630. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  631. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  632. esphome/components/tsl2561/tsl2561.cpp +7 -5
  633. esphome/components/tsl2591/tsl2591.cpp +25 -27
  634. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  635. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  636. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  637. esphome/components/tuya/select/tuya_select.cpp +5 -3
  638. esphome/components/tx20/tx20.cpp +3 -3
  639. esphome/components/uart/__init__.py +4 -5
  640. esphome/components/uart/button/uart_button.cpp +1 -1
  641. esphome/components/uart/switch/uart_switch.cpp +2 -2
  642. esphome/components/uart/uart.cpp +2 -2
  643. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  644. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  645. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  646. esphome/components/uart/uart_component_host.cpp +11 -8
  647. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  648. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  649. esphome/components/udp/udp_component.cpp +9 -5
  650. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  651. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  652. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  653. esphome/components/update/__init__.py +1 -0
  654. esphome/components/update/update_entity.cpp +1 -1
  655. esphome/components/update/update_entity.h +0 -3
  656. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  657. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  658. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  659. esphome/components/uptime/sensor/uptime_timestamp_sensor.cpp +1 -1
  660. esphome/components/usb_host/__init__.py +64 -0
  661. esphome/components/usb_host/usb_host.h +116 -0
  662. esphome/components/usb_host/usb_host_client.cpp +394 -0
  663. esphome/components/usb_host/usb_host_component.cpp +35 -0
  664. esphome/components/usb_uart/__init__.py +134 -0
  665. esphome/components/usb_uart/ch34x.cpp +80 -0
  666. esphome/components/usb_uart/cp210x.cpp +126 -0
  667. esphome/components/usb_uart/usb_uart.cpp +328 -0
  668. esphome/components/usb_uart/usb_uart.h +151 -0
  669. esphome/components/valve/__init__.py +1 -0
  670. esphome/components/veml3235/veml3235.cpp +13 -9
  671. esphome/components/veml7700/veml7700.cpp +10 -6
  672. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  673. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  674. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  675. esphome/components/web_server/server_index_v2.h +632 -630
  676. esphome/components/web_server/server_index_v3.h +411 -409
  677. esphome/components/web_server/web_server.cpp +5 -3
  678. esphome/components/web_server_base/web_server_base.cpp +1 -1
  679. esphome/components/web_server_idf/__init__.py +0 -2
  680. esphome/components/web_server_idf/utils.cpp +1 -1
  681. esphome/components/web_server_idf/web_server_idf.cpp +7 -3
  682. esphome/components/web_server_idf/web_server_idf.h +7 -0
  683. esphome/components/weikai/__init__.py +2 -0
  684. esphome/components/weikai/weikai.cpp +24 -22
  685. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  686. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  687. esphome/components/wiegand/wiegand.cpp +1 -1
  688. esphome/components/wifi/wifi_component.cpp +50 -37
  689. esphome/components/wifi/wifi_component.h +7 -4
  690. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  691. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  692. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  693. esphome/components/wireguard/wireguard.cpp +21 -21
  694. esphome/components/wl_134/text_sensor.py +1 -2
  695. esphome/components/wled/wled_light_effect.cpp +1 -1
  696. esphome/components/x9c/x9c.cpp +5 -3
  697. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  698. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  699. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  700. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  701. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  702. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  703. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  704. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  705. esphome/components/xl9535/xl9535.cpp +2 -2
  706. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  707. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  708. esphome/config.py +3 -2
  709. esphome/config_validation.py +46 -17
  710. esphome/const.py +10 -1
  711. esphome/core/__init__.py +37 -18
  712. esphome/core/application.cpp +197 -8
  713. esphome/core/application.h +116 -6
  714. esphome/core/component.cpp +36 -15
  715. esphome/core/component.h +43 -13
  716. esphome/core/config.py +12 -0
  717. esphome/core/defines.h +10 -2
  718. esphome/core/entity_base.cpp +4 -16
  719. esphome/core/entity_base.h +27 -13
  720. esphome/core/helpers.cpp +1 -1
  721. esphome/core/helpers.h +5 -5
  722. esphome/core/log.h +2 -0
  723. esphome/core/log_const_en.h +4 -0
  724. esphome/core/scheduler.cpp +2 -2
  725. esphome/coroutine.py +3 -4
  726. esphome/cpp_generator.py +32 -32
  727. esphome/dashboard/core.py +2 -2
  728. esphome/dashboard/web_server.py +2 -2
  729. esphome/git.py +4 -4
  730. esphome/helpers.py +5 -6
  731. esphome/loader.py +8 -7
  732. esphome/log.py +7 -1
  733. esphome/platformio_api.py +2 -3
  734. esphome/storage_json.py +13 -5
  735. esphome/types.py +12 -13
  736. esphome/util.py +1 -2
  737. esphome/wizard.py +0 -16
  738. esphome/writer.py +5 -3
  739. esphome/yaml_util.py +6 -1
  740. esphome/zeroconf.py +1 -1
  741. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/METADATA +12 -11
  742. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/RECORD +746 -692
  743. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/WHEEL +1 -1
  744. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/entry_points.txt +0 -0
  745. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/licenses/LICENSE +0 -0
  746. {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/top_level.txt +0 -0
@@ -537,7 +537,7 @@ void ThermostatClimate::switch_to_supplemental_action_(climate::ClimateAction ac
537
537
  default:
538
538
  return;
539
539
  }
540
- ESP_LOGVV(TAG, "Updating supplemental action...");
540
+ ESP_LOGVV(TAG, "Updating supplemental action");
541
541
  this->supplemental_action_ = action;
542
542
  this->trigger_supplemental_action_();
543
543
  }
@@ -1300,37 +1300,48 @@ void ThermostatClimate::dump_config() {
1300
1300
  }
1301
1301
  ESP_LOGCONFIG(TAG, " Start-up Delay Enabled: %s", YESNO(this->use_startup_delay_));
1302
1302
  if (this->supports_cool_) {
1303
- ESP_LOGCONFIG(TAG, " Cooling Parameters:");
1304
- ESP_LOGCONFIG(TAG, " Deadband: %.1f°C", this->cooling_deadband_);
1305
- ESP_LOGCONFIG(TAG, " Overrun: %.1f°C", this->cooling_overrun_);
1303
+ ESP_LOGCONFIG(TAG,
1304
+ " Cooling Parameters:\n"
1305
+ " Deadband: %.1f°C\n"
1306
+ " Overrun: %.1f°C",
1307
+ this->cooling_deadband_, this->cooling_overrun_);
1306
1308
  if ((this->supplemental_cool_delta_ > 0) || (this->timer_duration_(thermostat::TIMER_COOLING_MAX_RUN_TIME) > 0)) {
1307
- ESP_LOGCONFIG(TAG, " Supplemental Delta: %.1f°C", this->supplemental_cool_delta_);
1308
- ESP_LOGCONFIG(TAG, " Maximum Run Time: %" PRIu32 "s",
1309
+ ESP_LOGCONFIG(TAG,
1310
+ " Supplemental Delta: %.1f°C\n"
1311
+ " Maximum Run Time: %" PRIu32 "s",
1312
+ this->supplemental_cool_delta_,
1309
1313
  this->timer_duration_(thermostat::TIMER_COOLING_MAX_RUN_TIME) / 1000);
1310
1314
  }
1311
- ESP_LOGCONFIG(TAG, " Minimum Off Time: %" PRIu32 "s",
1312
- this->timer_duration_(thermostat::TIMER_COOLING_OFF) / 1000);
1313
- ESP_LOGCONFIG(TAG, " Minimum Run Time: %" PRIu32 "s",
1315
+ ESP_LOGCONFIG(TAG,
1316
+ " Minimum Off Time: %" PRIu32 "s\n"
1317
+ " Minimum Run Time: %" PRIu32 "s",
1318
+ this->timer_duration_(thermostat::TIMER_COOLING_OFF) / 1000,
1314
1319
  this->timer_duration_(thermostat::TIMER_COOLING_ON) / 1000);
1315
1320
  }
1316
1321
  if (this->supports_heat_) {
1317
- ESP_LOGCONFIG(TAG, " Heating Parameters:");
1318
- ESP_LOGCONFIG(TAG, " Deadband: %.1f°C", this->heating_deadband_);
1319
- ESP_LOGCONFIG(TAG, " Overrun: %.1f°C", this->heating_overrun_);
1322
+ ESP_LOGCONFIG(TAG,
1323
+ " Heating Parameters:\n"
1324
+ " Deadband: %.1f°C\n"
1325
+ " Overrun: %.1f°C",
1326
+ this->heating_deadband_, this->heating_overrun_);
1320
1327
  if ((this->supplemental_heat_delta_ > 0) || (this->timer_duration_(thermostat::TIMER_HEATING_MAX_RUN_TIME) > 0)) {
1321
- ESP_LOGCONFIG(TAG, " Supplemental Delta: %.1f°C", this->supplemental_heat_delta_);
1322
- ESP_LOGCONFIG(TAG, " Maximum Run Time: %" PRIu32 "s",
1328
+ ESP_LOGCONFIG(TAG,
1329
+ " Supplemental Delta: %.1f°C\n"
1330
+ " Maximum Run Time: %" PRIu32 "s",
1331
+ this->supplemental_heat_delta_,
1323
1332
  this->timer_duration_(thermostat::TIMER_HEATING_MAX_RUN_TIME) / 1000);
1324
1333
  }
1325
- ESP_LOGCONFIG(TAG, " Minimum Off Time: %" PRIu32 "s",
1326
- this->timer_duration_(thermostat::TIMER_HEATING_OFF) / 1000);
1327
- ESP_LOGCONFIG(TAG, " Minimum Run Time: %" PRIu32 "s",
1334
+ ESP_LOGCONFIG(TAG,
1335
+ " Minimum Off Time: %" PRIu32 "s\n"
1336
+ " Minimum Run Time: %" PRIu32 "s",
1337
+ this->timer_duration_(thermostat::TIMER_HEATING_OFF) / 1000,
1328
1338
  this->timer_duration_(thermostat::TIMER_HEATING_ON) / 1000);
1329
1339
  }
1330
1340
  if (this->supports_fan_only_) {
1331
- ESP_LOGCONFIG(TAG, " Fanning Minimum Off Time: %" PRIu32 "s",
1332
- this->timer_duration_(thermostat::TIMER_FANNING_OFF) / 1000);
1333
- ESP_LOGCONFIG(TAG, " Fanning Minimum Run Time: %" PRIu32 "s",
1341
+ ESP_LOGCONFIG(TAG,
1342
+ " Fanning Minimum Off Time: %" PRIu32 "s\n"
1343
+ " Fanning Minimum Run Time: %" PRIu32 "s",
1344
+ this->timer_duration_(thermostat::TIMER_FANNING_OFF) / 1000,
1334
1345
  this->timer_duration_(thermostat::TIMER_FANNING_ON) / 1000);
1335
1346
  }
1336
1347
  if (this->supports_fan_mode_on_ || this->supports_fan_mode_off_ || this->supports_fan_mode_auto_ ||
@@ -1341,14 +1352,17 @@ void ThermostatClimate::dump_config() {
1341
1352
  this->timer_duration_(thermostat::TIMER_FAN_MODE) / 1000);
1342
1353
  }
1343
1354
  ESP_LOGCONFIG(TAG, " Minimum Idle Time: %" PRIu32 "s", this->timer_[thermostat::TIMER_IDLE_ON].time / 1000);
1344
- ESP_LOGCONFIG(TAG, " Supports AUTO: %s", YESNO(this->supports_auto_));
1345
- ESP_LOGCONFIG(TAG, " Supports HEAT/COOL: %s", YESNO(this->supports_heat_cool_));
1346
- ESP_LOGCONFIG(TAG, " Supports COOL: %s", YESNO(this->supports_cool_));
1347
- ESP_LOGCONFIG(TAG, " Supports DRY: %s", YESNO(this->supports_dry_));
1348
- ESP_LOGCONFIG(TAG, " Supports FAN_ONLY: %s", YESNO(this->supports_fan_only_));
1349
- ESP_LOGCONFIG(TAG, " Supports FAN_ONLY_ACTION_USES_FAN_MODE_TIMER: %s",
1350
- YESNO(this->supports_fan_only_action_uses_fan_mode_timer_));
1351
- ESP_LOGCONFIG(TAG, " Supports FAN_ONLY_COOLING: %s", YESNO(this->supports_fan_only_cooling_));
1355
+ ESP_LOGCONFIG(TAG,
1356
+ " Supports AUTO: %s\n"
1357
+ " Supports HEAT/COOL: %s\n"
1358
+ " Supports COOL: %s\n"
1359
+ " Supports DRY: %s\n"
1360
+ " Supports FAN_ONLY: %s\n"
1361
+ " Supports FAN_ONLY_ACTION_USES_FAN_MODE_TIMER: %s\n"
1362
+ " Supports FAN_ONLY_COOLING: %s",
1363
+ YESNO(this->supports_auto_), YESNO(this->supports_heat_cool_), YESNO(this->supports_cool_),
1364
+ YESNO(this->supports_dry_), YESNO(this->supports_fan_only_),
1365
+ YESNO(this->supports_fan_only_action_uses_fan_mode_timer_), YESNO(this->supports_fan_only_cooling_));
1352
1366
  if (this->supports_cool_) {
1353
1367
  ESP_LOGCONFIG(TAG, " Supports FAN_WITH_COOLING: %s", YESNO(this->supports_fan_with_cooling_));
1354
1368
  }
@@ -1356,21 +1370,31 @@ void ThermostatClimate::dump_config() {
1356
1370
  ESP_LOGCONFIG(TAG, " Supports FAN_WITH_HEATING: %s", YESNO(this->supports_fan_with_heating_));
1357
1371
  }
1358
1372
  ESP_LOGCONFIG(TAG, " Supports HEAT: %s", YESNO(this->supports_heat_));
1359
- ESP_LOGCONFIG(TAG, " Supports FAN MODE ON: %s", YESNO(this->supports_fan_mode_on_));
1360
- ESP_LOGCONFIG(TAG, " Supports FAN MODE OFF: %s", YESNO(this->supports_fan_mode_off_));
1361
- ESP_LOGCONFIG(TAG, " Supports FAN MODE AUTO: %s", YESNO(this->supports_fan_mode_auto_));
1362
- ESP_LOGCONFIG(TAG, " Supports FAN MODE LOW: %s", YESNO(this->supports_fan_mode_low_));
1363
- ESP_LOGCONFIG(TAG, " Supports FAN MODE MEDIUM: %s", YESNO(this->supports_fan_mode_medium_));
1364
- ESP_LOGCONFIG(TAG, " Supports FAN MODE HIGH: %s", YESNO(this->supports_fan_mode_high_));
1365
- ESP_LOGCONFIG(TAG, " Supports FAN MODE MIDDLE: %s", YESNO(this->supports_fan_mode_middle_));
1366
- ESP_LOGCONFIG(TAG, " Supports FAN MODE FOCUS: %s", YESNO(this->supports_fan_mode_focus_));
1367
- ESP_LOGCONFIG(TAG, " Supports FAN MODE DIFFUSE: %s", YESNO(this->supports_fan_mode_diffuse_));
1368
- ESP_LOGCONFIG(TAG, " Supports FAN MODE QUIET: %s", YESNO(this->supports_fan_mode_quiet_));
1369
- ESP_LOGCONFIG(TAG, " Supports SWING MODE BOTH: %s", YESNO(this->supports_swing_mode_both_));
1370
- ESP_LOGCONFIG(TAG, " Supports SWING MODE OFF: %s", YESNO(this->supports_swing_mode_off_));
1371
- ESP_LOGCONFIG(TAG, " Supports SWING MODE HORIZONTAL: %s", YESNO(this->supports_swing_mode_horizontal_));
1372
- ESP_LOGCONFIG(TAG, " Supports SWING MODE VERTICAL: %s", YESNO(this->supports_swing_mode_vertical_));
1373
- ESP_LOGCONFIG(TAG, " Supports TWO SET POINTS: %s", YESNO(this->supports_two_points_));
1373
+ ESP_LOGCONFIG(TAG,
1374
+ " Supports FAN MODE ON: %s\n"
1375
+ " Supports FAN MODE OFF: %s\n"
1376
+ " Supports FAN MODE AUTO: %s\n"
1377
+ " Supports FAN MODE LOW: %s\n"
1378
+ " Supports FAN MODE MEDIUM: %s\n"
1379
+ " Supports FAN MODE HIGH: %s\n"
1380
+ " Supports FAN MODE MIDDLE: %s\n"
1381
+ " Supports FAN MODE FOCUS: %s\n"
1382
+ " Supports FAN MODE DIFFUSE: %s\n"
1383
+ " Supports FAN MODE QUIET: %s",
1384
+ YESNO(this->supports_fan_mode_on_), YESNO(this->supports_fan_mode_off_),
1385
+ YESNO(this->supports_fan_mode_auto_), YESNO(this->supports_fan_mode_low_),
1386
+ YESNO(this->supports_fan_mode_medium_), YESNO(this->supports_fan_mode_high_),
1387
+ YESNO(this->supports_fan_mode_middle_), YESNO(this->supports_fan_mode_focus_),
1388
+ YESNO(this->supports_fan_mode_diffuse_), YESNO(this->supports_fan_mode_quiet_));
1389
+ ESP_LOGCONFIG(TAG,
1390
+ " Supports SWING MODE BOTH: %s\n"
1391
+ " Supports SWING MODE OFF: %s\n"
1392
+ " Supports SWING MODE HORIZONTAL: %s\n"
1393
+ " Supports SWING MODE VERTICAL: %s\n"
1394
+ " Supports TWO SET POINTS: %s",
1395
+ YESNO(this->supports_swing_mode_both_), YESNO(this->supports_swing_mode_off_),
1396
+ YESNO(this->supports_swing_mode_horizontal_), YESNO(this->supports_swing_mode_vertical_),
1397
+ YESNO(this->supports_two_points_));
1374
1398
 
1375
1399
  ESP_LOGCONFIG(TAG, " Supported PRESETS: ");
1376
1400
  for (auto &it : this->preset_config_) {
@@ -1,6 +1,5 @@
1
1
  from importlib import resources
2
2
  import logging
3
- from typing import Optional
4
3
 
5
4
  import tzlocal
6
5
 
@@ -40,7 +39,7 @@ SyncTrigger = time_ns.class_("SyncTrigger", automation.Trigger.template(), cg.Co
40
39
  TimeHasTimeCondition = time_ns.class_("TimeHasTimeCondition", Condition)
41
40
 
42
41
 
43
- def _load_tzdata(iana_key: str) -> Optional[bytes]:
42
+ def _load_tzdata(iana_key: str) -> bytes | None:
44
43
  # From https://tzdata.readthedocs.io/en/latest/#examples
45
44
  try:
46
45
  package_loc, resource = iana_key.rsplit("/", 1)
@@ -12,8 +12,10 @@ using namespace esphome::cover;
12
12
 
13
13
  void TimeBasedCover::dump_config() {
14
14
  LOG_COVER("", "Time Based Cover", this);
15
- ESP_LOGCONFIG(TAG, " Open Duration: %.1fs", this->open_duration_ / 1e3f);
16
- ESP_LOGCONFIG(TAG, " Close Duration: %.1fs", this->close_duration_ / 1e3f);
15
+ ESP_LOGCONFIG(TAG,
16
+ " Open Duration: %.1fs\n"
17
+ " Close Duration: %.1fs",
18
+ this->open_duration_ / 1e3f, this->close_duration_ / 1e3f);
17
19
  }
18
20
  void TimeBasedCover::setup() {
19
21
  auto restore = this->restore_state_();
@@ -1,7 +1,7 @@
1
1
  #include "tlc59208f_output.h"
2
- #include "esphome/core/log.h"
3
- #include "esphome/core/helpers.h"
4
2
  #include "esphome/core/hal.h"
3
+ #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  namespace esphome {
7
7
  namespace tlc59208f {
@@ -71,9 +71,9 @@ static const uint8_t LDR_PWM = 0x02;
71
71
  static const uint8_t LDR_GRPPWM = 0x03;
72
72
 
73
73
  void TLC59208FOutput::setup() {
74
- ESP_LOGCONFIG(TAG, "Setting up TLC59208FOutputComponent...");
74
+ ESP_LOGCONFIG(TAG, "Running setup");
75
75
 
76
- ESP_LOGV(TAG, " Resetting all devices on the bus...");
76
+ ESP_LOGV(TAG, " Resetting all devices on the bus");
77
77
 
78
78
  // Reset all devices on the bus
79
79
  if (this->bus_->write(TLC59208F_SWRST_ADDR >> 1, TLC59208F_SWRST_SEQ, 2) != i2c::ERROR_OK) {
@@ -111,8 +111,10 @@ void TLC59208FOutput::setup() {
111
111
  }
112
112
 
113
113
  void TLC59208FOutput::dump_config() {
114
- ESP_LOGCONFIG(TAG, "TLC59208F:");
115
- ESP_LOGCONFIG(TAG, " Mode: 0x%02X", this->mode_);
114
+ ESP_LOGCONFIG(TAG,
115
+ "TLC59208F:\n"
116
+ " Mode: 0x%02X",
117
+ this->mode_);
116
118
 
117
119
  if (this->is_failed()) {
118
120
  ESP_LOGE(TAG, "Setting up TLC59208F failed!");
@@ -1,7 +1,7 @@
1
1
  #include "tm1621.h"
2
- #include "esphome/core/log.h"
3
- #include "esphome/core/helpers.h"
4
2
  #include "esphome/core/hal.h"
3
+ #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  namespace esphome {
7
7
  namespace tm1621 {
@@ -29,7 +29,7 @@ const uint8_t TM1621_DIGIT_ROW[2][12] = {{0x5F, 0x50, 0x3D, 0x79, 0x72, 0x6B, 0x
29
29
  {0xF5, 0x05, 0xB6, 0x97, 0x47, 0xD3, 0xF3, 0x85, 0xF7, 0xD7, 0x02, 0x00}};
30
30
 
31
31
  void TM1621Display::setup() {
32
- ESP_LOGCONFIG(TAG, "Setting up TM1621...");
32
+ ESP_LOGCONFIG(TAG, "Running setup");
33
33
 
34
34
  this->cs_pin_->setup(); // OUTPUT
35
35
  this->cs_pin_->digital_write(true);
@@ -1,7 +1,7 @@
1
1
  #include "tm1637.h"
2
- #include "esphome/core/log.h"
3
- #include "esphome/core/helpers.h"
4
2
  #include "esphome/core/hal.h"
3
+ #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  namespace esphome {
7
7
  namespace tm1637 {
@@ -125,7 +125,7 @@ const uint8_t TM1637_ASCII_TO_RAW[] PROGMEM = {
125
125
  0b01100011, // '~', ord 0x7E (degree symbol)
126
126
  };
127
127
  void TM1637Display::setup() {
128
- ESP_LOGCONFIG(TAG, "Setting up TM1637...");
128
+ ESP_LOGCONFIG(TAG, "Running setup");
129
129
 
130
130
  this->clk_pin_->setup(); // OUTPUT
131
131
  this->clk_pin_->digital_write(false); // LOW
@@ -135,10 +135,12 @@ void TM1637Display::setup() {
135
135
  this->display();
136
136
  }
137
137
  void TM1637Display::dump_config() {
138
- ESP_LOGCONFIG(TAG, "TM1637:");
139
- ESP_LOGCONFIG(TAG, " Intensity: %d", this->intensity_);
140
- ESP_LOGCONFIG(TAG, " Inverted: %d", this->inverted_);
141
- ESP_LOGCONFIG(TAG, " Length: %d", this->length_);
138
+ ESP_LOGCONFIG(TAG,
139
+ "TM1637:\n"
140
+ " Intensity: %d\n"
141
+ " Inverted: %d\n"
142
+ " Length: %d",
143
+ this->intensity_, this->inverted_, this->length_);
142
144
  LOG_PIN(" CLK Pin: ", this->clk_pin_);
143
145
  LOG_PIN(" DIO Pin: ", this->dio_pin_);
144
146
  LOG_UPDATE_INTERVAL(this);
@@ -1,8 +1,8 @@
1
1
  #include "tm1638.h"
2
2
  #include "sevenseg.h"
3
- #include "esphome/core/log.h"
4
- #include "esphome/core/helpers.h"
5
3
  #include "esphome/core/hal.h"
4
+ #include "esphome/core/helpers.h"
5
+ #include "esphome/core/log.h"
6
6
 
7
7
  namespace esphome {
8
8
  namespace tm1638 {
@@ -20,7 +20,7 @@ static const uint8_t TM1638_UNKNOWN_CHAR = 0b11111111;
20
20
  static const uint8_t TM1638_SHIFT_DELAY = 4; // clock pause between commands, default 4ms
21
21
 
22
22
  void TM1638Component::setup() {
23
- ESP_LOGD(TAG, "Setting up TM1638...");
23
+ ESP_LOGCONFIG(TAG, "Running setup");
24
24
 
25
25
  this->clk_pin_->setup(); // OUTPUT
26
26
  this->dio_pin_->setup(); // OUTPUT
@@ -43,8 +43,10 @@ void TM1638Component::setup() {
43
43
  }
44
44
 
45
45
  void TM1638Component::dump_config() {
46
- ESP_LOGCONFIG(TAG, "TM1638:");
47
- ESP_LOGCONFIG(TAG, " Intensity: %u", this->intensity_);
46
+ ESP_LOGCONFIG(TAG,
47
+ "TM1638:\n"
48
+ " Intensity: %u",
49
+ this->intensity_);
48
50
  LOG_PIN(" CLK Pin: ", this->clk_pin_);
49
51
  LOG_PIN(" DIO Pin: ", this->dio_pin_);
50
52
  LOG_PIN(" STB Pin: ", this->stb_pin_);
@@ -1,8 +1,8 @@
1
1
  #ifdef USE_ARDUINO
2
2
 
3
3
  #include "tm1651.h"
4
- #include "esphome/core/log.h"
5
4
  #include "esphome/core/helpers.h"
5
+ #include "esphome/core/log.h"
6
6
 
7
7
  namespace esphome {
8
8
  namespace tm1651 {
@@ -17,7 +17,7 @@ static const uint8_t TM1651_BRIGHTNESS_MEDIUM_HW = 2;
17
17
  static const uint8_t TM1651_BRIGHTNESS_HIGH_HW = 7;
18
18
 
19
19
  void TM1651Display::setup() {
20
- ESP_LOGCONFIG(TAG, "Setting up TM1651...");
20
+ ESP_LOGCONFIG(TAG, "Running setup");
21
21
 
22
22
  uint8_t clk = clk_pin_->get_pin();
23
23
  uint8_t dio = dio_pin_->get_pin();
@@ -15,13 +15,11 @@ static const uint8_t TMP102_REGISTER_HIGH_LIMIT = 0x03;
15
15
 
16
16
  static const float TMP102_CONVERSION_FACTOR = 0.0625;
17
17
 
18
- void TMP102Component::setup() { ESP_LOGCONFIG(TAG, "Setting up TMP102..."); }
19
-
20
18
  void TMP102Component::dump_config() {
21
19
  ESP_LOGCONFIG(TAG, "TMP102:");
22
20
  LOG_I2C_DEVICE(this);
23
21
  if (this->is_failed()) {
24
- ESP_LOGE(TAG, "Communication with TMP102 failed!");
22
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
25
23
  }
26
24
  LOG_UPDATE_INTERVAL(this);
27
25
  LOG_SENSOR(" ", "Temperature", this);
@@ -9,10 +9,7 @@ namespace tmp102 {
9
9
 
10
10
  class TMP102Component : public PollingComponent, public i2c::I2CDevice, public sensor::Sensor {
11
11
  public:
12
- /// Setup (reset) the sensor and check connection.
13
- void setup() override;
14
12
  void dump_config() override;
15
- /// Update the sensor values (temperature)
16
13
  void update() override;
17
14
 
18
15
  float get_setup_priority() const override;
@@ -44,17 +44,20 @@ void TMP1075Sensor::update() {
44
44
  void TMP1075Sensor::dump_config() {
45
45
  LOG_SENSOR("", "TMP1075 Sensor", this);
46
46
  if (this->is_failed()) {
47
- ESP_LOGE(TAG, " Communication with TMP1075 failed!");
47
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
48
48
  return;
49
49
  }
50
- ESP_LOGCONFIG(TAG, " limit low : %.4f °C", alert_limit_low_);
51
- ESP_LOGCONFIG(TAG, " limit high : %.4f °C", alert_limit_high_);
52
- ESP_LOGCONFIG(TAG, " oneshot : %d", config_.fields.oneshot);
53
- ESP_LOGCONFIG(TAG, " rate : %d", config_.fields.rate);
54
- ESP_LOGCONFIG(TAG, " fault_count: %d", config_.fields.faults);
55
- ESP_LOGCONFIG(TAG, " polarity : %d", config_.fields.polarity);
56
- ESP_LOGCONFIG(TAG, " alert_mode : %d", config_.fields.alert_mode);
57
- ESP_LOGCONFIG(TAG, " shutdown : %d", config_.fields.shutdown);
50
+ ESP_LOGCONFIG(TAG,
51
+ " limit low : %.4f °C\n"
52
+ " limit high : %.4f °C\n"
53
+ " oneshot : %d\n"
54
+ " rate : %d\n"
55
+ " fault_count: %d\n"
56
+ " polarity : %d\n"
57
+ " alert_mode : %d\n"
58
+ " shutdown : %d",
59
+ alert_limit_low_, alert_limit_high_, config_.fields.oneshot, config_.fields.rate, config_.fields.faults,
60
+ config_.fields.polarity, config_.fields.alert_mode, config_.fields.shutdown);
58
61
  }
59
62
 
60
63
  void TMP1075Sensor::set_fault_count(const int faults) {
@@ -26,7 +26,7 @@ void TMP117Component::update() {
26
26
  }
27
27
  }
28
28
  void TMP117Component::setup() {
29
- ESP_LOGCONFIG(TAG, "Setting up TMP117...");
29
+ ESP_LOGCONFIG(TAG, "Running setup");
30
30
 
31
31
  if (!this->write_config_(this->config_)) {
32
32
  this->mark_failed();
@@ -43,7 +43,7 @@ void TMP117Component::dump_config() {
43
43
  ESP_LOGD(TAG, "TMP117:");
44
44
  LOG_I2C_DEVICE(this);
45
45
  if (this->is_failed()) {
46
- ESP_LOGE(TAG, "Communication with TMP117 failed!");
46
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
47
47
  }
48
48
  LOG_SENSOR(" ", "Temperature", this);
49
49
  }
@@ -27,7 +27,7 @@ void TOF10120Sensor::setup() {}
27
27
 
28
28
  void TOF10120Sensor::update() {
29
29
  if (!this->write_bytes(TOF10120_DISTANCE_REGISTER, TOF10120_READ_DISTANCE_CMD, sizeof(TOF10120_READ_DISTANCE_CMD))) {
30
- ESP_LOGE(TAG, "Communication with TOF10120 failed on write");
30
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
31
31
  this->status_set_warning();
32
32
  return;
33
33
  }
@@ -39,7 +39,7 @@ void TOF10120Sensor::update() {
39
39
  }
40
40
  delay(TOF10120_DEFAULT_DELAY);
41
41
  if (this->read(data, 2) != i2c::ERROR_OK) {
42
- ESP_LOGE(TAG, "Communication with TOF10120 failed on read");
42
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
43
43
  this->status_set_warning();
44
44
  return;
45
45
  }
@@ -34,8 +34,10 @@ void Tormatic::dump_config() {
34
34
  LOG_COVER("", "Tormatic Cover", this);
35
35
  this->check_uart_settings(9600, 1, uart::UART_CONFIG_PARITY_NONE, 8);
36
36
 
37
- ESP_LOGCONFIG(TAG, " Open Duration: %.1fs", this->open_duration_ / 1e3f);
38
- ESP_LOGCONFIG(TAG, " Close Duration: %.1fs", this->close_duration_ / 1e3f);
37
+ ESP_LOGCONFIG(TAG,
38
+ " Open Duration: %.1fs\n"
39
+ " Close Duration: %.1fs",
40
+ this->open_duration_ / 1e3f, this->close_duration_ / 1e3f);
39
41
 
40
42
  auto restore = this->restore_state_();
41
43
  if (restore.has_value()) {
@@ -15,7 +15,7 @@ static const uint8_t TSL2561_REGISTER_DATA_0 = 0x0C;
15
15
  static const uint8_t TSL2561_REGISTER_DATA_1 = 0x0E;
16
16
 
17
17
  void TSL2561Sensor::setup() {
18
- ESP_LOGCONFIG(TAG, "Setting up TSL2561...");
18
+ ESP_LOGCONFIG(TAG, "Running setup");
19
19
  uint8_t id;
20
20
  if (!this->tsl2561_read_byte(TSL2561_REGISTER_ID, &id)) {
21
21
  this->mark_failed();
@@ -41,12 +41,14 @@ void TSL2561Sensor::dump_config() {
41
41
  LOG_I2C_DEVICE(this);
42
42
 
43
43
  if (this->is_failed()) {
44
- ESP_LOGE(TAG, "Communication with TSL2561 failed!");
44
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
45
45
  }
46
46
 
47
47
  int gain = this->gain_ == TSL2561_GAIN_1X ? 1 : 16;
48
- ESP_LOGCONFIG(TAG, " Gain: %dx", gain);
49
- ESP_LOGCONFIG(TAG, " Integration Time: %.1f ms", this->get_integration_time_ms_());
48
+ ESP_LOGCONFIG(TAG,
49
+ " Gain: %dx\n"
50
+ " Integration Time: %.1f ms",
51
+ gain, this->get_integration_time_ms_());
50
52
 
51
53
  LOG_UPDATE_INTERVAL(this);
52
54
  }
@@ -65,7 +67,7 @@ void TSL2561Sensor::update() {
65
67
 
66
68
  float TSL2561Sensor::calculate_lx_(uint16_t ch0, uint16_t ch1) {
67
69
  if ((ch0 == 0xFFFF) || (ch1 == 0xFFFF)) {
68
- ESP_LOGW(TAG, "TSL2561 sensor is saturated.");
70
+ ESP_LOGW(TAG, "Sensor is saturated");
69
71
  return NAN;
70
72
  }
71
73
 
@@ -26,13 +26,13 @@ static const char *const TAG = "tsl2591.sensor";
26
26
  void TSL2591Component::enable() {
27
27
  // Enable the device by setting the control bit to 0x01. Also turn on ADCs.
28
28
  if (!this->write_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_ENABLE, TSL2591_ENABLE_POWERON | TSL2591_ENABLE_AEN)) {
29
- ESP_LOGE(TAG, "Failed I2C write during enable()");
29
+ ESP_LOGE(TAG, "I2C write failed");
30
30
  }
31
31
  }
32
32
 
33
33
  void TSL2591Component::disable() {
34
34
  if (!this->write_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_ENABLE, TSL2591_ENABLE_POWEROFF)) {
35
- ESP_LOGE(TAG, "Failed I2C write during disable()");
35
+ ESP_LOGE(TAG, "I2C write failed");
36
36
  }
37
37
  }
38
38
 
@@ -43,6 +43,7 @@ void TSL2591Component::disable_if_power_saving_() {
43
43
  }
44
44
 
45
45
  void TSL2591Component::setup() {
46
+ ESP_LOGCONFIG(TAG, "Running setup for address 0x%02X", this->address_);
46
47
  switch (this->component_gain_) {
47
48
  case TSL2591_CGAIN_LOW:
48
49
  this->gain_ = TSL2591_GAIN_LOW;
@@ -61,21 +62,15 @@ void TSL2591Component::setup() {
61
62
  break;
62
63
  }
63
64
 
64
- uint8_t address = this->address_;
65
- ESP_LOGI(TAG, "Setting up TSL2591 sensor at I2C address 0x%02X", address);
66
-
67
65
  uint8_t id;
68
66
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_DEVICE_ID, &id)) {
69
- ESP_LOGE(TAG, "Failed I2C read during setup()");
67
+ ESP_LOGE(TAG, "I2C read failed");
70
68
  this->mark_failed();
71
69
  return;
72
70
  }
73
71
 
74
72
  if (id != 0x50) {
75
- ESP_LOGE(TAG,
76
- "Could not find the TSL2591 sensor. The ID register of the device at address 0x%02X reported 0x%02X "
77
- "instead of 0x50.",
78
- address, id);
73
+ ESP_LOGE(TAG, "Unknown chip ID");
79
74
  this->mark_failed();
80
75
  return;
81
76
  }
@@ -89,7 +84,7 @@ void TSL2591Component::dump_config() {
89
84
  LOG_I2C_DEVICE(this);
90
85
 
91
86
  if (this->is_failed()) {
92
- ESP_LOGE(TAG, "Communication with TSL2591 failed earlier, during setup");
87
+ ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
93
88
  return;
94
89
  }
95
90
 
@@ -119,13 +114,16 @@ void TSL2591Component::dump_config() {
119
114
  gain_word = "auto";
120
115
  break;
121
116
  }
122
- ESP_LOGCONFIG(TAG, " Gain: %dx (%s)", gain, gain_word.c_str());
123
117
  TSL2591IntegrationTime raw_timing = this->integration_time_;
124
118
  int timing_ms = (1 + raw_timing) * 100;
125
- ESP_LOGCONFIG(TAG, " Integration Time: %d ms", timing_ms);
126
- ESP_LOGCONFIG(TAG, " Power save mode enabled: %s", ONOFF(this->power_save_mode_enabled_));
127
- ESP_LOGCONFIG(TAG, " Device factor: %f", this->device_factor_);
128
- ESP_LOGCONFIG(TAG, " Glass attenuation factor: %f", this->glass_attenuation_factor_);
119
+ ESP_LOGCONFIG(TAG,
120
+ " Gain: %dx (%s)"
121
+ " Integration Time: %d ms\n"
122
+ " Power save mode enabled: %s\n"
123
+ " Device factor: %f\n"
124
+ " Glass attenuation factor: %f",
125
+ gain, gain_word.c_str(), timing_ms, ONOFF(this->power_save_mode_enabled_), this->device_factor_,
126
+ this->glass_attenuation_factor_);
129
127
  LOG_SENSOR(" ", "Full spectrum:", this->full_spectrum_sensor_);
130
128
  LOG_SENSOR(" ", "Infrared:", this->infrared_sensor_);
131
129
  LOG_SENSOR(" ", "Visible:", this->visible_sensor_);
@@ -174,7 +172,7 @@ void TSL2591Component::interval_function_for_update_() {
174
172
  uint64_t now = millis();
175
173
  ESP_LOGD(TAG, "Elapsed %3llu ms; still waiting for valid ADC", (now - this->interval_start_));
176
174
  if (now > this->interval_timeout_) {
177
- ESP_LOGW(TAG, "Interval timeout for TSL2591 '%s' expired before ADCs became valid.", this->name_);
175
+ ESP_LOGW(TAG, "Interval timeout for '%s' expired before ADCs became valid", this->name_);
178
176
  this->cancel_interval(interval_name);
179
177
  }
180
178
  return;
@@ -235,7 +233,7 @@ void TSL2591Component::set_integration_time_and_gain(TSL2591IntegrationTime inte
235
233
  this->gain_ = gain;
236
234
  if (!this->write_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CONTROL,
237
235
  this->integration_time_ | this->gain_)) { // NOLINT
238
- ESP_LOGE(TAG, "Failed I2C write during set_integration_time_and_gain()");
236
+ ESP_LOGE(TAG, "I2C write failed");
239
237
  }
240
238
  // The ADC values can be confused if gain or integration time are changed in the middle of a cycle.
241
239
  // So, we unconditionally disable the device to turn the ADCs off. When re-enabling, the ADCs
@@ -255,7 +253,7 @@ float TSL2591Component::get_setup_priority() const { return setup_priority::DATA
255
253
  bool TSL2591Component::is_adc_valid() {
256
254
  uint8_t status;
257
255
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_STATUS, &status)) {
258
- ESP_LOGE(TAG, "Failed I2C read during is_adc_valid()");
256
+ ESP_LOGE(TAG, "I2C read failed");
259
257
  return false;
260
258
  }
261
259
  return status & 0x01;
@@ -281,7 +279,7 @@ uint32_t TSL2591Component::get_combined_illuminance() {
281
279
  if (!avalid) {
282
280
  // still not valid after a sutiable delay
283
281
  // we don't mark the device as failed since it might come around in the future (probably not :-()
284
- ESP_LOGE(TAG, "tsl2591 device '%s' did not return valid readings.", this->name_);
282
+ ESP_LOGE(TAG, "Device '%s' returned invalid readings", this->name_);
285
283
  this->disable_if_power_saving_();
286
284
  return 0;
287
285
  }
@@ -295,20 +293,20 @@ uint32_t TSL2591Component::get_combined_illuminance() {
295
293
  uint16_t ch0_16;
296
294
  uint16_t ch1_16;
297
295
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN0_LOW, &ch0low)) {
298
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
296
+ ESP_LOGE(TAG, "I2C read failed");
299
297
  return 0;
300
298
  }
301
299
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN0_HIGH, &ch0high)) {
302
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
300
+ ESP_LOGE(TAG, "I2C read failed");
303
301
  return 0;
304
302
  }
305
303
  ch0_16 = (ch0high << 8) | ch0low;
306
304
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN1_LOW, &ch1low)) {
307
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
305
+ ESP_LOGE(TAG, "I2C read failed");
308
306
  return 0;
309
307
  }
310
308
  if (!this->read_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CHAN1_HIGH, &ch1high)) {
311
- ESP_LOGE(TAG, "Failed I2C read during get_combined_illuminance()");
309
+ ESP_LOGE(TAG, "I2C read failed");
312
310
  return 0;
313
311
  }
314
312
  ch1_16 = (ch1high << 8) | ch1low;
@@ -335,7 +333,7 @@ uint16_t TSL2591Component::get_illuminance(TSL2591SensorChannel channel, uint32_
335
333
  return ((combined_illuminance & 0xFFFF) - (combined_illuminance >> 16));
336
334
  }
337
335
  // unknown channel!
338
- ESP_LOGE(TAG, "TSL2591Component::get_illuminance() caller requested an unknown channel: %d", channel);
336
+ ESP_LOGE(TAG, "get_illuminance() caller requested an unknown channel: %d", channel);
339
337
  return 0;
340
338
  }
341
339
 
@@ -358,13 +356,13 @@ float TSL2591Component::get_calculated_lux(uint16_t full_spectrum, uint16_t infr
358
356
  uint16_t max_count = (this->integration_time_ == TSL2591_INTEGRATION_TIME_100MS ? 36863 : 65535);
359
357
  if ((full_spectrum == max_count) || (infrared == max_count)) {
360
358
  // Signal an overflow
361
- ESP_LOGW(TAG, "Apparent saturation on TSL2591 (%s). You could reduce the gain or integration time.", this->name_);
359
+ ESP_LOGW(TAG, "Apparent saturation on '%s'; try reducing the gain or integration time", this->name_);
362
360
  return NAN;
363
361
  }
364
362
 
365
363
  if ((full_spectrum == 0) && (infrared == 0)) {
366
364
  // trivial conversion; avoids divide by 0
367
- ESP_LOGW(TAG, "Zero reading on both TSL2591 (%s) sensors. Is the device having a problem?", this->name_);
365
+ ESP_LOGW(TAG, "Zero reading on both '%s' sensors", this->name_);
368
366
  return 0.0F;
369
367
  }
370
368
 
@@ -47,7 +47,7 @@ struct TT21100TouchReport {
47
47
  float TT21100Touchscreen::get_setup_priority() const { return setup_priority::HARDWARE - 1.0f; }
48
48
 
49
49
  void TT21100Touchscreen::setup() {
50
- ESP_LOGCONFIG(TAG, "Setting up TT21100 Touchscreen...");
50
+ ESP_LOGCONFIG(TAG, "Running setup");
51
51
 
52
52
  // Register interrupt pin
53
53
  if (this->interrupt_pin_ != nullptr) {