esphome 2025.6.3__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.
- esphome/__main__.py +1 -3
- esphome/codegen.py +2 -0
- esphome/components/ac_dimmer/ac_dimmer.cpp +6 -6
- esphome/components/adc/__init__.py +25 -1
- esphome/components/adc/adc_sensor.h +11 -11
- esphome/components/adc/adc_sensor_common.cpp +1 -1
- esphome/components/adc/adc_sensor_esp32.cpp +16 -8
- esphome/components/ade7880/ade7880.h +0 -2
- esphome/components/ads1115/ads1115.h +0 -1
- esphome/components/ads1118/ads1118.h +0 -1
- esphome/components/ags10/ags10.h +0 -2
- esphome/components/aic3204/aic3204.h +0 -1
- esphome/components/alarm_control_panel/__init__.py +5 -2
- esphome/components/alpha3/alpha3.h +0 -1
- esphome/components/am43/cover/am43_cover.h +0 -1
- esphome/components/am43/sensor/am43_sensor.h +0 -1
- esphome/components/analog_threshold/analog_threshold_binary_sensor.h +0 -2
- esphome/components/anova/anova.cpp +5 -1
- esphome/components/anova/anova.h +0 -1
- esphome/components/apds9960/apds9960.cpp +1 -1
- esphome/components/api/__init__.py +42 -20
- esphome/components/api/api_connection.cpp +318 -391
- esphome/components/api/api_connection.h +206 -126
- esphome/components/api/api_frame_helper.cpp +89 -124
- esphome/components/api/api_frame_helper.h +57 -45
- esphome/components/api/api_pb2.cpp +414 -4350
- esphome/components/api/api_pb2.h +287 -198
- esphome/components/api/api_pb2_dump.cpp +4333 -0
- esphome/components/api/api_pb2_service.cpp +180 -425
- esphome/components/api/api_pb2_service.h +7 -6
- esphome/components/api/api_pb2_size.h +2 -4
- esphome/components/api/api_server.cpp +138 -167
- esphome/components/api/api_server.h +66 -12
- esphome/components/api/client.py +8 -2
- esphome/components/api/list_entities.cpp +36 -105
- esphome/components/api/list_entities.h +31 -23
- esphome/components/api/proto.h +26 -3
- esphome/components/api/subscribe_state.cpp +23 -29
- esphome/components/api/subscribe_state.h +26 -19
- esphome/components/as5600/as5600.h +0 -1
- esphome/components/async_tcp/__init__.py +14 -5
- esphome/components/atc_mithermometer/atc_mithermometer.h +0 -1
- esphome/components/atm90e32/atm90e32.cpp +2 -1
- esphome/components/audio/audio_decoder.cpp +1 -1
- esphome/components/audio/audio_transfer_buffer.cpp +2 -2
- esphome/components/b_parasite/b_parasite.h +0 -1
- esphome/components/bedjet/bedjet_hub.cpp +5 -1
- esphome/components/bedjet/climate/bedjet_climate.cpp +5 -1
- esphome/components/beken_spi_led_strip/led_strip.cpp +4 -2
- esphome/components/bh1750/bh1750.cpp +5 -5
- esphome/components/binary_sensor/__init__.py +82 -5
- esphome/components/binary_sensor/automation.h +19 -1
- esphome/components/binary_sensor/binary_sensor.cpp +12 -30
- esphome/components/binary_sensor/binary_sensor.h +11 -25
- esphome/components/binary_sensor/filter.cpp +29 -24
- esphome/components/binary_sensor/filter.h +20 -10
- esphome/components/ble_client/output/ble_binary_output.h +0 -1
- esphome/components/ble_client/sensor/ble_rssi_sensor.cpp +5 -1
- esphome/components/ble_client/sensor/ble_rssi_sensor.h +0 -1
- esphome/components/ble_client/sensor/ble_sensor.cpp +5 -1
- esphome/components/ble_client/sensor/ble_sensor.h +0 -1
- esphome/components/ble_client/switch/ble_switch.h +0 -1
- esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +5 -1
- esphome/components/ble_client/text_sensor/ble_text_sensor.h +0 -1
- esphome/components/ble_presence/ble_presence_device.h +0 -1
- esphome/components/ble_rssi/ble_rssi_sensor.h +0 -1
- esphome/components/ble_scanner/ble_scanner.h +0 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.h +9 -2
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +16 -6
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +8 -2
- esphome/components/bme680/sensor.py +1 -1
- esphome/components/bmp581/bmp581.h +0 -2
- esphome/components/button/__init__.py +5 -2
- esphome/components/camera/__init__.py +1 -0
- esphome/components/camera/camera.cpp +22 -0
- esphome/components/camera/camera.h +80 -0
- esphome/components/canbus/__init__.py +1 -0
- esphome/components/cap1188/cap1188.h +0 -1
- esphome/components/captive_portal/__init__.py +12 -2
- esphome/components/captive_portal/captive_portal.cpp +12 -2
- esphome/components/captive_portal/captive_portal.h +5 -2
- esphome/components/ccs811/ccs811.h +0 -2
- esphome/components/climate/__init__.py +5 -2
- esphome/components/cm1106/sensor.py +2 -2
- esphome/components/const/__init__.py +2 -0
- esphome/components/copy/binary_sensor/copy_binary_sensor.h +0 -1
- esphome/components/copy/button/copy_button.h +0 -1
- esphome/components/copy/cover/copy_cover.h +0 -1
- esphome/components/copy/fan/copy_fan.h +0 -1
- esphome/components/copy/lock/copy_lock.h +0 -1
- esphome/components/copy/number/copy_number.h +0 -1
- esphome/components/copy/select/copy_select.h +0 -1
- esphome/components/copy/sensor/copy_sensor.h +0 -1
- esphome/components/copy/switch/copy_switch.h +0 -1
- esphome/components/copy/text/copy_text.h +0 -1
- esphome/components/copy/text_sensor/copy_text_sensor.h +0 -1
- esphome/components/cover/__init__.py +5 -2
- esphome/components/cs5460a/cs5460a.h +0 -1
- esphome/components/datetime/__init__.py +4 -2
- esphome/components/debug/__init__.py +20 -0
- esphome/components/deep_sleep/__init__.py +43 -9
- esphome/components/demo/__init__.py +2 -2
- esphome/components/display/display.cpp +4 -3
- esphome/components/display/display.h +0 -2
- esphome/components/display/display_buffer.cpp +1 -1
- esphome/components/ds2484/__init__.py +1 -0
- esphome/components/ds2484/ds2484.cpp +209 -0
- esphome/components/ds2484/ds2484.h +43 -0
- esphome/components/ds2484/one_wire.py +37 -0
- esphome/components/duty_time/duty_time_sensor.h +0 -1
- esphome/components/ens160_base/ens160_base.h +0 -1
- esphome/components/es7210/es7210.h +0 -1
- esphome/components/es7243e/es7243e.h +0 -1
- esphome/components/es8156/es8156.h +0 -1
- esphome/components/es8311/es8311.h +0 -1
- esphome/components/es8388/es8388.h +0 -1
- esphome/components/esp32/__init__.py +102 -135
- esphome/components/esp32/core.cpp +0 -4
- esphome/components/esp32/gpio.h +1 -1
- esphome/components/esp32/helpers.cpp +69 -0
- esphome/components/esp32_ble/ble.cpp +5 -6
- esphome/components/esp32_ble/ble.h +29 -14
- esphome/components/esp32_ble/ble_event.h +6 -6
- esphome/components/esp32_ble_client/ble_client_base.cpp +21 -6
- esphome/components/esp32_ble_client/ble_client_base.h +24 -9
- esphome/components/esp32_ble_tracker/__init__.py +2 -8
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +5 -5
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +11 -7
- esphome/components/esp32_camera/__init__.py +111 -97
- esphome/components/esp32_camera/esp32_camera.cpp +41 -31
- esphome/components/esp32_camera/esp32_camera.h +35 -30
- esphome/components/esp32_camera_web_server/__init__.py +2 -1
- esphome/components/esp32_camera_web_server/camera_web_server.cpp +8 -8
- esphome/components/esp32_camera_web_server/camera_web_server.h +3 -3
- esphome/components/esp32_hall/sensor.py +2 -21
- esphome/components/esp32_hosted/__init__.py +101 -0
- esphome/components/esp32_hosted/esp32_hosted.py.script +12 -0
- esphome/components/esp32_improv/esp32_improv_component.cpp +3 -0
- esphome/components/esp32_rmt/__init__.py +0 -58
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +77 -63
- esphome/components/esp32_rmt_led_strip/led_strip.h +11 -17
- esphome/components/esp32_rmt_led_strip/light.py +14 -76
- esphome/components/esp32_touch/esp32_touch.h +174 -28
- esphome/components/esp32_touch/esp32_touch_common.cpp +162 -0
- esphome/components/esp32_touch/esp32_touch_v1.cpp +238 -0
- esphome/components/esp32_touch/esp32_touch_v2.cpp +397 -0
- esphome/components/esp8266/__init__.py +1 -0
- esphome/components/esp8266/gpio.cpp +10 -10
- esphome/components/esp8266/helpers.cpp +31 -0
- esphome/components/esphome/ota/__init__.py +1 -0
- esphome/components/esphome/ota/ota_esphome.cpp +24 -19
- esphome/components/ethernet/__init__.py +42 -23
- esphome/components/ethernet/esp_eth_phy_jl1101.c +0 -16
- esphome/components/ethernet/ethernet_component.cpp +69 -29
- esphome/components/ethernet/ethernet_component.h +18 -10
- esphome/components/event/__init__.py +5 -2
- esphome/components/ezo/ezo.h +0 -1
- esphome/components/ezo_pmp/ezo_pmp.h +0 -1
- esphome/components/fan/__init__.py +5 -2
- esphome/components/feedback/feedback_cover.h +0 -1
- esphome/components/font/__init__.py +92 -82
- esphome/components/font/font.cpp +9 -2
- esphome/components/font/font.h +20 -5
- esphome/components/fs3000/fs3000.h +0 -1
- esphome/components/gcja5/gcja5.h +0 -1
- esphome/components/gl_r01_i2c/__init__.py +0 -0
- esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +68 -0
- esphome/components/gl_r01_i2c/gl_r01_i2c.h +22 -0
- esphome/components/gl_r01_i2c/sensor.py +36 -0
- esphome/components/gp8403/gp8403.h +0 -1
- esphome/components/gpio/binary_sensor/__init__.py +17 -0
- esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp +77 -3
- esphome/components/gpio/binary_sensor/gpio_binary_sensor.h +40 -0
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.h +0 -2
- esphome/components/he60r/he60r.h +0 -1
- esphome/components/heatpumpir/climate.py +2 -1
- esphome/components/heatpumpir/heatpumpir.cpp +1 -0
- esphome/components/heatpumpir/heatpumpir.h +1 -0
- esphome/components/honeywellabp2_i2c/honeywellabp2.h +0 -1
- esphome/components/host/__init__.py +2 -1
- esphome/components/host/helpers.cpp +57 -0
- esphome/components/http_request/__init__.py +19 -1
- esphome/components/http_request/http_request.h +1 -1
- esphome/components/http_request/http_request_arduino.h +1 -0
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/http_request/update/http_request_update.cpp +28 -9
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +3 -9
- esphome/components/hydreon_rgxx/sensor.py +1 -1
- esphome/components/i2c/__init__.py +23 -11
- esphome/components/i2c/i2c_bus.h +8 -1
- esphome/components/i2c/i2c_bus_arduino.cpp +4 -3
- esphome/components/i2c/i2c_bus_arduino.h +6 -3
- esphome/components/i2c/i2c_bus_esp_idf.h +5 -3
- esphome/components/i2c_device/i2c_device.h +0 -1
- esphome/components/i2s_audio/__init__.py +2 -10
- esphome/components/i2s_audio/i2s_audio.cpp +1 -5
- esphome/components/i2s_audio/media_player/__init__.py +2 -2
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +2 -2
- esphome/components/iaqcore/iaqcore.h +0 -2
- esphome/components/image/__init__.py +123 -24
- esphome/components/improv_serial/improv_serial_component.cpp +0 -4
- esphome/components/ina219/ina219.cpp +7 -0
- esphome/components/ina219/ina219.h +1 -0
- esphome/components/ina260/ina260.h +0 -2
- esphome/components/inkbird_ibsth1_mini/inkbird_ibsth1_mini.h +0 -1
- esphome/components/inkplate6/display.py +15 -0
- esphome/components/inkplate6/inkplate.cpp +2 -2
- esphome/components/integration/integration_sensor.h +0 -1
- esphome/components/internal_temperature/internal_temperature.cpp +8 -27
- esphome/components/internal_temperature/sensor.py +0 -26
- esphome/components/interval/interval.h +0 -2
- esphome/components/ld2410/button/__init__.py +3 -3
- esphome/components/ld2410/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2410/button/{reset_button.h → factory_reset_button.h} +2 -2
- esphome/components/ld2410/ld2410.cpp +430 -261
- esphome/components/ld2410/ld2410.h +44 -146
- esphome/components/ld2410/number/__init__.py +2 -2
- esphome/components/ld2410/sensor.py +1 -1
- esphome/components/ld2410/switch/__init__.py +1 -1
- esphome/components/ld2420/ld2420.cpp +196 -100
- esphome/components/ld2420/ld2420.h +46 -118
- esphome/components/ld2420/number/__init__.py +2 -2
- esphome/components/ld2420/sensor/__init__.py +6 -2
- esphome/components/ld2420/sensor/ld2420_sensor.h +1 -1
- esphome/components/ld2450/button/__init__.py +3 -3
- esphome/components/ld2450/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2450/button/{reset_button.h → factory_reset_button.h} +2 -2
- esphome/components/ld2450/ld2450.cpp +384 -232
- esphome/components/ld2450/ld2450.h +60 -69
- esphome/components/ld2450/switch/__init__.py +1 -1
- esphome/components/ledc/ledc_output.cpp +1 -63
- esphome/components/libretiny/__init__.py +4 -3
- esphome/components/libretiny/const.py +5 -0
- esphome/components/libretiny/generate_components.py +1 -0
- esphome/components/libretiny/helpers.cpp +35 -0
- esphome/components/libretiny/lt_component.cpp +5 -3
- esphome/components/light/__init__.py +4 -2
- esphome/components/light/addressable_light.h +3 -3
- esphome/components/light/light_call.cpp +180 -243
- esphome/components/light/light_call.h +72 -20
- esphome/components/light/light_color_values.h +14 -14
- esphome/components/light/light_state.h +15 -13
- esphome/components/light/transformers.h +2 -2
- esphome/components/ln882x/__init__.py +52 -0
- esphome/components/ln882x/boards.py +285 -0
- esphome/components/lock/__init__.py +5 -2
- esphome/components/logger/__init__.py +40 -3
- esphome/components/logger/logger.cpp +47 -12
- esphome/components/logger/logger.h +80 -49
- esphome/components/logger/logger_esp32.cpp +3 -3
- esphome/components/lps22/__init__.py +0 -0
- esphome/components/lps22/lps22.cpp +75 -0
- esphome/components/lps22/lps22.h +27 -0
- esphome/components/lps22/sensor.py +58 -0
- esphome/components/ltr390/ltr390.h +0 -1
- esphome/components/ltr501/ltr501.h +0 -1
- esphome/components/ltr_als_ps/ltr_als_ps.h +0 -1
- esphome/components/lvgl/__init__.py +1 -1
- esphome/components/lvgl/schemas.py +66 -6
- esphome/components/lvgl/styles.py +24 -16
- esphome/components/lvgl/widgets/__init__.py +12 -2
- esphome/components/lvgl/widgets/lv_bar.py +40 -19
- esphome/components/m5stack_8angle/light/m5stack_8angle_light.cpp +1 -1
- esphome/components/max9611/max9611.h +0 -1
- esphome/components/mcp23016/__init__.py +1 -1
- esphome/components/mcp23xxx_base/__init__.py +1 -1
- esphome/components/mcp4461/__init__.py +1 -1
- esphome/components/mcp4461/output/__init__.py +3 -2
- esphome/components/mcp9600/mcp9600.h +0 -2
- esphome/components/md5/md5.cpp +3 -3
- esphome/components/md5/md5.h +1 -6
- esphome/components/mdns/__init__.py +22 -11
- esphome/components/media_player/__init__.py +4 -3
- esphome/components/micro_wake_word/__init__.py +1 -5
- esphome/components/micro_wake_word/streaming_model.cpp +2 -2
- esphome/components/microphone/microphone.cpp +7 -9
- esphome/components/microphone/microphone.h +0 -2
- esphome/components/mipi_spi/display.py +1 -0
- esphome/components/mmc5603/mmc5603.cpp +1 -1
- esphome/components/modbus/modbus.cpp +33 -15
- esphome/components/modbus/modbus.h +9 -0
- esphome/components/modbus_controller/__init__.py +42 -10
- esphome/components/modbus_controller/modbus_controller.cpp +92 -11
- esphome/components/modbus_controller/modbus_controller.h +61 -7
- esphome/components/mopeka_pro_check/mopeka_pro_check.h +0 -1
- esphome/components/mopeka_std_check/mopeka_std_check.h +0 -1
- esphome/components/mpl3115a2/mpl3115a2.h +0 -2
- esphome/components/mqtt/__init__.py +16 -0
- esphome/components/mqtt/mqtt_backend.h +2 -1
- esphome/components/mqtt/mqtt_backend_esp32.cpp +126 -45
- esphome/components/mqtt/mqtt_backend_esp32.h +106 -4
- esphome/components/mqtt/mqtt_client.cpp +15 -9
- esphome/components/mqtt/mqtt_client.h +8 -3
- esphome/components/ms8607/ms8607.h +0 -1
- esphome/components/neopixelbus/light.py +4 -1
- esphome/components/neopixelbus/neopixelbus_light.h +1 -1
- esphome/components/network/__init__.py +4 -1
- esphome/components/network/ip_address.h +1 -0
- esphome/components/nextion/__init__.py +16 -0
- esphome/components/nextion/base_component.py +1 -0
- esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +1 -1
- esphome/components/nextion/display.py +14 -4
- esphome/components/nextion/nextion.cpp +166 -101
- esphome/components/nextion/nextion.h +84 -53
- esphome/components/nextion/nextion_commands.cpp +11 -10
- esphome/components/nextion/nextion_component.cpp +28 -28
- esphome/components/nextion/nextion_component.h +53 -18
- esphome/components/nextion/nextion_component_base.h +3 -0
- esphome/components/nextion/nextion_upload.cpp +36 -0
- esphome/components/nextion/nextion_upload_arduino.cpp +10 -35
- esphome/components/nextion/nextion_upload_idf.cpp +9 -33
- esphome/components/nextion/sensor/nextion_sensor.cpp +1 -1
- esphome/components/nextion/switch/nextion_switch.cpp +1 -1
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +1 -1
- esphome/components/nfc/nfc.cpp +3 -22
- esphome/components/nfc/nfc.h +3 -3
- esphome/components/number/__init__.py +5 -2
- esphome/components/online_image/__init__.py +5 -0
- esphome/components/online_image/online_image.cpp +6 -2
- esphome/components/online_image/online_image.h +4 -1
- esphome/components/opentherm/opentherm.cpp +7 -12
- esphome/components/openthread/__init__.py +47 -40
- esphome/components/openthread/const.py +1 -0
- esphome/components/openthread/openthread_esp.cpp +27 -5
- esphome/components/opt3001/__init__.py +0 -0
- esphome/components/opt3001/opt3001.cpp +122 -0
- esphome/components/opt3001/opt3001.h +27 -0
- esphome/components/opt3001/sensor.py +35 -0
- esphome/components/ota/__init__.py +17 -0
- esphome/components/ota/ota_backend.h +27 -1
- esphome/components/ota/ota_backend_arduino_esp32.cpp +12 -2
- esphome/components/ota/ota_backend_arduino_esp32.h +3 -0
- esphome/components/ota/ota_backend_arduino_esp8266.cpp +18 -4
- esphome/components/ota/ota_backend_arduino_esp8266.h +3 -0
- esphome/components/ota/ota_backend_arduino_libretiny.cpp +12 -2
- esphome/components/ota/ota_backend_arduino_libretiny.h +3 -0
- esphome/components/ota/ota_backend_arduino_rp2040.cpp +9 -2
- esphome/components/ota/ota_backend_arduino_rp2040.h +3 -0
- esphome/components/ota/ota_backend_esp_idf.cpp +10 -16
- esphome/components/ota/ota_backend_esp_idf.h +1 -0
- esphome/components/packages/__init__.py +5 -2
- esphome/components/packet_transport/binary_sensor.py +61 -4
- esphome/components/packet_transport/packet_transport.cpp +31 -1
- esphome/components/packet_transport/packet_transport.h +11 -5
- esphome/components/pcf8574/__init__.py +1 -1
- esphome/components/pi4ioe5v6408/__init__.py +84 -0
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +171 -0
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.h +70 -0
- esphome/components/pmsa003i/pmsa003i.h +0 -1
- esphome/components/pmsx003/pmsx003.h +0 -1
- esphome/components/pn7150/pn7150.cpp +7 -7
- esphome/components/pn7150/pn7150.h +0 -1
- esphome/components/pn7160/pn7160.cpp +7 -7
- esphome/components/pn7160/pn7160.h +0 -1
- esphome/components/preferences/syncer.h +2 -0
- esphome/components/prometheus/prometheus_handler.h +1 -1
- esphome/components/psram/psram.cpp +0 -20
- esphome/components/pulse_counter/pulse_counter_sensor.h +0 -1
- esphome/components/pulse_meter/pulse_meter_sensor.cpp +8 -4
- esphome/components/pulse_width/pulse_width.h +0 -1
- esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +0 -4
- esphome/components/pvvx_mithermometer/display/pvvx_display.h +0 -2
- esphome/components/pvvx_mithermometer/pvvx_mithermometer.h +0 -1
- esphome/components/qr_code/__init__.py +13 -10
- esphome/components/qwiic_pir/qwiic_pir.h +0 -1
- esphome/components/radon_eye_ble/radon_eye_listener.cpp +1 -1
- esphome/components/rc522/rc522.h +0 -1
- esphome/components/rdm6300/rdm6300.h +0 -2
- esphome/components/remote_base/__init__.py +7 -5
- esphome/components/remote_base/remote_base.cpp +24 -21
- esphome/components/remote_base/remote_base.h +3 -26
- esphome/components/remote_receiver/__init__.py +40 -46
- esphome/components/remote_receiver/remote_receiver.h +4 -18
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -87
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +1 -1
- esphome/components/remote_transmitter/__init__.py +42 -43
- esphome/components/remote_transmitter/remote_transmitter.h +2 -14
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -77
- esphome/components/resistance/resistance_sensor.h +0 -1
- esphome/components/rp2040/__init__.py +1 -0
- esphome/components/rp2040/helpers.cpp +55 -0
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +2 -2
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -4
- esphome/components/rtttl/__init__.py +4 -4
- esphome/components/rtttl/rtttl.cpp +10 -1
- esphome/components/ruuvitag/ruuvitag.h +0 -1
- esphome/components/safe_mode/safe_mode.cpp +2 -0
- esphome/components/safe_mode/safe_mode.h +4 -1
- esphome/components/scd30/scd30.h +0 -1
- esphome/components/scd30/sensor.py +2 -2
- esphome/components/scd4x/scd4x.cpp +61 -54
- esphome/components/scd4x/scd4x.h +17 -15
- esphome/components/scd4x/sensor.py +4 -4
- esphome/components/script/script.h +0 -2
- esphome/components/sdp3x/sensor.py +1 -1
- esphome/components/select/__init__.py +5 -2
- esphome/components/sen5x/sen5x.h +0 -1
- esphome/components/senseair/senseair.h +0 -1
- esphome/components/sensor/__init__.py +4 -2
- esphome/components/sensor/filter.cpp +1 -1
- esphome/components/sensor/sensor.cpp +12 -6
- esphome/components/sensor/sensor.h +13 -5
- esphome/components/servo/servo.h +0 -1
- esphome/components/sfa30/sfa30.h +0 -1
- esphome/components/sgp30/sgp30.h +0 -1
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/stm32flash.cpp +1 -2
- esphome/components/sht4x/sht4x.h +0 -1
- esphome/components/sm300d2/sm300d2.h +0 -2
- esphome/components/smt100/sensor.py +8 -4
- esphome/components/smt100/smt100.cpp +5 -5
- esphome/components/smt100/smt100.h +3 -3
- esphome/components/sn74hc595/__init__.py +1 -1
- esphome/components/sn74hc595/sn74hc595.cpp +5 -4
- esphome/components/sntp/sntp_component.cpp +9 -3
- esphome/components/sntp/time.py +2 -0
- esphome/components/socket/__init__.py +17 -0
- esphome/components/spi/__init__.py +27 -6
- esphome/components/spi/spi.cpp +3 -2
- esphome/components/spi/spi.h +9 -3
- esphome/components/spi/spi_arduino.cpp +3 -5
- esphome/components/spi/spi_esp_idf.cpp +40 -21
- esphome/components/spi_led_strip/spi_led_strip.cpp +1 -1
- esphome/components/sps30/sps30.h +0 -1
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +0 -4
- esphome/components/status/status_binary_sensor.h +0 -2
- esphome/components/substitutions/__init__.py +76 -19
- esphome/components/substitutions/jinja.py +99 -0
- esphome/components/sun/sun.cpp +3 -4
- esphome/components/switch/__init__.py +5 -2
- esphome/components/switch/binary_sensor/switch_binary_sensor.h +0 -1
- esphome/components/sx126x/__init__.py +317 -0
- esphome/components/sx126x/automation.h +62 -0
- esphome/components/sx126x/packet_transport/__init__.py +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.cpp +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.h +25 -0
- esphome/components/sx126x/sx126x.cpp +523 -0
- esphome/components/sx126x/sx126x.h +140 -0
- esphome/components/sx126x/sx126x_reg.h +163 -0
- esphome/components/sx127x/__init__.py +325 -0
- esphome/components/sx127x/automation.h +62 -0
- esphome/components/sx127x/packet_transport/__init__.py +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.cpp +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.h +25 -0
- esphome/components/sx127x/sx127x.cpp +498 -0
- esphome/components/sx127x/sx127x.h +128 -0
- esphome/components/sx127x/sx127x_reg.h +295 -0
- esphome/components/syslog/esphome_syslog.cpp +5 -3
- esphome/components/syslog/esphome_syslog.h +1 -1
- esphome/components/tca9555/__init__.py +1 -1
- esphome/components/template/binary_sensor/template_binary_sensor.cpp +1 -9
- esphome/components/text/__init__.py +5 -2
- esphome/components/text_sensor/__init__.py +5 -2
- esphome/components/thermostat/thermostat_climate.cpp +34 -31
- esphome/components/thermostat/thermostat_climate.h +43 -39
- esphome/components/time/__init__.py +16 -2
- esphome/components/time/real_time_clock.cpp +4 -0
- esphome/components/time/real_time_clock.h +5 -1
- esphome/components/tlc5971/tlc5971.cpp +4 -1
- esphome/components/tmp1075/tmp1075.h +0 -2
- esphome/components/tof10120/tof10120_sensor.h +0 -1
- esphome/components/tormatic/tormatic_cover.h +0 -1
- esphome/components/total_daily_energy/total_daily_energy.h +0 -1
- esphome/components/tsl2591/tsl2591.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.h +0 -1
- esphome/components/ttp229_lsf/ttp229_lsf.h +0 -1
- esphome/components/tx20/tx20.cpp +2 -2
- esphome/components/uart/__init__.py +18 -0
- esphome/components/uart/uart_component_esp_idf.cpp +0 -4
- esphome/components/update/__init__.py +5 -2
- esphome/components/update/update_entity.h +8 -0
- esphome/components/usb_host/__init__.py +5 -2
- esphome/components/valve/__init__.py +5 -2
- esphome/components/vbus/vbus.h +0 -1
- esphome/components/veml3235/veml3235.h +0 -1
- esphome/components/veml7700/veml7700.h +0 -1
- esphome/components/vl53l0x/vl53l0x_sensor.h +0 -1
- esphome/components/voice_assistant/voice_assistant.cpp +4 -4
- esphome/components/watchdog/watchdog.cpp +0 -4
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +6 -6
- esphome/components/web_server/__init__.py +34 -19
- esphome/components/web_server/ota/__init__.py +32 -0
- esphome/components/web_server/ota/ota_web_server.cpp +210 -0
- esphome/components/web_server/ota/ota_web_server.h +26 -0
- esphome/components/web_server/web_server.cpp +305 -427
- esphome/components/web_server/web_server.h +33 -23
- esphome/components/web_server/web_server_v1.cpp +4 -5
- esphome/components/web_server_base/__init__.py +5 -2
- esphome/components/web_server_base/web_server_base.cpp +2 -94
- esphome/components/web_server_base/web_server_base.h +5 -25
- esphome/components/web_server_idf/multipart.cpp +254 -0
- esphome/components/web_server_idf/multipart.h +86 -0
- esphome/components/web_server_idf/utils.cpp +32 -0
- esphome/components/web_server_idf/utils.h +10 -0
- esphome/components/web_server_idf/web_server_idf.cpp +162 -16
- esphome/components/web_server_idf/web_server_idf.h +11 -10
- esphome/components/wiegand/wiegand.cpp +2 -2
- esphome/components/wifi/__init__.py +18 -0
- esphome/components/wifi/wifi_component.cpp +17 -22
- esphome/components/wifi/wifi_component.h +27 -23
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +52 -59
- esphome/components/wifi/wifi_component_esp8266.cpp +46 -46
- esphome/components/wifi/wifi_component_esp_idf.cpp +35 -36
- esphome/components/wifi/wifi_component_libretiny.cpp +26 -27
- esphome/components/wifi/wifi_component_pico_w.cpp +3 -3
- esphome/components/wifi_info/wifi_info_text_sensor.cpp +6 -6
- esphome/components/wireguard/__init__.py +2 -11
- esphome/components/xiaomi_ble/xiaomi_ble.cpp +13 -1
- esphome/components/xiaomi_ble/xiaomi_ble.h +1 -0
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.h +0 -1
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h +0 -1
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.h +0 -1
- esphome/components/xiaomi_cgpr1/xiaomi_cgpr1.h +0 -1
- esphome/components/xiaomi_gcls002/xiaomi_gcls002.h +0 -1
- esphome/components/xiaomi_hhccjcy01/xiaomi_hhccjcy01.h +0 -1
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.h +0 -1
- esphome/components/xiaomi_hhccpot002/xiaomi_hhccpot002.h +0 -1
- esphome/components/xiaomi_jqjcy01ym/xiaomi_jqjcy01ym.h +0 -1
- esphome/components/xiaomi_lywsd02/xiaomi_lywsd02.h +0 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.h +0 -1
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.h +0 -1
- esphome/components/xiaomi_lywsdcgq/xiaomi_lywsdcgq.h +0 -1
- esphome/components/xiaomi_mhoc303/xiaomi_mhoc303.h +0 -1
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.h +0 -1
- esphome/components/xiaomi_miscale/xiaomi_miscale.h +0 -1
- esphome/components/xiaomi_mjyd02yla/xiaomi_mjyd02yla.h +0 -1
- esphome/components/xiaomi_mue4094rt/xiaomi_mue4094rt.h +0 -1
- esphome/components/xiaomi_rtcgq02lm/xiaomi_rtcgq02lm.h +0 -1
- esphome/components/xiaomi_wx08zm/xiaomi_wx08zm.h +0 -1
- esphome/components/xiaomi_xmwsdj04mmc/__init__.py +0 -0
- esphome/components/xiaomi_xmwsdj04mmc/sensor.py +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.cpp +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.h +36 -0
- esphome/components/zio_ultrasonic/zio_ultrasonic.h +0 -2
- esphome/components/zyaura/zyaura.h +0 -1
- esphome/config.py +88 -22
- esphome/config_helpers.py +74 -1
- esphome/config_validation.py +12 -1
- esphome/const.py +65 -10
- esphome/core/__init__.py +18 -2
- esphome/core/application.cpp +163 -10
- esphome/core/application.h +145 -165
- esphome/core/area.h +19 -0
- esphome/core/automation.h +58 -9
- esphome/core/color.cpp +3 -5
- esphome/core/color.h +16 -16
- esphome/core/component.cpp +151 -18
- esphome/core/component.h +98 -4
- esphome/core/component_iterator.cpp +7 -7
- esphome/core/component_iterator.h +9 -7
- esphome/core/config.py +155 -6
- esphome/core/controller.cpp +4 -2
- esphome/core/controller.h +1 -1
- esphome/core/datatypes.h +2 -2
- esphome/core/defines.h +17 -2
- esphome/core/device.h +20 -0
- esphome/core/entity_base.cpp +20 -15
- esphome/core/entity_base.h +76 -0
- esphome/core/entity_helpers.py +162 -1
- esphome/core/event_pool.h +81 -0
- esphome/core/helpers.cpp +75 -230
- esphome/core/helpers.h +164 -104
- esphome/core/lock_free_queue.h +151 -0
- esphome/core/log.cpp +2 -2
- esphome/core/log.h +2 -0
- esphome/core/optional.h +5 -0
- esphome/core/ring_buffer.cpp +2 -2
- esphome/core/scheduler.cpp +278 -103
- esphome/core/scheduler.h +157 -17
- esphome/core/time.cpp +5 -5
- esphome/core/time.h +5 -5
- esphome/cpp_generator.py +17 -0
- esphome/cpp_helpers.py +0 -22
- esphome/cpp_types.py +3 -1
- esphome/dashboard/entries.py +1 -1
- esphome/dashboard/util/text.py +5 -21
- esphome/dashboard/web_server.py +9 -1
- esphome/helpers.py +47 -0
- esphome/loader.py +15 -1
- esphome/pins.py +14 -8
- esphome/wizard.py +16 -3
- esphome/writer.py +21 -3
- esphome/yaml_util.py +0 -2
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b1.dist-info}/METADATA +10 -9
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b1.dist-info}/RECORD +591 -531
- esphome/components/esp32_ble/ble_event_pool.h +0 -72
- esphome/components/esp32_ble/queue.h +0 -85
- esphome/components/esp32_hall/esp32_hall.cpp +0 -25
- esphome/components/esp32_hall/esp32_hall.h +0 -23
- esphome/components/esp32_touch/esp32_touch.cpp +0 -355
- esphome/components/ld2410/button/reset_button.cpp +0 -9
- esphome/components/ld2450/button/reset_button.cpp +0 -9
- esphome/components/openthread/tlv.py +0 -65
- /esphome/{dashboard/enum.py → enum.py} +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b1.dist-info}/WHEEL +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b1.dist-info}/top_level.txt +0 -0
|
@@ -268,7 +268,19 @@ def validate_tz(value: str) -> str:
|
|
|
268
268
|
|
|
269
269
|
TIME_SCHEMA = cv.Schema(
|
|
270
270
|
{
|
|
271
|
-
cv.
|
|
271
|
+
cv.SplitDefault(
|
|
272
|
+
CONF_TIMEZONE,
|
|
273
|
+
esp8266=detect_tz,
|
|
274
|
+
esp32=detect_tz,
|
|
275
|
+
rp2040=detect_tz,
|
|
276
|
+
bk72xx=detect_tz,
|
|
277
|
+
rtl87xx=detect_tz,
|
|
278
|
+
ln882x=detect_tz,
|
|
279
|
+
host=detect_tz,
|
|
280
|
+
): cv.All(
|
|
281
|
+
cv.only_with_framework(["arduino", "esp-idf", "host"]),
|
|
282
|
+
validate_tz,
|
|
283
|
+
),
|
|
272
284
|
cv.Optional(CONF_ON_TIME): automation.validate_automation(
|
|
273
285
|
{
|
|
274
286
|
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(CronTrigger),
|
|
@@ -293,7 +305,9 @@ TIME_SCHEMA = cv.Schema(
|
|
|
293
305
|
|
|
294
306
|
|
|
295
307
|
async def setup_time_core_(time_var, config):
|
|
296
|
-
|
|
308
|
+
if timezone := config.get(CONF_TIMEZONE):
|
|
309
|
+
cg.add(time_var.set_timezone(timezone))
|
|
310
|
+
cg.add_define("USE_TIME_TIMEZONE")
|
|
297
311
|
|
|
298
312
|
for conf in config.get(CONF_ON_TIME, []):
|
|
299
313
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], time_var)
|
|
@@ -35,8 +35,10 @@ void RealTimeClock::synchronize_epoch_(uint32_t epoch) {
|
|
|
35
35
|
ret = settimeofday(&timev, nullptr);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
#ifdef USE_TIME_TIMEZONE
|
|
38
39
|
// Move timezone back to local timezone.
|
|
39
40
|
this->apply_timezone_();
|
|
41
|
+
#endif
|
|
40
42
|
|
|
41
43
|
if (ret != 0) {
|
|
42
44
|
ESP_LOGW(TAG, "setimeofday() failed with code %d", ret);
|
|
@@ -49,10 +51,12 @@ void RealTimeClock::synchronize_epoch_(uint32_t epoch) {
|
|
|
49
51
|
this->time_sync_callback_.call();
|
|
50
52
|
}
|
|
51
53
|
|
|
54
|
+
#ifdef USE_TIME_TIMEZONE
|
|
52
55
|
void RealTimeClock::apply_timezone_() {
|
|
53
56
|
setenv("TZ", this->timezone_.c_str(), 1);
|
|
54
57
|
tzset();
|
|
55
58
|
}
|
|
59
|
+
#endif
|
|
56
60
|
|
|
57
61
|
} // namespace time
|
|
58
62
|
} // namespace esphome
|
|
@@ -20,6 +20,7 @@ class RealTimeClock : public PollingComponent {
|
|
|
20
20
|
public:
|
|
21
21
|
explicit RealTimeClock();
|
|
22
22
|
|
|
23
|
+
#ifdef USE_TIME_TIMEZONE
|
|
23
24
|
/// Set the time zone.
|
|
24
25
|
void set_timezone(const std::string &tz) {
|
|
25
26
|
this->timezone_ = tz;
|
|
@@ -28,6 +29,7 @@ class RealTimeClock : public PollingComponent {
|
|
|
28
29
|
|
|
29
30
|
/// Get the time zone currently in use.
|
|
30
31
|
std::string get_timezone() { return this->timezone_; }
|
|
32
|
+
#endif
|
|
31
33
|
|
|
32
34
|
/// Get the time in the currently defined timezone.
|
|
33
35
|
ESPTime now() { return ESPTime::from_epoch_local(this->timestamp_now()); }
|
|
@@ -38,7 +40,7 @@ class RealTimeClock : public PollingComponent {
|
|
|
38
40
|
/// Get the current time as the UTC epoch since January 1st 1970.
|
|
39
41
|
time_t timestamp_now() { return ::time(nullptr); }
|
|
40
42
|
|
|
41
|
-
void add_on_time_sync_callback(std::function<void()> callback) {
|
|
43
|
+
void add_on_time_sync_callback(std::function<void()> &&callback) {
|
|
42
44
|
this->time_sync_callback_.add(std::move(callback));
|
|
43
45
|
};
|
|
44
46
|
|
|
@@ -46,8 +48,10 @@ class RealTimeClock : public PollingComponent {
|
|
|
46
48
|
/// Report a unix epoch as current time.
|
|
47
49
|
void synchronize_epoch_(uint32_t epoch);
|
|
48
50
|
|
|
51
|
+
#ifdef USE_TIME_TIMEZONE
|
|
49
52
|
std::string timezone_{};
|
|
50
53
|
void apply_timezone_();
|
|
54
|
+
#endif
|
|
51
55
|
|
|
52
56
|
CallbackManager<void()> time_sync_callback_;
|
|
53
57
|
};
|
|
@@ -24,8 +24,10 @@ void TLC5971::dump_config() {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
void TLC5971::loop() {
|
|
27
|
-
if (!this->update_)
|
|
27
|
+
if (!this->update_) {
|
|
28
|
+
this->disable_loop();
|
|
28
29
|
return;
|
|
30
|
+
}
|
|
29
31
|
|
|
30
32
|
uint32_t command;
|
|
31
33
|
|
|
@@ -93,6 +95,7 @@ void TLC5971::set_channel_value(uint16_t channel, uint16_t value) {
|
|
|
93
95
|
return;
|
|
94
96
|
if (this->pwm_amounts_[channel] != value) {
|
|
95
97
|
this->update_ = true;
|
|
98
|
+
this->enable_loop();
|
|
96
99
|
}
|
|
97
100
|
this->pwm_amounts_[channel] = value;
|
|
98
101
|
}
|
|
@@ -58,8 +58,6 @@ class TMP1075Sensor : public PollingComponent, public sensor::Sensor, public i2c
|
|
|
58
58
|
void setup() override;
|
|
59
59
|
void update() override;
|
|
60
60
|
|
|
61
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
62
|
-
|
|
63
61
|
void dump_config() override;
|
|
64
62
|
|
|
65
63
|
// Call write_config() after calling any of these to send the new config to
|
|
@@ -12,7 +12,6 @@ class TOF10120Sensor : public sensor::Sensor, public PollingComponent, public i2
|
|
|
12
12
|
void setup() override;
|
|
13
13
|
|
|
14
14
|
void dump_config() override;
|
|
15
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
16
15
|
void update() override;
|
|
17
16
|
};
|
|
18
17
|
} // namespace tof10120
|
|
@@ -16,7 +16,6 @@ class Tormatic : public cover::Cover, public uart::UARTDevice, public PollingCom
|
|
|
16
16
|
void loop() override;
|
|
17
17
|
void update() override;
|
|
18
18
|
void dump_config() override;
|
|
19
|
-
float get_setup_priority() const override { return setup_priority::DATA; };
|
|
20
19
|
|
|
21
20
|
void set_open_duration(uint32_t duration) { this->open_duration_ = duration; }
|
|
22
21
|
void set_close_duration(uint32_t duration) { this->close_duration_ = duration; }
|
|
@@ -23,7 +23,6 @@ class TotalDailyEnergy : public sensor::Sensor, public Component {
|
|
|
23
23
|
void set_method(TotalDailyEnergyMethod method) { method_ = method; }
|
|
24
24
|
void setup() override;
|
|
25
25
|
void dump_config() override;
|
|
26
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
27
26
|
void loop() override;
|
|
28
27
|
|
|
29
28
|
void publish_state_and_save(float state);
|
|
@@ -232,7 +232,7 @@ void TSL2591Component::set_integration_time_and_gain(TSL2591IntegrationTime inte
|
|
|
232
232
|
this->integration_time_ = integration_time;
|
|
233
233
|
this->gain_ = gain;
|
|
234
234
|
if (!this->write_byte(TSL2591_COMMAND_BIT | TSL2591_REGISTER_CONTROL,
|
|
235
|
-
this->integration_time_ | this->gain_)) {
|
|
235
|
+
static_cast<uint8_t>(this->integration_time_) | static_cast<uint8_t>(this->gain_))) {
|
|
236
236
|
ESP_LOGE(TAG, "I2C write failed");
|
|
237
237
|
}
|
|
238
238
|
// The ADC values can be confused if gain or integration time are changed in the middle of a cycle.
|
|
@@ -25,7 +25,6 @@ class TTP229BSFComponent : public Component {
|
|
|
25
25
|
void register_channel(TTP229BSFChannel *channel) { this->channels_.push_back(channel); }
|
|
26
26
|
void setup() override;
|
|
27
27
|
void dump_config() override;
|
|
28
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
29
28
|
void loop() override {
|
|
30
29
|
// check datavalid if sdo is high
|
|
31
30
|
if (!this->sdo_pin_->digital_read()) {
|
|
@@ -23,7 +23,6 @@ class TTP229LSFComponent : public Component, public i2c::I2CDevice {
|
|
|
23
23
|
void register_channel(TTP229Channel *channel) { this->channels_.push_back(channel); }
|
|
24
24
|
void setup() override;
|
|
25
25
|
void dump_config() override;
|
|
26
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
27
26
|
void loop() override;
|
|
28
27
|
|
|
29
28
|
protected:
|
esphome/components/tx20/tx20.cpp
CHANGED
|
@@ -152,7 +152,7 @@ void IRAM_ATTR Tx20ComponentStore::gpio_intr(Tx20ComponentStore *arg) {
|
|
|
152
152
|
}
|
|
153
153
|
arg->buffer[arg->buffer_index] = 1;
|
|
154
154
|
arg->start_time = now;
|
|
155
|
-
arg->buffer_index++;
|
|
155
|
+
arg->buffer_index++; // NOLINT(clang-diagnostic-deprecated-volatile)
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
158
|
const uint32_t delay = now - arg->start_time;
|
|
@@ -183,7 +183,7 @@ void IRAM_ATTR Tx20ComponentStore::gpio_intr(Tx20ComponentStore *arg) {
|
|
|
183
183
|
}
|
|
184
184
|
arg->spent_time += delay;
|
|
185
185
|
arg->start_time = now;
|
|
186
|
-
arg->buffer_index++;
|
|
186
|
+
arg->buffer_index++; // NOLINT(clang-diagnostic-deprecated-volatile)
|
|
187
187
|
}
|
|
188
188
|
void IRAM_ATTR Tx20ComponentStore::reset() {
|
|
189
189
|
tx20_available = false;
|
|
@@ -2,6 +2,7 @@ import re
|
|
|
2
2
|
|
|
3
3
|
from esphome import automation, pins
|
|
4
4
|
import esphome.codegen as cg
|
|
5
|
+
from esphome.config_helpers import filter_source_files_from_platform
|
|
5
6
|
import esphome.config_validation as cv
|
|
6
7
|
from esphome.const import (
|
|
7
8
|
CONF_AFTER,
|
|
@@ -27,6 +28,7 @@ from esphome.const import (
|
|
|
27
28
|
CONF_TX_PIN,
|
|
28
29
|
CONF_UART_ID,
|
|
29
30
|
PLATFORM_HOST,
|
|
31
|
+
PlatformFramework,
|
|
30
32
|
)
|
|
31
33
|
from esphome.core import CORE
|
|
32
34
|
import esphome.final_validate as fv
|
|
@@ -438,3 +440,19 @@ async def uart_write_to_code(config, action_id, template_arg, args):
|
|
|
438
440
|
else:
|
|
439
441
|
cg.add(var.set_data_static(data))
|
|
440
442
|
return var
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
FILTER_SOURCE_FILES = filter_source_files_from_platform(
|
|
446
|
+
{
|
|
447
|
+
"uart_component_esp32_arduino.cpp": {PlatformFramework.ESP32_ARDUINO},
|
|
448
|
+
"uart_component_esp_idf.cpp": {PlatformFramework.ESP32_IDF},
|
|
449
|
+
"uart_component_esp8266.cpp": {PlatformFramework.ESP8266_ARDUINO},
|
|
450
|
+
"uart_component_host.cpp": {PlatformFramework.HOST_NATIVE},
|
|
451
|
+
"uart_component_rp2040.cpp": {PlatformFramework.RP2040_ARDUINO},
|
|
452
|
+
"uart_component_libretiny.cpp": {
|
|
453
|
+
PlatformFramework.BK72XX_ARDUINO,
|
|
454
|
+
PlatformFramework.RTL87XX_ARDUINO,
|
|
455
|
+
PlatformFramework.LN882X_ARDUINO,
|
|
456
|
+
},
|
|
457
|
+
}
|
|
458
|
+
)
|
|
@@ -48,11 +48,7 @@ uart_config_t IDFUARTComponent::get_config_() {
|
|
|
48
48
|
uart_config.parity = parity;
|
|
49
49
|
uart_config.stop_bits = this->stop_bits_ == 1 ? UART_STOP_BITS_1 : UART_STOP_BITS_2;
|
|
50
50
|
uart_config.flow_ctrl = UART_HW_FLOWCTRL_DISABLE;
|
|
51
|
-
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
|
52
51
|
uart_config.source_clk = UART_SCLK_DEFAULT;
|
|
53
|
-
#else
|
|
54
|
-
uart_config.source_clk = UART_SCLK_APB;
|
|
55
|
-
#endif
|
|
56
52
|
uart_config.rx_flow_ctrl_thresh = 122;
|
|
57
53
|
|
|
58
54
|
return uart_config;
|
|
@@ -15,8 +15,8 @@ from esphome.const import (
|
|
|
15
15
|
ENTITY_CATEGORY_CONFIG,
|
|
16
16
|
)
|
|
17
17
|
from esphome.core import CORE, coroutine_with_priority
|
|
18
|
+
from esphome.core.entity_helpers import entity_duplicate_validator, setup_entity
|
|
18
19
|
from esphome.cpp_generator import MockObjClass
|
|
19
|
-
from esphome.cpp_helpers import setup_entity
|
|
20
20
|
|
|
21
21
|
CODEOWNERS = ["@jesserockz"]
|
|
22
22
|
IS_PLATFORM_COMPONENT = True
|
|
@@ -58,6 +58,9 @@ _UPDATE_SCHEMA = (
|
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
_UPDATE_SCHEMA.add_extra(entity_duplicate_validator("update"))
|
|
62
|
+
|
|
63
|
+
|
|
61
64
|
def update_schema(
|
|
62
65
|
class_: MockObjClass = cv.UNDEFINED,
|
|
63
66
|
*,
|
|
@@ -87,7 +90,7 @@ UPDATE_SCHEMA.add_extra(cv.deprecated_schema_constant("update"))
|
|
|
87
90
|
|
|
88
91
|
|
|
89
92
|
async def setup_update_core_(var, config):
|
|
90
|
-
await setup_entity(var, config)
|
|
93
|
+
await setup_entity(var, config, "update")
|
|
91
94
|
|
|
92
95
|
if device_class_config := config.get(CONF_DEVICE_CLASS):
|
|
93
96
|
cg.add(var.set_device_class(device_class_config))
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
+
#include <memory>
|
|
3
4
|
#include "esphome/core/automation.h"
|
|
4
5
|
#include "esphome/core/component.h"
|
|
5
6
|
#include "esphome/core/entity_base.h"
|
|
@@ -38,12 +39,19 @@ class UpdateEntity : public EntityBase, public EntityBase_DeviceClass {
|
|
|
38
39
|
const UpdateState &state = state_;
|
|
39
40
|
|
|
40
41
|
void add_on_state_callback(std::function<void()> &&callback) { this->state_callback_.add(std::move(callback)); }
|
|
42
|
+
Trigger<const UpdateInfo &> *get_update_available_trigger() {
|
|
43
|
+
if (!update_available_trigger_) {
|
|
44
|
+
update_available_trigger_ = std::make_unique<Trigger<const UpdateInfo &>>();
|
|
45
|
+
}
|
|
46
|
+
return update_available_trigger_.get();
|
|
47
|
+
}
|
|
41
48
|
|
|
42
49
|
protected:
|
|
43
50
|
UpdateState state_{UPDATE_STATE_UNKNOWN};
|
|
44
51
|
UpdateInfo update_info_;
|
|
45
52
|
|
|
46
53
|
CallbackManager<void()> state_callback_{};
|
|
54
|
+
std::unique_ptr<Trigger<const UpdateInfo &>> update_available_trigger_{nullptr};
|
|
47
55
|
};
|
|
48
56
|
|
|
49
57
|
} // namespace update
|
|
@@ -6,7 +6,7 @@ from esphome.components.esp32 import (
|
|
|
6
6
|
only_on_variant,
|
|
7
7
|
)
|
|
8
8
|
import esphome.config_validation as cv
|
|
9
|
-
from esphome.const import CONF_ID
|
|
9
|
+
from esphome.const import CONF_DEVICES, CONF_ID
|
|
10
10
|
from esphome.cpp_types import Component
|
|
11
11
|
|
|
12
12
|
AUTO_LOAD = ["bytebuffer"]
|
|
@@ -16,9 +16,9 @@ usb_host_ns = cg.esphome_ns.namespace("usb_host")
|
|
|
16
16
|
USBHost = usb_host_ns.class_("USBHost", Component)
|
|
17
17
|
USBClient = usb_host_ns.class_("USBClient", Component)
|
|
18
18
|
|
|
19
|
-
CONF_DEVICES = "devices"
|
|
20
19
|
CONF_VID = "vid"
|
|
21
20
|
CONF_PID = "pid"
|
|
21
|
+
CONF_ENABLE_HUBS = "enable_hubs"
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
def usb_device_schema(cls=USBClient, vid: int = None, pid: [int] = None) -> cv.Schema:
|
|
@@ -42,6 +42,7 @@ CONFIG_SCHEMA = cv.All(
|
|
|
42
42
|
cv.COMPONENT_SCHEMA.extend(
|
|
43
43
|
{
|
|
44
44
|
cv.GenerateID(): cv.declare_id(USBHost),
|
|
45
|
+
cv.Optional(CONF_ENABLE_HUBS, default=False): cv.boolean,
|
|
45
46
|
cv.Optional(CONF_DEVICES): cv.ensure_list(usb_device_schema()),
|
|
46
47
|
}
|
|
47
48
|
),
|
|
@@ -58,6 +59,8 @@ async def register_usb_client(config):
|
|
|
58
59
|
|
|
59
60
|
async def to_code(config):
|
|
60
61
|
add_idf_sdkconfig_option("CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE", 1024)
|
|
62
|
+
if config.get(CONF_ENABLE_HUBS):
|
|
63
|
+
add_idf_sdkconfig_option("CONFIG_USB_HOST_HUBS_SUPPORTED", True)
|
|
61
64
|
var = cg.new_Pvariable(config[CONF_ID])
|
|
62
65
|
await cg.register_component(var, config)
|
|
63
66
|
for device in config.get(CONF_DEVICES) or ():
|
|
@@ -22,8 +22,8 @@ from esphome.const import (
|
|
|
22
22
|
DEVICE_CLASS_WATER,
|
|
23
23
|
)
|
|
24
24
|
from esphome.core import CORE, coroutine_with_priority
|
|
25
|
+
from esphome.core.entity_helpers import entity_duplicate_validator, setup_entity
|
|
25
26
|
from esphome.cpp_generator import MockObjClass
|
|
26
|
-
from esphome.cpp_helpers import setup_entity
|
|
27
27
|
|
|
28
28
|
IS_PLATFORM_COMPONENT = True
|
|
29
29
|
|
|
@@ -103,6 +103,9 @@ _VALVE_SCHEMA = (
|
|
|
103
103
|
)
|
|
104
104
|
|
|
105
105
|
|
|
106
|
+
_VALVE_SCHEMA.add_extra(entity_duplicate_validator("valve"))
|
|
107
|
+
|
|
108
|
+
|
|
106
109
|
def valve_schema(
|
|
107
110
|
class_: MockObjClass = cv.UNDEFINED,
|
|
108
111
|
*,
|
|
@@ -132,7 +135,7 @@ VALVE_SCHEMA.add_extra(cv.deprecated_schema_constant("valve"))
|
|
|
132
135
|
|
|
133
136
|
|
|
134
137
|
async def _setup_valve_core(var, config):
|
|
135
|
-
await setup_entity(var, config)
|
|
138
|
+
await setup_entity(var, config, "valve")
|
|
136
139
|
|
|
137
140
|
if device_class_config := config.get(CONF_DEVICE_CLASS):
|
|
138
141
|
cg.add(var.set_device_class(device_class_config))
|
esphome/components/vbus/vbus.h
CHANGED
|
@@ -30,7 +30,6 @@ class VBus : public uart::UARTDevice, public Component {
|
|
|
30
30
|
public:
|
|
31
31
|
void dump_config() override;
|
|
32
32
|
void loop() override;
|
|
33
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
34
33
|
|
|
35
34
|
void register_listener(VBusListener *listener) { this->listeners_.push_back(listener); }
|
|
36
35
|
|
|
@@ -65,7 +65,6 @@ class VEML3235Sensor : public sensor::Sensor, public PollingComponent, public i2
|
|
|
65
65
|
void setup() override;
|
|
66
66
|
void dump_config() override;
|
|
67
67
|
void update() override { this->publish_state(this->read_lx_()); }
|
|
68
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
69
68
|
|
|
70
69
|
// Used by ESPHome framework. Does NOT actually set the value on the device.
|
|
71
70
|
void set_auto_gain(bool auto_gain) { this->auto_gain_ = auto_gain; }
|
|
@@ -102,7 +102,6 @@ class VEML7700Component : public PollingComponent, public i2c::I2CDevice {
|
|
|
102
102
|
//
|
|
103
103
|
// EspHome framework functions
|
|
104
104
|
//
|
|
105
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
106
105
|
void setup() override;
|
|
107
106
|
void dump_config() override;
|
|
108
107
|
void update() override;
|
|
@@ -30,7 +30,6 @@ class VL53L0XSensor : public sensor::Sensor, public PollingComponent, public i2c
|
|
|
30
30
|
void setup() override;
|
|
31
31
|
|
|
32
32
|
void dump_config() override;
|
|
33
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
34
33
|
void update() override;
|
|
35
34
|
|
|
36
35
|
void loop() override;
|
|
@@ -85,7 +85,7 @@ bool VoiceAssistant::start_udp_socket_() {
|
|
|
85
85
|
bool VoiceAssistant::allocate_buffers_() {
|
|
86
86
|
#ifdef USE_SPEAKER
|
|
87
87
|
if ((this->speaker_ != nullptr) && (this->speaker_buffer_ == nullptr)) {
|
|
88
|
-
|
|
88
|
+
RAMAllocator<uint8_t> speaker_allocator;
|
|
89
89
|
this->speaker_buffer_ = speaker_allocator.allocate(SPEAKER_BUFFER_SIZE);
|
|
90
90
|
if (this->speaker_buffer_ == nullptr) {
|
|
91
91
|
ESP_LOGW(TAG, "Could not allocate speaker buffer");
|
|
@@ -103,7 +103,7 @@ bool VoiceAssistant::allocate_buffers_() {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
if (this->send_buffer_ == nullptr) {
|
|
106
|
-
|
|
106
|
+
RAMAllocator<uint8_t> send_allocator;
|
|
107
107
|
this->send_buffer_ = send_allocator.allocate(SEND_BUFFER_SIZE);
|
|
108
108
|
if (send_buffer_ == nullptr) {
|
|
109
109
|
ESP_LOGW(TAG, "Could not allocate send buffer");
|
|
@@ -136,7 +136,7 @@ void VoiceAssistant::clear_buffers_() {
|
|
|
136
136
|
|
|
137
137
|
void VoiceAssistant::deallocate_buffers_() {
|
|
138
138
|
if (this->send_buffer_ != nullptr) {
|
|
139
|
-
|
|
139
|
+
RAMAllocator<uint8_t> send_deallocator;
|
|
140
140
|
send_deallocator.deallocate(this->send_buffer_, SEND_BUFFER_SIZE);
|
|
141
141
|
this->send_buffer_ = nullptr;
|
|
142
142
|
}
|
|
@@ -147,7 +147,7 @@ void VoiceAssistant::deallocate_buffers_() {
|
|
|
147
147
|
|
|
148
148
|
#ifdef USE_SPEAKER
|
|
149
149
|
if ((this->speaker_ != nullptr) && (this->speaker_buffer_ != nullptr)) {
|
|
150
|
-
|
|
150
|
+
RAMAllocator<uint8_t> speaker_deallocator;
|
|
151
151
|
speaker_deallocator.deallocate(this->speaker_buffer_, SPEAKER_BUFFER_SIZE);
|
|
152
152
|
this->speaker_buffer_ = nullptr;
|
|
153
153
|
}
|
|
@@ -38,16 +38,12 @@ WatchdogManager::~WatchdogManager() {
|
|
|
38
38
|
void WatchdogManager::set_timeout_(uint32_t timeout_ms) {
|
|
39
39
|
ESP_LOGV(TAG, "Adjusting WDT to %" PRIu32 "ms", timeout_ms);
|
|
40
40
|
#ifdef USE_ESP32
|
|
41
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
42
41
|
esp_task_wdt_config_t wdt_config = {
|
|
43
42
|
.timeout_ms = timeout_ms,
|
|
44
43
|
.idle_core_mask = (1 << SOC_CPU_CORES_NUM) - 1,
|
|
45
44
|
.trigger_panic = true,
|
|
46
45
|
};
|
|
47
46
|
esp_task_wdt_reconfigure(&wdt_config);
|
|
48
|
-
#else
|
|
49
|
-
esp_task_wdt_init(timeout_ms / 1000, true);
|
|
50
|
-
#endif // ESP_IDF_VERSION_MAJOR
|
|
51
47
|
#endif // USE_ESP32
|
|
52
48
|
|
|
53
49
|
#ifdef USE_RP2040
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#include "waveshare_epaper.h"
|
|
2
|
+
#include <bitset>
|
|
3
|
+
#include <cinttypes>
|
|
2
4
|
#include "esphome/core/application.h"
|
|
3
5
|
#include "esphome/core/helpers.h"
|
|
4
6
|
#include "esphome/core/log.h"
|
|
5
|
-
#include <cinttypes>
|
|
6
|
-
#include <bitset>
|
|
7
7
|
|
|
8
8
|
namespace esphome {
|
|
9
9
|
namespace waveshare_epaper {
|
|
@@ -185,7 +185,7 @@ void WaveshareEPaper7C::setup() {
|
|
|
185
185
|
this->initialize();
|
|
186
186
|
}
|
|
187
187
|
void WaveshareEPaper7C::init_internal_7c_(uint32_t buffer_length) {
|
|
188
|
-
|
|
188
|
+
RAMAllocator<uint8_t> allocator;
|
|
189
189
|
uint32_t small_buffer_length = buffer_length / NUM_BUFFERS;
|
|
190
190
|
|
|
191
191
|
for (int i = 0; i < NUM_BUFFERS; i++) {
|
|
@@ -2054,7 +2054,7 @@ void GDEW029T5::initialize() {
|
|
|
2054
2054
|
this->deep_sleep_between_updates_ = true;
|
|
2055
2055
|
|
|
2056
2056
|
// old buffer for partial update
|
|
2057
|
-
|
|
2057
|
+
RAMAllocator<uint8_t> allocator;
|
|
2058
2058
|
this->old_buffer_ = allocator.allocate(this->get_buffer_length_());
|
|
2059
2059
|
if (this->old_buffer_ == nullptr) {
|
|
2060
2060
|
ESP_LOGE(TAG, "Could not allocate old buffer for display!");
|
|
@@ -2199,7 +2199,7 @@ void GDEW029T5::dump_config() {
|
|
|
2199
2199
|
|
|
2200
2200
|
void GDEW0154M09::initialize() {
|
|
2201
2201
|
this->init_internal_();
|
|
2202
|
-
|
|
2202
|
+
RAMAllocator<uint8_t> allocator;
|
|
2203
2203
|
this->lastbuff_ = allocator.allocate(this->get_buffer_length_());
|
|
2204
2204
|
if (this->lastbuff_ != nullptr) {
|
|
2205
2205
|
memset(this->lastbuff_, 0xff, sizeof(uint8_t) * this->get_buffer_length_());
|
|
@@ -3132,7 +3132,7 @@ void HOT GDEY0583T81::display() {
|
|
|
3132
3132
|
} else {
|
|
3133
3133
|
// Partial out (PTOUT), makes the display exit partial mode
|
|
3134
3134
|
this->command(0x92);
|
|
3135
|
-
ESP_LOGD(TAG, "Partial update done, next full update after %
|
|
3135
|
+
ESP_LOGD(TAG, "Partial update done, next full update after %" PRIu32 " cycles",
|
|
3136
3136
|
this->full_update_every_ - this->at_update_ - 1);
|
|
3137
3137
|
}
|
|
3138
3138
|
|
|
@@ -28,10 +28,12 @@ from esphome.const import (
|
|
|
28
28
|
PLATFORM_BK72XX,
|
|
29
29
|
PLATFORM_ESP32,
|
|
30
30
|
PLATFORM_ESP8266,
|
|
31
|
+
PLATFORM_LN882X,
|
|
31
32
|
PLATFORM_RTL87XX,
|
|
32
33
|
)
|
|
33
34
|
from esphome.core import CORE, coroutine_with_priority
|
|
34
35
|
import esphome.final_validate as fv
|
|
36
|
+
from esphome.types import ConfigType
|
|
35
37
|
|
|
36
38
|
AUTO_LOAD = ["json", "web_server_base"]
|
|
37
39
|
|
|
@@ -39,13 +41,14 @@ CONF_SORTING_GROUP_ID = "sorting_group_id"
|
|
|
39
41
|
CONF_SORTING_GROUPS = "sorting_groups"
|
|
40
42
|
CONF_SORTING_WEIGHT = "sorting_weight"
|
|
41
43
|
|
|
44
|
+
|
|
42
45
|
web_server_ns = cg.esphome_ns.namespace("web_server")
|
|
43
46
|
WebServer = web_server_ns.class_("WebServer", cg.Component, cg.Controller)
|
|
44
47
|
|
|
45
48
|
sorting_groups = {}
|
|
46
49
|
|
|
47
50
|
|
|
48
|
-
def default_url(config):
|
|
51
|
+
def default_url(config: ConfigType) -> ConfigType:
|
|
49
52
|
config = config.copy()
|
|
50
53
|
if config[CONF_VERSION] == 1:
|
|
51
54
|
if CONF_CSS_URL not in config:
|
|
@@ -65,19 +68,27 @@ def default_url(config):
|
|
|
65
68
|
return config
|
|
66
69
|
|
|
67
70
|
|
|
68
|
-
def validate_local(config):
|
|
71
|
+
def validate_local(config: ConfigType) -> ConfigType:
|
|
69
72
|
if CONF_LOCAL in config and config[CONF_VERSION] == 1:
|
|
70
73
|
raise cv.Invalid("'local' is not supported in version 1")
|
|
71
74
|
return config
|
|
72
75
|
|
|
73
76
|
|
|
74
|
-
def
|
|
75
|
-
if
|
|
76
|
-
|
|
77
|
+
def validate_ota_removed(config: ConfigType) -> ConfigType:
|
|
78
|
+
# Only raise error if OTA is explicitly enabled (True)
|
|
79
|
+
# If it's False or not specified, we can safely ignore it
|
|
80
|
+
if config.get(CONF_OTA):
|
|
81
|
+
raise cv.Invalid(
|
|
82
|
+
f"The '{CONF_OTA}' option has been removed from 'web_server'. "
|
|
83
|
+
f"Please use the new OTA platform structure instead:\n\n"
|
|
84
|
+
f"ota:\n"
|
|
85
|
+
f" - platform: web_server\n\n"
|
|
86
|
+
f"See https://esphome.io/components/ota for more information."
|
|
87
|
+
)
|
|
77
88
|
return config
|
|
78
89
|
|
|
79
90
|
|
|
80
|
-
def validate_sorting_groups(config):
|
|
91
|
+
def validate_sorting_groups(config: ConfigType) -> ConfigType:
|
|
81
92
|
if CONF_SORTING_GROUPS in config and config[CONF_VERSION] != 3:
|
|
82
93
|
raise cv.Invalid(
|
|
83
94
|
f"'{CONF_SORTING_GROUPS}' is only supported in 'web_server' version 3"
|
|
@@ -88,7 +99,7 @@ def validate_sorting_groups(config):
|
|
|
88
99
|
def _validate_no_sorting_component(
|
|
89
100
|
sorting_component: str,
|
|
90
101
|
webserver_version: int,
|
|
91
|
-
config:
|
|
102
|
+
config: ConfigType,
|
|
92
103
|
path: list[str] | None = None,
|
|
93
104
|
) -> None:
|
|
94
105
|
if path is None:
|
|
@@ -111,7 +122,7 @@ def _validate_no_sorting_component(
|
|
|
111
122
|
)
|
|
112
123
|
|
|
113
124
|
|
|
114
|
-
def _final_validate_sorting(config):
|
|
125
|
+
def _final_validate_sorting(config: ConfigType) -> ConfigType:
|
|
115
126
|
if (webserver_version := config.get(CONF_VERSION)) != 3:
|
|
116
127
|
_validate_no_sorting_component(
|
|
117
128
|
CONF_SORTING_WEIGHT, webserver_version, fv.full_config.get()
|
|
@@ -174,24 +185,25 @@ CONFIG_SCHEMA = cv.All(
|
|
|
174
185
|
web_server_base.WebServerBase
|
|
175
186
|
),
|
|
176
187
|
cv.Optional(CONF_INCLUDE_INTERNAL, default=False): cv.boolean,
|
|
177
|
-
cv.
|
|
178
|
-
CONF_OTA,
|
|
179
|
-
esp8266=True,
|
|
180
|
-
esp32_arduino=True,
|
|
181
|
-
esp32_idf=False,
|
|
182
|
-
bk72xx=True,
|
|
183
|
-
rtl87xx=True,
|
|
184
|
-
): cv.boolean,
|
|
188
|
+
cv.Optional(CONF_OTA, default=False): cv.boolean,
|
|
185
189
|
cv.Optional(CONF_LOG, default=True): cv.boolean,
|
|
186
190
|
cv.Optional(CONF_LOCAL): cv.boolean,
|
|
187
191
|
cv.Optional(CONF_SORTING_GROUPS): cv.ensure_list(sorting_group),
|
|
188
192
|
}
|
|
189
193
|
).extend(cv.COMPONENT_SCHEMA),
|
|
190
|
-
cv.only_on(
|
|
194
|
+
cv.only_on(
|
|
195
|
+
[
|
|
196
|
+
PLATFORM_ESP32,
|
|
197
|
+
PLATFORM_ESP8266,
|
|
198
|
+
PLATFORM_BK72XX,
|
|
199
|
+
PLATFORM_LN882X,
|
|
200
|
+
PLATFORM_RTL87XX,
|
|
201
|
+
]
|
|
202
|
+
),
|
|
191
203
|
default_url,
|
|
192
204
|
validate_local,
|
|
193
|
-
validate_ota,
|
|
194
205
|
validate_sorting_groups,
|
|
206
|
+
validate_ota_removed,
|
|
195
207
|
)
|
|
196
208
|
|
|
197
209
|
|
|
@@ -211,6 +223,7 @@ async def add_entity_config(entity, config):
|
|
|
211
223
|
sorting_weight = config.get(CONF_SORTING_WEIGHT, 50)
|
|
212
224
|
sorting_group_hash = hash(config.get(CONF_SORTING_GROUP_ID))
|
|
213
225
|
|
|
226
|
+
cg.add_define("USE_WEBSERVER_SORTING")
|
|
214
227
|
cg.add(
|
|
215
228
|
web_server.add_entity_config(
|
|
216
229
|
entity,
|
|
@@ -274,7 +287,8 @@ async def to_code(config):
|
|
|
274
287
|
else:
|
|
275
288
|
cg.add(var.set_css_url(config[CONF_CSS_URL]))
|
|
276
289
|
cg.add(var.set_js_url(config[CONF_JS_URL]))
|
|
277
|
-
|
|
290
|
+
# OTA is now handled by the web_server OTA platform
|
|
291
|
+
# The CONF_OTA option is kept only for backwards compatibility validation
|
|
278
292
|
cg.add(var.set_expose_log(config[CONF_LOG]))
|
|
279
293
|
if config[CONF_ENABLE_PRIVATE_NETWORK_ACCESS]:
|
|
280
294
|
cg.add_define("USE_WEBSERVER_PRIVATE_NETWORK_ACCESS")
|
|
@@ -296,4 +310,5 @@ async def to_code(config):
|
|
|
296
310
|
cg.add_define("USE_WEBSERVER_LOCAL")
|
|
297
311
|
|
|
298
312
|
if (sorting_group_config := config.get(CONF_SORTING_GROUPS)) is not None:
|
|
313
|
+
cg.add_define("USE_WEBSERVER_SORTING")
|
|
299
314
|
add_sorting_groups(var, sorting_group_config)
|