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
@@ -2,6 +2,7 @@
2
2
 
3
3
  #ifdef USE_ESP32
4
4
 
5
+ #include <array>
5
6
  #include <map>
6
7
  #include <vector>
7
8
 
@@ -18,10 +19,11 @@
18
19
  #include <esp_bt.h>
19
20
  #include <esp_bt_device.h>
20
21
 
21
- namespace esphome {
22
- namespace bluetooth_proxy {
22
+ namespace esphome::bluetooth_proxy {
23
23
 
24
24
  static const esp_err_t ESP_GATT_NOT_CONNECTED = -1;
25
+ static const int DONE_SENDING_SERVICES = -2;
26
+ static const int INIT_SENDING_SERVICES = -3;
25
27
 
26
28
  using namespace esp32_ble_client;
27
29
 
@@ -49,9 +51,12 @@ enum BluetoothProxySubscriptionFlag : uint32_t {
49
51
  };
50
52
 
51
53
  class BluetoothProxy : public esp32_ble_tracker::ESPBTDeviceListener, public Component {
54
+ friend class BluetoothConnection; // Allow connection to update connections_free_response_
52
55
  public:
53
56
  BluetoothProxy();
57
+ #ifdef USE_ESP32_BLE_DEVICE
54
58
  bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override;
59
+ #endif
55
60
  bool parse_devices(const esp32_ble::BLEScanResult *scan_results, size_t count) override;
56
61
  void dump_config() override;
57
62
  void setup() override;
@@ -60,8 +65,10 @@ class BluetoothProxy : public esp32_ble_tracker::ESPBTDeviceListener, public Com
60
65
  esp32_ble_tracker::AdvertisementParserType get_advertisement_parser_type() override;
61
66
 
62
67
  void register_connection(BluetoothConnection *connection) {
63
- this->connections_.push_back(connection);
64
- connection->proxy_ = this;
68
+ if (this->connection_count_ < BLUETOOTH_PROXY_MAX_CONNECTIONS) {
69
+ this->connections_[this->connection_count_++] = connection;
70
+ connection->proxy_ = this;
71
+ }
65
72
  }
66
73
 
67
74
  void bluetooth_device_request(const api::BluetoothDeviceRequest &msg);
@@ -72,15 +79,13 @@ class BluetoothProxy : public esp32_ble_tracker::ESPBTDeviceListener, public Com
72
79
  void bluetooth_gatt_send_services(const api::BluetoothGATTGetServicesRequest &msg);
73
80
  void bluetooth_gatt_notify(const api::BluetoothGATTNotifyRequest &msg);
74
81
 
75
- int get_bluetooth_connections_free();
76
- int get_bluetooth_connections_limit() { return this->connections_.size(); }
77
-
78
82
  void subscribe_api_connection(api::APIConnection *api_connection, uint32_t flags);
79
83
  void unsubscribe_api_connection(api::APIConnection *api_connection);
80
84
  api::APIConnection *get_api_connection() { return this->api_connection_; }
81
85
 
82
86
  void send_device_connection(uint64_t address, bool connected, uint16_t mtu = 0, esp_err_t error = ESP_OK);
83
87
  void send_connections_free();
88
+ void send_connections_free(api::APIConnection *api_connection);
84
89
  void send_gatt_services_done(uint64_t address);
85
90
  void send_gatt_error(uint64_t address, uint16_t handle, esp_err_t error);
86
91
  void send_device_pairing(uint64_t address, bool paired, esp_err_t error = ESP_OK);
@@ -129,27 +134,38 @@ class BluetoothProxy : public esp32_ble_tracker::ESPBTDeviceListener, public Com
129
134
  }
130
135
 
131
136
  protected:
132
- void send_api_packet_(const esp32_ble_tracker::ESPBTDevice &device);
133
137
  void send_bluetooth_scanner_state_(esp32_ble_tracker::ScannerState state);
134
138
 
135
139
  BluetoothConnection *get_connection_(uint64_t address, bool reserve);
140
+ void log_connection_request_ignored_(BluetoothConnection *connection, espbt::ClientState state);
141
+ void log_connection_info_(BluetoothConnection *connection, const char *message);
142
+ void log_not_connected_gatt_(const char *action, const char *type);
143
+ void handle_gatt_not_connected_(uint64_t address, uint16_t handle, const char *action, const char *type);
136
144
 
137
145
  // Memory optimized layout for 32-bit systems
138
146
  // Group 1: Pointers (4 bytes each, naturally aligned)
139
147
  api::APIConnection *api_connection_{nullptr};
140
148
 
141
- // Group 2: Container types (typically 12 bytes on 32-bit)
142
- std::vector<BluetoothConnection *> connections_{};
149
+ // Group 2: Fixed-size array of connection pointers
150
+ std::array<BluetoothConnection *, BLUETOOTH_PROXY_MAX_CONNECTIONS> connections_{};
151
+
152
+ // BLE advertisement batching
153
+ api::BluetoothLERawAdvertisementsResponse response_;
154
+
155
+ // Group 3: 4-byte types
156
+ uint32_t last_advertisement_flush_time_{0};
157
+
158
+ // Pre-allocated response message - always ready to send
159
+ api::BluetoothConnectionsFreeResponse connections_free_response_;
143
160
 
144
- // Group 3: 1-byte types grouped together
161
+ // Group 4: 1-byte types grouped together
145
162
  bool active_;
146
- bool raw_advertisements_{false};
163
+ uint8_t connection_count_{0};
147
164
  // 2 bytes used, 2 bytes padding
148
165
  };
149
166
 
150
167
  extern BluetoothProxy *global_bluetooth_proxy; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
151
168
 
152
- } // namespace bluetooth_proxy
153
- } // namespace esphome
169
+ } // namespace esphome::bluetooth_proxy
154
170
 
