esphome 2025.7.5__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.
Files changed (752) 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 +102 -52
  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/fs3000/fs3000.cpp +0 -2
  209. esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +0 -2
  210. esphome/components/ft63x6/ft63x6.cpp +0 -1
  211. esphome/components/gdk101/gdk101.cpp +0 -1
  212. esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +0 -1
  213. esphome/components/gl_r01_i2c/sensor.py +1 -1
  214. esphome/components/gpio/one_wire/gpio_one_wire.cpp +0 -1
  215. esphome/components/gpio/switch/gpio_switch.cpp +0 -2
  216. esphome/components/gpio_expander/cached_gpio.h +24 -15
  217. esphome/components/gps/__init__.py +6 -2
  218. esphome/components/gps/gps.cpp +50 -49
  219. esphome/components/gps/gps.h +4 -8
  220. esphome/components/gps/time/gps_time.cpp +3 -9
  221. esphome/components/gps/time/gps_time.h +4 -7
  222. esphome/components/graph/__init__.py +1 -1
  223. esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +0 -1
  224. esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +0 -1
  225. esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +21 -12
  226. esphome/components/gt911/touchscreen/gt911_touchscreen.h +26 -2
  227. esphome/components/haier/climate.py +5 -10
  228. esphome/components/haier/haier_base.cpp +0 -1
  229. esphome/components/hbridge/switch/hbridge_switch.cpp +0 -2
  230. esphome/components/hdc1080/hdc1080.cpp +0 -2
  231. esphome/components/heatpumpir/climate.py +2 -2
  232. esphome/components/hlw8012/hlw8012.cpp +0 -1
  233. esphome/components/hm3301/hm3301.cpp +0 -1
  234. esphome/components/hmc5883l/hmc5883l.cpp +0 -1
  235. esphome/components/homeassistant/__init__.py +1 -0
  236. esphome/components/homeassistant/number/__init__.py +1 -0
  237. esphome/components/homeassistant/number/homeassistant_number.cpp +11 -7
  238. esphome/components/homeassistant/switch/__init__.py +1 -0
  239. esphome/components/homeassistant/switch/homeassistant_switch.cpp +9 -5
  240. esphome/components/honeywellabp/honeywellabp.cpp +1 -4
  241. esphome/components/host/__init__.py +2 -0
  242. esphome/components/hte501/hte501.cpp +0 -1
  243. esphome/components/http_request/__init__.py +2 -3
  244. esphome/components/http_request/http_request_idf.cpp +2 -2
  245. esphome/components/htu21d/htu21d.cpp +0 -2
  246. esphome/components/htu31d/htu31d.cpp +0 -2
  247. esphome/components/hx711/hx711.cpp +0 -1
  248. esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +0 -1
  249. esphome/components/hydreon_rgxx/sensor.py +4 -5
  250. esphome/components/i2c/i2c_bus.h +1 -1
  251. esphome/components/i2c/i2c_bus_arduino.cpp +1 -2
  252. esphome/components/i2c/i2c_bus_esp_idf.cpp +192 -17
  253. esphome/components/i2c/i2c_bus_esp_idf.h +11 -1
  254. esphome/components/i2s_audio/__init__.py +6 -5
  255. esphome/components/i2s_audio/i2s_audio.cpp +0 -2
  256. esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +1 -4
  257. esphome/components/i2s_audio/microphone/__init__.py +4 -6
  258. esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +0 -1
  259. esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +2 -2
  260. esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +273 -269
  261. esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +19 -34
  262. esphome/components/ili9xxx/display.py +4 -3
  263. esphome/components/ili9xxx/ili9xxx_display.cpp +0 -2
  264. esphome/components/image/__init__.py +123 -92
  265. esphome/components/improv_serial/__init__.py +7 -8
  266. esphome/components/ina219/ina219.cpp +0 -1
  267. esphome/components/ina226/ina226.cpp +0 -2
  268. esphome/components/ina260/ina260.cpp +0 -2
  269. esphome/components/ina2xx_base/__init__.py +2 -5
  270. esphome/components/ina2xx_base/ina2xx_base.cpp +0 -2
  271. esphome/components/ina3221/ina3221.cpp +0 -1
  272. esphome/components/internal_temperature/internal_temperature.cpp +0 -2
  273. esphome/components/interval/interval.h +5 -9
  274. esphome/components/json/__init__.py +1 -1
  275. esphome/components/kmeteriso/kmeteriso.cpp +0 -2
  276. esphome/components/lc709203f/lc709203f.cpp +0 -2
  277. esphome/components/lcd_gpio/display.py +1 -3
  278. esphome/components/lcd_gpio/gpio_lcd_display.cpp +0 -1
  279. esphome/components/lcd_pcf8574/pcf8574_display.cpp +0 -1
  280. esphome/components/ld2410/__init__.py +4 -6
  281. esphome/components/ld2410/binary_sensor.py +4 -0
  282. esphome/components/ld2410/ld2410.cpp +56 -100
  283. esphome/components/ld2410/ld2410.h +17 -15
  284. esphome/components/ld2410/sensor.py +24 -10
  285. esphome/components/ld2412/__init__.py +46 -0
  286. esphome/components/ld2412/binary_sensor.py +70 -0
  287. esphome/components/ld2412/button/__init__.py +74 -0
  288. esphome/components/ld2412/button/factory_reset_button.cpp +9 -0
  289. esphome/components/ld2412/button/factory_reset_button.h +18 -0
  290. esphome/components/ld2412/button/query_button.cpp +9 -0
  291. esphome/components/ld2412/button/query_button.h +18 -0
  292. esphome/components/ld2412/button/restart_button.cpp +9 -0
  293. esphome/components/ld2412/button/restart_button.h +18 -0
  294. esphome/components/ld2412/button/start_dynamic_background_correction_button.cpp +11 -0
  295. esphome/components/ld2412/button/start_dynamic_background_correction_button.h +18 -0
  296. esphome/components/ld2412/ld2412.cpp +861 -0
  297. esphome/components/ld2412/ld2412.h +141 -0
  298. esphome/components/ld2412/number/__init__.py +126 -0
  299. esphome/components/ld2412/number/gate_threshold_number.cpp +14 -0
  300. esphome/components/ld2412/number/gate_threshold_number.h +19 -0
  301. esphome/components/ld2412/number/light_threshold_number.cpp +12 -0
  302. esphome/components/ld2412/number/light_threshold_number.h +18 -0
  303. esphome/components/ld2412/number/max_distance_timeout_number.cpp +12 -0
  304. esphome/components/ld2412/number/max_distance_timeout_number.h +18 -0
  305. esphome/components/ld2412/select/__init__.py +82 -0
  306. esphome/components/ld2412/select/baud_rate_select.cpp +12 -0
  307. esphome/components/ld2412/select/baud_rate_select.h +18 -0
  308. esphome/components/ld2412/select/distance_resolution_select.cpp +12 -0
  309. esphome/components/ld2412/select/distance_resolution_select.h +18 -0
  310. esphome/components/ld2412/select/light_out_control_select.cpp +12 -0
  311. esphome/components/ld2412/select/light_out_control_select.h +18 -0
  312. esphome/components/ld2412/sensor.py +124 -0
  313. esphome/components/ld2412/switch/__init__.py +45 -0
  314. esphome/components/ld2412/switch/bluetooth_switch.cpp +12 -0
  315. esphome/components/ld2412/switch/bluetooth_switch.h +18 -0
  316. esphome/components/ld2412/switch/engineering_mode_switch.cpp +12 -0
  317. esphome/components/ld2412/switch/engineering_mode_switch.h +18 -0
  318. esphome/components/ld2412/text_sensor.py +34 -0
  319. esphome/components/ld2420/ld2420.cpp +0 -1
  320. esphome/components/ld2450/__init__.py +3 -4
  321. esphome/components/ld2450/binary_sensor.py +3 -0
  322. esphome/components/ld2450/ld2450.cpp +77 -165
  323. esphome/components/ld2450/ld2450.h +26 -54
  324. esphome/components/ld2450/sensor.py +120 -6
  325. esphome/components/ld2450/text_sensor.py +5 -4
  326. esphome/components/ld24xx/__init__.py +1 -0
  327. esphome/components/ld24xx/ld24xx.h +65 -0
  328. esphome/components/ledc/ledc_output.cpp +0 -1
  329. esphome/components/libretiny/__init__.py +2 -0
  330. esphome/components/light/__init__.py +0 -1
  331. esphome/components/light/effects.py +70 -45
  332. esphome/components/light/light_call.cpp +101 -66
  333. esphome/components/light/light_color_values.h +16 -11
  334. esphome/components/light/light_json_schema.cpp +46 -44
  335. esphome/components/light/light_state.cpp +8 -11
  336. esphome/components/light/light_traits.h +17 -0
  337. esphome/components/lightwaverf/lightwaverf.cpp +0 -2
  338. esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +0 -1
  339. esphome/components/lock/__init__.py +0 -1
  340. esphome/components/logger/__init__.py +31 -9
  341. esphome/components/logger/logger.cpp +12 -7
  342. esphome/components/logger/logger.h +25 -14
  343. esphome/components/logger/logger_esp32.cpp +2 -7
  344. esphome/components/logger/logger_esp8266.cpp +2 -4
  345. esphome/components/logger/logger_host.cpp +2 -4
  346. esphome/components/logger/logger_libretiny.cpp +2 -4
  347. esphome/components/logger/logger_rp2040.cpp +2 -4
  348. esphome/components/logger/logger_zephyr.cpp +86 -0
  349. esphome/components/logger/select/logger_level_select.cpp +2 -4
  350. esphome/components/logger/select/logger_level_select.h +2 -4
  351. esphome/components/logger/task_log_buffer.cpp +2 -4
  352. esphome/components/logger/task_log_buffer.h +2 -4
  353. esphome/components/lps22/sensor.py +5 -5
  354. esphome/components/ltr390/ltr390.cpp +0 -2
  355. esphome/components/ltr501/ltr501.cpp +0 -1
  356. esphome/components/ltr_als_ps/ltr_als_ps.cpp +0 -1
  357. esphome/components/lvgl/__init__.py +14 -13
  358. esphome/components/lvgl/automation.py +2 -4
  359. esphome/components/lvgl/defines.py +0 -2
  360. esphome/components/lvgl/helpers.py +1 -1
  361. esphome/components/lvgl/lv_validation.py +7 -4
  362. esphome/components/lvgl/lvgl_esphome.cpp +2 -3
  363. esphome/components/lvgl/styles.py +2 -2
  364. esphome/components/lvgl/types.py +1 -1
  365. esphome/components/lvgl/widgets/__init__.py +2 -2
  366. esphome/components/lvgl/widgets/arc.py +14 -11
  367. esphome/components/lvgl/widgets/buttonmatrix.py +1 -1
  368. esphome/components/lvgl/widgets/qrcode.py +7 -7
  369. esphome/components/lvgl/widgets/spinner.py +6 -6
  370. esphome/components/lvgl/widgets/switch.py +2 -2
  371. esphome/components/lvgl/widgets/tabview.py +3 -3
  372. esphome/components/m5stack_8angle/m5stack_8angle.cpp +0 -1
  373. esphome/components/matrix_keypad/__init__.py +4 -3
  374. esphome/components/max17043/max17043.cpp +0 -2
  375. esphome/components/max31855/max31855.cpp +1 -4
  376. esphome/components/max31856/max31856.cpp +0 -4
  377. esphome/components/max31865/max31865.cpp +0 -1
  378. esphome/components/max44009/max44009.cpp +0 -1
  379. esphome/components/max6675/max6675.cpp +1 -4
  380. esphome/components/max6956/max6956.cpp +0 -1
  381. esphome/components/max7219/max7219.cpp +0 -1
  382. esphome/components/max7219digit/display.py +1 -1
  383. esphome/components/max7219digit/max7219digit.cpp +0 -1
  384. esphome/components/max9611/max9611.cpp +0 -1
  385. esphome/components/mcp23008/__init__.py +1 -1
  386. esphome/components/mcp23008/mcp23008.cpp +0 -1
  387. esphome/components/mcp23016/mcp23016.cpp +0 -1
  388. esphome/components/mcp23017/__init__.py +1 -1
  389. esphome/components/mcp23017/mcp23017.cpp +0 -1
  390. esphome/components/mcp23s08/__init__.py +1 -1
  391. esphome/components/mcp23s08/mcp23s08.cpp +0 -1
  392. esphome/components/mcp23s17/__init__.py +1 -1
  393. esphome/components/mcp23s17/mcp23s17.cpp +0 -1
  394. esphome/components/mcp23x08_base/__init__.py +2 -0
  395. esphome/components/mcp23x08_base/mcp23x08_base.cpp +9 -7
  396. esphome/components/mcp23x08_base/mcp23x08_base.h +9 -4
  397. esphome/components/mcp23x17_base/__init__.py +2 -0
  398. esphome/components/mcp23x17_base/mcp23x17_base.cpp +20 -7
  399. esphome/components/mcp23x17_base/mcp23x17_base.h +9 -4
  400. esphome/components/mcp23xxx_base/__init__.py +11 -5
  401. esphome/components/mcp23xxx_base/mcp23xxx_base.cpp +15 -12
  402. esphome/components/mcp23xxx_base/mcp23xxx_base.h +8 -7
  403. esphome/components/mcp3008/mcp3008.cpp +1 -4
  404. esphome/components/mcp3204/mcp3204.cpp +1 -4
  405. esphome/components/mcp4461/mcp4461.cpp +0 -1
  406. esphome/components/mcp4725/mcp4725.cpp +0 -1
  407. esphome/components/mcp4728/mcp4728.cpp +0 -1
  408. esphome/components/mcp9600/mcp9600.cpp +0 -2
  409. esphome/components/mcp9808/mcp9808.cpp +0 -2
  410. esphome/components/mdns/__init__.py +3 -0
  411. esphome/components/mdns/mdns_component.cpp +2 -0
  412. esphome/components/mdns/mdns_component.h +4 -0
  413. esphome/components/media_player/__init__.py +40 -0
  414. esphome/components/media_player/automation.h +16 -0
  415. esphome/components/media_player/media_player.cpp +13 -0
  416. esphome/components/media_player/media_player.h +50 -3
  417. esphome/components/micro_wake_word/micro_wake_word.cpp +0 -3
  418. esphome/components/mics_4514/mics_4514.cpp +1 -6
  419. esphome/components/midea/ir_transmitter.h +4 -4
  420. esphome/components/mipi/__init__.py +416 -0
  421. esphome/components/mipi_dsi/__init__.py +5 -0
  422. esphome/components/mipi_dsi/display.py +233 -0
  423. esphome/components/mipi_dsi/mipi_dsi.cpp +379 -0
  424. esphome/components/mipi_dsi/mipi_dsi.h +123 -0
  425. esphome/components/mipi_dsi/models/__init__.py +0 -0
  426. esphome/components/mipi_dsi/models/guition.py +38 -0
  427. esphome/components/mipi_dsi/models/m5stack.py +57 -0
  428. esphome/components/mipi_dsi/models/waveshare.py +105 -0
  429. esphome/components/mipi_rgb/models/lilygo.py +0 -0
  430. esphome/components/mipi_spi/__init__.py +0 -9
  431. esphome/components/mipi_spi/display.py +220 -256
  432. esphome/components/mipi_spi/mipi_spi.cpp +1 -485
  433. esphome/components/mipi_spi/mipi_spi.h +556 -108
  434. esphome/components/mipi_spi/models/__init__.py +0 -65
  435. esphome/components/mipi_spi/models/adafruit.py +30 -0
  436. esphome/components/mipi_spi/models/amoled.py +41 -5
  437. esphome/components/mipi_spi/models/ili.py +5 -5
  438. esphome/components/mipi_spi/models/jc.py +1 -3
  439. esphome/components/mipi_spi/models/lilygo.py +1 -1
  440. esphome/components/mipi_spi/models/waveshare.py +16 -1
  441. esphome/components/mixer/speaker/__init__.py +4 -5
  442. esphome/components/mlx90393/sensor.py +7 -5
  443. esphome/components/mlx90393/sensor_mlx90393.cpp +0 -1
  444. esphome/components/mlx90614/mlx90614.cpp +0 -1
  445. esphome/components/mmc5603/mmc5603.cpp +0 -1
  446. esphome/components/mmc5983/mmc5983.cpp +0 -2
  447. esphome/components/mpl3115a2/mpl3115a2.cpp +0 -2
  448. esphome/components/mpr121/__init__.py +7 -6
  449. esphome/components/mpr121/mpr121.cpp +0 -1
  450. esphome/components/mpu6050/mpu6050.cpp +0 -1
  451. esphome/components/mpu6886/mpu6886.cpp +0 -1
  452. esphome/components/mqtt/__init__.py +1 -2
  453. esphome/components/mqtt/mqtt_button.cpp +1 -1
  454. esphome/components/mqtt/mqtt_client.cpp +0 -1
  455. esphome/components/mqtt/mqtt_component.cpp +8 -14
  456. esphome/components/mqtt/mqtt_component.h +0 -7
  457. esphome/components/mqtt/mqtt_sensor.cpp +0 -1
  458. esphome/components/mqtt/mqtt_sensor.h +0 -1
  459. esphome/components/mqtt/mqtt_text_sensor.cpp +0 -1
  460. esphome/components/mqtt/mqtt_text_sensor.h +0 -1
  461. esphome/components/ms5611/ms5611.cpp +0 -1
  462. esphome/components/ms8607/ms8607.cpp +0 -1
  463. esphome/components/msa3xx/msa3xx.cpp +0 -2
  464. esphome/components/my9231/my9231.cpp +0 -2
  465. esphome/components/nau7802/nau7802.cpp +0 -1
  466. esphome/components/neopixelbus/light.py +3 -0
  467. esphome/components/network/util.cpp +29 -0
  468. esphome/components/nextion/nextion.cpp +0 -1
  469. esphome/components/nfc/binary_sensor/{binary_sensor.cpp → nfc_binary_sensor.cpp} +1 -1
  470. esphome/components/npi19/npi19.cpp +0 -2
  471. esphome/components/nrf52/__init__.py +223 -0
  472. esphome/components/nrf52/boards.py +34 -0
  473. esphome/components/nrf52/const.py +18 -0
  474. esphome/components/nrf52/gpio.py +79 -0
  475. esphome/components/number/__init__.py +2 -1
  476. esphome/components/one_wire/__init__.py +1 -2
  477. esphome/components/one_wire/one_wire.cpp +0 -2
  478. esphome/components/one_wire/one_wire.h +0 -2
  479. esphome/components/opentherm/hub.cpp +0 -1
  480. esphome/components/opentherm/number/__init__.py +2 -2
  481. esphome/components/openthread/__init__.py +2 -3
  482. esphome/components/openthread/openthread.cpp +30 -13
  483. esphome/components/openthread/openthread.h +3 -0
  484. esphome/components/openthread/openthread_esp.cpp +3 -1
  485. esphome/components/opt3001/sensor.py +2 -6
  486. esphome/components/output/__init__.py +38 -0
  487. esphome/components/output/automation.h +24 -0
  488. esphome/components/output/switch/output_switch.cpp +0 -2
  489. esphome/components/packages/__init__.py +1 -2
  490. esphome/components/packet_transport/__init__.py +4 -3
  491. esphome/components/pca6416a/pca6416a.cpp +0 -1
  492. esphome/components/pca9554/pca9554.cpp +0 -1
  493. esphome/components/pca9685/pca9685_output.cpp +0 -2
  494. esphome/components/pcf85063/pcf85063.cpp +0 -1
  495. esphome/components/pcf8563/pcf8563.cpp +0 -1
  496. esphome/components/pcf8574/pcf8574.cpp +0 -1
  497. esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +0 -1
  498. esphome/components/pipsolar/sensor/__init__.py +1 -1
  499. esphome/components/pm2005/pm2005.cpp +0 -1
  500. esphome/components/pmsa003i/pmsa003i.cpp +0 -2
  501. esphome/components/pmwcs3/sensor.py +1 -2
  502. esphome/components/pn532/pn532.cpp +0 -2
  503. esphome/components/pn532_spi/pn532_spi.cpp +0 -2
  504. esphome/components/power_supply/power_supply.cpp +7 -10
  505. esphome/components/power_supply/power_supply.h +1 -1
  506. esphome/components/psram/__init__.py +2 -1
  507. esphome/components/pulse_counter/pulse_counter_sensor.cpp +0 -1
  508. esphome/components/pulse_counter/sensor.py +9 -6
  509. esphome/components/pylontech/pylontech.cpp +0 -1
  510. esphome/components/qmc5883l/qmc5883l.cpp +0 -1
  511. esphome/components/qmp6988/qmp6988.cpp +0 -2
  512. esphome/components/qspi_dbi/display.py +2 -3
  513. esphome/components/qspi_dbi/qspi_dbi.cpp +0 -2
  514. esphome/components/qwiic_pir/binary_sensor.py +2 -3
  515. esphome/components/qwiic_pir/qwiic_pir.cpp +0 -2
  516. esphome/components/rc522/rc522.cpp +9 -31
  517. esphome/components/rc522_spi/rc522_spi.cpp +0 -1
  518. esphome/components/remote_base/__init__.py +5 -6
  519. esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -1
  520. esphome/components/remote_receiver/remote_receiver_esp8266.cpp +0 -1
  521. esphome/components/remote_receiver/remote_receiver_libretiny.cpp +0 -1
  522. esphome/components/remote_transmitter/__init__.py +26 -0
  523. esphome/components/remote_transmitter/automation.h +18 -0
  524. esphome/components/remote_transmitter/remote_transmitter.h +2 -1
  525. esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -1
  526. esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +2 -0
  527. esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +2 -0
  528. esphome/components/resampler/speaker/__init__.py +4 -5
  529. esphome/components/rf_bridge/__init__.py +4 -8
  530. esphome/components/rotary_encoder/rotary_encoder.cpp +0 -2
  531. esphome/components/rp2040/__init__.py +3 -1
  532. esphome/components/rp2040_pio_led_strip/led_strip.cpp +0 -2
  533. esphome/components/rp2040_pio_led_strip/light.py +1 -2
  534. esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -5
  535. esphome/components/rpi_dpi_rgb/display.py +13 -15
  536. esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -3
  537. esphome/components/runtime_stats/__init__.py +34 -0
  538. esphome/components/runtime_stats/runtime_stats.cpp +102 -0
  539. esphome/components/runtime_stats/runtime_stats.h +132 -0
  540. esphome/components/scd30/scd30.cpp +0 -2
  541. esphome/components/scd30/sensor.py +1 -2
  542. esphome/components/scd4x/scd4x.cpp +0 -1
  543. esphome/components/scd4x/sensor.py +1 -3
  544. esphome/components/sdl/display.py +3 -1
  545. esphome/components/sdl/sdl_esphome.cpp +0 -2
  546. esphome/components/sdp3x/sdp3x.cpp +0 -2
  547. esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +0 -2
  548. esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +0 -3
  549. esphome/components/select/__init__.py +2 -3
  550. esphome/components/select/select_traits.cpp +1 -1
  551. esphome/components/select/select_traits.h +1 -1
  552. esphome/components/sen0321/sen0321.cpp +0 -1
  553. esphome/components/sen5x/sen5x.cpp +0 -2
  554. esphome/components/sensor/__init__.py +36 -4
  555. esphome/components/sensor/filter.cpp +49 -10
  556. esphome/components/sensor/filter.h +22 -7
  557. esphome/components/sensor/sensor.cpp +0 -1
  558. esphome/components/sensor/sensor.h +0 -9
  559. esphome/components/sfa30/sfa30.cpp +0 -4
  560. esphome/components/sgp30/sgp30.cpp +0 -2
  561. esphome/components/sgp4x/sensor.py +1 -1
  562. esphome/components/sgp4x/sgp4x.cpp +0 -2
  563. esphome/components/shelly_dimmer/shelly_dimmer.cpp +0 -2
  564. esphome/components/sht3xd/sht3xd.cpp +0 -2
  565. esphome/components/sht4x/sht4x.cpp +0 -2
  566. esphome/components/shtcx/shtcx.cpp +0 -1
  567. esphome/components/sim800l/__init__.py +2 -4
  568. esphome/components/sm16716/sm16716.cpp +0 -1
  569. esphome/components/sm2135/sm2135.cpp +0 -1
  570. esphome/components/sm2235/sm2235.cpp +0 -1
  571. esphome/components/sm2335/sm2335.cpp +0 -1
  572. esphome/components/sn74hc165/sn74hc165.cpp +0 -1
  573. esphome/components/sn74hc595/sn74hc595.cpp +0 -1
  574. esphome/components/sntp/sntp_component.cpp +0 -1
  575. esphome/components/sound_level/sensor.py +1 -1
  576. esphome/components/speaker/media_player/__init__.py +21 -33
  577. esphome/components/speaker/media_player/audio_pipeline.cpp +4 -7
  578. esphome/components/spi/__init__.py +29 -13
  579. esphome/components/spi/spi.cpp +0 -2
  580. esphome/components/spi_device/spi_device.cpp +1 -4
  581. esphome/components/sprinkler/__init__.py +4 -4
  582. esphome/components/sps30/sps30.cpp +0 -1
  583. esphome/components/ssd1306_base/__init__.py +11 -11
  584. esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
  585. esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +0 -1
  586. esphome/components/ssd1306_spi/ssd1306_spi.cpp +0 -1
  587. esphome/components/ssd1322_spi/ssd1322_spi.cpp +0 -1
  588. esphome/components/ssd1325_spi/ssd1325_spi.cpp +0 -1
  589. esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +0 -1
  590. esphome/components/ssd1327_spi/ssd1327_spi.cpp +0 -1
  591. esphome/components/ssd1331_spi/ssd1331_spi.cpp +0 -1
  592. esphome/components/ssd1351_spi/ssd1351_spi.cpp +0 -1
  593. esphome/components/st7567_i2c/st7567_i2c.cpp +0 -1
  594. esphome/components/st7567_spi/st7567_spi.cpp +0 -1
  595. esphome/components/st7701s/display.py +10 -14
  596. esphome/components/st7701s/st7701s.cpp +0 -3
  597. esphome/components/st7735/st7735.cpp +0 -1
  598. esphome/components/st7789v/st7789v.cpp +0 -1
  599. esphome/components/st7920/st7920.cpp +0 -1
  600. esphome/components/status_led/light/status_led_light.cpp +0 -2
  601. esphome/components/status_led/status_led.cpp +0 -1
  602. esphome/components/stepper/__init__.py +2 -4
  603. esphome/components/sts3x/sts3x.cpp +0 -1
  604. esphome/components/substitutions/__init__.py +10 -16
  605. esphome/components/substitutions/jinja.py +24 -1
  606. esphome/components/sun/__init__.py +2 -3
  607. esphome/components/switch/__init__.py +31 -1
  608. esphome/components/switch/automation.h +24 -0
  609. esphome/components/switch/switch.cpp +8 -0
  610. esphome/components/switch/switch.h +8 -0
  611. esphome/components/sx126x/sx126x.cpp +0 -2
  612. esphome/components/sx127x/sx127x.cpp +0 -2
  613. esphome/components/sx1509/__init__.py +7 -5
  614. esphome/components/sx1509/output/sx1509_float_output.cpp +1 -1
  615. esphome/components/sx1509/sx1509.cpp +0 -2
  616. esphome/components/syslog/esphome_syslog.cpp +1 -1
  617. esphome/components/tc74/tc74.cpp +0 -1
  618. esphome/components/tca9548a/tca9548a.cpp +0 -1
  619. esphome/components/tca9555/tca9555.cpp +0 -1
  620. esphome/components/tcs34725/tcs34725.cpp +0 -1
  621. esphome/components/tee501/tee501.cpp +0 -1
  622. esphome/components/tem3200/tem3200.cpp +0 -2
  623. esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +0 -1
  624. esphome/components/template/cover/template_cover.cpp +0 -1
  625. esphome/components/template/select/template_select.cpp +0 -1
  626. esphome/components/template/text/template_text.cpp +0 -2
  627. esphome/components/template/valve/template_valve.cpp +0 -1
  628. esphome/components/text/__init__.py +0 -1
  629. esphome/components/text/text_traits.h +2 -0
  630. esphome/components/text_sensor/__init__.py +2 -1
  631. esphome/components/text_sensor/text_sensor.cpp +0 -2
  632. esphome/components/text_sensor/text_sensor.h +0 -8
  633. esphome/components/thermostat/climate.py +4 -4
  634. esphome/components/time/__init__.py +7 -4
  635. esphome/components/time/real_time_clock.cpp +16 -3
  636. esphome/components/tlc59208f/tlc59208f_output.cpp +0 -2
  637. esphome/components/tlc5947/tlc5947.cpp +0 -2
  638. esphome/components/tlc5971/tlc5971.cpp +0 -2
  639. esphome/components/tm1621/tm1621.cpp +0 -2
  640. esphome/components/tm1637/tm1637.cpp +0 -2
  641. esphome/components/tm1638/tm1638.cpp +0 -2
  642. esphome/components/tm1651/__init__.py +45 -48
  643. esphome/components/tm1651/tm1651.cpp +213 -47
  644. esphome/components/tm1651/tm1651.h +37 -32
  645. esphome/components/tmp117/tmp117.cpp +0 -2
  646. esphome/components/tsl2561/tsl2561.cpp +0 -1
  647. esphome/components/tsl2591/tsl2591.cpp +0 -1
  648. esphome/components/tt21100/touchscreen/tt21100.cpp +0 -2
  649. esphome/components/ttp229_bsf/ttp229_bsf.cpp +0 -1
  650. esphome/components/ttp229_lsf/ttp229_lsf.cpp +0 -1
  651. esphome/components/tuya/climate/__init__.py +9 -10
  652. esphome/components/tuya/number/__init__.py +8 -6
  653. esphome/components/tx20/tx20.cpp +0 -1
  654. esphome/components/uart/uart_component_esp32_arduino.cpp +0 -1
  655. esphome/components/uart/uart_component_esp8266.cpp +0 -1
  656. esphome/components/uart/uart_component_esp_idf.cpp +0 -2
  657. esphome/components/uart/uart_component_libretiny.cpp +0 -2
  658. esphome/components/uart/uart_component_rp2040.cpp +0 -2
  659. esphome/components/udp/__init__.py +1 -1
  660. esphome/components/ufire_ec/sensor.py +1 -2
  661. esphome/components/ufire_ec/ufire_ec.cpp +0 -2
  662. esphome/components/ufire_ise/sensor.py +1 -2
  663. esphome/components/ufire_ise/ufire_ise.cpp +0 -2
  664. esphome/components/ultrasonic/ultrasonic_sensor.cpp +0 -1
  665. esphome/components/update/__init__.py +0 -1
  666. esphome/components/uptime/sensor/uptime_seconds_sensor.cpp +0 -1
  667. esphome/components/uptime/sensor/uptime_seconds_sensor.h +0 -2
  668. esphome/components/usb_host/usb_host_client.cpp +0 -1
  669. esphome/components/usb_host/usb_host_component.cpp +0 -1
  670. esphome/components/valve/__init__.py +0 -1
  671. esphome/components/veml3235/veml3235.cpp +0 -3
  672. esphome/components/veml7700/veml7700.cpp +0 -2
  673. esphome/components/version/version_text_sensor.cpp +0 -1
  674. esphome/components/version/version_text_sensor.h +0 -1
  675. esphome/components/vl53l0x/vl53l0x_sensor.cpp +0 -4
  676. esphome/components/voice_assistant/voice_assistant.cpp +9 -8
  677. esphome/components/web_server/__init__.py +13 -0
  678. esphome/components/web_server/web_server.cpp +187 -352
  679. esphome/components/web_server/web_server.h +61 -1
  680. esphome/components/web_server_base/__init__.py +1 -1
  681. esphome/components/web_server_base/web_server_base.cpp +2 -0
  682. esphome/components/web_server_base/web_server_base.h +6 -0
  683. esphome/components/web_server_idf/web_server_idf.cpp +10 -8
  684. esphome/components/web_server_idf/web_server_idf.h +2 -0
  685. esphome/components/weikai_i2c/weikai_i2c.cpp +1 -2
  686. esphome/components/weikai_spi/weikai_spi.cpp +1 -1
  687. esphome/components/wifi/__init__.py +8 -43
  688. esphome/components/wifi/wifi_component.cpp +100 -36
  689. esphome/components/wifi/wifi_component.h +5 -1
  690. esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -0
  691. esphome/components/wifi/wifi_component_esp_idf.cpp +30 -0
  692. esphome/components/wifi_info/wifi_info_text_sensor.h +0 -6
  693. esphome/components/wifi_signal/wifi_signal_sensor.h +0 -1
  694. esphome/components/wireguard/wireguard.cpp +0 -2
  695. esphome/components/x9c/x9c.cpp +0 -2
  696. esphome/components/xgzp68xx/xgzp68xx.cpp +0 -1
  697. esphome/components/xl9535/xl9535.cpp +0 -2
  698. esphome/components/zephyr/__init__.py +252 -0
  699. esphome/components/zephyr/const.py +16 -0
  700. esphome/components/zephyr/core.cpp +90 -0
  701. esphome/components/zephyr/gpio.cpp +120 -0
  702. esphome/components/zephyr/gpio.h +38 -0
  703. esphome/components/zephyr/pre_build.py.script +4 -0
  704. esphome/components/zephyr/preferences.cpp +156 -0
  705. esphome/components/zephyr/preferences.h +13 -0
  706. esphome/config.py +38 -16
  707. esphome/config_helpers.py +1 -2
  708. esphome/config_validation.py +8 -15
  709. esphome/const.py +26 -1
  710. esphome/core/__init__.py +88 -51
  711. esphome/core/application.cpp +75 -21
  712. esphome/core/application.h +106 -171
  713. esphome/core/color.h +10 -0
  714. esphome/core/component.cpp +41 -25
  715. esphome/core/component.h +9 -6
  716. esphome/core/component_iterator.cpp +61 -261
  717. esphome/core/component_iterator.h +15 -0
  718. esphome/core/config.py +26 -11
  719. esphome/core/defines.h +40 -2
  720. esphome/core/entity_base.h +18 -0
  721. esphome/core/entity_helpers.py +41 -6
  722. esphome/core/helpers.cpp +8 -15
  723. esphome/core/helpers.h +60 -6
  724. esphome/core/lock_free_queue.h +1 -1
  725. esphome/core/scheduler.cpp +277 -74
  726. esphome/core/scheduler.h +89 -27
  727. esphome/cpp_generator.py +2 -6
  728. esphome/cpp_helpers.py +1 -1
  729. esphome/dashboard/dashboard.py +2 -3
  730. esphome/dashboard/dns.py +2 -8
  731. esphome/dashboard/web_server.py +34 -19
  732. esphome/espota2.py +1 -4
  733. esphome/git.py +3 -1
  734. esphome/helpers.py +23 -4
  735. esphome/log.py +3 -1
  736. esphome/mqtt.py +3 -5
  737. esphome/platformio_api.py +7 -4
  738. esphome/types.py +12 -0
  739. esphome/util.py +20 -8
  740. esphome/voluptuous_schema.py +4 -3
  741. esphome/vscode.py +1 -2
  742. esphome/wizard.py +1 -4
  743. esphome/writer.py +5 -107
  744. esphome/yaml_util.py +7 -5
  745. {esphome-2025.7.5.dist-info → esphome-2025.8.0b1.dist-info}/METADATA +12 -13
  746. {esphome-2025.7.5.dist-info → esphome-2025.8.0b1.dist-info}/RECORD +751 -671
  747. esphome/components/mipi_spi/models/commands.py +0 -82
  748. /esphome/components/nfc/binary_sensor/{binary_sensor.h → nfc_binary_sensor.h} +0 -0
  749. {esphome-2025.7.5.dist-info → esphome-2025.8.0b1.dist-info}/WHEEL +0 -0
  750. {esphome-2025.7.5.dist-info → esphome-2025.8.0b1.dist-info}/entry_points.txt +0 -0
  751. {esphome-2025.7.5.dist-info → esphome-2025.8.0b1.dist-info}/licenses/LICENSE +0 -0
  752. {esphome-2025.7.5.dist-info → esphome-2025.8.0b1.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,54 @@
1
- #ifdef USE_ARDUINO
1
+ // This Esphome TM1651 component for use with Mini Battery Displays (7 LED levels)
2
+ // and removes the Esphome dependency on the TM1651 Arduino library.
3
+ // It was largely based on the work of others as set out below.
4
+ // @mrtoy-me July 2025
5
+ // ==============================================================================================
6
+ // Original Arduino TM1651 library:
7
+ // Author:Fred.Chu
8
+ // Date:14 August, 2014
9
+ // Applicable Module: Battery Display v1.0
10
+ // This library is free software; you can redistribute it and/or
11
+ // modify it under the terms of the GNU Lesser General Public
12
+ // License as published by the Free Software Foundation; either
13
+ // version 2.1 of the License, or (at your option) any later version.
14
+ // This library is distributed in the hope that it will be useful,
15
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the GNU
17
+ // Lesser General Public License for more details.
18
+ // Modified record:
19
+ // Author: Detlef Giessmann Germany
20
+ // Mail: mydiyp@web.de
21
+ // Demo for the new 7 LED Battery-Display 2017
22
+ // IDE: Arduino-1.6.5
23
+ // Type: OPEN-SMART CX10*4RY68 4Color
24
+ // Date: 01.05.2017
25
+ // ==============================================================================================
26
+ // Esphome component using arduino TM1651 library:
27
+ // MIT License
28
+ // Copyright (c) 2019 freekode
29
+ // ==============================================================================================
30
+ // Library and command-line (python) program to control mini battery displays on Raspberry Pi:
31
+ // MIT License
32
+ // Copyright (c) 2020 Koen Vervloese
33
+ // ==============================================================================================
34
+ // MIT License
35
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
36
+ // of this software and associated documentation files (the "Software"), to deal
37
+ // in the Software without restriction, including without limitation the rights
38
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
39
+ // copies of the Software, and to permit persons to whom the Software is
40
+ // furnished to do so, subject to the following conditions:
41
+ // The above copyright notice and this permission notice shall be included in all
42
+ // copies or substantial portions of the Software.
43
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
44
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
46
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
47
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
48
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
49
+ // SOFTWARE.
2
50
 
3
51
  #include "tm1651.h"
4
- #include "esphome/core/helpers.h"
5
52
  #include "esphome/core/log.h"
6
53
 
7
54
  namespace esphome {
@@ -9,86 +56,205 @@ namespace tm1651 {
9
56
 
10
57
  static const char *const TAG = "tm1651.display";
11
58
 
12
- static const uint8_t MAX_INPUT_LEVEL_PERCENT = 100;
13
- static const uint8_t TM1651_MAX_LEVEL = 7;
59
+ static const bool LINE_HIGH = true;
60
+ static const bool LINE_LOW = false;
14
61
 
15
- static const uint8_t TM1651_BRIGHTNESS_LOW_HW = 0;
16
- static const uint8_t TM1651_BRIGHTNESS_MEDIUM_HW = 2;
17
- static const uint8_t TM1651_BRIGHTNESS_HIGH_HW = 7;
62
+ // TM1651 maximum frequency is 500 kHz (duty ratio 50%) = 2 microseconds / cycle
63
+ static const uint8_t CLOCK_CYCLE = 8;
64
+
65
+ static const uint8_t HALF_CLOCK_CYCLE = CLOCK_CYCLE / 2;
66
+ static const uint8_t QUARTER_CLOCK_CYCLE = CLOCK_CYCLE / 4;
67
+
68
+ static const uint8_t ADDR_FIXED = 0x44; // fixed address mode
69
+ static const uint8_t ADDR_START = 0xC0; // address of the display register
70
+
71
+ static const uint8_t DISPLAY_OFF = 0x80;
72
+ static const uint8_t DISPLAY_ON = 0x88;
73
+
74
+ static const uint8_t MAX_DISPLAY_LEVELS = 7;
75
+
76
+ static const uint8_t PERCENT100 = 100;
77
+ static const uint8_t PERCENT50 = 50;
78
+
79
+ static const uint8_t TM1651_BRIGHTNESS_DARKEST = 0;
80
+ static const uint8_t TM1651_BRIGHTNESS_TYPICAL = 2;
81
+ static const uint8_t TM1651_BRIGHTNESS_BRIGHTEST = 7;
82
+
83
+ static const uint8_t TM1651_LEVEL_TAB[] = {0b00000000, 0b00000001, 0b00000011, 0b00000111,
84
+ 0b00001111, 0b00011111, 0b00111111, 0b01111111};
85
+
86
+ // public
18
87
 
19
88
  void TM1651Display::setup() {
20
- ESP_LOGCONFIG(TAG, "Running setup");
89
+ this->clk_pin_->setup();
90
+ this->clk_pin_->pin_mode(gpio::FLAG_OUTPUT);
91
+
92
+ this->dio_pin_->setup();
93
+ this->dio_pin_->pin_mode(gpio::FLAG_OUTPUT);
21
94
 
22
- uint8_t clk = clk_pin_->get_pin();
23
- uint8_t dio = dio_pin_->get_pin();
95
+ this->brightness_ = TM1651_BRIGHTNESS_TYPICAL;
24
96
 
25
- battery_display_ = make_unique<TM1651>(clk, dio);
26
- battery_display_->init();
27
- battery_display_->clearDisplay();
97
+ // clear display
98
+ this->display_level_();
99
+ this->update_brightness_(DISPLAY_ON);
28
100
  }
29
101
 
30
102
  void TM1651Display::dump_config() {
31
- ESP_LOGCONFIG(TAG, "TM1651 Battery Display");
103
+ ESP_LOGCONFIG(TAG, "Battery Display");
32
104
  LOG_PIN(" CLK: ", clk_pin_);
33
105
  LOG_PIN(" DIO: ", dio_pin_);
34
106
  }
35
107
 
36
- void TM1651Display::set_level_percent(uint8_t new_level) {
37
- this->level_ = calculate_level_(new_level);
38
- this->repaint_();
108
+ void TM1651Display::set_brightness(uint8_t new_brightness) {
109
+ this->brightness_ = this->remap_brightness_(new_brightness);
110
+ if (this->display_on_) {
111
+ this->update_brightness_(DISPLAY_ON);
112
+ }
39
113
  }
40
114
 
41
115
  void TM1651Display::set_level(uint8_t new_level) {
116
+ if (new_level > MAX_DISPLAY_LEVELS)
117
+ new_level = MAX_DISPLAY_LEVELS;
42
118
  this->level_ = new_level;
43
- this->repaint_();
119
+ if (this->display_on_) {
120
+ this->display_level_();
121
+ }
44
122
  }
45
123
 
46
- void TM1651Display::set_brightness(uint8_t new_brightness) {
47
- this->brightness_ = calculate_brightness_(new_brightness);
48
- this->repaint_();
124
+ void TM1651Display::set_level_percent(uint8_t percentage) {
125
+ this->level_ = this->calculate_level_(percentage);
126
+ if (this->display_on_) {
127
+ this->display_level_();
128
+ }
129
+ }
130
+
131
+ void TM1651Display::turn_off() {
132
+ this->display_on_ = false;
133
+ this->update_brightness_(DISPLAY_OFF);
49
134
  }
50
135
 
51
136
  void TM1651Display::turn_on() {
52
- this->is_on_ = true;
53
- this->repaint_();
137
+ this->display_on_ = true;
138
+ // display level as it could have been changed when display turned off
139
+ this->display_level_();
140
+ this->update_brightness_(DISPLAY_ON);
54
141
  }
55
142
 
56
- void TM1651Display::turn_off() {
57
- this->is_on_ = false;
58
- battery_display_->displayLevel(0);
143
+ // protected
144
+
145
+ uint8_t TM1651Display::calculate_level_(uint8_t percentage) {
146
+ if (percentage > PERCENT100)
147
+ percentage = PERCENT100;
148
+ // scale 0-100% to 0-7 display levels
149
+ // use integer arithmetic with rounding
150
+ uint16_t initial_scaling = (percentage * MAX_DISPLAY_LEVELS) + PERCENT50;
151
+ return (uint8_t) (initial_scaling / PERCENT100);
59
152
  }
60
153
 
61
- void TM1651Display::repaint_() {
62
- if (!this->is_on_) {
63
- return;
64
- }
154
+ void TM1651Display::display_level_() {
155
+ this->start_();
156
+ this->write_byte_(ADDR_FIXED);
157
+ this->stop_();
158
+
159
+ this->start_();
160
+ this->write_byte_(ADDR_START);
161
+ this->write_byte_(TM1651_LEVEL_TAB[this->level_]);
162
+ this->stop_();
163
+ }
164
+
165
+ uint8_t TM1651Display::remap_brightness_(uint8_t new_brightness) {
166
+ if (new_brightness <= 1)
167
+ return TM1651_BRIGHTNESS_DARKEST;
168
+ if (new_brightness == 2)
169
+ return TM1651_BRIGHTNESS_TYPICAL;
65
170
 
66
- battery_display_->set(this->brightness_);
67
- battery_display_->displayLevel(this->level_);
171
+ // new_brightness >= 3
172
+ return TM1651_BRIGHTNESS_BRIGHTEST;
68
173
  }
69
174
 
70
- uint8_t TM1651Display::calculate_level_(uint8_t new_level) {
71
- if (new_level == 0) {
72
- return 0;
175
+ void TM1651Display::update_brightness_(uint8_t on_off_control) {
176
+ this->start_();
177
+ this->write_byte_(on_off_control | this->brightness_);
178
+ this->stop_();
179
+ }
180
+
181
+ // low level functions
182
+
183
+ bool TM1651Display::write_byte_(uint8_t data) {
184
+ // data bit written to DIO when CLK is low
185
+ for (uint8_t i = 0; i < 8; i++) {
186
+ this->half_cycle_clock_low_((bool) (data & 0x01));
187
+ this->half_cycle_clock_high_();
188
+ data >>= 1;
73
189
  }
74
190
 
75
- float calculated_level = TM1651_MAX_LEVEL / (float) (MAX_INPUT_LEVEL_PERCENT / (float) new_level);
76
- return (uint8_t) roundf(calculated_level);
191
+ // start 9th cycle, setting DIO high and look for ack
192
+ this->half_cycle_clock_low_(LINE_HIGH);
193
+ return this->half_cycle_clock_high_ack_();
194
+ }
195
+
196
+ void TM1651Display::half_cycle_clock_low_(bool data_bit) {
197
+ // first half cycle, clock low and write data bit
198
+ this->clk_pin_->digital_write(LINE_LOW);
199
+ delayMicroseconds(QUARTER_CLOCK_CYCLE);
200
+
201
+ this->dio_pin_->digital_write(data_bit);
202
+ delayMicroseconds(QUARTER_CLOCK_CYCLE);
77
203
  }
78
204
 
79
- uint8_t TM1651Display::calculate_brightness_(uint8_t new_brightness) {
80
- if (new_brightness <= 1) {
81
- return TM1651_BRIGHTNESS_LOW_HW;
82
- } else if (new_brightness == 2) {
83
- return TM1651_BRIGHTNESS_MEDIUM_HW;
84
- } else if (new_brightness >= 3) {
85
- return TM1651_BRIGHTNESS_HIGH_HW;
205
+ void TM1651Display::half_cycle_clock_high_() {
206
+ // second half cycle, clock high
207
+ this->clk_pin_->digital_write(LINE_HIGH);
208
+ delayMicroseconds(HALF_CLOCK_CYCLE);
209
+ }
210
+
211
+ bool TM1651Display::half_cycle_clock_high_ack_() {
212
+ // second half cycle, clock high and check for ack
213
+ this->clk_pin_->digital_write(LINE_HIGH);
214
+ delayMicroseconds(QUARTER_CLOCK_CYCLE);
215
+
216
+ this->dio_pin_->pin_mode(gpio::FLAG_INPUT);
217
+ // valid ack on DIO is low
218
+ bool ack = (!this->dio_pin_->digital_read());
219
+
220
+ this->dio_pin_->pin_mode(gpio::FLAG_OUTPUT);
221
+
222
+ // ack should be set DIO low by now
223
+ // if its not, set DIO low before the next cycle
224
+ if (!ack) {
225
+ this->dio_pin_->digital_write(LINE_LOW);
86
226
  }
227
+ delayMicroseconds(QUARTER_CLOCK_CYCLE);
87
228
 
88
- return TM1651_BRIGHTNESS_LOW_HW;
229
+ // begin next cycle
230
+ this->clk_pin_->digital_write(LINE_LOW);
231
+
232
+ return ack;
233
+ }
234
+
235
+ void TM1651Display::start_() {
236
+ // start data transmission
237
+ this->delineate_transmission_(LINE_HIGH);
238
+ }
239
+
240
+ void TM1651Display::stop_() {
241
+ // stop data transmission
242
+ this->delineate_transmission_(LINE_LOW);
243
+ }
244
+
245
+ void TM1651Display::delineate_transmission_(bool dio_state) {
246
+ // delineate data transmission
247
+ // DIO changes its value while CLK is high
248
+
249
+ this->dio_pin_->digital_write(dio_state);
250
+ delayMicroseconds(HALF_CLOCK_CYCLE);
251
+
252
+ this->clk_pin_->digital_write(LINE_HIGH);
253
+ delayMicroseconds(QUARTER_CLOCK_CYCLE);
254
+
255
+ this->dio_pin_->digital_write(!dio_state);
256
+ delayMicroseconds(QUARTER_CLOCK_CYCLE);
89
257
  }
90
258
 
91
259
  } // namespace tm1651
92
260
  } // namespace esphome
93
-
94
- #endif // USE_ARDUINO
@@ -1,22 +1,16 @@
1
1
  #pragma once
2
2
 
3
- #ifdef USE_ARDUINO
4
-
5
- #include <memory>
6
-
3
+ #include "esphome/core/automation.h"
7
4
  #include "esphome/core/component.h"
8
5
  #include "esphome/core/hal.h"
9
- #include "esphome/core/automation.h"
10
-
11
- #include <TM1651.h>
12
6
 
13
7
  namespace esphome {
14
8
  namespace tm1651 {
15
9
 
16
10
  enum TM1651Brightness : uint8_t {
17
- TM1651_BRIGHTNESS_LOW = 1,
18
- TM1651_BRIGHTNESS_MEDIUM = 2,
19
- TM1651_BRIGHTNESS_HIGH = 3,
11
+ TM1651_DARKEST = 1,
12
+ TM1651_TYPICAL = 2,
13
+ TM1651_BRIGHTEST = 3,
20
14
  };
21
15
 
22
16
  class TM1651Display : public Component {
@@ -27,36 +21,49 @@ class TM1651Display : public Component {
27
21
  void setup() override;
28
22
  void dump_config() override;
29
23
 
30
- void set_level_percent(uint8_t new_level);
31
- void set_level(uint8_t new_level);
32
24
  void set_brightness(uint8_t new_brightness);
33
25
  void set_brightness(TM1651Brightness new_brightness) { this->set_brightness(static_cast<uint8_t>(new_brightness)); }
34
26
 
35
- void turn_on();
27
+ void set_level(uint8_t new_level);
28
+ void set_level_percent(uint8_t percentage);
29
+
36
30
  void turn_off();
31
+ void turn_on();
37
32
 
38
33
  protected:
39
- std::unique_ptr<TM1651> battery_display_;
40
- InternalGPIOPin *clk_pin_;
41
- InternalGPIOPin *dio_pin_;
42
- bool is_on_ = true;
34
+ uint8_t calculate_level_(uint8_t percentage);
35
+ void display_level_();
36
+
37
+ uint8_t remap_brightness_(uint8_t new_brightness);
38
+ void update_brightness_(uint8_t on_off_control);
39
+
40
+ // low level functions
41
+ bool write_byte_(uint8_t data);
43
42
 
44
- uint8_t brightness_;
45
- uint8_t level_;
43
+ void half_cycle_clock_low_(bool data_bit);
44
+ void half_cycle_clock_high_();
45
+ bool half_cycle_clock_high_ack_();
46
46
 
47
- void repaint_();
47
+ void start_();
48
+ void stop_();
49
+
50
+ void delineate_transmission_(bool dio_state);
51
+
52
+ InternalGPIOPin *clk_pin_;
53
+ InternalGPIOPin *dio_pin_;
48
54
 
49
- uint8_t calculate_level_(uint8_t new_level);
50
- uint8_t calculate_brightness_(uint8_t new_brightness);
55
+ bool display_on_{true};
56
+ uint8_t brightness_{};
57
+ uint8_t level_{0};
51
58
  };
52
59
 
53
- template<typename... Ts> class SetLevelPercentAction : public Action<Ts...>, public Parented<TM1651Display> {
60
+ template<typename... Ts> class SetBrightnessAction : public Action<Ts...>, public Parented<TM1651Display> {
54
61
  public:
55
- TEMPLATABLE_VALUE(uint8_t, level_percent)
62
+ TEMPLATABLE_VALUE(uint8_t, brightness)
56
63
 
57
64
  void play(Ts... x) override {
58
- auto level_percent = this->level_percent_.value(x...);
59
- this->parent_->set_level_percent(level_percent);
65
+ auto brightness = this->brightness_.value(x...);
66
+ this->parent_->set_brightness(brightness);
60
67
  }
61
68
  };
62
69
 
@@ -70,13 +77,13 @@ template<typename... Ts> class SetLevelAction : public Action<Ts...>, public Par
70
77
  }
71
78
  };
72
79
 
73
- template<typename... Ts> class SetBrightnessAction : public Action<Ts...>, public Parented<TM1651Display> {
80
+ template<typename... Ts> class SetLevelPercentAction : public Action<Ts...>, public Parented<TM1651Display> {
74
81
  public:
75
- TEMPLATABLE_VALUE(uint8_t, brightness)
82
+ TEMPLATABLE_VALUE(uint8_t, level_percent)
76
83
 
77
84
  void play(Ts... x) override {
78
- auto brightness = this->brightness_.value(x...);
79
- this->parent_->set_brightness(brightness);
85
+ auto level_percent = this->level_percent_.value(x...);
86
+ this->parent_->set_level_percent(level_percent);
80
87
  }
81
88
  };
82
89
 
@@ -92,5 +99,3 @@ template<typename... Ts> class TurnOffAction : public Action<Ts...>, public Pare
92
99
 
93
100
  } // namespace tm1651
94
101
  } // namespace esphome
95
-
96
- #endif // USE_ARDUINO
@@ -26,8 +26,6 @@ void TMP117Component::update() {
26
26
  }
27
27
  }
28
28
  void TMP117Component::setup() {
29
- ESP_LOGCONFIG(TAG, "Running setup");
30
-
31
29
  if (!this->write_config_(this->config_)) {
32
30
  this->mark_failed();
33
31
  return;
@@ -15,7 +15,6 @@ static const uint8_t TSL2561_REGISTER_DATA_0 = 0x0C;
15
15
  static const uint8_t TSL2561_REGISTER_DATA_1 = 0x0E;
16
16
 
17
17
  void TSL2561Sensor::setup() {
18
- ESP_LOGCONFIG(TAG, "Running setup");
19
18
  uint8_t id;
20
19
  if (!this->tsl2561_read_byte(TSL2561_REGISTER_ID, &id)) {
21
20
  this->mark_failed();
@@ -43,7 +43,6 @@ void TSL2591Component::disable_if_power_saving_() {
43
43
  }
44
44
 
45
45
  void TSL2591Component::setup() {
46
- ESP_LOGCONFIG(TAG, "Running setup for address 0x%02X", this->address_);
47
46
  switch (this->component_gain_) {
48
47
  case TSL2591_CGAIN_LOW:
49
48
  this->gain_ = TSL2591_GAIN_LOW;
@@ -47,8 +47,6 @@ struct TT21100TouchReport {
47
47
  float TT21100Touchscreen::get_setup_priority() const { return setup_priority::HARDWARE - 1.0f; }
48
48
 
49
49
  void TT21100Touchscreen::setup() {
50
- ESP_LOGCONFIG(TAG, "Running setup");
51
-
52
50
  // Register interrupt pin
53
51
  if (this->interrupt_pin_ != nullptr) {
54
52
  this->interrupt_pin_->pin_mode(gpio::FLAG_INPUT | gpio::FLAG_PULLUP);
@@ -7,7 +7,6 @@ namespace ttp229_bsf {
7
7
  static const char *const TAG = "ttp229_bsf";
8
8
 
9
9
  void TTP229BSFComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Running setup");
11
10
  this->sdo_pin_->setup();
12
11
  this->scl_pin_->setup();
13
12
  this->scl_pin_->digital_write(true);
@@ -7,7 +7,6 @@ namespace ttp229_lsf {
7
7
  static const char *const TAG = "ttp229_lsf";
8
8
 
9
9
  void TTP229LSFComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Running setup");
11
10
  uint8_t data[2];
12
11
  if (this->read(data, 2) != i2c::ERROR_OK) {
13
12
  this->error_code_ = COMMUNICATION_FAILED;
@@ -46,16 +46,15 @@ TuyaClimate = tuya_ns.class_("TuyaClimate", climate.Climate, cg.Component)
46
46
 
47
47
 
48
48
  def validate_temperature_multipliers(value):
49
- if CONF_TEMPERATURE_MULTIPLIER in value:
50
- if (
51
- CONF_CURRENT_TEMPERATURE_MULTIPLIER in value
52
- or CONF_TARGET_TEMPERATURE_MULTIPLIER in value
53
- ):
54
- raise cv.Invalid(
55
- f"Cannot have {CONF_TEMPERATURE_MULTIPLIER} at the same time as "
56
- f"{CONF_CURRENT_TEMPERATURE_MULTIPLIER} and "
57
- f"{CONF_TARGET_TEMPERATURE_MULTIPLIER}"
58
- )
49
+ if CONF_TEMPERATURE_MULTIPLIER in value and (
50
+ CONF_CURRENT_TEMPERATURE_MULTIPLIER in value
51
+ or CONF_TARGET_TEMPERATURE_MULTIPLIER in value
52
+ ):
53
+ raise cv.Invalid(
54
+ f"Cannot have {CONF_TEMPERATURE_MULTIPLIER} at the same time as "
55
+ f"{CONF_CURRENT_TEMPERATURE_MULTIPLIER} and "
56
+ f"{CONF_TARGET_TEMPERATURE_MULTIPLIER}"
57
+ )
59
58
  if (
60
59
  CONF_CURRENT_TEMPERATURE_MULTIPLIER in value
61
60
  and CONF_TARGET_TEMPERATURE_MULTIPLIER not in value
@@ -34,12 +34,14 @@ def validate_min_max(config):
34
34
  min_value = config[CONF_MIN_VALUE]
35
35
  if max_value <= min_value:
36
36
  raise cv.Invalid("max_value must be greater than min_value")
37
- if hidden_config := config.get(CONF_DATAPOINT_HIDDEN):
38
- if (initial_value := hidden_config.get(CONF_INITIAL_VALUE, None)) is not None:
39
- if (initial_value > max_value) or (initial_value < min_value):
40
- raise cv.Invalid(
41
- f"{CONF_INITIAL_VALUE} must be a value between {CONF_MAX_VALUE} and {CONF_MIN_VALUE}"
42
- )
37
+ if (
38
+ (hidden_config := config.get(CONF_DATAPOINT_HIDDEN))
39
+ and (initial_value := hidden_config.get(CONF_INITIAL_VALUE, None)) is not None
40
+ and ((initial_value > max_value) or (initial_value < min_value))
41
+ ):
42
+ raise cv.Invalid(
43
+ f"{CONF_INITIAL_VALUE} must be a value between {CONF_MAX_VALUE} and {CONF_MIN_VALUE}"
44
+ )
43
45
  return config
44
46
 
45
47
 
@@ -15,7 +15,6 @@ static const char *const DIRECTIONS[] = {"N", "NNE", "NE", "ENE", "E", "ESE", "S
15
15
  "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"};
16
16
 
17
17
  void Tx20Component::setup() {
18
- ESP_LOGCONFIG(TAG, "Running setup");
19
18
  this->pin_->setup();
20
19
 
21
20
  this->store_.buffer = new uint16_t[MAX_BUFFER_SIZE];
@@ -74,7 +74,6 @@ uint32_t ESP32ArduinoUARTComponent::get_config() {
74
74
  }
75
75
 
76
76
  void ESP32ArduinoUARTComponent::setup() {
77
- ESP_LOGCONFIG(TAG, "Running setup");
78
77
  // Use Arduino HardwareSerial UARTs if all used pins match the ones
79
78
  // preconfigured by the platform. For example if RX disabled but TX pin
80
79
  // is 1 we still want to use Serial.
@@ -56,7 +56,6 @@ uint32_t ESP8266UartComponent::get_config() {
56
56
  }
57
57
 
58
58
  void ESP8266UartComponent::setup() {
59
- ESP_LOGCONFIG(TAG, "Running setup");
60
59
  // Use Arduino HardwareSerial UARTs if all used pins match the ones
61
60
  // preconfigured by the platform. For example if RX disabled but TX pin
62
61
  // is 1 we still want to use Serial.
@@ -86,8 +86,6 @@ void IDFUARTComponent::setup() {
86
86
  return;
87
87
  }
88
88
  this->uart_num_ = static_cast<uart_port_t>(next_uart_num++);
89
- ESP_LOGCONFIG(TAG, "Running setup for UART %u", this->uart_num_);
90
-
91
89
  this->lock_ = xSemaphoreCreateMutex();
92
90
 
93
91
  xSemaphoreTake(this->lock_, portMAX_DELAY);
@@ -46,8 +46,6 @@ uint16_t LibreTinyUARTComponent::get_config() {
46
46
  }
47
47
 
48
48
  void LibreTinyUARTComponent::setup() {
49
- ESP_LOGCONFIG(TAG, "Running setup");
50
-
51
49
  int8_t tx_pin = tx_pin_ == nullptr ? -1 : tx_pin_->get_pin();
52
50
  int8_t rx_pin = rx_pin_ == nullptr ? -1 : rx_pin_->get_pin();
53
51
  bool tx_inverted = tx_pin_ != nullptr && tx_pin_->is_inverted();
@@ -52,8 +52,6 @@ uint16_t RP2040UartComponent::get_config() {
52
52
  }
53
53
 
54
54
  void RP2040UartComponent::setup() {
55
- ESP_LOGCONFIG(TAG, "Running setup");
56
-
57
55
  uint16_t config = get_config();
58
56
 
59
57
  constexpr uint32_t valid_tx_uart_0 = __bitset({0, 12, 16, 28});
@@ -1,6 +1,7 @@
1
1
  from esphome import automation
2
2
  from esphome.automation import Trigger
3
3
  import esphome.codegen as cg
4
+ from esphome.components.const import CONF_ON_RECEIVE
4
5
  from esphome.components.packet_transport import (
5
6
  CONF_BINARY_SENSORS,
6
7
  CONF_ENCRYPTION,
@@ -27,7 +28,6 @@ trigger_args = cg.std_vector.template(cg.uint8)
27
28
  CONF_ADDRESSES = "addresses"
28
29
  CONF_LISTEN_ADDRESS = "listen_address"
29
30
  CONF_UDP_ID = "udp_id"
30
- CONF_ON_RECEIVE = "on_receive"
31
31
  CONF_LISTEN_PORT = "listen_port"
32
32
  CONF_BROADCAST_PORT = "broadcast_port"
33
33
 
@@ -122,5 +122,4 @@ UFIRE_EC_RESET_SCHEMA = cv.Schema(
122
122
  )
123
123
  async def ufire_ec_reset_to_code(config, action_id, template_arg, args):
124
124
  paren = await cg.get_variable(config[CONF_ID])
125
- var = cg.new_Pvariable(action_id, template_arg, paren)
126
- return var
125
+ return cg.new_Pvariable(action_id, template_arg, paren)
@@ -7,8 +7,6 @@ namespace ufire_ec {
7
7
  static const char *const TAG = "ufire_ec";
8
8
 
9
9
  void UFireECComponent::setup() {
10
- ESP_LOGCONFIG(TAG, "Running setup");
11
-
12
10
  uint8_t version;
13
11
  if (!this->read_byte(REGISTER_VERSION, &version) && version != 0xFF) {
14
12
  this->mark_failed();
@@ -123,5 +123,4 @@ UFIRE_ISE_RESET_SCHEMA = cv.Schema({cv.GenerateID(): cv.use_id(UFireISEComponent
123
123
  )
124
124
  async def ufire_ise_reset_to_code(config, action_id, template_arg, args):
125
125
  paren = await cg.get_variable(config[CONF_ID])
126
- var = cg.new_Pvariable(action_id, template_arg, paren)
127
- return var
126
+ return cg.new_Pvariable(action_id, template_arg, paren)
@@ -9,8 +9,6 @@ namespace ufire_ise {
9
9
  static const char *const TAG = "ufire_ise";
10
10
 
11
11
  void UFireISEComponent::setup() {
12
- ESP_LOGCONFIG(TAG, "Running setup");
13
-
14
12
  uint8_t version;
15
13
  if (!this->read_byte(REGISTER_VERSION, &version) && version != 0xFF) {
16
14
  this->mark_failed();
@@ -8,7 +8,6 @@ namespace ultrasonic {
8
8
  static const char *const TAG = "ultrasonic.sensor";
9
9
 
10
10
  void UltrasonicSensorComponent::setup() {
11
- ESP_LOGCONFIG(TAG, "Running setup");
12
11
  this->trigger_pin_->setup();
13
12
  this->trigger_pin_->digital_write(false);
14
13
  this->echo_pin_->setup();
@@ -126,7 +126,6 @@ async def new_update(config):
126
126
 
127
127
  @coroutine_with_priority(100.0)
128
128
  async def to_code(config):
129
- cg.add_define("USE_UPDATE")
130
129
  cg.add_global(update_ns.using)
131
130
 
132
131