esphome 2025.3.3__py3-none-any.whl → 2025.4.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 (713) hide show
  1. esphome/__main__.py +34 -10
  2. esphome/components/a01nyub/sensor.py +2 -2
  3. esphome/components/a02yyuw/sensor.py +2 -2
  4. esphome/components/a4988/stepper.py +1 -2
  5. esphome/components/absolute_humidity/sensor.py +3 -3
  6. esphome/components/ac_dimmer/output.py +3 -3
  7. esphome/components/adalight/__init__.py +2 -2
  8. esphome/components/adc128s102/__init__.py +1 -1
  9. esphome/components/adc128s102/sensor/__init__.py +3 -3
  10. esphome/components/addressable_light/display.py +5 -5
  11. esphome/components/ade7880/sensor.py +2 -2
  12. esphome/components/ade7953_base/__init__.py +10 -10
  13. esphome/components/ade7953_i2c/sensor.py +1 -2
  14. esphome/components/ade7953_spi/sensor.py +1 -2
  15. esphome/components/ads1115/__init__.py +1 -1
  16. esphome/components/ads1115/sensor/__init__.py +4 -3
  17. esphome/components/ads1118/__init__.py +1 -1
  18. esphome/components/ads1118/sensor/__init__.py +5 -4
  19. esphome/components/ags10/sensor.py +9 -9
  20. esphome/components/aht10/sensor.py +2 -2
  21. esphome/components/airthings_ble/__init__.py +1 -1
  22. esphome/components/airthings_wave_base/__init__.py +2 -3
  23. esphome/components/airthings_wave_mini/sensor.py +2 -5
  24. esphome/components/airthings_wave_plus/sensor.py +8 -9
  25. esphome/components/alpha3/sensor.py +5 -5
  26. esphome/components/am2315c/am2315c.cpp +4 -4
  27. esphome/components/am2315c/sensor.py +1 -1
  28. esphome/components/am2320/sensor.py +1 -1
  29. esphome/components/am43/cover/__init__.py +1 -1
  30. esphome/components/am43/sensor/__init__.py +3 -3
  31. esphome/components/analog_threshold/binary_sensor.py +2 -5
  32. esphome/components/anova/climate.py +1 -1
  33. esphome/components/apds9306/sensor.py +1 -1
  34. esphome/components/apds9960/__init__.py +1 -1
  35. esphome/components/apds9960/binary_sensor.py +2 -1
  36. esphome/components/apds9960/sensor.py +3 -2
  37. esphome/components/api/api_frame_helper.cpp +25 -1
  38. esphome/components/as3935/__init__.py +3 -3
  39. esphome/components/as3935/binary_sensor.py +2 -1
  40. esphome/components/as3935/sensor.py +4 -3
  41. esphome/components/as3935_i2c/__init__.py +1 -1
  42. esphome/components/as3935_spi/__init__.py +1 -1
  43. esphome/components/as5600/__init__.py +2 -2
  44. esphome/components/as5600/sensor/__init__.py +10 -9
  45. esphome/components/as7341/sensor.py +1 -2
  46. esphome/components/at581x/__init__.py +4 -8
  47. esphome/components/at581x/switch/__init__.py +2 -4
  48. esphome/components/atc_mithermometer/sensor.py +3 -3
  49. esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +7 -3
  50. esphome/components/b_parasite/sensor.py +2 -2
  51. esphome/components/ballu/climate.py +1 -1
  52. esphome/components/bang_bang/climate.py +2 -2
  53. esphome/components/bedjet/__init__.py +2 -6
  54. esphome/components/bedjet/climate/__init__.py +3 -6
  55. esphome/components/bedjet/fan/__init__.py +4 -9
  56. esphome/components/bedjet/sensor/__init__.py +3 -6
  57. esphome/components/beken_spi_led_strip/light.py +2 -2
  58. esphome/components/bh1750/sensor.py +2 -6
  59. esphome/components/binary/fan/__init__.py +2 -1
  60. esphome/components/binary/light/__init__.py +3 -2
  61. esphome/components/binary_sensor_map/sensor.py +5 -6
  62. esphome/components/bl0939/sensor.py +1 -1
  63. esphome/components/bl0940/sensor.py +3 -3
  64. esphome/components/ble_client/__init__.py +3 -2
  65. esphome/components/ble_client/sensor/__init__.py +1 -1
  66. esphome/components/ble_client/text_sensor/__init__.py +1 -1
  67. esphome/components/bluetooth_proxy/__init__.py +35 -23
  68. esphome/components/bme280_base/__init__.py +1 -1
  69. esphome/components/bme280_i2c/sensor.py +3 -2
  70. esphome/components/bme280_spi/sensor.py +3 -2
  71. esphome/components/bme680/sensor.py +4 -4
  72. esphome/components/bme680_bsec/__init__.py +1 -1
  73. esphome/components/bme680_bsec/sensor.py +3 -6
  74. esphome/components/bme680_bsec/text_sensor.py +3 -2
  75. esphome/components/bmi160/sensor.py +6 -6
  76. esphome/components/bmp085/sensor.py +1 -1
  77. esphome/components/bmp280_base/__init__.py +1 -1
  78. esphome/components/bmp280_i2c/sensor.py +3 -2
  79. esphome/components/bmp280_spi/sensor.py +3 -2
  80. esphome/components/bmp3xx_base/__init__.py +1 -1
  81. esphome/components/bmp3xx_i2c/sensor.py +2 -1
  82. esphome/components/bmp3xx_spi/sensor.py +2 -1
  83. esphome/components/bmp581/sensor.py +2 -1
  84. esphome/components/bp1658cj/__init__.py +2 -6
  85. esphome/components/bp1658cj/output.py +2 -1
  86. esphome/components/bp5758d/__init__.py +2 -6
  87. esphome/components/bp5758d/output.py +3 -2
  88. esphome/components/canbus/__init__.py +13 -2
  89. esphome/components/canbus/canbus.cpp +7 -1
  90. esphome/components/cap1188/__init__.py +2 -2
  91. esphome/components/cap1188/binary_sensor.py +3 -2
  92. esphome/components/captive_portal/__init__.py +3 -3
  93. esphome/components/ccs811/sensor.py +10 -10
  94. esphome/components/cd74hc4067/__init__.py +2 -5
  95. esphome/components/cd74hc4067/sensor.py +6 -5
  96. esphome/components/climate_ir/__init__.py +2 -2
  97. esphome/components/climate_ir_lg/climate.py +1 -1
  98. esphome/components/color/__init__.py +1 -2
  99. esphome/components/color_temperature/light.py +2 -2
  100. esphome/components/combination/sensor.py +1 -1
  101. esphome/components/coolix/climate.py +1 -1
  102. esphome/components/copy/binary_sensor/__init__.py +1 -1
  103. esphome/components/copy/button/__init__.py +1 -1
  104. esphome/components/copy/cover/__init__.py +1 -1
  105. esphome/components/copy/fan/__init__.py +2 -7
  106. esphome/components/copy/lock/__init__.py +2 -7
  107. esphome/components/copy/number/__init__.py +1 -1
  108. esphome/components/copy/select/__init__.py +2 -7
  109. esphome/components/copy/sensor/__init__.py +2 -2
  110. esphome/components/copy/switch/__init__.py +1 -1
  111. esphome/components/copy/text/__init__.py +2 -7
  112. esphome/components/copy/text_sensor/__init__.py +2 -6
  113. esphome/components/cs5460a/sensor.py +7 -7
  114. esphome/components/cse7761/sensor.py +2 -2
  115. esphome/components/cse7766/sensor.py +1 -1
  116. esphome/components/cst226/touchscreen/__init__.py +3 -4
  117. esphome/components/ct_clamp/sensor.py +1 -1
  118. esphome/components/current_based/cover.py +3 -4
  119. esphome/components/cwww/light.py +3 -3
  120. esphome/components/dac7678/__init__.py +1 -1
  121. esphome/components/dac7678/output.py +2 -1
  122. esphome/components/daikin/climate.py +1 -1
  123. esphome/components/daikin_arc/climate.py +1 -1
  124. esphome/components/daikin_brc/climate.py +1 -1
  125. esphome/components/dallas_temp/sensor.py +1 -1
  126. esphome/components/daly_bms/__init__.py +2 -2
  127. esphome/components/daly_bms/binary_sensor.py +3 -2
  128. esphome/components/daly_bms/sensor.py +14 -13
  129. esphome/components/daly_bms/text_sensor.py +3 -2
  130. esphome/components/dashboard_import/__init__.py +5 -5
  131. esphome/components/debug/sensor.py +7 -6
  132. esphome/components/debug/text_sensor.py +1 -1
  133. esphome/components/deep_sleep/__init__.py +12 -13
  134. esphome/components/delonghi/climate.py +1 -1
  135. esphome/components/demo/__init__.py +1 -1
  136. esphome/components/dfplayer/__init__.py +3 -3
  137. esphome/components/dfrobot_sen0395/__init__.py +3 -3
  138. esphome/components/dfrobot_sen0395/binary_sensor.py +2 -1
  139. esphome/components/dfrobot_sen0395/switch/__init__.py +2 -3
  140. esphome/components/dht/sensor.py +4 -5
  141. esphome/components/dht12/sensor.py +3 -3
  142. esphome/components/dps310/sensor.py +3 -3
  143. esphome/components/ds1307/time.py +2 -3
  144. esphome/components/dsmr/__init__.py +3 -7
  145. esphome/components/dsmr/sensor.py +5 -4
  146. esphome/components/dsmr/text_sensor.py +3 -2
  147. esphome/components/duty_cycle/sensor.py +3 -8
  148. esphome/components/duty_time/sensor.py +7 -7
  149. esphome/components/e131/__init__.py +3 -3
  150. esphome/components/ee895/sensor.py +5 -5
  151. esphome/components/ektf2232/touchscreen/__init__.py +2 -3
  152. esphome/components/emc2101/__init__.py +1 -1
  153. esphome/components/emc2101/output/__init__.py +3 -2
  154. esphome/components/emc2101/sensor/__init__.py +4 -3
  155. esphome/components/emmeti/climate.py +1 -1
  156. esphome/components/endstop/cover.py +3 -3
  157. esphome/components/ens160_base/__init__.py +1 -1
  158. esphome/components/ens160_i2c/sensor.py +2 -1
  159. esphome/components/ens160_spi/sensor.py +2 -1
  160. esphome/components/ens210/sensor.py +1 -1
  161. esphome/components/esp32/__init__.py +10 -0
  162. esphome/components/esp32_ble_tracker/__init__.py +135 -51
  163. esphome/components/esp32_camera/__init__.py +7 -8
  164. esphome/components/esp32_camera_web_server/__init__.py +2 -2
  165. esphome/components/esp32_can/canbus.py +21 -0
  166. esphome/components/esp32_can/esp32_can.cpp +1 -1
  167. esphome/components/esp32_can/esp32_can.h +4 -0
  168. esphome/components/esp32_dac/output.py +2 -2
  169. esphome/components/esp32_hall/sensor.py +2 -6
  170. esphome/components/esp32_touch/__init__.py +7 -7
  171. esphome/components/esp32_touch/binary_sensor.py +4 -7
  172. esphome/components/esp8266_pwm/output.py +3 -8
  173. esphome/components/ethernet/__init__.py +1 -0
  174. esphome/components/ethernet/ethernet_component.cpp +1 -1
  175. esphome/components/ethernet_info/ethernet_info_text_sensor.h +1 -0
  176. esphome/components/exposure_notifications/__init__.py +2 -2
  177. esphome/components/external_components/__init__.py +1 -1
  178. esphome/components/ezo/sensor.py +2 -2
  179. esphome/components/ezo_pmp/__init__.py +4 -4
  180. esphome/components/ezo_pmp/binary_sensor.py +4 -4
  181. esphome/components/ezo_pmp/sensor.py +4 -5
  182. esphome/components/ezo_pmp/text_sensor.py +2 -6
  183. esphome/components/factory_reset/button/__init__.py +2 -1
  184. esphome/components/factory_reset/switch/__init__.py +3 -2
  185. esphome/components/fastled_base/__init__.py +3 -3
  186. esphome/components/fastled_clockless/light.py +2 -2
  187. esphome/components/fastled_spi/light.py +2 -2
  188. esphome/components/feedback/cover.py +3 -3
  189. esphome/components/fingerprint_grow/__init__.py +5 -6
  190. esphome/components/fingerprint_grow/binary_sensor.py +2 -1
  191. esphome/components/fingerprint_grow/sensor.py +2 -1
  192. esphome/components/fs3000/sensor.py +2 -6
  193. esphome/components/ft5x06/touchscreen/__init__.py +2 -2
  194. esphome/components/ft63x6/touchscreen.py +2 -3
  195. esphome/components/fujitsu_general/climate.py +1 -1
  196. esphome/components/gcja5/sensor.py +4 -4
  197. esphome/components/gdk101/__init__.py +1 -1
  198. esphome/components/gdk101/binary_sensor.py +2 -1
  199. esphome/components/gdk101/sensor.py +5 -4
  200. esphome/components/globals/__init__.py +1 -2
  201. esphome/components/gp2y1010au0f/sensor.py +3 -3
  202. esphome/components/gp8403/__init__.py +1 -2
  203. esphome/components/gp8403/output/__init__.py +3 -4
  204. esphome/components/gpio/binary_sensor/__init__.py +3 -2
  205. esphome/components/gpio/one_wire/__init__.py +3 -2
  206. esphome/components/gpio/output/__init__.py +3 -2
  207. esphome/components/gpio/switch/__init__.py +3 -2
  208. esphome/components/gps/__init__.py +4 -5
  209. esphome/components/gps/time/__init__.py +3 -2
  210. esphome/components/graph/__init__.py +12 -12
  211. esphome/components/grove_tb6612fng/__init__.py +5 -6
  212. esphome/components/growatt_solar/sensor.py +1 -1
  213. esphome/components/gt911/binary_sensor/__init__.py +2 -2
  214. esphome/components/haier/binary_sensor/__init__.py +4 -10
  215. esphome/components/haier/button/__init__.py +3 -6
  216. esphome/components/haier/sensor/__init__.py +4 -6
  217. esphome/components/haier/switch/__init__.py +4 -7
  218. esphome/components/haier/text_sensor/__init__.py +4 -9
  219. esphome/components/havells_solar/sensor.py +1 -1
  220. esphome/components/hbridge/fan/__init__.py +6 -6
  221. esphome/components/hbridge/light/__init__.py +2 -1
  222. esphome/components/hdc1080/sensor.py +1 -1
  223. esphome/components/he60r/cover.py +2 -6
  224. esphome/components/heatpumpir/climate.py +1 -1
  225. esphome/components/hitachi_ac344/climate.py +1 -1
  226. esphome/components/hitachi_ac424/climate.py +1 -1
  227. esphome/components/hlw8012/sensor.py +6 -6
  228. esphome/components/hm3301/sensor.py +3 -3
  229. esphome/components/hmc5883l/sensor.py +4 -4
  230. esphome/components/homeassistant/time/__init__.py +2 -1
  231. esphome/components/honeywell_hih_i2c/sensor.py +3 -3
  232. esphome/components/honeywellabp/sensor.py +1 -2
  233. esphome/components/honeywellabp2_i2c/sensor.py +1 -2
  234. esphome/components/host/time/__init__.py +2 -2
  235. esphome/components/hrxl_maxsonar_wr/sensor.py +1 -1
  236. esphome/components/hte501/sensor.py +3 -3
  237. esphome/components/http_request/ota/__init__.py +5 -9
  238. esphome/components/http_request/update/__init__.py +3 -7
  239. esphome/components/htu21d/sensor.py +6 -6
  240. esphome/components/htu31d/sensor.py +1 -1
  241. esphome/components/hx711/sensor.py +3 -8
  242. esphome/components/hydreon_rgxx/binary_sensor.py +3 -7
  243. esphome/components/hydreon_rgxx/sensor.py +4 -4
  244. esphome/components/hyt271/sensor.py +1 -1
  245. esphome/components/i2c_device/__init__.py +1 -1
  246. esphome/components/i2s_audio/media_player/__init__.py +6 -8
  247. esphome/components/iaqcore/sensor.py +2 -2
  248. esphome/components/ina219/sensor.py +2 -2
  249. esphome/components/ina226/sensor.py +4 -4
  250. esphome/components/ina260/sensor.py +4 -4
  251. esphome/components/ina2xx_base/__init__.py +2 -2
  252. esphome/components/ina2xx_i2c/sensor.py +1 -1
  253. esphome/components/ina2xx_spi/sensor.py +1 -1
  254. esphome/components/ina3221/sensor.py +3 -3
  255. esphome/components/inkbird_ibsth1_mini/sensor.py +2 -2
  256. esphome/components/inkplate6/display.py +2 -2
  257. esphome/components/integration/sensor.py +4 -4
  258. esphome/components/internal_temperature/sensor.py +5 -7
  259. esphome/components/interval/__init__.py +1 -1
  260. esphome/components/jsn_sr04t/sensor.py +3 -3
  261. esphome/components/kamstrup_kmp/sensor.py +1 -1
  262. esphome/components/key_collector/__init__.py +2 -2
  263. esphome/components/kmeteriso/sensor.py +2 -2
  264. esphome/components/kuntze/sensor.py +5 -5
  265. esphome/components/lcd_base/__init__.py +2 -2
  266. esphome/components/lcd_gpio/display.py +4 -4
  267. esphome/components/lcd_menu/__init__.py +3 -7
  268. esphome/components/lcd_pcf8574/display.py +1 -1
  269. esphome/components/ld2410/__init__.py +4 -4
  270. esphome/components/ld2410/binary_sensor.py +5 -4
  271. esphome/components/ld2410/button/__init__.py +3 -2
  272. esphome/components/ld2410/number/__init__.py +5 -4
  273. esphome/components/ld2410/select/__init__.py +4 -3
  274. esphome/components/ld2410/sensor.py +6 -5
  275. esphome/components/ld2410/switch/__init__.py +2 -1
  276. esphome/components/ld2410/text_sensor.py +3 -2
  277. esphome/components/ld2420/__init__.py +1 -1
  278. esphome/components/ld2420/binary_sensor/__init__.py +4 -3
  279. esphome/components/ld2420/button/__init__.py +3 -2
  280. esphome/components/ld2420/number/__init__.py +3 -2
  281. esphome/components/ld2420/select/__init__.py +1 -0
  282. esphome/components/ld2420/sensor/__init__.py +3 -2
  283. esphome/components/ld2420/text_sensor/__init__.py +2 -6
  284. esphome/components/ld2450/__init__.py +2 -5
  285. esphome/components/ledc/output.py +3 -3
  286. esphome/components/libretiny/text_sensor.py +1 -1
  287. esphome/components/libretiny_pwm/output.py +3 -7
  288. esphome/components/lightwaverf/__init__.py +6 -8
  289. esphome/components/lilygo_t5_47/touchscreen/__init__.py +2 -3
  290. esphome/components/ltr390/sensor.py +1 -1
  291. esphome/components/ltr501/sensor.py +2 -2
  292. esphome/components/ltr_als_ps/sensor.py +2 -2
  293. esphome/components/lvgl/__init__.py +9 -12
  294. esphome/components/lvgl/automation.py +15 -3
  295. esphome/components/lvgl/defines.py +5 -2
  296. esphome/components/lvgl/encoders.py +3 -2
  297. esphome/components/lvgl/lv_validation.py +17 -9
  298. esphome/components/lvgl/lvcode.py +11 -9
  299. esphome/components/lvgl/lvgl_esphome.h +21 -0
  300. esphome/components/lvgl/number/__init__.py +23 -20
  301. esphome/components/lvgl/number/lvgl_number.h +27 -14
  302. esphome/components/lvgl/schemas.py +70 -19
  303. esphome/components/lvgl/select/__init__.py +11 -13
  304. esphome/components/lvgl/select/lvgl_select.h +25 -18
  305. esphome/components/lvgl/styles.py +42 -11
  306. esphome/components/lvgl/trigger.py +10 -1
  307. esphome/components/lvgl/widgets/__init__.py +1 -2
  308. esphome/components/lvgl/widgets/buttonmatrix.py +2 -2
  309. esphome/components/lvgl/widgets/canvas.py +407 -0
  310. esphome/components/lvgl/widgets/line.py +22 -32
  311. esphome/components/lvgl/widgets/meter.py +3 -1
  312. esphome/components/m5stack_8angle/__init__.py +1 -2
  313. esphome/components/m5stack_8angle/binary_sensor/__init__.py +2 -3
  314. esphome/components/m5stack_8angle/light/__init__.py +2 -4
  315. esphome/components/m5stack_8angle/sensor/__init__.py +2 -4
  316. esphome/components/matrix_keypad/binary_sensor/__init__.py +4 -3
  317. esphome/components/max31855/sensor.py +1 -1
  318. esphome/components/max31865/sensor.py +1 -1
  319. esphome/components/max44009/sensor.py +1 -1
  320. esphome/components/max6675/sensor.py +1 -1
  321. esphome/components/max6956/__init__.py +5 -5
  322. esphome/components/max6956/output/__init__.py +4 -3
  323. esphome/components/max7219/display.py +1 -1
  324. esphome/components/max7219digit/display.py +1 -1
  325. esphome/components/max9611/sensor.py +10 -10
  326. esphome/components/mcp23008/__init__.py +1 -1
  327. esphome/components/mcp23016/__init__.py +4 -4
  328. esphome/components/mcp23017/__init__.py +1 -1
  329. esphome/components/mcp23s08/__init__.py +1 -1
  330. esphome/components/mcp23s17/__init__.py +1 -1
  331. esphome/components/mcp23xxx_base/__init__.py +4 -4
  332. esphome/components/mcp2515/canbus.py +2 -2
  333. esphome/components/mcp3008/__init__.py +1 -1
  334. esphome/components/mcp3008/sensor/__init__.py +4 -4
  335. esphome/components/mcp3204/__init__.py +1 -1
  336. esphome/components/mcp3204/sensor/__init__.py +3 -2
  337. esphome/components/mcp4461/__init__.py +42 -0
  338. esphome/components/mcp4461/mcp4461.cpp +618 -0
  339. esphome/components/mcp4461/mcp4461.h +171 -0
  340. esphome/components/mcp4461/output/__init__.py +60 -0
  341. esphome/components/mcp4461/output/mcp4461_output.cpp +73 -0
  342. esphome/components/mcp4461/output/mcp4461_output.h +49 -0
  343. esphome/components/mcp4725/output.py +2 -2
  344. esphome/components/mcp4728/__init__.py +1 -1
  345. esphome/components/mcp4728/output/__init__.py +4 -3
  346. esphome/components/mcp47a1/output.py +2 -2
  347. esphome/components/mcp9808/sensor.py +1 -1
  348. esphome/components/mhz19/sensor.py +4 -4
  349. esphome/components/micronova/__init__.py +3 -5
  350. esphome/components/micronova/button/__init__.py +5 -5
  351. esphome/components/micronova/number/__init__.py +6 -10
  352. esphome/components/micronova/sensor/__init__.py +6 -6
  353. esphome/components/micronova/switch/__init__.py +6 -8
  354. esphome/components/micronova/text_sensor/__init__.py +5 -5
  355. esphome/components/microphone/__init__.py +2 -4
  356. esphome/components/midea/climate.py +6 -10
  357. esphome/components/midea_ir/climate.py +1 -1
  358. esphome/components/mitsubishi/climate.py +1 -1
  359. esphome/components/mlx90614/sensor.py +1 -1
  360. esphome/components/mmc5603/sensor.py +4 -4
  361. esphome/components/mmc5983/sensor.py +1 -1
  362. esphome/components/modbus/__init__.py +5 -9
  363. esphome/components/modbus_controller/__init__.py +1 -1
  364. esphome/components/monochromatic/light.py +2 -2
  365. esphome/components/mopeka_ble/__init__.py +1 -1
  366. esphome/components/mopeka_pro_check/sensor.py +12 -12
  367. esphome/components/mopeka_std_check/sensor.py +8 -8
  368. esphome/components/mpl3115a2/sensor.py +1 -1
  369. esphome/components/mpr121/__init__.py +3 -3
  370. esphome/components/mpr121/binary_sensor/__init__.py +5 -4
  371. esphome/components/mpu6050/sensor.py +4 -4
  372. esphome/components/mpu6886/sensor.py +4 -4
  373. esphome/components/mqtt_subscribe/sensor/__init__.py +3 -5
  374. esphome/components/mqtt_subscribe/text_sensor/__init__.py +1 -1
  375. esphome/components/ms5611/sensor.py +2 -2
  376. esphome/components/ms8607/sensor.py +1 -1
  377. esphome/components/my9231/__init__.py +1 -1
  378. esphome/components/my9231/output.py +2 -1
  379. esphome/components/nau7802/nau7802.cpp +0 -4
  380. esphome/components/nau7802/nau7802.h +0 -2
  381. esphome/components/neopixelbus/_methods.py +11 -9
  382. esphome/components/neopixelbus/light.py +11 -18
  383. esphome/components/nextion/binary_sensor/__init__.py +6 -14
  384. esphome/components/nextion/sensor/__init__.py +7 -10
  385. esphome/components/nextion/switch/__init__.py +3 -5
  386. esphome/components/nextion/text_sensor/__init__.py +3 -7
  387. esphome/components/noblex/climate.py +1 -1
  388. esphome/components/ntc/sensor.py +1 -1
  389. esphome/components/opentherm/__init__.py +6 -6
  390. esphome/components/opentherm/input.py +2 -1
  391. esphome/components/opentherm/number/__init__.py +5 -4
  392. esphome/components/opentherm/output/__init__.py +3 -2
  393. esphome/components/opentherm/schema.py +7 -7
  394. esphome/components/opentherm/switch/__init__.py +3 -2
  395. esphome/components/opentherm/validate.py +1 -1
  396. esphome/components/output/__init__.py +2 -3
  397. esphome/components/output/button/__init__.py +3 -2
  398. esphome/components/output/lock/__init__.py +2 -1
  399. esphome/components/output/switch/__init__.py +2 -1
  400. esphome/components/partition/light.py +4 -4
  401. esphome/components/pca6416a/__init__.py +4 -4
  402. esphome/components/pca9554/__init__.py +4 -4
  403. esphome/components/pca9685/__init__.py +2 -2
  404. esphome/components/pca9685/output.py +2 -1
  405. esphome/components/pcf85063/time.py +2 -3
  406. esphome/components/pcf8563/time.py +2 -2
  407. esphome/components/pcf8574/__init__.py +4 -4
  408. esphome/components/pid/climate.py +2 -2
  409. esphome/components/pid/sensor/__init__.py +4 -8
  410. esphome/components/pipsolar/__init__.py +1 -1
  411. esphome/components/pipsolar/binary_sensor/__init__.py +2 -2
  412. esphome/components/pipsolar/output/__init__.py +4 -3
  413. esphome/components/pipsolar/sensor/__init__.py +5 -4
  414. esphome/components/pipsolar/switch/__init__.py +2 -1
  415. esphome/components/pipsolar/text_sensor/__init__.py +2 -1
  416. esphome/components/pm1006/sensor.py +2 -2
  417. esphome/components/pmsa003i/sensor.py +4 -4
  418. esphome/components/pmsx003/sensor.py +10 -11
  419. esphome/components/pmwcs3/sensor.py +5 -5
  420. esphome/components/pn532/__init__.py +3 -3
  421. esphome/components/pn532_i2c/__init__.py +1 -1
  422. esphome/components/pn532_spi/__init__.py +1 -1
  423. esphome/components/pn7150/__init__.py +2 -2
  424. esphome/components/pn7150_i2c/__init__.py +1 -1
  425. esphome/components/pn7160/__init__.py +2 -2
  426. esphome/components/pn7160_i2c/__init__.py +1 -1
  427. esphome/components/pn7160_spi/__init__.py +1 -1
  428. esphome/components/power_supply/__init__.py +1 -1
  429. esphome/components/prometheus/__init__.py +3 -8
  430. esphome/components/psram/__init__.py +75 -11
  431. esphome/components/psram/psram.cpp +18 -7
  432. esphome/components/pulse_counter/sensor.py +4 -4
  433. esphome/components/pulse_meter/sensor.py +3 -3
  434. esphome/components/pulse_width/sensor.py +3 -8
  435. esphome/components/pvvx_mithermometer/display/__init__.py +1 -1
  436. esphome/components/pvvx_mithermometer/sensor.py +3 -3
  437. esphome/components/pylontech/__init__.py +1 -0
  438. esphome/components/pylontech/sensor/__init__.py +8 -13
  439. esphome/components/pylontech/text_sensor/__init__.py +2 -7
  440. esphome/components/pzem004t/sensor.py +3 -3
  441. esphome/components/pzemac/sensor.py +9 -9
  442. esphome/components/pzemdc/sensor.py +6 -6
  443. esphome/components/qmc5883l/sensor.py +5 -5
  444. esphome/components/qmp6988/sensor.py +3 -3
  445. esphome/components/qr_code/__init__.py +1 -1
  446. esphome/components/qspi_dbi/display.py +1 -1
  447. esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
  448. esphome/components/qspi_dbi/qspi_dbi.h +1 -1
  449. esphome/components/qwiic_pir/binary_sensor.py +2 -5
  450. esphome/components/radon_eye_ble/__init__.py +1 -1
  451. esphome/components/radon_eye_rd200/sensor.py +3 -4
  452. esphome/components/rc522/__init__.py +3 -3
  453. esphome/components/rc522_i2c/__init__.py +1 -1
  454. esphome/components/rc522_spi/__init__.py +1 -1
  455. esphome/components/rdm6300/__init__.py +2 -2
  456. esphome/components/rdm6300/binary_sensor.py +2 -1
  457. esphome/components/resistance/sensor.py +2 -2
  458. esphome/components/restart/button/__init__.py +1 -1
  459. esphome/components/restart/switch/__init__.py +2 -5
  460. esphome/components/rf_bridge/__init__.py +3 -3
  461. esphome/components/rgb/light.py +2 -2
  462. esphome/components/rgbct/light.py +3 -3
  463. esphome/components/rgbw/light.py +2 -2
  464. esphome/components/rgbww/light.py +4 -4
  465. esphome/components/rotary_encoder/sensor.py +8 -8
  466. esphome/components/rp2040_pio/__init__.py +0 -1
  467. esphome/components/rp2040_pio_led_strip/light.py +2 -4
  468. esphome/components/rp2040_pwm/output.py +3 -7
  469. esphome/components/rtttl/__init__.py +6 -6
  470. esphome/components/ruuvi_ble/__init__.py +1 -1
  471. esphome/components/ruuvitag/sensor.py +15 -15
  472. esphome/components/safe_mode/__init__.py +2 -3
  473. esphome/components/safe_mode/button/__init__.py +3 -2
  474. esphome/components/safe_mode/switch/__init__.py +4 -7
  475. esphome/components/scd30/sensor.py +5 -6
  476. esphome/components/scd4x/sensor.py +6 -8
  477. esphome/components/script/__init__.py +2 -2
  478. esphome/components/sdl/display.py +3 -3
  479. esphome/components/sdl/touchscreen/__init__.py +2 -2
  480. esphome/components/sdm_meter/sensor.py +3 -3
  481. esphome/components/sdp3x/sensor.py +1 -2
  482. esphome/components/sds011/sensor.py +4 -4
  483. esphome/components/seeed_mr24hpc1/__init__.py +1 -1
  484. esphome/components/seeed_mr24hpc1/binary_sensor.py +2 -5
  485. esphome/components/seeed_mr24hpc1/button/__init__.py +1 -0
  486. esphome/components/seeed_mr24hpc1/number/__init__.py +2 -4
  487. esphome/components/seeed_mr24hpc1/select/__init__.py +2 -3
  488. esphome/components/seeed_mr24hpc1/sensor.py +1 -0
  489. esphome/components/seeed_mr24hpc1/switch/__init__.py +2 -4
  490. esphome/components/seeed_mr24hpc1/text_sensor.py +1 -0
  491. esphome/components/seeed_mr60bha2/binary_sensor.py +2 -4
  492. esphome/components/seeed_mr60bha2/sensor.py +1 -1
  493. esphome/components/seeed_mr60fda2/button/__init__.py +1 -1
  494. esphome/components/seeed_mr60fda2/select/__init__.py +0 -1
  495. esphome/components/selec_meter/sensor.py +1 -1
  496. esphome/components/sen0321/sensor.py +2 -2
  497. esphome/components/sen21231/sensor.py +1 -1
  498. esphome/components/senseair/sensor.py +3 -3
  499. esphome/components/sensirion_common/__init__.py +0 -2
  500. esphome/components/servo/__init__.py +3 -3
  501. esphome/components/sfa30/sensor.py +4 -5
  502. esphome/components/sgp4x/sensor.py +2 -2
  503. esphome/components/shelly_dimmer/light.py +16 -16
  504. esphome/components/sht3xd/sensor.py +1 -1
  505. esphome/components/sht4x/sensor.py +6 -6
  506. esphome/components/shtcx/sensor.py +1 -1
  507. esphome/components/shutdown/button/__init__.py +2 -6
  508. esphome/components/shutdown/switch/__init__.py +2 -5
  509. esphome/components/sigma_delta_output/output.py +2 -7
  510. esphome/components/sim800l/__init__.py +3 -7
  511. esphome/components/sim800l/binary_sensor.py +3 -5
  512. esphome/components/sim800l/sensor.py +2 -1
  513. esphome/components/slow_pwm/output.py +4 -5
  514. esphome/components/sm10bit_base/__init__.py +2 -6
  515. esphome/components/sm16716/__init__.py +1 -1
  516. esphome/components/sm16716/output.py +2 -1
  517. esphome/components/sm2135/__init__.py +2 -6
  518. esphome/components/sm2135/output.py +2 -1
  519. esphome/components/sm2235/__init__.py +1 -1
  520. esphome/components/sm2235/output.py +2 -1
  521. esphome/components/sm2335/__init__.py +1 -1
  522. esphome/components/sm2335/output.py +2 -1
  523. esphome/components/sm300d2/sensor.py +13 -13
  524. esphome/components/sml/__init__.py +1 -1
  525. esphome/components/sml/sensor/__init__.py +1 -1
  526. esphome/components/sml/sml.cpp +8 -6
  527. esphome/components/sml/sml.h +1 -1
  528. esphome/components/sml/sml_parser.cpp +16 -18
  529. esphome/components/sml/sml_parser.h +42 -12
  530. esphome/components/sml/text_sensor/__init__.py +1 -1
  531. esphome/components/smt100/sensor.py +5 -6
  532. esphome/components/sn74hc165/__init__.py +5 -5
  533. esphome/components/sn74hc595/__init__.py +5 -5
  534. esphome/components/socket/__init__.py +1 -1
  535. esphome/components/sonoff_d1/light.py +2 -6
  536. esphome/components/speaker/media_player/audio_pipeline.cpp +3 -2
  537. esphome/components/speed/fan/__init__.py +2 -2
  538. esphome/components/spi/__init__.py +45 -36
  539. esphome/components/spi/spi.h +1 -0
  540. esphome/components/spi/spi_esp_idf.cpp +13 -5
  541. esphome/components/sprinkler/__init__.py +4 -5
  542. esphome/components/sps30/sensor.py +8 -8
  543. esphome/components/ssd1306_i2c/display.py +2 -2
  544. esphome/components/ssd1322_base/__init__.py +2 -2
  545. esphome/components/ssd1325_base/__init__.py +2 -2
  546. esphome/components/ssd1327_base/__init__.py +2 -2
  547. esphome/components/ssd1327_i2c/display.py +1 -1
  548. esphome/components/ssd1331_base/__init__.py +2 -2
  549. esphome/components/ssd1351_base/__init__.py +2 -2
  550. esphome/components/st7567_base/__init__.py +4 -4
  551. esphome/components/st7567_i2c/display.py +1 -1
  552. esphome/components/st7920/display.py +2 -2
  553. esphome/components/statsd/__init__.py +3 -3
  554. esphome/components/status/binary_sensor.py +2 -5
  555. esphome/components/status_led/__init__.py +1 -1
  556. esphome/components/status_led/light/__init__.py +2 -1
  557. esphome/components/stepper/__init__.py +2 -2
  558. esphome/components/sts3x/sensor.py +1 -1
  559. esphome/components/substitutions/__init__.py +2 -2
  560. esphome/components/sun/__init__.py +4 -4
  561. esphome/components/sun/sensor/__init__.py +4 -7
  562. esphome/components/sun/text_sensor/__init__.py +5 -4
  563. esphome/components/sun_gtil2/__init__.py +1 -1
  564. esphome/components/sun_gtil2/sensor.py +7 -6
  565. esphome/components/sun_gtil2/text_sensor.py +3 -2
  566. esphome/components/sx1509/__init__.py +5 -5
  567. esphome/components/sx1509/binary_sensor/__init__.py +3 -3
  568. esphome/components/sx1509/output/__init__.py +4 -3
  569. esphome/components/t6615/sensor.py +1 -1
  570. esphome/components/tca9548a/__init__.py +1 -1
  571. esphome/components/tcl112/climate.py +1 -1
  572. esphome/components/tcs34725/sensor.py +4 -4
  573. esphome/components/tee501/sensor.py +1 -1
  574. esphome/components/teleinfo/__init__.py +1 -1
  575. esphome/components/teleinfo/sensor/__init__.py +1 -7
  576. esphome/components/teleinfo/text_sensor/__init__.py +1 -1
  577. esphome/components/tem3200/sensor.py +1 -2
  578. esphome/components/template/alarm_control_panel/__init__.py +3 -10
  579. esphome/components/template/cover/__init__.py +4 -3
  580. esphome/components/template/datetime/__init__.py +8 -9
  581. esphome/components/template/event/__init__.py +2 -5
  582. esphome/components/template/fan/__init__.py +2 -6
  583. esphome/components/template/lock/__init__.py +3 -2
  584. esphome/components/template/number/__init__.py +3 -2
  585. esphome/components/template/output/__init__.py +4 -3
  586. esphome/components/template/select/__init__.py +3 -2
  587. esphome/components/template/sensor/__init__.py +4 -7
  588. esphome/components/template/switch/__init__.py +3 -2
  589. esphome/components/template/text/__init__.py +4 -3
  590. esphome/components/template/text_sensor/__init__.py +3 -2
  591. esphome/components/template/valve/__init__.py +3 -2
  592. esphome/components/time/real_time_clock.cpp +0 -4
  593. esphome/components/time/real_time_clock.h +4 -3
  594. esphome/components/time_based/cover.py +3 -3
  595. esphome/components/tlc59208f/__init__.py +1 -1
  596. esphome/components/tlc59208f/output.py +2 -1
  597. esphome/components/tlc5947/__init__.py +1 -1
  598. esphome/components/tlc5947/output/__init__.py +2 -1
  599. esphome/components/tlc5971/__init__.py +2 -8
  600. esphome/components/tlc5971/output/__init__.py +2 -1
  601. esphome/components/tm1621/display.py +3 -3
  602. esphome/components/tm1637/binary_sensor.py +1 -1
  603. esphome/components/tm1637/display.py +3 -3
  604. esphome/components/tm1651/__init__.py +4 -4
  605. esphome/components/tmp102/sensor.py +1 -1
  606. esphome/components/tmp1075/sensor.py +2 -2
  607. esphome/components/tmp117/sensor.py +1 -1
  608. esphome/components/tof10120/sensor.py +2 -2
  609. esphome/components/tormatic/cover.py +2 -6
  610. esphome/components/toshiba/climate.py +1 -1
  611. esphome/components/total_daily_energy/sensor.py +4 -4
  612. esphome/components/tsl2561/sensor.py +1 -1
  613. esphome/components/tsl2591/sensor.py +9 -9
  614. esphome/components/tt21100/binary_sensor/__init__.py +2 -2
  615. esphome/components/tt21100/touchscreen/__init__.py +2 -3
  616. esphome/components/ttp229_bsf/__init__.py +2 -2
  617. esphome/components/ttp229_bsf/binary_sensor.py +3 -2
  618. esphome/components/ttp229_lsf/__init__.py +1 -1
  619. esphome/components/ttp229_lsf/binary_sensor.py +3 -2
  620. esphome/components/tuya/__init__.py +3 -5
  621. esphome/components/tuya/binary_sensor/__init__.py +2 -2
  622. esphome/components/tuya/climate/__init__.py +6 -5
  623. esphome/components/tuya/cover/__init__.py +5 -4
  624. esphome/components/tuya/fan/__init__.py +3 -2
  625. esphome/components/tuya/light/__init__.py +9 -8
  626. esphome/components/tuya/number/__init__.py +6 -5
  627. esphome/components/tuya/select/__init__.py +4 -3
  628. esphome/components/tuya/sensor/__init__.py +3 -2
  629. esphome/components/tuya/switch/__init__.py +3 -2
  630. esphome/components/tuya/text_sensor/__init__.py +3 -2
  631. esphome/components/tx20/sensor.py +6 -6
  632. esphome/components/uart/__init__.py +20 -19
  633. esphome/components/uart/button/__init__.py +2 -1
  634. esphome/components/uart/switch/__init__.py +2 -1
  635. esphome/components/ufire_ise/sensor.py +2 -2
  636. esphome/components/uln2003/stepper.py +2 -2
  637. esphome/components/ultrasonic/sensor.py +4 -4
  638. esphome/components/uponor_smatrix/__init__.py +2 -6
  639. esphome/components/uponor_smatrix/climate/__init__.py +3 -3
  640. esphome/components/vbus/__init__.py +1 -1
  641. esphome/components/vbus/binary_sensor/__init__.py +7 -6
  642. esphome/components/vbus/sensor/__init__.py +7 -6
  643. esphome/components/veml3235/sensor.py +1 -1
  644. esphome/components/veml7700/sensor.py +1 -1
  645. esphome/components/version/text_sensor.py +2 -6
  646. esphome/components/vl53l0x/sensor.py +6 -6
  647. esphome/components/web_server_base/__init__.py +2 -2
  648. esphome/components/web_server_idf/__init__.py +1 -1
  649. esphome/components/weikai/__init__.py +1 -1
  650. esphome/components/whirlpool/climate.py +1 -1
  651. esphome/components/whynter/climate.py +1 -1
  652. esphome/components/wireguard/binary_sensor.py +1 -1
  653. esphome/components/wireguard/sensor.py +2 -5
  654. esphome/components/wireguard/text_sensor.py +2 -5
  655. esphome/components/wk2132_i2c/__init__.py +1 -1
  656. esphome/components/wk2132_spi/__init__.py +1 -2
  657. esphome/components/wk2168_i2c/__init__.py +3 -8
  658. esphome/components/wk2168_spi/__init__.py +3 -8
  659. esphome/components/wk2204_i2c/__init__.py +1 -1
  660. esphome/components/wk2204_spi/__init__.py +1 -1
  661. esphome/components/wk2212_i2c/__init__.py +3 -8
  662. esphome/components/wk2212_spi/__init__.py +3 -8
  663. esphome/components/wl_134/text_sensor.py +2 -4
  664. esphome/components/wled/__init__.py +2 -2
  665. esphome/components/x9c/output.py +4 -4
  666. esphome/components/xgzp68xx/sensor.py +5 -5
  667. esphome/components/xiaomi_ble/__init__.py +1 -1
  668. esphome/components/xiaomi_cgd1/sensor.py +3 -3
  669. esphome/components/xiaomi_cgdk2/sensor.py +3 -3
  670. esphome/components/xiaomi_cgg1/sensor.py +2 -2
  671. esphome/components/xiaomi_cgpr1/binary_sensor.py +6 -6
  672. esphome/components/xiaomi_gcls002/sensor.py +7 -7
  673. esphome/components/xiaomi_hhccjcy01/sensor.py +9 -9
  674. esphome/components/xiaomi_hhccjcy10/sensor.py +9 -9
  675. esphome/components/xiaomi_hhccpot002/sensor.py +7 -7
  676. esphome/components/xiaomi_jqjcy01ym/sensor.py +6 -6
  677. esphome/components/xiaomi_lywsd02/sensor.py +4 -4
  678. esphome/components/xiaomi_lywsd02mmc/sensor.py +5 -5
  679. esphome/components/xiaomi_lywsd03mmc/sensor.py +6 -6
  680. esphome/components/xiaomi_lywsdcgq/sensor.py +5 -5
  681. esphome/components/xiaomi_mhoc303/sensor.py +4 -4
  682. esphome/components/xiaomi_mhoc401/sensor.py +6 -6
  683. esphome/components/xiaomi_miscale/sensor.py +6 -6
  684. esphome/components/xiaomi_mjyd02yla/binary_sensor.py +8 -8
  685. esphome/components/xiaomi_mue4094rt/binary_sensor.py +2 -7
  686. esphome/components/xiaomi_rtcgq02lm/__init__.py +2 -3
  687. esphome/components/xiaomi_rtcgq02lm/binary_sensor.py +3 -3
  688. esphome/components/xiaomi_rtcgq02lm/sensor.py +3 -3
  689. esphome/components/xiaomi_wx08zm/binary_sensor.py +2 -3
  690. esphome/components/xl9535/__init__.py +2 -2
  691. esphome/components/yashima/climate.py +1 -1
  692. esphome/components/zhlt01/climate.py +1 -1
  693. esphome/components/zio_ultrasonic/sensor.py +2 -5
  694. esphome/components/zyaura/sensor.py +7 -7
  695. esphome/config_validation.py +0 -42
  696. esphome/const.py +3 -1
  697. esphome/core/__init__.py +0 -1
  698. esphome/core/component.cpp +3 -1
  699. esphome/core/component.h +15 -2
  700. esphome/core/config.py +4 -0
  701. esphome/core/defines.h +21 -0
  702. esphome/core/helpers.cpp +6 -7
  703. esphome/core/scheduler.cpp +34 -67
  704. esphome/core/scheduler.h +7 -17
  705. esphome/dashboard/status/mqtt.py +0 -2
  706. esphome/vscode.py +27 -8
  707. esphome/yaml_util.py +75 -39
  708. {esphome-2025.3.3.dist-info → esphome-2025.4.0.dist-info}/METADATA +45 -44
  709. {esphome-2025.3.3.dist-info → esphome-2025.4.0.dist-info}/RECORD +713 -706
  710. {esphome-2025.3.3.dist-info → esphome-2025.4.0.dist-info}/WHEEL +1 -1
  711. {esphome-2025.3.3.dist-info → esphome-2025.4.0.dist-info}/entry_points.txt +0 -0
  712. {esphome-2025.3.3.dist-info → esphome-2025.4.0.dist-info/licenses}/LICENSE +0 -0
  713. {esphome-2025.3.3.dist-info → esphome-2025.4.0.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,14 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import i2c, sensor
3
+ import esphome.config_validation as cv
4
4
  from esphome.const import (
5
5
  CONF_ID,
6
6
  CONF_INTERNAL_TEMPERATURE,
7
7
  CONF_TEMPERATURE,
8
8
  DEVICE_CLASS_TEMPERATURE,
9
+ ENTITY_CATEGORY_DIAGNOSTIC,
9
10
  STATE_CLASS_MEASUREMENT,
10
11
  UNIT_CELSIUS,
11
- ENTITY_CATEGORY_DIAGNOSTIC,
12
12
  )
13
13
 
14
14
  DEPENDENCIES = ["i2c"]
@@ -1,19 +1,19 @@
1
1
  import esphome.codegen as cg
2
+ from esphome.components import modbus, sensor
2
3
  import esphome.config_validation as cv
3
- from esphome.components import sensor, modbus
4
4
  from esphome.const import (
5
- CONF_ID,
6
5
  CONF_EC,
6
+ CONF_ID,
7
7
  CONF_PH,
8
8
  CONF_TEMPERATURE,
9
+ DEVICE_CLASS_EMPTY,
10
+ DEVICE_CLASS_TEMPERATURE,
9
11
  ICON_EMPTY,
10
12
  ICON_THERMOMETER,
13
+ STATE_CLASS_MEASUREMENT,
11
14
  UNIT_CELSIUS,
12
15
  UNIT_EMPTY,
13
16
  UNIT_PH,
14
- STATE_CLASS_MEASUREMENT,
15
- DEVICE_CLASS_EMPTY,
16
- DEVICE_CLASS_TEMPERATURE,
17
17
  )
18
18
 
19
19
  CODEOWNERS = ["@ssieb"]
@@ -1,7 +1,7 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import display
4
- from esphome.const import CONF_DIMENSIONS, CONF_POSITION, CONF_DATA
3
+ import esphome.config_validation as cv
4
+ from esphome.const import CONF_DATA, CONF_DIMENSIONS, CONF_POSITION
5
5
 
6
6
  CONF_USER_CHARACTERS = "user_characters"
7
7
 
@@ -1,14 +1,14 @@
1
- import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
1
  from esphome import pins
2
+ import esphome.codegen as cg
4
3
  from esphome.components import lcd_base
4
+ import esphome.config_validation as cv
5
5
  from esphome.const import (
6
6
  CONF_DATA_PINS,
7
7
  CONF_ENABLE_PIN,
8
- CONF_RS_PIN,
9
- CONF_RW_PIN,
10
8
  CONF_ID,
11
9
  CONF_LAMBDA,
10
+ CONF_RS_PIN,
11
+ CONF_RW_PIN,
12
12
  )
13
13
 
14
14
  AUTO_LOAD = ["lcd_base"]
@@ -1,17 +1,13 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
- from esphome.const import (
4
- CONF_ID,
5
- CONF_DIMENSIONS,
6
- CONF_DISPLAY_ID,
7
- )
8
- from esphome.core.entity_helpers import inherit_property_from
9
2
  from esphome.components import lcd_base
10
3
  from esphome.components.display_menu_base import (
11
4
  DISPLAY_MENU_BASE_SCHEMA,
12
5
  DisplayMenuComponent,
13
6
  display_menu_to_code,
14
7
  )
8
+ import esphome.config_validation as cv
9
+ from esphome.const import CONF_DIMENSIONS, CONF_DISPLAY_ID, CONF_ID
10
+ from esphome.core.entity_helpers import inherit_property_from
15
11
 
16
12
  CODEOWNERS = ["@numo68"]
17
13
 
@@ -1,6 +1,6 @@
1
1
  import esphome.codegen as cg
2
+ from esphome.components import i2c, lcd_base
2
3
  import esphome.config_validation as cv
3
- from esphome.components import lcd_base, i2c
4
4
  from esphome.const import CONF_ID, CONF_LAMBDA
5
5
 
6
6
  DEPENDENCIES = ["i2c"]
@@ -1,9 +1,9 @@
1
- import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
- from esphome.components import uart
4
- from esphome.const import CONF_ID, CONF_THROTTLE, CONF_TIMEOUT, CONF_PASSWORD
5
1
  from esphome import automation
6
2
  from esphome.automation import maybe_simple_id
3
+ import esphome.codegen as cg
4
+ from esphome.components import uart
5
+ import esphome.config_validation as cv
6
+ from esphome.const import CONF_ID, CONF_PASSWORD, CONF_THROTTLE, CONF_TIMEOUT
7
7
 
8
8
  DEPENDENCIES = ["uart"]
9
9
  CODEOWNERS = ["@sebcaps", "@regevbr"]
@@ -2,16 +2,17 @@ import esphome.codegen as cg
2
2
  from esphome.components import binary_sensor
3
3
  import esphome.config_validation as cv
4
4
  from esphome.const import (
5
+ CONF_HAS_MOVING_TARGET,
6
+ CONF_HAS_STILL_TARGET,
7
+ CONF_HAS_TARGET,
5
8
  DEVICE_CLASS_MOTION,
6
9
  DEVICE_CLASS_OCCUPANCY,
7
10
  DEVICE_CLASS_PRESENCE,
8
11
  ENTITY_CATEGORY_DIAGNOSTIC,
9
- ICON_MOTION_SENSOR,
10
12
  ICON_ACCOUNT,
11
- CONF_HAS_TARGET,
12
- CONF_HAS_MOVING_TARGET,
13
- CONF_HAS_STILL_TARGET,
13
+ ICON_MOTION_SENSOR,
14
14
  )
15
+
15
16
  from . import CONF_LD2410_ID, LD2410Component
16
17
 
17
18
  DEPENDENCIES = ["ld2410"]
@@ -5,12 +5,13 @@ from esphome.const import (
5
5
  CONF_FACTORY_RESET,
6
6
  CONF_RESTART,
7
7
  DEVICE_CLASS_RESTART,
8
- ENTITY_CATEGORY_DIAGNOSTIC,
9
8
  ENTITY_CATEGORY_CONFIG,
9
+ ENTITY_CATEGORY_DIAGNOSTIC,
10
+ ICON_DATABASE,
10
11
  ICON_RESTART,
11
12
  ICON_RESTART_ALERT,
12
- ICON_DATABASE,
13
13
  )
14
+
14
15
  from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
15
16
 
16
17
  QueryButton = ld2410_ns.class_("QueryButton", button.Button)
@@ -5,15 +5,16 @@ from esphome.const import (
5
5
  CONF_ID,
6
6
  CONF_TIMEOUT,
7
7
  DEVICE_CLASS_DISTANCE,
8
- DEVICE_CLASS_SIGNAL_STRENGTH,
9
8
  DEVICE_CLASS_ILLUMINANCE,
10
- UNIT_SECOND,
11
- UNIT_PERCENT,
9
+ DEVICE_CLASS_SIGNAL_STRENGTH,
12
10
  ENTITY_CATEGORY_CONFIG,
11
+ ICON_LIGHTBULB,
13
12
  ICON_MOTION_SENSOR,
14
13
  ICON_TIMELAPSE,
15
- ICON_LIGHTBULB,
14
+ UNIT_PERCENT,
15
+ UNIT_SECOND,
16
16
  )
17
+
17
18
  from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
18
19
 
19
20
  GateThresholdNumber = ld2410_ns.class_("GateThresholdNumber", number.Number)
@@ -2,13 +2,14 @@ import esphome.codegen as cg
2
2
  from esphome.components import select
3
3
  import esphome.config_validation as cv
4
4
  from esphome.const import (
5
- ENTITY_CATEGORY_CONFIG,
6
5
  CONF_BAUD_RATE,
7
- ICON_THERMOMETER,
8
- ICON_SCALE,
6
+ ENTITY_CATEGORY_CONFIG,
9
7
  ICON_LIGHTBULB,
10
8
  ICON_RULER,
9
+ ICON_SCALE,
10
+ ICON_THERMOMETER,
11
11
  )
12
+
12
13
  from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
13
14
 
14
15
  BaudRateSelect = ld2410_ns.class_("BaudRateSelect", select.Select)
@@ -2,17 +2,18 @@ import esphome.codegen as cg
2
2
  from esphome.components import sensor
3
3
  import esphome.config_validation as cv
4
4
  from esphome.const import (
5
- DEVICE_CLASS_DISTANCE,
6
- UNIT_CENTIMETER,
7
- UNIT_PERCENT,
8
5
  CONF_LIGHT,
6
+ DEVICE_CLASS_DISTANCE,
9
7
  DEVICE_CLASS_ILLUMINANCE,
10
8
  ENTITY_CATEGORY_DIAGNOSTIC,
11
- ICON_SIGNAL,
12
9
  ICON_FLASH,
13
- ICON_MOTION_SENSOR,
14
10
  ICON_LIGHTBULB,
11
+ ICON_MOTION_SENSOR,
12
+ ICON_SIGNAL,
13
+ UNIT_CENTIMETER,
14
+ UNIT_PERCENT,
15
15
  )
16
+
16
17
  from . import CONF_LD2410_ID, LD2410Component
17
18
 
18
19
  DEPENDENCIES = ["ld2410"]
@@ -3,10 +3,11 @@ from esphome.components import switch
3
3
  import esphome.config_validation as cv
4
4
  from esphome.const import (
5
5
  DEVICE_CLASS_SWITCH,
6
- ICON_BLUETOOTH,
7
6
  ENTITY_CATEGORY_CONFIG,
7
+ ICON_BLUETOOTH,
8
8
  ICON_PULSE,
9
9
  )
10
+
10
11
  from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
11
12
 
12
13
  BluetoothSwitch = ld2410_ns.class_("BluetoothSwitch", switch.Switch)
@@ -2,12 +2,13 @@ import esphome.codegen as cg
2
2
  from esphome.components import text_sensor
3
3
  import esphome.config_validation as cv
4
4
  from esphome.const import (
5
- ENTITY_CATEGORY_DIAGNOSTIC,
6
- CONF_VERSION,
7
5
  CONF_MAC_ADDRESS,
6
+ CONF_VERSION,
7
+ ENTITY_CATEGORY_DIAGNOSTIC,
8
8
  ICON_BLUETOOTH,
9
9
  ICON_CHIP,
10
10
  )
11
+
11
12
  from . import CONF_LD2410_ID, LD2410Component
12
13
 
13
14
  DEPENDENCIES = ["ld2410"]
@@ -1,6 +1,6 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import uart
3
+ import esphome.config_validation as cv
4
4
  from esphome.const import CONF_ID
5
5
 
6
6
  CODEOWNERS = ["@descipher"]
@@ -1,8 +1,9 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import binary_sensor
4
- from esphome.const import CONF_ID, DEVICE_CLASS_OCCUPANCY, CONF_HAS_TARGET
5
- from .. import ld2420_ns, LD2420Component, CONF_LD2420_ID
3
+ import esphome.config_validation as cv
4
+ from esphome.const import CONF_HAS_TARGET, CONF_ID, DEVICE_CLASS_OCCUPANCY
5
+
6
+ from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
6
7
 
7
8
  LD2420BinarySensor = ld2420_ns.class_(
8
9
  "LD2420BinarySensor", binary_sensor.BinarySensor, cg.Component
@@ -4,12 +4,13 @@ import esphome.config_validation as cv
4
4
  from esphome.const import (
5
5
  CONF_FACTORY_RESET,
6
6
  DEVICE_CLASS_RESTART,
7
- ENTITY_CATEGORY_DIAGNOSTIC,
8
7
  ENTITY_CATEGORY_CONFIG,
8
+ ENTITY_CATEGORY_DIAGNOSTIC,
9
+ ICON_DATABASE,
9
10
  ICON_RESTART,
10
11
  ICON_RESTART_ALERT,
11
- ICON_DATABASE,
12
12
  )
13
+
13
14
  from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
14
15
 
15
16
  LD2420ApplyConfigButton = ld2420_ns.class_("LD2420ApplyConfigButton", button.Button)
@@ -4,12 +4,13 @@ import esphome.config_validation as cv
4
4
  from esphome.const import (
5
5
  CONF_ID,
6
6
  DEVICE_CLASS_DISTANCE,
7
- UNIT_SECOND,
8
7
  ENTITY_CATEGORY_CONFIG,
9
8
  ICON_MOTION_SENSOR,
10
- ICON_TIMELAPSE,
11
9
  ICON_SCALE,
10
+ ICON_TIMELAPSE,
11
+ UNIT_SECOND,
12
12
  )
13
+
13
14
  from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
14
15
 
15
16
  LD2420TimeoutNumber = ld2420_ns.class_("LD2420TimeoutNumber", number.Number)
@@ -2,6 +2,7 @@ import esphome.codegen as cg
2
2
  from esphome.components import select
3
3
  import esphome.config_validation as cv
4
4
  from esphome.const import ENTITY_CATEGORY_CONFIG
5
+
5
6
  from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
6
7
 
7
8
  CONF_OPERATING_MODE = "operating_mode"
@@ -1,8 +1,9 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import sensor
3
+ import esphome.config_validation as cv
4
4
  from esphome.const import CONF_ID, DEVICE_CLASS_DISTANCE, UNIT_CENTIMETER
5
- from .. import ld2420_ns, LD2420Component, CONF_LD2420_ID
5
+
6
+ from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
6
7
 
7
8
  LD2420Sensor = ld2420_ns.class_("LD2420Sensor", sensor.Sensor, cg.Component)
8
9
 
@@ -1,13 +1,9 @@
1
1
  import esphome.codegen as cg
2
2
  from esphome.components import text_sensor
3
3
  import esphome.config_validation as cv
4
- from esphome.const import (
5
- CONF_ID,
6
- ENTITY_CATEGORY_DIAGNOSTIC,
7
- ICON_CHIP,
8
- )
4
+ from esphome.const import CONF_ID, ENTITY_CATEGORY_DIAGNOSTIC, ICON_CHIP
9
5
 
10
- from .. import ld2420_ns, LD2420Component, CONF_LD2420_ID
6
+ from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
11
7
 
12
8
  LD2420TextSensor = ld2420_ns.class_(
13
9
  "LD2420TextSensor", text_sensor.TextSensor, cg.Component
@@ -1,10 +1,7 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import uart
4
- from esphome.const import (
5
- CONF_ID,
6
- CONF_THROTTLE,
7
- )
3
+ import esphome.config_validation as cv
4
+ from esphome.const import CONF_ID, CONF_THROTTLE
8
5
 
9
6
  DEPENDENCIES = ["uart"]
10
7
  CODEOWNERS = ["@hareeshmu"]
@@ -1,12 +1,12 @@
1
- from esphome import pins, automation
1
+ from esphome import automation, pins
2
+ import esphome.codegen as cg
2
3
  from esphome.components import output
3
4
  import esphome.config_validation as cv
4
- import esphome.codegen as cg
5
5
  from esphome.const import (
6
- CONF_PHASE_ANGLE,
7
6
  CONF_CHANNEL,
8
7
  CONF_FREQUENCY,
9
8
  CONF_ID,
9
+ CONF_PHASE_ANGLE,
10
10
  CONF_PIN,
11
11
  )
12
12
 
@@ -1,6 +1,6 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import text_sensor
3
+ import esphome.config_validation as cv
4
4
  from esphome.const import (
5
5
  CONF_VERSION,
6
6
  ENTITY_CATEGORY_DIAGNOSTIC,
@@ -1,12 +1,8 @@
1
- from esphome import pins, automation
1
+ from esphome import automation, pins
2
+ import esphome.codegen as cg
2
3
  from esphome.components import output
3
4
  import esphome.config_validation as cv
4
- import esphome.codegen as cg
5
- from esphome.const import (
6
- CONF_FREQUENCY,
7
- CONF_ID,
8
- CONF_PIN,
9
- )
5
+ from esphome.const import CONF_FREQUENCY, CONF_ID, CONF_PIN
10
6
 
11
7
  DEPENDENCIES = ["libretiny"]
12
8
 
@@ -1,17 +1,15 @@
1
+ from esphome import automation, pins
1
2
  import esphome.codegen as cg
2
3
  import esphome.config_validation as cv
3
- from esphome import pins
4
- from esphome import automation
5
-
6
4
  from esphome.const import (
7
- CONF_READ_PIN,
5
+ CONF_CODE,
8
6
  CONF_ID,
9
- CONF_NAME,
10
- CONF_WRITE_PIN,
11
- CONF_REPEAT,
12
7
  CONF_INVERTED,
8
+ CONF_NAME,
13
9
  CONF_PULSE_LENGTH,
14
- CONF_CODE,
10
+ CONF_READ_PIN,
11
+ CONF_REPEAT,
12
+ CONF_WRITE_PIN,
15
13
  )
16
14
  from esphome.cpp_helpers import gpio_pin_expression
17
15
 
@@ -1,8 +1,7 @@
1
- import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
-
4
1
  from esphome import pins
2
+ import esphome.codegen as cg
5
3
  from esphome.components import i2c, touchscreen
4
+ import esphome.config_validation as cv
6
5
  from esphome.const import CONF_ID, CONF_INTERRUPT_PIN
7
6
 
8
7
  from .. import lilygo_t5_47_ns
@@ -1,6 +1,6 @@
1
1
  import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
2
  from esphome.components import i2c, sensor
3
+ import esphome.config_validation as cv
4
4
  from esphome.const import (
5
5
  CONF_AMBIENT_LIGHT,
6
6
  CONF_GAIN,
@@ -1,7 +1,7 @@
1
- import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
1
  from esphome import automation
2
+ import esphome.codegen as cg
4
3
  from esphome.components import i2c, sensor
4
+ import esphome.config_validation as cv
5
5
  from esphome.const import (
6
6
  CONF_ACTUAL_GAIN,
7
7
  CONF_ACTUAL_INTEGRATION_TIME,
@@ -1,7 +1,7 @@
1
- import esphome.codegen as cg
2
- import esphome.config_validation as cv
3
1
  from esphome import automation
2
+ import esphome.codegen as cg
4
3
  from esphome.components import i2c, sensor
4
+ import esphome.config_validation as cv
5
5
  from esphome.const import (
6
6
  CONF_ACTUAL_GAIN,
7
7
  CONF_ACTUAL_INTEGRATION_TIME,
@@ -10,6 +10,7 @@ from esphome.const import (
10
10
  CONF_GROUP,
11
11
  CONF_ID,
12
12
  CONF_LAMBDA,
13
+ CONF_ON_BOOT,
13
14
  CONF_ON_IDLE,
14
15
  CONF_PAGES,
15
16
  CONF_TIMEOUT,
@@ -38,19 +39,18 @@ from .lvcode import LvContext, LvglComponent, lvgl_static
38
39
  from .schemas import (
39
40
  DISP_BG_SCHEMA,
40
41
  FLEX_OBJ_SCHEMA,
42
+ FULL_STYLE_SCHEMA,
41
43
  GRID_CELL_SCHEMA,
42
44
  LAYOUT_SCHEMAS,
43
- STYLE_SCHEMA,
44
45
  WIDGET_TYPES,
45
46
  any_widget_schema,
46
47
  container_schema,
47
48
  create_modify_schema,
48
- grid_alignments,
49
49
  obj_schema,
50
50
  )
51
51
  from .styles import add_top_layer, styles_to_code, theme_to_code
52
52
  from .touchscreens import touchscreen_schema, touchscreens_to_code
53
- from .trigger import generate_triggers
53
+ from .trigger import add_on_boot_triggers, generate_triggers
54
54
  from .types import (
55
55
  FontEngine,
56
56
  IdleTrigger,
@@ -73,6 +73,7 @@ from .widgets.animimg import animimg_spec
73
73
  from .widgets.arc import arc_spec
74
74
  from .widgets.button import button_spec
75
75
  from .widgets.buttonmatrix import buttonmatrix_spec
76
+ from .widgets.canvas import canvas_spec
76
77
  from .widgets.checkbox import checkbox_spec
77
78
  from .widgets.dropdown import dropdown_spec
78
79
  from .widgets.img import img_spec
@@ -125,6 +126,7 @@ for w_type in (
125
126
  keyboard_spec,
126
127
  tileview_spec,
127
128
  qr_code_spec,
129
+ canvas_spec,
128
130
  ):
129
131
  WIDGET_TYPES[w_type.name] = w_type
130
132
 
@@ -365,6 +367,7 @@ async def to_code(configs):
365
367
  conf[CONF_TRIGGER_ID], lv_component, False
366
368
  )
367
369
  await build_automation(resume_trigger, [], conf)
370
+ await add_on_boot_triggers(config.get(CONF_ON_BOOT, ()))
368
371
 
369
372
  # This must be done after all widgets are created
370
373
  for comp in helpers.lvgl_components_required:
@@ -373,6 +376,7 @@ async def to_code(configs):
373
376
  add_define("LV_COLOR_SCREEN_TRANSP", "1")
374
377
  for use in helpers.lv_uses:
375
378
  add_define(f"LV_USE_{use.upper()}")
379
+ cg.add_define(f"USE_LVGL_{use.upper()}")
376
380
  lv_conf_h_file = CORE.relative_src_path(LV_CONF_FILENAME)
377
381
  write_file_if_changed(lv_conf_h_file, generate_lv_conf_h())
378
382
  cg.add_build_flag("-DLV_CONF_H=1")
@@ -418,15 +422,8 @@ LVGL_SCHEMA = cv.All(
418
422
  "big_endian", "little_endian"
419
423
  ),
420
424
  cv.Optional(df.CONF_STYLE_DEFINITIONS): cv.ensure_list(
421
- cv.Schema({cv.Required(CONF_ID): cv.declare_id(lv_style_t)})
422
- .extend(STYLE_SCHEMA)
423
- .extend(
424
- {
425
- cv.Optional(df.CONF_GRID_CELL_X_ALIGN): grid_alignments,
426
- cv.Optional(df.CONF_GRID_CELL_Y_ALIGN): grid_alignments,
427
- cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
428
- cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
429
- }
425
+ cv.Schema({cv.Required(CONF_ID): cv.declare_id(lv_style_t)}).extend(
426
+ FULL_STYLE_SCHEMA
430
427
  )
431
428
  ),
432
429
  cv.Optional(CONF_ON_IDLE): validate_automation(
@@ -4,6 +4,7 @@ from esphome import automation
4
4
  import esphome.codegen as cg
5
5
  import esphome.config_validation as cv
6
6
  from esphome.const import CONF_ACTION, CONF_GROUP, CONF_ID, CONF_TIMEOUT
7
+ from esphome.core import Lambda
7
8
  from esphome.cpp_generator import TemplateArguments, get_variable
8
9
  from esphome.cpp_types import nullptr
9
10
 
@@ -17,6 +18,7 @@ from .defines import (
17
18
  CONF_SHOW_SNOW,
18
19
  PARTS,
19
20
  literal,
21
+ static_cast,
20
22
  )
21
23
  from .lv_validation import lv_bool, lv_color, lv_image, opacity
22
24
  from .lvcode import (
@@ -32,7 +34,6 @@ from .lvcode import (
32
34
  lv_expr,
33
35
  lv_obj,
34
36
  lvgl_comp,
35
- static_cast,
36
37
  )
37
38
  from .schemas import DISP_BG_SCHEMA, LIST_ACTION_SCHEMA, LVGL_SCHEMA, base_update_schema
38
39
  from .types import (
@@ -64,7 +65,14 @@ async def action_to_code(
64
65
  action_id,
65
66
  template_arg,
66
67
  args,
68
+ config=None,
67
69
  ):
70
+ # Ensure all required ids have been processed, so our LambdaContext doesn't get context-switched.
71
+ if config:
72
+ for lamb in config.values():
73
+ if isinstance(lamb, Lambda):
74
+ for id_ in lamb.requires_ids:
75
+ await get_variable(id_)
68
76
  await wait_for_widgets()
69
77
  async with LambdaContext(parameters=args, where=action_id) as context:
70
78
  for widget in widgets:
@@ -84,7 +92,9 @@ async def update_to_code(config, action_id, template_arg, args):
84
92
  lv.event_send(widget.obj, UPDATE_EVENT, nullptr)
85
93
 
86
94
  widgets = await get_widgets(config[CONF_ID])
87
- return await action_to_code(widgets, do_update, action_id, template_arg, args)
95
+ return await action_to_code(
96
+ widgets, do_update, action_id, template_arg, args, config
97
+ )
88
98
 
89
99
 
90
100
  @automation.register_condition(
@@ -348,4 +358,6 @@ async def obj_update_to_code(config, action_id, template_arg, args):
348
358
  await set_obj_properties(widget, config)
349
359
 
350
360
  widgets = await get_widgets(config[CONF_ID])
351
- return await action_to_code(widgets, do_update, action_id, template_arg, args)
361
+ return await action_to_code(
362
+ widgets, do_update, action_id, template_arg, args, config
363
+ )
@@ -29,12 +29,16 @@ def add_define(macro, value="1"):
29
29
  lv_defines[macro] = value
30
30
 
31
31
 
32
- def literal(arg):
32
+ def literal(arg) -> MockObj:
33
33
  if isinstance(arg, str):
34
34
  return MockObj(arg)
35
35
  return arg
36
36
 
37
37
 
38
+ def static_cast(type, value):
39
+ return literal(f"static_cast<{type}>({value})")
40
+
41
+
38
42
  def call_lambda(lamb: LambdaExpression):
39
43
  expr = lamb.content.strip()
40
44
  if expr.startswith("return") and expr.endswith(";"):
@@ -416,7 +420,6 @@ CONF_CHANGE_RATE = "change_rate"
416
420
  CONF_CLOSE_BUTTON = "close_button"
417
421
  CONF_COLOR_DEPTH = "color_depth"
418
422
  CONF_CONTROL = "control"
419
- CONF_DEFAULT = "default"
420
423
  CONF_DEFAULT_FONT = "default_font"
421
424
  CONF_DEFAULT_GROUP = "default_group"
422
425
  CONF_DIR = "dir"
@@ -18,6 +18,7 @@ from .helpers import lvgl_components_required, requires_component
18
18
  from .lvcode import lv, lv_add, lv_assign, lv_expr, lv_Pvariable
19
19
  from .schemas import ENCODER_SCHEMA
20
20
  from .types import lv_group_t, lv_indev_type_t, lv_key_t
21
+ from .widgets import get_widgets
21
22
 
22
23
  ENCODERS_CONFIG = cv.ensure_list(
23
24
  ENCODER_SCHEMA.extend(
@@ -76,5 +77,5 @@ async def encoders_to_code(var, config, default_group):
76
77
  async def initial_focus_to_code(config):
77
78
  for enc_conf in config[CONF_ENCODERS]:
78
79
  if default_focus := enc_conf.get(CONF_INITIAL_FOCUS):
79
- obj = await cg.get_variable(default_focus)
80
- lv.group_focus_obj(obj)
80
+ widget = await get_widgets(default_focus)
81
+ lv.group_focus_obj(widget[0].obj)