esphome 2025.5.1__py3-none-any.whl → 2025.6.0b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (720) hide show
  1. esphome/__main__.py +20 -14
  2. esphome/components/a4988/a4988.cpp +1 -1
  3. esphome/components/absolute_humidity/absolute_humidity.cpp +6 -4
  4. esphome/components/ac_dimmer/ac_dimmer.cpp +4 -2
  5. esphome/components/adc/adc_sensor_esp32.cpp +5 -3
  6. esphome/components/adc/adc_sensor_esp8266.cpp +5 -3
  7. esphome/components/adc/adc_sensor_libretiny.cpp +5 -3
  8. esphome/components/adc/adc_sensor_rp2040.cpp +5 -3
  9. esphome/components/adc128s102/adc128s102.cpp +1 -1
  10. esphome/components/ade7880/ade7880.cpp +28 -17
  11. esphome/components/ade7953_base/ade7953_base.cpp +12 -9
  12. esphome/components/ade7953_i2c/ade7953_i2c.cpp +1 -1
  13. esphome/components/ade7953_spi/ade7953_spi.cpp +1 -1
  14. esphome/components/ads1115/ads1115.cpp +3 -5
  15. esphome/components/ads1118/ads1118.cpp +2 -1
  16. esphome/components/ags10/ags10.cpp +3 -2
  17. esphome/components/aht10/aht10.cpp +27 -29
  18. esphome/components/aic3204/aic3204.cpp +2 -2
  19. esphome/components/alarm_control_panel/__init__.py +1 -0
  20. esphome/components/am2315c/am2315c.cpp +2 -2
  21. esphome/components/am2320/am2320.cpp +2 -2
  22. esphome/components/am43/am43_base.h +1 -1
  23. esphome/components/am43/cover/am43_cover.cpp +4 -2
  24. esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +4 -2
  25. esphome/components/apds9306/apds9306.cpp +8 -5
  26. esphome/components/apds9960/apds9960.cpp +2 -2
  27. esphome/components/api/__init__.py +5 -0
  28. esphome/components/api/api_connection.cpp +712 -358
  29. esphome/components/api/api_connection.h +343 -284
  30. esphome/components/api/api_frame_helper.cpp +349 -344
  31. esphome/components/api/api_frame_helper.h +121 -94
  32. esphome/components/api/api_pb2.cpp +2 -0
  33. esphome/components/api/api_pb2.h +637 -1
  34. esphome/components/api/api_pb2_service.cpp +12 -688
  35. esphome/components/api/api_pb2_service.h +53 -207
  36. esphome/components/api/api_server.cpp +71 -29
  37. esphome/components/api/api_server.h +9 -0
  38. esphome/components/api/client.py +5 -2
  39. esphome/components/api/homeassistant_service.h +1 -1
  40. esphome/components/api/list_entities.cpp +1 -1
  41. esphome/components/api/proto.cpp +1 -0
  42. esphome/components/api/proto.h +4 -3
  43. esphome/components/api/subscribe_state.cpp +8 -16
  44. esphome/components/as3935/as3935.cpp +3 -3
  45. esphome/components/as5600/as5600.cpp +9 -7
  46. esphome/components/as7341/as7341.cpp +7 -5
  47. esphome/components/at581x/at581x.cpp +13 -10
  48. esphome/components/atm90e26/atm90e26.cpp +2 -2
  49. esphome/components/atm90e32/atm90e32.cpp +3 -3
  50. esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +5 -3
  51. esphome/components/bang_bang/bang_bang_climate.cpp +8 -5
  52. esphome/components/bedjet/bedjet_hub.cpp +6 -4
  53. esphome/components/beken_spi_led_strip/led_strip.cpp +11 -7
  54. esphome/components/bh1750/bh1750.cpp +2 -2
  55. esphome/components/binary_sensor/__init__.py +1 -0
  56. esphome/components/binary_sensor/automation.cpp +1 -2
  57. esphome/components/bl0906/bl0906.cpp +1 -1
  58. esphome/components/bl0942/bl0942.cpp +11 -8
  59. esphome/components/bl0942/sensor.py +1 -1
  60. esphome/components/ble_client/__init__.py +5 -1
  61. esphome/components/ble_client/output/ble_binary_output.cpp +6 -3
  62. esphome/components/ble_client/sensor/ble_sensor.cpp +9 -6
  63. esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +8 -5
  64. esphome/components/bluetooth_proxy/__init__.py +5 -1
  65. esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -5
  66. esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +16 -14
  67. esphome/components/bme280_base/bme280_base.cpp +3 -3
  68. esphome/components/bme680/bme680.cpp +3 -3
  69. esphome/components/bme680/sensor.py +2 -2
  70. esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
  71. esphome/components/bme680_bsec/sensor.py +7 -3
  72. esphome/components/bme68x_bsec2/__init__.py +6 -5
  73. esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
  74. esphome/components/bme68x_bsec2/sensor.py +4 -4
  75. esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
  76. esphome/components/bmi160/bmi160.cpp +11 -11
  77. esphome/components/bmp085/bmp085.cpp +2 -2
  78. esphome/components/bmp280_base/bmp280_base.cpp +3 -3
  79. esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
  80. esphome/components/bmp581/bmp581.cpp +33 -27
  81. esphome/components/bp1658cj/bp1658cj.cpp +5 -3
  82. esphome/components/bp5758d/bp5758d.cpp +1 -1
  83. esphome/components/button/__init__.py +1 -0
  84. esphome/components/canbus/canbus.cpp +1 -1
  85. esphome/components/cap1188/cap1188.cpp +6 -4
  86. esphome/components/captive_portal/captive_portal.cpp +1 -1
  87. esphome/components/ccs811/ccs811.cpp +3 -2
  88. esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
  89. esphome/components/ch422g/ch422g.cpp +2 -2
  90. esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
  91. esphome/components/climate/__init__.py +1 -0
  92. esphome/components/climate/climate.cpp +12 -7
  93. esphome/components/climate/climate.h +1 -1
  94. esphome/components/climate_ir/climate_ir.cpp +7 -4
  95. esphome/components/cm1106/__init__.py +1 -0
  96. esphome/components/cm1106/cm1106.cpp +112 -0
  97. esphome/components/cm1106/cm1106.h +40 -0
  98. esphome/components/cm1106/sensor.py +72 -0
  99. esphome/components/const/__init__.py +1 -0
  100. esphome/components/cover/__init__.py +1 -0
  101. esphome/components/cs5460a/cs5460a.cpp +16 -11
  102. esphome/components/cse7761/cse7761.cpp +2 -2
  103. esphome/components/cse7766/cse7766.cpp +0 -5
  104. esphome/components/cse7766/cse7766.h +5 -1
  105. esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
  106. esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
  107. esphome/components/current_based/current_based_cover.cpp +4 -2
  108. esphome/components/dac7678/dac7678_output.cpp +4 -4
  109. esphome/components/dallas_temp/dallas_temp.cpp +2 -3
  110. esphome/components/daly_bms/daly_bms.cpp +2 -1
  111. esphome/components/dashboard_import/__init__.py +1 -2
  112. esphome/components/datetime/__init__.py +3 -1
  113. esphome/components/debug/debug_component.cpp +1 -5
  114. esphome/components/debug/debug_component.h +1 -1
  115. esphome/components/debug/debug_esp32.cpp +4 -2
  116. esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
  117. esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
  118. esphome/components/demo/__init__.py +206 -0
  119. esphome/components/demo/demo_alarm_control_panel.h +65 -0
  120. esphome/components/demo/demo_button.h +15 -0
  121. esphome/components/demo/demo_date.h +34 -0
  122. esphome/components/demo/demo_datetime.h +40 -0
  123. esphome/components/demo/demo_lock.h +17 -0
  124. esphome/components/demo/demo_select.h +15 -0
  125. esphome/components/demo/demo_text.h +18 -0
  126. esphome/components/demo/demo_time.h +34 -0
  127. esphome/components/demo/demo_valve.h +54 -0
  128. esphome/components/dfrobot_sen0395/commands.cpp +3 -3
  129. esphome/components/dht/dht.cpp +29 -50
  130. esphome/components/dht12/dht12.cpp +2 -2
  131. esphome/components/display/display.h +5 -3
  132. esphome/components/dps310/dps310.cpp +7 -5
  133. esphome/components/ds1307/ds1307.cpp +2 -2
  134. esphome/components/dsmr/dsmr.cpp +5 -3
  135. esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
  136. esphome/components/duty_time/duty_time_sensor.cpp +5 -3
  137. esphome/components/ee895/ee895.cpp +3 -3
  138. esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
  139. esphome/components/emc2101/emc2101.cpp +11 -9
  140. esphome/components/ens160_base/ens160_base.cpp +2 -2
  141. esphome/components/ens210/ens210.cpp +2 -2
  142. esphome/components/es7210/es7210.cpp +6 -4
  143. esphome/components/es7243e/es7243e.cpp +1 -1
  144. esphome/components/es8156/es8156.cpp +1 -1
  145. esphome/components/es8311/es8311.cpp +8 -6
  146. esphome/components/es8388/__init__.py +0 -0
  147. esphome/components/es8388/audio_dac.py +26 -0
  148. esphome/components/es8388/es8388.cpp +289 -0
  149. esphome/components/es8388/es8388.h +81 -0
  150. esphome/components/es8388/es8388_const.h +83 -0
  151. esphome/components/es8388/select/__init__.py +47 -0
  152. esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
  153. esphome/components/es8388/select/adc_input_mic_select.h +15 -0
  154. esphome/components/es8388/select/dac_output_select.cpp +12 -0
  155. esphome/components/es8388/select/dac_output_select.h +15 -0
  156. esphome/components/esp32/__init__.py +88 -20
  157. esphome/components/esp32/boards.py +208 -125
  158. esphome/components/esp32/const.py +6 -0
  159. esphome/components/esp32/gpio.py +14 -1
  160. esphome/components/esp32/gpio_esp32_c5.py +45 -0
  161. esphome/components/esp32/gpio_esp32_p4.py +43 -0
  162. esphome/components/esp32/preferences.cpp +7 -7
  163. esphome/components/esp32_ble/__init__.py +115 -0
  164. esphome/components/esp32_ble/ble.cpp +11 -9
  165. esphome/components/esp32_ble/ble_uuid.h +1 -1
  166. esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
  167. esphome/components/esp32_ble_server/__init__.py +4 -1
  168. esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
  169. esphome/components/esp32_ble_server/ble_server.h +0 -1
  170. esphome/components/esp32_ble_tracker/__init__.py +6 -2
  171. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +12 -9
  172. esphome/components/esp32_camera/esp32_camera.cpp +35 -27
  173. esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
  174. esphome/components/esp32_dac/esp32_dac.cpp +2 -2
  175. esphome/components/esp32_improv/__init__.py +5 -1
  176. esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
  177. esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
  178. esphome/components/esp32_rmt_led_strip/light.py +5 -1
  179. esphome/components/esp32_touch/esp32_touch.cpp +12 -8
  180. esphome/components/esp8266/gpio.cpp +10 -1
  181. esphome/components/esp8266/preferences.cpp +6 -6
  182. esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
  183. esphome/components/esp_ldo/__init__.py +91 -0
  184. esphome/components/esp_ldo/esp_ldo.cpp +43 -0
  185. esphome/components/esp_ldo/esp_ldo.h +43 -0
  186. esphome/components/esphome/ota/ota_esphome.cpp +15 -8
  187. esphome/components/ethernet/ethernet_component.cpp +38 -26
  188. esphome/components/ethernet/ethernet_component.h +1 -1
  189. esphome/components/event/__init__.py +1 -0
  190. esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
  191. esphome/components/ezo/ezo.cpp +1 -1
  192. esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
  193. esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
  194. esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
  195. esphome/components/fan/__init__.py +1 -0
  196. esphome/components/fan/fan.cpp +4 -2
  197. esphome/components/fastled_base/fastled_light.cpp +7 -5
  198. esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
  199. esphome/components/fs3000/fs3000.cpp +1 -1
  200. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
  201. esphome/components/ft63x6/ft63x6.cpp +5 -3
  202. esphome/components/gcja5/gcja5.cpp +0 -12
  203. esphome/components/gcja5/gcja5.h +8 -3
  204. esphome/components/gdk101/gdk101.cpp +2 -2
  205. esphome/components/globals/globals_component.h +13 -10
  206. esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
  207. esphome/components/gp8403/gp8403.cpp +4 -2
  208. esphome/components/gp8403/output/gp8403_output.cpp +4 -2
  209. esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
  210. esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
  211. esphome/components/gpio/switch/gpio_switch.cpp +1 -1
  212. esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
  213. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
  214. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
  215. esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
  216. esphome/components/growatt_solar/growatt_solar.cpp +6 -3
  217. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
  218. esphome/components/haier/haier_base.cpp +2 -2
  219. esphome/components/haier/hon_climate.cpp +13 -6
  220. esphome/components/havells_solar/havells_solar.cpp +5 -2
  221. esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
  222. esphome/components/hdc1080/hdc1080.cpp +2 -2
  223. esphome/components/he60r/he60r.cpp +4 -2
  224. esphome/components/hlw8012/hlw8012.cpp +6 -4
  225. esphome/components/hm3301/hm3301.cpp +2 -2
  226. esphome/components/hmc5883l/hmc5883l.cpp +2 -2
  227. esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
  228. esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
  229. esphome/components/honeywellabp/honeywellabp.cpp +4 -2
  230. esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
  231. esphome/components/hte501/hte501.cpp +3 -2
  232. esphome/components/http_request/__init__.py +2 -2
  233. esphome/components/http_request/http_request.cpp +7 -5
  234. esphome/components/http_request/http_request_idf.cpp +4 -2
  235. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  236. esphome/components/htu21d/htu21d.cpp +2 -2
  237. esphome/components/htu31d/htu31d.cpp +2 -2
  238. esphome/components/hx711/hx711.cpp +2 -2
  239. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
  240. esphome/components/hyt271/hyt271.cpp +2 -2
  241. esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
  242. esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
  243. esphome/components/i2s_audio/__init__.py +2 -0
  244. esphome/components/i2s_audio/i2s_audio.cpp +3 -4
  245. esphome/components/i2s_audio/i2s_audio.h +1 -1
  246. esphome/components/i2s_audio/media_player/__init__.py +1 -1
  247. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
  248. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +54 -64
  249. esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -0
  250. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
  251. esphome/components/iaqcore/iaqcore.cpp +3 -3
  252. esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
  253. esphome/components/ili9xxx/ili9xxx_display.h +1 -1
  254. esphome/components/image/image.cpp +1 -0
  255. esphome/components/ina219/ina219.cpp +2 -2
  256. esphome/components/ina226/ina226.cpp +8 -5
  257. esphome/components/ina260/ina260.cpp +1 -1
  258. esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
  259. esphome/components/ina3221/ina3221.cpp +2 -2
  260. esphome/components/inkplate6/display.py +12 -2
  261. esphome/components/inkplate6/inkplate.cpp +13 -9
  262. esphome/components/inkplate6/inkplate.h +7 -6
  263. esphome/components/integration/integration_sensor.cpp +1 -1
  264. esphome/components/internal_temperature/internal_temperature.cpp +4 -4
  265. esphome/components/json/json_util.cpp +4 -5
  266. esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
  267. esphome/components/key_collector/key_collector.cpp +4 -2
  268. esphome/components/kmeteriso/kmeteriso.cpp +2 -1
  269. esphome/components/kuntze/kuntze.cpp +4 -2
  270. esphome/components/lc709203f/__init__.py +1 -0
  271. esphome/components/lc709203f/lc709203f.cpp +299 -0
  272. esphome/components/lc709203f/lc709203f.h +55 -0
  273. esphome/components/lc709203f/sensor.py +93 -0
  274. esphome/components/lcd_base/lcd_display.cpp +2 -2
  275. esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
  276. esphome/components/lcd_menu/lcd_menu.cpp +6 -4
  277. esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
  278. esphome/components/ld2410/ld2410.cpp +6 -7
  279. esphome/components/ld2420/ld2420.cpp +9 -7
  280. esphome/components/ld2450/ld2450.cpp +6 -4
  281. esphome/components/ld2450/sensor.py +2 -2
  282. esphome/components/ledc/ledc_output.cpp +32 -28
  283. esphome/components/libretiny/const.py +1 -1
  284. esphome/components/libretiny/preferences.cpp +6 -7
  285. esphome/components/light/__init__.py +2 -1
  286. esphome/components/light/esp_hsv_color.h +1 -1
  287. esphome/components/light/light_state.cpp +9 -5
  288. esphome/components/light/light_transformer.h +1 -1
  289. esphome/components/lightwaverf/LwTx.cpp +1 -1
  290. esphome/components/lightwaverf/lightwaverf.cpp +1 -1
  291. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
  292. esphome/components/lock/__init__.py +1 -0
  293. esphome/components/lock/lock.h +1 -1
  294. esphome/components/logger/__init__.py +6 -0
  295. esphome/components/logger/logger.cpp +9 -5
  296. esphome/components/logger/logger.h +4 -4
  297. esphome/components/logger/logger_esp32.cpp +5 -5
  298. esphome/components/ltr390/ltr390.cpp +8 -5
  299. esphome/components/ltr501/ltr501.cpp +19 -14
  300. esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
  301. esphome/components/lvgl/__init__.py +2 -2
  302. esphome/components/lvgl/automation.py +5 -4
  303. esphome/components/lvgl/defines.py +0 -2
  304. esphome/components/lvgl/lv_validation.py +1 -3
  305. esphome/components/lvgl/lvcode.py +7 -8
  306. esphome/components/lvgl/lvgl_esphome.cpp +26 -10
  307. esphome/components/lvgl/schemas.py +22 -23
  308. esphome/components/lvgl/trigger.py +8 -3
  309. esphome/components/lvgl/widgets/__init__.py +2 -2
  310. esphome/components/lvgl/widgets/canvas.py +9 -3
  311. esphome/components/lvgl/widgets/line.py +2 -1
  312. esphome/components/lvgl/widgets/tabview.py +7 -0
  313. esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
  314. esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
  315. esphome/components/max17043/max17043.cpp +2 -2
  316. esphome/components/max31855/max31855.cpp +2 -1
  317. esphome/components/max31856/max31856.cpp +9 -11
  318. esphome/components/max31865/max31865.cpp +6 -4
  319. esphome/components/max44009/max44009.cpp +2 -2
  320. esphome/components/max6675/max6675.cpp +1 -1
  321. esphome/components/max6956/max6956.cpp +5 -3
  322. esphome/components/max7219/max7219.cpp +8 -6
  323. esphome/components/max7219digit/automation.h +52 -0
  324. esphome/components/max7219digit/display.py +93 -1
  325. esphome/components/max7219digit/max7219digit.cpp +16 -13
  326. esphome/components/max9611/max9611.cpp +9 -6
  327. esphome/components/mcp23008/mcp23008.cpp +1 -1
  328. esphome/components/mcp23016/mcp23016.cpp +1 -1
  329. esphome/components/mcp23017/mcp23017.cpp +1 -1
  330. esphome/components/mcp23s08/mcp23s08.cpp +1 -1
  331. esphome/components/mcp23s17/mcp23s17.cpp +1 -1
  332. esphome/components/mcp3008/mcp3008.cpp +1 -1
  333. esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
  334. esphome/components/mcp3204/mcp3204.cpp +1 -1
  335. esphome/components/mcp4461/mcp4461.cpp +2 -2
  336. esphome/components/mcp4725/mcp4725.cpp +2 -2
  337. esphome/components/mcp4728/mcp4728.cpp +2 -2
  338. esphome/components/mcp9600/mcp9600.cpp +1 -1
  339. esphome/components/mcp9808/mcp9808.cpp +4 -4
  340. esphome/components/mdns/mdns_component.cpp +8 -2
  341. esphome/components/mdns/mdns_component.h +3 -1
  342. esphome/components/mdns/mdns_esp32.cpp +2 -2
  343. esphome/components/media_player/__init__.py +1 -0
  344. esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
  345. esphome/components/micro_wake_word/streaming_model.cpp +10 -6
  346. esphome/components/micronova/micronova.h +2 -2
  347. esphome/components/mics_4514/mics_4514.cpp +2 -2
  348. esphome/components/midea/air_conditioner.cpp +7 -5
  349. esphome/components/midea_ir/midea_ir.cpp +1 -1
  350. esphome/components/mipi_spi/mipi_spi.cpp +24 -15
  351. esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
  352. esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
  353. esphome/components/mlx90614/mlx90614.cpp +4 -3
  354. esphome/components/mmc5603/mmc5603.cpp +2 -2
  355. esphome/components/mmc5983/mmc5983.cpp +1 -1
  356. esphome/components/modbus/modbus.cpp +7 -5
  357. esphome/components/modbus_controller/modbus_controller.cpp +6 -4
  358. esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
  359. esphome/components/modbus_controller/switch/__init__.py +6 -2
  360. esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
  361. esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
  362. esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
  363. esphome/components/mpr121/mpr121.cpp +2 -2
  364. esphome/components/mpu6050/mpu6050.cpp +6 -6
  365. esphome/components/mpu6886/mpu6886.cpp +6 -6
  366. esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
  367. esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
  368. esphome/components/mqtt/mqtt_client.cpp +31 -24
  369. esphome/components/mqtt/mqtt_component.cpp +2 -2
  370. esphome/components/mqtt/mqtt_cover.cpp +8 -4
  371. esphome/components/mqtt/mqtt_fan.cpp +12 -6
  372. esphome/components/mqtt/mqtt_valve.cpp +4 -2
  373. esphome/components/ms5611/ms5611.cpp +2 -2
  374. esphome/components/ms8607/ms8607.cpp +2 -2
  375. esphome/components/msa3xx/msa3xx.cpp +16 -12
  376. esphome/components/my9231/my9231.cpp +7 -5
  377. esphome/components/nau7802/nau7802.cpp +6 -4
  378. esphome/components/neopixelbus/neopixelbus_light.h +2 -2
  379. esphome/components/network/ip_address.h +1 -1
  380. esphome/components/network/util.cpp +13 -0
  381. esphome/components/nextion/base_component.py +2 -0
  382. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +2 -3
  383. esphome/components/nextion/display.py +34 -22
  384. esphome/components/nextion/nextion.cpp +182 -143
  385. esphome/components/nextion/nextion.h +36 -0
  386. esphome/components/nextion/nextion_commands.cpp +3 -3
  387. esphome/components/nextion/nextion_upload_arduino.cpp +58 -61
  388. esphome/components/nextion/nextion_upload_idf.cpp +69 -72
  389. esphome/components/nextion/sensor/nextion_sensor.cpp +4 -4
  390. esphome/components/nextion/switch/nextion_switch.cpp +2 -2
  391. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +2 -2
  392. esphome/components/nfc/nci_message.h +1 -1
  393. esphome/components/nfc/ndef_record.h +1 -1
  394. esphome/components/nfc/ndef_record_text.h +1 -1
  395. esphome/components/nfc/ndef_record_uri.h +1 -1
  396. esphome/components/nfc/nfc.h +1 -1
  397. esphome/components/nfc/nfc_tag.h +1 -1
  398. esphome/components/noblex/noblex.cpp +1 -1
  399. esphome/components/npi19/npi19.cpp +5 -7
  400. esphome/components/number/__init__.py +11 -0
  401. esphome/components/online_image/__init__.py +13 -1
  402. esphome/components/online_image/online_image.cpp +26 -4
  403. esphome/components/online_image/online_image.h +21 -4
  404. esphome/components/opentherm/generate.py +3 -3
  405. esphome/components/opentherm/hub.cpp +11 -7
  406. esphome/components/opentherm/number/number.cpp +5 -3
  407. esphome/components/opentherm/opentherm.h +1 -1
  408. esphome/components/opentherm/schema.py +13 -13
  409. esphome/components/opentherm/validate.py +1 -1
  410. esphome/components/openthread/__init__.py +146 -0
  411. esphome/components/openthread/const.py +10 -0
  412. esphome/components/openthread/openthread.cpp +206 -0
  413. esphome/components/openthread/openthread.h +68 -0
  414. esphome/components/openthread/openthread_esp.cpp +164 -0
  415. esphome/components/openthread/tlv.py +58 -0
  416. esphome/components/openthread_info/__init__.py +0 -0
  417. esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
  418. esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
  419. esphome/components/openthread_info/text_sensor.py +105 -0
  420. esphome/components/output/float_output.cpp +1 -1
  421. esphome/components/output/switch/output_switch.cpp +1 -1
  422. esphome/components/packet_transport/packet_transport.cpp +6 -4
  423. esphome/components/pca6416a/pca6416a.cpp +2 -2
  424. esphome/components/pca9554/pca9554.cpp +6 -4
  425. esphome/components/pca9685/pca9685_output.cpp +12 -8
  426. esphome/components/pcd8544/pcd_8544.cpp +1 -1
  427. esphome/components/pcf85063/pcf85063.cpp +2 -2
  428. esphome/components/pcf8563/pcf8563.cpp +2 -2
  429. esphome/components/pcf8574/pcf8574.cpp +2 -2
  430. esphome/components/pid/pid_climate.cpp +8 -5
  431. esphome/components/pid/pid_climate.h +1 -1
  432. esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
  433. esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
  434. esphome/components/pipsolar/pipsolar.cpp +3 -3
  435. esphome/components/pm1006/pm1006.cpp +3 -7
  436. esphome/components/pm1006/pm1006.h +4 -1
  437. esphome/components/pm2005/pm2005.cpp +12 -13
  438. esphome/components/pm2005/sensor.py +1 -1
  439. esphome/components/pmsa003i/pmsa003i.cpp +2 -2
  440. esphome/components/pmsx003/pmsx003.cpp +0 -4
  441. esphome/components/pmsx003/pmsx003.h +5 -2
  442. esphome/components/pmwcs3/pmwcs3.cpp +9 -13
  443. esphome/components/pmwcs3/pmwcs3.h +0 -1
  444. esphome/components/pn532/pn532.cpp +7 -7
  445. esphome/components/pn532/pn532.h +1 -1
  446. esphome/components/pn532_spi/pn532_spi.cpp +1 -1
  447. esphome/components/pn7150/pn7150.cpp +4 -4
  448. esphome/components/pn7160/pn7160.cpp +4 -4
  449. esphome/components/power_supply/power_supply.cpp +6 -4
  450. esphome/components/power_supply/power_supply.h +1 -1
  451. esphome/components/psram/__init__.py +59 -35
  452. esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
  453. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
  454. esphome/components/pylontech/pylontech.cpp +2 -2
  455. esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
  456. esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
  457. esphome/components/pzemac/pzemac.cpp +4 -2
  458. esphome/components/pzemdc/pzemdc.cpp +4 -2
  459. esphome/components/qmc5883l/qmc5883l.cpp +2 -2
  460. esphome/components/qmp6988/qmp6988.cpp +2 -2
  461. esphome/components/qmp6988/qmp6988.h +1 -1
  462. esphome/components/qr_code/qr_code.cpp +5 -3
  463. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  464. esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
  465. esphome/components/rc522/rc522.cpp +5 -5
  466. esphome/components/rdm6300/rdm6300.cpp +1 -0
  467. esphome/components/remote_receiver/__init__.py +10 -2
  468. esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
  469. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
  470. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
  471. esphome/components/remote_transmitter/__init__.py +10 -2
  472. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
  473. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
  474. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
  475. esphome/components/resistance/resistance_sensor.cpp +6 -3
  476. esphome/components/restart/button/restart_button.cpp +1 -1
  477. esphome/components/restart/switch/restart_switch.cpp +1 -1
  478. esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
  479. esphome/components/rp2040/__init__.py +7 -0
  480. esphome/components/rp2040/core.cpp +8 -1
  481. esphome/components/rp2040/gpio.cpp +26 -9
  482. esphome/components/rp2040/preferences.cpp +3 -3
  483. esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
  484. esphome/components/rp2040_pio_led_strip/light.py +1 -1
  485. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
  486. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
  487. esphome/components/rtttl/rtttl.cpp +11 -9
  488. esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
  489. esphome/components/safe_mode/safe_mode.cpp +9 -8
  490. esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
  491. esphome/components/scd30/scd30.cpp +11 -8
  492. esphome/components/scd4x/scd4x.cpp +12 -8
  493. esphome/components/sdl/display.py +40 -0
  494. esphome/components/sdl/sdl_esphome.cpp +2 -2
  495. esphome/components/sdl/sdl_esphome.h +8 -0
  496. esphome/components/sdm_meter/sdm_meter.cpp +5 -2
  497. esphome/components/sdp3x/sdp3x.cpp +11 -11
  498. esphome/components/sds011/sds011.cpp +5 -6
  499. esphome/components/sds011/sds011.h +4 -1
  500. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
  501. esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
  502. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
  503. esphome/components/selec_meter/selec_meter.cpp +5 -2
  504. esphome/components/select/__init__.py +1 -0
  505. esphome/components/sen0321/sen0321.cpp +2 -2
  506. esphome/components/sen21231/sen21231.cpp +1 -1
  507. esphome/components/sen5x/sen5x.cpp +10 -7
  508. esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
  509. esphome/components/sensirion_common/i2c_sensirion.h +1 -0
  510. esphome/components/sensor/__init__.py +11 -1
  511. esphome/components/sensor/filter.h +1 -1
  512. esphome/components/sensor/sensor.h +9 -5
  513. esphome/components/servo/servo.cpp +12 -9
  514. esphome/components/servo/servo.h +1 -1
  515. esphome/components/sfa30/sfa30.cpp +1 -1
  516. esphome/components/sgp30/sgp30.cpp +10 -8
  517. esphome/components/sgp4x/sgp4x.cpp +49 -61
  518. esphome/components/sgp4x/sgp4x.h +0 -1
  519. esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
  520. esphome/components/sht3xd/sht3xd.cpp +1 -1
  521. esphome/components/sht4x/sht4x.cpp +2 -2
  522. esphome/components/shtcx/shtcx.cpp +13 -16
  523. esphome/components/shutdown/button/shutdown_button.cpp +1 -1
  524. esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
  525. esphome/components/sim800l/sim800l.cpp +2 -2
  526. esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
  527. esphome/components/sm16716/sm16716.cpp +1 -1
  528. esphome/components/sm2135/sm2135.cpp +1 -1
  529. esphome/components/sm2235/sm2235.cpp +5 -3
  530. esphome/components/sm2335/sm2335.cpp +5 -3
  531. esphome/components/sml/sml.cpp +1 -1
  532. esphome/components/sn74hc165/sn74hc165.cpp +1 -2
  533. esphome/components/sn74hc595/sn74hc595.cpp +1 -2
  534. esphome/components/sntp/sntp_component.cpp +1 -1
  535. esphome/components/socket/__init__.py +2 -0
  536. esphome/components/socket/bsd_sockets_impl.cpp +51 -7
  537. esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
  538. esphome/components/socket/lwip_sockets_impl.cpp +51 -7
  539. esphome/components/socket/socket.cpp +31 -0
  540. esphome/components/socket/socket.h +27 -1
  541. esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
  542. esphome/components/sonoff_d1/sonoff_d1.h +2 -2
  543. esphome/components/sound_level/sound_level.cpp +4 -2
  544. esphome/components/speaker/media_player/__init__.py +3 -0
  545. esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
  546. esphome/components/speaker/media_player/speaker_media_player.h +6 -0
  547. esphome/components/spi/__init__.py +10 -2
  548. esphome/components/spi/spi.cpp +4 -4
  549. esphome/components/spi_device/spi_device.cpp +1 -2
  550. esphome/components/sprinkler/sprinkler.cpp +9 -6
  551. esphome/components/sps30/sps30.cpp +16 -15
  552. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  553. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
  554. esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
  555. esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
  556. esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
  557. esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
  558. esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
  559. esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
  560. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
  561. esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
  562. esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
  563. esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
  564. esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
  565. esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
  566. esphome/components/st7567_base/st7567_base.cpp +3 -3
  567. esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
  568. esphome/components/st7567_spi/st7567_spi.cpp +1 -1
  569. esphome/components/st7701s/st7701s.cpp +4 -2
  570. esphome/components/st7735/st7735.cpp +3 -3
  571. esphome/components/st7789v/st7789v.cpp +10 -7
  572. esphome/components/st7920/st7920.cpp +6 -4
  573. esphome/components/statsd/statsd.cpp +9 -5
  574. esphome/components/status_led/light/status_led_light.cpp +1 -1
  575. esphome/components/status_led/status_led.cpp +1 -1
  576. esphome/components/stepper/stepper.h +5 -3
  577. esphome/components/sts3x/sts3x.cpp +2 -2
  578. esphome/components/switch/__init__.py +1 -0
  579. esphome/components/switch/switch.cpp +18 -12
  580. esphome/components/switch/switch.h +1 -1
  581. esphome/components/sx1509/__init__.py +53 -20
  582. esphome/components/sx1509/sx1509.cpp +29 -5
  583. esphome/components/sx1509/sx1509.h +9 -1
  584. esphome/components/t6615/t6615.cpp +1 -0
  585. esphome/components/tc74/tc74.cpp +1 -1
  586. esphome/components/tca9548a/tca9548a.cpp +1 -1
  587. esphome/components/tca9555/tca9555.cpp +2 -2
  588. esphome/components/tcs34725/tcs34725.cpp +4 -4
  589. esphome/components/tee501/tee501.cpp +3 -2
  590. esphome/components/tem3200/tem3200.cpp +5 -6
  591. esphome/components/template/alarm_control_panel/__init__.py +6 -0
  592. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +38 -12
  593. esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +3 -1
  594. esphome/components/template/cover/template_cover.cpp +1 -1
  595. esphome/components/template/select/template_select.cpp +6 -4
  596. esphome/components/template/text/template_text.cpp +2 -3
  597. esphome/components/template/valve/template_valve.cpp +5 -3
  598. esphome/components/text/__init__.py +10 -11
  599. esphome/components/text_sensor/__init__.py +1 -0
  600. esphome/components/thermostat/thermostat_climate.cpp +67 -43
  601. esphome/components/time/__init__.py +1 -2
  602. esphome/components/time_based/time_based_cover.cpp +4 -2
  603. esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
  604. esphome/components/tm1621/tm1621.cpp +3 -3
  605. esphome/components/tm1637/tm1637.cpp +9 -7
  606. esphome/components/tm1638/tm1638.cpp +7 -5
  607. esphome/components/tm1651/tm1651.cpp +2 -2
  608. esphome/components/tmp102/tmp102.cpp +1 -3
  609. esphome/components/tmp102/tmp102.h +0 -3
  610. esphome/components/tmp1075/tmp1075.cpp +12 -9
  611. esphome/components/tmp117/tmp117.cpp +2 -2
  612. esphome/components/tof10120/tof10120_sensor.cpp +2 -2
  613. esphome/components/tormatic/tormatic_cover.cpp +4 -2
  614. esphome/components/tsl2561/tsl2561.cpp +7 -5
  615. esphome/components/tsl2591/tsl2591.cpp +25 -27
  616. esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
  617. esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
  618. esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
  619. esphome/components/tuya/select/tuya_select.cpp +5 -3
  620. esphome/components/tx20/tx20.cpp +3 -3
  621. esphome/components/uart/__init__.py +4 -5
  622. esphome/components/uart/button/uart_button.cpp +1 -1
  623. esphome/components/uart/switch/uart_switch.cpp +2 -2
  624. esphome/components/uart/uart.cpp +2 -2
  625. esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
  626. esphome/components/uart/uart_component_esp8266.cpp +9 -7
  627. esphome/components/uart/uart_component_esp_idf.cpp +9 -7
  628. esphome/components/uart/uart_component_host.cpp +11 -8
  629. esphome/components/uart/uart_component_libretiny.cpp +8 -6
  630. esphome/components/uart/uart_component_rp2040.cpp +8 -6
  631. esphome/components/udp/udp_component.cpp +9 -5
  632. esphome/components/ufire_ec/ufire_ec.cpp +5 -3
  633. esphome/components/ufire_ise/ufire_ise.cpp +1 -1
  634. esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
  635. esphome/components/update/__init__.py +1 -0
  636. esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
  637. esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
  638. esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
  639. esphome/components/usb_host/__init__.py +64 -0
  640. esphome/components/usb_host/usb_host.h +116 -0
  641. esphome/components/usb_host/usb_host_client.cpp +394 -0
  642. esphome/components/usb_host/usb_host_component.cpp +35 -0
  643. esphome/components/usb_uart/__init__.py +134 -0
  644. esphome/components/usb_uart/ch34x.cpp +80 -0
  645. esphome/components/usb_uart/cp210x.cpp +126 -0
  646. esphome/components/usb_uart/usb_uart.cpp +328 -0
  647. esphome/components/usb_uart/usb_uart.h +151 -0
  648. esphome/components/valve/__init__.py +1 -0
  649. esphome/components/veml3235/veml3235.cpp +13 -9
  650. esphome/components/veml7700/veml7700.cpp +10 -6
  651. esphome/components/voice_assistant/voice_assistant.cpp +7 -7
  652. esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
  653. esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
  654. esphome/components/web_server/server_index_v2.h +632 -630
  655. esphome/components/web_server/server_index_v3.h +411 -409
  656. esphome/components/web_server/web_server.cpp +5 -3
  657. esphome/components/web_server_base/web_server_base.cpp +1 -1
  658. esphome/components/web_server_idf/utils.cpp +1 -1
  659. esphome/components/web_server_idf/web_server_idf.cpp +1 -1
  660. esphome/components/weikai/__init__.py +2 -0
  661. esphome/components/weikai/weikai.cpp +23 -21
  662. esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
  663. esphome/components/weikai_spi/weikai_spi.cpp +11 -6
  664. esphome/components/wiegand/wiegand.cpp +1 -1
  665. esphome/components/wifi/wifi_component.cpp +50 -37
  666. esphome/components/wifi/wifi_component.h +7 -4
  667. esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
  668. esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
  669. esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
  670. esphome/components/wireguard/wireguard.cpp +21 -21
  671. esphome/components/wl_134/text_sensor.py +1 -2
  672. esphome/components/wled/wled_light_effect.cpp +1 -1
  673. esphome/components/x9c/x9c.cpp +5 -3
  674. esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
  675. esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
  676. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
  677. esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
  678. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
  679. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
  680. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
  681. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
  682. esphome/components/xl9535/xl9535.cpp +2 -2
  683. esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
  684. esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
  685. esphome/config.py +3 -2
  686. esphome/config_validation.py +46 -17
  687. esphome/const.py +10 -1
  688. esphome/core/__init__.py +37 -18
  689. esphome/core/application.cpp +188 -5
  690. esphome/core/application.h +110 -0
  691. esphome/core/component.h +13 -0
  692. esphome/core/config.py +12 -0
  693. esphome/core/defines.h +10 -2
  694. esphome/core/hal.h +5 -0
  695. esphome/core/helpers.cpp +1 -1
  696. esphome/core/helpers.h +4 -4
  697. esphome/core/log.h +2 -0
  698. esphome/core/log_const_en.h +4 -0
  699. esphome/core/scheduler.cpp +2 -2
  700. esphome/coroutine.py +3 -4
  701. esphome/cpp_generator.py +32 -32
  702. esphome/dashboard/core.py +2 -2
  703. esphome/dashboard/web_server.py +2 -2
  704. esphome/git.py +4 -4
  705. esphome/helpers.py +5 -6
  706. esphome/loader.py +8 -7
  707. esphome/log.py +7 -1
  708. esphome/platformio_api.py +2 -3
  709. esphome/storage_json.py +13 -5
  710. esphome/types.py +12 -13
  711. esphome/util.py +1 -2
  712. esphome/writer.py +5 -3
  713. esphome/yaml_util.py +6 -1
  714. esphome/zeroconf.py +1 -1
  715. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
  716. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +720 -667
  717. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
  718. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
  719. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
  720. {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -21,7 +21,7 @@ static const char *const TAG = "nextion.upload.idf";
21
21
 
22
22
  int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &range_start) {
23
23
  uint32_t range_size = this->tft_size_ - range_start;
24
- ESP_LOGV(TAG, "Free heap: %" PRIu32, esp_get_free_heap_size());
24
+ ESP_LOGV(TAG, "Heap: %" PRIu32, esp_get_free_heap_size());
25
25
  uint32_t range_end = ((upload_first_chunk_sent_ or this->tft_size_ < 4096) ? this->tft_size_ : 4096) - 1;
26
26
  ESP_LOGD(TAG, "Range start: %" PRIu32, range_start);
27
27
  if (range_size <= 0 or range_end <= range_start) {
@@ -33,20 +33,20 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
33
33
 
34
34
  char range_header[32];
35
35
  sprintf(range_header, "bytes=%" PRIu32 "-%" PRIu32, range_start, range_end);
36
- ESP_LOGV(TAG, "Requesting range: %s", range_header);
36
+ ESP_LOGV(TAG, "Range: %s", range_header);
37
37
  esp_http_client_set_header(http_client, "Range", range_header);
38
- ESP_LOGV(TAG, "Opening HTTP connetion");
38
+ ESP_LOGV(TAG, "Open HTTP");
39
39
  esp_err_t err = esp_http_client_open(http_client, 0);
40
40
  if (err != ESP_OK) {
41
- ESP_LOGE(TAG, "Failed to open HTTP connection: %s", esp_err_to_name(err));
41
+ ESP_LOGE(TAG, "HTTP open failed: %s", esp_err_to_name(err));
42
42
  return -1;
43
43
  }
44
44
 
45
- ESP_LOGV(TAG, "Fetch content length");
45
+ ESP_LOGV(TAG, "Fetch length");
46
46
  const int chunk_size = esp_http_client_fetch_headers(http_client);
47
- ESP_LOGV(TAG, "content_length = %d", chunk_size);
47
+ ESP_LOGV(TAG, "Length: %d", chunk_size);
48
48
  if (chunk_size <= 0) {
49
- ESP_LOGE(TAG, "Failed to get chunk's content length: %d", chunk_size);
49
+ ESP_LOGE(TAG, "Get length failed: %d", chunk_size);
50
50
  return -1;
51
51
  }
52
52
 
@@ -54,7 +54,7 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
54
54
  ExternalRAMAllocator<uint8_t> allocator(ExternalRAMAllocator<uint8_t>::ALLOW_FAILURE);
55
55
  uint8_t *buffer = allocator.allocate(4096);
56
56
  if (!buffer) {
57
- ESP_LOGE(TAG, "Failed to allocate upload buffer");
57
+ ESP_LOGE(TAG, "Buffer alloc failed");
58
58
  return -1;
59
59
  }
60
60
 
@@ -63,7 +63,7 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
63
63
  App.feed_wdt();
64
64
  const uint16_t buffer_size =
65
65
  this->content_length_ < 4096 ? this->content_length_ : 4096; // Limits buffer to the remaining data
66
- ESP_LOGV(TAG, "Fetching %" PRIu16 " bytes from HTTP", buffer_size);
66
+ ESP_LOGV(TAG, "Fetch %" PRIu16 " bytes", buffer_size);
67
67
  uint16_t read_len = 0;
68
68
  int partial_read_len = 0;
69
69
  uint8_t retries = 0;
@@ -84,14 +84,13 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
84
84
  }
85
85
  if (read_len != buffer_size) {
86
86
  // Did not receive the full package within the timeout period
87
- ESP_LOGE(TAG, "Failed to read full package, received only %" PRIu16 " of %" PRIu16 " bytes", read_len,
88
- buffer_size);
87
+ ESP_LOGE(TAG, "Read failed: %" PRIu16 "/%" PRIu16 " bytes", read_len, buffer_size);
89
88
  // Deallocate buffer
90
89
  allocator.deallocate(buffer, 4096);
91
90
  buffer = nullptr;
92
91
  return -1;
93
92
  }
94
- ESP_LOGV(TAG, "%d bytes fetched, writing it to UART", read_len);
93
+ ESP_LOGV(TAG, "Fetched %d bytes", read_len);
95
94
  if (read_len > 0) {
96
95
  recv_string.clear();
97
96
  this->write_array(buffer, buffer_size);
@@ -100,25 +99,23 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
100
99
  this->content_length_ -= read_len;
101
100
  const float upload_percentage = 100.0f * (this->tft_size_ - this->content_length_) / this->tft_size_;
102
101
  #ifdef USE_PSRAM
103
- ESP_LOGD(
104
- TAG,
105
- "Uploaded %0.2f%%, remaining %" PRIu32 " bytes, free heap: %" PRIu32 " (DRAM) + %" PRIu32 " (PSRAM) bytes",
106
- upload_percentage, this->content_length_, static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_INTERNAL)),
107
- static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_SPIRAM)));
102
+ ESP_LOGD(TAG, "Upload: %0.2f%% (%" PRIu32 " left, heap: %" PRIu32 "+%" PRIu32 ")", upload_percentage,
103
+ this->content_length_, static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_INTERNAL)),
104
+ static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_SPIRAM)));
108
105
  #else
