esphome 2025.6.2__py3-none-any.whl → 2025.7.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +10 -4
- 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.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 +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 +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/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 +311 -430
- 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.2.dist-info → esphome-2025.7.0b1.dist-info}/METADATA +10 -9
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/RECORD +593 -533
- 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.0b1.dist-info}/WHEEL +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/top_level.txt +0 -0
esphome/components/api/client.py
CHANGED
|
@@ -4,9 +4,15 @@ import asyncio
|
|
|
4
4
|
from datetime import datetime
|
|
5
5
|
import logging
|
|
6
6
|
from typing import TYPE_CHECKING, Any
|
|
7
|
+
import warnings
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
# Suppress protobuf version warnings
|
|
10
|
+
with warnings.catch_warnings():
|
|
11
|
+
warnings.filterwarnings(
|
|
12
|
+
"ignore", category=UserWarning, message=".*Protobuf gencode version.*"
|
|
13
|
+
)
|
|
14
|
+
from aioesphomeapi import APIClient, parse_log_message
|
|
15
|
+
from aioesphomeapi.log_runner import async_run
|
|
10
16
|
|
|
11
17
|
from esphome.const import CONF_KEY, CONF_PASSWORD, CONF_PORT, __version__
|
|
12
18
|
from esphome.core import CORE
|
|
@@ -29,8 +35,8 @@ async def async_run_logs(config: dict[str, Any], address: str) -> None:
|
|
|
29
35
|
port: int = int(conf[CONF_PORT])
|
|
30
36
|
password: str = conf[CONF_PASSWORD]
|
|
31
37
|
noise_psk: str | None = None
|
|
32
|
-
if CONF_ENCRYPTION
|
|
33
|
-
noise_psk =
|
|
38
|
+
if (encryption := conf.get(CONF_ENCRYPTION)) and (key := encryption.get(CONF_KEY)):
|
|
39
|
+
noise_psk = key
|
|
34
40
|
_LOGGER.info("Starting log output from %s using esphome API", address)
|
|
35
41
|
cli = APIClient(
|
|
36
42
|
address,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#include "list_entities.h"
|
|
2
2
|
#ifdef USE_API
|
|
3
3
|
#include "api_connection.h"
|
|
4
|
+
#include "api_pb2.h"
|
|
4
5
|
#include "esphome/core/application.h"
|
|
5
6
|
#include "esphome/core/log.h"
|
|
6
7
|
#include "esphome/core/util.h"
|
|
@@ -8,155 +9,85 @@
|
|
|
8
9
|
namespace esphome {
|
|
9
10
|
namespace api {
|
|
10
11
|
|
|
12
|
+
// Generate entity handler implementations using macros
|
|
11
13
|
#ifdef USE_BINARY_SENSOR
|
|
12
|
-
|
|
13
|
-
this->client_->send_binary_sensor_info(binary_sensor);
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
14
|
+
LIST_ENTITIES_HANDLER(binary_sensor, binary_sensor::BinarySensor, ListEntitiesBinarySensorResponse)
|
|
16
15
|
#endif
|
|
17
16
|
#ifdef USE_COVER
|
|
18
|
-
|
|
19
|
-
this->client_->send_cover_info(cover);
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
17
|
+
LIST_ENTITIES_HANDLER(cover, cover::Cover, ListEntitiesCoverResponse)
|
|
22
18
|
#endif
|
|
23
19
|
#ifdef USE_FAN
|
|
24
|
-
|
|
25
|
-
this->client_->send_fan_info(fan);
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
20
|
+
LIST_ENTITIES_HANDLER(fan, fan::Fan, ListEntitiesFanResponse)
|
|
28
21
|
#endif
|
|
29
22
|
#ifdef USE_LIGHT
|
|
30
|
-
|
|
31
|
-
this->client_->send_light_info(light);
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
23
|
+
LIST_ENTITIES_HANDLER(light, light::LightState, ListEntitiesLightResponse)
|
|
34
24
|
#endif
|
|
35
25
|
#ifdef USE_SENSOR
|
|
36
|
-
|
|
37
|
-
this->client_->send_sensor_info(sensor);
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
26
|
+
LIST_ENTITIES_HANDLER(sensor, sensor::Sensor, ListEntitiesSensorResponse)
|
|
40
27
|
#endif
|
|
41
28
|
#ifdef USE_SWITCH
|
|
42
|
-
|
|
43
|
-
this->client_->send_switch_info(a_switch);
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
29
|
+
LIST_ENTITIES_HANDLER(switch, switch_::Switch, ListEntitiesSwitchResponse)
|
|
46
30
|
#endif
|
|
47
31
|
#ifdef USE_BUTTON
|
|
48
|
-
|
|
49
|
-
this->client_->send_button_info(button);
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
32
|
+
LIST_ENTITIES_HANDLER(button, button::Button, ListEntitiesButtonResponse)
|
|
52
33
|
#endif
|
|
53
34
|
#ifdef USE_TEXT_SENSOR
|
|
54
|
-
|
|
55
|
-
this->client_->send_text_sensor_info(text_sensor);
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
35
|
+
LIST_ENTITIES_HANDLER(text_sensor, text_sensor::TextSensor, ListEntitiesTextSensorResponse)
|
|
58
36
|
#endif
|
|
59
37
|
#ifdef USE_LOCK
|
|
60
|
-
|
|
61
|
-
this->client_->send_lock_info(a_lock);
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
38
|
+
LIST_ENTITIES_HANDLER(lock, lock::Lock, ListEntitiesLockResponse)
|
|
64
39
|
#endif
|
|
65
40
|
#ifdef USE_VALVE
|
|
66
|
-
|
|
67
|
-
this->client_->send_valve_info(valve);
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
41
|
+
LIST_ENTITIES_HANDLER(valve, valve::Valve, ListEntitiesValveResponse)
|
|
70
42
|
#endif
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
ListEntitiesIterator::ListEntitiesIterator(APIConnection *client) : client_(client) {}
|
|
74
|
-
bool ListEntitiesIterator::on_service(UserServiceDescriptor *service) {
|
|
75
|
-
auto resp = service->encode_list_service_response();
|
|
76
|
-
return this->client_->send_message(resp);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
#ifdef USE_ESP32_CAMERA
|
|
80
|
-
bool ListEntitiesIterator::on_camera(esp32_camera::ESP32Camera *camera) {
|
|
81
|
-
this->client_->send_camera_info(camera);
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
43
|
+
#ifdef USE_CAMERA
|
|
44
|
+
LIST_ENTITIES_HANDLER(camera, camera::Camera, ListEntitiesCameraResponse)
|
|
84
45
|
#endif
|
|
85
|
-
|
|
86
46
|
#ifdef USE_CLIMATE
|
|
87
|
-
|
|
88
|
-
this->client_->send_climate_info(climate);
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
47
|
+
LIST_ENTITIES_HANDLER(climate, climate::Climate, ListEntitiesClimateResponse)
|
|
91
48
|
#endif
|
|
92
|
-
|
|
93
49
|
#ifdef USE_NUMBER
|
|
94
|
-
|
|
95
|
-
this->client_->send_number_info(number);
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
50
|
+
LIST_ENTITIES_HANDLER(number, number::Number, ListEntitiesNumberResponse)
|
|
98
51
|
#endif
|
|
99
|
-
|
|
100
52
|
#ifdef USE_DATETIME_DATE
|
|
101
|
-
|
|
102
|
-
this->client_->send_date_info(date);
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
53
|
+
LIST_ENTITIES_HANDLER(date, datetime::DateEntity, ListEntitiesDateResponse)
|
|
105
54
|
#endif
|
|
106
|
-
|
|
107
55
|
#ifdef USE_DATETIME_TIME
|
|
108
|
-
|
|
109
|
-
this->client_->send_time_info(time);
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
56
|
+
LIST_ENTITIES_HANDLER(time, datetime::TimeEntity, ListEntitiesTimeResponse)
|
|
112
57
|
#endif
|
|
113
|
-
|
|
114
58
|
#ifdef USE_DATETIME_DATETIME
|
|
115
|
-
|
|
116
|
-
this->client_->send_datetime_info(datetime);
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
59
|
+
LIST_ENTITIES_HANDLER(datetime, datetime::DateTimeEntity, ListEntitiesDateTimeResponse)
|
|
119
60
|
#endif
|
|
120
|
-
|
|
121
61
|
#ifdef USE_TEXT
|
|
122
|
-
|
|
123
|
-
this->client_->send_text_info(text);
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
62
|
+
LIST_ENTITIES_HANDLER(text, text::Text, ListEntitiesTextResponse)
|
|
126
63
|
#endif
|
|
127
|
-
|
|
128
64
|
#ifdef USE_SELECT
|
|
129
|
-
|
|
130
|
-
this->client_->send_select_info(select);
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
65
|
+
LIST_ENTITIES_HANDLER(select, select::Select, ListEntitiesSelectResponse)
|
|
133
66
|
#endif
|
|
134
|
-
|
|
135
67
|
#ifdef USE_MEDIA_PLAYER
|
|
136
|
-
|
|
137
|
-
this->client_->send_media_player_info(media_player);
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
68
|
+
LIST_ENTITIES_HANDLER(media_player, media_player::MediaPlayer, ListEntitiesMediaPlayerResponse)
|
|
140
69
|
#endif
|
|
141
70
|
#ifdef USE_ALARM_CONTROL_PANEL
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
return true;
|
|
145
|
-
}
|
|
71
|
+
LIST_ENTITIES_HANDLER(alarm_control_panel, alarm_control_panel::AlarmControlPanel,
|
|
72
|
+
ListEntitiesAlarmControlPanelResponse)
|
|
146
73
|
#endif
|
|
147
74
|
#ifdef USE_EVENT
|
|
148
|
-
|
|
149
|
-
this->client_->send_event_info(event);
|
|
150
|
-
return true;
|
|
151
|
-
}
|
|
75
|
+
LIST_ENTITIES_HANDLER(event, event::Event, ListEntitiesEventResponse)
|
|
152
76
|
#endif
|
|
153
77
|
#ifdef USE_UPDATE
|
|
154
|
-
|
|
155
|
-
this->client_->send_update_info(update);
|
|
156
|
-
return true;
|
|
157
|
-
}
|
|
78
|
+
LIST_ENTITIES_HANDLER(update, update::UpdateEntity, ListEntitiesUpdateResponse)
|
|
158
79
|
#endif
|
|
159
80
|
|
|
81
|
+
// Special cases that don't follow the pattern
|
|
82
|
+
bool ListEntitiesIterator::on_end() { return this->client_->send_list_info_done(); }
|
|
83
|
+
|
|
84
|
+
ListEntitiesIterator::ListEntitiesIterator(APIConnection *client) : client_(client) {}
|
|
85
|
+
|
|
86
|
+
bool ListEntitiesIterator::on_service(UserServiceDescriptor *service) {
|
|
87
|
+
auto resp = service->encode_list_service_response();
|
|
88
|
+
return this->client_->send_message(resp);
|
|
89
|
+
}
|
|
90
|
+
|
|
160
91
|
} // namespace api
|
|
161
92
|
} // namespace esphome
|
|
162
93
|
#endif
|
|
@@ -9,75 +9,83 @@ namespace api {
|
|
|
9
9
|
|
|
10
10
|
class APIConnection;
|
|
11
11
|
|
|
12
|
+
// Macro for generating ListEntitiesIterator handlers
|
|
13
|
+
// Calls schedule_message_ with try_send_*_info
|
|
14
|
+
#define LIST_ENTITIES_HANDLER(entity_type, EntityClass, ResponseType) \
|
|
15
|
+
bool ListEntitiesIterator::on_##entity_type(EntityClass *entity) { /* NOLINT(bugprone-macro-parentheses) */ \
|
|
16
|
+
return this->client_->schedule_message_(entity, &APIConnection::try_send_##entity_type##_info, \
|
|
17
|
+
ResponseType::MESSAGE_TYPE); \
|
|
18
|
+
}
|
|
19
|
+
|
|
12
20
|
class ListEntitiesIterator : public ComponentIterator {
|
|
13
21
|
public:
|
|
14
22
|
ListEntitiesIterator(APIConnection *client);
|
|
15
23
|
#ifdef USE_BINARY_SENSOR
|
|
16
|
-
bool on_binary_sensor(binary_sensor::BinarySensor *
|
|
24
|
+
bool on_binary_sensor(binary_sensor::BinarySensor *entity) override;
|
|
17
25
|
#endif
|
|
18
26
|
#ifdef USE_COVER
|
|
19
|
-
bool on_cover(cover::Cover *
|
|
27
|
+
bool on_cover(cover::Cover *entity) override;
|
|
20
28
|
#endif
|
|
21
29
|
#ifdef USE_FAN
|
|
22
|
-
bool on_fan(fan::Fan *
|
|
30
|
+
bool on_fan(fan::Fan *entity) override;
|
|
23
31
|
#endif
|
|
24
32
|
#ifdef USE_LIGHT
|
|
25
|
-
bool on_light(light::LightState *
|
|
33
|
+
bool on_light(light::LightState *entity) override;
|
|
26
34
|
#endif
|
|
27
35
|
#ifdef USE_SENSOR
|
|
28
|
-
bool on_sensor(sensor::Sensor *
|
|
36
|
+
bool on_sensor(sensor::Sensor *entity) override;
|
|
29
37
|
#endif
|
|
30
38
|
#ifdef USE_SWITCH
|
|
31
|
-
bool on_switch(switch_::Switch *
|
|
39
|
+
bool on_switch(switch_::Switch *entity) override;
|
|
32
40
|
#endif
|
|
33
41
|
#ifdef USE_BUTTON
|
|
34
|
-
bool on_button(button::Button *
|
|
42
|
+
bool on_button(button::Button *entity) override;
|
|
35
43
|
#endif
|
|
36
44
|
#ifdef USE_TEXT_SENSOR
|
|
37
|
-
bool on_text_sensor(text_sensor::TextSensor *
|
|
45
|
+
bool on_text_sensor(text_sensor::TextSensor *entity) override;
|
|
38
46
|
#endif
|
|
39
47
|
bool on_service(UserServiceDescriptor *service) override;
|
|
40
|
-
#ifdef
|
|
41
|
-
bool on_camera(
|
|
48
|
+
#ifdef USE_CAMERA
|
|
49
|
+
bool on_camera(camera::Camera *entity) override;
|
|
42
50
|
#endif
|
|
43
51
|
#ifdef USE_CLIMATE
|
|
44
|
-
bool on_climate(climate::Climate *
|
|
52
|
+
bool on_climate(climate::Climate *entity) override;
|
|
45
53
|
#endif
|
|
46
54
|
#ifdef USE_NUMBER
|
|
47
|
-
bool on_number(number::Number *
|
|
55
|
+
bool on_number(number::Number *entity) override;
|
|
48
56
|
#endif
|
|
49
57
|
#ifdef USE_DATETIME_DATE
|
|
50
|
-
bool on_date(datetime::DateEntity *
|
|
58
|
+
bool on_date(datetime::DateEntity *entity) override;
|
|
51
59
|
#endif
|
|
52
60
|
#ifdef USE_DATETIME_TIME
|
|
53
|
-
bool on_time(datetime::TimeEntity *
|
|
61
|
+
bool on_time(datetime::TimeEntity *entity) override;
|
|
54
62
|
#endif
|
|
55
63
|
#ifdef USE_DATETIME_DATETIME
|
|
56
|
-
bool on_datetime(datetime::DateTimeEntity *
|
|
64
|
+
bool on_datetime(datetime::DateTimeEntity *entity) override;
|
|
57
65
|
#endif
|
|
58
66
|
#ifdef USE_TEXT
|
|
59
|
-
bool on_text(text::Text *
|
|
67
|
+
bool on_text(text::Text *entity) override;
|
|
60
68
|
#endif
|
|
61
69
|
#ifdef USE_SELECT
|
|
62
|
-
bool on_select(select::Select *
|
|
70
|
+
bool on_select(select::Select *entity) override;
|
|
63
71
|
#endif
|
|
64
72
|
#ifdef USE_LOCK
|
|
65
|
-
bool on_lock(lock::Lock *
|
|
73
|
+
bool on_lock(lock::Lock *entity) override;
|
|
66
74
|
#endif
|
|
67
75
|
#ifdef USE_VALVE
|
|
68
|
-
bool on_valve(valve::Valve *
|
|
76
|
+
bool on_valve(valve::Valve *entity) override;
|
|
69
77
|
#endif
|
|
70
78
|
#ifdef USE_MEDIA_PLAYER
|
|
71
|
-
bool on_media_player(media_player::MediaPlayer *
|
|
79
|
+
bool on_media_player(media_player::MediaPlayer *entity) override;
|
|
72
80
|
#endif
|
|
73
81
|
#ifdef USE_ALARM_CONTROL_PANEL
|
|
74
|
-
bool on_alarm_control_panel(alarm_control_panel::AlarmControlPanel *
|
|
82
|
+
bool on_alarm_control_panel(alarm_control_panel::AlarmControlPanel *entity) override;
|
|
75
83
|
#endif
|
|
76
84
|
#ifdef USE_EVENT
|
|
77
|
-
bool on_event(event::Event *
|
|
85
|
+
bool on_event(event::Event *entity) override;
|
|
78
86
|
#endif
|
|
79
87
|
#ifdef USE_UPDATE
|
|
80
|
-
bool on_update(update::UpdateEntity *
|
|
88
|
+
bool on_update(update::UpdateEntity *entity) override;
|
|
81
89
|
#endif
|
|
82
90
|
bool on_end() override;
|
|
83
91
|
bool completed() { return this->state_ == IteratorState::NONE; }
|
esphome/components/api/proto.h
CHANGED
|
@@ -327,12 +327,15 @@ class ProtoWriteBuffer {
|
|
|
327
327
|
class ProtoMessage {
|
|
328
328
|
public:
|
|
329
329
|
virtual ~ProtoMessage() = default;
|
|
330
|
-
|
|
330
|
+
// Default implementation for messages with no fields
|
|
331
|
+
virtual void encode(ProtoWriteBuffer buffer) const {}
|
|
331
332
|
void decode(const uint8_t *buffer, size_t length);
|
|
332
|
-
|
|
333
|
+
// Default implementation for messages with no fields
|
|
334
|
+
virtual void calculate_size(uint32_t &total_size) const {}
|
|
333
335
|
#ifdef HAS_PROTO_MESSAGE_DUMP
|
|
334
336
|
std::string dump() const;
|
|
335
337
|
virtual void dump_to(std::string &out) const = 0;
|
|
338
|
+
virtual const char *message_name() const { return "unknown"; }
|
|
336
339
|
#endif
|
|
337
340
|
|
|
338
341
|
protected:
|
|
@@ -361,7 +364,7 @@ class ProtoService {
|
|
|
361
364
|
*/
|
|
362
365
|
virtual ProtoWriteBuffer create_buffer(uint32_t reserve_size) = 0;
|
|
363
366
|
virtual bool send_buffer(ProtoWriteBuffer buffer, uint16_t message_type) = 0;
|
|
364
|
-
virtual
|
|
367
|
+
virtual void read_message(uint32_t msg_size, uint32_t msg_type, uint8_t *msg_data) = 0;
|
|
365
368
|
|
|
366
369
|
// Optimized method that pre-allocates buffer based on message size
|
|
367
370
|
bool send_message_(const ProtoMessage &msg, uint16_t message_type) {
|
|
@@ -377,6 +380,26 @@ class ProtoService {
|
|
|
377
380
|
// Send the buffer
|
|
378
381
|
return this->send_buffer(buffer, message_type);
|
|
379
382
|
}
|
|
383
|
+
|
|
384
|
+
// Authentication helper methods
|
|
385
|
+
bool check_connection_setup_() {
|
|
386
|
+
if (!this->is_connection_setup()) {
|
|
387
|
+
this->on_no_setup_connection();
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
return true;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
bool check_authenticated_() {
|
|
394
|
+
if (!this->check_connection_setup_()) {
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
if (!this->is_authenticated()) {
|
|
398
|
+
this->on_unauthenticated_access();
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
return true;
|
|
402
|
+
}
|
|
380
403
|
};
|
|
381
404
|
|
|
382
405
|
} // namespace api
|
|
@@ -6,73 +6,67 @@
|
|
|
6
6
|
namespace esphome {
|
|
7
7
|
namespace api {
|
|
8
8
|
|
|
9
|
+
// Generate entity handler implementations using macros
|
|
9
10
|
#ifdef USE_BINARY_SENSOR
|
|
10
|
-
|
|
11
|
-
return this->client_->send_binary_sensor_state(binary_sensor);
|
|
12
|
-
}
|
|
11
|
+
INITIAL_STATE_HANDLER(binary_sensor, binary_sensor::BinarySensor)
|
|
13
12
|
#endif
|
|
14
13
|
#ifdef USE_COVER
|
|
15
|
-
|
|
14
|
+
INITIAL_STATE_HANDLER(cover, cover::Cover)
|
|
16
15
|
#endif
|
|
17
16
|
#ifdef USE_FAN
|
|
18
|
-
|
|
17
|
+
INITIAL_STATE_HANDLER(fan, fan::Fan)
|
|
19
18
|
#endif
|
|
20
19
|
#ifdef USE_LIGHT
|
|
21
|
-
|
|
20
|
+
INITIAL_STATE_HANDLER(light, light::LightState)
|
|
22
21
|
#endif
|
|
23
22
|
#ifdef USE_SENSOR
|
|
24
|
-
|
|
23
|
+
INITIAL_STATE_HANDLER(sensor, sensor::Sensor)
|
|
25
24
|
#endif
|
|
26
25
|
#ifdef USE_SWITCH
|
|
27
|
-
|
|
26
|
+
INITIAL_STATE_HANDLER(switch, switch_::Switch)
|
|
28
27
|
#endif
|
|
29
28
|
#ifdef USE_TEXT_SENSOR
|
|
30
|
-
|
|
31
|
-
return this->client_->send_text_sensor_state(text_sensor);
|
|
32
|
-
}
|
|
29
|
+
INITIAL_STATE_HANDLER(text_sensor, text_sensor::TextSensor)
|
|
33
30
|
#endif
|
|
34
31
|
#ifdef USE_CLIMATE
|
|
35
|
-
|
|
32
|
+
INITIAL_STATE_HANDLER(climate, climate::Climate)
|
|
36
33
|
#endif
|
|
37
34
|
#ifdef USE_NUMBER
|
|
38
|
-
|
|
35
|
+
INITIAL_STATE_HANDLER(number, number::Number)
|
|
39
36
|
#endif
|
|
40
37
|
#ifdef USE_DATETIME_DATE
|
|
41
|
-
|
|
38
|
+
INITIAL_STATE_HANDLER(date, datetime::DateEntity)
|
|
42
39
|
#endif
|
|
43
40
|
#ifdef USE_DATETIME_TIME
|
|
44
|
-
|
|
41
|
+
INITIAL_STATE_HANDLER(time, datetime::TimeEntity)
|
|
45
42
|
#endif
|
|
46
43
|
#ifdef USE_DATETIME_DATETIME
|
|
47
|
-
|
|
48
|
-
return this->client_->send_datetime_state(datetime);
|
|
49
|
-
}
|
|
44
|
+
INITIAL_STATE_HANDLER(datetime, datetime::DateTimeEntity)
|
|
50
45
|
#endif
|
|
51
46
|
#ifdef USE_TEXT
|
|
52
|
-
|
|
47
|
+
INITIAL_STATE_HANDLER(text, text::Text)
|
|
53
48
|
#endif
|
|
54
49
|
#ifdef USE_SELECT
|
|
55
|
-
|
|
50
|
+
INITIAL_STATE_HANDLER(select, select::Select)
|
|
56
51
|
#endif
|
|
57
52
|
#ifdef USE_LOCK
|
|
58
|
-
|
|
53
|
+
INITIAL_STATE_HANDLER(lock, lock::Lock)
|
|
59
54
|
#endif
|
|
60
55
|
#ifdef USE_VALVE
|
|
61
|
-
|
|
56
|
+
INITIAL_STATE_HANDLER(valve, valve::Valve)
|
|
62
57
|
#endif
|
|
63
58
|
#ifdef USE_MEDIA_PLAYER
|
|
64
|
-
|
|
65
|
-
return this->client_->send_media_player_state(media_player);
|
|
66
|
-
}
|
|
59
|
+
INITIAL_STATE_HANDLER(media_player, media_player::MediaPlayer)
|
|
67
60
|
#endif
|
|
68
61
|
#ifdef USE_ALARM_CONTROL_PANEL
|
|
69
|
-
|
|
70
|
-
return this->client_->send_alarm_control_panel_state(a_alarm_control_panel);
|
|
71
|
-
}
|
|
62
|
+
INITIAL_STATE_HANDLER(alarm_control_panel, alarm_control_panel::AlarmControlPanel)
|
|
72
63
|
#endif
|
|
73
64
|
#ifdef USE_UPDATE
|
|
74
|
-
|
|
65
|
+
INITIAL_STATE_HANDLER(update, update::UpdateEntity)
|
|
75
66
|
#endif
|
|
67
|
+
|
|
68
|
+
// Special cases (button and event) are already defined inline in subscribe_state.h
|
|
69
|
+
|
|
76
70
|
InitialStateIterator::InitialStateIterator(APIConnection *client) : client_(client) {}
|
|
77
71
|
|
|
78
72
|
} // namespace api
|
|
@@ -10,71 +10,78 @@ namespace api {
|
|
|
10
10
|
|
|
11
11
|
class APIConnection;
|
|
12
12
|
|
|
13
|
+
// Macro for generating InitialStateIterator handlers
|
|
14
|
+
// Calls send_*_state
|
|
15
|
+
#define INITIAL_STATE_HANDLER(entity_type, EntityClass) \
|
|
16
|
+
bool InitialStateIterator::on_##entity_type(EntityClass *entity) { /* NOLINT(bugprone-macro-parentheses) */ \
|
|
17
|
+
return this->client_->send_##entity_type##_state(entity); \
|
|
18
|
+
}
|
|
19
|
+
|
|
13
20
|
class InitialStateIterator : public ComponentIterator {
|
|
14
21
|
public:
|
|
15
22
|
InitialStateIterator(APIConnection *client);
|
|
16
23
|
#ifdef USE_BINARY_SENSOR
|
|
17
|
-
bool on_binary_sensor(binary_sensor::BinarySensor *
|
|
24
|
+
bool on_binary_sensor(binary_sensor::BinarySensor *entity) override;
|
|
18
25
|
#endif
|
|
19
26
|
#ifdef USE_COVER
|
|
20
|
-
bool on_cover(cover::Cover *
|
|
27
|
+
bool on_cover(cover::Cover *entity) override;
|
|
21
28
|
#endif
|
|
22
29
|
#ifdef USE_FAN
|
|
23
|
-
bool on_fan(fan::Fan *
|
|
30
|
+
bool on_fan(fan::Fan *entity) override;
|
|
24
31
|
#endif
|
|
25
32
|
#ifdef USE_LIGHT
|
|
26
|
-
bool on_light(light::LightState *
|
|
33
|
+
bool on_light(light::LightState *entity) override;
|
|
27
34
|
#endif
|
|
28
35
|
#ifdef USE_SENSOR
|
|
29
|
-
bool on_sensor(sensor::Sensor *
|
|
36
|
+
bool on_sensor(sensor::Sensor *entity) override;
|
|
30
37
|
#endif
|
|
31
38
|
#ifdef USE_SWITCH
|
|
32
|
-
bool on_switch(switch_::Switch *
|
|
39
|
+
bool on_switch(switch_::Switch *entity) override;
|
|
33
40
|
#endif
|
|
34
41
|
#ifdef USE_BUTTON
|
|
35
42
|
bool on_button(button::Button *button) override { return true; };
|
|
36
43
|
#endif
|
|
37
44
|
#ifdef USE_TEXT_SENSOR
|
|
38
|
-
bool on_text_sensor(text_sensor::TextSensor *
|
|
45
|
+
bool on_text_sensor(text_sensor::TextSensor *entity) override;
|
|
39
46
|
#endif
|
|
40
47
|
#ifdef USE_CLIMATE
|
|
41
|
-
bool on_climate(climate::Climate *
|
|
48
|
+
bool on_climate(climate::Climate *entity) override;
|
|
42
49
|
#endif
|
|
43
50
|
#ifdef USE_NUMBER
|
|
44
|
-
bool on_number(number::Number *
|
|
51
|
+
bool on_number(number::Number *entity) override;
|
|
45
52
|
#endif
|
|
46
53
|
#ifdef USE_DATETIME_DATE
|
|
47
|
-
bool on_date(datetime::DateEntity *
|
|
54
|
+
bool on_date(datetime::DateEntity *entity) override;
|
|
48
55
|
#endif
|
|
49
56
|
#ifdef USE_DATETIME_TIME
|
|
50
|
-
bool on_time(datetime::TimeEntity *
|
|
57
|
+
bool on_time(datetime::TimeEntity *entity) override;
|
|
51
58
|
#endif
|
|
52
59
|
#ifdef USE_DATETIME_DATETIME
|
|
53
|
-
bool on_datetime(datetime::DateTimeEntity *
|
|
60
|
+
bool on_datetime(datetime::DateTimeEntity *entity) override;
|
|
54
61
|
#endif
|
|
55
62
|
#ifdef USE_TEXT
|
|
56
|
-
bool on_text(text::Text *
|
|
63
|
+
bool on_text(text::Text *entity) override;
|
|
57
64
|
#endif
|
|
58
65
|
#ifdef USE_SELECT
|
|
59
|
-
bool on_select(select::Select *
|
|
66
|
+
bool on_select(select::Select *entity) override;
|
|
60
67
|
#endif
|
|
61
68
|
#ifdef USE_LOCK
|
|
62
|
-
bool on_lock(lock::Lock *
|
|
69
|
+
bool on_lock(lock::Lock *entity) override;
|
|
63
70
|
#endif
|
|
64
71
|
#ifdef USE_VALVE
|
|
65
|
-
bool on_valve(valve::Valve *
|
|
72
|
+
bool on_valve(valve::Valve *entity) override;
|
|
66
73
|
#endif
|
|
67
74
|
#ifdef USE_MEDIA_PLAYER
|
|
68
|
-
bool on_media_player(media_player::MediaPlayer *
|
|
75
|
+
bool on_media_player(media_player::MediaPlayer *entity) override;
|
|
69
76
|
#endif
|
|
70
77
|
#ifdef USE_ALARM_CONTROL_PANEL
|
|
71
|
-
bool on_alarm_control_panel(alarm_control_panel::AlarmControlPanel *
|
|
78
|
+
bool on_alarm_control_panel(alarm_control_panel::AlarmControlPanel *entity) override;
|
|
72
79
|
#endif
|
|
73
80
|
#ifdef USE_EVENT
|
|
74
81
|
bool on_event(event::Event *event) override { return true; };
|
|
75
82
|
#endif
|
|
76
83
|
#ifdef USE_UPDATE
|
|
77
|
-
bool on_update(update::UpdateEntity *
|
|
84
|
+
bool on_update(update::UpdateEntity *entity) override;
|
|
78
85
|
#endif
|
|
79
86
|
bool completed() { return this->state_ == IteratorState::NONE; }
|
|
80
87
|
|
|
@@ -50,7 +50,6 @@ class AS5600Component : public Component, public i2c::I2CDevice {
|
|
|
50
50
|
void setup() override;
|
|
51
51
|
void dump_config() override;
|
|
52
52
|
/// HARDWARE_LATE setup priority
|
|
53
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
54
53
|
|
|
55
54
|
// configuration setters
|
|
56
55
|
void set_dir_pin(InternalGPIOPin *pin) { this->dir_pin_ = pin; }
|
|
@@ -5,6 +5,7 @@ from esphome.const import (
|
|
|
5
5
|
PLATFORM_BK72XX,
|
|
6
6
|
PLATFORM_ESP32,
|
|
7
7
|
PLATFORM_ESP8266,
|
|
8
|
+
PLATFORM_LN882X,
|
|
8
9
|
PLATFORM_RTL87XX,
|
|
9
10
|
)
|
|
10
11
|
from esphome.core import CORE, coroutine_with_priority
|
|
@@ -14,15 +15,23 @@ CODEOWNERS = ["@OttoWinter"]
|
|
|
14
15
|
CONFIG_SCHEMA = cv.All(
|
|
15
16
|
cv.Schema({}),
|
|
16
17
|
cv.only_with_arduino,
|
|
17
|
-
cv.only_on(
|
|
18
|
+
cv.only_on(
|
|
19
|
+
[
|
|
20
|
+
PLATFORM_ESP32,
|
|
21
|
+
PLATFORM_ESP8266,
|
|
22
|
+
PLATFORM_BK72XX,
|
|
23
|
+
PLATFORM_LN882X,
|
|
24
|
+
PLATFORM_RTL87XX,
|
|
25
|
+
]
|
|
26
|
+
),
|
|
18
27
|
)
|
|
19
28
|
|
|
20
29
|
|
|
21
30
|
@coroutine_with_priority(200.0)
|
|
22
31
|
async def to_code(config):
|
|
23
32
|
if CORE.is_esp32 or CORE.is_libretiny:
|
|
24
|
-
# https://github.com/
|
|
25
|
-
cg.add_library("
|
|
33
|
+
# https://github.com/ESP32Async/AsyncTCP
|
|
34
|
+
cg.add_library("ESP32Async/AsyncTCP", "3.4.4")
|
|
26
35
|
elif CORE.is_esp8266:
|
|
27
|
-
# https://github.com/
|
|
28
|
-
cg.add_library("
|
|
36
|
+
# https://github.com/ESP32Async/ESPAsyncTCP
|
|
37
|
+
cg.add_library("ESP32Async/ESPAsyncTCP", "2.0.0")
|
|
@@ -25,7 +25,6 @@ class ATCMiThermometer : public Component, public esp32_ble_tracker::ESPBTDevice
|
|
|
25
25
|
|
|
26
26
|
bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override;
|
|
27
27
|
void dump_config() override;
|
|
28
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
29
28
|
void set_temperature(sensor::Sensor *temperature) { temperature_ = temperature; }
|
|
30
29
|
void set_humidity(sensor::Sensor *humidity) { humidity_ = humidity; }
|
|
31
30
|
void set_battery_level(sensor::Sensor *battery_level) { battery_level_ = battery_level; }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#include "atm90e32.h"
|
|
2
2
|
#include <cinttypes>
|
|
3
3
|
#include <cmath>
|
|
4
|
+
#include <numbers>
|
|
4
5
|
#include "esphome/core/log.h"
|
|
5
6
|
|
|
6
7
|
namespace esphome {
|
|
@@ -848,7 +849,7 @@ uint16_t ATM90E32Component::calculate_voltage_threshold(int line_freq, uint16_t
|
|
|
848
849
|
float nominal_voltage = (line_freq == 60) ? 120.0f : 220.0f;
|
|
849
850
|
float target_voltage = nominal_voltage * multiplier;
|
|
850
851
|
|
|
851
|
-
float peak_01v = target_voltage * 100.0f * std::
|
|
852
|
+
float peak_01v = target_voltage * 100.0f * std::numbers::sqrt2_v<float>; // convert RMS → peak, scale to 0.01V
|
|
852
853
|
float divider = (2.0f * ugain) / 32768.0f;
|
|
853
854
|
|
|
854
855
|
float threshold = peak_01v / divider;
|
|
@@ -312,7 +312,7 @@ FileDecoderState AudioDecoder::decode_mp3_() {
|
|
|
312
312
|
if (err) {
|
|
313
313
|
switch (err) {
|
|
314
314
|
case esp_audio_libs::helix_decoder::ERR_MP3_OUT_OF_MEMORY:
|
|
315
|
-
|
|
315
|
+
[[fallthrough]];
|
|
316
316
|
case esp_audio_libs::helix_decoder::ERR_MP3_NULL_POINTER:
|
|
317
317
|
return FileDecoderState::FAILED;
|
|
318
318
|
break;
|