155
171
  #endif // USE_ESP32
@@ -7,6 +7,8 @@
7
7
  #include <esphome/components/sensor/sensor.h>
8
8
  #include <esphome/core/component.h>
9
9
 
10
+ #define BME280_ERROR_WRONG_CHIP_ID "Wrong chip ID"
11
+
10
12
  namespace esphome {
11
13
  namespace bme280_base {
12
14
 
@@ -88,7 +90,6 @@ const char *oversampling_to_str(BME280Oversampling oversampling) { // NOLINT
88
90
  }
89
91
 
90
92
  void BME280Component::setup() {
91
- ESP_LOGCONFIG(TAG, "Running setup");
92
93
  uint8_t chip_id = 0;
93
94
 
94
95
  // Mark as not failed before initializing. Some devices will turn off sensors to save on batteries
@@ -99,18 +100,18 @@ void BME280Component::setup() {
99
100
 
100
101
  if (!this->read_byte(BME280_REGISTER_CHIPID, &chip_id)) {
101
102
  this->error_code_ = COMMUNICATION_FAILED;
102
- this->mark_failed();
103
+ this->mark_failed(ESP_LOG_MSG_COMM_FAIL);
103
104
  return;
104
105
  }
105
106
  if (chip_id != 0x60) {
106
107
  this->error_code_ = WRONG_CHIP_ID;
107
- this->mark_failed();
108
+ this->mark_failed(BME280_ERROR_WRONG_CHIP_ID);
108
109
  return;
109
110
  }
110
111
 
111
112
  // Send a soft reset.
112
113
  if (!this->write_byte(BME280_REGISTER_RESET, BME280_SOFT_RESET)) {
113
- this->mark_failed();
114
+ this->mark_failed("Reset failed");
114
115
  return;
115
116
  }
116
117
  // Wait until the NVM data has finished loading.
@@ -119,14 +120,12 @@ void BME280Component::setup() {
119
120
  do { // NOLINT
120
121
  delay(2);
121
122
  if (!this->read_byte(BME280_REGISTER_STATUS, &status)) {
122
- ESP_LOGW(TAG, "Error reading status register.");
123
- this->mark_failed();
123
+ this->mark_failed("Error reading status register");
124
124
  return;
125
125
  }
126
126
  } while ((status & BME280_STATUS_IM_UPDATE) && (--retry));
127
127
  if (status & BME280_STATUS_IM_UPDATE) {
128
- ESP_LOGW(TAG, "Timeout loading NVM.");
129
- this->mark_failed();
128
+ this->mark_failed("Timeout loading NVM");
130
129
  return;
131
130
  }
132
131
 
@@ -154,26 +153,26 @@ void BME280Component::setup() {
154
153
 
155
154
  uint8_t humid_control_val = 0;
156
155
  if (!this->read_byte(BME280_REGISTER_CONTROLHUMID, &humid_control_val)) {
157
- this->mark_failed();
156
+ this->mark_failed("Read humidity control");
158
157
  return;
159
158
  }
160
159
  humid_control_val &= ~0b00000111;
161
160
  humid_control_val |= this->humidity_oversampling_ & 0b111;
162
161
  if (!this->write_byte(BME280_REGISTER_CONTROLHUMID, humid_control_val)) {
163
- this->mark_failed();
162
+ this->mark_failed("Write humidity control");
164
163
  return;
165
164
  }
166
165
 
167
166
  uint8_t config_register = 0;
168
167
  if (!this->read_byte(BME280_REGISTER_CONFIG, &config_register)) {
169
- this->mark_failed();
168
+ this->mark_failed("Read config");
170
169
  return;
171
170
  }
172
171
  config_register &= ~0b11111100;
173
172
  config_register |= 0b101 << 5; // 1000 ms standby time
174
173
  config_register |= (this->iir_filter_ & 0b111) << 2;
175
174
  if (!this->write_byte(BME280_REGISTER_CONFIG, config_register)) {
176
- this->mark_failed();
175
+ this->mark_failed("Write config");
177
176
  return;
178
177
  }
179
178
  }
@@ -184,7 +183,7 @@ void BME280Component::dump_config() {
184
183
  ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
185
184
  break;
186
185
  case WRONG_CHIP_ID:
187
- ESP_LOGE(TAG, "BME280 has wrong chip ID! Is it a BME280?");
186
+ ESP_LOGE(TAG, BME280_ERROR_WRONG_CHIP_ID);
188
187
  break;
189
188
  case NONE:
190
189
  default:
@@ -224,21 +223,21 @@ void BME280Component::update() {
224
223
  this->set_timeout("data", uint32_t(ceilf(meas_time)), [this]() {
225
224
  uint8_t data[8];
226
225
  if (!this->read_bytes(BME280_REGISTER_MEASUREMENTS, data, 8)) {
227
- ESP_LOGW(TAG, "Error reading registers.");
226
+ ESP_LOGW(TAG, "Error reading registers");
228
227
  this->status_set_warning();
229
228
  return;
230
229
  }
231
230
  int32_t t_fine = 0;
232
231
  float const temperature = this->read_temperature_(data, &t_fine);
233
232
  if (std::isnan(temperature)) {
234
- ESP_LOGW(TAG, "Invalid temperature, cannot read pressure & humidity values.");
233
+ ESP_LOGW(TAG, "Invalid temperature");
235
234
  this->status_set_warning();
236
235
  return;
237
236
  }
238
237
  float const pressure = this->read_pressure_(data, t_fine);
239
238
  float const humidity = this->read_humidity_(data, t_fine);
240
239
 
241
- ESP_LOGV(TAG, "Got temperature=%.1f°C pressure=%.1fhPa humidity=%.1f%%", temperature, pressure, humidity);
240
+ ESP_LOGV(TAG, "Temperature=%.1f°C Pressure=%.1fhPa Humidity=%.1f%%", temperature, pressure, humidity);
242
241
  if (this->temperature_sensor_ != nullptr)
243
242
  this->temperature_sensor_->publish_state(temperature);
244
243
  if (this->pressure_sensor_ != nullptr)
@@ -28,7 +28,7 @@ const float BME680_GAS_LOOKUP_TABLE_1[16] PROGMEM = {0.0, 0.0, 0.0, 0.0, 0.0,
28
28
  const float BME680_GAS_LOOKUP_TABLE_2[16] PROGMEM = {0.0, 0.0, 0.0, 0.0, 0.1, 0.7, 0.0, -0.8,
29
29
  -0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
30
30
 
31
- static const char *oversampling_to_str(BME680Oversampling oversampling) {
31
+ [[maybe_unused]] static const char *oversampling_to_str(BME680Oversampling oversampling) {
32
32
  switch (oversampling) {
33
33
  case BME680_OVERSAMPLING_NONE:
34
34
  return "None";
@@ -47,7 +47,7 @@ static const char *oversampling_to_str(BME680Oversampling oversampling) {
47
47
  }
48
48
  }
49
49
 
50
- static const char *iir_filter_to_str(BME680IIRFilter filter) {
50
+ [[maybe_unused]] static const char *iir_filter_to_str(BME680IIRFilter filter) {
51
51
  switch (filter) {
52
52
  case BME680_IIR_FILTER_OFF:
53
53
  return "OFF";
@@ -71,7 +71,6 @@ static const char *iir_filter_to_str(BME680IIRFilter filter) {
71
71
  }
72
72
 
73
73
  void BME680Component::setup() {
74
- ESP_LOGCONFIG(TAG, "Running setup");
75
74
  uint8_t chip_id;
76
75
  if (!this->read_byte(BME680_REGISTER_CHIPID, &chip_id) || chip_id != 0x61) {
77
76
  this->mark_failed();
@@ -15,8 +15,6 @@ std::vector<BME680BSECComponent *>
15
15
  uint8_t BME680BSECComponent::work_buffer_[BSEC_MAX_WORKBUFFER_SIZE] = {0};
16
16
 
17
17
  void BME680BSECComponent::setup() {
18
- ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->device_id_.c_str());
19
-
20
18
  uint8_t new_idx = BME680BSECComponent::instances.size();
21
19
  BME680BSECComponent::instances.push_back(this);
22
20
 
@@ -21,8 +21,6 @@ static const char *const TAG = "bme68x_bsec2.sensor";
21
21
  static const std::string IAQ_ACCURACY_STATES[4] = {"Stabilizing", "Uncertain", "Calibrating", "Calibrated"};
22
22
 
23
23
  void BME68xBSEC2Component::setup() {
24
- ESP_LOGCONFIG(TAG, "Running setup");
25
-
26
24
  this->bsec_status_ = bsec_init_m(&this->bsec_instance_);
27
25
  if (this->bsec_status_ != BSEC_OK) {
28
26
  this->mark_failed();
@@ -119,7 +119,6 @@ const float GRAVITY_EARTH = 9.80665f;
119
119
  void BMI160Component::internal_setup_(int stage) {
120
120
  switch (stage) {
121
121
  case 0:
122
- ESP_LOGCONFIG(TAG, "Running setup");
123
122
  uint8_t chipid;
124
123
  if (!this->read_byte(BMI160_REGISTER_CHIPID, &chipid) || (chipid != 0b11010001)) {
125
124
  this->mark_failed();
@@ -20,7 +20,6 @@ void BMP085Component::update() {
20
20
  this->set_timeout("temperature", 5, [this]() { this->read_temperature_(); });
21
21
  }
22
22
  void BMP085Component::setup() {
23
- ESP_LOGCONFIG(TAG, "Running setup");
24
23
  uint8_t data[22];
25
24
  if (!this->read_bytes(BMP085_REGISTER_AC1_H, data, 22)) {
26
25
  this->mark_failed();
@@ -2,6 +2,8 @@
2
2
  #include "esphome/core/hal.h"
3
3
  #include "esphome/core/log.h"
4
4
 
5
+ #define BMP280_ERROR_WRONG_CHIP_ID "Wrong chip ID"
6
+
5
7
  namespace esphome {
6
8
  namespace bmp280_base {
7
9
 
@@ -57,30 +59,29 @@ static const char *iir_filter_to_str(BMP280IIRFilter filter) {
57
59
  }
58
60
 
59
61
  void BMP280Component::setup() {
60
- ESP_LOGCONFIG(TAG, "Running setup");
61
62
  uint8_t chip_id = 0;
62
63
 
63
64
  // Read the chip id twice, to work around a bug where the first read is 0.
64
65
  // https://community.st.com/t5/stm32-mcus-products/issue-with-reading-bmp280-chip-id-using-spi/td-p/691855
65
66
  if (!this->read_byte(0xD0, &chip_id)) {
66
67
  this->error_code_ = COMMUNICATION_FAILED;
67
- this->mark_failed();
68
+ this->mark_failed(ESP_LOG_MSG_COMM_FAIL);
68
69
  return;
69
70
  }
70
71
  if (!this->read_byte(0xD0, &chip_id)) {
71
72
  this->error_code_ = COMMUNICATION_FAILED;
72
- this->mark_failed();
73
+ this->mark_failed(ESP_LOG_MSG_COMM_FAIL);
73
74
  return;
74
75
  }
75
76
  if (chip_id != 0x58) {
76
77
  this->error_code_ = WRONG_CHIP_ID;
77
- this->mark_failed();
78
+ this->mark_failed(BMP280_ERROR_WRONG_CHIP_ID);
78
79
  return;
79
80
  }
80
81
 
81
82
  // Send a soft reset.
82
83
  if (!this->write_byte(BMP280_REGISTER_RESET, BMP280_SOFT_RESET)) {
83
- this->mark_failed();
84
+ this->mark_failed("Reset failed");
84
85
  return;
85
86
  }
86
87
  // Wait until the NVM data has finished loading.
@@ -89,14 +90,12 @@ void BMP280Component::setup() {
89
90
  do {
90
91
  delay(2);
91
92
  if (!this->read_byte(BMP280_REGISTER_STATUS, &status)) {
92
- ESP_LOGW(TAG, "Error reading status register.");
93
- this->mark_failed();
93
+ this->mark_failed("Error reading status register");
94
94
  return;
95
95
  }
96
96
  } while ((status & BMP280_STATUS_IM_UPDATE) && (--retry));
97
97
  if (status & BMP280_STATUS_IM_UPDATE) {
98
- ESP_LOGW(TAG, "Timeout loading NVM.");
99
- this->mark_failed();
98
+ this->mark_failed("Timeout loading NVM");
100
99
  return;
101
100
  }
102
101
 
@@ -117,14 +116,14 @@ void BMP280Component::setup() {
117
116
 
118
117
  uint8_t config_register = 0;
119
118
  if (!this->read_byte(BMP280_REGISTER_CONFIG, &config_register)) {
120
- this->mark_failed();
119
+ this->mark_failed("Read config");
121
120
  return;
122
121
  }
123
122
  config_register &= ~0b11111100;
124
123
  config_register |= 0b000 << 5; // 0.5 ms standby time
125
124
  config_register |= (this->iir_filter_ & 0b111) << 2;
126
125
  if (!this->write_byte(BMP280_REGISTER_CONFIG, config_register)) {
127
- this->mark_failed();
126
+ this->mark_failed("Write config");
128
127
  return;
129
128
  }
130
129
  }
@@ -135,7 +134,7 @@ void BMP280Component::dump_config() {
135
134
  ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
136
135
  break;
137
136
  case WRONG_CHIP_ID:
138
- ESP_LOGE(TAG, "BMP280 has wrong chip ID! Is it a BME280?");
137
+ ESP_LOGE(TAG, BMP280_ERROR_WRONG_CHIP_ID);
139
138
  break;
140
139
  case NONE:
141
140
  default:
@@ -173,13 +172,13 @@ void BMP280Component::update() {
173
172
  int32_t t_fine = 0;
174
173
  float temperature = this->read_temperature_(&t_fine);
175
174
  if (std::isnan(temperature)) {
176
- ESP_LOGW(TAG, "Invalid temperature, cannot read pressure values.");
175
+ ESP_LOGW(TAG, "Invalid temperature");
177
176
  this->status_set_warning();
178
177
  return;
179
178
  }
180
179
  float pressure = this->read_pressure_(t_fine);
181
180
 
182
- ESP_LOGD(TAG, "Got temperature=%.1f°C pressure=%.1fhPa", temperature, pressure);
181
+ ESP_LOGV(TAG, "Temperature=%.1f°C Pressure=%.1fhPa", temperature, pressure);
183
182
  if (this->temperature_sensor_ != nullptr)
184
183
  this->temperature_sensor_->publish_state(temperature);
185
184
  if (this->pressure_sensor_ != nullptr)
@@ -70,7 +70,6 @@ static const LogString *iir_filter_to_str(IIRFilter filter) {
70
70
 
71
71
  void BMP3XXComponent::setup() {
72
72
  this->error_code_ = NONE;
73
- ESP_LOGCONFIG(TAG, "Running setup");
74
73
  // Call the Device base class "initialise" function
75
74
  if (!reset()) {
76
75
  ESP_LOGE(TAG, "Failed to reset");
@@ -128,8 +128,6 @@ void BMP581Component::setup() {
128
128
  */
129
129
 
130
130
  this->error_code_ = NONE;
131
- ESP_LOGCONFIG(TAG, "Running setup");
132
-
133
131
  ////////////////////
134
132
  // 1) Soft reboot //
135
133
  ////////////////////
@@ -15,7 +15,6 @@ static const uint8_t BP1658CJ_ADDR_START_5CH = 0x30;
15
15
  static const uint8_t BP1658CJ_DELAY = 2;
16
16
 
17
17
  void BP1658CJ::setup() {
18
- ESP_LOGCONFIG(TAG, "Running setup");
19
18
  this->data_pin_->setup();
20
19
  this->data_pin_->digital_write(false);
21
20
  this->clock_pin_->setup();
@@ -20,7 +20,6 @@ static const uint8_t BP5758D_ALL_DATA_CHANNEL_ENABLEMENT = 0b00011111;
20
20
  static const uint8_t BP5758D_DELAY = 2;
21
21
 
22
22
  void BP5758D::setup() {
23
- ESP_LOGCONFIG(TAG, "Running setup");
24
23
  this->data_pin_->setup();
25
24
  this->data_pin_->digital_write(false);
26
25
  delayMicroseconds(BP5758D_DELAY);
@@ -137,4 +137,3 @@ async def button_press_to_code(config, action_id, template_arg, args):
137
137
  @coroutine_with_priority(100.0)
138
138
  async def to_code(config):
139
139
  cg.add_global(button_ns.using)
140
- cg.add_define("USE_BUTTON")
@@ -22,9 +22,8 @@ def validate_id(config):
22
22
  if CONF_CAN_ID in config:
23
23
  can_id = config[CONF_CAN_ID]
24
24
  id_ext = config[CONF_USE_EXTENDED_ID]
25
- if not id_ext:
26
- if can_id > 0x7FF:
27
- raise cv.Invalid("Standard IDs must be 11 Bit (0x000-0x7ff / 0-2047)")
25
+ if not id_ext and can_id > 0x7FF:
26
+ raise cv.Invalid("Standard IDs must be 11 Bit (0x000-0x7ff / 0-2047)")
28
27
  return config
29
28
 
30
29
 
@@ -7,7 +7,6 @@ namespace canbus {
7
7
  static const char *const TAG = "canbus";
8
8
 
9
9
  void Canbus::setup() {
10
- ESP_LOGCONFIG(TAG, "Running setup");
11
10
  if (!this->setup_internal()) {
12
11
  ESP_LOGE(TAG, "setup error!");
13
12
  this->mark_failed();
@@ -8,8 +8,6 @@ namespace cap1188 {
8
8
  static const char *const TAG = "cap1188";
9
9
 
10
10
  void CAP1188Component::setup() {
11
- ESP_LOGCONFIG(TAG, "Running setup");
12
-
13
11
  // Reset device using the reset pin
14
12
  if (this->reset_pin_ != nullptr) {
15
13
  this->reset_pin_->setup();
@@ -14,7 +14,7 @@ from esphome.core import CORE, coroutine_with_priority
14
14
 
15
15
  AUTO_LOAD = ["web_server_base", "ota.web_server"]
16
16
  DEPENDENCIES = ["wifi"]
17
- CODEOWNERS = ["@OttoWinter"]
17
+ CODEOWNERS = ["@esphome/core"]
18
18
 
19
19
  captive_portal_ns = cg.esphome_ns.namespace("captive_portal")
20
20
  CaptivePortal = captive_portal_ns.class_("CaptivePortal", cg.Component)
@@ -10,8 +10,6 @@ static const char *const TAG = "cd74hc4067";
10
10
  float CD74HC4067Component::get_setup_priority() const { return setup_priority::DATA; }
11
11
 
12
12
  void CD74HC4067Component::setup() {
13
- ESP_LOGCONFIG(TAG, "Running setup");
14
-
15
13
  this->pin_s0_->setup();
16
14
  this->pin_s1_->setup();
17
15
  this->pin_s2_->setup();
@@ -14,7 +14,6 @@ static const uint8_t CH422G_REG_OUT_UPPER = 0x23; // write reg for output bit
14
14
  static const char *const TAG = "ch422g";
15
15
 
16
16
  void CH422GComponent::setup() {
17
- ESP_LOGCONFIG(TAG, "Running setup");
18
17
  // set outputs before mode
19
18
  this->write_outputs_();
20
19
  // Set mode and check for errors
@@ -4,7 +4,6 @@ namespace esphome {
4
4
  namespace chsc6x {
5
5
 
6
6
  void CHSC6XTouchscreen::setup() {
7
- ESP_LOGCONFIG(TAG, "Running setup");
8
7
  if (this->interrupt_pin_ != nullptr) {
9
8
  this->interrupt_pin_->setup();
10
9
  this->attach_interrupt_(this->interrupt_pin_, gpio::INTERRUPT_FALLING_EDGE);
@@ -15,8 +14,6 @@ void CHSC6XTouchscreen::setup() {
15
14
  if (this->y_raw_max_ == this->y_raw_min_) {
16
15
  this->y_raw_max_ = this->display_->get_native_height();
17
16
  }
18
-
19
- ESP_LOGCONFIG(TAG, "CHSC6X Touchscreen setup complete");
20
17
  }
21
18
 
22
19
  void CHSC6XTouchscreen::update_touches() {
@@ -519,5 +519,4 @@ async def climate_control_to_code(config, action_id, template_arg, args):
519
519
 
520
520
  @coroutine_with_priority(100.0)
521
521
  async def to_code(config):
522
- cg.add_define("USE_CLIMATE")
523
522
  cg.add_global(climate_ns.using)
@@ -5,6 +5,13 @@
5
5
  #include <set>
6
6
 
7
7
  namespace esphome {
8
+
9
+ #ifdef USE_API
10
+ namespace api {
11
+ class APIConnection;
12
+ } // namespace api
13
+ #endif
14
+
8
15
  namespace climate {
9
16
 
10
17
  /** This class contains all static data for climate devices.
@@ -173,6 +180,23 @@ class ClimateTraits {
173
180
  void set_visual_max_humidity(float visual_max_humidity) { this->visual_max_humidity_ = visual_max_humidity; }
174
181
 
175
182
  protected:
183
+ #ifdef USE_API
184
+ // The API connection is a friend class to access internal methods
185
+ friend class api::APIConnection;
186
+ // These methods return references to internal data structures.
187
+ // They are used by the API to avoid copying data when encoding messages.
188
+ // Warning: Do not use these methods outside of the API connection code.
189
+ // They return references to internal data that can be invalidated.
190
+ const std::set<ClimateMode> &get_supported_modes_for_api_() const { return this->supported_modes_; }
191
+ const std::set<ClimateFanMode> &get_supported_fan_modes_for_api_() const { return this->supported_fan_modes_; }
192
+ const std::set<std::string> &get_supported_custom_fan_modes_for_api_() const {
193
+ return this->supported_custom_fan_modes_;
194
+ }
195
+ const std::set<climate::ClimatePreset> &get_supported_presets_for_api_() const { return this->supported_presets_; }
196
+ const std::set<std::string> &get_supported_custom_presets_for_api_() const { return this->supported_custom_presets_; }
197
+ const std::set<ClimateSwingMode> &get_supported_swing_modes_for_api_() const { return this->supported_swing_modes_; }
198
+ #endif
199
+
176
200
  void set_mode_support_(climate::ClimateMode mode, bool supported) {
177
201
  if (supported) {
178
202
  this->supported_modes_.insert(mode);
@@ -20,7 +20,6 @@ uint8_t cm1106_checksum(const uint8_t *response, size_t len) {
20
20
  }
21
21
 
22
22
  void CM1106Component::setup() {
23
- ESP_LOGCONFIG(TAG, "Running setup");
24
23
  uint8_t response[8] = {0};
25
24
  if (!this->cm1106_write_command_(C_M1106_CMD_GET_CO2, sizeof(C_M1106_CMD_GET_CO2), response, sizeof(response))) {
26
25
  ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
@@ -3,6 +3,12 @@
3
3
  CODEOWNERS = ["@esphome/core"]
4
4
 
5
5
  CONF_BYTE_ORDER = "byte_order"
6
+ BYTE_ORDER_LITTLE = "little_endian"
7
+ BYTE_ORDER_BIG = "big_endian"
8
+
9
+ CONF_COLOR_DEPTH = "color_depth"
6
10
  CONF_DRAW_ROUNDING = "draw_rounding"
11
+ CONF_ON_RECEIVE = "on_receive"
7
12
  CONF_ON_STATE_CHANGE = "on_state_change"
8
13
  CONF_REQUEST_HEADERS = "request_headers"
14
+ CONF_USE_PSRAM = "use_psram"
@@ -265,5 +265,4 @@ async def cover_control_to_code(config, action_id, template_arg, args):
265
265
 
266
266
  @coroutine_with_priority(100.0)
267
267
  async def to_code(config):
268
- cg.add_define("USE_COVER")
269
268
  cg.add_global(cover_ns.using)
@@ -99,43 +99,39 @@ const optional<float> &CoverCall::get_tilt() const { return this->tilt_; }
99
99
  const optional<bool> &CoverCall::get_toggle() const { return this->toggle_; }
100
100
  void CoverCall::validate_() {
101
101
  auto traits = this->parent_->get_traits();
102
+ const char *name = this->parent_->get_name().c_str();
103
+
102
104
  if (this->position_.has_value()) {
103
105
  auto pos = *this->position_;
104
106
  if (!traits.get_supports_position() && pos != COVER_OPEN && pos != COVER_CLOSED) {
105
- ESP_LOGW(TAG, "'%s' - This cover device does not support setting position!", this->parent_->get_name().c_str());
107
+ ESP_LOGW(TAG, "'%s': position unsupported", name);
106
108
  this->position_.reset();
107
109
  } else if (pos < 0.0f || pos > 1.0f) {
108
- ESP_LOGW(TAG, "'%s' - Position %.2f is out of range [0.0 - 1.0]", this->parent_->get_name().c_str(), pos);
110
+ ESP_LOGW(TAG, "'%s': position %.2f out of range", name, pos);
109
111
  this->position_ = clamp(pos, 0.0f, 1.0f);
110
112
  }
111
113
  }
112
114
  if (this->tilt_.has_value()) {
113
115
  auto tilt = *this->tilt_;
114
116
  if (!traits.get_supports_tilt()) {
115
- ESP_LOGW(TAG, "'%s' - This cover device does not support tilt!", this->parent_->get_name().c_str());
117
+ ESP_LOGW(TAG, "'%s': tilt unsupported", name);
116
118
  this->tilt_.reset();
117
119
  } else if (tilt < 0.0f || tilt > 1.0f) {
118
- ESP_LOGW(TAG, "'%s' - Tilt %.2f is out of range [0.0 - 1.0]", this->parent_->get_name().c_str(), tilt);
120
+ ESP_LOGW(TAG, "'%s': tilt %.2f out of range", name, tilt);
119
121
  this->tilt_ = clamp(tilt, 0.0f, 1.0f);
120
122
  }
121
123
  }
122
124
  if (this->toggle_.has_value()) {
123
125
  if (!traits.get_supports_toggle()) {
124
- ESP_LOGW(TAG, "'%s' - This cover device does not support toggle!", this->parent_->get_name().c_str());
126
+ ESP_LOGW(TAG, "'%s': toggle unsupported", name);
125
127
  this->toggle_.reset();
126
128
  }
127
129
  }
128
130
  if (this->stop_) {
129
- if (this->position_.has_value()) {
130
- ESP_LOGW(TAG, "Cannot set position when stopping a cover!");
131
+ if (this->position_.has_value() || this->tilt_.has_value() || this->toggle_.has_value()) {
132
+ ESP_LOGW(TAG, "'%s': cannot position/tilt/toggle when stopping", name);
131
133
  this->position_.reset();
132
- }
133
- if (this->tilt_.has_value()) {
134
- ESP_LOGW(TAG, "Cannot set tilt when stopping a cover!");
135
134
  this->tilt_.reset();
136
- }
137
- if (this->toggle_.has_value()) {
138
- ESP_LOGW(TAG, "Cannot set toggle when stopping a cover!");
139
135
  this->toggle_.reset();
140
136
  }
141
137
  }
@@ -52,8 +52,6 @@ bool CS5460AComponent::softreset_() {
52
52
  }
53
53
 
54
54
  void CS5460AComponent::setup() {
55
- ESP_LOGCONFIG(TAG, "Running setup");
56
-
57
55
  float current_full_scale = (pga_gain_ == CS5460A_PGA_GAIN_10X) ? 0.25 : 0.10;
58
56
  float voltage_full_scale = 0.25;
59
57
  current_multiplier_ = current_full_scale / (fabsf(current_gain_) * 0x1000000);