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
@@ -136,8 +136,7 @@ RFBRIDGE_ID_SCHEMA = cv.Schema({cv.GenerateID(): cv.use_id(RFBridgeComponent)})
136
136
  @automation.register_action("rf_bridge.learn", RFBridgeLearnAction, RFBRIDGE_ID_SCHEMA)
137
137
  async def rf_bridge_learnx_to_code(config, action_id, template_args, args):
138
138
  paren = await cg.get_variable(config[CONF_ID])
139
- var = cg.new_Pvariable(action_id, template_args, paren)
140
- return var
139
+ return cg.new_Pvariable(action_id, template_args, paren)
141
140
 
142
141
 
143
142
  @automation.register_action(
@@ -149,8 +148,7 @@ async def rf_bridge_start_advanced_sniffing_to_code(
149
148
  config, action_id, template_args, args
150
149
  ):
151
150
  paren = await cg.get_variable(config[CONF_ID])
152
- var = cg.new_Pvariable(action_id, template_args, paren)
153
- return var
151
+ return cg.new_Pvariable(action_id, template_args, paren)
154
152
 
155
153
 
156
154
  @automation.register_action(
@@ -162,8 +160,7 @@ async def rf_bridge_stop_advanced_sniffing_to_code(
162
160
  config, action_id, template_args, args
163
161
  ):
164
162
  paren = await cg.get_variable(config[CONF_ID])
165
- var = cg.new_Pvariable(action_id, template_args, paren)
166
- return var
163
+ return cg.new_Pvariable(action_id, template_args, paren)
167
164
 
168
165
 
169
166
  @automation.register_action(
@@ -175,8 +172,7 @@ async def rf_bridge_start_bucket_sniffing_to_code(
175
172
  config, action_id, template_args, args
176
173
  ):
177
174
  paren = await cg.get_variable(config[CONF_ID])
178
- var = cg.new_Pvariable(action_id, template_args, paren)
179
- return var
175
+ return cg.new_Pvariable(action_id, template_args, paren)
180
176
 
181
177
 
182
178
  RFBRIDGE_SEND_ADVANCED_CODE_SCHEMA = cv.Schema(
@@ -129,8 +129,6 @@ void IRAM_ATTR HOT RotaryEncoderSensorStore::gpio_intr(RotaryEncoderSensorStore
129
129
  }
130
130
 
131
131
  void RotaryEncoderSensor::setup() {
132
- ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
133
-
134
132
  int32_t initial_value = 0;
135
133
  switch (this->restore_mode_) {
136
134
  case ROTARY_ENCODER_RESTORE_DEFAULT_ZERO:
@@ -16,6 +16,7 @@ from esphome.const import (
16
16
  KEY_TARGET_FRAMEWORK,
17
17
  KEY_TARGET_PLATFORM,
18
18
  PLATFORM_RP2040,
19
+ ThreadModel,
19
20
  )
20
21
  from esphome.core import CORE, EsphomeError, coroutine_with_priority
21
22
  from esphome.helpers import copy_file_if_changed, mkdir_p, read_file, write_file
@@ -171,6 +172,7 @@ async def to_code(config):
171
172
  cg.set_cpp_standard("gnu++20")
172
173
  cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
173
174
  cg.add_define("ESPHOME_VARIANT", "RP2040")
175
+ cg.add_define(ThreadModel.SINGLE)
174
176
 
175
177
  cg.add_platformio_option("extra_scripts", ["post:post_build.py"])
176
178
 
@@ -204,7 +206,7 @@ def add_pio_file(component: str, key: str, data: str):
204
206
  cv.validate_id_name(key)
205
207
  except cv.Invalid as e:
206
208
  raise EsphomeError(
207
- f"[{component}] Invalid PIO key: {key}. Allowed characters: [{ascii_letters}{digits}_]\nPlease report an issue https://github.com/esphome/issues"
209
+ f"[{component}] Invalid PIO key: {key}. Allowed characters: [{ascii_letters}{digits}_]\nPlease report an issue https://github.com/esphome/esphome/issues"
208
210
  ) from e
209
211
  CORE.data[KEY_RP2040][KEY_PIO_FILES][key] = data
210
212
 
@@ -40,8 +40,6 @@ void RP2040PIOLEDStripLightOutput::dma_write_complete_handler_() {
40
40
  }
41
41
 
42
42
  void RP2040PIOLEDStripLightOutput::setup() {
43
- ESP_LOGCONFIG(TAG, "Running setup");
44
-
45
43
  size_t buffer_size = this->get_buffer_size_();
46
44
 
47
45
  RAMAllocator<uint8_t> allocator;
@@ -125,8 +125,7 @@ writezero:
125
125
 
126
126
  def time_to_cycles(time_us):
127
127
  cycles_per_us = 57.5
128
- cycles = round(float(time_us) * cycles_per_us)
129
- return cycles
128
+ return round(float(time_us) * cycles_per_us)
130
129
 
131
130
 
132
131
  CONF_PIO = "pio"
@@ -16,11 +16,7 @@ namespace rp2040_pwm {
16
16
 
17
17
  static const char *const TAG = "rp2040_pwm";
18
18
 
19
- void RP2040PWM::setup() {
20
- ESP_LOGCONFIG(TAG, "Running setup");
21
-
22
- this->setup_pwm_();
23
- }
19
+ void RP2040PWM::setup() { this->setup_pwm_(); }
24
20
 
25
21
  void RP2040PWM::setup_pwm_() {
26
22
  pwm_config config = pwm_get_default_config();
@@ -2,6 +2,18 @@ from esphome import pins
2
2
  import esphome.codegen as cg
3
3
  from esphome.components import display
4
4
  from esphome.components.esp32 import const, only_on_variant
5
+ from esphome.components.mipi import (
6
+ CONF_DE_PIN,
7
+ CONF_HSYNC_BACK_PORCH,
8
+ CONF_HSYNC_FRONT_PORCH,
9
+ CONF_HSYNC_PULSE_WIDTH,
10
+ CONF_PCLK_FREQUENCY,
11
+ CONF_PCLK_INVERTED,
12
+ CONF_PCLK_PIN,
13
+ CONF_VSYNC_BACK_PORCH,
14
+ CONF_VSYNC_FRONT_PORCH,
15
+ CONF_VSYNC_PULSE_WIDTH,
16
+ )
5
17
  import esphome.config_validation as cv
6
18
  from esphome.const import (
7
19
  CONF_BLUE,
@@ -27,18 +39,6 @@ from esphome.const import (
27
39
 
28
40
  DEPENDENCIES = ["esp32"]
29
41
 
30
- CONF_DE_PIN = "de_pin"
31
- CONF_PCLK_PIN = "pclk_pin"
32
-
33
- CONF_HSYNC_FRONT_PORCH = "hsync_front_porch"
34
- CONF_HSYNC_PULSE_WIDTH = "hsync_pulse_width"
35
- CONF_HSYNC_BACK_PORCH = "hsync_back_porch"
36
- CONF_VSYNC_FRONT_PORCH = "vsync_front_porch"
37
- CONF_VSYNC_PULSE_WIDTH = "vsync_pulse_width"
38
- CONF_VSYNC_BACK_PORCH = "vsync_back_porch"
39
- CONF_PCLK_FREQUENCY = "pclk_frequency"
40
- CONF_PCLK_INVERTED = "pclk_inverted"
41
-
42
42
  rpi_dpi_rgb_ns = cg.esphome_ns.namespace("rpi_dpi_rgb")
43
43
  RPI_DPI_RGB = rpi_dpi_rgb_ns.class_("RpiDpiRgb", display.Display, cg.Component)
44
44
  ColorOrder = display.display_ns.enum("ColorMode")
@@ -140,7 +140,6 @@ async def to_code(config):
140
140
  cg.add(var.set_vsync_front_porch(config[CONF_VSYNC_FRONT_PORCH]))
141
141
  cg.add(var.set_pclk_inverted(config[CONF_PCLK_INVERTED]))
142
142
  cg.add(var.set_pclk_frequency(config[CONF_PCLK_FREQUENCY]))
143
- index = 0
144
143
  dpins = []
145
144
  if CONF_RED in config[CONF_DATA_PINS]:
146
145
  red_pins = config[CONF_DATA_PINS][CONF_RED]
@@ -158,10 +157,9 @@ async def to_code(config):
158
157
  dpins = dpins[8:16] + dpins[0:8]
159
158
  else:
160
159
  dpins = config[CONF_DATA_PINS]
161
- for pin in dpins:
160
+ for index, pin in enumerate(dpins):
162
161
  data_pin = await cg.gpio_pin_expression(pin)
163
162
  cg.add(var.add_data_pin(data_pin, index))
164
- index += 1
165
163
 
166
164
  if enable_pin := config.get(CONF_ENABLE_PIN):
167
165
  enable = await cg.gpio_pin_expression(enable_pin)
@@ -6,7 +6,6 @@ namespace esphome {
6
6
  namespace rpi_dpi_rgb {
7
7
 
8
8
  void RpiDpiRgb::setup() {
9
- ESP_LOGCONFIG(TAG, "Running setup");
10
9
  this->reset_display_();
11
10
  esp_lcd_rgb_panel_config_t config{};
12
11
  config.flags.fb_in_psram = 1;
@@ -23,7 +22,6 @@ void RpiDpiRgb::setup() {
23
22
  config.timings.flags.pclk_active_neg = this->pclk_inverted_;
24
23
  config.timings.pclk_hz = this->pclk_frequency_;
25
24
  config.clk_src = LCD_CLK_SRC_PLL160M;
26
- config.psram_trans_align = 64;
27
25
  size_t data_pin_count = sizeof(this->data_pins_) / sizeof(this->data_pins_[0]);
28
26
  for (size_t i = 0; i != data_pin_count; i++) {
29
27
  config.data_gpio_nums[i] = this->data_pins_[i]->get_pin();
@@ -42,7 +40,6 @@ void RpiDpiRgb::setup() {
42
40
  }
43
41
  ESP_ERROR_CHECK(esp_lcd_panel_reset(this->handle_));
44
42
  ESP_ERROR_CHECK(esp_lcd_panel_init(this->handle_));
45
- ESP_LOGCONFIG(TAG, "RPI_DPI_RGB setup complete");
46
43
  }
47
44
  void RpiDpiRgb::loop() {
48
45
  if (this->handle_ != nullptr)
@@ -0,0 +1,34 @@
1
+ """
2
+ Runtime statistics component for ESPHome.
3
+ """
4
+
5
+ import esphome.codegen as cg
6
+ import esphome.config_validation as cv
7
+ from esphome.const import CONF_ID
8
+
9
+ CODEOWNERS = ["@bdraco"]
10
+
11
+ CONF_LOG_INTERVAL = "log_interval"
12
+
13
+ runtime_stats_ns = cg.esphome_ns.namespace("runtime_stats")
14
+ RuntimeStatsCollector = runtime_stats_ns.class_("RuntimeStatsCollector")
15
+
16
+ CONFIG_SCHEMA = cv.Schema(
17
+ {
18
+ cv.GenerateID(): cv.declare_id(RuntimeStatsCollector),
19
+ cv.Optional(
20
+ CONF_LOG_INTERVAL, default="60s"
21
+ ): cv.positive_time_period_milliseconds,
22
+ }
23
+ )
24
+
25
+
26
+ async def to_code(config):
27
+ """Generate code for the runtime statistics component."""
28
+ # Define USE_RUNTIME_STATS when this component is used
29
+ cg.add_define("USE_RUNTIME_STATS")
30
+
31
+ # Create the runtime stats instance (constructor sets global_runtime_stats)
32
+ var = cg.new_Pvariable(config[CONF_ID])
33
+
34
+ cg.add(var.set_log_interval(config[CONF_LOG_INTERVAL]))
@@ -0,0 +1,102 @@
1
+ #include "runtime_stats.h"
2
+
3
+ #ifdef USE_RUNTIME_STATS
4
+
5
+ #include "esphome/core/component.h"
6
+ #include <algorithm>
7
+
8
+ namespace esphome {
9
+
10
+ namespace runtime_stats {
11
+
12
+ RuntimeStatsCollector::RuntimeStatsCollector() : log_interval_(60000), next_log_time_(0) {
13
+ global_runtime_stats = this;
14
+ }
15
+
16
+ void RuntimeStatsCollector::record_component_time(Component *component, uint32_t duration_ms, uint32_t current_time) {
17
+ if (component == nullptr)
18
+ return;
19
+
20
+ // Check if we have cached the name for this component
21
+ auto name_it = this->component_names_cache_.find(component);
22
+ if (name_it == this->component_names_cache_.end()) {
23
+ // First time seeing this component, cache its name
24
+ const char *source = component->get_component_source();
25
+ this->component_names_cache_[component] = source;
26
+ this->component_stats_[source].record_time(duration_ms);
27
+ } else {
28
+ this->component_stats_[name_it->second].record_time(duration_ms);
29
+ }
30
+
31
+ if (this->next_log_time_ == 0) {
32
+ this->next_log_time_ = current_time + this->log_interval_;
33
+ return;
34
+ }
35
+ }
36
+
37
+ void RuntimeStatsCollector::log_stats_() {
38
+ ESP_LOGI(TAG, "Component Runtime Statistics");
39
+ ESP_LOGI(TAG, "Period stats (last %" PRIu32 "ms):", this->log_interval_);
40
+
41
+ // First collect stats we want to display
42
+ std::vector<ComponentStatPair> stats_to_display;
43
+
44
+ for (const auto &it : this->component_stats_) {
45
+ const ComponentRuntimeStats &stats = it.second;
46
+ if (stats.get_period_count() > 0) {
47
+ ComponentStatPair pair = {it.first, &stats};
48
+ stats_to_display.push_back(pair);
49
+ }
50
+ }
51
+
52
+ // Sort by period runtime (descending)
53
+ std::sort(stats_to_display.begin(), stats_to_display.end(), std::greater<ComponentStatPair>());
54
+
55
+ // Log top components by period runtime
56
+ for (const auto &it : stats_to_display) {
57
+ const char *source = it.name;
58
+ const ComponentRuntimeStats *stats = it.stats;
59
+
60
+ ESP_LOGI(TAG, " %s: count=%" PRIu32 ", avg=%.2fms, max=%" PRIu32 "ms, total=%" PRIu32 "ms", source,
61
+ stats->get_period_count(), stats->get_period_avg_time_ms(), stats->get_period_max_time_ms(),
62
+ stats->get_period_time_ms());
63
+ }
64
+
65
+ // Log total stats since boot
66
+ ESP_LOGI(TAG, "Total stats (since boot):");
67
+
68
+ // Re-sort by total runtime for all-time stats
69
+ std::sort(stats_to_display.begin(), stats_to_display.end(),
70
+ [](const ComponentStatPair &a, const ComponentStatPair &b) {
71
+ return a.stats->get_total_time_ms() > b.stats->get_total_time_ms();
72
+ });
73
+
74
+ for (const auto &it : stats_to_display) {
75
+ const char *source = it.name;
76
+ const ComponentRuntimeStats *stats = it.stats;
77
+
78
+ ESP_LOGI(TAG, " %s: count=%" PRIu32 ", avg=%.2fms, max=%" PRIu32 "ms, total=%" PRIu32 "ms", source,
79
+ stats->get_total_count(), stats->get_total_avg_time_ms(), stats->get_total_max_time_ms(),
80
+ stats->get_total_time_ms());
81
+ }
82
+ }
83
+
84
+ void RuntimeStatsCollector::process_pending_stats(uint32_t current_time) {
85
+ if (this->next_log_time_ == 0)
86
+ return;
87
+
88
+ if (current_time >= this->next_log_time_) {
89
+ this->log_stats_();
90
+ this->reset_stats_();
91
+ this->next_log_time_ = current_time + this->log_interval_;
92
+ }
93
+ }
94
+
95
+ } // namespace runtime_stats
96
+
97
+ runtime_stats::RuntimeStatsCollector *global_runtime_stats =
98
+ nullptr; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
99
+
100
+ } // namespace esphome
101
+
102
+ #endif // USE_RUNTIME_STATS
@@ -0,0 +1,132 @@
1
+ #pragma once
2
+
3
+ #include "esphome/core/defines.h"
4
+
5
+ #ifdef USE_RUNTIME_STATS
6
+
7
+ #include <map>
8
+ #include <vector>
9
+ #include <cstdint>
10
+ #include <cstring>
11
+ #include "esphome/core/helpers.h"
12
+ #include "esphome/core/log.h"
13
+
14
+ namespace esphome {
15
+
16
+ class Component; // Forward declaration
17
+
18
+ namespace runtime_stats {
19
+
20
+ static const char *const TAG = "runtime_stats";
21
+
22
+ class ComponentRuntimeStats {
23
+ public:
24
+ ComponentRuntimeStats()
25
+ : period_count_(0),
26
+ period_time_ms_(0),
27
+ period_max_time_ms_(0),
28
+ total_count_(0),
29
+ total_time_ms_(0),
30
+ total_max_time_ms_(0) {}
31
+
32
+ void record_time(uint32_t duration_ms) {
33
+ // Update period counters
34
+ this->period_count_++;
35
+ this->period_time_ms_ += duration_ms;
36
+ if (duration_ms > this->period_max_time_ms_)
37
+ this->period_max_time_ms_ = duration_ms;
38
+
39
+ // Update total counters
40
+ this->total_count_++;
41
+ this->total_time_ms_ += duration_ms;
42
+ if (duration_ms > this->total_max_time_ms_)
43
+ this->total_max_time_ms_ = duration_ms;
44
+ }
45
+
46
+ void reset_period_stats() {
47
+ this->period_count_ = 0;
48
+ this->period_time_ms_ = 0;
49
+ this->period_max_time_ms_ = 0;
50
+ }
51
+
52
+ // Period stats (reset each logging interval)
53
+ uint32_t get_period_count() const { return this->period_count_; }
54
+ uint32_t get_period_time_ms() const { return this->period_time_ms_; }
55
+ uint32_t get_period_max_time_ms() const { return this->period_max_time_ms_; }
56
+ float get_period_avg_time_ms() const {
57
+ return this->period_count_ > 0 ? this->period_time_ms_ / static_cast<float>(this->period_count_) : 0.0f;
58
+ }
59
+
60
+ // Total stats (persistent until reboot)
61
+ uint32_t get_total_count() const { return this->total_count_; }
62
+ uint32_t get_total_time_ms() const { return this->total_time_ms_; }
63
+ uint32_t get_total_max_time_ms() const { return this->total_max_time_ms_; }
64
+ float get_total_avg_time_ms() const {
65
+ return this->total_count_ > 0 ? this->total_time_ms_ / static_cast<float>(this->total_count_) : 0.0f;
66
+ }
67
+
68
+ protected:
69
+ // Period stats (reset each logging interval)
70
+ uint32_t period_count_;
71
+ uint32_t period_time_ms_;
72
+ uint32_t period_max_time_ms_;
73
+
74
+ // Total stats (persistent until reboot)
75
+ uint32_t total_count_;
76
+ uint32_t total_time_ms_;
77
+ uint32_t total_max_time_ms_;
78
+ };
79
+
80
+ // For sorting components by run time
81
+ struct ComponentStatPair {
82
+ const char *name;
83
+ const ComponentRuntimeStats *stats;
84
+
85
+ bool operator>(const ComponentStatPair &other) const {
86
+ // Sort by period time as that's what we're displaying in the logs
87
+ return stats->get_period_time_ms() > other.stats->get_period_time_ms();
88
+ }
89
+ };
90
+
91
+ class RuntimeStatsCollector {
92
+ public:
93
+ RuntimeStatsCollector();
94
+
95
+ void set_log_interval(uint32_t log_interval) { this->log_interval_ = log_interval; }
96
+ uint32_t get_log_interval() const { return this->log_interval_; }
97
+
98
+ void record_component_time(Component *component, uint32_t duration_ms, uint32_t current_time);
99
+
100
+ // Process any pending stats printing (should be called after component loop)
101
+ void process_pending_stats(uint32_t current_time);
102
+
103
+ protected:
104
+ void log_stats_();
105
+
106
+ void reset_stats_() {
107
+ for (auto &it : this->component_stats_) {
108
+ it.second.reset_period_stats();
109
+ }
110
+ }
111
+
112
+ // Use const char* keys for efficiency
113
+ // Custom comparator for const char* keys in map
114
+ // Without this, std::map would compare pointer addresses instead of string contents,
115
+ // causing identical component names at different addresses to be treated as different keys
116
+ struct CStrCompare {
117
+ bool operator()(const char *a, const char *b) const { return std::strcmp(a, b) < 0; }
118
+ };
119
+ std::map<const char *, ComponentRuntimeStats, CStrCompare> component_stats_;
120
+ std::map<Component *, const char *> component_names_cache_;
121
+ uint32_t log_interval_;
122
+ uint32_t next_log_time_;
123
+ };
124
+
125
+ } // namespace runtime_stats
126
+
127
+ extern runtime_stats::RuntimeStatsCollector
128
+ *global_runtime_stats; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
129
+
130
+ } // namespace esphome
131
+
132
+ #endif // USE_RUNTIME_STATS
@@ -26,8 +26,6 @@ static const uint16_t SCD30_CMD_TEMPERATURE_OFFSET = 0x5403;
26
26
  static const uint16_t SCD30_CMD_SOFT_RESET = 0xD304;
27
27
 
28
28
  void SCD30Component::setup() {
29
- ESP_LOGCONFIG(TAG, "Running setup");
30
-
31
29
  #ifdef USE_ESP8266
32
30
  Wire.setClockStretchLimit(150000);
33
31
  #endif
@@ -3,6 +3,7 @@ import esphome.codegen as cg
3
3
  from esphome.components import i2c, sensirion_common, sensor
4
4
  import esphome.config_validation as cv
5
5
  from esphome.const import (
6
+ CONF_ALTITUDE_COMPENSATION,
6
7
  CONF_AMBIENT_PRESSURE_COMPENSATION,
7
8
  CONF_AUTOMATIC_SELF_CALIBRATION,
8
9
  CONF_CO2,
@@ -35,8 +36,6 @@ ForceRecalibrationWithReference = scd30_ns.class_(
35
36
  "ForceRecalibrationWithReference", automation.Action
36
37
  )
37
38
 
38
- CONF_ALTITUDE_COMPENSATION = "altitude_compensation"
39
-
40
39
  CONFIG_SCHEMA = (
41
40
  cv.Schema(
42
41
  {
@@ -27,7 +27,6 @@ static const uint16_t SCD4X_CMD_GET_FEATURESET = 0x202f;
27
27
  static const float SCD4X_TEMPERATURE_OFFSET_MULTIPLIER = (1 << 16) / 175.0f;
28
28
 
29
29
  void SCD4XComponent::setup() {
30
- ESP_LOGCONFIG(TAG, "Running setup");
31
30
  // the sensor needs 1000 ms to enter the idle state
32
31
  this->set_timeout(1000, [this]() {
33
32
  this->status_clear_error();
@@ -4,6 +4,7 @@ import esphome.codegen as cg
4
4
  from esphome.components import i2c, sensirion_common, sensor
5
5
  import esphome.config_validation as cv
6
6
  from esphome.const import (
7
+ CONF_ALTITUDE_COMPENSATION,
7
8
  CONF_AMBIENT_PRESSURE_COMPENSATION,
8
9
  CONF_AMBIENT_PRESSURE_COMPENSATION_SOURCE,
9
10
  CONF_AUTOMATIC_SELF_CALIBRATION,
@@ -49,9 +50,6 @@ PerformForcedCalibrationAction = scd4x_ns.class_(
49
50
  )
50
51
  FactoryResetAction = scd4x_ns.class_("FactoryResetAction", automation.Action)
51
52
 
52
-
53
- CONF_ALTITUDE_COMPENSATION = "altitude_compensation"
54
-
55
53
  CONFIG_SCHEMA = (
56
54
  cv.Schema(
57
55
  {
@@ -36,7 +36,9 @@ def get_sdl_options(value):
36
36
  if value != "":
37
37
  return value
38
38
  try:
39
- return subprocess.check_output(["sdl2-config", "--cflags", "--libs"]).decode()
39
+ return subprocess.check_output(
40
+ ["sdl2-config", "--cflags", "--libs"], close_fds=False
41
+ ).decode()
40
42
  except Exception as e:
41
43
  raise cv.Invalid("Unable to run sdl2-config - have you installed sdl2?") from e
42
44
 
@@ -6,7 +6,6 @@ namespace esphome {
6
6
  namespace sdl {
7
7
 
8
8
  void Sdl::setup() {
9
- ESP_LOGD(TAG, "Starting setup");
10
9
  SDL_Init(SDL_INIT_VIDEO);
11
10
  this->window_ = SDL_CreateWindow(App.get_name().c_str(), this->pos_x_, this->pos_y_, this->width_, this->height_,
12
11
  this->window_options_);
@@ -15,7 +14,6 @@ void Sdl::setup() {
15
14
  this->texture_ =
16
15
  SDL_CreateTexture(this->renderer_, SDL_PIXELFORMAT_RGB565, SDL_TEXTUREACCESS_STATIC, this->width_, this->height_);
17
16
  SDL_SetTextureBlendMode(this->texture_, SDL_BLENDMODE_BLEND);
18
- ESP_LOGD(TAG, "Setup Complete");
19
17
  }
20
18
  void Sdl::update() {
21
19
  this->do_update_();
@@ -17,8 +17,6 @@ static const uint16_t SDP3X_STOP_MEAS = 0x3FF9;
17
17
  void SDP3XComponent::update() { this->read_pressure_(); }
18
18
 
19
19
  void SDP3XComponent::setup() {
20
- ESP_LOGCONFIG(TAG, "Running setup");
21
-
22
20
  if (!this->write_command(SDP3X_STOP_MEAS)) {
23
21
  ESP_LOGW(TAG, "Stop failed"); // This sometimes fails for no good reason
24
22
  }
@@ -62,7 +62,6 @@ void MR24HPC1Component::dump_config() {
62
62
 
63
63
  // Initialisation functions
64
64
  void MR24HPC1Component::setup() {
65
- ESP_LOGCONFIG(TAG, "Running setup");
66
65
  this->check_uart_settings(115200);
67
66
 
68
67
  if (this->custom_mode_number_ != nullptr) {
@@ -91,7 +90,6 @@ void MR24HPC1Component::setup() {
91
90
  memset(this->sg_frame_buf_, 0, FRAME_BUF_MAX_SIZE);
92
91
 
93
92
  this->set_interval(8000, [this]() { this->update_(); });
94
- ESP_LOGCONFIG(TAG, "Set up MR24HPC1 complete");
95
93
  }
96
94
 
97
95
  // Timed polling of radar data
@@ -31,7 +31,6 @@ void MR60FDA2Component::dump_config() {
31
31
 
32
32
  // Initialisation functions
33
33
  void MR60FDA2Component::setup() {
34
- ESP_LOGCONFIG(TAG, "Running setup");
35
34
  this->check_uart_settings(115200);
36
35
 
37
36
  this->current_frame_locate_ = LOCATE_FRAME_HEADER;
@@ -43,8 +42,6 @@ void MR60FDA2Component::setup() {
43
42
 
44
43
  memset(this->current_frame_buf_, 0, FRAME_BUF_MAX_SIZE);
45
44
  memset(this->current_data_buf_, 0, DATA_BUF_MAX_SIZE);
46
-
47
- ESP_LOGCONFIG(TAG, "Set up MR60FDA2 complete");
48
45
  }
49
46
 
50
47
  // main loop
@@ -118,15 +118,14 @@ async def register_select(var, config, *, options: list[str]):
118
118
  await setup_select_core_(var, config, options=options)
119
119
 
120
120
 
121
- async def new_select(config, *, options: list[str]):
122
- var = cg.new_Pvariable(config[CONF_ID])
121
+ async def new_select(config, *args, options: list[str]):
122
+ var = cg.new_Pvariable(config[CONF_ID], *args)
123
123
  await register_select(var, config, options=options)
124
124
  return var
125
125
 
126
126
 
127
127
  @coroutine_with_priority(100.0)
128
128
  async def to_code(config):
129
- cg.add_define("USE_SELECT")
130
129
  cg.add_global(select_ns.using)
131
130
 
132
131
 
@@ -5,7 +5,7 @@ namespace select {
5
5
 
6
6
  void SelectTraits::set_options(std::vector<std::string> options) { this->options_ = std::move(options); }
7
7
 
8
- std::vector<std::string> SelectTraits::get_options() const { return this->options_; }
8
+ const std::vector<std::string> &SelectTraits::get_options() const { return this->options_; }
9
9
 
10
10
  } // namespace select
11
11
  } // namespace esphome
@@ -9,7 +9,7 @@ namespace select {
9
9
  class SelectTraits {
10
10
  public:
11
11
  void set_options(std::vector<std::string> options);
12
- std::vector<std::string> get_options() const;
12
+ const std::vector<std::string> &get_options() const;
13
13
 
14
14
  protected:
15
15
  std::vector<std::string> options_;
@@ -8,7 +8,6 @@ namespace sen0321_sensor {
8
8
  static const char *const TAG = "sen0321_sensor.sensor";
9
9
 
10
10
  void Sen0321Sensor::setup() {
11
- ESP_LOGCONFIG(TAG, "Running setup");
12
11
  if (!this->write_byte(SENSOR_MODE_REGISTER, SENSOR_MODE_AUTO)) {
13
12
  ESP_LOGW(TAG, "Error setting measurement mode.");
14
13
  this->mark_failed();
@@ -30,8 +30,6 @@ static const int8_t SEN5X_MIN_INDEX_VALUE = 1 * SEN5X_INDEX_SCALE_FACTOR; //
30
30
  static const int16_t SEN5X_MAX_INDEX_VALUE = 500 * SEN5X_INDEX_SCALE_FACTOR; // must be adjusted by the scale factor
31
31
 
32
32
  void SEN5XComponent::setup() {
33
- ESP_LOGCONFIG(TAG, "Running setup");
34
-
35
33
  // the sensor needs 1000 ms to enter the idle state
36
34
  this->set_timeout(1000, [this]() {
37
35
  // Check if measurement is ready before reading the value