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
@@ -0,0 +1,295 @@
1
+ #pragma once
2
+
3
+ #include "esphome/core/hal.h"
4
+
5
+ namespace esphome {
6
+ namespace sx127x {
7
+
8
+ enum SX127xReg : uint8_t {
9
+ // Common registers
10
+ REG_FIFO = 0x00,
11
+ REG_OP_MODE = 0x01,
12
+ REG_BITRATE_MSB = 0x02,
13
+ REG_BITRATE_LSB = 0x03,
14
+ REG_FDEV_MSB = 0x04,
15
+ REG_FDEV_LSB = 0x05,
16
+ REG_FRF_MSB = 0x06,
17
+ REG_FRF_MID = 0x07,
18
+ REG_FRF_LSB = 0x08,
19
+ REG_PA_CONFIG = 0x09,
20
+ REG_PA_RAMP = 0x0A,
21
+ REG_DIO_MAPPING1 = 0x40,
22
+ REG_DIO_MAPPING2 = 0x41,
23
+ REG_VERSION = 0x42,
24
+ // FSK/OOK registers
25
+ REG_RX_CONFIG = 0x0D,
26
+ REG_RSSI_THRESH = 0x10,
27
+ REG_RX_BW = 0x12,
28
+ REG_OOK_PEAK = 0x14,
29
+ REG_OOK_FIX = 0x15,
30
+ REG_OOK_AVG = 0x16,
31
+ REG_AFC_FEI = 0x1A,
32
+ REG_PREAMBLE_DETECT = 0x1F,
33
+ REG_PREAMBLE_SIZE_MSB = 0x25,
34
+ REG_PREAMBLE_SIZE_LSB = 0x26,
35
+ REG_SYNC_CONFIG = 0x27,
36
+ REG_SYNC_VALUE1 = 0x28,
37
+ REG_SYNC_VALUE2 = 0x29,
38
+ REG_SYNC_VALUE3 = 0x2A,
39
+ REG_SYNC_VALUE4 = 0x2B,
40
+ REG_SYNC_VALUE5 = 0x2C,
41
+ REG_SYNC_VALUE6 = 0x2D,
42
+ REG_SYNC_VALUE7 = 0x2E,
43
+ REG_SYNC_VALUE8 = 0x2F,
44
+ REG_PACKET_CONFIG_1 = 0x30,
45
+ REG_PACKET_CONFIG_2 = 0x31,
46
+ REG_PAYLOAD_LENGTH_LSB = 0x32,
47
+ REG_FIFO_THRESH = 0x35,
48
+ REG_IMAGE_CAL = 0x3B,
49
+ // LoRa registers
50
+ REG_FIFO_ADDR_PTR = 0x0D,
51
+ REG_FIFO_TX_BASE_ADDR = 0x0E,
52
+ REG_FIFO_RX_BASE_ADDR = 0x0F,
53
+ REG_FIFO_RX_CURR_ADDR = 0x10,
54
+ REG_IRQ_FLAGS_MASK = 0x11,
55
+ REG_IRQ_FLAGS = 0x12,
56
+ REG_NB_RX_BYTES = 0x13,
57
+ REG_MODEM_STAT = 0x18,
58
+ REG_PKT_SNR_VALUE = 0x19,
59
+ REG_PKT_RSSI_VALUE = 0x1A,
60
+ REG_RSSI_VALUE = 0x1B,
61
+ REG_HOP_CHANNEL = 0x1C,
62
+ REG_MODEM_CONFIG1 = 0x1D,
63
+ REG_MODEM_CONFIG2 = 0x1E,
64
+ REG_SYMB_TIMEOUT_LSB = 0x1F,
65
+ REG_PREAMBLE_LEN_MSB = 0x20,
66
+ REG_PREAMBLE_LEN_LSB = 0x21,
67
+ REG_PAYLOAD_LENGTH = 0x22,
68
+ REG_HOP_PERIOD = 0x24,
69
+ REG_FIFO_RX_BYTE_ADDR = 0x25,
70
+ REG_MODEM_CONFIG3 = 0x26,
71
+ REG_FEI_MSB = 0x28,
72
+ REG_FEI_MIB = 0x29,
73
+ REG_FEI_LSB = 0x2A,
74
+ REG_DETECT_OPTIMIZE = 0x31,
75
+ REG_INVERT_IQ = 0x33,
76
+ REG_DETECT_THRESHOLD = 0x37,
77
+ REG_SYNC_WORD = 0x39,
78
+ };
79
+
80
+ enum SX127xOpMode : uint8_t {
81
+ MOD_LORA = 0x80,
82
+ ACCESS_FSK_REGS = 0x40,
83
+ ACCESS_LORA_REGS = 0x00,
84
+ MOD_OOK = 0x20,
85
+ MOD_FSK = 0x00,
86
+ ACCESS_LF_REGS = 0x08,
87
+ ACCESS_HF_REGS = 0x00,
88
+ MODE_CAD = 0x07,
89
+ MODE_RX_SINGLE = 0x06,
90
+ MODE_RX = 0x05,
91
+ MODE_RX_FS = 0x04,
92
+ MODE_TX = 0x03,
93
+ MODE_TX_FS = 0x02,
94
+ MODE_STDBY = 0x01,
95
+ MODE_SLEEP = 0x00,
96
+ MODE_MASK = 0x07,
97
+ };
98
+
99
+ enum SX127xPaConfig : uint8_t {
100
+ PA_PIN_BOOST = 0x80,
101
+ PA_PIN_RFO = 0x00,
102
+ PA_MAX_POWER = 0x70,
103
+ };
104
+
105
+ enum SX127xPaRamp : uint8_t {
106
+ CUTOFF_BR_X_2 = 0x40,
107
+ CUTOFF_BR_X_1 = 0x20,
108
+ GAUSSIAN_BT_0_3 = 0x60,
109
+ GAUSSIAN_BT_0_5 = 0x40,
110
+ GAUSSIAN_BT_1_0 = 0x20,
111
+ SHAPING_NONE = 0x00,
112
+ PA_RAMP_10 = 0x0F,
113
+ PA_RAMP_12 = 0x0E,
114
+ PA_RAMP_15 = 0x0D,
115
+ PA_RAMP_20 = 0x0C,
116
+ PA_RAMP_25 = 0x0B,
117
+ PA_RAMP_31 = 0x0A,
118
+ PA_RAMP_40 = 0x09,
119
+ PA_RAMP_50 = 0x08,
120
+ PA_RAMP_62 = 0x07,
121
+ PA_RAMP_100 = 0x06,
122
+ PA_RAMP_125 = 0x05,
123
+ PA_RAMP_250 = 0x04,
124
+ PA_RAMP_500 = 0x03,
125
+ PA_RAMP_1000 = 0x02,
126
+ PA_RAMP_2000 = 0x01,
127
+ PA_RAMP_3400 = 0x00,
128
+ };
129
+
130
+ enum SX127xDioMapping1 : uint8_t {
131
+ DIO0_MAPPING_00 = 0x00,
132
+ DIO0_MAPPING_01 = 0x40,
133
+ DIO0_MAPPING_10 = 0x80,
134
+ DIO0_MAPPING_11 = 0xC0,
135
+ };
136
+
137
+ enum SX127xRxConfig : uint8_t {
138
+ RESTART_ON_COLLISION = 0x80,
139
+ RESTART_NO_LOCK = 0x40,
140
+ RESTART_PLL_LOCK = 0x20,
141
+ AFC_AUTO_ON = 0x10,
142
+ AGC_AUTO_ON = 0x08,
143
+ TRIGGER_NONE = 0x00,
144
+ TRIGGER_RSSI = 0x01,
145
+ TRIGGER_PREAMBLE = 0x06,
146
+ TRIGGER_ALL = 0x07,
147
+ };
148
+
149
+ enum SX127xRxBw : uint8_t {
150
+ RX_BW_2_6 = 0x17,
151
+ RX_BW_3_1 = 0x0F,
152
+ RX_BW_3_9 = 0x07,
153
+ RX_BW_5_2 = 0x16,
154
+ RX_BW_6_3 = 0x0E,
155
+ RX_BW_7_8 = 0x06,
156
+ RX_BW_10_4 = 0x15,
157
+ RX_BW_12_5 = 0x0D,
158
+ RX_BW_15_6 = 0x05,
159
+ RX_BW_20_8 = 0x14,
160
+ RX_BW_25_0 = 0x0C,
161
+ RX_BW_31_3 = 0x04,
162
+ RX_BW_41_7 = 0x13,
163
+ RX_BW_50_0 = 0x0B,
164
+ RX_BW_62_5 = 0x03,
165
+ RX_BW_83_3 = 0x12,
166
+ RX_BW_100_0 = 0x0A,
167
+ RX_BW_125_0 = 0x02,
168
+ RX_BW_166_7 = 0x11,
169
+ RX_BW_200_0 = 0x09,
170
+ RX_BW_250_0 = 0x01,
171
+ };
172
+
173
+ enum SX127xOokPeak : uint8_t {
174
+ BIT_SYNC_ON = 0x20,
175
+ BIT_SYNC_OFF = 0x00,
176
+ OOK_THRESH_AVG = 0x10,
177
+ OOK_THRESH_PEAK = 0x08,
178
+ OOK_THRESH_FIXED = 0x00,
179
+ OOK_THRESH_STEP_6_0 = 0x07,
180
+ OOK_THRESH_STEP_5_0 = 0x06,
181
+ OOK_THRESH_STEP_4_0 = 0x05,
182
+ OOK_THRESH_STEP_3_0 = 0x04,
183
+ OOK_THRESH_STEP_2_0 = 0x03,
184
+ OOK_THRESH_STEP_1_5 = 0x02,
185
+ OOK_THRESH_STEP_1_0 = 0x01,
186
+ OOK_THRESH_STEP_0_5 = 0x00,
187
+ };
188
+
189
+ enum SX127xOokAvg : uint8_t {
190
+ OOK_THRESH_DEC_16 = 0xE0,
191
+ OOK_THRESH_DEC_8 = 0xC0,
192
+ OOK_THRESH_DEC_4 = 0xA0,
193
+ OOK_THRESH_DEC_2 = 0x80,
194
+ OOK_THRESH_DEC_1_8 = 0x60,
195
+ OOK_THRESH_DEC_1_4 = 0x40,
196
+ OOK_THRESH_DEC_1_2 = 0x20,
197
+ OOK_THRESH_DEC_1 = 0x00,
198
+ OOK_AVG_RESERVED = 0x10,
199
+ };
200
+
201
+ enum SX127xAfcFei : uint8_t {
202
+ AFC_AUTO_CLEAR_ON = 0x01,
203
+ };
204
+
205
+ enum SX127xPreambleDetect : uint8_t {
206
+ PREAMBLE_DETECTOR_ON = 0x80,
207
+ PREAMBLE_DETECTOR_OFF = 0x00,
208
+ PREAMBLE_DETECTOR_SIZE_SHIFT = 5,
209
+ PREAMBLE_DETECTOR_TOL_SHIFT = 0,
210
+ };
211
+
212
+ enum SX127xSyncConfig : uint8_t {
213
+ AUTO_RESTART_PLL_LOCK = 0x80,
214
+ AUTO_RESTART_NO_LOCK = 0x40,
215
+ AUTO_RESTART_OFF = 0x00,
216
+ PREAMBLE_55 = 0x20,
217
+ PREAMBLE_AA = 0x00,
218
+ SYNC_ON = 0x10,
219
+ SYNC_OFF = 0x00,
220
+ };
221
+
222
+ enum SX127xPacketConfig1 : uint8_t {
223
+ VARIABLE_LENGTH = 0x80,
224
+ FIXED_LENGTH = 0x00,
225
+ CRC_ON = 0x10,
226
+ CRC_OFF = 0x00,
227
+ };
228
+
229
+ enum SX127xPacketConfig2 : uint8_t {
230
+ CONTINUOUS_MODE = 0x00,
231
+ PACKET_MODE = 0x40,
232
+ };
233
+
234
+ enum SX127xFifoThresh : uint8_t {
235
+ TX_START_FIFO_EMPTY = 0x80,
236
+ TX_START_FIFO_LEVEL = 0x00,
237
+ };
238
+
239
+ enum SX127xImageCal : uint8_t {
240
+ AUTO_IMAGE_CAL_ON = 0x80,
241
+ IMAGE_CAL_START = 0x40,
242
+ IMAGE_CAL_RUNNING = 0x20,
243
+ TEMP_CHANGE = 0x08,
244
+ TEMP_THRESHOLD_20C = 0x06,
245
+ TEMP_THRESHOLD_15C = 0x04,
246
+ TEMP_THRESHOLD_10C = 0x02,
247
+ TEMP_THRESHOLD_5C = 0x00,
248
+ TEMP_MONITOR_OFF = 0x01,
249
+ TEMP_MONITOR_ON = 0x00,
250
+ };
251
+
252
+ enum SX127xIrqFlags : uint8_t {
253
+ RX_TIMEOUT = 0x80,
254
+ RX_DONE = 0x40,
255
+ PAYLOAD_CRC_ERROR = 0x20,
256
+ VALID_HEADER = 0x10,
257
+ TX_DONE = 0x08,
258
+ CAD_DONE = 0x04,
259
+ FHSS_CHANGE_CHANNEL = 0x02,
260
+ CAD_DETECTED = 0x01,
261
+ };
262
+
263
+ enum SX127xModemCfg1 : uint8_t {
264
+ BW_7_8 = 0x00,
265
+ BW_10_4 = 0x10,
266
+ BW_15_6 = 0x20,
267
+ BW_20_8 = 0x30,
268
+ BW_31_3 = 0x40,
269
+ BW_41_7 = 0x50,
270
+ BW_62_5 = 0x60,
271
+ BW_125_0 = 0x70,
272
+ BW_250_0 = 0x80,
273
+ BW_500_0 = 0x90,
274
+ CODING_RATE_4_5 = 0x02,
275
+ CODING_RATE_4_6 = 0x04,
276
+ CODING_RATE_4_7 = 0x06,
277
+ CODING_RATE_4_8 = 0x08,
278
+ IMPLICIT_HEADER = 0x01,
279
+ EXPLICIT_HEADER = 0x00,
280
+ };
281
+
282
+ enum SX127xModemCfg2 : uint8_t {
283
+ SPREADING_FACTOR_SHIFT = 4,
284
+ TX_CONTINOUS_MODE = 0x08,
285
+ RX_PAYLOAD_CRC_ON = 0x04,
286
+ RX_PAYLOAD_CRC_OFF = 0x00,
287
+ };
288
+
289
+ enum SX127xModemCfg3 : uint8_t {
290
+ LOW_DATA_RATE_OPTIMIZE_ON = 0x08,
291
+ MODEM_AGC_AUTO_ON = 0x04,
292
+ };
293
+
294
+ } // namespace sx127x
295
+ } // namespace esphome
@@ -21,10 +21,12 @@ constexpr int LOG_LEVEL_TO_SYSLOG_SEVERITY[] = {
21
21
 
22
22
  void Syslog::setup() {
23
23
  logger::global_logger->add_on_log_callback(
24
- [this](int level, const char *tag, const char *message) { this->log_(level, tag, message); });
24
+ [this](int level, const char *tag, const char *message, size_t message_len) {
25
+ this->log_(level, tag, message, message_len);
26
+ });
25
27
  }
