esphome 2025.5.1__py3-none-any.whl → 2025.6.0__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 (753) 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 +5 -0
  33. esphome/components/api/api_pb2.h +703 -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 -5
  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/gpio.cpp +10 -1
  191. esphome/components/esp8266/preferences.cpp +6 -6
  192. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  193. esphome/components/esp_ldo/__init__.py +91 -0
  194. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  195. esphome/components/esp_ldo/esp_ldo.h +43 -0
  196. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  197. esphome/components/ethernet/ethernet_component.cpp +38 -26
  198. esphome/components/ethernet/ethernet_component.h +1 -1
  199. esphome/components/event/__init__.py +1 -0
  200. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  201. esphome/components/ezo/ezo.cpp +1 -1
  202. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  203. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  204. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  205. esphome/components/fan/__init__.py +1 -0
  206. esphome/components/fan/fan.cpp +30 -19
  207. esphome/components/fastled_base/fastled_light.cpp +7 -5
  208. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  209. esphome/components/fs3000/fs3000.cpp +1 -1
  210. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  211. esphome/components/ft63x6/ft63x6.cpp +5 -3
  212. esphome/components/gcja5/gcja5.cpp +0 -12
  213. esphome/components/gcja5/gcja5.h +8 -3
  214. esphome/components/gdk101/gdk101.cpp +2 -2
  215. esphome/components/globals/globals_component.h +13 -10
  216. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  217. esphome/components/gp8403/gp8403.cpp +4 -2
  218. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  219. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  220. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  221. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  222. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  223. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  224. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  225. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  226. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  227. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  228. esphome/components/haier/haier_base.cpp +2 -2
  229. esphome/components/haier/hon_climate.cpp +13 -6
  230. esphome/components/havells_solar/havells_solar.cpp +5 -2
  231. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  232. esphome/components/hdc1080/hdc1080.cpp +2 -2
  233. esphome/components/he60r/he60r.cpp +4 -2
  234. esphome/components/hlw8012/hlw8012.cpp +6 -4
  235. esphome/components/hm3301/hm3301.cpp +2 -2
  236. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  237. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  238. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  239. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  240. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  241. esphome/components/hte501/hte501.cpp +3 -2
  242. esphome/components/http_request/__init__.py +2 -2
  243. esphome/components/http_request/http_request.cpp +7 -5
  244. esphome/components/http_request/http_request_idf.cpp +4 -2
  245. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  246. esphome/components/htu21d/htu21d.cpp +2 -2
  247. esphome/components/htu31d/htu31d.cpp +2 -2
  248. esphome/components/hx711/hx711.cpp +2 -2
  249. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  250. esphome/components/hyt271/hyt271.cpp +2 -2
  251. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  252. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  253. esphome/components/i2s_audio/__init__.py +2 -0
  254. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  255. esphome/components/i2s_audio/i2s_audio.h +1 -1
  256. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  257. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  258. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +85 -77
  259. esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +6 -0
  260. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +29 -11
  261. esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +1 -0
  262. esphome/components/iaqcore/iaqcore.cpp +3 -3
  263. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  264. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  265. esphome/components/image/image.cpp +1 -0
  266. esphome/components/ina219/ina219.cpp +2 -2
  267. esphome/components/ina226/ina226.cpp +8 -5
  268. esphome/components/ina260/ina260.cpp +1 -1
  269. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  270. esphome/components/ina3221/ina3221.cpp +2 -2
  271. esphome/components/inkplate6/display.py +12 -2
  272. esphome/components/inkplate6/inkplate.cpp +13 -9
  273. esphome/components/inkplate6/inkplate.h +7 -6
  274. esphome/components/integration/integration_sensor.cpp +1 -1
  275. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  276. esphome/components/json/json_util.cpp +4 -5
  277. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  278. esphome/components/key_collector/key_collector.cpp +4 -2
  279. esphome/components/kmeteriso/kmeteriso.cpp +4 -4
  280. esphome/components/kuntze/kuntze.cpp +4 -2
  281. esphome/components/lc709203f/__init__.py +1 -0
  282. esphome/components/lc709203f/lc709203f.cpp +299 -0
  283. esphome/components/lc709203f/lc709203f.h +55 -0
  284. esphome/components/lc709203f/sensor.py +93 -0
  285. esphome/components/lcd_base/lcd_display.cpp +2 -2
  286. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  287. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  288. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  289. esphome/components/ld2410/ld2410.cpp +6 -7
  290. esphome/components/ld2420/ld2420.cpp +9 -7
  291. esphome/components/ld2450/ld2450.cpp +6 -4
  292. esphome/components/ld2450/sensor.py +2 -2
  293. esphome/components/ledc/ledc_output.cpp +32 -28
  294. esphome/components/libretiny/const.py +1 -1
  295. esphome/components/libretiny/preferences.cpp +6 -7
  296. esphome/components/light/__init__.py +2 -1
  297. esphome/components/light/esp_hsv_color.h +1 -1
  298. esphome/components/light/light_state.cpp +9 -5
  299. esphome/components/light/light_state.h +15 -15
  300. esphome/components/light/light_transformer.h +1 -1
  301. esphome/components/lightwaverf/LwTx.cpp +1 -1
  302. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  303. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  304. esphome/components/lock/__init__.py +1 -0
  305. esphome/components/lock/lock.h +1 -1
  306. esphome/components/logger/__init__.py +6 -0
  307. esphome/components/logger/logger.cpp +11 -20
  308. esphome/components/logger/logger.h +5 -6
  309. esphome/components/logger/logger_esp32.cpp +5 -5
  310. esphome/components/ltr390/ltr390.cpp +8 -5
  311. esphome/components/ltr501/ltr501.cpp +19 -14
  312. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  313. esphome/components/lvgl/__init__.py +2 -2
  314. esphome/components/lvgl/automation.py +5 -4
  315. esphome/components/lvgl/defines.py +0 -2
  316. esphome/components/lvgl/lv_validation.py +1 -3
  317. esphome/components/lvgl/lvcode.py +7 -8
  318. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  319. esphome/components/lvgl/schemas.py +22 -23
  320. esphome/components/lvgl/trigger.py +8 -3
  321. esphome/components/lvgl/widgets/__init__.py +2 -2
  322. esphome/components/lvgl/widgets/canvas.py +9 -3
  323. esphome/components/lvgl/widgets/line.py +2 -1
  324. esphome/components/lvgl/widgets/tabview.py +7 -0
  325. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  326. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  327. esphome/components/max17043/max17043.cpp +2 -2
  328. esphome/components/max31855/max31855.cpp +2 -1
  329. esphome/components/max31856/max31856.cpp +9 -11
  330. esphome/components/max31865/max31865.cpp +6 -4
  331. esphome/components/max44009/max44009.cpp +2 -2
  332. esphome/components/max6675/max6675.cpp +1 -1
  333. esphome/components/max6956/max6956.cpp +5 -3
  334. esphome/components/max7219/max7219.cpp +8 -6
  335. esphome/components/max7219digit/automation.h +52 -0
  336. esphome/components/max7219digit/display.py +93 -1
  337. esphome/components/max7219digit/max7219digit.cpp +16 -13
  338. esphome/components/max9611/max9611.cpp +9 -6
  339. esphome/components/mcp23008/mcp23008.cpp +1 -1
  340. esphome/components/mcp23016/mcp23016.cpp +1 -1
  341. esphome/components/mcp23017/mcp23017.cpp +1 -1
  342. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  343. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  344. esphome/components/mcp3008/mcp3008.cpp +1 -1
  345. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  346. esphome/components/mcp3204/mcp3204.cpp +1 -1
  347. esphome/components/mcp4461/mcp4461.cpp +2 -2
  348. esphome/components/mcp4725/mcp4725.cpp +2 -2
  349. esphome/components/mcp4728/mcp4728.cpp +2 -2
  350. esphome/components/mcp9600/mcp9600.cpp +1 -1
  351. esphome/components/mcp9808/mcp9808.cpp +4 -4
  352. esphome/components/mdns/mdns_component.cpp +8 -2
  353. esphome/components/mdns/mdns_component.h +3 -1
  354. esphome/components/mdns/mdns_esp32.cpp +2 -2
  355. esphome/components/media_player/__init__.py +1 -0
  356. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  357. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  358. esphome/components/micronova/micronova.h +2 -2
  359. esphome/components/mics_4514/mics_4514.cpp +2 -2
  360. esphome/components/midea/air_conditioner.cpp +7 -5
  361. esphome/components/midea_ir/midea_ir.cpp +1 -1
  362. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  363. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  364. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  365. esphome/components/mlx90614/mlx90614.cpp +4 -3
  366. esphome/components/mmc5603/mmc5603.cpp +2 -2
  367. esphome/components/mmc5983/mmc5983.cpp +1 -1
  368. esphome/components/modbus/modbus.cpp +7 -5
  369. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  370. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  371. esphome/components/modbus_controller/switch/__init__.py +6 -2
  372. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  373. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  374. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  375. esphome/components/mpr121/mpr121.cpp +2 -2
  376. esphome/components/mpu6050/mpu6050.cpp +6 -6
  377. esphome/components/mpu6886/mpu6886.cpp +6 -6
  378. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  379. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  380. esphome/components/mqtt/mqtt_client.cpp +31 -24
  381. esphome/components/mqtt/mqtt_component.cpp +3 -3
  382. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  383. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  384. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  385. esphome/components/ms5611/ms5611.cpp +2 -2
  386. esphome/components/ms8607/ms8607.cpp +2 -2
  387. esphome/components/msa3xx/msa3xx.cpp +16 -12
  388. esphome/components/my9231/my9231.cpp +7 -5
  389. esphome/components/nau7802/nau7802.cpp +6 -4
  390. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  391. esphome/components/network/ip_address.h +1 -1
  392. esphome/components/network/util.cpp +13 -0
  393. esphome/components/nextion/base_component.py +2 -0
  394. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +3 -4
  395. esphome/components/nextion/display.py +34 -22
  396. esphome/components/nextion/nextion.cpp +182 -143
  397. esphome/components/nextion/nextion.h +36 -0
  398. esphome/components/nextion/nextion_commands.cpp +3 -3
  399. esphome/components/nextion/nextion_upload_arduino.cpp +69 -69
  400. esphome/components/nextion/nextion_upload_idf.cpp +79 -80
  401. esphome/components/nextion/sensor/nextion_sensor.cpp +5 -5
  402. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  403. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +3 -3
  404. esphome/components/nfc/nci_message.h +1 -1
  405. esphome/components/nfc/ndef_record.h +1 -1
  406. esphome/components/nfc/ndef_record_text.h +1 -1
  407. esphome/components/nfc/ndef_record_uri.h +1 -1
  408. esphome/components/nfc/nfc.h +1 -1
  409. esphome/components/nfc/nfc_tag.h +1 -1
  410. esphome/components/noblex/noblex.cpp +1 -1
  411. esphome/components/npi19/npi19.cpp +5 -7
  412. esphome/components/number/__init__.py +11 -0
  413. esphome/components/number/number.cpp +1 -1
  414. esphome/components/number/number.h +0 -4
  415. esphome/components/online_image/__init__.py +13 -1
  416. esphome/components/online_image/online_image.cpp +26 -4
  417. esphome/components/online_image/online_image.h +21 -4
  418. esphome/components/opentherm/generate.py +3 -3
  419. esphome/components/opentherm/hub.cpp +11 -7
  420. esphome/components/opentherm/number/number.cpp +5 -3
  421. esphome/components/opentherm/opentherm.h +1 -1
  422. esphome/components/opentherm/schema.py +13 -13
  423. esphome/components/opentherm/validate.py +1 -1
  424. esphome/components/openthread/__init__.py +146 -0
  425. esphome/components/openthread/const.py +10 -0
  426. esphome/components/openthread/openthread.cpp +206 -0
  427. esphome/components/openthread/openthread.h +68 -0
  428. esphome/components/openthread/openthread_esp.cpp +164 -0
  429. esphome/components/openthread/tlv.py +58 -0
  430. esphome/components/openthread_info/__init__.py +0 -0
  431. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  432. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  433. esphome/components/openthread_info/text_sensor.py +105 -0
  434. esphome/components/output/float_output.cpp +1 -1
  435. esphome/components/output/switch/output_switch.cpp +1 -1
  436. esphome/components/packet_transport/packet_transport.cpp +6 -4
  437. esphome/components/pca6416a/pca6416a.cpp +2 -2
  438. esphome/components/pca9554/pca9554.cpp +6 -4
  439. esphome/components/pca9685/pca9685_output.cpp +12 -8
  440. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  441. esphome/components/pcf85063/pcf85063.cpp +2 -2
  442. esphome/components/pcf8563/pcf8563.cpp +2 -2
  443. esphome/components/pcf8574/pcf8574.cpp +2 -2
  444. esphome/components/pid/pid_climate.cpp +8 -5
  445. esphome/components/pid/pid_climate.h +1 -1
  446. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  447. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  448. esphome/components/pipsolar/pipsolar.cpp +3 -3
  449. esphome/components/pm1006/pm1006.cpp +3 -7
  450. esphome/components/pm1006/pm1006.h +4 -1
  451. esphome/components/pm2005/pm2005.cpp +12 -13
  452. esphome/components/pm2005/sensor.py +1 -1
  453. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  454. esphome/components/pmsx003/pmsx003.cpp +0 -4
  455. esphome/components/pmsx003/pmsx003.h +5 -2
  456. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  457. esphome/components/pmwcs3/pmwcs3.h +0 -1
  458. esphome/components/pn532/pn532.cpp +7 -7
  459. esphome/components/pn532/pn532.h +1 -1
  460. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  461. esphome/components/pn7150/pn7150.cpp +4 -4
  462. esphome/components/pn7160/pn7160.cpp +4 -4
  463. esphome/components/power_supply/power_supply.cpp +6 -4
  464. esphome/components/power_supply/power_supply.h +1 -1
  465. esphome/components/prometheus/__init__.py +0 -1
  466. esphome/components/psram/__init__.py +59 -35
  467. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  468. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  469. esphome/components/pylontech/pylontech.cpp +2 -2
  470. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  471. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  472. esphome/components/pzemac/pzemac.cpp +4 -2
  473. esphome/components/pzemdc/pzemdc.cpp +4 -2
  474. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  475. esphome/components/qmp6988/qmp6988.cpp +2 -2
  476. esphome/components/qmp6988/qmp6988.h +1 -1
  477. esphome/components/qr_code/qr_code.cpp +5 -3
  478. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  479. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  480. esphome/components/rc522/rc522.cpp +5 -5
  481. esphome/components/rdm6300/rdm6300.cpp +1 -0
  482. esphome/components/remote_receiver/__init__.py +10 -2
  483. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  484. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  485. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  486. esphome/components/remote_transmitter/__init__.py +10 -2
  487. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  488. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  489. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  490. esphome/components/resistance/resistance_sensor.cpp +6 -3
  491. esphome/components/restart/button/restart_button.cpp +1 -1
  492. esphome/components/restart/switch/restart_switch.cpp +1 -1
  493. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  494. esphome/components/rp2040/__init__.py +7 -0
  495. esphome/components/rp2040/core.cpp +8 -1
  496. esphome/components/rp2040/gpio.cpp +26 -9
  497. esphome/components/rp2040/preferences.cpp +3 -3
  498. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  499. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  500. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  501. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  502. esphome/components/rtttl/rtttl.cpp +11 -9
  503. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  504. esphome/components/safe_mode/safe_mode.cpp +9 -8
  505. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  506. esphome/components/scd30/scd30.cpp +11 -8
  507. esphome/components/scd4x/scd4x.cpp +12 -8
  508. esphome/components/sdl/display.py +40 -0
  509. esphome/components/sdl/sdl_esphome.cpp +2 -2
  510. esphome/components/sdl/sdl_esphome.h +8 -0
  511. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  512. esphome/components/sdp3x/sdp3x.cpp +11 -11
  513. esphome/components/sds011/sds011.cpp +5 -6
  514. esphome/components/sds011/sds011.h +4 -1
  515. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  516. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  517. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  518. esphome/components/selec_meter/selec_meter.cpp +5 -2
  519. esphome/components/select/__init__.py +1 -0
  520. esphome/components/select/select.cpp +1 -1
  521. esphome/components/select/select.h +0 -4
  522. esphome/components/sen0321/sen0321.cpp +2 -2
  523. esphome/components/sen21231/sen21231.cpp +1 -1
  524. esphome/components/sen5x/sen5x.cpp +10 -7
  525. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  526. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  527. esphome/components/sensor/__init__.py +11 -1
  528. esphome/components/sensor/filter.h +1 -1
  529. esphome/components/sensor/sensor.cpp +8 -4
  530. esphome/components/sensor/sensor.h +12 -11
  531. esphome/components/servo/servo.cpp +12 -9
  532. esphome/components/servo/servo.h +1 -1
  533. esphome/components/sfa30/sfa30.cpp +1 -1
  534. esphome/components/sgp30/sgp30.cpp +10 -8
  535. esphome/components/sgp4x/sgp4x.cpp +49 -61
  536. esphome/components/sgp4x/sgp4x.h +0 -1
  537. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  538. esphome/components/sht3xd/sht3xd.cpp +1 -1
  539. esphome/components/sht4x/sht4x.cpp +2 -2
  540. esphome/components/shtcx/shtcx.cpp +13 -16
  541. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  542. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  543. esphome/components/sim800l/sim800l.cpp +2 -2
  544. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  545. esphome/components/sm16716/sm16716.cpp +1 -1
  546. esphome/components/sm2135/sm2135.cpp +1 -1
  547. esphome/components/sm2235/sm2235.cpp +5 -3
  548. esphome/components/sm2335/sm2335.cpp +5 -3
  549. esphome/components/sml/sml.cpp +1 -1
  550. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  551. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  552. esphome/components/sntp/sntp_component.cpp +1 -1
  553. esphome/components/socket/__init__.py +2 -0
  554. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  555. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  556. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  557. esphome/components/socket/socket.cpp +31 -0
  558. esphome/components/socket/socket.h +27 -1
  559. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  560. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  561. esphome/components/sound_level/sound_level.cpp +4 -2
  562. esphome/components/speaker/media_player/__init__.py +3 -0
  563. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  564. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  565. esphome/components/spi/__init__.py +10 -2
  566. esphome/components/spi/spi.cpp +4 -4
  567. esphome/components/spi/spi_arduino.cpp +22 -9
  568. esphome/components/spi_device/spi_device.cpp +1 -2
  569. esphome/components/sprinkler/sprinkler.cpp +9 -6
  570. esphome/components/sps30/sps30.cpp +16 -15
  571. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  572. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  573. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  574. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  575. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  576. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  577. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  578. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  579. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  580. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  581. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  582. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  583. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  584. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  585. esphome/components/st7567_base/st7567_base.cpp +3 -3
  586. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  587. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  588. esphome/components/st7701s/st7701s.cpp +4 -2
  589. esphome/components/st7735/st7735.cpp +3 -3
  590. esphome/components/st7789v/st7789v.cpp +10 -7
  591. esphome/components/st7920/st7920.cpp +6 -4
  592. esphome/components/statsd/statsd.cpp +9 -5
  593. esphome/components/status_led/light/status_led_light.cpp +3 -3
  594. esphome/components/status_led/light/status_led_light.h +1 -1
  595. esphome/components/status_led/status_led.cpp +1 -1
  596. esphome/components/stepper/stepper.h +5 -3
  597. esphome/components/sts3x/sts3x.cpp +2 -2
  598. esphome/components/switch/__init__.py +1 -0
  599. esphome/components/switch/switch.cpp +18 -12
  600. esphome/components/switch/switch.h +14 -8
  601. esphome/components/sx1509/__init__.py +53 -20
  602. esphome/components/sx1509/sx1509.cpp +29 -5
  603. esphome/components/sx1509/sx1509.h +9 -1
  604. esphome/components/t6615/t6615.cpp +1 -0
  605. esphome/components/tc74/tc74.cpp +1 -1
  606. esphome/components/tca9548a/tca9548a.cpp +1 -1
  607. esphome/components/tca9555/tca9555.cpp +2 -2
  608. esphome/components/tcs34725/tcs34725.cpp +4 -4
  609. esphome/components/tee501/tee501.cpp +3 -2
  610. esphome/components/tem3200/tem3200.cpp +5 -6
  611. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  612. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +43 -12
  613. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +4 -1
  614. esphome/components/template/cover/template_cover.cpp +1 -1
  615. esphome/components/template/select/template_select.cpp +6 -4
  616. esphome/components/template/text/template_text.cpp +2 -3
  617. esphome/components/template/valve/template_valve.cpp +5 -3
  618. esphome/components/text/__init__.py +10 -11
  619. esphome/components/text/text.cpp +1 -1
  620. esphome/components/text/text.h +0 -4
  621. esphome/components/text_sensor/__init__.py +1 -0
  622. esphome/components/text_sensor/text_sensor.cpp +8 -4
  623. esphome/components/text_sensor/text_sensor.h +6 -6
  624. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  625. esphome/components/time/__init__.py +1 -2
  626. esphome/components/time_based/time_based_cover.cpp +4 -2
  627. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  628. esphome/components/tm1621/tm1621.cpp +3 -3
  629. esphome/components/tm1637/tm1637.cpp +9 -7
  630. esphome/components/tm1638/tm1638.cpp +7 -5
  631. esphome/components/tm1651/tm1651.cpp +2 -2
  632. esphome/components/tmp102/tmp102.cpp +1 -3
  633. esphome/components/tmp102/tmp102.h +0 -3
  634. esphome/components/tmp1075/tmp1075.cpp +12 -9
  635. esphome/components/tmp117/tmp117.cpp +2 -2
  636. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  637. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  638. esphome/components/tsl2561/tsl2561.cpp +7 -5
  639. esphome/components/tsl2591/tsl2591.cpp +25 -27
  640. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  641. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  642. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  643. esphome/components/tuya/select/tuya_select.cpp +5 -3
  644. esphome/components/tx20/tx20.cpp +3 -3
  645. esphome/components/uart/__init__.py +4 -5
  646. esphome/components/uart/button/uart_button.cpp +1 -1
  647. esphome/components/uart/switch/uart_switch.cpp +2 -2
  648. esphome/components/uart/uart.cpp +2 -2
  649. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  650. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  651. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  652. esphome/components/uart/uart_component_host.cpp +11 -8
  653. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  654. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  655. esphome/components/udp/udp_component.cpp +9 -5
  656. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  657. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  658. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  659. esphome/components/update/__init__.py +1 -0
  660. esphome/components/update/update_entity.cpp +1 -1
  661. esphome/components/update/update_entity.h +0 -3
  662. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  663. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  664. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  665. esphome/components/uptime/sensor/uptime_timestamp_sensor.cpp +1 -1
  666. esphome/components/usb_host/__init__.py +64 -0
  667. esphome/components/usb_host/usb_host.h +116 -0
  668. esphome/components/usb_host/usb_host_client.cpp +394 -0
  669. esphome/components/usb_host/usb_host_component.cpp +35 -0
  670. esphome/components/usb_uart/__init__.py +134 -0
  671. esphome/components/usb_uart/ch34x.cpp +80 -0
  672. esphome/components/usb_uart/cp210x.cpp +126 -0
  673. esphome/components/usb_uart/usb_uart.cpp +328 -0
  674. esphome/components/usb_uart/usb_uart.h +151 -0
  675. esphome/components/valve/__init__.py +1 -0
  676. esphome/components/veml3235/veml3235.cpp +13 -9
  677. esphome/components/veml7700/veml7700.cpp +10 -6
  678. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  679. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  680. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  681. esphome/components/web_server/server_index_v2.h +632 -630
  682. esphome/components/web_server/server_index_v3.h +411 -409
  683. esphome/components/web_server/web_server.cpp +5 -3
  684. esphome/components/web_server_base/web_server_base.cpp +1 -1
  685. esphome/components/web_server_idf/__init__.py +0 -2
  686. esphome/components/web_server_idf/utils.cpp +1 -1
  687. esphome/components/web_server_idf/web_server_idf.cpp +7 -3
  688. esphome/components/web_server_idf/web_server_idf.h +7 -0
  689. esphome/components/weikai/__init__.py +2 -0
  690. esphome/components/weikai/weikai.cpp +24 -22
  691. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  692. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  693. esphome/components/wiegand/wiegand.cpp +1 -1
  694. esphome/components/wifi/wifi_component.cpp +50 -37
  695. esphome/components/wifi/wifi_component.h +7 -4
  696. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  697. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  698. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  699. esphome/components/wireguard/wireguard.cpp +21 -21
  700. esphome/components/wl_134/text_sensor.py +1 -2
  701. esphome/components/wled/wled_light_effect.cpp +1 -1
  702. esphome/components/x9c/x9c.cpp +5 -3
  703. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  704. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  705. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  706. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  707. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  708. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  709. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  710. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  711. esphome/components/xl9535/xl9535.cpp +2 -2
  712. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  713. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  714. esphome/config.py +3 -2
  715. esphome/config_validation.py +46 -17
  716. esphome/const.py +10 -1
  717. esphome/core/__init__.py +37 -18
  718. esphome/core/application.cpp +197 -8
  719. esphome/core/application.h +116 -6
  720. esphome/core/component.cpp +36 -15
  721. esphome/core/component.h +43 -13
  722. esphome/core/config.py +12 -0
  723. esphome/core/defines.h +10 -2
  724. esphome/core/entity_base.cpp +4 -16
  725. esphome/core/entity_base.h +27 -13
  726. esphome/core/hal.h +5 -0
  727. esphome/core/helpers.cpp +1 -1
  728. esphome/core/helpers.h +5 -5
  729. esphome/core/log.h +2 -0
  730. esphome/core/log_const_en.h +4 -0
  731. esphome/core/scheduler.cpp +2 -2
  732. esphome/coroutine.py +3 -4
  733. esphome/cpp_generator.py +32 -32
  734. esphome/dashboard/core.py +2 -2
  735. esphome/dashboard/web_server.py +2 -2
  736. esphome/git.py +4 -4
  737. esphome/helpers.py +5 -6
  738. esphome/loader.py +8 -7
  739. esphome/log.py +7 -1
  740. esphome/platformio_api.py +2 -3
  741. esphome/storage_json.py +13 -5
  742. esphome/types.py +12 -13
  743. esphome/util.py +1 -2
  744. esphome/wizard.py +0 -16
  745. esphome/writer.py +5 -3
  746. esphome/yaml_util.py +6 -1
  747. esphome/zeroconf.py +1 -1
  748. {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/METADATA +12 -11
  749. {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/RECORD +753 -699
  750. {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/WHEEL +1 -1
  751. {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/entry_points.txt +0 -0
  752. {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/licenses/LICENSE +0 -0
  753. {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,3 @@
1
- from typing import Optional
2
-
3
1
  from esphome import automation
4
2
  import esphome.codegen as cg
5
3
  from esphome.components import mqtt, web_server
@@ -92,9 +90,9 @@ async def setup_text_core_(
92
90
  var,
93
91
  config,
94
92
  *,
95
- min_length: Optional[int],
96
- max_length: Optional[int],
97
- pattern: Optional[str],
93
+ min_length: int | None,
94
+ max_length: int | None,
95
+ pattern: str | None,
98
96
  ):
99
97
  await setup_entity(var, config)
100
98
 
@@ -121,13 +119,14 @@ async def register_text(
121
119
  var,
122
120
  config,
123
121
  *,
124
- min_length: Optional[int] = 0,
125
- max_length: Optional[int] = 255,
126
- pattern: Optional[str] = None,
122
+ min_length: int | None = 0,
123
+ max_length: int | None = 255,
124
+ pattern: str | None = None,
127
125
  ):
128
126
  if not CORE.has_id(config[CONF_ID]):
129
127
  var = cg.Pvariable(config[CONF_ID], var)
130
128
  cg.add(cg.App.register_text(var))
129
+ CORE.register_platform_component("text", var)
131
130
  await setup_text_core_(
132
131
  var, config, min_length=min_length, max_length=max_length, pattern=pattern
133
132
  )
@@ -136,9 +135,9 @@ async def register_text(
136
135
  async def new_text(
137
136
  config,
138
137
  *,
139
- min_length: Optional[int] = 0,
140
- max_length: Optional[int] = 255,
141
- pattern: Optional[str] = None,
138
+ min_length: int | None = 0,
139
+ max_length: int | None = 255,
140
+ pattern: str | None = None,
142
141
  ):
143
142
  var = cg.new_Pvariable(config[CONF_ID])
144
143
  await register_text(
@@ -7,7 +7,7 @@ namespace text {
7
7
  static const char *const TAG = "text";
8
8
 
9
9
  void Text::publish_state(const std::string &state) {
10
- this->has_state_ = true;
10
+ this->set_has_state(true);
11
11
  this->state = state;
12
12
  if (this->traits.get_mode() == TEXT_MODE_PASSWORD) {
13
13
  ESP_LOGD(TAG, "'%s': Sending state " LOG_SECRET("'%s'"), this->get_name().c_str(), state.c_str());
@@ -28,9 +28,6 @@ class Text : public EntityBase {
28
28
 
29
29
  void publish_state(const std::string &state);
30
30
 
31
- /// Return whether this text input has gotten a full state yet.
32
- bool has_state() const { return has_state_; }
33
-
34
31
  /// Instantiate a TextCall object to modify this text component's state.
35
32
  TextCall make_call() { return TextCall(this); }
36
33
 
@@ -48,7 +45,6 @@ class Text : public EntityBase {
48
45
  virtual void control(const std::string &value) = 0;
49
46
 
50
47
  CallbackManager<void(std::string)> state_callback_;
51
- bool has_state_{false};
52
48
  };
53
49
 
54
50
  } // namespace text
@@ -215,6 +215,7 @@ async def register_text_sensor(var, config):
215
215
  if not CORE.has_id(config[CONF_ID]):
216
216
  var = cg.Pvariable(config[CONF_ID], var)
217
217
  cg.add(cg.App.register_text_sensor(var))
218
+ CORE.register_platform_component("text_sensor", var)
218
219
  await setup_text_sensor_core_(var, config)
219
220
 
220
221
 
@@ -8,7 +8,9 @@ static const char *const TAG = "text_sensor";
8
8
 
9
9
  void TextSensor::publish_state(const std::string &state) {
10
10
  this->raw_state = state;
11
- this->raw_callback_.call(state);
11
+ if (this->raw_callback_) {
12
+ this->raw_callback_->call(state);
13
+ }
12
14
 
13
15
  ESP_LOGV(TAG, "'%s': Received new state %s", this->name_.c_str(), state.c_str());
14
16
 
@@ -53,20 +55,22 @@ void TextSensor::add_on_state_callback(std::function<void(std::string)> callback
53
55
  this->callback_.add(std::move(callback));
54
56
  }
55
57
  void TextSensor::add_on_raw_state_callback(std::function<void(std::string)> callback) {
56
- this->raw_callback_.add(std::move(callback));
58
+ if (!this->raw_callback_) {
59
+ this->raw_callback_ = make_unique<CallbackManager<void(std::string)>>();
60
+ }
61
+ this->raw_callback_->add(std::move(callback));
57
62
  }
58
63
 
59
64
  std::string TextSensor::get_state() const { return this->state; }
60
65
  std::string TextSensor::get_raw_state() const { return this->raw_state; }
61
66
  void TextSensor::internal_send_state_to_frontend(const std::string &state) {
62
67
  this->state = state;
63
- this->has_state_ = true;
68
+ this->set_has_state(true);
64
69
  ESP_LOGD(TAG, "'%s': Sending state '%s'", this->name_.c_str(), state.c_str());
65
70
  this->callback_.call(state);
66
71
  }
67
72
 
68
73
  std::string TextSensor::unique_id() { return ""; }
69
- bool TextSensor::has_state() { return this->has_state_; }
70
74
 
71
75
  } // namespace text_sensor
72
76
  } // namespace esphome
@@ -6,6 +6,7 @@
6
6
  #include "esphome/components/text_sensor/filter.h"
7
7
 
8
8
  #include <vector>
9
+ #include <memory>
9
10
 
10
11
  namespace esphome {
11
12
  namespace text_sensor {
@@ -33,6 +34,8 @@ namespace text_sensor {
33
34
 
34
35
  class TextSensor : public EntityBase, public EntityBase_DeviceClass {
35
36
  public:
37
+ TextSensor() = default;
38
+
36
39
  /// Getter-syntax for .state.
37
40
  std::string get_state() const;
38
41
  /// Getter-syntax for .raw_state
@@ -67,17 +70,14 @@ class TextSensor : public EntityBase, public EntityBase_DeviceClass {
67
70
  */
68
71
  virtual std::string unique_id();
69
72
 
70
- bool has_state();
71
-
72
73
  void internal_send_state_to_frontend(const std::string &state);
73
74
 
74
75
  protected:
75
- CallbackManager<void(std::string)> raw_callback_; ///< Storage for raw state callbacks.
76
- CallbackManager<void(std::string)> callback_; ///< Storage for filtered state callbacks.
76
+ std::unique_ptr<CallbackManager<void(std::string)>>
77
+ raw_callback_; ///< Storage for raw state callbacks (lazy allocated).
78
+ CallbackManager<void(std::string)> callback_; ///< Storage for filtered state callbacks.
77
79
 
78
80
  Filter *filter_list_{nullptr}; ///< Store all active filters.
79
-
80
- bool has_state_{false};
81
81
  };
82
82
 
83
83
  } // namespace text_sensor
@@ -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