esphome 2025.6.2__py3-none-any.whl → 2025.7.0__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 +57 -21
- esphome/components/api/api_connection.cpp +344 -539
- esphome/components/api/api_connection.h +224 -141
- esphome/components/api/api_frame_helper.cpp +91 -127
- esphome/components/api/api_frame_helper.h +64 -54
- esphome/components/api/api_pb2.cpp +1837 -9044
- esphome/components/api/api_pb2.h +532 -685
- esphome/components/api/api_pb2_dump.cpp +4432 -0
- esphome/components/api/api_pb2_service.cpp +184 -425
- esphome/components/api/api_pb2_service.h +13 -6
- esphome/components/api/api_server.cpp +131 -167
- esphome/components/api/api_server.h +38 -10
- esphome/components/api/client.py +10 -4
- esphome/components/api/custom_api_device.h +8 -0
- esphome/components/api/list_entities.cpp +37 -104
- esphome/components/api/list_entities.h +33 -23
- esphome/components/api/proto.h +532 -26
- esphome/components/api/subscribe_state.cpp +23 -29
- esphome/components/api/subscribe_state.h +26 -19
- esphome/components/api/user_services.h +2 -0
- esphome/components/as3935_spi/as3935_spi.h +0 -2
- 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/debug/debug_esp32.cpp +2 -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 +103 -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 +112 -98
- 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 +240 -0
- esphome/components/esp32_touch/esp32_touch_v2.cpp +397 -0
- esphome/components/esp8266/__init__.py +2 -0
- esphome/components/esp8266/gpio.cpp +10 -10
- esphome/components/esp8266/helpers.cpp +31 -0
- esphome/components/esp_ldo/__init__.py +10 -8
- esphome/components/esp_ldo/esp_ldo.h +3 -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/fan/fan.cpp +4 -0
- 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 +39 -1
- 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 +3 -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.cpp +0 -1
- esphome/components/http_request/http_request_arduino.h +1 -0
- esphome/components/http_request/http_request_idf.cpp +0 -1
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/http_request/update/http_request_update.cpp +35 -16
- 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/__init__.py +1 -1
- 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/json/__init__.py +1 -1
- esphome/components/json/json_util.cpp +56 -63
- 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 +421 -268
- 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/binary_sensor/ld2420_binary_sensor.cpp +2 -2
- esphome/components/ld2420/button/reconfig_buttons.cpp +1 -1
- esphome/components/ld2420/ld2420.cpp +252 -147
- esphome/components/ld2420/ld2420.h +52 -126
- esphome/components/ld2420/number/__init__.py +2 -2
- esphome/components/ld2420/number/gate_config_number.cpp +1 -1
- esphome/components/ld2420/select/operating_mode_select.cpp +1 -1
- esphome/components/ld2420/sensor/__init__.py +6 -2
- esphome/components/ld2420/sensor/ld2420_sensor.cpp +2 -2
- esphome/components/ld2420/sensor/ld2420_sensor.h +1 -1
- esphome/components/ld2420/text_sensor/text_sensor.cpp +2 -2
- 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 +5 -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_json_schema.cpp +17 -16
- 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/lvgl/widgets/meter.py +20 -13
- 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_alarm_control_panel.cpp +2 -1
- esphome/components/mqtt/mqtt_backend.h +2 -1
- esphome/components/mqtt/mqtt_backend_esp32.cpp +132 -47
- esphome/components/mqtt/mqtt_backend_esp32.h +106 -4
- esphome/components/mqtt/mqtt_binary_sensor.cpp +1 -0
- esphome/components/mqtt/mqtt_button.cpp +4 -1
- esphome/components/mqtt/mqtt_client.cpp +17 -9
- esphome/components/mqtt/mqtt_client.h +8 -3
- esphome/components/mqtt/mqtt_climate.cpp +6 -4
- esphome/components/mqtt/mqtt_component.cpp +3 -1
- esphome/components/mqtt/mqtt_cover.cpp +1 -0
- esphome/components/mqtt/mqtt_date.cpp +4 -3
- esphome/components/mqtt/mqtt_datetime.cpp +7 -6
- esphome/components/mqtt/mqtt_event.cpp +6 -3
- esphome/components/mqtt/mqtt_fan.cpp +1 -0
- esphome/components/mqtt/mqtt_light.cpp +8 -4
- esphome/components/mqtt/mqtt_lock.cpp +3 -1
- esphome/components/mqtt/mqtt_number.cpp +1 -0
- esphome/components/mqtt/mqtt_select.cpp +2 -1
- esphome/components/mqtt/mqtt_sensor.cpp +3 -1
- esphome/components/mqtt/mqtt_switch.cpp +3 -1
- esphome/components/mqtt/mqtt_text.cpp +1 -0
- esphome/components/mqtt/mqtt_text_sensor.cpp +3 -1
- esphome/components/mqtt/mqtt_time.cpp +4 -3
- esphome/components/mqtt/mqtt_update.cpp +1 -0
- esphome/components/mqtt/mqtt_valve.cpp +3 -1
- esphome/components/ms8607/ms8607.cpp +1 -1
- 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 +9 -1
- esphome/components/online_image/online_image.cpp +17 -7
- esphome/components/online_image/online_image.h +10 -2
- esphome/components/opentherm/opentherm.cpp +7 -12
- esphome/components/opentherm/output/output.cpp +1 -1
- 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 +34 -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 +2 -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.cpp +2 -2
- 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 +81 -21
- 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 +1 -5
- 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/usb_host/usb_host_client.cpp +10 -10
- esphome/components/usb_uart/cp210x.cpp +1 -1
- esphome/components/usb_uart/usb_uart.cpp +41 -44
- esphome/components/usb_uart/usb_uart.h +4 -3
- 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 +324 -439
- 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 +164 -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 +169 -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 +156 -22
- esphome/core/component.h +98 -4
- esphome/core/component_iterator.cpp +11 -9
- esphome/core/component_iterator.h +12 -10
- 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 +168 -1
- esphome/core/event_pool.h +81 -0
- esphome/core/helpers.cpp +75 -230
- esphome/core/helpers.h +165 -105
- 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 +275 -103
- esphome/core/scheduler.h +154 -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/platformio_api.py +2 -0
- esphome/wizard.py +17 -4
- esphome/writer.py +44 -3
- esphome/yaml_util.py +0 -2
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/METADATA +10 -9
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/RECORD +639 -580
- esphome/components/api/api_pb2_size.h +0 -361
- 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.2.dist-info → esphome-2025.7.0.dist-info}/WHEEL +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/top_level.txt +0 -0
esphome/__main__.py
CHANGED
|
@@ -34,11 +34,9 @@ from esphome.const import (
|
|
|
34
34
|
CONF_PORT,
|
|
35
35
|
CONF_SUBSTITUTIONS,
|
|
36
36
|
CONF_TOPIC,
|
|
37
|
-
PLATFORM_BK72XX,
|
|
38
37
|
PLATFORM_ESP32,
|
|
39
38
|
PLATFORM_ESP8266,
|
|
40
39
|
PLATFORM_RP2040,
|
|
41
|
-
PLATFORM_RTL87XX,
|
|
42
40
|
SECRETS_FILES,
|
|
43
41
|
)
|
|
44
42
|
from esphome.core import CORE, EsphomeError, coroutine
|
|
@@ -354,7 +352,7 @@ def upload_program(config, args, host):
|
|
|
354
352
|
if CORE.target_platform in (PLATFORM_RP2040):
|
|
355
353
|
return upload_using_platformio(config, args.device)
|
|
356
354
|
|
|
357
|
-
if CORE.
|
|
355
|
+
if CORE.is_libretiny:
|
|
358
356
|
return upload_using_platformio(config, host)
|
|
359
357
|
|
|
360
358
|
return 1 # Unknown target platform
|
esphome/codegen.py
CHANGED
|
@@ -22,6 +22,7 @@ from esphome.cpp_generator import ( # noqa: F401
|
|
|
22
22
|
TemplateArguments,
|
|
23
23
|
add,
|
|
24
24
|
add_build_flag,
|
|
25
|
+
add_build_unflag,
|
|
25
26
|
add_define,
|
|
26
27
|
add_global,
|
|
27
28
|
add_library,
|
|
@@ -34,6 +35,7 @@ from esphome.cpp_generator import ( # noqa: F401
|
|
|
34
35
|
process_lambda,
|
|
35
36
|
progmem_array,
|
|
36
37
|
safe_exp,
|
|
38
|
+
set_cpp_standard,
|
|
37
39
|
statement,
|
|
38
40
|
static_const_array,
|
|
39
41
|
templatable,
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#include "esphome/core/helpers.h"
|
|
5
5
|
#include "esphome/core/log.h"
|
|
6
6
|
#include <cmath>
|
|
7
|
+
#include <numbers>
|
|
7
8
|
|
|
8
9
|
#ifdef USE_ESP8266
|
|
9
10
|
#include <core_esp8266_waveform.h>
|
|
@@ -193,18 +194,17 @@ void AcDimmer::setup() {
|
|
|
193
194
|
setTimer1Callback(&timer_interrupt);
|
|
194
195
|
#endif
|
|
195
196
|
#ifdef USE_ESP32
|
|
196
|
-
//
|
|
197
|
-
dimmer_timer = timerBegin(
|
|
198
|
-
timerAttachInterrupt(dimmer_timer, &AcDimmerDataStore::s_timer_intr
|
|
197
|
+
// timer frequency of 1mhz
|
|
198
|
+
dimmer_timer = timerBegin(1000000);
|
|
199
|
+
timerAttachInterrupt(dimmer_timer, &AcDimmerDataStore::s_timer_intr);
|
|
199
200
|
// For ESP32, we can't use dynamic interval calculation because the timerX functions
|
|
200
201
|
// are not callable from ISR (placed in flash storage).
|
|
201
202
|
// Here we just use an interrupt firing every 50 µs.
|
|
202
|
-
|
|
203
|
-
timerAlarmEnable(dimmer_timer);
|
|
203
|
+
timerAlarm(dimmer_timer, 50, true, 0);
|
|
204
204
|
#endif
|
|
205
205
|
}
|
|
206
206
|
void AcDimmer::write_state(float state) {
|
|
207
|
-
state = std::acos(1 - (2 * state)) /
|
|
207
|
+
state = std::acos(1 - (2 * state)) / std::numbers::pi; // RMS power compensation
|
|
208
208
|
auto new_value = static_cast<uint16_t>(roundf(state * 65535));
|
|
209
209
|
if (new_value != 0 && this->store_.value == 0)
|
|
210
210
|
this->store_.init_cycle = this->init_with_half_cycle_;
|
|
@@ -10,8 +10,15 @@ from esphome.components.esp32.const import (
|
|
|
10
10
|
VARIANT_ESP32S2,
|
|
11
11
|
VARIANT_ESP32S3,
|
|
12
12
|
)
|
|
13
|
+
from esphome.config_helpers import filter_source_files_from_platform
|
|
13
14
|
import esphome.config_validation as cv
|
|
14
|
-
from esphome.const import
|
|
15
|
+
from esphome.const import (
|
|
16
|
+
CONF_ANALOG,
|
|
17
|
+
CONF_INPUT,
|
|
18
|
+
CONF_NUMBER,
|
|
19
|
+
PLATFORM_ESP8266,
|
|
20
|
+
PlatformFramework,
|
|
21
|
+
)
|
|
15
22
|
from esphome.core import CORE
|
|
16
23
|
|
|
17
24
|
CODEOWNERS = ["@esphome/core"]
|
|
@@ -229,3 +236,20 @@ def validate_adc_pin(value):
|
|
|
229
236
|
)(value)
|
|
230
237
|
|
|
231
238
|
raise NotImplementedError
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
FILTER_SOURCE_FILES = filter_source_files_from_platform(
|
|
242
|
+
{
|
|
243
|
+
"adc_sensor_esp32.cpp": {
|
|
244
|
+
PlatformFramework.ESP32_ARDUINO,
|
|
245
|
+
PlatformFramework.ESP32_IDF,
|
|
246
|
+
},
|
|
247
|
+
"adc_sensor_esp8266.cpp": {PlatformFramework.ESP8266_ARDUINO},
|
|
248
|
+
"adc_sensor_rp2040.cpp": {PlatformFramework.RP2040_ARDUINO},
|
|
249
|
+
"adc_sensor_libretiny.cpp": {
|
|
250
|
+
PlatformFramework.BK72XX_ARDUINO,
|
|
251
|
+
PlatformFramework.RTL87XX_ARDUINO,
|
|
252
|
+
PlatformFramework.LN882X_ARDUINO,
|
|
253
|
+
},
|
|
254
|
+
}
|
|
255
|
+
)
|
|
@@ -15,8 +15,7 @@ namespace adc {
|
|
|
15
15
|
|
|
16
16
|
#ifdef USE_ESP32
|
|
17
17
|
// clang-format off
|
|
18
|
-
#if (ESP_IDF_VERSION_MAJOR ==
|
|
19
|
-
(ESP_IDF_VERSION_MAJOR == 5 && \
|
|
18
|
+
#if (ESP_IDF_VERSION_MAJOR == 5 && \
|
|
20
19
|
((ESP_IDF_VERSION_MINOR == 0 && ESP_IDF_VERSION_PATCH >= 5) || \
|
|
21
20
|
(ESP_IDF_VERSION_MINOR == 1 && ESP_IDF_VERSION_PATCH >= 3) || \
|
|
22
21
|
(ESP_IDF_VERSION_MINOR >= 2)) \
|
|
@@ -28,19 +27,24 @@ static const adc_atten_t ADC_ATTEN_DB_12_COMPAT = ADC_ATTEN_DB_11;
|
|
|
28
27
|
#endif
|
|
29
28
|
#endif // USE_ESP32
|
|
30
29
|
|
|
31
|
-
enum class SamplingMode : uint8_t {
|
|
30
|
+
enum class SamplingMode : uint8_t {
|
|
31
|
+
AVG = 0,
|
|
32
|
+
MIN = 1,
|
|
33
|
+
MAX = 2,
|
|
34
|
+
};
|
|
35
|
+
|
|
32
36
|
const LogString *sampling_mode_to_str(SamplingMode mode);
|
|
33
37
|
|
|
34
38
|
class Aggregator {
|
|
35
39
|
public:
|
|
40
|
+
Aggregator(SamplingMode mode);
|
|
36
41
|
void add_sample(uint32_t value);
|
|
37
42
|
uint32_t aggregate();
|
|
38
|
-
Aggregator(SamplingMode mode);
|
|
39
43
|
|
|
40
44
|
protected:
|
|
41
|
-
SamplingMode mode_{SamplingMode::AVG};
|
|
42
45
|
uint32_t aggr_{0};
|
|
43
46
|
uint32_t samples_{0};
|
|
47
|
+
SamplingMode mode_{SamplingMode::AVG};
|
|
44
48
|
};
|
|
45
49
|
|
|
46
50
|
class ADCSensor : public sensor::Sensor, public PollingComponent, public voltage_sampler::VoltageSampler {
|
|
@@ -81,9 +85,9 @@ class ADCSensor : public sensor::Sensor, public PollingComponent, public voltage
|
|
|
81
85
|
#endif // USE_RP2040
|
|
82
86
|
|
|
83
87
|
protected:
|
|
84
|
-
InternalGPIOPin *pin_;
|
|
85
|
-
bool output_raw_{false};
|
|
86
88
|
uint8_t sample_count_{1};
|
|
89
|
+
bool output_raw_{false};
|
|
90
|
+
InternalGPIOPin *pin_;
|
|
87
91
|
SamplingMode sampling_mode_{SamplingMode::AVG};
|
|
88
92
|
|
|
89
93
|
#ifdef USE_RP2040
|
|
@@ -95,11 +99,7 @@ class ADCSensor : public sensor::Sensor, public PollingComponent, public voltage
|
|
|
95
99
|
adc1_channel_t channel1_{ADC1_CHANNEL_MAX};
|
|
96
100
|
adc2_channel_t channel2_{ADC2_CHANNEL_MAX};
|
|
97
101
|
bool autorange_{false};
|
|
98
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
99
102
|
esp_adc_cal_characteristics_t cal_characteristics_[SOC_ADC_ATTEN_NUM] = {};
|
|
100
|
-
#else
|
|
101
|
-
esp_adc_cal_characteristics_t cal_characteristics_[ADC_ATTEN_MAX] = {};
|
|
102
|
-
#endif // ESP_IDF_VERSION_MAJOR
|
|
103
103
|
#endif // USE_ESP32
|
|
104
104
|
};
|
|
105
105
|
|
|
@@ -61,7 +61,7 @@ uint32_t Aggregator::aggregate() {
|
|
|
61
61
|
|
|
62
62
|
void ADCSensor::update() {
|
|
63
63
|
float value_v = this->sample();
|
|
64
|
-
ESP_LOGV(TAG, "'%s':
|
|
64
|
+
ESP_LOGV(TAG, "'%s': Voltage=%.4fV", this->get_name().c_str(), value_v);
|
|
65
65
|
this->publish_state(value_v);
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -55,32 +55,40 @@ void ADCSensor::setup() {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
void ADCSensor::dump_config() {
|
|
58
|
+
static const char *const ATTEN_AUTO_STR = "auto";
|
|
59
|
+
static const char *const ATTEN_0DB_STR = "0 db";
|
|
60
|
+
static const char *const ATTEN_2_5DB_STR = "2.5 db";
|
|
61
|
+
static const char *const ATTEN_6DB_STR = "6 db";
|
|
62
|
+
static const char *const ATTEN_12DB_STR = "12 db";
|
|
63
|
+
const char *atten_str = ATTEN_AUTO_STR;
|
|
64
|
+
|
|
58
65
|
LOG_SENSOR("", "ADC Sensor", this);
|
|
59
66
|
LOG_PIN(" Pin: ", this->pin_);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
} else {
|
|
67
|
+
|
|
68
|
+
if (!this->autorange_) {
|
|
63
69
|
switch (this->attenuation_) {
|
|
64
70
|
case ADC_ATTEN_DB_0:
|
|
65
|
-
|
|
71
|
+
atten_str = ATTEN_0DB_STR;
|
|
66
72
|
break;
|
|
67
73
|
case ADC_ATTEN_DB_2_5:
|
|
68
|
-
|
|
74
|
+
atten_str = ATTEN_2_5DB_STR;
|
|
69
75
|
break;
|
|
70
76
|
case ADC_ATTEN_DB_6:
|
|
71
|
-
|
|
77
|
+
atten_str = ATTEN_6DB_STR;
|
|
72
78
|
break;
|
|
73
79
|
case ADC_ATTEN_DB_12_COMPAT:
|
|
74
|
-
|
|
80
|
+
atten_str = ATTEN_12DB_STR;
|
|
75
81
|
break;
|
|
76
82
|
default: // This is to satisfy the unused ADC_ATTEN_MAX
|
|
77
83
|
break;
|
|
78
84
|
}
|
|
79
85
|
}
|
|
86
|
+
|
|
80
87
|
ESP_LOGCONFIG(TAG,
|
|
88
|
+
" Attenuation: %s\n"
|
|
81
89
|
" Samples: %i\n"
|
|
82
90
|
" Sampling mode: %s",
|
|
83
|
-
this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
|
|
91
|
+
atten_str, this->sample_count_, LOG_STR_ARG(sampling_mode_to_str(this->sampling_mode_)));
|
|
84
92
|
LOG_UPDATE_INTERVAL(this);
|
|
85
93
|
}
|
|
86
94
|
|
|
@@ -85,8 +85,6 @@ class ADE7880 : public i2c::I2CDevice, public PollingComponent {
|
|
|
85
85
|
|
|
86
86
|
void dump_config() override;
|
|
87
87
|
|
|
88
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
89
|
-
|
|
90
88
|
protected:
|
|
91
89
|
ADE7880Store store_{};
|
|
92
90
|
InternalGPIOPin *irq0_pin_{nullptr};
|
|
@@ -49,7 +49,6 @@ class ADS1115Component : public Component, public i2c::I2CDevice {
|
|
|
49
49
|
void setup() override;
|
|
50
50
|
void dump_config() override;
|
|
51
51
|
/// HARDWARE_LATE setup priority
|
|
52
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
53
52
|
void set_continuous_mode(bool continuous_mode) { continuous_mode_ = continuous_mode; }
|
|
54
53
|
|
|
55
54
|
/// Helper method to request a measurement from a sensor.
|
|
@@ -34,7 +34,6 @@ class ADS1118 : public Component,
|
|
|
34
34
|
ADS1118() = default;
|
|
35
35
|
void setup() override;
|
|
36
36
|
void dump_config() override;
|
|
37
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
38
37
|
/// Helper method to request a measurement from a sensor.
|
|
39
38
|
float request_measurement(ADS1118Multiplexer multiplexer, ADS1118Gain gain, bool temperature_mode);
|
|
40
39
|
|
esphome/components/ags10/ags10.h
CHANGED
|
@@ -66,7 +66,6 @@ class AIC3204 : public audio_dac::AudioDac, public Component, public i2c::I2CDev
|
|
|
66
66
|
public:
|
|
67
67
|
void setup() override;
|
|
68
68
|
void dump_config() override;
|
|
69
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
70
69
|
|
|
71
70
|
bool set_mute_off() override;
|
|
72
71
|
bool set_mute_on() override;
|
|
@@ -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 = ["@grahambrown11", "@hwstar"]
|
|
21
21
|
IS_PLATFORM_COMPONENT = True
|
|
@@ -149,6 +149,9 @@ _ALARM_CONTROL_PANEL_SCHEMA = (
|
|
|
149
149
|
)
|
|
150
150
|
|
|
151
151
|
|
|
152
|
+
_ALARM_CONTROL_PANEL_SCHEMA.add_extra(entity_duplicate_validator("alarm_control_panel"))
|
|
153
|
+
|
|
154
|
+
|
|
152
155
|
def alarm_control_panel_schema(
|
|
153
156
|
class_: MockObjClass,
|
|
154
157
|
*,
|
|
@@ -190,7 +193,7 @@ ALARM_CONTROL_PANEL_CONDITION_SCHEMA = maybe_simple_id(
|
|
|
190
193
|
|
|
191
194
|
|
|
192
195
|
async def setup_alarm_control_panel_core_(var, config):
|
|
193
|
-
await setup_entity(var, config)
|
|
196
|
+
await setup_entity(var, config, "alarm_control_panel")
|
|
194
197
|
for conf in config.get(CONF_ON_STATE, []):
|
|
195
198
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
|
196
199
|
await automation.build_automation(trigger, [], conf)
|
|
@@ -41,7 +41,6 @@ class Alpha3 : public esphome::ble_client::BLEClientNode, public PollingComponen
|
|
|
41
41
|
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
|
|
42
42
|
esp_ble_gattc_cb_param_t *param) override;
|
|
43
43
|
void dump_config() override;
|
|
44
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
45
44
|
void set_flow_sensor(sensor::Sensor *sensor) { this->flow_sensor_ = sensor; }
|
|
46
45
|
void set_head_sensor(sensor::Sensor *sensor) { this->head_sensor_ = sensor; }
|
|
47
46
|
void set_power_sensor(sensor::Sensor *sensor) { this->power_sensor_ = sensor; }
|
|
@@ -22,7 +22,6 @@ class Am43Component : public cover::Cover, public esphome::ble_client::BLEClient
|
|
|
22
22
|
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
|
|
23
23
|
esp_ble_gattc_cb_param_t *param) override;
|
|
24
24
|
void dump_config() override;
|
|
25
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
26
25
|
cover::CoverTraits get_traits() override;
|
|
27
26
|
void set_pin(uint16_t pin) { this->pin_ = pin; }
|
|
28
27
|
void set_invert_position(bool invert_position) { this->invert_position_ = invert_position; }
|
|
@@ -22,7 +22,6 @@ class Am43 : public esphome::ble_client::BLEClientNode, public PollingComponent
|
|
|
22
22
|
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
|
|
23
23
|
esp_ble_gattc_cb_param_t *param) override;
|
|
24
24
|
void dump_config() override;
|
|
25
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
26
25
|
void set_battery(sensor::Sensor *battery) { battery_ = battery; }
|
|
27
26
|
void set_illuminance(sensor::Sensor *illuminance) { illuminance_ = illuminance; }
|
|
28
27
|
|
|
@@ -12,8 +12,6 @@ class AnalogThresholdBinarySensor : public Component, public binary_sensor::Bina
|
|
|
12
12
|
void dump_config() override;
|
|
13
13
|
void setup() override;
|
|
14
14
|
|
|
15
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
16
|
-
|
|
17
15
|
void set_sensor(sensor::Sensor *analog_sensor);
|
|
18
16
|
template<typename T> void set_upper_threshold(T upper_threshold) { this->upper_threshold_ = upper_threshold; }
|
|
19
17
|
template<typename T> void set_lower_threshold(T lower_threshold) { this->lower_threshold_ = lower_threshold; }
|
|
@@ -17,7 +17,11 @@ void Anova::setup() {
|
|
|
17
17
|
this->current_request_ = 0;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
void Anova::loop() {
|
|
20
|
+
void Anova::loop() {
|
|
21
|
+
// Parent BLEClientNode has a loop() method, but this component uses
|
|
22
|
+
// polling via update() and BLE callbacks so loop isn't needed
|
|
23
|
+
this->disable_loop();
|
|
24
|
+
}
|
|
21
25
|
|
|
22
26
|
void Anova::control(const ClimateCall &call) {
|
|
23
27
|
if (call.get_mode().has_value()) {
|
esphome/components/anova/anova.h
CHANGED
|
@@ -26,7 +26,6 @@ class Anova : public climate::Climate, public esphome::ble_client::BLEClientNode
|
|
|
26
26
|
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
|
|
27
27
|
esp_ble_gattc_cb_param_t *param) override;
|
|
28
28
|
void dump_config() override;
|
|
29
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
30
29
|
climate::ClimateTraits traits() override {
|
|
31
30
|
auto traits = climate::ClimateTraits();
|
|
32
31
|
traits.set_supports_current_temperature(true);
|
|
@@ -23,7 +23,7 @@ void APDS9960::setup() {
|
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
if (id != 0xAB && id != 0x9C && id != 0xA8) { // APDS9960 all should have one of these IDs
|
|
26
|
+
if (id != 0xAB && id != 0x9C && id != 0xA8 && id != 0x9E) { // APDS9960 all should have one of these IDs
|
|
27
27
|
this->error_code_ = WRONG_ID;
|
|
28
28
|
this->mark_failed();
|
|
29
29
|
return;
|
|
@@ -3,6 +3,7 @@ import base64
|
|
|
3
3
|
from esphome import automation
|
|
4
4
|
from esphome.automation import Condition
|
|
5
5
|
import esphome.codegen as cg
|
|
6
|
+
from esphome.config_helpers import get_logger_level
|
|
6
7
|
import esphome.config_validation as cv
|
|
7
8
|
from esphome.const import (
|
|
8
9
|
CONF_ACTION,
|
|
@@ -23,8 +24,9 @@ from esphome.const import (
|
|
|
23
24
|
CONF_TRIGGER_ID,
|
|
24
25
|
CONF_VARIABLES,
|
|
25
26
|
)
|
|
26
|
-
from esphome.core import coroutine_with_priority
|
|
27
|
+
from esphome.core import CORE, coroutine_with_priority
|
|
27
28
|
|
|
29
|
+
DOMAIN = "api"
|
|
28
30
|
DEPENDENCIES = ["network"]
|
|
29
31
|
AUTO_LOAD = ["socket"]
|
|
30
32
|
CODEOWNERS = ["@OttoWinter"]
|
|
@@ -50,6 +52,7 @@ SERVICE_ARG_NATIVE_TYPES = {
|
|
|
50
52
|
}
|
|
51
53
|
CONF_ENCRYPTION = "encryption"
|
|
52
54
|
CONF_BATCH_DELAY = "batch_delay"
|
|
55
|
+
CONF_CUSTOM_SERVICES = "custom_services"
|
|
53
56
|
|
|
54
57
|
|
|
55
58
|
def validate_encryption_key(value):
|
|
@@ -110,9 +113,11 @@ CONFIG_SCHEMA = cv.All(
|
|
|
110
113
|
): ACTIONS_SCHEMA,
|
|
111
114
|
cv.Exclusive(CONF_ACTIONS, group_of_exclusion=CONF_ACTIONS): ACTIONS_SCHEMA,
|
|
112
115
|
cv.Optional(CONF_ENCRYPTION): _encryption_schema,
|
|
113
|
-
cv.Optional(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
cv.Optional(CONF_BATCH_DELAY, default="100ms"): cv.All(
|
|
117
|
+
cv.positive_time_period_milliseconds,
|
|
118
|
+
cv.Range(max=cv.TimePeriod(milliseconds=65535)),
|
|
119
|
+
),
|
|
120
|
+
cv.Optional(CONF_CUSTOM_SERVICES, default=False): cv.boolean,
|
|
116
121
|
cv.Optional(CONF_ON_CLIENT_CONNECTED): automation.validate_automation(
|
|
117
122
|
single=True
|
|
118
123
|
),
|
|
@@ -131,27 +136,35 @@ async def to_code(config):
|
|
|
131
136
|
await cg.register_component(var, config)
|
|
132
137
|
|
|
133
138
|
cg.add(var.set_port(config[CONF_PORT]))
|
|
134
|
-
|
|
139
|
+
if config[CONF_PASSWORD]:
|
|
140
|
+
cg.add_define("USE_API_PASSWORD")
|
|
141
|
+
cg.add(var.set_password(config[CONF_PASSWORD]))
|
|
135
142
|
cg.add(var.set_reboot_timeout(config[CONF_REBOOT_TIMEOUT]))
|
|
136
143
|
cg.add(var.set_batch_delay(config[CONF_BATCH_DELAY]))
|
|
137
144
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
template_args
|
|
145
|
-
func_args
|
|
146
|
-
service_arg_names
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
145
|
+
# Set USE_API_SERVICES if any services are enabled
|
|
146
|
+
if config.get(CONF_ACTIONS) or config[CONF_CUSTOM_SERVICES]:
|
|
147
|
+
cg.add_define("USE_API_SERVICES")
|
|
148
|
+
|
|
149
|
+
if actions := config.get(CONF_ACTIONS, []):
|
|
150
|
+
for conf in actions:
|
|
151
|
+
template_args = []
|
|
152
|
+
func_args = []
|
|
153
|
+
service_arg_names = []
|
|
154
|
+
for name, var_ in conf[CONF_VARIABLES].items():
|
|
155
|
+
native = SERVICE_ARG_NATIVE_TYPES[var_]
|
|
156
|
+
template_args.append(native)
|
|
157
|
+
func_args.append((native, name))
|
|
158
|
+
service_arg_names.append(name)
|
|
159
|
+
templ = cg.TemplateArguments(*template_args)
|
|
160
|
+
trigger = cg.new_Pvariable(
|
|
161
|
+
conf[CONF_TRIGGER_ID], templ, conf[CONF_ACTION], service_arg_names
|
|
162
|
+
)
|
|
163
|
+
cg.add(var.register_user_service(trigger))
|
|
164
|
+
await automation.build_automation(trigger, func_args, conf)
|
|
153
165
|
|
|
154
166
|
if CONF_ON_CLIENT_CONNECTED in config:
|
|
167
|
+
cg.add_define("USE_API_CLIENT_CONNECTED_TRIGGER")
|
|
155
168
|
await automation.build_automation(
|
|
156
169
|
var.get_client_connected_trigger(),
|
|
157
170
|
[(cg.std_string, "client_info"), (cg.std_string, "client_address")],
|
|
@@ -159,6 +172,7 @@ async def to_code(config):
|
|
|
159
172
|
)
|
|
160
173
|
|
|
161
174
|
if CONF_ON_CLIENT_DISCONNECTED in config:
|
|
175
|
+
cg.add_define("USE_API_CLIENT_DISCONNECTED_TRIGGER")
|
|
162
176
|
await automation.build_automation(
|
|
163
177
|
var.get_client_disconnected_trigger(),
|
|
164
178
|
[(cg.std_string, "client_info"), (cg.std_string, "client_address")],
|
|
@@ -177,7 +191,7 @@ async def to_code(config):
|
|
|
177
191
|
# and plaintext disabled. Only a factory reset can remove it.
|
|
178
192
|
cg.add_define("USE_API_PLAINTEXT")
|
|
179
193
|
cg.add_define("USE_API_NOISE")
|
|
180
|
-
cg.add_library("esphome/noise-c", "0.1.
|
|
194
|
+
cg.add_library("esphome/noise-c", "0.1.10")
|
|
181
195
|
else:
|
|
182
196
|
cg.add_define("USE_API_PLAINTEXT")
|
|
183
197
|
|
|
@@ -306,3 +320,25 @@ async def homeassistant_tag_scanned_to_code(config, action_id, template_arg, arg
|
|
|
306
320
|
@automation.register_condition("api.connected", APIConnectedCondition, {})
|
|
307
321
|
async def api_connected_to_code(config, condition_id, template_arg, args):
|
|
308
322
|
return cg.new_Pvariable(condition_id, template_arg)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
def FILTER_SOURCE_FILES() -> list[str]:
|
|
326
|
+
"""Filter out api_pb2_dump.cpp when proto message dumping is not enabled
|
|
327
|
+
and user_services.cpp when no services are defined."""
|
|
328
|
+
files_to_filter = []
|
|
329
|
+
|
|
330
|
+
# api_pb2_dump.cpp is only needed when HAS_PROTO_MESSAGE_DUMP is defined
|
|
331
|
+
# This is a particularly large file that still needs to be opened and read
|
|
332
|
+
# all the way to the end even when ifdef'd out
|
|
333
|
+
#
|
|
334
|
+
# HAS_PROTO_MESSAGE_DUMP is defined when ESPHOME_LOG_HAS_VERY_VERBOSE is set,
|
|
335
|
+
# which happens when the logger level is VERY_VERBOSE
|
|
336
|
+
if get_logger_level() != "VERY_VERBOSE":
|
|
337
|
+
files_to_filter.append("api_pb2_dump.cpp")
|
|
338
|
+
|
|
339
|
+
# user_services.cpp is only needed when services are defined
|
|
340
|
+
config = CORE.config.get(DOMAIN, {})
|
|
341
|
+
if config and not config.get(CONF_ACTIONS) and not config[CONF_CUSTOM_SERVICES]:
|
|
342
|
+
files_to_filter.append("user_services.cpp")
|
|
343
|
+
|
|
344
|
+
return files_to_filter
|