109
- ESP_LOGD(TAG, "Uploaded %0.2f%%, remaining %" PRIu32 " bytes, free heap: %" PRIu32 " bytes", upload_percentage,
110
- this->content_length_, static_cast<uint32_t>(esp_get_free_heap_size()));
106
+ ESP_LOGD(TAG, "Upload: %0.2f%% (%" PRIu32 " left, heap: %" PRIu32 ")", upload_percentage, this->content_length_,
107
+ static_cast<uint32_t>(esp_get_free_heap_size()));
111
108
  #endif
112
109
  upload_first_chunk_sent_ = true;
113
110
  if (recv_string[0] == 0x08 && recv_string.size() == 5) { // handle partial upload request
114
- ESP_LOGD(TAG, "recv_string [%s]",
111
+ ESP_LOGD(TAG, "Recv: [%s]",
115
112
  format_hex_pretty(reinterpret_cast<const uint8_t *>(recv_string.data()), recv_string.size()).c_str());
116
113
  uint32_t result = 0;
117
114
  for (int j = 0; j < 4; ++j) {
118
115
  result += static_cast<uint8_t>(recv_string[j + 1]) << (8 * j);
119
116
  }
120
117
  if (result > 0) {
121
- ESP_LOGI(TAG, "Nextion reported new range %" PRIu32, result);
118
+ ESP_LOGI(TAG, "New range: %" PRIu32, result);
122
119
  this->content_length_ = this->tft_size_ - result;
123
120
  range_start = result;
124
121
  } else {
@@ -129,7 +126,7 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
129
126
  buffer = nullptr;
130
127
  return range_end + 1;
131
128
  } else if (recv_string[0] != 0x05 and recv_string[0] != 0x08) { // 0x05 == "ok"
132
- ESP_LOGE(TAG, "Invalid response from Nextion: [%s]",
129
+ ESP_LOGE(TAG, "Invalid response: [%s]",
133
130
  format_hex_pretty(reinterpret_cast<const uint8_t *>(recv_string.data()), recv_string.size()).c_str());
134
131
  // Deallocate buffer
135
132
  allocator.deallocate(buffer, 4096);
@@ -139,10 +136,10 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
139
136
 
140
137
  recv_string.clear();
141
138
  } else if (read_len == 0) {
142
- ESP_LOGV(TAG, "End of HTTP response reached");
139
+ ESP_LOGV(TAG, "HTTP end");
143
140
  break; // Exit the loop if there is no more data to read
144
141
  } else {
145
- ESP_LOGE(TAG, "Failed to read from HTTP client, error code: %" PRIu16, read_len);
142
+ ESP_LOGE(TAG, "HTTP read failed: %" PRIu16, read_len);
146
143
  break; // Exit the loop on error
147
144
  }
148
145
  }
@@ -154,26 +151,26 @@ int Nextion::upload_by_chunks_(esp_http_client_handle_t http_client, uint32_t &r
154
151
  }
155
152
 
156
153
  bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
157
- ESP_LOGD(TAG, "Nextion TFT upload requested");
154
+ ESP_LOGD(TAG, "TFT upload requested");
158
155
  ESP_LOGD(TAG, "Exit reparse: %s", YESNO(exit_reparse));
159
156
  ESP_LOGD(TAG, "URL: %s", this->tft_url_.c_str());
160
157
 
161
158
  if (this->is_updating_) {
162
- ESP_LOGW(TAG, "Currently uploading");
159
+ ESP_LOGW(TAG, "Upload in progress");
163
160
  return false;
164
161
  }
165
162
 
166
163
  if (!network::is_connected()) {
167
- ESP_LOGE(TAG, "Network is not connected");
164
+ ESP_LOGE(TAG, "No network");
168
165
  return false;
169
166
  }
170
167
 
171
168
  this->is_updating_ = true;
172
169
 
173
170
  if (exit_reparse) {
174
- ESP_LOGD(TAG, "Exiting Nextion reparse mode");
171
+ ESP_LOGD(TAG, "Exit reparse mode");
175
172
  if (!this->set_protocol_reparse_mode(false)) {
176
- ESP_LOGW(TAG, "Failed to request Nextion to exit reparse mode");
173
+ ESP_LOGW(TAG, "Exit reparse failed");
177
174
  return false;
178
175
  }
179
176
  }
@@ -188,8 +185,8 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
188
185
  ESP_LOGD(TAG, "Baud rate: %" PRIu32, baud_rate);
189
186
 
190
187
  // Define the configuration for the HTTP client
191
- ESP_LOGV(TAG, "Initializing HTTP client");
192
- ESP_LOGV(TAG, "Free heap: %" PRIu32, esp_get_free_heap_size());
188
+ ESP_LOGV(TAG, "Init HTTP client");
189
+ ESP_LOGV(TAG, "Heap: %" PRIu32, esp_get_free_heap_size());
193
190
  esp_http_client_config_t config = {
194
191
  .url = this->tft_url_.c_str(),
195
192
  .cert_pem = nullptr,
@@ -201,30 +198,30 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
201
198
  // Initialize the HTTP client with the configuration
202
199
  esp_http_client_handle_t http_client = esp_http_client_init(&config);
203
200
  if (!http_client) {
204
- ESP_LOGE(TAG, "Failed to initialize HTTP client.");
201
+ ESP_LOGE(TAG, "HTTP init failed");
205
202
  return this->upload_end_(false);
206
203
  }
207
204
 
208
205
  esp_err_t err = esp_http_client_set_header(http_client, "Connection", "keep-alive");
209
206
  if (err != ESP_OK) {
210
- ESP_LOGE(TAG, "HTTP set header failed: %s", esp_err_to_name(err));
207
+ ESP_LOGE(TAG, "Set header failed: %s", esp_err_to_name(err));
211
208
  esp_http_client_cleanup(http_client);
212
209
  return this->upload_end_(false);
213
210
  }
214
211
 
215
212
  // Perform the HTTP request
216
- ESP_LOGV(TAG, "Check if the client could connect");
217
- ESP_LOGV(TAG, "Free heap: %" PRIu32, esp_get_free_heap_size());
213
+ ESP_LOGV(TAG, "Check connection");
214
+ ESP_LOGV(TAG, "Heap: %" PRIu32, esp_get_free_heap_size());
218
215
  err = esp_http_client_perform(http_client);
219
216
  if (err != ESP_OK) {
220
- ESP_LOGE(TAG, "HTTP request failed: %s", esp_err_to_name(err));
217
+ ESP_LOGE(TAG, "HTTP failed: %s", esp_err_to_name(err));
221
218
  esp_http_client_cleanup(http_client);
222
219
  return this->upload_end_(false);
223
220
  }
224
221
 
225
222
  // Check the HTTP Status Code
226
- ESP_LOGV(TAG, "Check the HTTP Status Code");
227
- ESP_LOGV(TAG, "Free heap: %" PRIu32, esp_get_free_heap_size());
223
+ ESP_LOGV(TAG, "Check status");
224
+ ESP_LOGV(TAG, "Heap: %" PRIu32, esp_get_free_heap_size());
228
225
  int status_code = esp_http_client_get_status_code(http_client);
229
226
  if (status_code != 200 && status_code != 206) {
230
227
  return this->upload_end_(false);
@@ -232,28 +229,28 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
232
229
 
233
230
  this->tft_size_ = esp_http_client_get_content_length(http_client);
234
231
 
235
- ESP_LOGD(TAG, "TFT file size: %zu bytes", this->tft_size_);
232
+ ESP_LOGD(TAG, "TFT size: %zu bytes", this->tft_size_);
236
233
  if (this->tft_size_ < 4096 || this->tft_size_ > 134217728) {
237
- ESP_LOGE(TAG, "File size check failed.");
238
- ESP_LOGD(TAG, "Close HTTP connection");
234
+ ESP_LOGE(TAG, "Size check failed");
235
+ ESP_LOGD(TAG, "Close HTTP");
239
236
  esp_http_client_close(http_client);
240
237
  esp_http_client_cleanup(http_client);
241
238
  ESP_LOGV(TAG, "Connection closed");
242
239
  return this->upload_end_(false);
243
240
  } else {
244
- ESP_LOGV(TAG, "File size check passed. Proceeding...");
241
+ ESP_LOGV(TAG, "Size check OK");
245
242
  }
246
243
  this->content_length_ = this->tft_size_;
247
244
 
248
- ESP_LOGD(TAG, "Uploading Nextion");
245
+ ESP_LOGD(TAG, "Uploading");
249
246
 
250
247
  // The Nextion will ignore the upload command if it is sleeping
251
- ESP_LOGV(TAG, "Wake-up Nextion");
248
+ ESP_LOGV(TAG, "Wake-up");
252
249
  this->ignore_is_setup_ = true;
253
250
  this->send_command_("sleep=0");
254
251
  this->send_command_("dim=100");
255
252
  vTaskDelay(pdMS_TO_TICKS(250)); // NOLINT
256
- ESP_LOGV(TAG, "Free heap: %" PRIu32, esp_get_free_heap_size());
253
+ ESP_LOGV(TAG, "Heap: %" PRIu32, esp_get_free_heap_size());
257
254
 
258
255
  App.feed_wdt();
259
256
  char command[128];
@@ -263,75 +260,75 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
263
260
  sprintf(command, "whmi-wris %" PRIu32 ",%" PRIu32 ",1", this->content_length_, baud_rate);
264
261
 
265
262
  // Clear serial receive buffer
266
- ESP_LOGV(TAG, "Clear serial receive buffer");
263
+ ESP_LOGV(TAG, "Clear RX buffer");
267
264
  this->reset_(false);
268
265
  vTaskDelay(pdMS_TO_TICKS(250)); // NOLINT
269
- ESP_LOGV(TAG, "Free heap: %" PRIu32, esp_get_free_heap_size());
266
+ ESP_LOGV(TAG, "Heap: %" PRIu32, esp_get_free_heap_size());
270
267
 
271
- ESP_LOGV(TAG, "Send upload instruction: %s", command);
268
+ ESP_LOGV(TAG, "Upload cmd: %s", command);
272
269
  this->send_command_(command);
273
270
 
274
271
  if (baud_rate != this->original_baud_rate_) {
275
- ESP_LOGD(TAG, "Changing baud rate from %" PRIu32 " to %" PRIu32 " bps", this->original_baud_rate_, baud_rate);
272
+ ESP_LOGD(TAG, "Baud: %" PRIu32 "->%" PRIu32, this->original_baud_rate_, baud_rate);
276
273
  this->parent_->set_baud_rate(baud_rate);
277
274
  this->parent_->load_settings();
278
275
  }
279
276
 
280
277
  std::string response;
281
- ESP_LOGV(TAG, "Waiting for upgrade response");
278
+ ESP_LOGV(TAG, "Wait upload resp");
282
279
  this->recv_ret_string_(response, 5000, true); // This can take some time to return
283
280
 
284
281
  // The Nextion display will, if it's ready to accept data, send a 0x05 byte.
285
- ESP_LOGD(TAG, "Upgrade response is [%s] - %zu byte(s)",
282
+ ESP_LOGD(TAG, "Upload resp: [%s] %zu B",
286
283
  format_hex_pretty(reinterpret_cast<const uint8_t *>(response.data()), response.size()).c_str(),
287
284
  response.length());
288
- ESP_LOGV(TAG, "Free heap: %" PRIu32, esp_get_free_heap_size());
285
+ ESP_LOGV(TAG, "Heap: %" PRIu32, esp_get_free_heap_size());
289
286
 
290
287
  if (response.find(0x05) != std::string::npos) {
291
- ESP_LOGV(TAG, "Preparation for TFT upload done");
288
+ ESP_LOGV(TAG, "Upload prep done");
292
289
  } else {
293
- ESP_LOGE(TAG, "Preparation for TFT upload failed %d \"%s\"", response[0], response.c_str());
294
- ESP_LOGD(TAG, "Close HTTP connection");
290
+ ESP_LOGE(TAG, "Upload prep failed %d '%s'", response[0], response.c_str());
291
+ ESP_LOGD(TAG, "Close HTTP");
295
292
  esp_http_client_close(http_client);
296
293
  esp_http_client_cleanup(http_client);
297
294
  ESP_LOGV(TAG, "Connection closed");
298
295
  return this->upload_end_(false);
299
296
  }
300
297
 
301
- ESP_LOGV(TAG, "Change the method to GET before starting the download");
298
+ ESP_LOGV(TAG, "Set method to GET");
302
299
  esp_err_t set_method_result = esp_http_client_set_method(http_client, HTTP_METHOD_GET);
303
300
  if (set_method_result != ESP_OK) {
304
- ESP_LOGE(TAG, "Failed to set HTTP method to GET: %s", esp_err_to_name(set_method_result));
301
+ ESP_LOGE(TAG, "Set GET failed: %s", esp_err_to_name(set_method_result));
305
302
  return this->upload_end_(false);
306
303
  }
307
304
 
308
- ESP_LOGD(TAG, "Uploading TFT to Nextion:");
309
- ESP_LOGD(TAG, " URL: %s", this->tft_url_.c_str());
310
- ESP_LOGD(TAG, " File size: %" PRIu32 " bytes", this->content_length_);
311
- ESP_LOGD(TAG, " Free heap: %" PRIu32, esp_get_free_heap_size());
305
+ ESP_LOGD(TAG, "Uploading TFT:");
306
+ ESP_LOGD(TAG, " URL: %s", this->tft_url_.c_str());
307
+ ESP_LOGD(TAG, " Size: %" PRIu32 " bytes", this->content_length_);
308
+ ESP_LOGD(TAG, " Heap: %" PRIu32, esp_get_free_heap_size());
312
309
 
313
310
  // Proceed with the content download as before
314
311
 
315
- ESP_LOGV(TAG, "Starting transfer by chunks loop");
312
+ ESP_LOGV(TAG, "Start chunk transfer");
316
313
 
317
314
  uint32_t position = 0;
318
315
  while (this->content_length_ > 0) {
319
316
  int upload_result = upload_by_chunks_(http_client, position);
320
317
  if (upload_result < 0) {
321
- ESP_LOGE(TAG, "Error uploading TFT to Nextion!");
322
- ESP_LOGD(TAG, "Close HTTP connection");
318
+ ESP_LOGE(TAG, "TFT upload error");
319
+ ESP_LOGD(TAG, "Close HTTP");
323
320
  esp_http_client_close(http_client);
324
321
  esp_http_client_cleanup(http_client);
325
322
  ESP_LOGV(TAG, "Connection closed");
326
323
  return this->upload_end_(false);
327
324
  }
328
325
  App.feed_wdt();
329
- ESP_LOGV(TAG, "Free heap: %" PRIu32 ", Bytes left: %" PRIu32, esp_get_free_heap_size(), this->content_length_);
326
+ ESP_LOGV(TAG, "Heap: %" PRIu32 " left: %" PRIu32, esp_get_free_heap_size(), this->content_length_);
330
327
  }
331
328
 
332
- ESP_LOGD(TAG, "Successfully uploaded TFT to Nextion!");
329
+ ESP_LOGD(TAG, "TFT upload complete");
333
330
 
334
- ESP_LOGD(TAG, "Close HTTP connection");
331
+ ESP_LOGD(TAG, "Close HTTP");
335
332
  esp_http_client_close(http_client);
336
333
  esp_http_client_cleanup(http_client);
337
334
  ESP_LOGV(TAG, "Connection closed");
@@ -339,23 +336,23 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
339
336
  }
340
337
 
341
338
  bool Nextion::upload_end_(bool successful) {
342
- ESP_LOGD(TAG, "Nextion TFT upload finished: %s", YESNO(successful));
339
+ ESP_LOGD(TAG, "TFT upload done: %s", YESNO(successful));
343
340
  this->is_updating_ = false;
344
341
  this->ignore_is_setup_ = false;
345
342
 
346
343
  uint32_t baud_rate = this->parent_->get_baud_rate();
347
344
  if (baud_rate != this->original_baud_rate_) {
348
- ESP_LOGD(TAG, "Changing baud rate back from %" PRIu32 " to %" PRIu32 " bps", baud_rate, this->original_baud_rate_);
345
+ ESP_LOGD(TAG, "Baud back: %" PRIu32 "->%" PRIu32, baud_rate, this->original_baud_rate_);
349
346
  this->parent_->set_baud_rate(this->original_baud_rate_);
350
347
  this->parent_->load_settings();
351
348
  }
352
349
 
353
350
  if (successful) {
354
- ESP_LOGD(TAG, "Restarting ESPHome");
351
+ ESP_LOGD(TAG, "Restart");
355
352
  delay(1500); // NOLINT
356
- arch_restart();
353
+ App.safe_reboot();
357
354
  } else {
358
- ESP_LOGE(TAG, "Nextion TFT upload failed");
355
+ ESP_LOGE(TAG, "TFT upload failed");
359
356
  }
360
357
  return successful;
361
358
  }
@@ -13,7 +13,7 @@ void NextionSensor::process_sensor(const std::string &variable_name, int state)
13
13
 
14
14
  if (this->wave_chan_id_ == UINT8_MAX && this->variable_name_ == variable_name) {
15
15
  this->publish_state(state);
16
- ESP_LOGD(TAG, "Processed sensor \"%s\" state %d", variable_name.c_str(), state);
16
+ ESP_LOGD(TAG, "Sensor: %s=%d", variable_name.c_str(), state);
17
17
  }
18
18
  }
19
19
 
@@ -93,7 +93,7 @@ void NextionSensor::set_state(float state, bool publish, bool send_to_nextion) {
93
93
  }
94
94
  this->update_component_settings();
95
95
 
96
- ESP_LOGN(TAG, "Wrote state for sensor \"%s\" state %lf", this->variable_name_.c_str(), published_state);
96
+ ESP_LOGN(TAG, "Write: %s=%lf", this->variable_name_.c_str(), published_state);
97
97
  }
98
98
 
99
99
  void NextionSensor::wave_update_() {
@@ -105,8 +105,8 @@ void NextionSensor::wave_update_() {
105
105
  size_t buffer_to_send =
106
106
  this->wave_buffer_.size() < 255 ? this->wave_buffer_.size() : 255; // ADDT command can only send 255
107
107
 
108
- ESP_LOGN(TAG, "wave_update send %zu of %zu value(s) to wave nextion component id %d and wave channel id %d",
109
- buffer_to_send, this->wave_buffer_.size(), this->component_id_, this->wave_chan_id_);
108
+ ESP_LOGN(TAG, "Wave update: %zu/%zu vals to comp %d ch %d", buffer_to_send, this->wave_buffer_.size(),
109
+ this->component_id_, this->wave_chan_id_);
110
110
  #endif
111
111
 
112
112
  this->nextion_->add_addt_command_to_queue(this);
@@ -13,7 +13,7 @@ void NextionSwitch::process_bool(const std::string &variable_name, bool on) {
13
13
  if (this->variable_name_ == variable_name) {
14
14
  this->publish_state(on);
15
15
 
16
- ESP_LOGD(TAG, "Processed switch \"%s\" state %s", variable_name.c_str(), state ? "ON" : "OFF");
16
+ ESP_LOGD(TAG, "Switch: %s=%s", variable_name.c_str(), ONOFF(on));
17
17
  }
18
18
  }
19
19
 
@@ -43,7 +43,7 @@ void NextionSwitch::set_state(bool state, bool publish, bool send_to_nextion) {
43
43
 
44
44
  this->update_component_settings();
45
45
 
46
- ESP_LOGN(TAG, "Updated switch \"%s\" state %s", this->variable_name_.c_str(), ONOFF(state));
46
+ ESP_LOGN(TAG, "Write: %s=%s", this->variable_name_.c_str(), ONOFF(state));
47
47
  }
48
48
 
49
49
  void NextionSwitch::write_state(bool state) { this->set_state(state); }
@@ -11,7 +11,7 @@ void NextionTextSensor::process_text(const std::string &variable_name, const std
11
11
  return;
12
12
  if (this->variable_name_ == variable_name) {
13
13
  this->publish_state(text_value);
14
- ESP_LOGD(TAG, "Processed text_sensor \"%s\" state \"%s\"", variable_name.c_str(), text_value.c_str());
14
+ ESP_LOGD(TAG, "Text sensor: %s='%s'", variable_name.c_str(), text_value.c_str());
15
15
  }
16
16
  }
17
17
 
@@ -42,7 +42,7 @@ void NextionTextSensor::set_state(const std::string &state, bool publish, bool s
42
42
 
43
43
  this->update_component_settings();
44
44
 
45
- ESP_LOGN(TAG, "Wrote state for text_sensor \"%s\" state \"%s\"", this->variable_name_.c_str(), state.c_str());
45
+ ESP_LOGN(TAG, "Write: %s='%s'", this->variable_name_.c_str(), state.c_str());
46
46
  }
47
47
 
48
48
  } // namespace nextion
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  #include <vector>
7
7
 
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
 
6
6
  #include <vector>
7
7
 
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
  #include "ndef_record.h"
6
6
 
7
7
  #include <vector>
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
  #include "ndef_record.h"
6
6
 
7
7
  #include <vector>
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include "esphome/core/log.h"
4
3
  #include "esphome/core/helpers.h"
4
+ #include "esphome/core/log.h"
5
5
  #include "ndef_record.h"
6
6
  #include "ndef_message.h"
7
7
  #include "nfc_tag.h"
@@ -3,8 +3,8 @@
3
3
  #include <memory>
4
4
  #include <vector>
5
5
 
6
- #include "esphome/core/log.h"
7
6
  #include "esphome/core/helpers.h"
7
+ #include "esphome/core/log.h"
8
8
  #include "ndef_message.h"
9
9
 
10
10
  namespace esphome {
@@ -1,6 +1,6 @@
1
1
  #include "noblex.h"
2
- #include "esphome/core/log.h"
3
2
  #include "esphome/core/helpers.h"
3
+ #include "esphome/core/log.h"
4
4
 
5
5
  namespace esphome {
6
6
  namespace noblex {
@@ -1,7 +1,7 @@
1
1
  #include "npi19.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 npi19 {
@@ -11,18 +11,16 @@ static const char *const TAG = "npi19";
11
11
  static const uint8_t READ_COMMAND = 0xAC;
12
12
 
13
13
  void NPI19Component::setup() {
14
- ESP_LOGCONFIG(TAG, "Setting up NPI19...");
14
+ ESP_LOGCONFIG(TAG, "Running setup");
15
15
 
16
16
  uint16_t raw_temperature(0);
17
17
  uint16_t raw_pressure(0);
18
18
  i2c::ErrorCode err = this->read_(raw_temperature, raw_pressure);
19
19
  if (err != i2c::ERROR_OK) {
20
- ESP_LOGCONFIG(TAG, " I2C Communication Failed...");
20
+ ESP_LOGCONFIG(TAG, ESP_LOG_MSG_COMM_FAIL);
21
21
  this->mark_failed();
22
22
  return;
23
23
  }
24
-
25
- ESP_LOGCONFIG(TAG, " Success...");
26
24
  }
27
25
 
28
26
  void NPI19Component::dump_config() {
@@ -90,7 +88,7 @@ void NPI19Component::update() {
90
88
  i2c::ErrorCode err = this->read_(raw_temperature, raw_pressure);
91
89
 
92
90
  if (err != i2c::ERROR_OK) {
93
- ESP_LOGW(TAG, "I2C Communication Failed");
91
+ ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
94
92
  this->status_set_warning();
95
93
  return;
96
94
  }
@@ -21,8 +21,10 @@ from esphome.const import (
21
21
  CONF_WEB_SERVER,
22
22
  DEVICE_CLASS_APPARENT_POWER,
23
23
  DEVICE_CLASS_AQI,
24
+ DEVICE_CLASS_AREA,
24
25
  DEVICE_CLASS_ATMOSPHERIC_PRESSURE,
25
26
  DEVICE_CLASS_BATTERY,
27
+ DEVICE_CLASS_BLOOD_GLUCOSE_CONCENTRATION,
26
28
  DEVICE_CLASS_CARBON_DIOXIDE,
27
29
  DEVICE_CLASS_CARBON_MONOXIDE,
28
30
  DEVICE_CLASS_CONDUCTIVITY,
@@ -33,6 +35,7 @@ from esphome.const import (
33
35
  DEVICE_CLASS_DURATION,
34
36
  DEVICE_CLASS_EMPTY,
35
37
  DEVICE_CLASS_ENERGY,
38
+ DEVICE_CLASS_ENERGY_DISTANCE,
36
39
  DEVICE_CLASS_ENERGY_STORAGE,
37
40
  DEVICE_CLASS_FREQUENCY,
38
41
  DEVICE_CLASS_GAS,
@@ -54,6 +57,7 @@ from esphome.const import (
54
57
  DEVICE_CLASS_PRECIPITATION,
55
58
  DEVICE_CLASS_PRECIPITATION_INTENSITY,
56
59
  DEVICE_CLASS_PRESSURE,
60
+ DEVICE_CLASS_REACTIVE_ENERGY,
57
61
  DEVICE_CLASS_REACTIVE_POWER,
58
62
  DEVICE_CLASS_SIGNAL_STRENGTH,
59
63
  DEVICE_CLASS_SOUND_PRESSURE,
@@ -68,6 +72,7 @@ from esphome.const import (
68
72
  DEVICE_CLASS_VOLUME_STORAGE,
69
73
  DEVICE_CLASS_WATER,
70
74
  DEVICE_CLASS_WEIGHT,
75
+ DEVICE_CLASS_WIND_DIRECTION,
71
76
  DEVICE_CLASS_WIND_SPEED,
72
77
  )
73
78
  from esphome.core import CORE, coroutine_with_priority
@@ -78,8 +83,10 @@ CODEOWNERS = ["@esphome/core"]
78
83
  DEVICE_CLASSES = [
79
84
  DEVICE_CLASS_APPARENT_POWER,
80
85
  DEVICE_CLASS_AQI,
86
+ DEVICE_CLASS_AREA,
81
87
  DEVICE_CLASS_ATMOSPHERIC_PRESSURE,
82
88
  DEVICE_CLASS_BATTERY,
89
+ DEVICE_CLASS_BLOOD_GLUCOSE_CONCENTRATION,
83
90
  DEVICE_CLASS_CARBON_DIOXIDE,
84
91
  DEVICE_CLASS_CARBON_MONOXIDE,
85
92
  DEVICE_CLASS_CONDUCTIVITY,
@@ -90,6 +97,7 @@ DEVICE_CLASSES = [
90
97
  DEVICE_CLASS_DURATION,
91
98
  DEVICE_CLASS_EMPTY,
92
99
  DEVICE_CLASS_ENERGY,
100
+ DEVICE_CLASS_ENERGY_DISTANCE,
93
101
  DEVICE_CLASS_ENERGY_STORAGE,
94
102
  DEVICE_CLASS_FREQUENCY,
95
103
  DEVICE_CLASS_GAS,
@@ -111,6 +119,7 @@ DEVICE_CLASSES = [
111
119
  DEVICE_CLASS_PRECIPITATION,
112
120
  DEVICE_CLASS_PRECIPITATION_INTENSITY,
113
121
  DEVICE_CLASS_PRESSURE,
122
+ DEVICE_CLASS_REACTIVE_ENERGY,
114
123
  DEVICE_CLASS_REACTIVE_POWER,
115
124
  DEVICE_CLASS_SIGNAL_STRENGTH,
116
125
  DEVICE_CLASS_SOUND_PRESSURE,
@@ -125,6 +134,7 @@ DEVICE_CLASSES = [
125
134
  DEVICE_CLASS_VOLUME_STORAGE,
126
135
  DEVICE_CLASS_WATER,
127
136
  DEVICE_CLASS_WEIGHT,
137
+ DEVICE_CLASS_WIND_DIRECTION,
128
138
  DEVICE_CLASS_WIND_SPEED,
129
139
  ]
130
140
  IS_PLATFORM_COMPONENT = True
@@ -267,6 +277,7 @@ async def register_number(
267
277
  if not CORE.has_id(config[CONF_ID]):
268
278
  var = cg.Pvariable(config[CONF_ID], var)
269
279
  cg.add(cg.App.register_number(var))
280
+ CORE.register_platform_component("number", var)
270
281
  await setup_number_core_(
271
282
  var, config, min_value=min_value, max_value=max_value, step=step
272
283
  )