esphome 2025.6.3__py3-none-any.whl → 2025.7.0b2__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 +8 -2
- 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/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/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 +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.h +1 -0
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/http_request/update/http_request_update.cpp +28 -9
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +3 -9
- esphome/components/hydreon_rgxx/sensor.py +1 -1
- esphome/components/i2c/__init__.py +23 -11
- esphome/components/i2c/i2c_bus.h +8 -1
- esphome/components/i2c/i2c_bus_arduino.cpp +4 -3
- esphome/components/i2c/i2c_bus_arduino.h +6 -3
- esphome/components/i2c/i2c_bus_esp_idf.h +5 -3
- esphome/components/i2c_device/i2c_device.h +0 -1
- esphome/components/i2s_audio/__init__.py +2 -10
- esphome/components/i2s_audio/i2s_audio.cpp +1 -5
- esphome/components/i2s_audio/media_player/__init__.py +2 -2
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +2 -2
- esphome/components/iaqcore/iaqcore.h +0 -2
- esphome/components/image/__init__.py +123 -24
- esphome/components/improv_serial/improv_serial_component.cpp +0 -4
- esphome/components/ina219/ina219.cpp +7 -0
- esphome/components/ina219/ina219.h +1 -0
- esphome/components/ina260/ina260.h +0 -2
- esphome/components/inkbird_ibsth1_mini/inkbird_ibsth1_mini.h +0 -1
- esphome/components/inkplate6/display.py +15 -0
- esphome/components/inkplate6/inkplate.cpp +2 -2
- esphome/components/integration/integration_sensor.h +0 -1
- esphome/components/internal_temperature/internal_temperature.cpp +8 -27
- esphome/components/internal_temperature/sensor.py +0 -26
- esphome/components/interval/interval.h +0 -2
- esphome/components/ld2410/button/__init__.py +3 -3
- esphome/components/ld2410/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2410/button/{reset_button.h → factory_reset_button.h} +2 -2
- esphome/components/ld2410/ld2410.cpp +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/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 +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_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 +132 -47
- 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 +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.h +0 -1
- esphome/components/sfa30/sfa30.h +0 -1
- esphome/components/sgp30/sgp30.h +0 -1
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/stm32flash.cpp +1 -2
- esphome/components/sht4x/sht4x.h +0 -1
- esphome/components/sm300d2/sm300d2.h +0 -2
- esphome/components/smt100/sensor.py +8 -4
- esphome/components/smt100/smt100.cpp +5 -5
- esphome/components/smt100/smt100.h +3 -3
- esphome/components/sn74hc595/__init__.py +1 -1
- esphome/components/sn74hc595/sn74hc595.cpp +5 -4
- esphome/components/sntp/sntp_component.cpp +9 -3
- esphome/components/sntp/time.py +2 -0
- esphome/components/socket/__init__.py +17 -0
- esphome/components/spi/__init__.py +27 -6
- esphome/components/spi/spi.cpp +3 -2
- esphome/components/spi/spi.h +9 -3
- esphome/components/spi/spi_arduino.cpp +3 -5
- esphome/components/spi/spi_esp_idf.cpp +40 -21
- esphome/components/spi_led_strip/spi_led_strip.cpp +1 -1
- esphome/components/sps30/sps30.h +0 -1
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +0 -4
- esphome/components/status/status_binary_sensor.h +0 -2
- esphome/components/substitutions/__init__.py +76 -19
- esphome/components/substitutions/jinja.py +99 -0
- esphome/components/sun/sun.cpp +3 -4
- esphome/components/switch/__init__.py +5 -2
- esphome/components/switch/binary_sensor/switch_binary_sensor.h +0 -1
- esphome/components/sx126x/__init__.py +317 -0
- esphome/components/sx126x/automation.h +62 -0
- esphome/components/sx126x/packet_transport/__init__.py +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.cpp +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.h +25 -0
- esphome/components/sx126x/sx126x.cpp +523 -0
- esphome/components/sx126x/sx126x.h +140 -0
- esphome/components/sx126x/sx126x_reg.h +163 -0
- esphome/components/sx127x/__init__.py +325 -0
- esphome/components/sx127x/automation.h +62 -0
- esphome/components/sx127x/packet_transport/__init__.py +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.cpp +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.h +25 -0
- esphome/components/sx127x/sx127x.cpp +498 -0
- esphome/components/sx127x/sx127x.h +128 -0
- esphome/components/sx127x/sx127x_reg.h +295 -0
- esphome/components/syslog/esphome_syslog.cpp +5 -3
- esphome/components/syslog/esphome_syslog.h +1 -1
- esphome/components/tca9555/__init__.py +1 -1
- esphome/components/template/binary_sensor/template_binary_sensor.cpp +1 -9
- esphome/components/text/__init__.py +5 -2
- esphome/components/text_sensor/__init__.py +5 -2
- esphome/components/thermostat/thermostat_climate.cpp +34 -31
- esphome/components/thermostat/thermostat_climate.h +43 -39
- esphome/components/time/__init__.py +16 -2
- esphome/components/time/real_time_clock.cpp +4 -0
- esphome/components/time/real_time_clock.h +5 -1
- esphome/components/tlc5971/tlc5971.cpp +4 -1
- esphome/components/tmp1075/tmp1075.h +0 -2
- esphome/components/tof10120/tof10120_sensor.h +0 -1
- esphome/components/tormatic/tormatic_cover.h +0 -1
- esphome/components/total_daily_energy/total_daily_energy.h +0 -1
- esphome/components/tsl2591/tsl2591.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.h +0 -1
- esphome/components/ttp229_lsf/ttp229_lsf.h +0 -1
- esphome/components/tx20/tx20.cpp +2 -2
- esphome/components/uart/__init__.py +18 -0
- esphome/components/uart/uart_component_esp_idf.cpp +0 -4
- esphome/components/update/__init__.py +5 -2
- esphome/components/update/update_entity.h +8 -0
- esphome/components/usb_host/__init__.py +5 -2
- esphome/components/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 +305 -427
- esphome/components/web_server/web_server.h +33 -23
- esphome/components/web_server/web_server_v1.cpp +4 -5
- esphome/components/web_server_base/__init__.py +5 -2
- esphome/components/web_server_base/web_server_base.cpp +2 -94
- esphome/components/web_server_base/web_server_base.h +5 -25
- esphome/components/web_server_idf/multipart.cpp +254 -0
- esphome/components/web_server_idf/multipart.h +86 -0
- esphome/components/web_server_idf/utils.cpp +32 -0
- esphome/components/web_server_idf/utils.h +10 -0
- esphome/components/web_server_idf/web_server_idf.cpp +162 -16
- esphome/components/web_server_idf/web_server_idf.h +11 -10
- esphome/components/wiegand/wiegand.cpp +2 -2
- esphome/components/wifi/__init__.py +18 -0
- esphome/components/wifi/wifi_component.cpp +17 -22
- esphome/components/wifi/wifi_component.h +27 -23
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +52 -59
- esphome/components/wifi/wifi_component_esp8266.cpp +46 -46
- esphome/components/wifi/wifi_component_esp_idf.cpp +35 -36
- esphome/components/wifi/wifi_component_libretiny.cpp +26 -27
- esphome/components/wifi/wifi_component_pico_w.cpp +3 -3
- esphome/components/wifi_info/wifi_info_text_sensor.cpp +6 -6
- esphome/components/wireguard/__init__.py +2 -11
- esphome/components/xiaomi_ble/xiaomi_ble.cpp +13 -1
- esphome/components/xiaomi_ble/xiaomi_ble.h +1 -0
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.h +0 -1
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h +0 -1
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.h +0 -1
- esphome/components/xiaomi_cgpr1/xiaomi_cgpr1.h +0 -1
- esphome/components/xiaomi_gcls002/xiaomi_gcls002.h +0 -1
- esphome/components/xiaomi_hhccjcy01/xiaomi_hhccjcy01.h +0 -1
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.h +0 -1
- esphome/components/xiaomi_hhccpot002/xiaomi_hhccpot002.h +0 -1
- esphome/components/xiaomi_jqjcy01ym/xiaomi_jqjcy01ym.h +0 -1
- esphome/components/xiaomi_lywsd02/xiaomi_lywsd02.h +0 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.h +0 -1
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.h +0 -1
- esphome/components/xiaomi_lywsdcgq/xiaomi_lywsdcgq.h +0 -1
- esphome/components/xiaomi_mhoc303/xiaomi_mhoc303.h +0 -1
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.h +0 -1
- esphome/components/xiaomi_miscale/xiaomi_miscale.h +0 -1
- esphome/components/xiaomi_mjyd02yla/xiaomi_mjyd02yla.h +0 -1
- esphome/components/xiaomi_mue4094rt/xiaomi_mue4094rt.h +0 -1
- esphome/components/xiaomi_rtcgq02lm/xiaomi_rtcgq02lm.h +0 -1
- esphome/components/xiaomi_wx08zm/xiaomi_wx08zm.h +0 -1
- esphome/components/xiaomi_xmwsdj04mmc/__init__.py +0 -0
- esphome/components/xiaomi_xmwsdj04mmc/sensor.py +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.cpp +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.h +36 -0
- esphome/components/zio_ultrasonic/zio_ultrasonic.h +0 -2
- esphome/components/zyaura/zyaura.h +0 -1
- esphome/config.py +88 -22
- esphome/config_helpers.py +74 -1
- esphome/config_validation.py +12 -1
- esphome/const.py +65 -10
- esphome/core/__init__.py +18 -2
- esphome/core/application.cpp +163 -10
- esphome/core/application.h +145 -165
- esphome/core/area.h +19 -0
- esphome/core/automation.h +58 -9
- esphome/core/color.cpp +3 -5
- esphome/core/color.h +16 -16
- esphome/core/component.cpp +151 -18
- esphome/core/component.h +98 -4
- esphome/core/component_iterator.cpp +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 +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 +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/wizard.py +17 -4
- esphome/writer.py +21 -3
- esphome/yaml_util.py +0 -2
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/METADATA +10 -9
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/RECORD +597 -538
- 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.3.dist-info → esphome-2025.7.0b2.dist-info}/WHEEL +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/entry_points.txt +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import esphome.codegen as cg
|
|
2
|
+
import esphome.config_validation as cv
|
|
3
|
+
from esphome.components import i2c, sensor
|
|
4
|
+
from esphome.const import (
|
|
5
|
+
CONF_ID,
|
|
6
|
+
CONF_TEMPERATURE,
|
|
7
|
+
CONF_PRESSURE,
|
|
8
|
+
STATE_CLASS_MEASUREMENT,
|
|
9
|
+
UNIT_CELSIUS,
|
|
10
|
+
UNIT_HECTOPASCAL,
|
|
11
|
+
ICON_THERMOMETER,
|
|
12
|
+
DEVICE_CLASS_TEMPERATURE,
|
|
13
|
+
DEVICE_CLASS_PRESSURE,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
CODEOWNERS = ["@nagisa"]
|
|
17
|
+
DEPENDENCIES = ["i2c"]
|
|
18
|
+
|
|
19
|
+
lps22 = cg.esphome_ns.namespace("lps22")
|
|
20
|
+
|
|
21
|
+
LPS22Component = lps22.class_("LPS22Component", cg.PollingComponent, i2c.I2CDevice)
|
|
22
|
+
|
|
23
|
+
CONFIG_SCHEMA = (
|
|
24
|
+
cv.Schema(
|
|
25
|
+
{
|
|
26
|
+
cv.GenerateID(): cv.declare_id(LPS22Component),
|
|
27
|
+
cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema(
|
|
28
|
+
unit_of_measurement=UNIT_CELSIUS,
|
|
29
|
+
icon=ICON_THERMOMETER,
|
|
30
|
+
accuracy_decimals=2,
|
|
31
|
+
device_class=DEVICE_CLASS_TEMPERATURE,
|
|
32
|
+
state_class=STATE_CLASS_MEASUREMENT,
|
|
33
|
+
),
|
|
34
|
+
cv.Optional(CONF_PRESSURE): sensor.sensor_schema(
|
|
35
|
+
unit_of_measurement=UNIT_HECTOPASCAL,
|
|
36
|
+
accuracy_decimals=2,
|
|
37
|
+
device_class=DEVICE_CLASS_PRESSURE,
|
|
38
|
+
state_class=STATE_CLASS_MEASUREMENT,
|
|
39
|
+
),
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
.extend(cv.polling_component_schema("60s"))
|
|
43
|
+
.extend(i2c.i2c_device_schema(0x5D)) # can also be 0x5C
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
async def to_code(config):
|
|
48
|
+
var = cg.new_Pvariable(config[CONF_ID])
|
|
49
|
+
await cg.register_component(var, config)
|
|
50
|
+
await i2c.register_i2c_device(var, config)
|
|
51
|
+
|
|
52
|
+
if temperature_config := config.get(CONF_TEMPERATURE):
|
|
53
|
+
sens = await sensor.new_sensor(temperature_config)
|
|
54
|
+
cg.add(var.set_temperature_sensor(sens))
|
|
55
|
+
|
|
56
|
+
if pressure_config := config.get(CONF_PRESSURE):
|
|
57
|
+
sens = await sensor.new_sensor(pressure_config)
|
|
58
|
+
cg.add(var.set_pressure_sensor(sens))
|
|
@@ -44,7 +44,6 @@ enum LTR390RESOLUTION {
|
|
|
44
44
|
|
|
45
45
|
class LTR390Component : public PollingComponent, public i2c::I2CDevice {
|
|
46
46
|
public:
|
|
47
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
48
47
|
void setup() override;
|
|
49
48
|
void dump_config() override;
|
|
50
49
|
void update() override;
|
|
@@ -25,7 +25,6 @@ class LTRAlsPs501Component : public PollingComponent, public i2c::I2CDevice {
|
|
|
25
25
|
//
|
|
26
26
|
// EspHome framework functions
|
|
27
27
|
//
|
|
28
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
29
28
|
void setup() override;
|
|
30
29
|
void dump_config() override;
|
|
31
30
|
void update() override;
|
|
@@ -25,7 +25,6 @@ class LTRAlsPsComponent : public PollingComponent, public i2c::I2CDevice {
|
|
|
25
25
|
//
|
|
26
26
|
// EspHome framework functions
|
|
27
27
|
//
|
|
28
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
29
28
|
void setup() override;
|
|
30
29
|
void dump_config() override;
|
|
31
30
|
void update() override;
|
|
@@ -21,7 +21,7 @@ from esphome.core.config import StartupTrigger
|
|
|
21
21
|
from esphome.schema_extractors import SCHEMA_EXTRACT
|
|
22
22
|
|
|
23
23
|
from . import defines as df, lv_validation as lvalid
|
|
24
|
-
from .defines import CONF_TIME_FORMAT, LV_GRAD_DIR
|
|
24
|
+
from .defines import CONF_TIME_FORMAT, LV_GRAD_DIR, TYPE_GRID
|
|
25
25
|
from .helpers import add_lv_use, requires_component, validate_printf
|
|
26
26
|
from .lv_validation import lv_color, lv_font, lv_gradient, lv_image, opacity
|
|
27
27
|
from .lvcode import LvglComponent, lv_event_t_ptr
|
|
@@ -349,7 +349,60 @@ def obj_schema(widget_type: WidgetType):
|
|
|
349
349
|
)
|
|
350
350
|
|
|
351
351
|
|
|
352
|
+
def _validate_grid_layout(config):
|
|
353
|
+
layout = config[df.CONF_LAYOUT]
|
|
354
|
+
rows = len(layout[df.CONF_GRID_ROWS])
|
|
355
|
+
columns = len(layout[df.CONF_GRID_COLUMNS])
|
|
356
|
+
used_cells = [[None] * columns for _ in range(rows)]
|
|
357
|
+
for index, widget in enumerate(config[df.CONF_WIDGETS]):
|
|
358
|
+
_, w = next(iter(widget.items()))
|
|
359
|
+
if (df.CONF_GRID_CELL_COLUMN_POS in w) != (df.CONF_GRID_CELL_ROW_POS in w):
|
|
360
|
+
# pylint: disable=raise-missing-from
|
|
361
|
+
raise cv.Invalid(
|
|
362
|
+
"Both row and column positions must be specified, or both omitted",
|
|
363
|
+
[df.CONF_WIDGETS, index],
|
|
364
|
+
)
|
|
365
|
+
if df.CONF_GRID_CELL_ROW_POS in w:
|
|
366
|
+
row = w[df.CONF_GRID_CELL_ROW_POS]
|
|
367
|
+
column = w[df.CONF_GRID_CELL_COLUMN_POS]
|
|
368
|
+
else:
|
|
369
|
+
try:
|
|
370
|
+
row, column = next(
|
|
371
|
+
(r_idx, c_idx)
|
|
372
|
+
for r_idx, row in enumerate(used_cells)
|
|
373
|
+
for c_idx, value in enumerate(row)
|
|
374
|
+
if value is None
|
|
375
|
+
)
|
|
376
|
+
except StopIteration:
|
|
377
|
+
# pylint: disable=raise-missing-from
|
|
378
|
+
raise cv.Invalid(
|
|
379
|
+
"No free cells available in grid layout", [df.CONF_WIDGETS, index]
|
|
380
|
+
)
|
|
381
|
+
w[df.CONF_GRID_CELL_ROW_POS] = row
|
|
382
|
+
w[df.CONF_GRID_CELL_COLUMN_POS] = column
|
|
383
|
+
|
|
384
|
+
for i in range(w[df.CONF_GRID_CELL_ROW_SPAN]):
|
|
385
|
+
for j in range(w[df.CONF_GRID_CELL_COLUMN_SPAN]):
|
|
386
|
+
if row + i >= rows or column + j >= columns:
|
|
387
|
+
# pylint: disable=raise-missing-from
|
|
388
|
+
raise cv.Invalid(
|
|
389
|
+
f"Cell at {row}/{column} span {w[df.CONF_GRID_CELL_ROW_SPAN]}x{w[df.CONF_GRID_CELL_COLUMN_SPAN]} "
|
|
390
|
+
f"exceeds grid size {rows}x{columns}",
|
|
391
|
+
[df.CONF_WIDGETS, index],
|
|
392
|
+
)
|
|
393
|
+
if used_cells[row + i][column + j] is not None:
|
|
394
|
+
# pylint: disable=raise-missing-from
|
|
395
|
+
raise cv.Invalid(
|
|
396
|
+
f"Cell span {row + i}/{column + j} already occupied by widget at index {used_cells[row + i][column + j]}",
|
|
397
|
+
[df.CONF_WIDGETS, index],
|
|
398
|
+
)
|
|
399
|
+
used_cells[row + i][column + j] = index
|
|
400
|
+
|
|
401
|
+
return config
|
|
402
|
+
|
|
403
|
+
|
|
352
404
|
LAYOUT_SCHEMAS = {}
|
|
405
|
+
LAYOUT_VALIDATORS = {TYPE_GRID: _validate_grid_layout}
|
|
353
406
|
|
|
354
407
|
ALIGN_TO_SCHEMA = {
|
|
355
408
|
cv.Optional(df.CONF_ALIGN_TO): cv.Schema(
|
|
@@ -402,8 +455,8 @@ LAYOUT_SCHEMA = {
|
|
|
402
455
|
}
|
|
403
456
|
|
|
404
457
|
GRID_CELL_SCHEMA = {
|
|
405
|
-
cv.
|
|
406
|
-
cv.
|
|
458
|
+
cv.Optional(df.CONF_GRID_CELL_ROW_POS): cv.positive_int,
|
|
459
|
+
cv.Optional(df.CONF_GRID_CELL_COLUMN_POS): cv.positive_int,
|
|
407
460
|
cv.Optional(df.CONF_GRID_CELL_ROW_SPAN, default=1): cv.positive_int,
|
|
408
461
|
cv.Optional(df.CONF_GRID_CELL_COLUMN_SPAN, default=1): cv.positive_int,
|
|
409
462
|
cv.Optional(df.CONF_GRID_CELL_X_ALIGN): grid_alignments,
|
|
@@ -454,9 +507,13 @@ def container_validator(schema, widget_type: WidgetType):
|
|
|
454
507
|
"""
|
|
455
508
|
|
|
456
509
|
def validator(value):
|
|
457
|
-
result = schema
|
|
458
510
|
if w_sch := widget_type.schema:
|
|
459
|
-
|
|
511
|
+
if isinstance(w_sch, dict):
|
|
512
|
+
w_sch = cv.Schema(w_sch)
|
|
513
|
+
# order is important here to preserve extras
|
|
514
|
+
result = w_sch.extend(schema)
|
|
515
|
+
else:
|
|
516
|
+
result = schema
|
|
460
517
|
ltype = df.TYPE_NONE
|
|
461
518
|
if value and (layout := value.get(df.CONF_LAYOUT)):
|
|
462
519
|
if not isinstance(layout, dict):
|
|
@@ -470,7 +527,10 @@ def container_validator(schema, widget_type: WidgetType):
|
|
|
470
527
|
result = result.extend(
|
|
471
528
|
LAYOUT_SCHEMAS.get(ltype.lower(), LAYOUT_SCHEMAS[df.TYPE_NONE])
|
|
472
529
|
)
|
|
473
|
-
|
|
530
|
+
value = result(value)
|
|
531
|
+
if layout_validator := LAYOUT_VALIDATORS.get(ltype):
|
|
532
|
+
value = layout_validator(value)
|
|
533
|
+
return value
|
|
474
534
|
|
|
475
535
|
return validator
|
|
476
536
|
|
|
@@ -3,7 +3,6 @@ import esphome.codegen as cg
|
|
|
3
3
|
import esphome.config_validation as cv
|
|
4
4
|
from esphome.const import CONF_ID
|
|
5
5
|
from esphome.core import ID
|
|
6
|
-
from esphome.cpp_generator import MockObj
|
|
7
6
|
|
|
8
7
|
from .defines import (
|
|
9
8
|
CONF_STYLE_DEFINITIONS,
|
|
@@ -13,12 +12,13 @@ from .defines import (
|
|
|
13
12
|
literal,
|
|
14
13
|
)
|
|
15
14
|
from .helpers import add_lv_use
|
|
16
|
-
from .lvcode import LambdaContext, LocalVariable, lv
|
|
15
|
+
from .lvcode import LambdaContext, LocalVariable, lv
|
|
17
16
|
from .schemas import ALL_STYLES, FULL_STYLE_SCHEMA, STYLE_REMAP
|
|
18
|
-
from .types import ObjUpdateAction,
|
|
17
|
+
from .types import ObjUpdateAction, lv_obj_t, lv_style_t
|
|
19
18
|
from .widgets import (
|
|
20
19
|
Widget,
|
|
21
20
|
add_widgets,
|
|
21
|
+
collect_parts,
|
|
22
22
|
set_obj_properties,
|
|
23
23
|
theme_widget_map,
|
|
24
24
|
wait_for_widgets,
|
|
@@ -37,12 +37,18 @@ async def style_set(svar, style):
|
|
|
37
37
|
lv.call(f"style_set_{remapped_prop}", svar, literal(value))
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
async def create_style(style, id_name):
|
|
41
|
+
style_id = ID(id_name, True, lv_style_t)
|
|
42
|
+
svar = cg.new_Pvariable(style_id)
|
|
43
|
+
lv.style_init(svar)
|
|
44
|
+
await style_set(svar, style)
|
|
45
|
+
return svar
|
|
46
|
+
|
|
47
|
+
|
|
40
48
|
async def styles_to_code(config):
|
|
41
49
|
"""Convert styles to C__ code."""
|
|
42
50
|
for style in config.get(CONF_STYLE_DEFINITIONS, ()):
|
|
43
|
-
|
|
44
|
-
lv.style_init(svar)
|
|
45
|
-
await style_set(svar, style)
|
|
51
|
+
await create_style(style, style[CONF_ID].id)
|
|
46
52
|
|
|
47
53
|
|
|
48
54
|
@automation.register_action(
|
|
@@ -68,16 +74,18 @@ async def theme_to_code(config):
|
|
|
68
74
|
if theme := config.get(CONF_THEME):
|
|
69
75
|
add_lv_use(CONF_THEME)
|
|
70
76
|
for w_name, style in theme.items():
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
# Work around Python 3.10 bug with nested async comprehensions
|
|
78
|
+
# With Python 3.11 this could be simplified
|
|
79
|
+
styles = {}
|
|
80
|
+
for part, states in collect_parts(style).items():
|
|
81
|
+
styles[part] = {
|
|
82
|
+
state: await create_style(
|
|
83
|
+
props,
|
|
84
|
+
"_lv_theme_style_" + w_name + "_" + part + "_" + state,
|
|
85
|
+
)
|
|
86
|
+
for state, props in states.items()
|
|
87
|
+
}
|
|
88
|
+
theme_widget_map[w_name] = styles
|
|
81
89
|
|
|
82
90
|
|
|
83
91
|
async def add_top_layer(lv_component, config):
|
|
@@ -6,7 +6,7 @@ from esphome.config_validation import Invalid
|
|
|
6
6
|
from esphome.const import CONF_DEFAULT, CONF_GROUP, CONF_ID, CONF_STATE, CONF_TYPE
|
|
7
7
|
from esphome.core import ID, TimePeriod
|
|
8
8
|
from esphome.coroutine import FakeAwaitable
|
|
9
|
-
from esphome.cpp_generator import
|
|
9
|
+
from esphome.cpp_generator import MockObj
|
|
10
10
|
|
|
11
11
|
from ..defines import (
|
|
12
12
|
CONF_FLEX_ALIGN_CROSS,
|
|
@@ -453,7 +453,17 @@ async def widget_to_code(w_cnfig, w_type: WidgetType, parent):
|
|
|
453
453
|
|
|
454
454
|
w = Widget.create(wid, var, spec, w_cnfig)
|
|
455
455
|
if theme := theme_widget_map.get(w_type):
|
|
456
|
-
|
|
456
|
+
for part, states in theme.items():
|
|
457
|
+
part = "LV_PART_" + part.upper()
|
|
458
|
+
for state, style in states.items():
|
|
459
|
+
state = "LV_STATE_" + state.upper()
|
|
460
|
+
if state == "LV_STATE_DEFAULT":
|
|
461
|
+
lv_state = literal(part)
|
|
462
|
+
elif part == "LV_PART_MAIN":
|
|
463
|
+
lv_state = literal(state)
|
|
464
|
+
else:
|
|
465
|
+
lv_state = join_enums((state, part))
|
|
466
|
+
lv.obj_add_style(w.obj, style, lv_state)
|
|
457
467
|
await set_obj_properties(w, w_cnfig)
|
|
458
468
|
await add_widgets(w, w_cnfig)
|
|
459
469
|
await spec.to_code(w, w_cnfig)
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import esphome.config_validation as cv
|
|
2
2
|
from esphome.const import CONF_MAX_VALUE, CONF_MIN_VALUE, CONF_MODE, CONF_VALUE
|
|
3
3
|
|
|
4
|
-
from ..defines import
|
|
5
|
-
|
|
4
|
+
from ..defines import (
|
|
5
|
+
BAR_MODES,
|
|
6
|
+
CONF_ANIMATED,
|
|
7
|
+
CONF_INDICATOR,
|
|
8
|
+
CONF_MAIN,
|
|
9
|
+
CONF_START_VALUE,
|
|
10
|
+
literal,
|
|
11
|
+
)
|
|
12
|
+
from ..lv_validation import animated, lv_int
|
|
6
13
|
from ..lvcode import lv
|
|
7
14
|
from ..types import LvNumber, NumberType
|
|
8
15
|
from . import Widget
|
|
@@ -10,22 +17,30 @@ from . import Widget
|
|
|
10
17
|
# Note this file cannot be called "bar.py" because that name is disallowed.
|
|
11
18
|
|
|
12
19
|
CONF_BAR = "bar"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def validate_bar(config):
|
|
23
|
+
if config.get(CONF_MODE) != "LV_BAR_MODE_RANGE" and CONF_START_VALUE in config:
|
|
24
|
+
raise cv.Invalid(
|
|
25
|
+
f"{CONF_START_VALUE} is only allowed when {CONF_MODE} is set to 'RANGE'"
|
|
26
|
+
)
|
|
27
|
+
if (CONF_MIN_VALUE in config) != (CONF_MAX_VALUE in config):
|
|
28
|
+
raise cv.Invalid(
|
|
29
|
+
f"If either {CONF_MIN_VALUE} or {CONF_MAX_VALUE} is set, both must be set"
|
|
30
|
+
)
|
|
31
|
+
return config
|
|
32
|
+
|
|
19
33
|
|
|
20
34
|
BAR_SCHEMA = cv.Schema(
|
|
21
35
|
{
|
|
22
|
-
cv.Optional(CONF_VALUE):
|
|
23
|
-
cv.Optional(
|
|
24
|
-
cv.Optional(
|
|
25
|
-
cv.Optional(
|
|
36
|
+
cv.Optional(CONF_VALUE): lv_int,
|
|
37
|
+
cv.Optional(CONF_START_VALUE): lv_int,
|
|
38
|
+
cv.Optional(CONF_MIN_VALUE): lv_int,
|
|
39
|
+
cv.Optional(CONF_MAX_VALUE): lv_int,
|
|
40
|
+
cv.Optional(CONF_MODE): BAR_MODES.one_of,
|
|
26
41
|
cv.Optional(CONF_ANIMATED, default=True): animated,
|
|
27
42
|
}
|
|
28
|
-
)
|
|
43
|
+
).add_extra(validate_bar)
|
|
29
44
|
|
|
30
45
|
|
|
31
46
|
class BarType(NumberType):
|
|
@@ -35,17 +50,23 @@ class BarType(NumberType):
|
|
|
35
50
|
LvNumber("lv_bar_t"),
|
|
36
51
|
parts=(CONF_MAIN, CONF_INDICATOR),
|
|
37
52
|
schema=BAR_SCHEMA,
|
|
38
|
-
modify_schema=BAR_MODIFY_SCHEMA,
|
|
39
53
|
)
|
|
40
54
|
|
|
41
55
|
async def to_code(self, w: Widget, config):
|
|
42
56
|
var = w.obj
|
|
57
|
+
if mode := config.get(CONF_MODE):
|
|
58
|
+
lv.bar_set_mode(var, literal(mode))
|
|
59
|
+
is_animated = literal(config[CONF_ANIMATED])
|
|
43
60
|
if CONF_MIN_VALUE in config:
|
|
44
|
-
lv.bar_set_range(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
lv.bar_set_range(
|
|
62
|
+
var,
|
|
63
|
+
await lv_int.process(config[CONF_MIN_VALUE]),
|
|
64
|
+
await lv_int.process(config[CONF_MAX_VALUE]),
|
|
65
|
+
)
|
|
66
|
+
if value := await lv_int.process(config.get(CONF_VALUE)):
|
|
67
|
+
lv.bar_set_value(var, value, is_animated)
|
|
68
|
+
if start_value := await lv_int.process(config.get(CONF_START_VALUE)):
|
|
69
|
+
lv.bar_set_start_value(var, start_value, is_animated)
|
|
49
70
|
|
|
50
71
|
@property
|
|
51
72
|
def animated(self):
|
|
@@ -8,7 +8,7 @@ namespace m5stack_8angle {
|
|
|
8
8
|
static const char *const TAG = "m5stack_8angle.light";
|
|
9
9
|
|
|
10
10
|
void M5Stack8AngleLightOutput::setup() {
|
|
11
|
-
|
|
11
|
+
RAMAllocator<uint8_t> allocator;
|
|
12
12
|
this->buf_ = allocator.allocate(M5STACK_8ANGLE_NUM_LEDS * M5STACK_8ANGLE_BYTES_PER_LED);
|
|
13
13
|
if (this->buf_ == nullptr) {
|
|
14
14
|
ESP_LOGE(TAG, "Failed to allocate buffer of size %u", M5STACK_8ANGLE_NUM_LEDS * M5STACK_8ANGLE_BYTES_PER_LED);
|
|
@@ -38,7 +38,6 @@ class MAX9611Component : public PollingComponent, public i2c::I2CDevice {
|
|
|
38
38
|
public:
|
|
39
39
|
void setup() override;
|
|
40
40
|
void dump_config() override;
|
|
41
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
42
41
|
void update() override;
|
|
43
42
|
void set_voltage_sensor(sensor::Sensor *vs) { voltage_sensor_ = vs; }
|
|
44
43
|
void set_current_sensor(sensor::Sensor *cs) { current_sensor_ = cs; }
|
|
@@ -60,7 +60,7 @@ MCP23XXX_PIN_SCHEMA = pins.gpio_base_schema(
|
|
|
60
60
|
cv.int_range(min=0, max=15),
|
|
61
61
|
modes=[CONF_INPUT, CONF_OUTPUT, CONF_PULLUP],
|
|
62
62
|
mode_validator=validate_mode,
|
|
63
|
-
|
|
63
|
+
invertible=True,
|
|
64
64
|
).extend(
|
|
65
65
|
{
|
|
66
66
|
cv.Required(CONF_MCP23XXX): cv.use_id(MCP23XXXBase),
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import esphome.codegen as cg
|
|
2
|
-
import esphome.config_validation as cv
|
|
3
2
|
from esphome.components import output
|
|
3
|
+
import esphome.config_validation as cv
|
|
4
4
|
from esphome.const import CONF_CHANNEL, CONF_ID, CONF_INITIAL_VALUE
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
from .. import CONF_MCP4461_ID, Mcp4461Component, mcp4461_ns
|
|
6
7
|
|
|
7
8
|
DEPENDENCIES = ["mcp4461"]
|
|
8
9
|
|
|
@@ -24,8 +24,6 @@ class MCP9600Component : public PollingComponent, public i2c::I2CDevice {
|
|
|
24
24
|
void dump_config() override;
|
|
25
25
|
void update() override;
|
|
26
26
|
|
|
27
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
28
|
-
|
|
29
27
|
void set_hot_junction(sensor::Sensor *hot_junction) { this->hot_junction_sensor_ = hot_junction; }
|
|
30
28
|
void set_cold_junction(sensor::Sensor *cold_junction) { this->cold_junction_sensor_ = cold_junction; }
|
|
31
29
|
void set_thermocouple_type(MCP9600ThermocoupleType thermocouple_type) {
|
esphome/components/md5/md5.cpp
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
namespace esphome {
|
|
8
8
|
namespace md5 {
|
|
9
9
|
|
|
10
|
-
#if defined(USE_ARDUINO) && !defined(USE_RP2040)
|
|
10
|
+
#if defined(USE_ARDUINO) && !defined(USE_RP2040) && !defined(USE_ESP32)
|
|
11
11
|
void MD5Digest::init() {
|
|
12
12
|
memset(this->digest_, 0, 16);
|
|
13
13
|
MD5Init(&this->ctx_);
|
|
@@ -18,7 +18,7 @@ void MD5Digest::add(const uint8_t *data, size_t len) { MD5Update(&this->ctx_, da
|
|
|
18
18
|
void MD5Digest::calculate() { MD5Final(this->digest_, &this->ctx_); }
|
|
19
19
|
#endif // USE_ARDUINO && !USE_RP2040
|
|
20
20
|
|
|
21
|
-
#ifdef
|
|
21
|
+
#ifdef USE_ESP32
|
|
22
22
|
void MD5Digest::init() {
|
|
23
23
|
memset(this->digest_, 0, 16);
|
|
24
24
|
esp_rom_md5_init(&this->ctx_);
|
|
@@ -27,7 +27,7 @@ void MD5Digest::init() {
|
|
|
27
27
|
void MD5Digest::add(const uint8_t *data, size_t len) { esp_rom_md5_update(&this->ctx_, data, len); }
|
|
28
28
|
|
|
29
29
|
void MD5Digest::calculate() { esp_rom_md5_final(this->digest_, &this->ctx_); }
|
|
30
|
-
#endif //
|
|
30
|
+
#endif // USE_ESP32
|
|
31
31
|
|
|
32
32
|
#ifdef USE_RP2040
|
|
33
33
|
void MD5Digest::init() {
|
esphome/components/md5/md5.h
CHANGED
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
#include "esphome/core/defines.h"
|
|
4
4
|
#ifdef USE_MD5
|
|
5
5
|
|
|
6
|
-
#ifdef
|
|
6
|
+
#ifdef USE_ESP32
|
|
7
7
|
#include "esp_rom_md5.h"
|
|
8
8
|
#define MD5_CTX_TYPE md5_context_t
|
|
9
9
|
#endif
|
|
10
10
|
|
|
11
|
-
#if defined(USE_ARDUINO) && defined(USE_ESP32)
|
|
12
|
-
#include "rom/md5_hash.h"
|
|
13
|
-
#define MD5_CTX_TYPE MD5Context
|
|
14
|
-
#endif
|
|
15
|
-
|
|
16
11
|
#if defined(USE_ARDUINO) && defined(USE_ESP8266)
|
|
17
12
|
#include <md5.h>
|
|
18
13
|
#define MD5_CTX_TYPE md5_context_t
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import esphome.codegen as cg
|
|
2
2
|
from esphome.components.esp32 import add_idf_component
|
|
3
|
+
from esphome.config_helpers import filter_source_files_from_platform
|
|
3
4
|
import esphome.config_validation as cv
|
|
4
5
|
from esphome.const import (
|
|
5
6
|
CONF_DISABLED,
|
|
@@ -8,8 +9,7 @@ from esphome.const import (
|
|
|
8
9
|
CONF_PROTOCOL,
|
|
9
10
|
CONF_SERVICE,
|
|
10
11
|
CONF_SERVICES,
|
|
11
|
-
|
|
12
|
-
KEY_FRAMEWORK_VERSION,
|
|
12
|
+
PlatformFramework,
|
|
13
13
|
)
|
|
14
14
|
from esphome.core import CORE, coroutine_with_priority
|
|
15
15
|
|
|
@@ -85,15 +85,8 @@ async def to_code(config):
|
|
|
85
85
|
elif CORE.is_rp2040:
|
|
86
86
|
cg.add_library("LEAmDNS", None)
|
|
87
87
|
|
|
88
|
-
if CORE.using_esp_idf
|
|
89
|
-
|
|
90
|
-
):
|
|
91
|
-
add_idf_component(
|
|
92
|
-
name="mdns",
|
|
93
|
-
repo="https://github.com/espressif/esp-protocols.git",
|
|
94
|
-
ref="mdns-v1.8.2",
|
|
95
|
-
path="components/mdns",
|
|
96
|
-
)
|
|
88
|
+
if CORE.using_esp_idf:
|
|
89
|
+
add_idf_component(name="espressif/mdns", ref="1.8.2")
|
|
97
90
|
|
|
98
91
|
cg.add_define("USE_MDNS")
|
|
99
92
|
|
|
@@ -117,3 +110,21 @@ async def to_code(config):
|
|
|
117
110
|
)
|
|
118
111
|
|
|
119
112
|
cg.add(var.add_extra_service(exp))
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
FILTER_SOURCE_FILES = filter_source_files_from_platform(
|
|
116
|
+
{
|
|
117
|
+
"mdns_esp32.cpp": {
|
|
118
|
+
PlatformFramework.ESP32_ARDUINO,
|
|
119
|
+
PlatformFramework.ESP32_IDF,
|
|
120
|
+
},
|
|
121
|
+
"mdns_esp8266.cpp": {PlatformFramework.ESP8266_ARDUINO},
|
|
122
|
+
"mdns_host.cpp": {PlatformFramework.HOST_NATIVE},
|
|
123
|
+
"mdns_rp2040.cpp": {PlatformFramework.RP2040_ARDUINO},
|
|
124
|
+
"mdns_libretiny.cpp": {
|
|
125
|
+
PlatformFramework.BK72XX_ARDUINO,
|
|
126
|
+
PlatformFramework.RTL87XX_ARDUINO,
|
|
127
|
+
PlatformFramework.LN882X_ARDUINO,
|
|
128
|
+
},
|
|
129
|
+
}
|
|
130
|
+
)
|
|
@@ -11,9 +11,9 @@ from esphome.const import (
|
|
|
11
11
|
CONF_VOLUME,
|
|
12
12
|
)
|
|
13
13
|
from esphome.core import CORE
|
|
14
|
+
from esphome.core.entity_helpers import entity_duplicate_validator, setup_entity
|
|
14
15
|
from esphome.coroutine import coroutine_with_priority
|
|
15
16
|
from esphome.cpp_generator import MockObjClass
|
|
16
|
-
from esphome.cpp_helpers import setup_entity
|
|
17
17
|
|
|
18
18
|
CODEOWNERS = ["@jesserockz"]
|
|
19
19
|
|
|
@@ -81,7 +81,7 @@ IsAnnouncingCondition = media_player_ns.class_(
|
|
|
81
81
|
|
|
82
82
|
|
|
83
83
|
async def setup_media_player_core_(var, config):
|
|
84
|
-
await setup_entity(var, config)
|
|
84
|
+
await setup_entity(var, config, "media_player")
|
|
85
85
|
for conf in config.get(CONF_ON_STATE, []):
|
|
86
86
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
|
87
87
|
await automation.build_automation(trigger, [], conf)
|
|
@@ -143,6 +143,8 @@ _MEDIA_PLAYER_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(
|
|
|
143
143
|
}
|
|
144
144
|
)
|
|
145
145
|
|
|
146
|
+
_MEDIA_PLAYER_SCHEMA.add_extra(entity_duplicate_validator("media_player"))
|
|
147
|
+
|
|
146
148
|
|
|
147
149
|
def media_player_schema(
|
|
148
150
|
class_: MockObjClass,
|
|
@@ -166,7 +168,6 @@ def media_player_schema(
|
|
|
166
168
|
MEDIA_PLAYER_SCHEMA = media_player_schema(MediaPlayer)
|
|
167
169
|
MEDIA_PLAYER_SCHEMA.add_extra(cv.deprecated_schema_constant("media_player"))
|
|
168
170
|
|
|
169
|
-
|
|
170
171
|
MEDIA_PLAYER_ACTION_SCHEMA = automation.maybe_simple_id(
|
|
171
172
|
cv.Schema(
|
|
172
173
|
{
|
|
@@ -449,11 +449,7 @@ async def to_code(config):
|
|
|
449
449
|
cg.add_define("USE_MICRO_WAKE_WORD")
|
|
450
450
|
cg.add_define("USE_OTA_STATE_CALLBACK")
|
|
451
451
|
|
|
452
|
-
esp32.add_idf_component(
|
|
453
|
-
name="esp-tflite-micro",
|
|
454
|
-
repo="https://github.com/espressif/esp-tflite-micro",
|
|
455
|
-
ref="v1.3.3.1",
|
|
456
|
-
)
|
|
452
|
+
esp32.add_idf_component(name="espressif/esp-tflite-micro", ref="1.3.3~1")
|
|
457
453
|
|
|
458
454
|
cg.add_build_flag("-DTF_LITE_STATIC_MEMORY")
|
|
459
455
|
cg.add_build_flag("-DTF_LITE_DISABLE_X86_NEON")
|
|
@@ -27,7 +27,7 @@ void VADModel::log_model_config() {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
bool StreamingModel::load_model_() {
|
|
30
|
-
RAMAllocator<uint8_t> arena_allocator
|
|
30
|
+
RAMAllocator<uint8_t> arena_allocator;
|
|
31
31
|
|
|
32
32
|
if (this->tensor_arena_ == nullptr) {
|
|
33
33
|
this->tensor_arena_ = arena_allocator.allocate(this->tensor_arena_size_);
|
|
@@ -96,7 +96,7 @@ bool StreamingModel::load_model_() {
|
|
|
96
96
|
void StreamingModel::unload_model() {
|
|
97
97
|
this->interpreter_.reset();
|
|
98
98
|
|
|
99
|
-
RAMAllocator<uint8_t> arena_allocator
|
|
99
|
+
RAMAllocator<uint8_t> arena_allocator;
|
|
100
100
|
|
|
101
101
|
if (this->tensor_arena_ != nullptr) {
|
|
102
102
|
arena_allocator.deallocate(this->tensor_arena_, this->tensor_arena_size_);
|
|
@@ -5,17 +5,15 @@ namespace microphone {
|
|
|
5
5
|
|
|
6
6
|
void Microphone::add_data_callback(std::function<void(const std::vector<uint8_t> &)> &&data_callback) {
|
|
7
7
|
std::function<void(const std::vector<uint8_t> &)> mute_handled_callback =
|
|
8
|
-
[this, data_callback](const std::vector<uint8_t> &data) {
|
|
8
|
+
[this, data_callback](const std::vector<uint8_t> &data) {
|
|
9
|
+
if (this->mute_state_) {
|
|
10
|
+
data_callback(std::vector<uint8_t>(data.size(), 0));
|
|
11
|
+
} else {
|
|
12
|
+
data_callback(data);
|
|
13
|
+
};
|
|
14
|
+
};
|
|
9
15
|
this->data_callbacks_.add(std::move(mute_handled_callback));
|
|
10
16
|
}
|
|
11
17
|
|
|
12
|
-
std::vector<uint8_t> Microphone::silence_audio_(std::vector<uint8_t> data) {
|
|
13
|
-
if (this->mute_state_) {
|
|
14
|
-
std::memset((void *) data.data(), 0, data.size());
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return data;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
18
|
} // namespace microphone
|
|
21
19
|
} // namespace esphome
|