esphome 2025.7.4__py3-none-any.whl → 2025.8.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.

Potentially problematic release.


This version of esphome might be problematic. Click here for more details.

Files changed (754) hide show
  1. esphome/__main__.py +189 -82
  2. esphome/automation.py +2 -4
  3. esphome/build_gen/__init__.py +0 -0
  4. esphome/build_gen/platformio.py +102 -0
  5. esphome/components/a4988/a4988.cpp +0 -1
  6. esphome/components/absolute_humidity/absolute_humidity.cpp +0 -2
  7. esphome/components/absolute_humidity/sensor.py +2 -2
  8. esphome/components/adc/__init__.py +123 -85
  9. esphome/components/adc/adc_sensor.h +98 -35
  10. esphome/components/adc/adc_sensor_common.cpp +10 -4
  11. esphome/components/adc/adc_sensor_esp32.cpp +291 -123
  12. esphome/components/adc/adc_sensor_esp8266.cpp +1 -4
  13. esphome/components/adc/adc_sensor_libretiny.cpp +1 -2
  14. esphome/components/adc/adc_sensor_rp2040.cpp +1 -2
  15. esphome/components/adc/adc_sensor_zephyr.cpp +207 -0
  16. esphome/components/adc/sensor.py +61 -27
  17. esphome/components/adc128s102/adc128s102.cpp +1 -4
  18. esphome/components/ade7880/sensor.py +75 -49
  19. esphome/components/ads1115/ads1115.cpp +0 -1
  20. esphome/components/ads1118/ads1118.cpp +0 -1
  21. esphome/components/ags10/ags10.cpp +0 -4
  22. esphome/components/aht10/aht10.cpp +0 -4
  23. esphome/components/aic3204/aic3204.cpp +0 -2
  24. esphome/components/airthings_wave_plus/__init__.py +1 -1
  25. esphome/components/airthings_wave_plus/airthings_wave_plus.cpp +22 -4
  26. esphome/components/airthings_wave_plus/airthings_wave_plus.h +10 -1
  27. esphome/components/airthings_wave_plus/sensor.py +55 -28
  28. esphome/components/alarm_control_panel/__init__.py +4 -9
  29. esphome/components/am2315c/am2315c.cpp +0 -2
  30. esphome/components/am2320/am2320.cpp +0 -1
  31. esphome/components/animation/__init__.py +14 -11
  32. esphome/components/apds9306/apds9306.cpp +0 -4
  33. esphome/components/apds9960/apds9960.cpp +0 -1
  34. esphome/components/api/__init__.py +29 -4
  35. esphome/components/api/api_connection.cpp +378 -401
  36. esphome/components/api/api_connection.h +112 -56
  37. esphome/components/api/api_frame_helper.cpp +69 -896
  38. esphome/components/api/api_frame_helper.h +31 -126
  39. esphome/components/api/api_frame_helper_noise.cpp +583 -0
  40. esphome/components/api/api_frame_helper_noise.h +68 -0
  41. esphome/components/api/api_frame_helper_plaintext.cpp +290 -0
  42. esphome/components/api/api_frame_helper_plaintext.h +53 -0
  43. esphome/components/api/api_noise_context.h +2 -4
  44. esphome/components/api/api_pb2.cpp +1601 -1808
  45. esphome/components/api/api_pb2.h +367 -323
  46. esphome/components/api/api_pb2_dump.cpp +1137 -3466
  47. esphome/components/api/api_pb2_includes.h +34 -0
  48. esphome/components/api/api_pb2_service.cpp +94 -105
  49. esphome/components/api/api_pb2_service.h +27 -16
  50. esphome/components/api/api_server.cpp +18 -17
  51. esphome/components/api/api_server.h +8 -5
  52. esphome/components/api/client.py +16 -8
  53. esphome/components/api/custom_api_device.h +68 -14
  54. esphome/components/api/homeassistant_service.h +24 -19
  55. esphome/components/api/list_entities.cpp +3 -5
  56. esphome/components/api/list_entities.h +2 -4
  57. esphome/components/api/proto.cpp +3 -5
  58. esphome/components/api/proto.h +239 -274
  59. esphome/components/api/subscribe_state.cpp +2 -4
  60. esphome/components/api/subscribe_state.h +2 -4
  61. esphome/components/api/user_services.cpp +2 -4
  62. esphome/components/api/user_services.h +8 -8
  63. esphome/components/as3935/as3935.cpp +0 -2
  64. esphome/components/as3935_spi/as3935_spi.cpp +0 -2
  65. esphome/components/as5600/__init__.py +1 -1
  66. esphome/components/as5600/as5600.cpp +0 -2
  67. esphome/components/as5600/sensor/__init__.py +0 -1
  68. esphome/components/as7341/as7341.cpp +0 -1
  69. esphome/components/async_tcp/__init__.py +1 -1
  70. esphome/components/at581x/at581x.cpp +1 -1
  71. esphome/components/atm90e26/atm90e26.cpp +0 -1
  72. esphome/components/atm90e32/atm90e32.cpp +488 -118
  73. esphome/components/atm90e32/atm90e32.h +44 -5
  74. esphome/components/audio/audio.h +2 -2
  75. esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +0 -2
  76. esphome/components/beken_spi_led_strip/led_strip.cpp +0 -2
  77. esphome/components/bh1750/bh1750.cpp +0 -1
  78. esphome/components/binary_sensor/__init__.py +14 -12
  79. esphome/components/ble_client/__init__.py +4 -7
  80. esphome/components/bluetooth_proxy/__init__.py +40 -3
  81. esphome/components/bluetooth_proxy/bluetooth_connection.cpp +387 -82
  82. esphome/components/bluetooth_proxy/bluetooth_connection.h +16 -5
  83. esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +102 -311
  84. esphome/components/bluetooth_proxy/bluetooth_proxy.h +30 -14
  85. esphome/components/bme280_base/bme280_base.cpp +15 -16
  86. esphome/components/bme680/bme680.cpp +2 -3
  87. esphome/components/bme680_bsec/bme680_bsec.cpp +0 -2
  88. esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +0 -2
  89. esphome/components/bmi160/bmi160.cpp +0 -1
  90. esphome/components/bmp085/bmp085.cpp +0 -1
  91. esphome/components/bmp280_base/bmp280_base.cpp +13 -14
  92. esphome/components/bmp3xx_base/bmp3xx_base.cpp +0 -1
  93. esphome/components/bmp581/bmp581.cpp +0 -2
  94. esphome/components/bp1658cj/bp1658cj.cpp +0 -1
  95. esphome/components/bp5758d/bp5758d.cpp +0 -1
  96. esphome/components/button/__init__.py +0 -1
  97. esphome/components/canbus/__init__.py +2 -3
  98. esphome/components/canbus/canbus.cpp +0 -1
  99. esphome/components/cap1188/cap1188.cpp +0 -2
  100. esphome/components/captive_portal/__init__.py +1 -1
  101. esphome/components/cd74hc4067/cd74hc4067.cpp +0 -2
  102. esphome/components/ch422g/ch422g.cpp +0 -1
  103. esphome/components/chsc6x/chsc6x_touchscreen.cpp +0 -3
  104. esphome/components/climate/__init__.py +0 -1
  105. esphome/components/climate/climate_traits.h +24 -0
  106. esphome/components/cm1106/cm1106.cpp +0 -1
  107. esphome/components/const/__init__.py +6 -0
  108. esphome/components/cover/__init__.py +0 -1
  109. esphome/components/cover/cover.cpp +9 -13
  110. esphome/components/cs5460a/cs5460a.cpp +0 -2
  111. esphome/components/cse7761/cse7761.cpp +0 -1
  112. esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +0 -2
  113. esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +0 -2
  114. esphome/components/dac7678/dac7678_output.cpp +0 -2
  115. esphome/components/dallas_temp/dallas_temp.cpp +0 -1
  116. esphome/components/datetime/__init__.py +0 -2
  117. esphome/components/debug/__init__.py +15 -1
  118. esphome/components/debug/debug_zephyr.cpp +281 -0
  119. esphome/components/debug/sensor.py +2 -1
  120. esphome/components/deep_sleep/deep_sleep_component.cpp +0 -1
  121. esphome/components/deep_sleep/deep_sleep_esp32.cpp +20 -1
  122. esphome/components/dfrobot_sen0395/__init__.py +1 -2
  123. esphome/components/dht/dht.cpp +0 -1
  124. esphome/components/dht12/dht12.cpp +0 -1
  125. esphome/components/display/__init__.py +16 -3
  126. esphome/components/display_menu_base/__init__.py +1 -1
  127. esphome/components/dps310/dps310.cpp +0 -2
  128. esphome/components/ds1307/ds1307.cpp +0 -1
  129. esphome/components/ds2484/ds2484.cpp +0 -1
  130. esphome/components/duty_cycle/duty_cycle_sensor.cpp +0 -1
  131. esphome/components/ee895/ee895.cpp +0 -1
  132. esphome/components/ektf2232/touchscreen/ektf2232.cpp +0 -1
  133. esphome/components/emc2101/emc2101.cpp +0 -2
  134. esphome/components/ens160_base/ens160_base.cpp +0 -2
  135. esphome/components/ens210/ens210.cpp +0 -1
  136. esphome/components/es7210/es7210.cpp +0 -2
  137. esphome/components/es7243e/es7243e.cpp +0 -2
  138. esphome/components/es8156/es8156.cpp +0 -2
  139. esphome/components/es8311/es8311.cpp +0 -2
  140. esphome/components/es8388/es8388.cpp +0 -2
  141. esphome/components/esp32/__init__.py +199 -58
  142. esphome/components/esp32/boards.py +17 -0
  143. esphome/components/esp32/gpio.cpp +0 -1
  144. esphome/components/esp32/gpio.py +1 -2
  145. esphome/components/esp32/gpio_esp32_h2.py +2 -7
  146. esphome/components/esp32/gpio_esp32_p4.py +2 -7
  147. esphome/components/esp32/post_build.py.script +112 -61
  148. esphome/components/esp32_ble/__init__.py +40 -2
  149. esphome/components/esp32_ble/ble.cpp +12 -8
  150. esphome/components/esp32_ble/ble.h +18 -18
  151. esphome/components/esp32_ble/ble_advertising.cpp +5 -5
  152. esphome/components/esp32_ble/ble_advertising.h +7 -5
  153. esphome/components/esp32_ble/ble_event.h +2 -4
  154. esphome/components/esp32_ble/ble_scan_result.h +2 -4
  155. esphome/components/esp32_ble/ble_uuid.cpp +5 -5
  156. esphome/components/esp32_ble/ble_uuid.h +6 -5
  157. esphome/components/esp32_ble_beacon/__init__.py +4 -0
  158. esphome/components/esp32_ble_client/__init__.py +1 -1
  159. esphome/components/esp32_ble_client/ble_characteristic.cpp +4 -4
  160. esphome/components/esp32_ble_client/ble_characteristic.h +6 -4
  161. esphome/components/esp32_ble_client/ble_client_base.cpp +155 -104
  162. esphome/components/esp32_ble_client/ble_client_base.h +17 -6
  163. esphome/components/esp32_ble_client/ble_descriptor.h +6 -4
  164. esphome/components/esp32_ble_client/ble_service.cpp +4 -4
  165. esphome/components/esp32_ble_client/ble_service.h +6 -4
  166. esphome/components/esp32_ble_server/__init__.py +15 -12
  167. esphome/components/esp32_ble_tracker/__init__.py +79 -11
  168. esphome/components/esp32_ble_tracker/automation.h +4 -4
  169. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +264 -261
  170. esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +103 -37
  171. esphome/components/esp32_camera/__init__.py +13 -1
  172. esphome/components/esp32_camera/esp32_camera.cpp +7 -2
  173. esphome/components/esp32_camera/esp32_camera.h +1 -0
  174. esphome/components/esp32_dac/esp32_dac.cpp +3 -19
  175. esphome/components/esp32_dac/esp32_dac.h +4 -8
  176. esphome/components/esp32_rmt_led_strip/led_strip.cpp +1 -6
  177. esphome/components/esp32_rmt_led_strip/light.py +1 -1
  178. esphome/components/esp32_touch/__init__.py +2 -3
  179. esphome/components/esp32_touch/esp32_touch.h +9 -6
  180. esphome/components/esp32_touch/esp32_touch_common.cpp +2 -0
  181. esphome/components/esp32_touch/esp32_touch_v1.cpp +7 -9
  182. esphome/components/esp32_touch/esp32_touch_v2.cpp +10 -6
  183. esphome/components/esp8266/__init__.py +3 -1
  184. esphome/components/esp8266_pwm/esp8266_pwm.cpp +0 -1
  185. esphome/components/esphome/ota/__init__.py +1 -2
  186. esphome/components/esphome/ota/ota_esphome.cpp +150 -77
  187. esphome/components/esphome/ota/ota_esphome.h +8 -1
  188. esphome/components/espnow/__init__.py +309 -0
  189. esphome/components/espnow/automation.h +175 -0
  190. esphome/components/espnow/espnow_component.cpp +468 -0
  191. esphome/components/espnow/espnow_component.h +183 -0
  192. esphome/components/espnow/espnow_err.h +19 -0
  193. esphome/components/espnow/espnow_packet.h +166 -0
  194. esphome/components/ethernet/__init__.py +7 -1
  195. esphome/components/ethernet/esp_eth_phy_jl1101.c +5 -0
  196. esphome/components/ethernet/ethernet_component.cpp +0 -1
  197. esphome/components/ethernet/ethernet_component.h +4 -0
  198. esphome/components/ethernet_info/ethernet_info_text_sensor.h +0 -3
  199. esphome/components/event/__init__.py +0 -1
  200. esphome/components/factory_reset/__init__.py +92 -0
  201. esphome/components/factory_reset/factory_reset.cpp +76 -0
  202. esphome/components/factory_reset/factory_reset.h +43 -0
  203. esphome/components/fan/__init__.py +0 -1
  204. esphome/components/fan/fan_traits.h +16 -0
  205. esphome/components/fastled_base/fastled_light.cpp +0 -1
  206. esphome/components/fastled_spi/light.py +1 -3
  207. esphome/components/fingerprint_grow/fingerprint_grow.cpp +0 -2
  208. esphome/components/font/__init__.py +9 -1
  209. esphome/components/fs3000/fs3000.cpp +0 -2
  210. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +0 -2
  211. esphome/components/ft63x6/ft63x6.cpp +0 -1
  212. esphome/components/gdk101/gdk101.cpp +0 -1
  213. esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +0 -1
  214. esphome/components/gl_r01_i2c/sensor.py +1 -1
  215. esphome/components/gpio/one_wire/gpio_one_wire.cpp +0 -1
  216. esphome/components/gpio/switch/gpio_switch.cpp +0 -2
  217. esphome/components/gpio_expander/cached_gpio.h +24 -15
  218. esphome/components/gps/__init__.py +6 -2
  219. esphome/components/gps/gps.cpp +50 -49
  220. esphome/components/gps/gps.h +4 -8
  221. esphome/components/gps/time/gps_time.cpp +3 -9
  222. esphome/components/gps/time/gps_time.h +4 -7
  223. esphome/components/graph/__init__.py +1 -1
  224. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +0 -1
  225. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +0 -1
  226. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +21 -12
  227. esphome/components/gt911/touchscreen/gt911_touchscreen.h +26 -2
  228. esphome/components/haier/climate.py +5 -10
  229. esphome/components/haier/haier_base.cpp +0 -1
  230. esphome/components/hbridge/switch/hbridge_switch.cpp +0 -2
  231. esphome/components/hdc1080/hdc1080.cpp +0 -2
  232. esphome/components/heatpumpir/climate.py +2 -2
  233. esphome/components/hlw8012/hlw8012.cpp +0 -1
  234. esphome/components/hm3301/hm3301.cpp +0 -1
  235. esphome/components/hmc5883l/hmc5883l.cpp +0 -1
  236. esphome/components/homeassistant/__init__.py +1 -0
  237. esphome/components/homeassistant/number/__init__.py +1 -0
  238. esphome/components/homeassistant/number/homeassistant_number.cpp +11 -7
  239. esphome/components/homeassistant/switch/__init__.py +1 -0
  240. esphome/components/homeassistant/switch/homeassistant_switch.cpp +9 -5
  241. esphome/components/honeywellabp/honeywellabp.cpp +1 -4
  242. esphome/components/host/__init__.py +2 -0
  243. esphome/components/hte501/hte501.cpp +0 -1
  244. esphome/components/http_request/__init__.py +2 -3
  245. esphome/components/http_request/http_request_idf.cpp +2 -2
  246. esphome/components/htu21d/htu21d.cpp +0 -2
  247. esphome/components/htu31d/htu31d.cpp +0 -2
  248. esphome/components/hx711/hx711.cpp +0 -1
  249. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +0 -1
  250. esphome/components/hydreon_rgxx/sensor.py +4 -5
  251. esphome/components/i2c/i2c_bus.h +1 -1
  252. esphome/components/i2c/i2c_bus_arduino.cpp +1 -2
  253. esphome/components/i2c/i2c_bus_esp_idf.cpp +192 -17
  254. esphome/components/i2c/i2c_bus_esp_idf.h +11 -1
  255. esphome/components/i2s_audio/__init__.py +6 -5
  256. esphome/components/i2s_audio/i2s_audio.cpp +0 -2
  257. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +1 -4
  258. esphome/components/i2s_audio/microphone/__init__.py +4 -6
  259. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +46 -19
  260. esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -3
  261. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +273 -269
  262. esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +19 -34
  263. esphome/components/ili9xxx/display.py +4 -3
  264. esphome/components/ili9xxx/ili9xxx_display.cpp +0 -2
  265. esphome/components/image/__init__.py +123 -92
  266. esphome/components/improv_serial/__init__.py +7 -8
  267. esphome/components/ina219/ina219.cpp +0 -1
  268. esphome/components/ina226/ina226.cpp +0 -2
  269. esphome/components/ina260/ina260.cpp +0 -2
  270. esphome/components/ina2xx_base/__init__.py +2 -5
  271. esphome/components/ina2xx_base/ina2xx_base.cpp +0 -2
  272. esphome/components/ina3221/ina3221.cpp +0 -1
  273. esphome/components/internal_temperature/internal_temperature.cpp +0 -2
  274. esphome/components/interval/interval.h +5 -9
  275. esphome/components/json/__init__.py +1 -1
  276. esphome/components/kmeteriso/kmeteriso.cpp +0 -2
  277. esphome/components/lc709203f/lc709203f.cpp +0 -2
  278. esphome/components/lcd_gpio/display.py +1 -3
  279. esphome/components/lcd_gpio/gpio_lcd_display.cpp +0 -1
  280. esphome/components/lcd_pcf8574/pcf8574_display.cpp +0 -1
  281. esphome/components/ld2410/__init__.py +4 -6
  282. esphome/components/ld2410/binary_sensor.py +4 -0
  283. esphome/components/ld2410/ld2410.cpp +56 -100
  284. esphome/components/ld2410/ld2410.h +17 -15
  285. esphome/components/ld2410/sensor.py +24 -10
  286. esphome/components/ld2412/__init__.py +46 -0
  287. esphome/components/ld2412/binary_sensor.py +70 -0
  288. esphome/components/ld2412/button/__init__.py +74 -0
  289. esphome/components/ld2412/button/factory_reset_button.cpp +9 -0
  290. esphome/components/ld2412/button/factory_reset_button.h +18 -0
  291. esphome/components/ld2412/button/query_button.cpp +9 -0
  292. esphome/components/ld2412/button/query_button.h +18 -0
  293. esphome/components/ld2412/button/restart_button.cpp +9 -0
  294. esphome/components/ld2412/button/restart_button.h +18 -0
  295. esphome/components/ld2412/button/start_dynamic_background_correction_button.cpp +11 -0
  296. esphome/components/ld2412/button/start_dynamic_background_correction_button.h +18 -0
  297. esphome/components/ld2412/ld2412.cpp +861 -0
  298. esphome/components/ld2412/ld2412.h +141 -0
  299. esphome/components/ld2412/number/__init__.py +126 -0
  300. esphome/components/ld2412/number/gate_threshold_number.cpp +14 -0
  301. esphome/components/ld2412/number/gate_threshold_number.h +19 -0
  302. esphome/components/ld2412/number/light_threshold_number.cpp +12 -0
  303. esphome/components/ld2412/number/light_threshold_number.h +18 -0
  304. esphome/components/ld2412/number/max_distance_timeout_number.cpp +12 -0
  305. esphome/components/ld2412/number/max_distance_timeout_number.h +18 -0
  306. esphome/components/ld2412/select/__init__.py +82 -0
  307. esphome/components/ld2412/select/baud_rate_select.cpp +12 -0
  308. esphome/components/ld2412/select/baud_rate_select.h +18 -0
  309. esphome/components/ld2412/select/distance_resolution_select.cpp +12 -0
  310. esphome/components/ld2412/select/distance_resolution_select.h +18 -0
  311. esphome/components/ld2412/select/light_out_control_select.cpp +12 -0
  312. esphome/components/ld2412/select/light_out_control_select.h +18 -0
  313. esphome/components/ld2412/sensor.py +124 -0
  314. esphome/components/ld2412/switch/__init__.py +45 -0
  315. esphome/components/ld2412/switch/bluetooth_switch.cpp +12 -0
  316. esphome/components/ld2412/switch/bluetooth_switch.h +18 -0
  317. esphome/components/ld2412/switch/engineering_mode_switch.cpp +12 -0
  318. esphome/components/ld2412/switch/engineering_mode_switch.h +18 -0
  319. esphome/components/ld2412/text_sensor.py +34 -0
  320. esphome/components/ld2420/ld2420.cpp +0 -1
  321. esphome/components/ld2450/__init__.py +3 -4
  322. esphome/components/ld2450/binary_sensor.py +3 -0
  323. esphome/components/ld2450/ld2450.cpp +77 -165
  324. esphome/components/ld2450/ld2450.h +26 -54
  325. esphome/components/ld2450/sensor.py +120 -6
  326. esphome/components/ld2450/text_sensor.py +5 -4
  327. esphome/components/ld24xx/__init__.py +1 -0
  328. esphome/components/ld24xx/ld24xx.h +65 -0
  329. esphome/components/ledc/ledc_output.cpp +0 -1
  330. esphome/components/libretiny/__init__.py +2 -0
  331. esphome/components/light/__init__.py +0 -1
  332. esphome/components/light/effects.py +70 -45
  333. esphome/components/light/light_call.cpp +101 -66
  334. esphome/components/light/light_color_values.h +16 -11
  335. esphome/components/light/light_json_schema.cpp +46 -44
  336. esphome/components/light/light_state.cpp +8 -11
  337. esphome/components/light/light_traits.h +17 -0
  338. esphome/components/lightwaverf/lightwaverf.cpp +0 -2
  339. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +0 -1
  340. esphome/components/lock/__init__.py +0 -1
  341. esphome/components/logger/__init__.py +31 -9
  342. esphome/components/logger/logger.cpp +12 -7
  343. esphome/components/logger/logger.h +25 -14
  344. esphome/components/logger/logger_esp32.cpp +2 -7
  345. esphome/components/logger/logger_esp8266.cpp +2 -4
  346. esphome/components/logger/logger_host.cpp +2 -4
  347. esphome/components/logger/logger_libretiny.cpp +2 -4
  348. esphome/components/logger/logger_rp2040.cpp +2 -4
  349. esphome/components/logger/logger_zephyr.cpp +86 -0
  350. esphome/components/logger/select/logger_level_select.cpp +2 -4
  351. esphome/components/logger/select/logger_level_select.h +2 -4
  352. esphome/components/logger/task_log_buffer.cpp +2 -4
  353. esphome/components/logger/task_log_buffer.h +2 -4
  354. esphome/components/lps22/sensor.py +5 -5
  355. esphome/components/ltr390/ltr390.cpp +0 -2
  356. esphome/components/ltr501/ltr501.cpp +0 -1
  357. esphome/components/ltr_als_ps/ltr_als_ps.cpp +0 -1
  358. esphome/components/lvgl/__init__.py +14 -13
  359. esphome/components/lvgl/automation.py +2 -4
  360. esphome/components/lvgl/defines.py +0 -2
  361. esphome/components/lvgl/helpers.py +1 -1
  362. esphome/components/lvgl/lv_validation.py +7 -4
  363. esphome/components/lvgl/lvgl_esphome.cpp +2 -3
  364. esphome/components/lvgl/styles.py +2 -2
  365. esphome/components/lvgl/types.py +1 -1
  366. esphome/components/lvgl/widgets/__init__.py +2 -2
  367. esphome/components/lvgl/widgets/arc.py +14 -11
  368. esphome/components/lvgl/widgets/buttonmatrix.py +1 -1
  369. esphome/components/lvgl/widgets/qrcode.py +7 -7
  370. esphome/components/lvgl/widgets/spinner.py +6 -6
  371. esphome/components/lvgl/widgets/switch.py +2 -2
  372. esphome/components/lvgl/widgets/tabview.py +3 -3
  373. esphome/components/lvgl/widgets/tileview.py +15 -7
  374. esphome/components/m5stack_8angle/m5stack_8angle.cpp +0 -1
  375. esphome/components/matrix_keypad/__init__.py +4 -3
  376. esphome/components/max17043/max17043.cpp +0 -2
  377. esphome/components/max31855/max31855.cpp +1 -4
  378. esphome/components/max31856/max31856.cpp +0 -4
  379. esphome/components/max31865/max31865.cpp +0 -1
  380. esphome/components/max44009/max44009.cpp +0 -1
  381. esphome/components/max6675/max6675.cpp +1 -4
  382. esphome/components/max6956/max6956.cpp +0 -1
  383. esphome/components/max7219/max7219.cpp +0 -1
  384. esphome/components/max7219digit/display.py +1 -1
  385. esphome/components/max7219digit/max7219digit.cpp +0 -1
  386. esphome/components/max9611/max9611.cpp +0 -1
  387. esphome/components/mcp23008/__init__.py +1 -1
  388. esphome/components/mcp23008/mcp23008.cpp +0 -1
  389. esphome/components/mcp23016/mcp23016.cpp +0 -1
  390. esphome/components/mcp23017/__init__.py +1 -1
  391. esphome/components/mcp23017/mcp23017.cpp +0 -1
  392. esphome/components/mcp23s08/__init__.py +1 -1
  393. esphome/components/mcp23s08/mcp23s08.cpp +0 -1
  394. esphome/components/mcp23s17/__init__.py +1 -1
  395. esphome/components/mcp23s17/mcp23s17.cpp +0 -1
  396. esphome/components/mcp23x08_base/__init__.py +2 -0
  397. esphome/components/mcp23x08_base/mcp23x08_base.cpp +9 -7
  398. esphome/components/mcp23x08_base/mcp23x08_base.h +9 -4
  399. esphome/components/mcp23x17_base/__init__.py +2 -0
  400. esphome/components/mcp23x17_base/mcp23x17_base.cpp +20 -7
  401. esphome/components/mcp23x17_base/mcp23x17_base.h +9 -4
  402. esphome/components/mcp23xxx_base/__init__.py +11 -5
  403. esphome/components/mcp23xxx_base/mcp23xxx_base.cpp +15 -12
  404. esphome/components/mcp23xxx_base/mcp23xxx_base.h +8 -7
  405. esphome/components/mcp3008/mcp3008.cpp +1 -4
  406. esphome/components/mcp3204/mcp3204.cpp +1 -4
  407. esphome/components/mcp4461/mcp4461.cpp +0 -1
  408. esphome/components/mcp4725/mcp4725.cpp +0 -1
  409. esphome/components/mcp4728/mcp4728.cpp +0 -1
  410. esphome/components/mcp9600/mcp9600.cpp +0 -2
  411. esphome/components/mcp9808/mcp9808.cpp +0 -2
  412. esphome/components/mdns/__init__.py +3 -0
  413. esphome/components/mdns/mdns_component.cpp +2 -0
  414. esphome/components/mdns/mdns_component.h +4 -0
  415. esphome/components/media_player/__init__.py +40 -0
  416. esphome/components/media_player/automation.h +16 -0
  417. esphome/components/media_player/media_player.cpp +13 -0
  418. esphome/components/media_player/media_player.h +50 -3
  419. esphome/components/micro_wake_word/micro_wake_word.cpp +0 -3
  420. esphome/components/mics_4514/mics_4514.cpp +1 -6
  421. esphome/components/midea/ir_transmitter.h +4 -4
  422. esphome/components/mipi/__init__.py +416 -0
  423. esphome/components/mipi_dsi/__init__.py +5 -0
  424. esphome/components/mipi_dsi/display.py +233 -0
  425. esphome/components/mipi_dsi/mipi_dsi.cpp +379 -0
  426. esphome/components/mipi_dsi/mipi_dsi.h +123 -0
  427. esphome/components/mipi_dsi/models/__init__.py +0 -0
  428. esphome/components/mipi_dsi/models/guition.py +38 -0
  429. esphome/components/mipi_dsi/models/m5stack.py +57 -0
  430. esphome/components/mipi_dsi/models/waveshare.py +105 -0
  431. esphome/components/mipi_rgb/models/lilygo.py +0 -0
  432. esphome/components/mipi_spi/__init__.py +0 -9
  433. esphome/components/mipi_spi/display.py +220 -256
  434. esphome/components/mipi_spi/mipi_spi.cpp +1 -485
  435. esphome/components/mipi_spi/mipi_spi.h +556 -108
  436. esphome/components/mipi_spi/models/__init__.py +0 -65
  437. esphome/components/mipi_spi/models/adafruit.py +30 -0
  438. esphome/components/mipi_spi/models/amoled.py +41 -5
  439. esphome/components/mipi_spi/models/ili.py +5 -5
  440. esphome/components/mipi_spi/models/jc.py +1 -3
  441. esphome/components/mipi_spi/models/lilygo.py +1 -1
  442. esphome/components/mipi_spi/models/waveshare.py +16 -1
  443. esphome/components/mixer/speaker/__init__.py +4 -5
  444. esphome/components/mlx90393/sensor.py +7 -5
  445. esphome/components/mlx90393/sensor_mlx90393.cpp +0 -1
  446. esphome/components/mlx90614/mlx90614.cpp +0 -1
  447. esphome/components/mmc5603/mmc5603.cpp +0 -1
  448. esphome/components/mmc5983/mmc5983.cpp +0 -2
  449. esphome/components/mpl3115a2/mpl3115a2.cpp +0 -2
  450. esphome/components/mpr121/__init__.py +7 -6
  451. esphome/components/mpr121/mpr121.cpp +0 -1
  452. esphome/components/mpu6050/mpu6050.cpp +0 -1
  453. esphome/components/mpu6886/mpu6886.cpp +0 -1
  454. esphome/components/mqtt/__init__.py +1 -2
  455. esphome/components/mqtt/mqtt_button.cpp +1 -1
  456. esphome/components/mqtt/mqtt_client.cpp +0 -1
  457. esphome/components/mqtt/mqtt_component.cpp +8 -14
  458. esphome/components/mqtt/mqtt_component.h +0 -7
  459. esphome/components/mqtt/mqtt_sensor.cpp +0 -1
  460. esphome/components/mqtt/mqtt_sensor.h +0 -1
  461. esphome/components/mqtt/mqtt_text_sensor.cpp +0 -1
  462. esphome/components/mqtt/mqtt_text_sensor.h +0 -1
  463. esphome/components/ms5611/ms5611.cpp +0 -1
  464. esphome/components/ms8607/ms8607.cpp +0 -1
  465. esphome/components/msa3xx/msa3xx.cpp +0 -2
  466. esphome/components/my9231/my9231.cpp +0 -2
  467. esphome/components/nau7802/nau7802.cpp +0 -1
  468. esphome/components/neopixelbus/light.py +3 -0
  469. esphome/components/network/util.cpp +29 -0
  470. esphome/components/nextion/nextion.cpp +0 -1
  471. esphome/components/nfc/binary_sensor/{binary_sensor.cpp → nfc_binary_sensor.cpp} +1 -1
  472. esphome/components/npi19/npi19.cpp +0 -2
  473. esphome/components/nrf52/__init__.py +223 -0
  474. esphome/components/nrf52/boards.py +34 -0
  475. esphome/components/nrf52/const.py +18 -0
  476. esphome/components/nrf52/gpio.py +79 -0
  477. esphome/components/number/__init__.py +2 -1
  478. esphome/components/one_wire/__init__.py +1 -2
  479. esphome/components/one_wire/one_wire.cpp +0 -2
  480. esphome/components/one_wire/one_wire.h +0 -2
  481. esphome/components/opentherm/hub.cpp +0 -1
  482. esphome/components/opentherm/number/__init__.py +2 -2
  483. esphome/components/openthread/__init__.py +2 -3
  484. esphome/components/openthread/openthread.cpp +30 -13
  485. esphome/components/openthread/openthread.h +3 -0
  486. esphome/components/openthread/openthread_esp.cpp +3 -1
  487. esphome/components/opt3001/sensor.py +2 -6
  488. esphome/components/output/__init__.py +38 -0
  489. esphome/components/output/automation.h +24 -0
  490. esphome/components/output/switch/output_switch.cpp +0 -2
  491. esphome/components/packages/__init__.py +1 -2
  492. esphome/components/packet_transport/__init__.py +4 -3
  493. esphome/components/pca6416a/pca6416a.cpp +0 -1
  494. esphome/components/pca9554/pca9554.cpp +0 -1
  495. esphome/components/pca9685/pca9685_output.cpp +0 -2
  496. esphome/components/pcf85063/pcf85063.cpp +0 -1
  497. esphome/components/pcf8563/pcf8563.cpp +0 -1
  498. esphome/components/pcf8574/pcf8574.cpp +0 -1
  499. esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +0 -1
  500. esphome/components/pipsolar/sensor/__init__.py +1 -1
  501. esphome/components/pm2005/pm2005.cpp +0 -1
  502. esphome/components/pmsa003i/pmsa003i.cpp +0 -2
  503. esphome/components/pmwcs3/sensor.py +1 -2
  504. esphome/components/pn532/pn532.cpp +0 -2
  505. esphome/components/pn532_spi/pn532_spi.cpp +0 -2
  506. esphome/components/power_supply/power_supply.cpp +7 -10
  507. esphome/components/power_supply/power_supply.h +1 -1
  508. esphome/components/psram/__init__.py +2 -1
  509. esphome/components/pulse_counter/pulse_counter_sensor.cpp +0 -1
  510. esphome/components/pulse_counter/sensor.py +9 -6
  511. esphome/components/pylontech/pylontech.cpp +0 -1
  512. esphome/components/qmc5883l/qmc5883l.cpp +0 -1
  513. esphome/components/qmp6988/qmp6988.cpp +0 -2
  514. esphome/components/qspi_dbi/display.py +2 -3
  515. esphome/components/qspi_dbi/qspi_dbi.cpp +0 -2
  516. esphome/components/qwiic_pir/binary_sensor.py +2 -3
  517. esphome/components/qwiic_pir/qwiic_pir.cpp +0 -2
  518. esphome/components/rc522/rc522.cpp +9 -31
  519. esphome/components/rc522_spi/rc522_spi.cpp +0 -1
  520. esphome/components/remote_base/__init__.py +5 -6
  521. esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -1
  522. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +0 -1
  523. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +0 -1
  524. esphome/components/remote_transmitter/__init__.py +26 -0
  525. esphome/components/remote_transmitter/automation.h +18 -0
  526. esphome/components/remote_transmitter/remote_transmitter.h +2 -1
  527. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -1
  528. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +2 -0
  529. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +2 -0
  530. esphome/components/resampler/speaker/__init__.py +4 -5
  531. esphome/components/rf_bridge/__init__.py +4 -8
  532. esphome/components/rotary_encoder/rotary_encoder.cpp +0 -2
  533. esphome/components/rp2040/__init__.py +3 -1
  534. esphome/components/rp2040_pio_led_strip/led_strip.cpp +0 -2
  535. esphome/components/rp2040_pio_led_strip/light.py +1 -2
  536. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -5
  537. esphome/components/rpi_dpi_rgb/display.py +13 -15
  538. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -3
  539. esphome/components/runtime_stats/__init__.py +34 -0
  540. esphome/components/runtime_stats/runtime_stats.cpp +102 -0
  541. esphome/components/runtime_stats/runtime_stats.h +132 -0
  542. esphome/components/scd30/scd30.cpp +0 -2
  543. esphome/components/scd30/sensor.py +1 -2
  544. esphome/components/scd4x/scd4x.cpp +0 -1
  545. esphome/components/scd4x/sensor.py +1 -3
  546. esphome/components/sdl/display.py +3 -1
  547. esphome/components/sdl/sdl_esphome.cpp +0 -2
  548. esphome/components/sdp3x/sdp3x.cpp +0 -2
  549. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +0 -2
  550. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +0 -3
  551. esphome/components/select/__init__.py +2 -3
  552. esphome/components/select/select_traits.cpp +1 -1
  553. esphome/components/select/select_traits.h +1 -1
  554. esphome/components/sen0321/sen0321.cpp +0 -1
  555. esphome/components/sen5x/sen5x.cpp +0 -2
  556. esphome/components/sensor/__init__.py +36 -4
  557. esphome/components/sensor/filter.cpp +49 -10
  558. esphome/components/sensor/filter.h +22 -7
  559. esphome/components/sensor/sensor.cpp +0 -1
  560. esphome/components/sensor/sensor.h +0 -9
  561. esphome/components/sfa30/sfa30.cpp +0 -4
  562. esphome/components/sgp30/sgp30.cpp +0 -2
  563. esphome/components/sgp4x/sensor.py +1 -1
  564. esphome/components/sgp4x/sgp4x.cpp +0 -2
  565. esphome/components/shelly_dimmer/shelly_dimmer.cpp +0 -2
  566. esphome/components/sht3xd/sht3xd.cpp +0 -2
  567. esphome/components/sht4x/sht4x.cpp +0 -2
  568. esphome/components/shtcx/shtcx.cpp +0 -1
  569. esphome/components/sim800l/__init__.py +2 -4
  570. esphome/components/sm16716/sm16716.cpp +0 -1
  571. esphome/components/sm2135/sm2135.cpp +0 -1
  572. esphome/components/sm2235/sm2235.cpp +0 -1
  573. esphome/components/sm2335/sm2335.cpp +0 -1
  574. esphome/components/sn74hc165/sn74hc165.cpp +0 -1
  575. esphome/components/sn74hc595/sn74hc595.cpp +0 -1
  576. esphome/components/sntp/sntp_component.cpp +0 -1
  577. esphome/components/sound_level/sensor.py +1 -1
  578. esphome/components/speaker/media_player/__init__.py +21 -33
  579. esphome/components/speaker/media_player/audio_pipeline.cpp +4 -7
  580. esphome/components/spi/__init__.py +29 -13
  581. esphome/components/spi/spi.cpp +0 -2
  582. esphome/components/spi_device/spi_device.cpp +1 -4
  583. esphome/components/sprinkler/__init__.py +4 -4
  584. esphome/components/sps30/sps30.cpp +0 -1
  585. esphome/components/ssd1306_base/__init__.py +11 -11
  586. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  587. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +0 -1
  588. esphome/components/ssd1306_spi/ssd1306_spi.cpp +0 -1
  589. esphome/components/ssd1322_spi/ssd1322_spi.cpp +0 -1
  590. esphome/components/ssd1325_spi/ssd1325_spi.cpp +0 -1
  591. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +0 -1
  592. esphome/components/ssd1327_spi/ssd1327_spi.cpp +0 -1
  593. esphome/components/ssd1331_spi/ssd1331_spi.cpp +0 -1
  594. esphome/components/ssd1351_spi/ssd1351_spi.cpp +0 -1
  595. esphome/components/st7567_i2c/st7567_i2c.cpp +0 -1
  596. esphome/components/st7567_spi/st7567_spi.cpp +0 -1
  597. esphome/components/st7701s/display.py +10 -14
  598. esphome/components/st7701s/st7701s.cpp +0 -3
  599. esphome/components/st7735/st7735.cpp +0 -1
  600. esphome/components/st7789v/st7789v.cpp +0 -1
  601. esphome/components/st7920/st7920.cpp +0 -1
  602. esphome/components/status_led/light/status_led_light.cpp +0 -2
  603. esphome/components/status_led/status_led.cpp +0 -1
  604. esphome/components/stepper/__init__.py +2 -4
  605. esphome/components/sts3x/sts3x.cpp +0 -1
  606. esphome/components/substitutions/__init__.py +10 -16
  607. esphome/components/substitutions/jinja.py +24 -1
  608. esphome/components/sun/__init__.py +2 -3
  609. esphome/components/switch/__init__.py +31 -1
  610. esphome/components/switch/automation.h +24 -0
  611. esphome/components/switch/switch.cpp +8 -0
  612. esphome/components/switch/switch.h +8 -0
  613. esphome/components/sx126x/sx126x.cpp +0 -2
  614. esphome/components/sx127x/sx127x.cpp +0 -2
  615. esphome/components/sx1509/__init__.py +7 -5
  616. esphome/components/sx1509/output/sx1509_float_output.cpp +1 -1
  617. esphome/components/sx1509/sx1509.cpp +0 -2
  618. esphome/components/syslog/esphome_syslog.cpp +1 -1
  619. esphome/components/tc74/tc74.cpp +0 -1
  620. esphome/components/tca9548a/tca9548a.cpp +0 -1
  621. esphome/components/tca9555/tca9555.cpp +0 -1
  622. esphome/components/tcs34725/tcs34725.cpp +0 -1
  623. esphome/components/tee501/tee501.cpp +0 -1
  624. esphome/components/tem3200/tem3200.cpp +0 -2
  625. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +0 -1
  626. esphome/components/template/cover/template_cover.cpp +0 -1
  627. esphome/components/template/select/template_select.cpp +0 -1
  628. esphome/components/template/text/template_text.cpp +0 -2
  629. esphome/components/template/valve/template_valve.cpp +0 -1
  630. esphome/components/text/__init__.py +0 -1
  631. esphome/components/text/text_traits.h +2 -0
  632. esphome/components/text_sensor/__init__.py +2 -1
  633. esphome/components/text_sensor/text_sensor.cpp +0 -2
  634. esphome/components/text_sensor/text_sensor.h +0 -8
  635. esphome/components/thermostat/climate.py +4 -4
  636. esphome/components/time/__init__.py +7 -4
  637. esphome/components/time/real_time_clock.cpp +16 -3
  638. esphome/components/tlc59208f/tlc59208f_output.cpp +0 -2
  639. esphome/components/tlc5947/tlc5947.cpp +0 -2
  640. esphome/components/tlc5971/tlc5971.cpp +0 -2
  641. esphome/components/tm1621/tm1621.cpp +0 -2
  642. esphome/components/tm1637/tm1637.cpp +0 -2
  643. esphome/components/tm1638/tm1638.cpp +0 -2
  644. esphome/components/tm1651/__init__.py +45 -48
  645. esphome/components/tm1651/tm1651.cpp +213 -47
  646. esphome/components/tm1651/tm1651.h +37 -32
  647. esphome/components/tmp117/tmp117.cpp +0 -2
  648. esphome/components/tsl2561/tsl2561.cpp +0 -1
  649. esphome/components/tsl2591/tsl2591.cpp +0 -1
  650. esphome/components/tt21100/touchscreen/tt21100.cpp +0 -2
  651. esphome/components/ttp229_bsf/ttp229_bsf.cpp +0 -1
  652. esphome/components/ttp229_lsf/ttp229_lsf.cpp +0 -1
  653. esphome/components/tuya/climate/__init__.py +9 -10
  654. esphome/components/tuya/number/__init__.py +8 -6
  655. esphome/components/tx20/tx20.cpp +0 -1
  656. esphome/components/uart/uart_component_esp32_arduino.cpp +0 -1
  657. esphome/components/uart/uart_component_esp8266.cpp +0 -1
  658. esphome/components/uart/uart_component_esp_idf.cpp +0 -2
  659. esphome/components/uart/uart_component_libretiny.cpp +0 -2
  660. esphome/components/uart/uart_component_rp2040.cpp +0 -2
  661. esphome/components/udp/__init__.py +1 -1
  662. esphome/components/ufire_ec/sensor.py +1 -2
  663. esphome/components/ufire_ec/ufire_ec.cpp +0 -2
  664. esphome/components/ufire_ise/sensor.py +1 -2
  665. esphome/components/ufire_ise/ufire_ise.cpp +0 -2
  666. esphome/components/ultrasonic/ultrasonic_sensor.cpp +0 -1
  667. esphome/components/update/__init__.py +0 -1
  668. esphome/components/uptime/sensor/uptime_seconds_sensor.cpp +0 -1
  669. esphome/components/uptime/sensor/uptime_seconds_sensor.h +0 -2
  670. esphome/components/usb_host/usb_host_client.cpp +0 -1
  671. esphome/components/usb_host/usb_host_component.cpp +0 -1
  672. esphome/components/valve/__init__.py +0 -1
  673. esphome/components/veml3235/veml3235.cpp +0 -3
  674. esphome/components/veml7700/veml7700.cpp +0 -2
  675. esphome/components/version/version_text_sensor.cpp +0 -1
  676. esphome/components/version/version_text_sensor.h +0 -1
  677. esphome/components/vl53l0x/vl53l0x_sensor.cpp +0 -4
  678. esphome/components/voice_assistant/voice_assistant.cpp +9 -8
  679. esphome/components/web_server/__init__.py +13 -0
  680. esphome/components/web_server/web_server.cpp +187 -352
  681. esphome/components/web_server/web_server.h +61 -1
  682. esphome/components/web_server_base/__init__.py +1 -1
  683. esphome/components/web_server_base/web_server_base.cpp +2 -0
  684. esphome/components/web_server_base/web_server_base.h +6 -0
  685. esphome/components/web_server_idf/web_server_idf.cpp +10 -8
  686. esphome/components/web_server_idf/web_server_idf.h +2 -0
  687. esphome/components/weikai_i2c/weikai_i2c.cpp +1 -2
  688. esphome/components/weikai_spi/weikai_spi.cpp +1 -1
  689. esphome/components/wifi/__init__.py +8 -43
  690. esphome/components/wifi/wifi_component.cpp +100 -36
  691. esphome/components/wifi/wifi_component.h +5 -1
  692. esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -0
  693. esphome/components/wifi/wifi_component_esp_idf.cpp +30 -0
  694. esphome/components/wifi_info/wifi_info_text_sensor.h +0 -6
  695. esphome/components/wifi_signal/wifi_signal_sensor.h +0 -1
  696. esphome/components/wireguard/wireguard.cpp +0 -2
  697. esphome/components/x9c/x9c.cpp +0 -2
  698. esphome/components/xgzp68xx/xgzp68xx.cpp +0 -1
  699. esphome/components/xl9535/xl9535.cpp +0 -2
  700. esphome/components/zephyr/__init__.py +252 -0
  701. esphome/components/zephyr/const.py +16 -0
  702. esphome/components/zephyr/core.cpp +90 -0
  703. esphome/components/zephyr/gpio.cpp +120 -0
  704. esphome/components/zephyr/gpio.h +38 -0
  705. esphome/components/zephyr/pre_build.py.script +4 -0
  706. esphome/components/zephyr/preferences.cpp +156 -0
  707. esphome/components/zephyr/preferences.h +13 -0
  708. esphome/config.py +38 -16
  709. esphome/config_helpers.py +1 -2
  710. esphome/config_validation.py +8 -15
  711. esphome/const.py +26 -1
  712. esphome/core/__init__.py +88 -51
  713. esphome/core/application.cpp +75 -21
  714. esphome/core/application.h +106 -171
  715. esphome/core/color.h +10 -0
  716. esphome/core/component.cpp +41 -25
  717. esphome/core/component.h +9 -6
  718. esphome/core/component_iterator.cpp +61 -261
  719. esphome/core/component_iterator.h +15 -0
  720. esphome/core/config.py +26 -11
  721. esphome/core/defines.h +40 -2
  722. esphome/core/entity_base.h +18 -0
  723. esphome/core/entity_helpers.py +41 -6
  724. esphome/core/helpers.cpp +8 -15
  725. esphome/core/helpers.h +60 -6
  726. esphome/core/lock_free_queue.h +1 -1
  727. esphome/core/scheduler.cpp +277 -74
  728. esphome/core/scheduler.h +89 -27
  729. esphome/cpp_generator.py +2 -6
  730. esphome/cpp_helpers.py +1 -1
  731. esphome/dashboard/dashboard.py +2 -3
  732. esphome/dashboard/dns.py +2 -8
  733. esphome/dashboard/web_server.py +34 -19
  734. esphome/espota2.py +1 -4
  735. esphome/git.py +3 -1
  736. esphome/helpers.py +23 -4
  737. esphome/log.py +3 -1
  738. esphome/mqtt.py +3 -5
  739. esphome/platformio_api.py +7 -4
  740. esphome/types.py +12 -0
  741. esphome/util.py +20 -8
  742. esphome/voluptuous_schema.py +4 -3
  743. esphome/vscode.py +1 -2
  744. esphome/wizard.py +1 -4
  745. esphome/writer.py +5 -107
  746. esphome/yaml_util.py +7 -5
  747. {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/METADATA +12 -13
  748. {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/RECORD +753 -673
  749. esphome/components/mipi_spi/models/commands.py +0 -82
  750. /esphome/components/nfc/binary_sensor/{binary_sensor.h → nfc_binary_sensor.h} +0 -0
  751. {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/WHEEL +0 -0
  752. {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/entry_points.txt +0 -0
  753. {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/licenses/LICENSE +0 -0
  754. {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/top_level.txt +0 -0
@@ -42,7 +42,6 @@ static const uint8_t CSE7761_CMD_ENABLE_WRITE = 0xE5; // Enable write operation
42
42
  enum CSE7761 { RMS_IAC, RMS_IBC, RMS_UC, POWER_PAC, POWER_PBC, POWER_SC, ENERGY_AC, ENERGY_BC };
43
43
 
44
44
  void CSE7761Component::setup() {
45
- ESP_LOGCONFIG(TAG, "Running setup");
46
45
  this->write_(CSE7761_SPECIAL_COMMAND, CSE7761_CMD_RESET);
47
46
  uint16_t syscon = this->read_(0x00, 2); // Default 0x0A04
48
47
  if ((0x0A04 == syscon) && this->chip_init_()) {
@@ -6,7 +6,6 @@ namespace cst226 {
6
6
  static const char *const TAG = "cst226.touchscreen";
7
7
 
8
8
  void CST226Touchscreen::setup() {
9
- ESP_LOGCONFIG(TAG, "Running setup");
10
9
  if (this->reset_pin_ != nullptr) {
11
10
  this->reset_pin_->setup();
12
11
  this->reset_pin_->digital_write(true);
@@ -95,7 +94,6 @@ void CST226Touchscreen::continue_setup_() {
95
94
  }
96
95
  }
97
96
  this->setup_complete_ = true;
98
- ESP_LOGCONFIG(TAG, "CST226 Touchscreen setup complete");
99
97
  }
100
98
  void CST226Touchscreen::update_button_state_(bool state) {
101
99
  if (this->button_touched_ == state)
@@ -35,11 +35,9 @@ void CST816Touchscreen::continue_setup_() {
35
35
  if (this->y_raw_max_ == this->y_raw_min_) {
36
36
  this->y_raw_max_ = this->display_->get_native_height();
37
37
  }
38
- ESP_LOGCONFIG(TAG, "CST816 Touchscreen setup complete");
39
38
  }
40
39
 
41
40
  void CST816Touchscreen::setup() {
42
- ESP_LOGCONFIG(TAG, "Running setup");
43
41
  if (this->reset_pin_ != nullptr) {
44
42
  this->reset_pin_->setup();
45
43
  this->reset_pin_->digital_write(true);
@@ -20,8 +20,6 @@ static const uint8_t DAC7678_REG_INTERNAL_REF_0 = 0x80;
20
20
  static const uint8_t DAC7678_REG_INTERNAL_REF_1 = 0x90;
21
21
 
22
22
  void DAC7678Output::setup() {
23
- ESP_LOGCONFIG(TAG, "Running setup");
24
-
25
23
  ESP_LOGV(TAG, "Resetting device");
26
24
 
27
25
  // Reset device
@@ -70,7 +70,6 @@ bool DallasTemperatureSensor::read_scratch_pad_() {
70
70
  }
71
71
 
72
72
  void DallasTemperatureSensor::setup() {
73
- ESP_LOGCONFIG(TAG, "Running setup");
74
73
  if (!this->check_address_())
75
74
  return;
76
75
  if (!this->read_scratch_pad_())
@@ -164,7 +164,6 @@ async def register_datetime(var, config):
164
164
  cg.add(getattr(cg.App, f"register_{entity_type}")(var))
165
165
  CORE.register_platform_component(entity_type, var)
166
166
  await setup_datetime_core_(var, config)
167
- cg.add_define(f"USE_DATETIME_{config[CONF_TYPE]}")
168
167
 
169
168
 
170
169
  async def new_datetime(config, *args):
@@ -175,7 +174,6 @@ async def new_datetime(config, *args):
175
174
 
176
175
  @coroutine_with_priority(100.0)
177
176
  async def to_code(config):
178
- cg.add_define("USE_DATETIME")
179
177
  cg.add_global(datetime_ns.using)
180
178
 
181
179
 
@@ -1,4 +1,5 @@
1
1
  import esphome.codegen as cg
2
+ from esphome.components.zephyr import zephyr_add_prj_conf
2
3
  from esphome.config_helpers import filter_source_files_from_platform
3
4
  import esphome.config_validation as cv
4
5
  from esphome.const import (
@@ -10,8 +11,9 @@ from esphome.const import (
10
11
  CONF_LOOP_TIME,
11
12
  PlatformFramework,
12
13
  )
14
+ from esphome.core import CORE
13
15
 
14
- CODEOWNERS = ["@OttoWinter"]
16
+ CODEOWNERS = ["@esphome/core"]
15
17
  DEPENDENCIES = ["logger"]
16
18
 
17
19
  CONF_DEBUG_ID = "debug_id"
@@ -44,6 +46,17 @@ CONFIG_SCHEMA = cv.All(
44
46
 
45
47
 
46
48
  async def to_code(config):
49
+ if CORE.using_zephyr:
50
+ zephyr_add_prj_conf("HWINFO", True)
51
+ # gdb thread support
52
+ zephyr_add_prj_conf("DEBUG_THREAD_INFO", True)
53
+ # RTT
54
+ zephyr_add_prj_conf("USE_SEGGER_RTT", True)
55
+ zephyr_add_prj_conf("RTT_CONSOLE", True)
56
+ zephyr_add_prj_conf("LOG", True)
57
+ zephyr_add_prj_conf("LOG_BLOCK_IN_THREAD", True)
58
+ zephyr_add_prj_conf("LOG_BUFFER_SIZE", 4096)
59
+ zephyr_add_prj_conf("SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL", True)
47
60
  var = cg.new_Pvariable(config[CONF_ID])
48
61
  await cg.register_component(var, config)
49
62
 
@@ -62,5 +75,6 @@ FILTER_SOURCE_FILES = filter_source_files_from_platform(
62
75
  PlatformFramework.RTL87XX_ARDUINO,
63
76
  PlatformFramework.LN882X_ARDUINO,
64
77
  },
78
+ "debug_zephyr.cpp": {PlatformFramework.NRF52_ZEPHYR},
65
79
  }
66
80
  )
@@ -0,0 +1,281 @@
1
+ #include "debug_component.h"
2
+ #ifdef USE_ZEPHYR
3
+ #include <climits>
4
+ #include "esphome/core/log.h"
5
+ #include <zephyr/drivers/hwinfo.h>
6
+ #include <hal/nrf_power.h>
7
+ #include <cstdint>
8
+
9
+ #define BOOTLOADER_VERSION_REGISTER NRF_TIMER2->CC[0]
10
+
11
+ namespace esphome {
12
+ namespace debug {
13
+
14
+ static const char *const TAG = "debug";
15
+ constexpr std::uintptr_t MBR_PARAM_PAGE_ADDR = 0xFFC;
16
+ constexpr std::uintptr_t MBR_BOOTLOADER_ADDR = 0xFF8;
17
+
18
+ static void show_reset_reason(std::string &reset_reason, bool set, const char *reason) {
19
+ if (!set) {
20
+ return;
21
+ }
22
+ if (!reset_reason.empty()) {
23
+ reset_reason += ", ";
24
+ }
25
+ reset_reason += reason;
26
+ }
27
+
28
+ inline uint32_t read_mem_u32(uintptr_t addr) {
29
+ return *reinterpret_cast<volatile uint32_t *>(addr); // NOLINT(performance-no-int-to-ptr)
30
+ }
31
+
32
+ std::string DebugComponent::get_reset_reason_() {
33
+ uint32_t cause;
34
+ auto ret = hwinfo_get_reset_cause(&cause);
35
+ if (ret) {
36
+ ESP_LOGE(TAG, "Unable to get reset cause: %d", ret);
37
+ return "";
38
+ }
39
+ std::string reset_reason;
40
+
41
+ show_reset_reason(reset_reason, cause & RESET_PIN, "External pin");
42
+ show_reset_reason(reset_reason, cause & RESET_SOFTWARE, "Software reset");
43
+ show_reset_reason(reset_reason, cause & RESET_BROWNOUT, "Brownout (drop in voltage)");
44
+ show_reset_reason(reset_reason, cause & RESET_POR, "Power-on reset (POR)");
45
+ show_reset_reason(reset_reason, cause & RESET_WATCHDOG, "Watchdog timer expiration");
46
+ show_reset_reason(reset_reason, cause & RESET_DEBUG, "Debug event");
47
+ show_reset_reason(reset_reason, cause & RESET_SECURITY, "Security violation");
48
+ show_reset_reason(reset_reason, cause & RESET_LOW_POWER_WAKE, "Waking up from low power mode");
49
+ show_reset_reason(reset_reason, cause & RESET_CPU_LOCKUP, "CPU lock-up detected");
50
+ show_reset_reason(reset_reason, cause & RESET_PARITY, "Parity error");
51
+ show_reset_reason(reset_reason, cause & RESET_PLL, "PLL error");
52
+ show_reset_reason(reset_reason, cause & RESET_CLOCK, "Clock error");
53
+ show_reset_reason(reset_reason, cause & RESET_HARDWARE, "Hardware reset");
54
+ show_reset_reason(reset_reason, cause & RESET_USER, "User reset");
55
+ show_reset_reason(reset_reason, cause & RESET_TEMPERATURE, "Temperature reset");
56
+
57
+ ESP_LOGD(TAG, "Reset Reason: %s", reset_reason.c_str());
58
+ return reset_reason;
59
+ }
60
+
61
+ uint32_t DebugComponent::get_free_heap_() { return INT_MAX; }
62
+
63
+ void DebugComponent::get_device_info_(std::string &device_info) {
64
+ std::string supply = "Main supply status: ";
65
+ if (nrf_power_mainregstatus_get(NRF_POWER) == NRF_POWER_MAINREGSTATUS_NORMAL) {
66
+ supply += "Normal voltage.";
67
+ } else {
68
+ supply += "High voltage.";
69
+ }
70
+ ESP_LOGD(TAG, "%s", supply.c_str());
71
+ device_info += "|" + supply;
72
+
73
+ std::string reg0 = "Regulator stage 0: ";
74
+ if (nrf_power_mainregstatus_get(NRF_POWER) == NRF_POWER_MAINREGSTATUS_HIGH) {
75
+ reg0 += nrf_power_dcdcen_vddh_get(NRF_POWER) ? "DC/DC" : "LDO";
76
+ reg0 += ", ";
77
+ switch (NRF_UICR->REGOUT0 & UICR_REGOUT0_VOUT_Msk) {
78
+ case (UICR_REGOUT0_VOUT_DEFAULT << UICR_REGOUT0_VOUT_Pos):
79
+ reg0 += "1.8V (default)";
80
+ break;
81
+ case (UICR_REGOUT0_VOUT_1V8 << UICR_REGOUT0_VOUT_Pos):
82
+ reg0 += "1.8V";
83
+ break;
84
+ case (UICR_REGOUT0_VOUT_2V1 << UICR_REGOUT0_VOUT_Pos):
85
+ reg0 += "2.1V";
86
+ break;
87
+ case (UICR_REGOUT0_VOUT_2V4 << UICR_REGOUT0_VOUT_Pos):
88
+ reg0 += "2.4V";
89
+ break;
90
+ case (UICR_REGOUT0_VOUT_2V7 << UICR_REGOUT0_VOUT_Pos):
91
+ reg0 += "2.7V";
92
+ break;
93
+ case (UICR_REGOUT0_VOUT_3V0 << UICR_REGOUT0_VOUT_Pos):
94
+ reg0 += "3.0V";
95
+ break;
96
+ case (UICR_REGOUT0_VOUT_3V3 << UICR_REGOUT0_VOUT_Pos):
97
+ reg0 += "3.3V";
98
+ break;
99
+ default:
100
+ reg0 += "???V";
101
+ }
102
+ } else {
103
+ reg0 += "disabled";
104
+ }
105
+ ESP_LOGD(TAG, "%s", reg0.c_str());
106
+ device_info += "|" + reg0;
107
+
108
+ std::string reg1 = "Regulator stage 1: ";
109
+ reg1 += nrf_power_dcdcen_get(NRF_POWER) ? "DC/DC" : "LDO";
110
+ ESP_LOGD(TAG, "%s", reg1.c_str());
111
+ device_info += "|" + reg1;
112
+
113
+ std::string usb_power = "USB power state: ";
114
+ if (nrf_power_usbregstatus_vbusdet_get(NRF_POWER)) {
115
+ if (nrf_power_usbregstatus_outrdy_get(NRF_POWER)) {
116
+ /**< From the power viewpoint, USB is ready for working. */
117
+ usb_power += "ready";
118
+ } else {
119
+ /**< The USB power is detected, but USB power regulator is not ready. */
120
+ usb_power += "connected (regulator is not ready)";
121
+ }
122
+ } else {
123
+ /**< No power on USB lines detected. */
124
+ usb_power += "disconected";
125
+ }
126
+ ESP_LOGD(TAG, "%s", usb_power.c_str());
127
+ device_info += "|" + usb_power;
128
+
129
+ bool enabled;
130
+ nrf_power_pof_thr_t pof_thr;
131
+
132
+ pof_thr = nrf_power_pofcon_get(NRF_POWER, &enabled);
133
+ std::string pof = "Power-fail comparator: ";
134
+ if (enabled) {
135
+ switch (pof_thr) {
136
+ case POWER_POFCON_THRESHOLD_V17:
137
+ pof += "1.7V";
138
+ break;
139
+ case POWER_POFCON_THRESHOLD_V18:
140
+ pof += "1.8V";
141
+ break;
142
+ case POWER_POFCON_THRESHOLD_V19:
143
+ pof += "1.9V";
144
+ break;
145
+ case POWER_POFCON_THRESHOLD_V20:
146
+ pof += "2.0V";
147
+ break;
148
+ case POWER_POFCON_THRESHOLD_V21:
149
+ pof += "2.1V";
150
+ break;
151
+ case POWER_POFCON_THRESHOLD_V22:
152
+ pof += "2.2V";
153
+ break;
154
+ case POWER_POFCON_THRESHOLD_V23:
155
+ pof += "2.3V";
156
+ break;
157
+ case POWER_POFCON_THRESHOLD_V24:
158
+ pof += "2.4V";
159
+ break;
160
+ case POWER_POFCON_THRESHOLD_V25:
161
+ pof += "2.5V";
162
+ break;
163
+ case POWER_POFCON_THRESHOLD_V26:
164
+ pof += "2.6V";
165
+ break;
166
+ case POWER_POFCON_THRESHOLD_V27:
167
+ pof += "2.7V";
168
+ break;
169
+ case POWER_POFCON_THRESHOLD_V28:
170
+ pof += "2.8V";
171
+ break;
172
+ }
173
+
174
+ if (nrf_power_mainregstatus_get(NRF_POWER) == NRF_POWER_MAINREGSTATUS_HIGH) {
175
+ pof += ", VDDH: ";
176
+ switch (nrf_power_pofcon_vddh_get(NRF_POWER)) {
177
+ case NRF_POWER_POFTHRVDDH_V27:
178
+ pof += "2.7V";
179
+ break;
180
+ case NRF_POWER_POFTHRVDDH_V28:
181
+ pof += "2.8V";
182
+ break;
183
+ case NRF_POWER_POFTHRVDDH_V29:
184
+ pof += "2.9V";
185
+ break;
186
+ case NRF_POWER_POFTHRVDDH_V30:
187
+ pof += "3.0V";
188
+ break;
189
+ case NRF_POWER_POFTHRVDDH_V31:
190
+ pof += "3.1V";
191
+ break;
192
+ case NRF_POWER_POFTHRVDDH_V32:
193
+ pof += "3.2V";
194
+ break;
195
+ case NRF_POWER_POFTHRVDDH_V33:
196
+ pof += "3.3V";
197
+ break;
198
+ case NRF_POWER_POFTHRVDDH_V34:
199
+ pof += "3.4V";
200
+ break;
201
+ case NRF_POWER_POFTHRVDDH_V35:
202
+ pof += "3.5V";
203
+ break;
204
+ case NRF_POWER_POFTHRVDDH_V36:
205
+ pof += "3.6V";
206
+ break;
207
+ case NRF_POWER_POFTHRVDDH_V37:
208
+ pof += "3.7V";
209
+ break;
210
+ case NRF_POWER_POFTHRVDDH_V38:
211
+ pof += "3.8V";
212
+ break;
213
+ case NRF_POWER_POFTHRVDDH_V39:
214
+ pof += "3.9V";
215
+ break;
216
+ case NRF_POWER_POFTHRVDDH_V40:
217
+ pof += "4.0V";
218
+ break;
219
+ case NRF_POWER_POFTHRVDDH_V41:
220
+ pof += "4.1V";
221
+ break;
222
+ case NRF_POWER_POFTHRVDDH_V42:
223
+ pof += "4.2V";
224
+ break;
225
+ }
226
+ }
227
+ } else {
228
+ pof += "disabled";
229
+ }
230
+ ESP_LOGD(TAG, "%s", pof.c_str());
231
+ device_info += "|" + pof;
232
+
233
+ auto package = [](uint32_t value) {
234
+ switch (value) {
235
+ case 0x2004:
236
+ return "QIxx - 7x7 73-pin aQFN";
237
+ case 0x2000:
238
+ return "QFxx - 6x6 48-pin QFN";
239
+ case 0x2005:
240
+ return "CKxx - 3.544 x 3.607 WLCSP";
241
+ }
242
+ return "Unspecified";
243
+ };
244
+
245
+ ESP_LOGD(TAG, "Code page size: %u, code size: %u, device id: 0x%08x%08x", NRF_FICR->CODEPAGESIZE, NRF_FICR->CODESIZE,
246
+ NRF_FICR->DEVICEID[1], NRF_FICR->DEVICEID[0]);
247
+ ESP_LOGD(TAG, "Encryption root: 0x%08x%08x%08x%08x, Identity Root: 0x%08x%08x%08x%08x", NRF_FICR->ER[0],
248
+ NRF_FICR->ER[1], NRF_FICR->ER[2], NRF_FICR->ER[3], NRF_FICR->IR[0], NRF_FICR->IR[1], NRF_FICR->IR[2],
249
+ NRF_FICR->IR[3]);
250
+ ESP_LOGD(TAG, "Device address type: %s, address: %s", (NRF_FICR->DEVICEADDRTYPE & 0x1 ? "Random" : "Public"),
251
+ get_mac_address_pretty().c_str());
252
+ ESP_LOGD(TAG, "Part code: nRF%x, version: %c%c%c%c, package: %s", NRF_FICR->INFO.PART,
253
+ NRF_FICR->INFO.VARIANT >> 24 & 0xFF, NRF_FICR->INFO.VARIANT >> 16 & 0xFF, NRF_FICR->INFO.VARIANT >> 8 & 0xFF,
254
+ NRF_FICR->INFO.VARIANT & 0xFF, package(NRF_FICR->INFO.PACKAGE));
255
+ ESP_LOGD(TAG, "RAM: %ukB, Flash: %ukB, production test: %sdone", NRF_FICR->INFO.RAM, NRF_FICR->INFO.FLASH,
256
+ (NRF_FICR->PRODTEST[0] == 0xBB42319F ? "" : "not "));
257
+ ESP_LOGD(
258
+ TAG, "GPIO as NFC pins: %s, GPIO as nRESET pin: %s",
259
+ YESNO((NRF_UICR->NFCPINS & UICR_NFCPINS_PROTECT_Msk) == (UICR_NFCPINS_PROTECT_NFC << UICR_NFCPINS_PROTECT_Pos)),
260
+ YESNO(((NRF_UICR->PSELRESET[0] & UICR_PSELRESET_CONNECT_Msk) !=
261
+ (UICR_PSELRESET_CONNECT_Connected << UICR_PSELRESET_CONNECT_Pos)) ||
262
+ ((NRF_UICR->PSELRESET[1] & UICR_PSELRESET_CONNECT_Msk) !=
263
+ (UICR_PSELRESET_CONNECT_Connected << UICR_PSELRESET_CONNECT_Pos))));
264
+
265
+ #ifdef USE_BOOTLOADER_MCUBOOT
266
+ ESP_LOGD(TAG, "bootloader: mcuboot");
267
+ #else
268
+ ESP_LOGD(TAG, "bootloader: Adafruit, version %u.%u.%u", (BOOTLOADER_VERSION_REGISTER >> 16) & 0xFF,
269
+ (BOOTLOADER_VERSION_REGISTER >> 8) & 0xFF, BOOTLOADER_VERSION_REGISTER & 0xFF);
270
+ ESP_LOGD(TAG, "MBR bootloader addr 0x%08x, UICR bootloader addr 0x%08x", read_mem_u32(MBR_BOOTLOADER_ADDR),
271
+ NRF_UICR->NRFFW[0]);
272
+ ESP_LOGD(TAG, "MBR param page addr 0x%08x, UICR param page addr 0x%08x", read_mem_u32(MBR_PARAM_PAGE_ADDR),
273
+ NRF_UICR->NRFFW[1]);
274
+ #endif
275
+ }
276
+
277
+ void DebugComponent::update_platform_() {}
278
+
279
+ } // namespace debug
280
+ } // namespace esphome
281
+ #endif
@@ -1,6 +1,7 @@
1
1
  import esphome.codegen as cg
2
2
  from esphome.components import sensor
3
3
  from esphome.components.esp32 import CONF_CPU_FREQUENCY
4
+ from esphome.components.psram import DOMAIN as PSRAM_DOMAIN
4
5
  import esphome.config_validation as cv
5
6
  from esphome.const import (
6
7
  CONF_BLOCK,
@@ -54,7 +55,7 @@ CONFIG_SCHEMA = {
54
55
  ),
55
56
  cv.Optional(CONF_PSRAM): cv.All(
56
57
  cv.only_on_esp32,
57
- cv.requires_component("psram"),
58
+ cv.requires_component(PSRAM_DOMAIN),
58
59
  sensor.sensor_schema(
59
60
  unit_of_measurement=UNIT_BYTES,
60
61
  icon=ICON_COUNTER,
@@ -12,7 +12,6 @@ static const uint32_t TEARDOWN_TIMEOUT_DEEP_SLEEP_MS = 5000;
12
12
  bool global_has_deep_sleep = false; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
13
13
 
14
14
  void DeepSleepComponent::setup() {
15
- ESP_LOGCONFIG(TAG, "Running setup");
16
15
  global_has_deep_sleep = true;
17
16
 
18
17
  const optional<uint32_t> run_duration = get_run_duration_();
@@ -1,4 +1,5 @@
1
1
  #ifdef USE_ESP32
2
+ #include "driver/gpio.h"
2
3
  #include "deep_sleep_component.h"
3
4
  #include "esphome/core/log.h"
4
5
 
@@ -74,11 +75,20 @@ void DeepSleepComponent::deep_sleep_() {
74
75
  if (this->sleep_duration_.has_value())
75
76
  esp_sleep_enable_timer_wakeup(*this->sleep_duration_);
76
77
  if (this->wakeup_pin_ != nullptr) {
78
+ const auto gpio_pin = gpio_num_t(this->wakeup_pin_->get_pin());
79
+ if (this->wakeup_pin_->get_flags() & gpio::FLAG_PULLUP) {
80
+ gpio_sleep_set_pull_mode(gpio_pin, GPIO_PULLUP_ONLY);
81
+ } else if (this->wakeup_pin_->get_flags() & gpio::FLAG_PULLDOWN) {
82
+ gpio_sleep_set_pull_mode(gpio_pin, GPIO_PULLDOWN_ONLY);
83
+ }
84
+ gpio_sleep_set_direction(gpio_pin, GPIO_MODE_INPUT);
85
+ gpio_hold_en(gpio_pin);
86
+ gpio_deep_sleep_hold_en();
77
87
  bool level = !this->wakeup_pin_->is_inverted();
78
88
  if (this->wakeup_pin_mode_ == WAKEUP_PIN_MODE_INVERT_WAKEUP && this->wakeup_pin_->digital_read()) {
79
89
  level = !level;
80
90
  }
81
- esp_sleep_enable_ext0_wakeup(gpio_num_t(this->wakeup_pin_->get_pin()), level);
91
+ esp_sleep_enable_ext0_wakeup(gpio_pin, level);
82
92
  }
83
93
  if (this->ext1_wakeup_.has_value()) {
84
94
  esp_sleep_enable_ext1_wakeup(this->ext1_wakeup_->mask, this->ext1_wakeup_->wakeup_mode);
@@ -102,6 +112,15 @@ void DeepSleepComponent::deep_sleep_() {
102
112
  if (this->sleep_duration_.has_value())
103
113
  esp_sleep_enable_timer_wakeup(*this->sleep_duration_);
104
114
  if (this->wakeup_pin_ != nullptr) {
115
+ const auto gpio_pin = gpio_num_t(this->wakeup_pin_->get_pin());
116
+ if (this->wakeup_pin_->get_flags() && gpio::FLAG_PULLUP) {
117
+ gpio_sleep_set_pull_mode(gpio_pin, GPIO_PULLUP_ONLY);
118
+ } else if (this->wakeup_pin_->get_flags() && gpio::FLAG_PULLDOWN) {
119
+ gpio_sleep_set_pull_mode(gpio_pin, GPIO_PULLDOWN_ONLY);
120
+ }
121
+ gpio_sleep_set_direction(gpio_pin, GPIO_MODE_INPUT);
122
+ gpio_hold_en(gpio_pin);
123
+ gpio_deep_sleep_hold_en();
105
124
  bool level = !this->wakeup_pin_->is_inverted();
106
125
  if (this->wakeup_pin_mode_ == WAKEUP_PIN_MODE_INVERT_WAKEUP && this->wakeup_pin_->digital_read()) {
107
126
  level = !level;
@@ -74,8 +74,7 @@ def range_segment_list(input):
74
74
  if isinstance(input, list):
75
75
  for list_item in input:
76
76
  if isinstance(list_item, list):
77
- for item in list_item:
78
- flat_list.append(item)
77
+ flat_list.extend(list_item)
79
78
  else:
80
79
  flat_list.append(list_item)
81
80
  else:
@@ -8,7 +8,6 @@ namespace dht {
8
8
  static const char *const TAG = "dht";
9
9
 
10
10
  void DHT::setup() {
11
- ESP_LOGCONFIG(TAG, "Running setup");
12
11
  this->pin_->digital_write(true);
13
12
  this->pin_->setup();
14
13
  this->pin_->digital_write(true);
@@ -34,7 +34,6 @@ void DHT12Component::update() {
34
34
  this->status_clear_warning();
35
35
  }
36
36
  void DHT12Component::setup() {
37
- ESP_LOGCONFIG(TAG, "Running setup");
38
37
  uint8_t data[5];
39
38
  if (!this->read_data_(data)) {
40
39
  this->mark_failed();
@@ -12,6 +12,8 @@ from esphome.const import (
12
12
  CONF_ROTATION,
13
13
  CONF_TO,
14
14
  CONF_TRIGGER_ID,
15
+ CONF_UPDATE_INTERVAL,
16
+ SCHEDULER_DONT_RUN,
15
17
  )
16
18
  from esphome.core import coroutine_with_priority
17
19
 
@@ -51,8 +53,7 @@ DISPLAY_ROTATIONS = {
51
53
 
52
54
  def validate_rotation(value):
53
55
  value = cv.string(value)
54
- if value.endswith("°"):
55
- value = value[:-1]
56
+ value = value.removesuffix("°")
56
57
  return cv.enum(DISPLAY_ROTATIONS, int=True)(value)
57
58
 
58
59
 
@@ -68,6 +69,18 @@ BASIC_DISPLAY_SCHEMA = cv.Schema(
68
69
  }
69
70
  ).extend(cv.polling_component_schema("1s"))
70
71
 
72
+
73
+ def _validate_test_card(config):
74
+ if (
75
+ config.get(CONF_SHOW_TEST_CARD, False)
76
+ and config.get(CONF_UPDATE_INTERVAL, False) == SCHEDULER_DONT_RUN
77
+ ):
78
+ raise cv.Invalid(
79
+ f"`{CONF_SHOW_TEST_CARD}: True` cannot be used with `{CONF_UPDATE_INTERVAL}: never` because this combination will not show a test_card."
80
+ )
81
+ return config
82
+
83
+
71
84
  FULL_DISPLAY_SCHEMA = BASIC_DISPLAY_SCHEMA.extend(
72
85
  {
73
86
  cv.Optional(CONF_ROTATION): validate_rotation,
@@ -95,6 +108,7 @@ FULL_DISPLAY_SCHEMA = BASIC_DISPLAY_SCHEMA.extend(
95
108
  cv.Optional(CONF_SHOW_TEST_CARD): cv.boolean,
96
109
  }
97
110
  )
111
+ FULL_DISPLAY_SCHEMA.add_extra(_validate_test_card)
98
112
 
99
113
 
100
114
  async def setup_display_core_(var, config):
@@ -201,7 +215,6 @@ async def display_is_displaying_page_to_code(config, condition_id, template_arg,
201
215
  page = await cg.get_variable(config[CONF_PAGE_ID])
202
216
  var = cg.new_Pvariable(condition_id, template_arg, paren)
203
217
  cg.add(var.set_page(page))
204
-
205
218
  return var
206
219
 
207
220
 
@@ -17,6 +17,7 @@ from esphome.const import (
17
17
  CONF_MODE,
18
18
  CONF_NUMBER,
19
19
  CONF_ON_VALUE,
20
+ CONF_SWITCH,
20
21
  CONF_TEXT,
21
22
  CONF_TRIGGER_ID,
22
23
  CONF_TYPE,
@@ -33,7 +34,6 @@ CONF_LABEL = "label"
33
34
  CONF_MENU = "menu"
34
35
  CONF_BACK = "back"
35
36
  CONF_SELECT = "select"
36
- CONF_SWITCH = "switch"
37
37
  CONF_ON_TEXT = "on_text"
38
38
  CONF_OFF_TEXT = "off_text"
39
39
  CONF_VALUE_LAMBDA = "value_lambda"
@@ -11,8 +11,6 @@ void DPS310Component::setup() {
11
11
  uint8_t coef_data_raw[DPS310_NUM_COEF_REGS];
12
12
  auto timer = DPS310_INIT_TIMEOUT;
13
13
  uint8_t reg = 0;
14
-
15
- ESP_LOGCONFIG(TAG, "Running setup");
16
14
  // first, reset the sensor
17
15
  if (!this->write_byte(DPS310_REG_RESET, DPS310_CMD_RESET)) {
18
16
  this->mark_failed();
@@ -10,7 +10,6 @@ namespace ds1307 {
10
10
  static const char *const TAG = "ds1307";
11
11
 
12
12
  void DS1307Component::setup() {
13
- ESP_LOGCONFIG(TAG, "Running setup");
14
13
  if (!this->read_rtc_()) {
15
14
  this->mark_failed();
16
15
  }
@@ -5,7 +5,6 @@ namespace ds2484 {
5
5
  static const char *const TAG = "ds2484.onewire";
6
6
 
7
7
  void DS2484OneWireBus::setup() {
8
- ESP_LOGCONFIG(TAG, "Running setup");
9
8
  this->reset_device();
10
9
  this->search();
11
10
  }
@@ -8,7 +8,6 @@ namespace duty_cycle {
8
8
  static const char *const TAG = "duty_cycle";
9
9
 
10
10
  void DutyCycleSensor::setup() {
11
- ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
12
11
  this->pin_->setup();
13
12
  this->store_.pin = this->pin_->to_isr();
14
13
  this->store_.last_level = this->pin_->digital_read();
@@ -16,7 +16,6 @@ static const uint16_t PRESSURE_ADDRESS = 0x04B0;
16
16
 
17
17
  void EE895Component::setup() {
18
18
  uint16_t crc16_check = 0;
19
- ESP_LOGCONFIG(TAG, "Running setup");
20
19
  write_command_(SERIAL_NUMBER, 8);
21
20
  uint8_t serial_number[20];
22
21
  this->read(serial_number, 20);
@@ -16,7 +16,6 @@ static const uint8_t GET_Y_RES[4] = {0x53, 0x63, 0x00, 0x00};
16
16
  static const uint8_t GET_POWER_STATE_CMD[4] = {0x53, 0x50, 0x00, 0x01};
17
17
 
18
18
  void EKTF2232Touchscreen::setup() {
19
- ESP_LOGCONFIG(TAG, "Running setup");
20
19
  this->interrupt_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
21
20
  this->interrupt_pin_->setup();
22
21
 
@@ -57,8 +57,6 @@ static const uint8_t EMC2101_POLARITY_BIT = 1 << 4;
57
57
  float Emc2101Component::get_setup_priority() const { return setup_priority::HARDWARE; }
58
58
 
59
59
  void Emc2101Component::setup() {
60
- ESP_LOGCONFIG(TAG, "Running setup");
61
-
62
60
  // make sure we're talking to the right chip
63
61
  uint8_t chip_id = reg(EMC2101_REGISTER_WHOAMI).get();
64
62
  if ((chip_id != EMC2101_CHIP_ID) && (chip_id != EMC2101_ALT_CHIP_ID)) {
@@ -49,8 +49,6 @@ static const uint8_t ENS160_DATA_STATUS_NEWGPR = 0x01;
49
49
  static const uint8_t ENS160_DATA_AQI = 0x07;
50
50
 
51
51
  void ENS160Component::setup() {
52
- ESP_LOGCONFIG(TAG, "Running setup");
53
-
54
52
  // check part_id
55
53
  uint16_t part_id;
56
54
  if (!this->read_bytes(ENS160_REG_PART_ID, reinterpret_cast<uint8_t *>(&part_id), 2)) {
@@ -87,7 +87,6 @@ static uint32_t crc7(uint32_t value) {
87
87
  }
88
88
 
89
89
  void ENS210Component::setup() {
90
- ESP_LOGCONFIG(TAG, "Running setup");
91
90
  uint8_t data[2];
92
91
  uint16_t part_id = 0;
93
92
  // Reset
@@ -38,8 +38,6 @@ void ES7210::dump_config() {
38
38
  }
39
39
 
40
40
  void ES7210::setup() {
41
- ESP_LOGCONFIG(TAG, "Running setup");
42
-
43
41
  // Software reset
44
42
  ES7210_ERROR_FAILED(this->write_byte(ES7210_RESET_REG00, 0xff));
45
43
  ES7210_ERROR_FAILED(this->write_byte(ES7210_RESET_REG00, 0x32));
@@ -34,8 +34,6 @@ void ES7243E::dump_config() {
34
34
  }
35
35
 
36
36
  void ES7243E::setup() {
37
- ESP_LOGCONFIG(TAG, "Running setup");
38
-
39
37
  ES7243E_ERROR_FAILED(this->write_byte(ES7243E_CLOCK_MGR_REG01, 0x3A));
40
38
  ES7243E_ERROR_FAILED(this->write_byte(ES7243E_RESET_REG00, 0x80));
41
39
  ES7243E_ERROR_FAILED(this->write_byte(ES7243E_TEST_MODE_REGF9, 0x00));