26
28
 
27
- void Syslog::log_(const int level, const char *tag, const char *message) const {
29
+ void Syslog::log_(const int level, const char *tag, const char *message, size_t message_len) const {
28
30
  if (level > this->log_level_)
29
31
  return;
30
32
  // Syslog PRI calculation: facility * 8 + severity
@@ -34,7 +36,7 @@ void Syslog::log_(const int level, const char *tag, const char *message) const {
34
36
  }
35
37
  int pri = this->facility_ * 8 + severity;
36
38
  auto timestamp = this->time_->now().strftime("%b %d %H:%M:%S");
37
- unsigned len = strlen(message);
39
+ size_t len = message_len;
38
40
  // remove color formatting
39
41
  if (this->strip_ && message[0] == 0x1B && len > 11) {
40
42
  message += 7;
@@ -17,7 +17,7 @@ class Syslog : public Component, public Parented<udp::UDPComponent> {
17
17
 
18
18
  protected:
19
19
  int log_level_;
20
- void log_(int level, const char *tag, const char *message) const;
20
+ void log_(int level, const char *tag, const char *message, size_t message_len) const;
21
21
  time::RealTimeClock *time_;
22
22
  bool strip_{true};
23
23
  int facility_{16};
@@ -53,7 +53,7 @@ TCA9555_PIN_SCHEMA = pins.gpio_base_schema(
53
53
  cv.int_range(min=0, max=15),
54
54
  modes=[CONF_INPUT, CONF_OUTPUT],
55
55
  mode_validator=validate_mode,
56
- invertable=True,
56
+ invertible=True,
57
57
  ).extend(
58
58
  {
59
59
  cv.Required(CONF_TCA9555): cv.use_id(TCA9555Component),
@@ -6,16 +6,8 @@ namespace template_ {
6
6
 
7
7
  static const char *const TAG = "template.binary_sensor";
8
8
 
9
- void TemplateBinarySensor::setup() {
10
- if (!this->publish_initial_state_)
11
- return;
9
+ void TemplateBinarySensor::setup() { this->loop(); }
12
10
 
13
- if (this->f_ != nullptr) {
14
- this->publish_initial_state(this->f_().value_or(false));
15
- } else {
16
- this->publish_initial_state(false);
17
- }
18
- }
19
11
  void TemplateBinarySensor::loop() {
20
12
  if (this->f_ == nullptr)
21
13
  return;
@@ -14,8 +14,8 @@ from esphome.const import (
14
14
  CONF_WEB_SERVER,
15
15
  )
16
16
  from esphome.core import CORE, coroutine_with_priority
17
+ from esphome.core.entity_helpers import entity_duplicate_validator, setup_entity
17
18
  from esphome.cpp_generator import MockObjClass
18
- from esphome.cpp_helpers import setup_entity
19
19
 
20
20
  CODEOWNERS = ["@mauritskorse"]
21
21
  IS_PLATFORM_COMPONENT = True
@@ -58,6 +58,9 @@ _TEXT_SCHEMA = (
58
58
  )
59
59
 
60
60
 
61
+ _TEXT_SCHEMA.add_extra(entity_duplicate_validator("text"))
62
+
63
+
61
64
  def text_schema(
62
65
  class_: MockObjClass = cv.UNDEFINED,
63
66
  *,
@@ -94,7 +97,7 @@ async def setup_text_core_(
94
97
  max_length: int | None,
95
98
  pattern: str | None,
96
99
  ):
97
- await setup_entity(var, config)
100
+ await setup_entity(var, config, "text")
98
101
 
99
102
  cg.add(var.traits.set_min_length(min_length))
100
103
  cg.add(var.traits.set_max_length(max_length))
@@ -21,8 +21,8 @@ from esphome.const import (
21
21
  DEVICE_CLASS_TIMESTAMP,
22
22
  )
23
23
  from esphome.core import CORE, coroutine_with_priority
24
+ from esphome.core.entity_helpers import entity_duplicate_validator, setup_entity
24
25
  from esphome.cpp_generator import MockObjClass
25
- from esphome.cpp_helpers import setup_entity
26
26
  from esphome.util import Registry
27
27
 
28
28
  DEVICE_CLASSES = [
@@ -153,6 +153,9 @@ _TEXT_SENSOR_SCHEMA = (
153
153
  )
154
154
 
155
155
 
156
+ _TEXT_SENSOR_SCHEMA.add_extra(entity_duplicate_validator("text_sensor"))
157
+
158
+
156
159
  def text_sensor_schema(
157
160
  class_: MockObjClass = cv.UNDEFINED,
158
161
  *,
@@ -186,7 +189,7 @@ async def build_filters(config):
186
189
 
187
190
 
188
191
  async def setup_text_sensor_core_(var, config):
189
- await setup_entity(var, config)
192
+ await setup_entity(var, config, "text_sensor")
190
193
 
191
194
  if (device_class := config.get(CONF_DEVICE_CLASS)) is not None:
192
195
  cg.add(var.set_device_class(device_class))
@@ -997,7 +997,7 @@ void ThermostatClimate::change_preset_(climate::ClimatePreset preset) {
997
997
  auto config = this->preset_config_.find(preset);
998
998
 
999
999
  if (config != this->preset_config_.end()) {
1000
- ESP_LOGI(TAG, "Preset %s requested", LOG_STR_ARG(climate::climate_preset_to_string(preset)));
1000
+ ESP_LOGV(TAG, "Preset %s requested", LOG_STR_ARG(climate::climate_preset_to_string(preset)));
1001
1001
  if (this->change_preset_internal_(config->second) || (!this->preset.has_value()) ||
1002
1002
  this->preset.value() != preset) {
1003
1003
  // Fire any preset changed trigger if defined
@@ -1015,7 +1015,7 @@ void ThermostatClimate::change_preset_(climate::ClimatePreset preset) {
1015
1015
  this->custom_preset.reset();
1016
1016
  this->preset = preset;
1017
1017
  } else {
1018
- ESP_LOGE(TAG, "Preset %s is not configured, ignoring.", LOG_STR_ARG(climate::climate_preset_to_string(preset)));
1018
+ ESP_LOGW(TAG, "Preset %s not configured; ignoring", LOG_STR_ARG(climate::climate_preset_to_string(preset)));
1019
1019
  }
1020
1020
  }
1021
1021
 
@@ -1023,7 +1023,7 @@ void ThermostatClimate::change_custom_preset_(const std::string &custom_preset)
1023
1023
  auto config = this->custom_preset_config_.find(custom_preset);
1024
1024
 
1025
1025
  if (config != this->custom_preset_config_.end()) {
1026
- ESP_LOGI(TAG, "Custom preset %s requested", custom_preset.c_str());
1026
+ ESP_LOGV(TAG, "Custom preset %s requested", custom_preset.c_str());
1027
1027
  if (this->change_preset_internal_(config->second) || (!this->custom_preset.has_value()) ||
1028
1028
  this->custom_preset.value() != custom_preset) {
1029
1029
  // Fire any preset changed trigger if defined
@@ -1041,7 +1041,7 @@ void ThermostatClimate::change_custom_preset_(const std::string &custom_preset)
1041
1041
  this->preset.reset();
1042
1042
  this->custom_preset = custom_preset;
1043
1043
  } else {
1044
- ESP_LOGE(TAG, "Custom Preset %s is not configured, ignoring.", custom_preset.c_str());
1044
+ ESP_LOGW(TAG, "Custom preset %s not configured; ignoring", custom_preset.c_str());
1045
1045
  }
1046
1046
  }
1047
1047
 
@@ -1298,7 +1298,7 @@ void ThermostatClimate::dump_config() {
1298
1298
  if (this->supports_two_points_) {
1299
1299
  ESP_LOGCONFIG(TAG, " Minimum Set Point Differential: %.1f°C", this->set_point_minimum_differential_);
1300
1300
  }
1301
- ESP_LOGCONFIG(TAG, " Start-up Delay Enabled: %s", YESNO(this->use_startup_delay_));
1301
+ ESP_LOGCONFIG(TAG, " Use Start-up Delay: %s", YESNO(this->use_startup_delay_));
1302
1302
  if (this->supports_cool_) {
1303
1303
  ESP_LOGCONFIG(TAG,
1304
1304
  " Cooling Parameters:\n"
@@ -1353,44 +1353,47 @@ void ThermostatClimate::dump_config() {
1353
1353
  }
1354
1354
  ESP_LOGCONFIG(TAG, " Minimum Idle Time: %" PRIu32 "s", this->timer_[thermostat::TIMER_IDLE_ON].time / 1000);
1355
1355
  ESP_LOGCONFIG(TAG,
1356
- " Supports AUTO: %s\n"
1357
- " Supports HEAT/COOL: %s\n"
1358
- " Supports COOL: %s\n"
1359
- " Supports DRY: %s\n"
1360
- " Supports FAN_ONLY: %s\n"
1361
- " Supports FAN_ONLY_ACTION_USES_FAN_MODE_TIMER: %s\n"
1362
- " Supports FAN_ONLY_COOLING: %s",
1363
- YESNO(this->supports_auto_), YESNO(this->supports_heat_cool_), YESNO(this->supports_cool_),
1364
- YESNO(this->supports_dry_), YESNO(this->supports_fan_only_),
1356
+ " Supported MODES:\n"
1357
+ " AUTO: %s\n"
1358
+ " HEAT/COOL: %s\n"
1359
+ " HEAT: %s\n"
1360
+ " COOL: %s\n"
1361
+ " DRY: %s\n"
1362
+ " FAN_ONLY: %s\n"
1363
+ " FAN_ONLY_ACTION_USES_FAN_MODE_TIMER: %s\n"
1364
+ " FAN_ONLY_COOLING: %s",
1365
+ YESNO(this->supports_auto_), YESNO(this->supports_heat_cool_), YESNO(this->supports_heat_),
1366
+ YESNO(this->supports_cool_), YESNO(this->supports_dry_), YESNO(this->supports_fan_only_),
1365
1367
  YESNO(this->supports_fan_only_action_uses_fan_mode_timer_), YESNO(this->supports_fan_only_cooling_));
1366
1368
  if (this->supports_cool_) {
1367
- ESP_LOGCONFIG(TAG, " Supports FAN_WITH_COOLING: %s", YESNO(this->supports_fan_with_cooling_));
1369
+ ESP_LOGCONFIG(TAG, " FAN_WITH_COOLING: %s", YESNO(this->supports_fan_with_cooling_));
1368
1370
  }
1369
1371
  if (this->supports_heat_) {
1370
- ESP_LOGCONFIG(TAG, " Supports FAN_WITH_HEATING: %s", YESNO(this->supports_fan_with_heating_));
1372
+ ESP_LOGCONFIG(TAG, " FAN_WITH_HEATING: %s", YESNO(this->supports_fan_with_heating_));
1371
1373
  }
1372
- ESP_LOGCONFIG(TAG, " Supports HEAT: %s", YESNO(this->supports_heat_));
1373
1374
  ESP_LOGCONFIG(TAG,
1374
- " Supports FAN MODE ON: %s\n"
1375
- " Supports FAN MODE OFF: %s\n"
1376
- " Supports FAN MODE AUTO: %s\n"
1377
- " Supports FAN MODE LOW: %s\n"
1378
- " Supports FAN MODE MEDIUM: %s\n"
1379
- " Supports FAN MODE HIGH: %s\n"
1380
- " Supports FAN MODE MIDDLE: %s\n"
1381
- " Supports FAN MODE FOCUS: %s\n"
1382
- " Supports FAN MODE DIFFUSE: %s\n"
1383
- " Supports FAN MODE QUIET: %s",
1375
+ " Supported FAN MODES:\n"
1376
+ " ON: %s\n"
1377
+ " OFF: %s\n"
1378
+ " AUTO: %s\n"
1379
+ " LOW: %s\n"
1380
+ " MEDIUM: %s\n"
1381
+ " HIGH: %s\n"
1382
+ " MIDDLE: %s\n"
1383
+ " FOCUS: %s\n"
1384
+ " DIFFUSE: %s\n"
1385
+ " QUIET: %s",
1384
1386
  YESNO(this->supports_fan_mode_on_), YESNO(this->supports_fan_mode_off_),
1385
1387
  YESNO(this->supports_fan_mode_auto_), YESNO(this->supports_fan_mode_low_),
1386
1388
  YESNO(this->supports_fan_mode_medium_), YESNO(this->supports_fan_mode_high_),
1387
1389
  YESNO(this->supports_fan_mode_middle_), YESNO(this->supports_fan_mode_focus_),
1388
1390
  YESNO(this->supports_fan_mode_diffuse_), YESNO(this->supports_fan_mode_quiet_));
1389
1391
  ESP_LOGCONFIG(TAG,
1390
- " Supports SWING MODE BOTH: %s\n"
1391
- " Supports SWING MODE OFF: %s\n"
1392
- " Supports SWING MODE HORIZONTAL: %s\n"
1393
- " Supports SWING MODE VERTICAL: %s\n"
1392
+ " Supported SWING MODES:\n"
1393
+ " BOTH: %s\n"
1394
+ " OFF: %s\n"
1395
+ " HORIZONTAL: %s\n"
1396
+ " VERTICAL: %s\n"
1394
1397
  " Supports TWO SET POINTS: %s",
1395
1398
  YESNO(this->supports_swing_mode_both_), YESNO(this->supports_swing_mode_off_),
1396
1399
  YESNO(this->supports_swing_mode_horizontal_), YESNO(this->supports_swing_mode_vertical_),
@@ -13,7 +13,7 @@
13
13
  namespace esphome {
14
14
  namespace thermostat {
15
15
 
16
- enum ThermostatClimateTimerIndex : size_t {
16
+ enum ThermostatClimateTimerIndex : uint8_t {
17
17
  TIMER_COOLING_MAX_RUN_TIME = 0,
18
18
  TIMER_COOLING_OFF = 1,
19
19
  TIMER_COOLING_ON = 2,
@@ -26,7 +26,11 @@ enum ThermostatClimateTimerIndex : size_t {
26
26
  TIMER_IDLE_ON = 9,
27
27
  };
28
28
 
29
- enum OnBootRestoreFrom : size_t { MEMORY = 0, DEFAULT_PRESET = 1 };
29
+ enum OnBootRestoreFrom : uint8_t {
30
+ MEMORY = 0,
31
+ DEFAULT_PRESET = 1,
32
+ };
33
+
30
34
  struct ThermostatClimateTimer {
31
35
  bool active;
32
36
  uint32_t time;
@@ -65,7 +69,7 @@ class ThermostatClimate : public climate::Climate, public Component {
65
69
 
66
70
  void set_default_preset(const std::string &custom_preset);
67
71
  void set_default_preset(climate::ClimatePreset preset);
68
- void set_on_boot_restore_from(thermostat::OnBootRestoreFrom on_boot_restore_from);
72
+ void set_on_boot_restore_from(OnBootRestoreFrom on_boot_restore_from);
69
73
  void set_set_point_minimum_differential(float differential);
70
74
  void set_cool_deadband(float deadband);
71
75
  void set_cool_overrun(float overrun);
@@ -240,10 +244,8 @@ class ThermostatClimate : public climate::Climate, public Component {
240
244
  void dump_preset_config_(const char *preset_name, const ThermostatClimateTargetTempConfig &config,
241
245
  bool is_default_preset);
242
246
 
243
- /// The sensor used for getting the current temperature
244
- sensor::Sensor *sensor_{nullptr};
245
- /// The sensor used for getting the current humidity
246
- sensor::Sensor *humidity_sensor_{nullptr};
247
+ /// Minimum allowable duration in seconds for action timers
248
+ const uint8_t min_timer_duration_{1};
247
249
 
248
250
  /// Whether the controller supports auto/cooling/drying/fanning/heating.
249
251
  ///
@@ -310,6 +312,31 @@ class ThermostatClimate : public climate::Climate, public Component {
310
312
  /// setup_complete_ blocks modifying/resetting the temps immediately after boot
311
313
  bool setup_complete_{false};
312
314
 
315
+ /// Store previously-known temperatures
316
+ ///
317
+ /// These are used to determine when the temperature change trigger/action needs to be called
318
+ float prev_target_temperature_{NAN};
319
+ float prev_target_temperature_low_{NAN};
320
+ float prev_target_temperature_high_{NAN};
321
+
322
+ /// Minimum differential required between set points
323
+ float set_point_minimum_differential_{0};
324
+
325
+ /// Hysteresis values used for computing climate actions
326
+ float cooling_deadband_{0};
327
+ float cooling_overrun_{0};
328
+ float heating_deadband_{0};
329
+ float heating_overrun_{0};
330
+
331
+ /// Maximum allowable temperature deltas before engaging supplemental cooling/heating actions
332
+ float supplemental_cool_delta_{0};
333
+ float supplemental_heat_delta_{0};
334
+
335
+ /// The sensor used for getting the current temperature
336
+ sensor::Sensor *sensor_{nullptr};
337
+ /// The sensor used for getting the current humidity
338
+ sensor::Sensor *humidity_sensor_{nullptr};
339
+
313
340
  /// The trigger to call when the controller should switch to cooling action/mode.
314
341
  ///
315
342
  /// A null value for this attribute means that the controller has no cooling action
@@ -399,7 +426,7 @@ class ThermostatClimate : public climate::Climate, public Component {
399
426
  /// The trigger to call when the target temperature(s) change(es).
400
427
  Trigger<> *temperature_change_trigger_{nullptr};
401
428
 
402
- /// The triggr to call when the preset mode changes
429
+ /// The trigger to call when the preset mode changes
403
430
  Trigger<> *preset_change_trigger_{nullptr};
404
431
 
405
432
  /// A reference to the trigger that was previously active.
@@ -411,6 +438,10 @@ class ThermostatClimate : public climate::Climate, public Component {
411
438
  Trigger<> *prev_mode_trigger_{nullptr};
412
439
  Trigger<> *prev_swing_mode_trigger_{nullptr};
413
440
 
441
+ /// If set to DEFAULT_PRESET then the default preset is always used. When MEMORY prior
442
+ /// state will attempt to be restored if possible
443
+ OnBootRestoreFrom on_boot_restore_from_{OnBootRestoreFrom::MEMORY};
444
+
414
445
  /// Store previously-known states
415
446
  ///
416
447
  /// These are used to determine when a trigger/action needs to be called
@@ -419,28 +450,10 @@ class ThermostatClimate : public climate::Climate, public Component {
419
450
  climate::ClimateMode prev_mode_{climate::CLIMATE_MODE_OFF};
420
451
  climate::ClimateSwingMode prev_swing_mode_{climate::CLIMATE_SWING_OFF};
421
452
 
422
- /// Store previously-known temperatures
423
- ///
424
- /// These are used to determine when the temperature change trigger/action needs to be called
425
- float prev_target_temperature_{NAN};
426
- float prev_target_temperature_low_{NAN};
427
- float prev_target_temperature_high_{NAN};
428
-
429
- /// Minimum differential required between set points
430
- float set_point_minimum_differential_{0};
431
-
432
- /// Hysteresis values used for computing climate actions
433
- float cooling_deadband_{0};
434
- float cooling_overrun_{0};
435
- float heating_deadband_{0};
436
- float heating_overrun_{0};
437
-
438
- /// Maximum allowable temperature deltas before engauging supplemental cooling/heating actions
439
- float supplemental_cool_delta_{0};
440
- float supplemental_heat_delta_{0};
441
-
442
- /// Minimum allowable duration in seconds for action timers
443
- const uint8_t min_timer_duration_{1};
453
+ /// Default standard preset to use on start up
454
+ climate::ClimatePreset default_preset_{};
455
+ /// Default custom preset to use on start up
456
+ std::string default_custom_preset_{};
444
457
 
445
458
  /// Climate action timers
446
459
  std::vector<ThermostatClimateTimer> timer_{
@@ -460,15 +473,6 @@ class ThermostatClimate : public climate::Climate, public Component {
460
473
  std::map<climate::ClimatePreset, ThermostatClimateTargetTempConfig> preset_config_{};
461
474
  /// The set of custom preset configurations this thermostat supports (eg. "My Custom Preset")
462
475
  std::map<std::string, ThermostatClimateTargetTempConfig> custom_preset_config_{};
463
-
464
- /// Default standard preset to use on start up
465
- climate::ClimatePreset default_preset_{};
466
- /// Default custom preset to use on start up
467
- std::string default_custom_preset_{};
468
-
469
- /// If set to DEFAULT_PRESET then the default preset is always used. When MEMORY prior
470
- /// state will attempt to be restored if possible
471
- thermostat::OnBootRestoreFrom on_boot_restore_from_{thermostat::OnBootRestoreFrom::MEMORY};
472
476
  };
473
477
 
474
478
  } // namespace thermostat