esphome 2025.6.2__py3-none-any.whl → 2025.7.0b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. esphome/__main__.py +1 -3
  2. esphome/codegen.py +2 -0
  3. esphome/components/ac_dimmer/ac_dimmer.cpp +6 -6
  4. esphome/components/adc/__init__.py +25 -1
  5. esphome/components/adc/adc_sensor.h +11 -11
  6. esphome/components/adc/adc_sensor_common.cpp +1 -1
  7. esphome/components/adc/adc_sensor_esp32.cpp +16 -8
  8. esphome/components/ade7880/ade7880.h +0 -2
  9. esphome/components/ads1115/ads1115.h +0 -1
  10. esphome/components/ads1118/ads1118.h +0 -1
  11. esphome/components/ags10/ags10.h +0 -2
  12. esphome/components/aic3204/aic3204.h +0 -1
  13. esphome/components/alarm_control_panel/__init__.py +5 -2
  14. esphome/components/alpha3/alpha3.h +0 -1
  15. esphome/components/am43/cover/am43_cover.h +0 -1
  16. esphome/components/am43/sensor/am43_sensor.h +0 -1
  17. esphome/components/analog_threshold/analog_threshold_binary_sensor.h +0 -2
  18. esphome/components/anova/anova.cpp +5 -1
  19. esphome/components/anova/anova.h +0 -1
  20. esphome/components/apds9960/apds9960.cpp +1 -1
  21. esphome/components/api/__init__.py +42 -20
  22. esphome/components/api/api_connection.cpp +318 -391
  23. esphome/components/api/api_connection.h +206 -126
  24. esphome/components/api/api_frame_helper.cpp +89 -124
  25. esphome/components/api/api_frame_helper.h +57 -45
  26. esphome/components/api/api_pb2.cpp +414 -4350
  27. esphome/components/api/api_pb2.h +287 -198
  28. esphome/components/api/api_pb2_dump.cpp +4333 -0
  29. esphome/components/api/api_pb2_service.cpp +180 -425
  30. esphome/components/api/api_pb2_service.h +7 -6
  31. esphome/components/api/api_pb2_size.h +2 -4
  32. esphome/components/api/api_server.cpp +138 -167
  33. esphome/components/api/api_server.h +66 -12
  34. esphome/components/api/client.py +10 -4
  35. esphome/components/api/list_entities.cpp +36 -105
  36. esphome/components/api/list_entities.h +31 -23
  37. esphome/components/api/proto.h +26 -3
  38. esphome/components/api/subscribe_state.cpp +23 -29
  39. esphome/components/api/subscribe_state.h +26 -19
  40. esphome/components/as5600/as5600.h +0 -1
  41. esphome/components/async_tcp/__init__.py +14 -5
  42. esphome/components/atc_mithermometer/atc_mithermometer.h +0 -1
  43. esphome/components/atm90e32/atm90e32.cpp +2 -1
  44. esphome/components/audio/audio_decoder.cpp +1 -1
  45. esphome/components/audio/audio_transfer_buffer.cpp +2 -2
  46. esphome/components/b_parasite/b_parasite.h +0 -1
  47. esphome/components/bedjet/bedjet_hub.cpp +5 -1
  48. esphome/components/bedjet/climate/bedjet_climate.cpp +5 -1
  49. esphome/components/beken_spi_led_strip/led_strip.cpp +4 -2
  50. esphome/components/bh1750/bh1750.cpp +5 -5
  51. esphome/components/binary_sensor/__init__.py +82 -5
  52. esphome/components/binary_sensor/automation.h +19 -1
  53. esphome/components/binary_sensor/binary_sensor.cpp +12 -30
  54. esphome/components/binary_sensor/binary_sensor.h +11 -25
  55. esphome/components/binary_sensor/filter.cpp +29 -24
  56. esphome/components/binary_sensor/filter.h +20 -10
  57. esphome/components/ble_client/output/ble_binary_output.h +0 -1
  58. esphome/components/ble_client/sensor/ble_rssi_sensor.cpp +5 -1
  59. esphome/components/ble_client/sensor/ble_rssi_sensor.h +0 -1
  60. esphome/components/ble_client/sensor/ble_sensor.cpp +5 -1
  61. esphome/components/ble_client/sensor/ble_sensor.h +0 -1
  62. esphome/components/ble_client/switch/ble_switch.h +0 -1
  63. esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +5 -1
  64. esphome/components/ble_client/text_sensor/ble_text_sensor.h +0 -1
  65. esphome/components/ble_presence/ble_presence_device.h +0 -1
  66. esphome/components/ble_rssi/ble_rssi_sensor.h +0 -1
  67. esphome/components/ble_scanner/ble_scanner.h +0 -1
  68. esphome/components/bluetooth_proxy/bluetooth_connection.h +9 -2
  69. esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +16 -6
  70. esphome/components/bluetooth_proxy/bluetooth_proxy.h +8 -2
  71. esphome/components/bme680/sensor.py +1 -1
  72. esphome/components/bmp581/bmp581.h +0 -2
  73. esphome/components/button/__init__.py +5 -2
  74. esphome/components/camera/__init__.py +1 -0
  75. esphome/components/camera/camera.cpp +22 -0
  76. esphome/components/camera/camera.h +80 -0
  77. esphome/components/canbus/__init__.py +1 -0
  78. esphome/components/cap1188/cap1188.h +0 -1
  79. esphome/components/captive_portal/__init__.py +12 -2
  80. esphome/components/captive_portal/captive_portal.cpp +12 -2
  81. esphome/components/captive_portal/captive_portal.h +5 -2
  82. esphome/components/ccs811/ccs811.h +0 -2
  83. esphome/components/climate/__init__.py +5 -2
  84. esphome/components/cm1106/sensor.py +2 -2
  85. esphome/components/const/__init__.py +2 -0
  86. esphome/components/copy/binary_sensor/copy_binary_sensor.h +0 -1
  87. esphome/components/copy/button/copy_button.h +0 -1
  88. esphome/components/copy/cover/copy_cover.h +0 -1
  89. esphome/components/copy/fan/copy_fan.h +0 -1
  90. esphome/components/copy/lock/copy_lock.h +0 -1
  91. esphome/components/copy/number/copy_number.h +0 -1
  92. esphome/components/copy/select/copy_select.h +0 -1
  93. esphome/components/copy/sensor/copy_sensor.h +0 -1
  94. esphome/components/copy/switch/copy_switch.h +0 -1
  95. esphome/components/copy/text/copy_text.h +0 -1
  96. esphome/components/copy/text_sensor/copy_text_sensor.h +0 -1
  97. esphome/components/cover/__init__.py +5 -2
  98. esphome/components/cs5460a/cs5460a.h +0 -1
  99. esphome/components/datetime/__init__.py +4 -2
  100. esphome/components/debug/__init__.py +20 -0
  101. esphome/components/deep_sleep/__init__.py +43 -9
  102. esphome/components/demo/__init__.py +2 -2
  103. esphome/components/display/display.cpp +4 -3
  104. esphome/components/display/display.h +0 -2
  105. esphome/components/display/display_buffer.cpp +1 -1
  106. esphome/components/ds2484/__init__.py +1 -0
  107. esphome/components/ds2484/ds2484.cpp +209 -0
  108. esphome/components/ds2484/ds2484.h +43 -0
  109. esphome/components/ds2484/one_wire.py +37 -0
  110. esphome/components/duty_time/duty_time_sensor.h +0 -1
  111. esphome/components/ens160_base/ens160_base.h +0 -1
  112. esphome/components/es7210/es7210.h +0 -1
  113. esphome/components/es7243e/es7243e.h +0 -1
  114. esphome/components/es8156/es8156.h +0 -1
  115. esphome/components/es8311/es8311.h +0 -1
  116. esphome/components/es8388/es8388.h +0 -1
  117. esphome/components/esp32/__init__.py +102 -135
  118. esphome/components/esp32/core.cpp +0 -4
  119. esphome/components/esp32/gpio.h +1 -1
  120. esphome/components/esp32/helpers.cpp +69 -0
  121. esphome/components/esp32_ble/ble.cpp +5 -6
  122. esphome/components/esp32_ble/ble.h +29 -14
  123. esphome/components/esp32_ble/ble_event.h +6 -6
  124. esphome/components/esp32_ble_client/ble_client_base.cpp +21 -6
  125. esphome/components/esp32_ble_client/ble_client_base.h +24 -9
  126. esphome/components/esp32_ble_tracker/__init__.py +2 -8
  127. esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +5 -5
  128. esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +11 -7
  129. esphome/components/esp32_camera/__init__.py +111 -97
  130. esphome/components/esp32_camera/esp32_camera.cpp +41 -31
  131. esphome/components/esp32_camera/esp32_camera.h +35 -30
  132. esphome/components/esp32_camera_web_server/__init__.py +2 -1
  133. esphome/components/esp32_camera_web_server/camera_web_server.cpp +8 -8
  134. esphome/components/esp32_camera_web_server/camera_web_server.h +3 -3
  135. esphome/components/esp32_hall/sensor.py +2 -21
  136. esphome/components/esp32_hosted/__init__.py +101 -0
  137. esphome/components/esp32_hosted/esp32_hosted.py.script +12 -0
  138. esphome/components/esp32_improv/esp32_improv_component.cpp +3 -0
  139. esphome/components/esp32_rmt/__init__.py +0 -58
  140. esphome/components/esp32_rmt_led_strip/led_strip.cpp +77 -63
  141. esphome/components/esp32_rmt_led_strip/led_strip.h +11 -17
  142. esphome/components/esp32_rmt_led_strip/light.py +14 -76
  143. esphome/components/esp32_touch/esp32_touch.h +174 -28
  144. esphome/components/esp32_touch/esp32_touch_common.cpp +162 -0
  145. esphome/components/esp32_touch/esp32_touch_v1.cpp +238 -0
  146. esphome/components/esp32_touch/esp32_touch_v2.cpp +397 -0
  147. esphome/components/esp8266/__init__.py +1 -0
  148. esphome/components/esp8266/gpio.cpp +10 -10
  149. esphome/components/esp8266/helpers.cpp +31 -0
  150. esphome/components/esphome/ota/__init__.py +1 -0
  151. esphome/components/esphome/ota/ota_esphome.cpp +24 -19
  152. esphome/components/ethernet/__init__.py +42 -23
  153. esphome/components/ethernet/esp_eth_phy_jl1101.c +0 -16
  154. esphome/components/ethernet/ethernet_component.cpp +69 -29
  155. esphome/components/ethernet/ethernet_component.h +18 -10
  156. esphome/components/event/__init__.py +5 -2
  157. esphome/components/ezo/ezo.h +0 -1
  158. esphome/components/ezo_pmp/ezo_pmp.h +0 -1
  159. esphome/components/fan/__init__.py +5 -2
  160. esphome/components/feedback/feedback_cover.h +0 -1
  161. esphome/components/font/__init__.py +92 -82
  162. esphome/components/font/font.cpp +9 -2
  163. esphome/components/font/font.h +20 -5
  164. esphome/components/fs3000/fs3000.h +0 -1
  165. esphome/components/gcja5/gcja5.h +0 -1
  166. esphome/components/gl_r01_i2c/__init__.py +0 -0
  167. esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +68 -0
  168. esphome/components/gl_r01_i2c/gl_r01_i2c.h +22 -0
  169. esphome/components/gl_r01_i2c/sensor.py +36 -0
  170. esphome/components/gp8403/gp8403.h +0 -1
  171. esphome/components/gpio/binary_sensor/__init__.py +17 -0
  172. esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp +77 -3
  173. esphome/components/gpio/binary_sensor/gpio_binary_sensor.h +40 -0
  174. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.h +0 -2
  175. esphome/components/he60r/he60r.h +0 -1
  176. esphome/components/heatpumpir/climate.py +2 -1
  177. esphome/components/heatpumpir/heatpumpir.cpp +1 -0
  178. esphome/components/heatpumpir/heatpumpir.h +1 -0
  179. esphome/components/honeywellabp2_i2c/honeywellabp2.h +0 -1
  180. esphome/components/host/__init__.py +2 -1
  181. esphome/components/host/helpers.cpp +57 -0
  182. esphome/components/http_request/__init__.py +19 -1
  183. esphome/components/http_request/http_request.h +1 -1
  184. esphome/components/http_request/http_request_arduino.cpp +0 -1
  185. esphome/components/http_request/http_request_arduino.h +1 -0
  186. esphome/components/http_request/http_request_idf.cpp +0 -1
  187. esphome/components/http_request/ota/ota_http_request.cpp +1 -1
  188. esphome/components/http_request/update/http_request_update.cpp +28 -9
  189. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +3 -9
  190. esphome/components/hydreon_rgxx/sensor.py +1 -1
  191. esphome/components/i2c/__init__.py +23 -11
  192. esphome/components/i2c/i2c_bus.h +8 -1
  193. esphome/components/i2c/i2c_bus_arduino.cpp +4 -3
  194. esphome/components/i2c/i2c_bus_arduino.h +6 -3
  195. esphome/components/i2c/i2c_bus_esp_idf.h +5 -3
  196. esphome/components/i2c_device/i2c_device.h +0 -1
  197. esphome/components/i2s_audio/__init__.py +2 -10
  198. esphome/components/i2s_audio/i2s_audio.cpp +1 -5
  199. esphome/components/i2s_audio/media_player/__init__.py +2 -2
  200. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +2 -2
  201. esphome/components/iaqcore/iaqcore.h +0 -2
  202. esphome/components/image/__init__.py +123 -24
  203. esphome/components/improv_serial/improv_serial_component.cpp +0 -4
  204. esphome/components/ina219/ina219.cpp +7 -0
  205. esphome/components/ina219/ina219.h +1 -0
  206. esphome/components/ina260/ina260.h +0 -2
  207. esphome/components/inkbird_ibsth1_mini/inkbird_ibsth1_mini.h +0 -1
  208. esphome/components/inkplate6/display.py +15 -0
  209. esphome/components/inkplate6/inkplate.cpp +2 -2
  210. esphome/components/integration/integration_sensor.h +0 -1
  211. esphome/components/internal_temperature/internal_temperature.cpp +8 -27
  212. esphome/components/internal_temperature/sensor.py +0 -26
  213. esphome/components/interval/interval.h +0 -2
  214. esphome/components/ld2410/button/__init__.py +3 -3
  215. esphome/components/ld2410/button/factory_reset_button.cpp +9 -0
  216. esphome/components/ld2410/button/{reset_button.h → factory_reset_button.h} +2 -2
  217. esphome/components/ld2410/ld2410.cpp +430 -261
  218. esphome/components/ld2410/ld2410.h +44 -146
  219. esphome/components/ld2410/number/__init__.py +2 -2
  220. esphome/components/ld2410/sensor.py +1 -1
  221. esphome/components/ld2410/switch/__init__.py +1 -1
  222. esphome/components/ld2420/ld2420.cpp +196 -100
  223. esphome/components/ld2420/ld2420.h +46 -118
  224. esphome/components/ld2420/number/__init__.py +2 -2
  225. esphome/components/ld2420/sensor/__init__.py +6 -2
  226. esphome/components/ld2420/sensor/ld2420_sensor.h +1 -1
  227. esphome/components/ld2450/button/__init__.py +3 -3
  228. esphome/components/ld2450/button/factory_reset_button.cpp +9 -0
  229. esphome/components/ld2450/button/{reset_button.h → factory_reset_button.h} +2 -2
  230. esphome/components/ld2450/ld2450.cpp +384 -232
  231. esphome/components/ld2450/ld2450.h +60 -69
  232. esphome/components/ld2450/switch/__init__.py +1 -1
  233. esphome/components/ledc/ledc_output.cpp +1 -63
  234. esphome/components/libretiny/__init__.py +4 -3
  235. esphome/components/libretiny/const.py +5 -0
  236. esphome/components/libretiny/generate_components.py +1 -0
  237. esphome/components/libretiny/helpers.cpp +35 -0
  238. esphome/components/libretiny/lt_component.cpp +5 -3
  239. esphome/components/light/__init__.py +4 -2
  240. esphome/components/light/addressable_light.h +3 -3
  241. esphome/components/light/light_call.cpp +180 -243
  242. esphome/components/light/light_call.h +72 -20
  243. esphome/components/light/light_color_values.h +14 -14
  244. esphome/components/light/light_state.h +15 -13
  245. esphome/components/light/transformers.h +2 -2
  246. esphome/components/ln882x/__init__.py +52 -0
  247. esphome/components/ln882x/boards.py +285 -0
  248. esphome/components/lock/__init__.py +5 -2
  249. esphome/components/logger/__init__.py +40 -3
  250. esphome/components/logger/logger.cpp +47 -12
  251. esphome/components/logger/logger.h +80 -49
  252. esphome/components/logger/logger_esp32.cpp +3 -3
  253. esphome/components/lps22/__init__.py +0 -0
  254. esphome/components/lps22/lps22.cpp +75 -0
  255. esphome/components/lps22/lps22.h +27 -0
  256. esphome/components/lps22/sensor.py +58 -0
  257. esphome/components/ltr390/ltr390.h +0 -1
  258. esphome/components/ltr501/ltr501.h +0 -1
  259. esphome/components/ltr_als_ps/ltr_als_ps.h +0 -1
  260. esphome/components/lvgl/__init__.py +1 -1
  261. esphome/components/lvgl/schemas.py +66 -6
  262. esphome/components/lvgl/styles.py +24 -16
  263. esphome/components/lvgl/widgets/__init__.py +12 -2
  264. esphome/components/lvgl/widgets/lv_bar.py +40 -19
  265. esphome/components/m5stack_8angle/light/m5stack_8angle_light.cpp +1 -1
  266. esphome/components/max9611/max9611.h +0 -1
  267. esphome/components/mcp23016/__init__.py +1 -1
  268. esphome/components/mcp23xxx_base/__init__.py +1 -1
  269. esphome/components/mcp4461/__init__.py +1 -1
  270. esphome/components/mcp4461/output/__init__.py +3 -2
  271. esphome/components/mcp9600/mcp9600.h +0 -2
  272. esphome/components/md5/md5.cpp +3 -3
  273. esphome/components/md5/md5.h +1 -6
  274. esphome/components/mdns/__init__.py +22 -11
  275. esphome/components/media_player/__init__.py +4 -3
  276. esphome/components/micro_wake_word/__init__.py +1 -5
  277. esphome/components/micro_wake_word/streaming_model.cpp +2 -2
  278. esphome/components/microphone/microphone.cpp +7 -9
  279. esphome/components/microphone/microphone.h +0 -2
  280. esphome/components/mipi_spi/display.py +1 -0
  281. esphome/components/mmc5603/mmc5603.cpp +1 -1
  282. esphome/components/modbus/modbus.cpp +33 -15
  283. esphome/components/modbus/modbus.h +9 -0
  284. esphome/components/modbus_controller/__init__.py +42 -10
  285. esphome/components/modbus_controller/modbus_controller.cpp +92 -11
  286. esphome/components/modbus_controller/modbus_controller.h +61 -7
  287. esphome/components/mopeka_pro_check/mopeka_pro_check.h +0 -1
  288. esphome/components/mopeka_std_check/mopeka_std_check.h +0 -1
  289. esphome/components/mpl3115a2/mpl3115a2.h +0 -2
  290. esphome/components/mqtt/__init__.py +16 -0
  291. esphome/components/mqtt/mqtt_backend.h +2 -1
  292. esphome/components/mqtt/mqtt_backend_esp32.cpp +126 -45
  293. esphome/components/mqtt/mqtt_backend_esp32.h +106 -4
  294. esphome/components/mqtt/mqtt_client.cpp +15 -9
  295. esphome/components/mqtt/mqtt_client.h +8 -3
  296. esphome/components/ms8607/ms8607.h +0 -1
  297. esphome/components/neopixelbus/light.py +4 -1
  298. esphome/components/neopixelbus/neopixelbus_light.h +1 -1
  299. esphome/components/network/__init__.py +4 -1
  300. esphome/components/network/ip_address.h +1 -0
  301. esphome/components/nextion/__init__.py +16 -0
  302. esphome/components/nextion/base_component.py +1 -0
  303. esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +1 -1
  304. esphome/components/nextion/display.py +14 -4
  305. esphome/components/nextion/nextion.cpp +166 -101
  306. esphome/components/nextion/nextion.h +84 -53
  307. esphome/components/nextion/nextion_commands.cpp +11 -10
  308. esphome/components/nextion/nextion_component.cpp +28 -28
  309. esphome/components/nextion/nextion_component.h +53 -18
  310. esphome/components/nextion/nextion_component_base.h +3 -0
  311. esphome/components/nextion/nextion_upload.cpp +36 -0
  312. esphome/components/nextion/nextion_upload_arduino.cpp +10 -35
  313. esphome/components/nextion/nextion_upload_idf.cpp +9 -33
  314. esphome/components/nextion/sensor/nextion_sensor.cpp +1 -1
  315. esphome/components/nextion/switch/nextion_switch.cpp +1 -1
  316. esphome/components/nextion/text_sensor/nextion_textsensor.cpp +1 -1
  317. esphome/components/nfc/nfc.cpp +3 -22
  318. esphome/components/nfc/nfc.h +3 -3
  319. esphome/components/number/__init__.py +5 -2
  320. esphome/components/online_image/__init__.py +5 -0
  321. esphome/components/online_image/online_image.cpp +6 -2
  322. esphome/components/online_image/online_image.h +4 -1
  323. esphome/components/opentherm/opentherm.cpp +7 -12
  324. esphome/components/openthread/__init__.py +47 -40
  325. esphome/components/openthread/const.py +1 -0
  326. esphome/components/openthread/openthread_esp.cpp +27 -5
  327. esphome/components/opt3001/__init__.py +0 -0
  328. esphome/components/opt3001/opt3001.cpp +122 -0
  329. esphome/components/opt3001/opt3001.h +27 -0
  330. esphome/components/opt3001/sensor.py +35 -0
  331. esphome/components/ota/__init__.py +17 -0
  332. esphome/components/ota/ota_backend.h +27 -1
  333. esphome/components/ota/ota_backend_arduino_esp32.cpp +12 -2
  334. esphome/components/ota/ota_backend_arduino_esp32.h +3 -0
  335. esphome/components/ota/ota_backend_arduino_esp8266.cpp +18 -4
  336. esphome/components/ota/ota_backend_arduino_esp8266.h +3 -0
  337. esphome/components/ota/ota_backend_arduino_libretiny.cpp +12 -2
  338. esphome/components/ota/ota_backend_arduino_libretiny.h +3 -0
  339. esphome/components/ota/ota_backend_arduino_rp2040.cpp +9 -2
  340. esphome/components/ota/ota_backend_arduino_rp2040.h +3 -0
  341. esphome/components/ota/ota_backend_esp_idf.cpp +10 -16
  342. esphome/components/ota/ota_backend_esp_idf.h +1 -0
  343. esphome/components/packages/__init__.py +5 -2
  344. esphome/components/packet_transport/binary_sensor.py +61 -4
  345. esphome/components/packet_transport/packet_transport.cpp +31 -1
  346. esphome/components/packet_transport/packet_transport.h +11 -5
  347. esphome/components/pcf8574/__init__.py +1 -1
  348. esphome/components/pi4ioe5v6408/__init__.py +84 -0
  349. esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +171 -0
  350. esphome/components/pi4ioe5v6408/pi4ioe5v6408.h +70 -0
  351. esphome/components/pmsa003i/pmsa003i.h +0 -1
  352. esphome/components/pmsx003/pmsx003.h +0 -1
  353. esphome/components/pn7150/pn7150.cpp +7 -7
  354. esphome/components/pn7150/pn7150.h +0 -1
  355. esphome/components/pn7160/pn7160.cpp +7 -7
  356. esphome/components/pn7160/pn7160.h +0 -1
  357. esphome/components/preferences/syncer.h +2 -0
  358. esphome/components/prometheus/prometheus_handler.h +1 -1
  359. esphome/components/psram/psram.cpp +0 -20
  360. esphome/components/pulse_counter/pulse_counter_sensor.h +0 -1
  361. esphome/components/pulse_meter/pulse_meter_sensor.cpp +8 -4
  362. esphome/components/pulse_width/pulse_width.h +0 -1
  363. esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +0 -4
  364. esphome/components/pvvx_mithermometer/display/pvvx_display.h +0 -2
  365. esphome/components/pvvx_mithermometer/pvvx_mithermometer.h +0 -1
  366. esphome/components/qr_code/__init__.py +13 -10
  367. esphome/components/qwiic_pir/qwiic_pir.h +0 -1
  368. esphome/components/radon_eye_ble/radon_eye_listener.cpp +1 -1
  369. esphome/components/rc522/rc522.h +0 -1
  370. esphome/components/rdm6300/rdm6300.h +0 -2
  371. esphome/components/remote_base/__init__.py +7 -5
  372. esphome/components/remote_base/remote_base.cpp +24 -21
  373. esphome/components/remote_base/remote_base.h +3 -26
  374. esphome/components/remote_receiver/__init__.py +40 -46
  375. esphome/components/remote_receiver/remote_receiver.h +4 -18
  376. esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -87
  377. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +1 -1
  378. esphome/components/remote_transmitter/__init__.py +42 -43
  379. esphome/components/remote_transmitter/remote_transmitter.h +2 -14
  380. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -77
  381. esphome/components/resistance/resistance_sensor.h +0 -1
  382. esphome/components/rp2040/__init__.py +1 -0
  383. esphome/components/rp2040/helpers.cpp +55 -0
  384. esphome/components/rp2040_pio_led_strip/led_strip.cpp +2 -2
  385. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -4
  386. esphome/components/rtttl/__init__.py +4 -4
  387. esphome/components/rtttl/rtttl.cpp +10 -1
  388. esphome/components/ruuvitag/ruuvitag.h +0 -1
  389. esphome/components/safe_mode/safe_mode.cpp +2 -0
  390. esphome/components/safe_mode/safe_mode.h +4 -1
  391. esphome/components/scd30/scd30.h +0 -1
  392. esphome/components/scd30/sensor.py +2 -2
  393. esphome/components/scd4x/scd4x.cpp +61 -54
  394. esphome/components/scd4x/scd4x.h +17 -15
  395. esphome/components/scd4x/sensor.py +4 -4
  396. esphome/components/script/script.h +0 -2
  397. esphome/components/sdp3x/sensor.py +1 -1
  398. esphome/components/select/__init__.py +5 -2
  399. esphome/components/sen5x/sen5x.h +0 -1
  400. esphome/components/senseair/senseair.h +0 -1
  401. esphome/components/sensor/__init__.py +4 -2
  402. esphome/components/sensor/filter.cpp +1 -1
  403. esphome/components/sensor/sensor.cpp +12 -6
  404. esphome/components/sensor/sensor.h +13 -5
  405. esphome/components/servo/servo.h +0 -1
  406. esphome/components/sfa30/sfa30.h +0 -1
  407. esphome/components/sgp30/sgp30.h +0 -1
  408. esphome/components/sgp4x/sgp4x.h +0 -1
  409. esphome/components/shelly_dimmer/stm32flash.cpp +1 -2
  410. esphome/components/sht4x/sht4x.h +0 -1
  411. esphome/components/sm300d2/sm300d2.h +0 -2
  412. esphome/components/smt100/sensor.py +8 -4
  413. esphome/components/smt100/smt100.cpp +5 -5
  414. esphome/components/smt100/smt100.h +3 -3
  415. esphome/components/sn74hc595/__init__.py +1 -1
  416. esphome/components/sn74hc595/sn74hc595.cpp +5 -4
  417. esphome/components/sntp/sntp_component.cpp +9 -3
  418. esphome/components/sntp/time.py +2 -0
  419. esphome/components/socket/__init__.py +17 -0
  420. esphome/components/spi/__init__.py +27 -6
  421. esphome/components/spi/spi.cpp +3 -2
  422. esphome/components/spi/spi.h +9 -3
  423. esphome/components/spi/spi_arduino.cpp +3 -5
  424. esphome/components/spi/spi_esp_idf.cpp +40 -21
  425. esphome/components/spi_led_strip/spi_led_strip.cpp +1 -1
  426. esphome/components/sps30/sps30.h +0 -1
  427. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  428. esphome/components/st7701s/st7701s.cpp +0 -4
  429. esphome/components/status/status_binary_sensor.h +0 -2
  430. esphome/components/substitutions/__init__.py +76 -19
  431. esphome/components/substitutions/jinja.py +99 -0
  432. esphome/components/sun/sun.cpp +3 -4
  433. esphome/components/switch/__init__.py +5 -2
  434. esphome/components/switch/binary_sensor/switch_binary_sensor.h +0 -1
  435. esphome/components/sx126x/__init__.py +317 -0
  436. esphome/components/sx126x/automation.h +62 -0
  437. esphome/components/sx126x/packet_transport/__init__.py +26 -0
  438. esphome/components/sx126x/packet_transport/sx126x_transport.cpp +26 -0
  439. esphome/components/sx126x/packet_transport/sx126x_transport.h +25 -0
  440. esphome/components/sx126x/sx126x.cpp +523 -0
  441. esphome/components/sx126x/sx126x.h +140 -0
  442. esphome/components/sx126x/sx126x_reg.h +163 -0
  443. esphome/components/sx127x/__init__.py +325 -0
  444. esphome/components/sx127x/automation.h +62 -0
  445. esphome/components/sx127x/packet_transport/__init__.py +26 -0
  446. esphome/components/sx127x/packet_transport/sx127x_transport.cpp +26 -0
  447. esphome/components/sx127x/packet_transport/sx127x_transport.h +25 -0
  448. esphome/components/sx127x/sx127x.cpp +498 -0
  449. esphome/components/sx127x/sx127x.h +128 -0
  450. esphome/components/sx127x/sx127x_reg.h +295 -0
  451. esphome/components/syslog/esphome_syslog.cpp +5 -3
  452. esphome/components/syslog/esphome_syslog.h +1 -1
  453. esphome/components/tca9555/__init__.py +1 -1
  454. esphome/components/template/binary_sensor/template_binary_sensor.cpp +1 -9
  455. esphome/components/text/__init__.py +5 -2
  456. esphome/components/text_sensor/__init__.py +5 -2
  457. esphome/components/thermostat/thermostat_climate.cpp +34 -31
  458. esphome/components/thermostat/thermostat_climate.h +43 -39
  459. esphome/components/time/__init__.py +16 -2
  460. esphome/components/time/real_time_clock.cpp +4 -0
  461. esphome/components/time/real_time_clock.h +5 -1
  462. esphome/components/tlc5971/tlc5971.cpp +4 -1
  463. esphome/components/tmp1075/tmp1075.h +0 -2
  464. esphome/components/tof10120/tof10120_sensor.h +0 -1
  465. esphome/components/tormatic/tormatic_cover.h +0 -1
  466. esphome/components/total_daily_energy/total_daily_energy.h +0 -1
  467. esphome/components/tsl2591/tsl2591.cpp +1 -1
  468. esphome/components/ttp229_bsf/ttp229_bsf.h +0 -1
  469. esphome/components/ttp229_lsf/ttp229_lsf.h +0 -1
  470. esphome/components/tx20/tx20.cpp +2 -2
  471. esphome/components/uart/__init__.py +18 -0
  472. esphome/components/uart/uart_component_esp_idf.cpp +1 -5
  473. esphome/components/update/__init__.py +5 -2
  474. esphome/components/update/update_entity.h +8 -0
  475. esphome/components/usb_host/__init__.py +5 -2
  476. esphome/components/valve/__init__.py +5 -2
  477. esphome/components/vbus/vbus.h +0 -1
  478. esphome/components/veml3235/veml3235.h +0 -1
  479. esphome/components/veml7700/veml7700.h +0 -1
  480. esphome/components/vl53l0x/vl53l0x_sensor.h +0 -1
  481. esphome/components/voice_assistant/voice_assistant.cpp +4 -4
  482. esphome/components/watchdog/watchdog.cpp +0 -4
  483. esphome/components/waveshare_epaper/waveshare_epaper.cpp +6 -6
  484. esphome/components/web_server/__init__.py +34 -19
  485. esphome/components/web_server/ota/__init__.py +32 -0
  486. esphome/components/web_server/ota/ota_web_server.cpp +210 -0
  487. esphome/components/web_server/ota/ota_web_server.h +26 -0
  488. esphome/components/web_server/web_server.cpp +311 -430
  489. esphome/components/web_server/web_server.h +33 -23
  490. esphome/components/web_server/web_server_v1.cpp +4 -5
  491. esphome/components/web_server_base/__init__.py +5 -2
  492. esphome/components/web_server_base/web_server_base.cpp +2 -94
  493. esphome/components/web_server_base/web_server_base.h +5 -25
  494. esphome/components/web_server_idf/multipart.cpp +254 -0
  495. esphome/components/web_server_idf/multipart.h +86 -0
  496. esphome/components/web_server_idf/utils.cpp +32 -0
  497. esphome/components/web_server_idf/utils.h +10 -0
  498. esphome/components/web_server_idf/web_server_idf.cpp +162 -16
  499. esphome/components/web_server_idf/web_server_idf.h +11 -10
  500. esphome/components/wiegand/wiegand.cpp +2 -2
  501. esphome/components/wifi/__init__.py +18 -0
  502. esphome/components/wifi/wifi_component.cpp +17 -22
  503. esphome/components/wifi/wifi_component.h +27 -23
  504. esphome/components/wifi/wifi_component_esp32_arduino.cpp +52 -59
  505. esphome/components/wifi/wifi_component_esp8266.cpp +46 -46
  506. esphome/components/wifi/wifi_component_esp_idf.cpp +35 -36
  507. esphome/components/wifi/wifi_component_libretiny.cpp +26 -27
  508. esphome/components/wifi/wifi_component_pico_w.cpp +3 -3
  509. esphome/components/wifi_info/wifi_info_text_sensor.cpp +6 -6
  510. esphome/components/wireguard/__init__.py +2 -11
  511. esphome/components/xiaomi_ble/xiaomi_ble.cpp +13 -1
  512. esphome/components/xiaomi_ble/xiaomi_ble.h +1 -0
  513. esphome/components/xiaomi_cgd1/xiaomi_cgd1.h +0 -1
  514. esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h +0 -1
  515. esphome/components/xiaomi_cgg1/xiaomi_cgg1.h +0 -1
  516. esphome/components/xiaomi_cgpr1/xiaomi_cgpr1.h +0 -1
  517. esphome/components/xiaomi_gcls002/xiaomi_gcls002.h +0 -1
  518. esphome/components/xiaomi_hhccjcy01/xiaomi_hhccjcy01.h +0 -1
  519. esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.h +0 -1
  520. esphome/components/xiaomi_hhccpot002/xiaomi_hhccpot002.h +0 -1
  521. esphome/components/xiaomi_jqjcy01ym/xiaomi_jqjcy01ym.h +0 -1
  522. esphome/components/xiaomi_lywsd02/xiaomi_lywsd02.h +0 -1
  523. esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.h +0 -1
  524. esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.h +0 -1
  525. esphome/components/xiaomi_lywsdcgq/xiaomi_lywsdcgq.h +0 -1
  526. esphome/components/xiaomi_mhoc303/xiaomi_mhoc303.h +0 -1
  527. esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.h +0 -1
  528. esphome/components/xiaomi_miscale/xiaomi_miscale.h +0 -1
  529. esphome/components/xiaomi_mjyd02yla/xiaomi_mjyd02yla.h +0 -1
  530. esphome/components/xiaomi_mue4094rt/xiaomi_mue4094rt.h +0 -1
  531. esphome/components/xiaomi_rtcgq02lm/xiaomi_rtcgq02lm.h +0 -1
  532. esphome/components/xiaomi_wx08zm/xiaomi_wx08zm.h +0 -1
  533. esphome/components/xiaomi_xmwsdj04mmc/__init__.py +0 -0
  534. esphome/components/xiaomi_xmwsdj04mmc/sensor.py +77 -0
  535. esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.cpp +77 -0
  536. esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.h +36 -0
  537. esphome/components/zio_ultrasonic/zio_ultrasonic.h +0 -2
  538. esphome/components/zyaura/zyaura.h +0 -1
  539. esphome/config.py +88 -22
  540. esphome/config_helpers.py +74 -1
  541. esphome/config_validation.py +12 -1
  542. esphome/const.py +65 -10
  543. esphome/core/__init__.py +18 -2
  544. esphome/core/application.cpp +163 -10
  545. esphome/core/application.h +145 -165
  546. esphome/core/area.h +19 -0
  547. esphome/core/automation.h +58 -9
  548. esphome/core/color.cpp +3 -5
  549. esphome/core/color.h +16 -16
  550. esphome/core/component.cpp +151 -18
  551. esphome/core/component.h +98 -4
  552. esphome/core/component_iterator.cpp +7 -7
  553. esphome/core/component_iterator.h +9 -7
  554. esphome/core/config.py +155 -6
  555. esphome/core/controller.cpp +4 -2
  556. esphome/core/controller.h +1 -1
  557. esphome/core/datatypes.h +2 -2
  558. esphome/core/defines.h +17 -2
  559. esphome/core/device.h +20 -0
  560. esphome/core/entity_base.cpp +20 -15
  561. esphome/core/entity_base.h +76 -0
  562. esphome/core/entity_helpers.py +162 -1
  563. esphome/core/event_pool.h +81 -0
  564. esphome/core/helpers.cpp +75 -230
  565. esphome/core/helpers.h +164 -104
  566. esphome/core/lock_free_queue.h +151 -0
  567. esphome/core/log.cpp +2 -2
  568. esphome/core/log.h +2 -0
  569. esphome/core/optional.h +5 -0
  570. esphome/core/ring_buffer.cpp +2 -2
  571. esphome/core/scheduler.cpp +278 -103
  572. esphome/core/scheduler.h +157 -17
  573. esphome/core/time.cpp +5 -5
  574. esphome/core/time.h +5 -5
  575. esphome/cpp_generator.py +17 -0
  576. esphome/cpp_helpers.py +0 -22
  577. esphome/cpp_types.py +3 -1
  578. esphome/dashboard/entries.py +1 -1
  579. esphome/dashboard/util/text.py +5 -21
  580. esphome/dashboard/web_server.py +9 -1
  581. esphome/helpers.py +47 -0
  582. esphome/loader.py +15 -1
  583. esphome/pins.py +14 -8
  584. esphome/wizard.py +16 -3
  585. esphome/writer.py +21 -3
  586. esphome/yaml_util.py +0 -2
  587. {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/METADATA +10 -9
  588. {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/RECORD +593 -533
  589. esphome/components/esp32_ble/ble_event_pool.h +0 -72
  590. esphome/components/esp32_ble/queue.h +0 -85
  591. esphome/components/esp32_hall/esp32_hall.cpp +0 -25
  592. esphome/components/esp32_hall/esp32_hall.h +0 -23
  593. esphome/components/esp32_touch/esp32_touch.cpp +0 -355
  594. esphome/components/ld2410/button/reset_button.cpp +0 -9
  595. esphome/components/ld2450/button/reset_button.cpp +0 -9
  596. esphome/components/openthread/tlv.py +0 -65
  597. /esphome/{dashboard/enum.py → enum.py} +0 -0
  598. {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/WHEEL +0 -0
  599. {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/entry_points.txt +0 -0
  600. {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/licenses/LICENSE +0 -0
  601. {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/top_level.txt +0 -0
@@ -1,72 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef USE_ESP32
4
-
5
- #include <atomic>
6
- #include <cstddef>
7
- #include "ble_event.h"
8
- #include "queue.h"
9
- #include "esphome/core/helpers.h"
10
-
11
- namespace esphome {
12
- namespace esp32_ble {
13
-
14
- // BLE Event Pool - On-demand pool of BLEEvent objects to avoid heap fragmentation
15
- // Events are allocated on first use and reused thereafter, growing to peak usage
16
- template<uint8_t SIZE> class BLEEventPool {
17
- public:
18
- BLEEventPool() : total_created_(0) {}
19
-
20
- ~BLEEventPool() {
21
- // Clean up any remaining events in the free list
22
- BLEEvent *event;
23
- while ((event = this->free_list_.pop()) != nullptr) {
24
- delete event;
25
- }
26
- }
27
-
28
- // Allocate an event from the pool
29
- // Returns nullptr if pool is full
30
- BLEEvent *allocate() {
31
- // Try to get from free list first
32
- BLEEvent *event = this->free_list_.pop();
33
- if (event != nullptr)
34
- return event;
35
-
36
- // Need to create a new event
37
- if (this->total_created_ >= SIZE) {
38
- // Pool is at capacity
39
- return nullptr;
40
- }
41
-
42
- // Use internal RAM for better performance
43
- RAMAllocator<BLEEvent> allocator(RAMAllocator<BLEEvent>::ALLOC_INTERNAL);
44
- event = allocator.allocate(1);
45
-
46
- if (event == nullptr) {
47
- // Memory allocation failed
48
- return nullptr;
49
- }
50
-
51
- // Placement new to construct the object
52
- new (event) BLEEvent();
53
- this->total_created_++;
54
- return event;
55
- }
56
-
57
- // Return an event to the pool for reuse
58
- void release(BLEEvent *event) {
59
- if (event != nullptr) {
60
- this->free_list_.push(event);
61
- }
62
- }
63
-
64
- private:
65
- LockFreeQueue<BLEEvent, SIZE> free_list_; // Free events ready for reuse
66
- uint8_t total_created_; // Total events created (high water mark)
67
- };
68
-
69
- } // namespace esp32_ble
70
- } // namespace esphome
71
-
72
- #endif
@@ -1,85 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef USE_ESP32
4
-
5
- #include <atomic>
6
- #include <cstddef>
7
-
8
- /*
9
- * BLE events come in from a separate Task (thread) in the ESP32 stack. Rather
10
- * than using mutex-based locking, this lock-free queue allows the BLE
11
- * task to enqueue events without blocking. The main loop() then processes
12
- * these events at a safer time.
13
- *
14
- * This is a Single-Producer Single-Consumer (SPSC) lock-free ring buffer.
15
- * The BLE task is the only producer, and the main loop() is the only consumer.
16
- */
17
-
18
- namespace esphome {
19
- namespace esp32_ble {
20
-
21
- template<class T, uint8_t SIZE> class LockFreeQueue {
22
- public:
23
- LockFreeQueue() : head_(0), tail_(0), dropped_count_(0) {}
24
-
25
- bool push(T *element) {
26
- if (element == nullptr)
27
- return false;
28
-
29
- uint8_t current_tail = tail_.load(std::memory_order_relaxed);
30
- uint8_t next_tail = (current_tail + 1) % SIZE;
31
-
32
- if (next_tail == head_.load(std::memory_order_acquire)) {
33
- // Buffer full
34
- dropped_count_.fetch_add(1, std::memory_order_relaxed);
35
- return false;
36
- }
37
-
38
- buffer_[current_tail] = element;
39
- tail_.store(next_tail, std::memory_order_release);
40
- return true;
41
- }
42
-
43
- T *pop() {
44
- uint8_t current_head = head_.load(std::memory_order_relaxed);
45
-
46
- if (current_head == tail_.load(std::memory_order_acquire)) {
47
- return nullptr; // Empty
48
- }
49
-
50
- T *element = buffer_[current_head];
51
- head_.store((current_head + 1) % SIZE, std::memory_order_release);
52
- return element;
53
- }
54
-
55
- size_t size() const {
56
- uint8_t tail = tail_.load(std::memory_order_acquire);
57
- uint8_t head = head_.load(std::memory_order_acquire);
58
- return (tail - head + SIZE) % SIZE;
59
- }
60
-
61
- uint16_t get_and_reset_dropped_count() { return dropped_count_.exchange(0, std::memory_order_relaxed); }
62
-
63
- void increment_dropped_count() { dropped_count_.fetch_add(1, std::memory_order_relaxed); }
64
-
65
- bool empty() const { return head_.load(std::memory_order_acquire) == tail_.load(std::memory_order_acquire); }
66
-
67
- bool full() const {
68
- uint8_t next_tail = (tail_.load(std::memory_order_relaxed) + 1) % SIZE;
69
- return next_tail == head_.load(std::memory_order_acquire);
70
- }
71
-
72
- protected:
73
- T *buffer_[SIZE];
74
- // Atomic: written by producer (push/increment), read+reset by consumer (get_and_reset)
75
- std::atomic<uint16_t> dropped_count_; // 65535 max - more than enough for drop tracking
76
- // Atomic: written by consumer (pop), read by producer (push) to check if full
77
- std::atomic<uint8_t> head_;
78
- // Atomic: written by producer (push), read by consumer (pop) to check if empty
79
- std::atomic<uint8_t> tail_;
80
- };
81
-
82
- } // namespace esp32_ble
83
- } // namespace esphome
84
-
85
- #endif
@@ -1,25 +0,0 @@
1
- #ifdef USE_ESP32
2
- #include "esp32_hall.h"
3
- #include "esphome/core/log.h"
4
- #include "esphome/core/hal.h"
5
- #include <driver/adc.h>
6
-
7
- namespace esphome {
8
- namespace esp32_hall {
9
-
10
- static const char *const TAG = "esp32_hall";
11
-
12
- void ESP32HallSensor::update() {
13
- adc1_config_width(ADC_WIDTH_BIT_12);
14
- int value_int = hall_sensor_read();
15
- float value = (value_int / 4095.0f) * 10000.0f;
16
- ESP_LOGD(TAG, "'%s': Got reading %.0f µT", this->name_.c_str(), value);
17
- this->publish_state(value);
18
- }
19
- std::string ESP32HallSensor::unique_id() { return get_mac_address() + "-hall"; }
20
- void ESP32HallSensor::dump_config() { LOG_SENSOR("", "ESP32 Hall Sensor", this); }
21
-
22
- } // namespace esp32_hall
23
- } // namespace esphome
24
-
25
- #endif
@@ -1,23 +0,0 @@
1
- #pragma once
2
-
3
- #include "esphome/core/component.h"
4
- #include "esphome/components/sensor/sensor.h"
5
-
6
- #ifdef USE_ESP32
7
-
8
- namespace esphome {
9
- namespace esp32_hall {
10
-
11
- class ESP32HallSensor : public sensor::Sensor, public PollingComponent {
12
- public:
13
- void dump_config() override;
14
-
15
- void update() override;
16
-
17
- std::string unique_id() override;
18
- };
19
-
20
- } // namespace esp32_hall
21
- } // namespace esphome
22
-
23
- #endif
@@ -1,355 +0,0 @@
1
- #ifdef USE_ESP32
2
-
3
- #include "esp32_touch.h"
4
- #include "esphome/core/application.h"
5
- #include "esphome/core/log.h"
6
- #include "esphome/core/hal.h"
7
-
8
- #include <cinttypes>
9
-
10
- namespace esphome {
11
- namespace esp32_touch {
12
-
13
- static const char *const TAG = "esp32_touch";
14
-
15
- void ESP32TouchComponent::setup() {
16
- ESP_LOGCONFIG(TAG, "Running setup");
17
- touch_pad_init();
18
- // set up and enable/start filtering based on ESP32 variant
19
- #if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
20
- if (this->filter_configured_()) {
21
- touch_filter_config_t filter_info = {
22
- .mode = this->filter_mode_,
23
- .debounce_cnt = this->debounce_count_,
24
- .noise_thr = this->noise_threshold_,
25
- .jitter_step = this->jitter_step_,
26
- .smh_lvl = this->smooth_level_,
27
- };
28
- touch_pad_filter_set_config(&filter_info);
29
- touch_pad_filter_enable();
30
- }
31
-
32
- if (this->denoise_configured_()) {
33
- touch_pad_denoise_t denoise = {
34
- .grade = this->grade_,
35
- .cap_level = this->cap_level_,
36
- };
37
- touch_pad_denoise_set_config(&denoise);
38
- touch_pad_denoise_enable();
39
- }
40
-
41
- if (this->waterproof_configured_()) {
42
- touch_pad_waterproof_t waterproof = {
43
- .guard_ring_pad = this->waterproof_guard_ring_pad_,
44
- .shield_driver = this->waterproof_shield_driver_,
45
- };
46
- touch_pad_waterproof_set_config(&waterproof);
47
- touch_pad_waterproof_enable();
48
- }
49
- #else
50
- if (this->iir_filter_enabled_()) {
51
- touch_pad_filter_start(this->iir_filter_);
52
- }
53
- #endif
54
-
55
- #if ESP_IDF_VERSION_MAJOR >= 5 && defined(USE_ESP32_VARIANT_ESP32)
56
- touch_pad_set_measurement_clock_cycles(this->meas_cycle_);
57
- touch_pad_set_measurement_interval(this->sleep_cycle_);
58
- #else
59
- touch_pad_set_meas_time(this->sleep_cycle_, this->meas_cycle_);
60
- #endif
61
- touch_pad_set_voltage(this->high_voltage_reference_, this->low_voltage_reference_, this->voltage_attenuation_);
62
-
63
- for (auto *child : this->children_) {
64
- #if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
65
- touch_pad_config(child->get_touch_pad());
66
- #else
67
- // Disable interrupt threshold
68
- touch_pad_config(child->get_touch_pad(), 0);
69
- #endif
70
- }
71
- #if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
72
- touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER);
73
- touch_pad_fsm_start();
74
- #endif
75
- }
76
-
77
- void ESP32TouchComponent::dump_config() {
78
- ESP_LOGCONFIG(TAG,
79
- "Config for ESP32 Touch Hub:\n"
80
- " Meas cycle: %.2fms\n"
81
- " Sleep cycle: %.2fms",
82
- this->meas_cycle_ / (8000000.0f / 1000.0f), this->sleep_cycle_ / (150000.0f / 1000.0f));
83
-
84
- const char *lv_s;
85
- switch (this->low_voltage_reference_) {
86
- case TOUCH_LVOLT_0V5:
87
- lv_s = "0.5V";
88
- break;
89
- case TOUCH_LVOLT_0V6:
90
- lv_s = "0.6V";
91
- break;
92
- case TOUCH_LVOLT_0V7:
93
- lv_s = "0.7V";
94
- break;
95
- case TOUCH_LVOLT_0V8:
96
- lv_s = "0.8V";
97
- break;
98
- default:
99
- lv_s = "UNKNOWN";
100
- break;
101
- }
102
- ESP_LOGCONFIG(TAG, " Low Voltage Reference: %s", lv_s);
103
-
104
- const char *hv_s;
105
- switch (this->high_voltage_reference_) {
106
- case TOUCH_HVOLT_2V4:
107
- hv_s = "2.4V";
108
- break;
109
- case TOUCH_HVOLT_2V5:
110
- hv_s = "2.5V";
111
- break;
112
- case TOUCH_HVOLT_2V6:
113
- hv_s = "2.6V";
114
- break;
115
- case TOUCH_HVOLT_2V7:
116
- hv_s = "2.7V";
117
- break;
118
- default:
119
- hv_s = "UNKNOWN";
120
- break;
121
- }
122
- ESP_LOGCONFIG(TAG, " High Voltage Reference: %s", hv_s);
123
-
124
- const char *atten_s;
125
- switch (this->voltage_attenuation_) {
126
- case TOUCH_HVOLT_ATTEN_1V5:
127
- atten_s = "1.5V";
128
- break;
129
- case TOUCH_HVOLT_ATTEN_1V:
130
- atten_s = "1V";
131
- break;
132
- case TOUCH_HVOLT_ATTEN_0V5:
133
- atten_s = "0.5V";
134
- break;
135
- case TOUCH_HVOLT_ATTEN_0V:
136
- atten_s = "0V";
137
- break;
138
- default:
139
- atten_s = "UNKNOWN";
140
- break;
141
- }
142
- ESP_LOGCONFIG(TAG, " Voltage Attenuation: %s", atten_s);
143
-
144
- #if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
145
- if (this->filter_configured_()) {
146
- const char *filter_mode_s;
147
- switch (this->filter_mode_) {
148
- case TOUCH_PAD_FILTER_IIR_4:
149
- filter_mode_s = "IIR_4";
150
- break;
151
- case TOUCH_PAD_FILTER_IIR_8:
152
- filter_mode_s = "IIR_8";
153
- break;
154
- case TOUCH_PAD_FILTER_IIR_16:
155
- filter_mode_s = "IIR_16";
156
- break;
157
- case TOUCH_PAD_FILTER_IIR_32:
158
- filter_mode_s = "IIR_32";
159
- break;
160
- case TOUCH_PAD_FILTER_IIR_64:
161
- filter_mode_s = "IIR_64";
162
- break;
163
- case TOUCH_PAD_FILTER_IIR_128:
164
- filter_mode_s = "IIR_128";
165
- break;
166
- case TOUCH_PAD_FILTER_IIR_256:
167
- filter_mode_s = "IIR_256";
168
- break;
169
- case TOUCH_PAD_FILTER_JITTER:
170
- filter_mode_s = "JITTER";
171
- break;
172
- default:
173
- filter_mode_s = "UNKNOWN";
174
- break;
175
- }
176
- ESP_LOGCONFIG(TAG,
177
- " Filter mode: %s\n"
178
- " Debounce count: %" PRIu32 "\n"
179
- " Noise threshold coefficient: %" PRIu32 "\n"
180
- " Jitter filter step size: %" PRIu32,
181
- filter_mode_s, this->debounce_count_, this->noise_threshold_, this->jitter_step_);
182
- const char *smooth_level_s;
183
- switch (this->smooth_level_) {
184
- case TOUCH_PAD_SMOOTH_OFF:
185
- smooth_level_s = "OFF";
186
- break;
187
- case TOUCH_PAD_SMOOTH_IIR_2:
188
- smooth_level_s = "IIR_2";
189
- break;
190
- case TOUCH_PAD_SMOOTH_IIR_4:
191
- smooth_level_s = "IIR_4";
192
- break;
193
- case TOUCH_PAD_SMOOTH_IIR_8:
194
- smooth_level_s = "IIR_8";
195
- break;
196
- default:
197
- smooth_level_s = "UNKNOWN";
198
- break;
199
- }
200
- ESP_LOGCONFIG(TAG, " Smooth level: %s", smooth_level_s);
201
- }
202
-
203
- if (this->denoise_configured_()) {
204
- const char *grade_s;
205
- switch (this->grade_) {
206
- case TOUCH_PAD_DENOISE_BIT12:
207
- grade_s = "BIT12";
208
- break;
209
- case TOUCH_PAD_DENOISE_BIT10:
210
- grade_s = "BIT10";
211
- break;
212
- case TOUCH_PAD_DENOISE_BIT8:
213
- grade_s = "BIT8";
214
- break;
215
- case TOUCH_PAD_DENOISE_BIT4:
216
- grade_s = "BIT4";
217
- break;
218
- default:
219
- grade_s = "UNKNOWN";
220
- break;
221
- }
222
- ESP_LOGCONFIG(TAG, " Denoise grade: %s", grade_s);
223
-
224
- const char *cap_level_s;
225
- switch (this->cap_level_) {
226
- case TOUCH_PAD_DENOISE_CAP_L0:
227
- cap_level_s = "L0";
228
- break;
229
- case TOUCH_PAD_DENOISE_CAP_L1:
230
- cap_level_s = "L1";
231
- break;
232
- case TOUCH_PAD_DENOISE_CAP_L2:
233
- cap_level_s = "L2";
234
- break;
235
- case TOUCH_PAD_DENOISE_CAP_L3:
236
- cap_level_s = "L3";
237
- break;
238
- case TOUCH_PAD_DENOISE_CAP_L4:
239
- cap_level_s = "L4";
240
- break;
241
- case TOUCH_PAD_DENOISE_CAP_L5:
242
- cap_level_s = "L5";
243
- break;
244
- case TOUCH_PAD_DENOISE_CAP_L6:
245
- cap_level_s = "L6";
246
- break;
247
- case TOUCH_PAD_DENOISE_CAP_L7:
248
- cap_level_s = "L7";
249
- break;
250
- default:
251
- cap_level_s = "UNKNOWN";
252
- break;
253
- }
254
- ESP_LOGCONFIG(TAG, " Denoise capacitance level: %s", cap_level_s);
255
- }
256
- #else
257
- if (this->iir_filter_enabled_()) {
258
- ESP_LOGCONFIG(TAG, " IIR Filter: %" PRIu32 "ms", this->iir_filter_);
259
- } else {
260
- ESP_LOGCONFIG(TAG, " IIR Filter DISABLED");
261
- }
262
- #endif
263
-
264
- if (this->setup_mode_) {
265
- ESP_LOGCONFIG(TAG, " Setup Mode ENABLED");
266
- }
267
-
268
- for (auto *child : this->children_) {
269
- LOG_BINARY_SENSOR(" ", "Touch Pad", child);
270
- ESP_LOGCONFIG(TAG, " Pad: T%" PRIu32, (uint32_t) child->get_touch_pad());
271
- ESP_LOGCONFIG(TAG, " Threshold: %" PRIu32, child->get_threshold());
272
- }
273
- }
274
-
275
- uint32_t ESP32TouchComponent::component_touch_pad_read(touch_pad_t tp) {
276
- #if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
277
- uint32_t value = 0;
278
- if (this->filter_configured_()) {
279
- touch_pad_filter_read_smooth(tp, &value);
280
- } else {
281
- touch_pad_read_raw_data(tp, &value);
282
- }
283
- #else
284
- uint16_t value = 0;
285
- if (this->iir_filter_enabled_()) {
286
- touch_pad_read_filtered(tp, &value);
287
- } else {
288
- touch_pad_read(tp, &value);
289
- }
290
- #endif
291
- return value;
292
- }
293
-
294
- void ESP32TouchComponent::loop() {
295
- const uint32_t now = App.get_loop_component_start_time();
296
- bool should_print = this->setup_mode_ && now - this->setup_mode_last_log_print_ > 250;
297
- for (auto *child : this->children_) {
298
- child->value_ = this->component_touch_pad_read(child->get_touch_pad());
299
- #if !(defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3))
300
- child->publish_state(child->value_ < child->get_threshold());
301
- #else
302
- child->publish_state(child->value_ > child->get_threshold());
303
- #endif
304
-
305
- if (should_print) {
306
- ESP_LOGD(TAG, "Touch Pad '%s' (T%" PRIu32 "): %" PRIu32, child->get_name().c_str(),
307
- (uint32_t) child->get_touch_pad(), child->value_);
308
- }
309
-
310
- App.feed_wdt();
311
- }
312
-
313
- if (should_print) {
314
- // Avoid spamming logs
315
- this->setup_mode_last_log_print_ = now;
316
- }
317
- }
318
-
319
- void ESP32TouchComponent::on_shutdown() {
320
- bool is_wakeup_source = false;
321
-
322
- #if !(defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3))
323
- if (this->iir_filter_enabled_()) {
324
- touch_pad_filter_stop();
325
- touch_pad_filter_delete();
326
- }
327
- #endif
328
-
329
- for (auto *child : this->children_) {
330
- if (child->get_wakeup_threshold() != 0) {
331
- if (!is_wakeup_source) {
332
- is_wakeup_source = true;
333
- // Touch sensor FSM mode must be 'TOUCH_FSM_MODE_TIMER' to use it to wake-up.
334
- touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER);
335
- }
336
-
337
- #if !(defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3))
338
- // No filter available when using as wake-up source.
339
- touch_pad_config(child->get_touch_pad(), child->get_wakeup_threshold());
340
- #endif
341
- }
342
- }
343
-
344
- if (!is_wakeup_source) {
345
- touch_pad_deinit();
346
- }
347
- }
348
-
349
- ESP32TouchBinarySensor::ESP32TouchBinarySensor(touch_pad_t touch_pad, uint32_t threshold, uint32_t wakeup_threshold)
350
- : touch_pad_(touch_pad), threshold_(threshold), wakeup_threshold_(wakeup_threshold) {}
351
-
352
- } // namespace esp32_touch
353
- } // namespace esphome
354
-
355
- #endif
@@ -1,9 +0,0 @@
1
- #include "reset_button.h"
2
-
3
- namespace esphome {
4
- namespace ld2410 {
5
-
6
- void ResetButton::press_action() { this->parent_->factory_reset(); }
7
-
8
- } // namespace ld2410
9
- } // namespace esphome
@@ -1,9 +0,0 @@
1
- #include "reset_button.h"
2
-
3
- namespace esphome {
4
- namespace ld2450 {
5
-
6
- void ResetButton::press_action() { this->parent_->factory_reset(); }
7
-
8
- } // namespace ld2450
9
- } // namespace esphome
@@ -1,65 +0,0 @@
1
- # Sourced from https://gist.github.com/agners/0338576e0003318b63ec1ea75adc90f9
2
- import binascii
3
- import ipaddress
4
-
5
- from esphome.const import CONF_CHANNEL
6
-
7
- from . import (
8
- CONF_EXT_PAN_ID,
9
- CONF_MESH_LOCAL_PREFIX,
10
- CONF_NETWORK_KEY,
11
- CONF_NETWORK_NAME,
12
- CONF_PAN_ID,
13
- CONF_PSKC,
14
- )
15
-
16
- TLV_TYPES = {
17
- 0: CONF_CHANNEL,
18
- 1: CONF_PAN_ID,
19
- 2: CONF_EXT_PAN_ID,
20
- 3: CONF_NETWORK_NAME,
21
- 4: CONF_PSKC,
22
- 5: CONF_NETWORK_KEY,
23
- 7: CONF_MESH_LOCAL_PREFIX,
24
- }
25
-
26
-
27
- def parse_tlv(tlv) -> dict:
28
- data = binascii.a2b_hex(tlv)
29
- output = {}
30
- pos = 0
31
- while pos < len(data):
32
- tag = data[pos]
33
- pos += 1
34
- _len = data[pos]
35
- pos += 1
36
- val = data[pos : pos + _len]
37
- pos += _len
38
- if tag in TLV_TYPES:
39
- if tag == 3:
40
- output[TLV_TYPES[tag]] = val.decode("utf-8")
41
- elif tag == 7:
42
- mesh_local_prefix = binascii.hexlify(val).decode("utf-8")
43
- mesh_local_prefix_str = f"{mesh_local_prefix}0000000000000000"
44
- ipv6_bytes = bytes.fromhex(mesh_local_prefix_str)
45
- ipv6_address = ipaddress.IPv6Address(ipv6_bytes)
46
- output[TLV_TYPES[tag]] = f"{ipv6_address}/64"
47
- else:
48
- output[TLV_TYPES[tag]] = int.from_bytes(val)
49
- return output
50
-
51
-
52
- def main():
53
- import sys
54
-
55
- args = sys.argv[1:]
56
- parsed = parse_tlv(args[0])
57
- # print the parsed TLV data
58
- for key, value in parsed.items():
59
- if isinstance(value, bytes):
60
- value = value.hex()
61
- print(f"{key}: {value}")
62
-
63
-
64
- if __name__ == "__main__":
65
- main()
File without changes