esphome 2025.7.4__py3-none-any.whl → 2025.8.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 +189 -82
- esphome/automation.py +2 -4
- esphome/build_gen/__init__.py +0 -0
- esphome/build_gen/platformio.py +102 -0
- esphome/components/a4988/a4988.cpp +0 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +0 -2
- esphome/components/absolute_humidity/sensor.py +2 -2
- esphome/components/adc/__init__.py +123 -85
- esphome/components/adc/adc_sensor.h +98 -35
- esphome/components/adc/adc_sensor_common.cpp +10 -4
- esphome/components/adc/adc_sensor_esp32.cpp +291 -123
- esphome/components/adc/adc_sensor_esp8266.cpp +1 -4
- esphome/components/adc/adc_sensor_libretiny.cpp +1 -2
- esphome/components/adc/adc_sensor_rp2040.cpp +1 -2
- esphome/components/adc/adc_sensor_zephyr.cpp +207 -0
- esphome/components/adc/sensor.py +61 -27
- esphome/components/adc128s102/adc128s102.cpp +1 -4
- esphome/components/ade7880/sensor.py +75 -49
- esphome/components/ads1115/ads1115.cpp +0 -1
- esphome/components/ads1118/ads1118.cpp +0 -1
- esphome/components/ags10/ags10.cpp +0 -4
- esphome/components/aht10/aht10.cpp +0 -4
- esphome/components/aic3204/aic3204.cpp +0 -2
- esphome/components/airthings_wave_plus/__init__.py +1 -1
- esphome/components/airthings_wave_plus/airthings_wave_plus.cpp +22 -4
- esphome/components/airthings_wave_plus/airthings_wave_plus.h +10 -1
- esphome/components/airthings_wave_plus/sensor.py +55 -28
- esphome/components/alarm_control_panel/__init__.py +4 -9
- esphome/components/am2315c/am2315c.cpp +0 -2
- esphome/components/am2320/am2320.cpp +0 -1
- esphome/components/animation/__init__.py +14 -11
- esphome/components/apds9306/apds9306.cpp +0 -4
- esphome/components/apds9960/apds9960.cpp +0 -1
- esphome/components/api/__init__.py +29 -4
- esphome/components/api/api_connection.cpp +378 -401
- esphome/components/api/api_connection.h +112 -56
- esphome/components/api/api_frame_helper.cpp +69 -896
- esphome/components/api/api_frame_helper.h +31 -126
- esphome/components/api/api_frame_helper_noise.cpp +583 -0
- esphome/components/api/api_frame_helper_noise.h +68 -0
- esphome/components/api/api_frame_helper_plaintext.cpp +290 -0
- esphome/components/api/api_frame_helper_plaintext.h +53 -0
- esphome/components/api/api_noise_context.h +2 -4
- esphome/components/api/api_pb2.cpp +1601 -1808
- esphome/components/api/api_pb2.h +367 -323
- esphome/components/api/api_pb2_dump.cpp +1137 -3466
- esphome/components/api/api_pb2_includes.h +34 -0
- esphome/components/api/api_pb2_service.cpp +94 -105
- esphome/components/api/api_pb2_service.h +27 -16
- esphome/components/api/api_server.cpp +18 -17
- esphome/components/api/api_server.h +8 -5
- esphome/components/api/client.py +16 -8
- esphome/components/api/custom_api_device.h +68 -14
- esphome/components/api/homeassistant_service.h +24 -19
- esphome/components/api/list_entities.cpp +3 -5
- esphome/components/api/list_entities.h +2 -4
- esphome/components/api/proto.cpp +3 -5
- esphome/components/api/proto.h +239 -274
- esphome/components/api/subscribe_state.cpp +2 -4
- esphome/components/api/subscribe_state.h +2 -4
- esphome/components/api/user_services.cpp +2 -4
- esphome/components/api/user_services.h +8 -8
- esphome/components/as3935/as3935.cpp +0 -2
- esphome/components/as3935_spi/as3935_spi.cpp +0 -2
- esphome/components/as5600/__init__.py +1 -1
- esphome/components/as5600/as5600.cpp +0 -2
- esphome/components/as5600/sensor/__init__.py +0 -1
- esphome/components/as7341/as7341.cpp +0 -1
- esphome/components/async_tcp/__init__.py +1 -1
- esphome/components/at581x/at581x.cpp +1 -1
- esphome/components/atm90e26/atm90e26.cpp +0 -1
- esphome/components/atm90e32/atm90e32.cpp +488 -118
- esphome/components/atm90e32/atm90e32.h +44 -5
- esphome/components/audio/audio.h +2 -2
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +0 -2
- esphome/components/beken_spi_led_strip/led_strip.cpp +0 -2
- esphome/components/bh1750/bh1750.cpp +0 -1
- esphome/components/binary_sensor/__init__.py +14 -12
- esphome/components/ble_client/__init__.py +4 -7
- esphome/components/bluetooth_proxy/__init__.py +40 -3
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +387 -82
- esphome/components/bluetooth_proxy/bluetooth_connection.h +16 -5
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +102 -311
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +30 -14
- esphome/components/bme280_base/bme280_base.cpp +15 -16
- esphome/components/bme680/bme680.cpp +2 -3
- esphome/components/bme680_bsec/bme680_bsec.cpp +0 -2
- esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +0 -2
- esphome/components/bmi160/bmi160.cpp +0 -1
- esphome/components/bmp085/bmp085.cpp +0 -1
- esphome/components/bmp280_base/bmp280_base.cpp +13 -14
- esphome/components/bmp3xx_base/bmp3xx_base.cpp +0 -1
- esphome/components/bmp581/bmp581.cpp +0 -2
- esphome/components/bp1658cj/bp1658cj.cpp +0 -1
- esphome/components/bp5758d/bp5758d.cpp +0 -1
- esphome/components/button/__init__.py +0 -1
- esphome/components/canbus/__init__.py +2 -3
- esphome/components/canbus/canbus.cpp +0 -1
- esphome/components/cap1188/cap1188.cpp +0 -2
- esphome/components/captive_portal/__init__.py +1 -1
- esphome/components/cd74hc4067/cd74hc4067.cpp +0 -2
- esphome/components/ch422g/ch422g.cpp +0 -1
- esphome/components/chsc6x/chsc6x_touchscreen.cpp +0 -3
- esphome/components/climate/__init__.py +0 -1
- esphome/components/climate/climate_traits.h +24 -0
- esphome/components/cm1106/cm1106.cpp +0 -1
- esphome/components/const/__init__.py +6 -0
- esphome/components/cover/__init__.py +0 -1
- esphome/components/cover/cover.cpp +9 -13
- esphome/components/cs5460a/cs5460a.cpp +0 -2
- esphome/components/cse7761/cse7761.cpp +0 -1
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +0 -2
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +0 -2
- esphome/components/dac7678/dac7678_output.cpp +0 -2
- esphome/components/dallas_temp/dallas_temp.cpp +0 -1
- esphome/components/datetime/__init__.py +0 -2
- esphome/components/debug/__init__.py +15 -1
- esphome/components/debug/debug_zephyr.cpp +281 -0
- esphome/components/debug/sensor.py +2 -1
- esphome/components/deep_sleep/deep_sleep_component.cpp +0 -1
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +20 -1
- esphome/components/dfrobot_sen0395/__init__.py +1 -2
- esphome/components/dht/dht.cpp +0 -1
- esphome/components/dht12/dht12.cpp +0 -1
- esphome/components/display/__init__.py +16 -3
- esphome/components/display_menu_base/__init__.py +1 -1
- esphome/components/dps310/dps310.cpp +0 -2
- esphome/components/ds1307/ds1307.cpp +0 -1
- esphome/components/ds2484/ds2484.cpp +0 -1
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +0 -1
- esphome/components/ee895/ee895.cpp +0 -1
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +0 -1
- esphome/components/emc2101/emc2101.cpp +0 -2
- esphome/components/ens160_base/ens160_base.cpp +0 -2
- esphome/components/ens210/ens210.cpp +0 -1
- esphome/components/es7210/es7210.cpp +0 -2
- esphome/components/es7243e/es7243e.cpp +0 -2
- esphome/components/es8156/es8156.cpp +0 -2
- esphome/components/es8311/es8311.cpp +0 -2
- esphome/components/es8388/es8388.cpp +0 -2
- esphome/components/esp32/__init__.py +199 -58
- esphome/components/esp32/boards.py +17 -0
- esphome/components/esp32/gpio.cpp +0 -1
- esphome/components/esp32/gpio.py +1 -2
- esphome/components/esp32/gpio_esp32_h2.py +2 -7
- esphome/components/esp32/gpio_esp32_p4.py +2 -7
- esphome/components/esp32/post_build.py.script +112 -61
- esphome/components/esp32_ble/__init__.py +40 -2
- esphome/components/esp32_ble/ble.cpp +12 -8
- esphome/components/esp32_ble/ble.h +18 -18
- esphome/components/esp32_ble/ble_advertising.cpp +5 -5
- esphome/components/esp32_ble/ble_advertising.h +7 -5
- esphome/components/esp32_ble/ble_event.h +2 -4
- esphome/components/esp32_ble/ble_scan_result.h +2 -4
- esphome/components/esp32_ble/ble_uuid.cpp +5 -5
- esphome/components/esp32_ble/ble_uuid.h +6 -5
- esphome/components/esp32_ble_beacon/__init__.py +4 -0
- esphome/components/esp32_ble_client/__init__.py +1 -1
- esphome/components/esp32_ble_client/ble_characteristic.cpp +4 -4
- esphome/components/esp32_ble_client/ble_characteristic.h +6 -4
- esphome/components/esp32_ble_client/ble_client_base.cpp +155 -104
- esphome/components/esp32_ble_client/ble_client_base.h +17 -6
- esphome/components/esp32_ble_client/ble_descriptor.h +6 -4
- esphome/components/esp32_ble_client/ble_service.cpp +4 -4
- esphome/components/esp32_ble_client/ble_service.h +6 -4
- esphome/components/esp32_ble_server/__init__.py +15 -12
- esphome/components/esp32_ble_tracker/__init__.py +79 -11
- esphome/components/esp32_ble_tracker/automation.h +4 -4
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +264 -261
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +103 -37
- esphome/components/esp32_camera/__init__.py +13 -1
- esphome/components/esp32_camera/esp32_camera.cpp +7 -2
- esphome/components/esp32_camera/esp32_camera.h +1 -0
- esphome/components/esp32_dac/esp32_dac.cpp +3 -19
- esphome/components/esp32_dac/esp32_dac.h +4 -8
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +1 -6
- esphome/components/esp32_rmt_led_strip/light.py +1 -1
- esphome/components/esp32_touch/__init__.py +2 -3
- esphome/components/esp32_touch/esp32_touch.h +9 -6
- esphome/components/esp32_touch/esp32_touch_common.cpp +2 -0
- esphome/components/esp32_touch/esp32_touch_v1.cpp +7 -9
- esphome/components/esp32_touch/esp32_touch_v2.cpp +10 -6
- esphome/components/esp8266/__init__.py +3 -1
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +0 -1
- esphome/components/esphome/ota/__init__.py +1 -2
- esphome/components/esphome/ota/ota_esphome.cpp +150 -77
- esphome/components/esphome/ota/ota_esphome.h +8 -1
- esphome/components/espnow/__init__.py +309 -0
- esphome/components/espnow/automation.h +175 -0
- esphome/components/espnow/espnow_component.cpp +468 -0
- esphome/components/espnow/espnow_component.h +183 -0
- esphome/components/espnow/espnow_err.h +19 -0
- esphome/components/espnow/espnow_packet.h +166 -0
- esphome/components/ethernet/__init__.py +7 -1
- esphome/components/ethernet/esp_eth_phy_jl1101.c +5 -0
- esphome/components/ethernet/ethernet_component.cpp +0 -1
- esphome/components/ethernet/ethernet_component.h +4 -0
- esphome/components/ethernet_info/ethernet_info_text_sensor.h +0 -3
- esphome/components/event/__init__.py +0 -1
- esphome/components/factory_reset/__init__.py +92 -0
- esphome/components/factory_reset/factory_reset.cpp +76 -0
- esphome/components/factory_reset/factory_reset.h +43 -0
- esphome/components/fan/__init__.py +0 -1
- esphome/components/fan/fan_traits.h +16 -0
- esphome/components/fastled_base/fastled_light.cpp +0 -1
- esphome/components/fastled_spi/light.py +1 -3
- esphome/components/fingerprint_grow/fingerprint_grow.cpp +0 -2
- esphome/components/font/__init__.py +9 -1
- esphome/components/fs3000/fs3000.cpp +0 -2
- esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +0 -2
- esphome/components/ft63x6/ft63x6.cpp +0 -1
- esphome/components/gdk101/gdk101.cpp +0 -1
- esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +0 -1
- esphome/components/gl_r01_i2c/sensor.py +1 -1
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +0 -1
- esphome/components/gpio/switch/gpio_switch.cpp +0 -2
- esphome/components/gpio_expander/cached_gpio.h +24 -15
- esphome/components/gps/__init__.py +6 -2
- esphome/components/gps/gps.cpp +50 -49
- esphome/components/gps/gps.h +4 -8
- esphome/components/gps/time/gps_time.cpp +3 -9
- esphome/components/gps/time/gps_time.h +4 -7
- esphome/components/graph/__init__.py +1 -1
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +0 -1
- esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +0 -1
- esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +21 -12
- esphome/components/gt911/touchscreen/gt911_touchscreen.h +26 -2
- esphome/components/haier/climate.py +5 -10
- esphome/components/haier/haier_base.cpp +0 -1
- esphome/components/hbridge/switch/hbridge_switch.cpp +0 -2
- esphome/components/hdc1080/hdc1080.cpp +0 -2
- esphome/components/heatpumpir/climate.py +2 -2
- esphome/components/hlw8012/hlw8012.cpp +0 -1
- esphome/components/hm3301/hm3301.cpp +0 -1
- esphome/components/hmc5883l/hmc5883l.cpp +0 -1
- esphome/components/homeassistant/__init__.py +1 -0
- esphome/components/homeassistant/number/__init__.py +1 -0
- esphome/components/homeassistant/number/homeassistant_number.cpp +11 -7
- esphome/components/homeassistant/switch/__init__.py +1 -0
- esphome/components/homeassistant/switch/homeassistant_switch.cpp +9 -5
- esphome/components/honeywellabp/honeywellabp.cpp +1 -4
- esphome/components/host/__init__.py +2 -0
- esphome/components/hte501/hte501.cpp +0 -1
- esphome/components/http_request/__init__.py +2 -3
- esphome/components/http_request/http_request_idf.cpp +2 -2
- esphome/components/htu21d/htu21d.cpp +0 -2
- esphome/components/htu31d/htu31d.cpp +0 -2
- esphome/components/hx711/hx711.cpp +0 -1
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +0 -1
- esphome/components/hydreon_rgxx/sensor.py +4 -5
- esphome/components/i2c/i2c_bus.h +1 -1
- esphome/components/i2c/i2c_bus_arduino.cpp +1 -2
- esphome/components/i2c/i2c_bus_esp_idf.cpp +192 -17
- esphome/components/i2c/i2c_bus_esp_idf.h +11 -1
- esphome/components/i2s_audio/__init__.py +6 -5
- esphome/components/i2s_audio/i2s_audio.cpp +0 -2
- esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +1 -4
- esphome/components/i2s_audio/microphone/__init__.py +4 -6
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +46 -19
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -3
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +273 -269
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +19 -34
- esphome/components/ili9xxx/display.py +4 -3
- esphome/components/ili9xxx/ili9xxx_display.cpp +0 -2
- esphome/components/image/__init__.py +123 -92
- esphome/components/improv_serial/__init__.py +7 -8
- esphome/components/ina219/ina219.cpp +0 -1
- esphome/components/ina226/ina226.cpp +0 -2
- esphome/components/ina260/ina260.cpp +0 -2
- esphome/components/ina2xx_base/__init__.py +2 -5
- esphome/components/ina2xx_base/ina2xx_base.cpp +0 -2
- esphome/components/ina3221/ina3221.cpp +0 -1
- esphome/components/internal_temperature/internal_temperature.cpp +0 -2
- esphome/components/interval/interval.h +5 -9
- esphome/components/json/__init__.py +1 -1
- esphome/components/kmeteriso/kmeteriso.cpp +0 -2
- esphome/components/lc709203f/lc709203f.cpp +0 -2
- esphome/components/lcd_gpio/display.py +1 -3
- esphome/components/lcd_gpio/gpio_lcd_display.cpp +0 -1
- esphome/components/lcd_pcf8574/pcf8574_display.cpp +0 -1
- esphome/components/ld2410/__init__.py +4 -6
- esphome/components/ld2410/binary_sensor.py +4 -0
- esphome/components/ld2410/ld2410.cpp +56 -100
- esphome/components/ld2410/ld2410.h +17 -15
- esphome/components/ld2410/sensor.py +24 -10
- esphome/components/ld2412/__init__.py +46 -0
- esphome/components/ld2412/binary_sensor.py +70 -0
- esphome/components/ld2412/button/__init__.py +74 -0
- esphome/components/ld2412/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2412/button/factory_reset_button.h +18 -0
- esphome/components/ld2412/button/query_button.cpp +9 -0
- esphome/components/ld2412/button/query_button.h +18 -0
- esphome/components/ld2412/button/restart_button.cpp +9 -0
- esphome/components/ld2412/button/restart_button.h +18 -0
- esphome/components/ld2412/button/start_dynamic_background_correction_button.cpp +11 -0
- esphome/components/ld2412/button/start_dynamic_background_correction_button.h +18 -0
- esphome/components/ld2412/ld2412.cpp +861 -0
- esphome/components/ld2412/ld2412.h +141 -0
- esphome/components/ld2412/number/__init__.py +126 -0
- esphome/components/ld2412/number/gate_threshold_number.cpp +14 -0
- esphome/components/ld2412/number/gate_threshold_number.h +19 -0
- esphome/components/ld2412/number/light_threshold_number.cpp +12 -0
- esphome/components/ld2412/number/light_threshold_number.h +18 -0
- esphome/components/ld2412/number/max_distance_timeout_number.cpp +12 -0
- esphome/components/ld2412/number/max_distance_timeout_number.h +18 -0
- esphome/components/ld2412/select/__init__.py +82 -0
- esphome/components/ld2412/select/baud_rate_select.cpp +12 -0
- esphome/components/ld2412/select/baud_rate_select.h +18 -0
- esphome/components/ld2412/select/distance_resolution_select.cpp +12 -0
- esphome/components/ld2412/select/distance_resolution_select.h +18 -0
- esphome/components/ld2412/select/light_out_control_select.cpp +12 -0
- esphome/components/ld2412/select/light_out_control_select.h +18 -0
- esphome/components/ld2412/sensor.py +124 -0
- esphome/components/ld2412/switch/__init__.py +45 -0
- esphome/components/ld2412/switch/bluetooth_switch.cpp +12 -0
- esphome/components/ld2412/switch/bluetooth_switch.h +18 -0
- esphome/components/ld2412/switch/engineering_mode_switch.cpp +12 -0
- esphome/components/ld2412/switch/engineering_mode_switch.h +18 -0
- esphome/components/ld2412/text_sensor.py +34 -0
- esphome/components/ld2420/ld2420.cpp +0 -1
- esphome/components/ld2450/__init__.py +3 -4
- esphome/components/ld2450/binary_sensor.py +3 -0
- esphome/components/ld2450/ld2450.cpp +77 -165
- esphome/components/ld2450/ld2450.h +26 -54
- esphome/components/ld2450/sensor.py +120 -6
- esphome/components/ld2450/text_sensor.py +5 -4
- esphome/components/ld24xx/__init__.py +1 -0
- esphome/components/ld24xx/ld24xx.h +65 -0
- esphome/components/ledc/ledc_output.cpp +0 -1
- esphome/components/libretiny/__init__.py +2 -0
- esphome/components/light/__init__.py +0 -1
- esphome/components/light/effects.py +70 -45
- esphome/components/light/light_call.cpp +101 -66
- esphome/components/light/light_color_values.h +16 -11
- esphome/components/light/light_json_schema.cpp +46 -44
- esphome/components/light/light_state.cpp +8 -11
- esphome/components/light/light_traits.h +17 -0
- esphome/components/lightwaverf/lightwaverf.cpp +0 -2
- esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +0 -1
- esphome/components/lock/__init__.py +0 -1
- esphome/components/logger/__init__.py +31 -9
- esphome/components/logger/logger.cpp +12 -7
- esphome/components/logger/logger.h +25 -14
- esphome/components/logger/logger_esp32.cpp +2 -7
- esphome/components/logger/logger_esp8266.cpp +2 -4
- esphome/components/logger/logger_host.cpp +2 -4
- esphome/components/logger/logger_libretiny.cpp +2 -4
- esphome/components/logger/logger_rp2040.cpp +2 -4
- esphome/components/logger/logger_zephyr.cpp +86 -0
- esphome/components/logger/select/logger_level_select.cpp +2 -4
- esphome/components/logger/select/logger_level_select.h +2 -4
- esphome/components/logger/task_log_buffer.cpp +2 -4
- esphome/components/logger/task_log_buffer.h +2 -4
- esphome/components/lps22/sensor.py +5 -5
- esphome/components/ltr390/ltr390.cpp +0 -2
- esphome/components/ltr501/ltr501.cpp +0 -1
- esphome/components/ltr_als_ps/ltr_als_ps.cpp +0 -1
- esphome/components/lvgl/__init__.py +14 -13
- esphome/components/lvgl/automation.py +2 -4
- esphome/components/lvgl/defines.py +0 -2
- esphome/components/lvgl/helpers.py +1 -1
- esphome/components/lvgl/lv_validation.py +7 -4
- esphome/components/lvgl/lvgl_esphome.cpp +2 -3
- esphome/components/lvgl/styles.py +2 -2
- esphome/components/lvgl/types.py +1 -1
- esphome/components/lvgl/widgets/__init__.py +2 -2
- esphome/components/lvgl/widgets/arc.py +14 -11
- esphome/components/lvgl/widgets/buttonmatrix.py +1 -1
- esphome/components/lvgl/widgets/qrcode.py +7 -7
- esphome/components/lvgl/widgets/spinner.py +6 -6
- esphome/components/lvgl/widgets/switch.py +2 -2
- esphome/components/lvgl/widgets/tabview.py +3 -3
- esphome/components/lvgl/widgets/tileview.py +15 -7
- esphome/components/m5stack_8angle/m5stack_8angle.cpp +0 -1
- esphome/components/matrix_keypad/__init__.py +4 -3
- esphome/components/max17043/max17043.cpp +0 -2
- esphome/components/max31855/max31855.cpp +1 -4
- esphome/components/max31856/max31856.cpp +0 -4
- esphome/components/max31865/max31865.cpp +0 -1
- esphome/components/max44009/max44009.cpp +0 -1
- esphome/components/max6675/max6675.cpp +1 -4
- esphome/components/max6956/max6956.cpp +0 -1
- esphome/components/max7219/max7219.cpp +0 -1
- esphome/components/max7219digit/display.py +1 -1
- esphome/components/max7219digit/max7219digit.cpp +0 -1
- esphome/components/max9611/max9611.cpp +0 -1
- esphome/components/mcp23008/__init__.py +1 -1
- esphome/components/mcp23008/mcp23008.cpp +0 -1
- esphome/components/mcp23016/mcp23016.cpp +0 -1
- esphome/components/mcp23017/__init__.py +1 -1
- esphome/components/mcp23017/mcp23017.cpp +0 -1
- esphome/components/mcp23s08/__init__.py +1 -1
- esphome/components/mcp23s08/mcp23s08.cpp +0 -1
- esphome/components/mcp23s17/__init__.py +1 -1
- esphome/components/mcp23s17/mcp23s17.cpp +0 -1
- esphome/components/mcp23x08_base/__init__.py +2 -0
- esphome/components/mcp23x08_base/mcp23x08_base.cpp +9 -7
- esphome/components/mcp23x08_base/mcp23x08_base.h +9 -4
- esphome/components/mcp23x17_base/__init__.py +2 -0
- esphome/components/mcp23x17_base/mcp23x17_base.cpp +20 -7
- esphome/components/mcp23x17_base/mcp23x17_base.h +9 -4
- esphome/components/mcp23xxx_base/__init__.py +11 -5
- esphome/components/mcp23xxx_base/mcp23xxx_base.cpp +15 -12
- esphome/components/mcp23xxx_base/mcp23xxx_base.h +8 -7
- esphome/components/mcp3008/mcp3008.cpp +1 -4
- esphome/components/mcp3204/mcp3204.cpp +1 -4
- esphome/components/mcp4461/mcp4461.cpp +0 -1
- esphome/components/mcp4725/mcp4725.cpp +0 -1
- esphome/components/mcp4728/mcp4728.cpp +0 -1
- esphome/components/mcp9600/mcp9600.cpp +0 -2
- esphome/components/mcp9808/mcp9808.cpp +0 -2
- esphome/components/mdns/__init__.py +3 -0
- esphome/components/mdns/mdns_component.cpp +2 -0
- esphome/components/mdns/mdns_component.h +4 -0
- esphome/components/media_player/__init__.py +40 -0
- esphome/components/media_player/automation.h +16 -0
- esphome/components/media_player/media_player.cpp +13 -0
- esphome/components/media_player/media_player.h +50 -3
- esphome/components/micro_wake_word/micro_wake_word.cpp +0 -3
- esphome/components/mics_4514/mics_4514.cpp +1 -6
- esphome/components/midea/ir_transmitter.h +4 -4
- esphome/components/mipi/__init__.py +416 -0
- esphome/components/mipi_dsi/__init__.py +5 -0
- esphome/components/mipi_dsi/display.py +233 -0
- esphome/components/mipi_dsi/mipi_dsi.cpp +379 -0
- esphome/components/mipi_dsi/mipi_dsi.h +123 -0
- esphome/components/mipi_dsi/models/__init__.py +0 -0
- esphome/components/mipi_dsi/models/guition.py +38 -0
- esphome/components/mipi_dsi/models/m5stack.py +57 -0
- esphome/components/mipi_dsi/models/waveshare.py +105 -0
- esphome/components/mipi_rgb/models/lilygo.py +0 -0
- esphome/components/mipi_spi/__init__.py +0 -9
- esphome/components/mipi_spi/display.py +220 -256
- esphome/components/mipi_spi/mipi_spi.cpp +1 -485
- esphome/components/mipi_spi/mipi_spi.h +556 -108
- esphome/components/mipi_spi/models/__init__.py +0 -65
- esphome/components/mipi_spi/models/adafruit.py +30 -0
- esphome/components/mipi_spi/models/amoled.py +41 -5
- esphome/components/mipi_spi/models/ili.py +5 -5
- esphome/components/mipi_spi/models/jc.py +1 -3
- esphome/components/mipi_spi/models/lilygo.py +1 -1
- esphome/components/mipi_spi/models/waveshare.py +16 -1
- esphome/components/mixer/speaker/__init__.py +4 -5
- esphome/components/mlx90393/sensor.py +7 -5
- esphome/components/mlx90393/sensor_mlx90393.cpp +0 -1
- esphome/components/mlx90614/mlx90614.cpp +0 -1
- esphome/components/mmc5603/mmc5603.cpp +0 -1
- esphome/components/mmc5983/mmc5983.cpp +0 -2
- esphome/components/mpl3115a2/mpl3115a2.cpp +0 -2
- esphome/components/mpr121/__init__.py +7 -6
- esphome/components/mpr121/mpr121.cpp +0 -1
- esphome/components/mpu6050/mpu6050.cpp +0 -1
- esphome/components/mpu6886/mpu6886.cpp +0 -1
- esphome/components/mqtt/__init__.py +1 -2
- esphome/components/mqtt/mqtt_button.cpp +1 -1
- esphome/components/mqtt/mqtt_client.cpp +0 -1
- esphome/components/mqtt/mqtt_component.cpp +8 -14
- esphome/components/mqtt/mqtt_component.h +0 -7
- esphome/components/mqtt/mqtt_sensor.cpp +0 -1
- esphome/components/mqtt/mqtt_sensor.h +0 -1
- esphome/components/mqtt/mqtt_text_sensor.cpp +0 -1
- esphome/components/mqtt/mqtt_text_sensor.h +0 -1
- esphome/components/ms5611/ms5611.cpp +0 -1
- esphome/components/ms8607/ms8607.cpp +0 -1
- esphome/components/msa3xx/msa3xx.cpp +0 -2
- esphome/components/my9231/my9231.cpp +0 -2
- esphome/components/nau7802/nau7802.cpp +0 -1
- esphome/components/neopixelbus/light.py +3 -0
- esphome/components/network/util.cpp +29 -0
- esphome/components/nextion/nextion.cpp +0 -1
- esphome/components/nfc/binary_sensor/{binary_sensor.cpp → nfc_binary_sensor.cpp} +1 -1
- esphome/components/npi19/npi19.cpp +0 -2
- esphome/components/nrf52/__init__.py +223 -0
- esphome/components/nrf52/boards.py +34 -0
- esphome/components/nrf52/const.py +18 -0
- esphome/components/nrf52/gpio.py +79 -0
- esphome/components/number/__init__.py +2 -1
- esphome/components/one_wire/__init__.py +1 -2
- esphome/components/one_wire/one_wire.cpp +0 -2
- esphome/components/one_wire/one_wire.h +0 -2
- esphome/components/opentherm/hub.cpp +0 -1
- esphome/components/opentherm/number/__init__.py +2 -2
- esphome/components/openthread/__init__.py +2 -3
- esphome/components/openthread/openthread.cpp +30 -13
- esphome/components/openthread/openthread.h +3 -0
- esphome/components/openthread/openthread_esp.cpp +3 -1
- esphome/components/opt3001/sensor.py +2 -6
- esphome/components/output/__init__.py +38 -0
- esphome/components/output/automation.h +24 -0
- esphome/components/output/switch/output_switch.cpp +0 -2
- esphome/components/packages/__init__.py +1 -2
- esphome/components/packet_transport/__init__.py +4 -3
- esphome/components/pca6416a/pca6416a.cpp +0 -1
- esphome/components/pca9554/pca9554.cpp +0 -1
- esphome/components/pca9685/pca9685_output.cpp +0 -2
- esphome/components/pcf85063/pcf85063.cpp +0 -1
- esphome/components/pcf8563/pcf8563.cpp +0 -1
- esphome/components/pcf8574/pcf8574.cpp +0 -1
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +0 -1
- esphome/components/pipsolar/sensor/__init__.py +1 -1
- esphome/components/pm2005/pm2005.cpp +0 -1
- esphome/components/pmsa003i/pmsa003i.cpp +0 -2
- esphome/components/pmwcs3/sensor.py +1 -2
- esphome/components/pn532/pn532.cpp +0 -2
- esphome/components/pn532_spi/pn532_spi.cpp +0 -2
- esphome/components/power_supply/power_supply.cpp +7 -10
- esphome/components/power_supply/power_supply.h +1 -1
- esphome/components/psram/__init__.py +2 -1
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +0 -1
- esphome/components/pulse_counter/sensor.py +9 -6
- esphome/components/pylontech/pylontech.cpp +0 -1
- esphome/components/qmc5883l/qmc5883l.cpp +0 -1
- esphome/components/qmp6988/qmp6988.cpp +0 -2
- esphome/components/qspi_dbi/display.py +2 -3
- esphome/components/qspi_dbi/qspi_dbi.cpp +0 -2
- esphome/components/qwiic_pir/binary_sensor.py +2 -3
- esphome/components/qwiic_pir/qwiic_pir.cpp +0 -2
- esphome/components/rc522/rc522.cpp +9 -31
- esphome/components/rc522_spi/rc522_spi.cpp +0 -1
- esphome/components/remote_base/__init__.py +5 -6
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -1
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +0 -1
- esphome/components/remote_receiver/remote_receiver_libretiny.cpp +0 -1
- esphome/components/remote_transmitter/__init__.py +26 -0
- esphome/components/remote_transmitter/automation.h +18 -0
- esphome/components/remote_transmitter/remote_transmitter.h +2 -1
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -1
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +2 -0
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +2 -0
- esphome/components/resampler/speaker/__init__.py +4 -5
- esphome/components/rf_bridge/__init__.py +4 -8
- esphome/components/rotary_encoder/rotary_encoder.cpp +0 -2
- esphome/components/rp2040/__init__.py +3 -1
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +0 -2
- esphome/components/rp2040_pio_led_strip/light.py +1 -2
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -5
- esphome/components/rpi_dpi_rgb/display.py +13 -15
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -3
- esphome/components/runtime_stats/__init__.py +34 -0
- esphome/components/runtime_stats/runtime_stats.cpp +102 -0
- esphome/components/runtime_stats/runtime_stats.h +132 -0
- esphome/components/scd30/scd30.cpp +0 -2
- esphome/components/scd30/sensor.py +1 -2
- esphome/components/scd4x/scd4x.cpp +0 -1
- esphome/components/scd4x/sensor.py +1 -3
- esphome/components/sdl/display.py +3 -1
- esphome/components/sdl/sdl_esphome.cpp +0 -2
- esphome/components/sdp3x/sdp3x.cpp +0 -2
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +0 -2
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +0 -3
- esphome/components/select/__init__.py +2 -3
- esphome/components/select/select_traits.cpp +1 -1
- esphome/components/select/select_traits.h +1 -1
- esphome/components/sen0321/sen0321.cpp +0 -1
- esphome/components/sen5x/sen5x.cpp +0 -2
- esphome/components/sensor/__init__.py +36 -4
- esphome/components/sensor/filter.cpp +49 -10
- esphome/components/sensor/filter.h +22 -7
- esphome/components/sensor/sensor.cpp +0 -1
- esphome/components/sensor/sensor.h +0 -9
- esphome/components/sfa30/sfa30.cpp +0 -4
- esphome/components/sgp30/sgp30.cpp +0 -2
- esphome/components/sgp4x/sensor.py +1 -1
- esphome/components/sgp4x/sgp4x.cpp +0 -2
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +0 -2
- esphome/components/sht3xd/sht3xd.cpp +0 -2
- esphome/components/sht4x/sht4x.cpp +0 -2
- esphome/components/shtcx/shtcx.cpp +0 -1
- esphome/components/sim800l/__init__.py +2 -4
- esphome/components/sm16716/sm16716.cpp +0 -1
- esphome/components/sm2135/sm2135.cpp +0 -1
- esphome/components/sm2235/sm2235.cpp +0 -1
- esphome/components/sm2335/sm2335.cpp +0 -1
- esphome/components/sn74hc165/sn74hc165.cpp +0 -1
- esphome/components/sn74hc595/sn74hc595.cpp +0 -1
- esphome/components/sntp/sntp_component.cpp +0 -1
- esphome/components/sound_level/sensor.py +1 -1
- esphome/components/speaker/media_player/__init__.py +21 -33
- esphome/components/speaker/media_player/audio_pipeline.cpp +4 -7
- esphome/components/spi/__init__.py +29 -13
- esphome/components/spi/spi.cpp +0 -2
- esphome/components/spi_device/spi_device.cpp +1 -4
- esphome/components/sprinkler/__init__.py +4 -4
- esphome/components/sps30/sps30.cpp +0 -1
- esphome/components/ssd1306_base/__init__.py +11 -11
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +0 -1
- esphome/components/ssd1306_spi/ssd1306_spi.cpp +0 -1
- esphome/components/ssd1322_spi/ssd1322_spi.cpp +0 -1
- esphome/components/ssd1325_spi/ssd1325_spi.cpp +0 -1
- esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +0 -1
- esphome/components/ssd1327_spi/ssd1327_spi.cpp +0 -1
- esphome/components/ssd1331_spi/ssd1331_spi.cpp +0 -1
- esphome/components/ssd1351_spi/ssd1351_spi.cpp +0 -1
- esphome/components/st7567_i2c/st7567_i2c.cpp +0 -1
- esphome/components/st7567_spi/st7567_spi.cpp +0 -1
- esphome/components/st7701s/display.py +10 -14
- esphome/components/st7701s/st7701s.cpp +0 -3
- esphome/components/st7735/st7735.cpp +0 -1
- esphome/components/st7789v/st7789v.cpp +0 -1
- esphome/components/st7920/st7920.cpp +0 -1
- esphome/components/status_led/light/status_led_light.cpp +0 -2
- esphome/components/status_led/status_led.cpp +0 -1
- esphome/components/stepper/__init__.py +2 -4
- esphome/components/sts3x/sts3x.cpp +0 -1
- esphome/components/substitutions/__init__.py +10 -16
- esphome/components/substitutions/jinja.py +24 -1
- esphome/components/sun/__init__.py +2 -3
- esphome/components/switch/__init__.py +31 -1
- esphome/components/switch/automation.h +24 -0
- esphome/components/switch/switch.cpp +8 -0
- esphome/components/switch/switch.h +8 -0
- esphome/components/sx126x/sx126x.cpp +0 -2
- esphome/components/sx127x/sx127x.cpp +0 -2
- esphome/components/sx1509/__init__.py +7 -5
- esphome/components/sx1509/output/sx1509_float_output.cpp +1 -1
- esphome/components/sx1509/sx1509.cpp +0 -2
- esphome/components/syslog/esphome_syslog.cpp +1 -1
- esphome/components/tc74/tc74.cpp +0 -1
- esphome/components/tca9548a/tca9548a.cpp +0 -1
- esphome/components/tca9555/tca9555.cpp +0 -1
- esphome/components/tcs34725/tcs34725.cpp +0 -1
- esphome/components/tee501/tee501.cpp +0 -1
- esphome/components/tem3200/tem3200.cpp +0 -2
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +0 -1
- esphome/components/template/cover/template_cover.cpp +0 -1
- esphome/components/template/select/template_select.cpp +0 -1
- esphome/components/template/text/template_text.cpp +0 -2
- esphome/components/template/valve/template_valve.cpp +0 -1
- esphome/components/text/__init__.py +0 -1
- esphome/components/text/text_traits.h +2 -0
- esphome/components/text_sensor/__init__.py +2 -1
- esphome/components/text_sensor/text_sensor.cpp +0 -2
- esphome/components/text_sensor/text_sensor.h +0 -8
- esphome/components/thermostat/climate.py +4 -4
- esphome/components/time/__init__.py +7 -4
- esphome/components/time/real_time_clock.cpp +16 -3
- esphome/components/tlc59208f/tlc59208f_output.cpp +0 -2
- esphome/components/tlc5947/tlc5947.cpp +0 -2
- esphome/components/tlc5971/tlc5971.cpp +0 -2
- esphome/components/tm1621/tm1621.cpp +0 -2
- esphome/components/tm1637/tm1637.cpp +0 -2
- esphome/components/tm1638/tm1638.cpp +0 -2
- esphome/components/tm1651/__init__.py +45 -48
- esphome/components/tm1651/tm1651.cpp +213 -47
- esphome/components/tm1651/tm1651.h +37 -32
- esphome/components/tmp117/tmp117.cpp +0 -2
- esphome/components/tsl2561/tsl2561.cpp +0 -1
- esphome/components/tsl2591/tsl2591.cpp +0 -1
- esphome/components/tt21100/touchscreen/tt21100.cpp +0 -2
- esphome/components/ttp229_bsf/ttp229_bsf.cpp +0 -1
- esphome/components/ttp229_lsf/ttp229_lsf.cpp +0 -1
- esphome/components/tuya/climate/__init__.py +9 -10
- esphome/components/tuya/number/__init__.py +8 -6
- esphome/components/tx20/tx20.cpp +0 -1
- esphome/components/uart/uart_component_esp32_arduino.cpp +0 -1
- esphome/components/uart/uart_component_esp8266.cpp +0 -1
- esphome/components/uart/uart_component_esp_idf.cpp +0 -2
- esphome/components/uart/uart_component_libretiny.cpp +0 -2
- esphome/components/uart/uart_component_rp2040.cpp +0 -2
- esphome/components/udp/__init__.py +1 -1
- esphome/components/ufire_ec/sensor.py +1 -2
- esphome/components/ufire_ec/ufire_ec.cpp +0 -2
- esphome/components/ufire_ise/sensor.py +1 -2
- esphome/components/ufire_ise/ufire_ise.cpp +0 -2
- esphome/components/ultrasonic/ultrasonic_sensor.cpp +0 -1
- esphome/components/update/__init__.py +0 -1
- esphome/components/uptime/sensor/uptime_seconds_sensor.cpp +0 -1
- esphome/components/uptime/sensor/uptime_seconds_sensor.h +0 -2
- esphome/components/usb_host/usb_host_client.cpp +0 -1
- esphome/components/usb_host/usb_host_component.cpp +0 -1
- esphome/components/valve/__init__.py +0 -1
- esphome/components/veml3235/veml3235.cpp +0 -3
- esphome/components/veml7700/veml7700.cpp +0 -2
- esphome/components/version/version_text_sensor.cpp +0 -1
- esphome/components/version/version_text_sensor.h +0 -1
- esphome/components/vl53l0x/vl53l0x_sensor.cpp +0 -4
- esphome/components/voice_assistant/voice_assistant.cpp +9 -8
- esphome/components/web_server/__init__.py +13 -0
- esphome/components/web_server/web_server.cpp +187 -352
- esphome/components/web_server/web_server.h +61 -1
- esphome/components/web_server_base/__init__.py +1 -1
- esphome/components/web_server_base/web_server_base.cpp +2 -0
- esphome/components/web_server_base/web_server_base.h +6 -0
- esphome/components/web_server_idf/web_server_idf.cpp +10 -8
- esphome/components/web_server_idf/web_server_idf.h +2 -0
- esphome/components/weikai_i2c/weikai_i2c.cpp +1 -2
- esphome/components/weikai_spi/weikai_spi.cpp +1 -1
- esphome/components/wifi/__init__.py +8 -43
- esphome/components/wifi/wifi_component.cpp +100 -36
- esphome/components/wifi/wifi_component.h +5 -1
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -0
- esphome/components/wifi/wifi_component_esp_idf.cpp +30 -0
- esphome/components/wifi_info/wifi_info_text_sensor.h +0 -6
- esphome/components/wifi_signal/wifi_signal_sensor.h +0 -1
- esphome/components/wireguard/wireguard.cpp +0 -2
- esphome/components/x9c/x9c.cpp +0 -2
- esphome/components/xgzp68xx/xgzp68xx.cpp +0 -1
- esphome/components/xl9535/xl9535.cpp +0 -2
- esphome/components/zephyr/__init__.py +252 -0
- esphome/components/zephyr/const.py +16 -0
- esphome/components/zephyr/core.cpp +90 -0
- esphome/components/zephyr/gpio.cpp +120 -0
- esphome/components/zephyr/gpio.h +38 -0
- esphome/components/zephyr/pre_build.py.script +4 -0
- esphome/components/zephyr/preferences.cpp +156 -0
- esphome/components/zephyr/preferences.h +13 -0
- esphome/config.py +38 -16
- esphome/config_helpers.py +1 -2
- esphome/config_validation.py +8 -15
- esphome/const.py +26 -1
- esphome/core/__init__.py +88 -51
- esphome/core/application.cpp +75 -21
- esphome/core/application.h +106 -171
- esphome/core/color.h +10 -0
- esphome/core/component.cpp +41 -25
- esphome/core/component.h +9 -6
- esphome/core/component_iterator.cpp +61 -261
- esphome/core/component_iterator.h +15 -0
- esphome/core/config.py +26 -11
- esphome/core/defines.h +40 -2
- esphome/core/entity_base.h +18 -0
- esphome/core/entity_helpers.py +41 -6
- esphome/core/helpers.cpp +8 -15
- esphome/core/helpers.h +60 -6
- esphome/core/lock_free_queue.h +1 -1
- esphome/core/scheduler.cpp +277 -74
- esphome/core/scheduler.h +89 -27
- esphome/cpp_generator.py +2 -6
- esphome/cpp_helpers.py +1 -1
- esphome/dashboard/dashboard.py +2 -3
- esphome/dashboard/dns.py +2 -8
- esphome/dashboard/web_server.py +34 -19
- esphome/espota2.py +1 -4
- esphome/git.py +3 -1
- esphome/helpers.py +23 -4
- esphome/log.py +3 -1
- esphome/mqtt.py +3 -5
- esphome/platformio_api.py +7 -4
- esphome/types.py +12 -0
- esphome/util.py +20 -8
- esphome/voluptuous_schema.py +4 -3
- esphome/vscode.py +1 -2
- esphome/wizard.py +1 -4
- esphome/writer.py +5 -107
- esphome/yaml_util.py +7 -5
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/METADATA +12 -13
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/RECORD +753 -673
- esphome/components/mipi_spi/models/commands.py +0 -82
- /esphome/components/nfc/binary_sensor/{binary_sensor.h → nfc_binary_sensor.h} +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/WHEEL +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/top_level.txt +0 -0
|
@@ -72,70 +72,57 @@ class I2SAudioSpeaker : public I2SAudioOut, public speaker::Speaker, public Comp
|
|
|
72
72
|
|
|
73
73
|
protected:
|
|
74
74
|
/// @brief Function for the FreeRTOS task handling audio output.
|
|
75
|
-
///
|
|
76
|
-
///
|
|
77
|
-
///
|
|
78
|
-
///
|
|
79
|
-
/// stops the I2S driver, unlocks the I2S port, and deletes the task. It communicates the state and any errors via
|
|
80
|
-
/// event_group_.
|
|
75
|
+
/// Allocates space for the buffers, reads audio from the ring buffer and writes audio to the I2S port. Stops
|
|
76
|
+
/// immmiately after receiving the COMMAND_STOP signal and stops only after the ring buffer is empty after receiving
|
|
77
|
+
/// the COMMAND_STOP_GRACEFULLY signal. Stops if the ring buffer hasn't read data for more than timeout_ milliseconds.
|
|
78
|
+
/// When stopping, it deallocates the buffers. It communicates its state and any errors via ``event_group_``.
|
|
81
79
|
/// @param params I2SAudioSpeaker component
|
|
82
80
|
static void speaker_task(void *params);
|
|
83
81
|
|
|
84
|
-
/// @brief Sends a stop command to the speaker task via event_group_
|
|
82
|
+
/// @brief Sends a stop command to the speaker task via ``event_group_``.
|
|
85
83
|
/// @param wait_on_empty If false, sends the COMMAND_STOP signal. If true, sends the COMMAND_STOP_GRACEFULLY signal.
|
|
86
84
|
void stop_(bool wait_on_empty);
|
|
87
85
|
|
|
88
|
-
/// @brief Sets the corresponding ERR_ESP event group bits.
|
|
89
|
-
/// @param err esp_err_t error code.
|
|
90
|
-
/// @return True if an ERR_ESP bit is set and false if err == ESP_OK
|
|
91
|
-
bool send_esp_err_to_event_group_(esp_err_t err);
|
|
92
|
-
|
|
93
86
|
#ifndef USE_I2S_LEGACY
|
|
94
|
-
|
|
87
|
+
/// @brief Callback function used to send playback timestamps the to the speaker task.
|
|
88
|
+
/// @param handle (i2s_chan_handle_t)
|
|
89
|
+
/// @param event (i2s_event_data_t)
|
|
90
|
+
/// @param user_ctx (void*) User context pointer that the callback accesses
|
|
91
|
+
/// @return True if a higher priority task was interrupted
|
|
92
|
+
static bool i2s_on_sent_cb(i2s_chan_handle_t handle, i2s_event_data_t *event, void *user_ctx);
|
|
95
93
|
#endif
|
|
96
94
|
|
|
97
|
-
/// @brief Allocates the data buffer and ring buffer
|
|
98
|
-
/// @param data_buffer_size Number of bytes to allocate for the data buffer.
|
|
99
|
-
/// @param ring_buffer_size Number of bytes to allocate for the ring buffer.
|
|
100
|
-
/// @return ESP_ERR_NO_MEM if either buffer fails to allocate
|
|
101
|
-
/// ESP_OK if successful
|
|
102
|
-
esp_err_t allocate_buffers_(size_t data_buffer_size, size_t ring_buffer_size);
|
|
103
|
-
|
|
104
95
|
/// @brief Starts the ESP32 I2S driver.
|
|
105
96
|
/// Attempts to lock the I2S port, starts the I2S driver using the passed in stream information, and sets the data out
|
|
106
|
-
/// pin. If it fails, it will unlock the I2S port and
|
|
97
|
+
/// pin. If it fails, it will unlock the I2S port and uninstalls the driver, if necessary.
|
|
107
98
|
/// @param audio_stream_info Stream information for the I2S driver.
|
|
108
99
|
/// @return ESP_ERR_NOT_ALLOWED if the I2S port can't play the incoming audio stream.
|
|
109
100
|
/// ESP_ERR_INVALID_STATE if the I2S port is already locked.
|
|
110
|
-
/// ESP_ERR_INVALID_ARG if
|
|
101
|
+
/// ESP_ERR_INVALID_ARG if installing the driver or setting the data outpin fails due to a parameter error.
|
|
111
102
|
/// ESP_ERR_NO_MEM if the driver fails to install due to a memory allocation error.
|
|
112
|
-
/// ESP_FAIL if setting the data out pin fails due to an IO error
|
|
103
|
+
/// ESP_FAIL if setting the data out pin fails due to an IO error
|
|
104
|
+
/// ESP_OK if successful
|
|
113
105
|
esp_err_t start_i2s_driver_(audio::AudioStreamInfo &audio_stream_info);
|
|
114
106
|
|
|
115
|
-
/// @brief
|
|
116
|
-
|
|
117
|
-
/// the speaker_task itself.
|
|
118
|
-
/// @param buffer_size The allocated size of the data_buffer_.
|
|
119
|
-
void delete_task_(size_t buffer_size);
|
|
107
|
+
/// @brief Stops the I2S driver and unlocks the I2S port
|
|
108
|
+
void stop_i2s_driver_();
|
|
120
109
|
|
|
121
110
|
TaskHandle_t speaker_task_handle_{nullptr};
|
|
122
111
|
EventGroupHandle_t event_group_{nullptr};
|
|
123
112
|
|
|
124
113
|
QueueHandle_t i2s_event_queue_;
|
|
125
114
|
|
|
126
|
-
|
|
127
|
-
std::shared_ptr<RingBuffer> audio_ring_buffer_;
|
|
115
|
+
std::weak_ptr<RingBuffer> audio_ring_buffer_;
|
|
128
116
|
|
|
129
117
|
uint32_t buffer_duration_ms_;
|
|
130
118
|
|
|
131
119
|
optional<uint32_t> timeout_;
|
|
132
120
|
|
|
133
|
-
bool task_created_{false};
|
|
134
121
|
bool pause_state_{false};
|
|
135
122
|
|
|
136
123
|
int16_t q15_volume_factor_{INT16_MAX};
|
|
137
124
|
|
|
138
|
-
|
|
125
|
+
audio::AudioStreamInfo current_stream_info_; // The currently loaded driver's stream info
|
|
139
126
|
|
|
140
127
|
#ifdef USE_I2S_LEGACY
|
|
141
128
|
#if SOC_I2S_SUPPORTS_DAC
|
|
@@ -148,8 +135,6 @@ class I2SAudioSpeaker : public I2SAudioOut, public speaker::Speaker, public Comp
|
|
|
148
135
|
std::string i2s_comm_fmt_;
|
|
149
136
|
i2s_chan_handle_t tx_handle_;
|
|
150
137
|
#endif
|
|
151
|
-
|
|
152
|
-
uint32_t accumulated_frames_written_{0};
|
|
153
138
|
};
|
|
154
139
|
|
|
155
140
|
} // namespace i2s_audio
|
|
@@ -138,9 +138,10 @@ def _validate(config):
|
|
|
138
138
|
]:
|
|
139
139
|
raise cv.Invalid("Selected model can't run on ESP8266.")
|
|
140
140
|
|
|
141
|
-
if model == "CUSTOM"
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
if model == "CUSTOM" and (
|
|
142
|
+
CONF_INIT_SEQUENCE not in config or CONF_DIMENSIONS not in config
|
|
143
|
+
):
|
|
144
|
+
raise cv.Invalid("CUSTOM model requires init_sequence and dimensions")
|
|
144
145
|
|
|
145
146
|
return config
|
|
146
147
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import contextlib
|
|
3
4
|
import hashlib
|
|
4
5
|
import io
|
|
5
6
|
import logging
|
|
@@ -107,6 +108,24 @@ class ImageEncoder:
|
|
|
107
108
|
:return:
|
|
108
109
|
"""
|
|
109
110
|
|
|
111
|
+
@classmethod
|
|
112
|
+
def is_endian(cls) -> bool:
|
|
113
|
+
"""
|
|
114
|
+
Check if the image encoder supports endianness configuration
|
|
115
|
+
"""
|
|
116
|
+
return getattr(cls, "set_big_endian", None) is not None
|
|
117
|
+
|
|
118
|
+
@classmethod
|
|
119
|
+
def get_options(cls) -> list[str]:
|
|
120
|
+
"""
|
|
121
|
+
Get the available options for this image encoder
|
|
122
|
+
"""
|
|
123
|
+
options = [*OPTIONS]
|
|
124
|
+
if not cls.is_endian():
|
|
125
|
+
options.remove(CONF_BYTE_ORDER)
|
|
126
|
+
options.append(CONF_RAW_DATA_ID)
|
|
127
|
+
return options
|
|
128
|
+
|
|
110
129
|
|
|
111
130
|
def is_alpha_only(image: Image):
|
|
112
131
|
"""
|
|
@@ -174,9 +193,8 @@ class ImageGrayscale(ImageEncoder):
|
|
|
174
193
|
b = 1
|
|
175
194
|
if self.invert_alpha:
|
|
176
195
|
b ^= 0xFF
|
|
177
|
-
if self.transparency == CONF_ALPHA_CHANNEL:
|
|
178
|
-
|
|
179
|
-
b = a
|
|
196
|
+
if self.transparency == CONF_ALPHA_CHANNEL and a != 0xFF:
|
|
197
|
+
b = a
|
|
180
198
|
self.data[self.index] = b
|
|
181
199
|
self.index += 1
|
|
182
200
|
|
|
@@ -446,13 +464,14 @@ def validate_type(image_types):
|
|
|
446
464
|
return validate
|
|
447
465
|
|
|
448
466
|
|
|
449
|
-
def validate_settings(value):
|
|
467
|
+
def validate_settings(value, path=()):
|
|
450
468
|
"""
|
|
451
469
|
Validate the settings for a single image configuration.
|
|
452
470
|
"""
|
|
453
471
|
conf_type = value[CONF_TYPE]
|
|
454
472
|
type_class = IMAGE_TYPE[conf_type]
|
|
455
|
-
|
|
473
|
+
|
|
474
|
+
transparency = value.get(CONF_TRANSPARENCY, CONF_OPAQUE).lower()
|
|
456
475
|
if transparency not in type_class.allow_config:
|
|
457
476
|
raise cv.Invalid(
|
|
458
477
|
f"Image format '{conf_type}' cannot have transparency: {transparency}"
|
|
@@ -464,11 +483,10 @@ def validate_settings(value):
|
|
|
464
483
|
and CONF_INVERT_ALPHA not in type_class.allow_config
|
|
465
484
|
):
|
|
466
485
|
raise cv.Invalid("No alpha channel to invert")
|
|
467
|
-
if value.get(CONF_BYTE_ORDER) is not None and not
|
|
468
|
-
getattr(type_class, "set_big_endian", None)
|
|
469
|
-
):
|
|
486
|
+
if value.get(CONF_BYTE_ORDER) is not None and not type_class.is_endian():
|
|
470
487
|
raise cv.Invalid(
|
|
471
|
-
f"Image format '{conf_type}' does not support byte order configuration"
|
|
488
|
+
f"Image format '{conf_type}' does not support byte order configuration",
|
|
489
|
+
path=path,
|
|
472
490
|
)
|
|
473
491
|
if file := value.get(CONF_FILE):
|
|
474
492
|
file = Path(file)
|
|
@@ -479,7 +497,7 @@ def validate_settings(value):
|
|
|
479
497
|
Image.open(file)
|
|
480
498
|
except UnidentifiedImageError as exc:
|
|
481
499
|
raise cv.Invalid(
|
|
482
|
-
f"File can't be opened as image: {file.absolute()}"
|
|
500
|
+
f"File can't be opened as image: {file.absolute()}", path=path
|
|
483
501
|
) from exc
|
|
484
502
|
return value
|
|
485
503
|
|
|
@@ -499,6 +517,10 @@ OPTIONS_SCHEMA = {
|
|
|
499
517
|
cv.Optional(CONF_INVERT_ALPHA, default=False): cv.boolean,
|
|
500
518
|
cv.Optional(CONF_BYTE_ORDER): cv.one_of("BIG_ENDIAN", "LITTLE_ENDIAN", upper=True),
|
|
501
519
|
cv.Optional(CONF_TRANSPARENCY, default=CONF_OPAQUE): validate_transparency(),
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
DEFAULTS_SCHEMA = {
|
|
523
|
+
**OPTIONS_SCHEMA,
|
|
502
524
|
cv.Optional(CONF_TYPE): validate_type(IMAGE_TYPE),
|
|
503
525
|
}
|
|
504
526
|
|
|
@@ -510,47 +532,61 @@ IMAGE_SCHEMA_NO_DEFAULTS = {
|
|
|
510
532
|
**{cv.Optional(key): OPTIONS_SCHEMA[key] for key in OPTIONS},
|
|
511
533
|
}
|
|
512
534
|
|
|
513
|
-
|
|
535
|
+
IMAGE_SCHEMA = cv.Schema(
|
|
514
536
|
{
|
|
515
537
|
**IMAGE_ID_SCHEMA,
|
|
516
538
|
**OPTIONS_SCHEMA,
|
|
517
|
-
}
|
|
518
|
-
).add_extra(validate_settings)
|
|
519
|
-
|
|
520
|
-
IMAGE_SCHEMA = BASE_SCHEMA.extend(
|
|
521
|
-
{
|
|
522
539
|
cv.Required(CONF_TYPE): validate_type(IMAGE_TYPE),
|
|
523
540
|
}
|
|
524
541
|
)
|
|
525
542
|
|
|
526
543
|
|
|
544
|
+
def apply_defaults(image, defaults, path):
|
|
545
|
+
"""
|
|
546
|
+
Apply defaults to an image configuration
|
|
547
|
+
"""
|
|
548
|
+
type = image.get(CONF_TYPE, defaults.get(CONF_TYPE))
|
|
549
|
+
if type is None:
|
|
550
|
+
raise cv.Invalid(
|
|
551
|
+
"Type is required either in the image config or in the defaults", path=path
|
|
552
|
+
)
|
|
553
|
+
type_class = IMAGE_TYPE[type]
|
|
554
|
+
config = {
|
|
555
|
+
**{key: image.get(key, defaults.get(key)) for key in type_class.get_options()},
|
|
556
|
+
**{key.schema: image[key.schema] for key in IMAGE_ID_SCHEMA},
|
|
557
|
+
CONF_TYPE: image.get(CONF_TYPE, defaults.get(CONF_TYPE)),
|
|
558
|
+
}
|
|
559
|
+
validate_settings(config, path)
|
|
560
|
+
return config
|
|
561
|
+
|
|
562
|
+
|
|
527
563
|
def validate_defaults(value):
|
|
528
564
|
"""
|
|
529
|
-
|
|
565
|
+
Apply defaults to the images in the configuration and flatten to a single list.
|
|
530
566
|
"""
|
|
531
567
|
defaults = value[CONF_DEFAULTS]
|
|
532
568
|
result = []
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
if (
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
569
|
+
# Apply defaults to the images: list and add the list entries to the result
|
|
570
|
+
for index, image in enumerate(value.get(CONF_IMAGES, [])):
|
|
571
|
+
result.append(apply_defaults(image, defaults, [CONF_IMAGES, index]))
|
|
572
|
+
|
|
573
|
+
# Apply defaults to images under the type keys and add them to the result
|
|
574
|
+
for image_type, type_config in value.items():
|
|
575
|
+
type_upper = image_type.upper()
|
|
576
|
+
if type_upper not in IMAGE_TYPE:
|
|
577
|
+
continue
|
|
578
|
+
type_class = IMAGE_TYPE[type_upper]
|
|
579
|
+
if isinstance(type_config, list):
|
|
580
|
+
# If the type is a list, apply defaults to each entry
|
|
581
|
+
for index, image in enumerate(type_config):
|
|
582
|
+
result.append(apply_defaults(image, defaults, [image_type, index]))
|
|
583
|
+
else:
|
|
584
|
+
# Handle transparency options for the type
|
|
585
|
+
for trans_type in set(type_class.allow_config).intersection(type_config):
|
|
586
|
+
for index, image in enumerate(type_config[trans_type]):
|
|
587
|
+
result.append(
|
|
588
|
+
apply_defaults(image, defaults, [image_type, trans_type, index])
|
|
589
|
+
)
|
|
554
590
|
return result
|
|
555
591
|
|
|
556
592
|
|
|
@@ -562,16 +598,20 @@ def typed_image_schema(image_type):
|
|
|
562
598
|
cv.Schema(
|
|
563
599
|
{
|
|
564
600
|
cv.Optional(t.lower()): cv.ensure_list(
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
601
|
+
{
|
|
602
|
+
**IMAGE_ID_SCHEMA,
|
|
603
|
+
**{
|
|
604
|
+
cv.Optional(key): OPTIONS_SCHEMA[key]
|
|
605
|
+
for key in OPTIONS
|
|
606
|
+
if key != CONF_TRANSPARENCY
|
|
607
|
+
},
|
|
608
|
+
cv.Optional(
|
|
609
|
+
CONF_TRANSPARENCY, default=t
|
|
610
|
+
): validate_transparency((t,)),
|
|
611
|
+
cv.Optional(CONF_TYPE, default=image_type): validate_type(
|
|
612
|
+
(image_type,)
|
|
613
|
+
),
|
|
614
|
+
}
|
|
575
615
|
)
|
|
576
616
|
for t in IMAGE_TYPE[image_type].allow_config.intersection(
|
|
577
617
|
TRANSPARENCY_TYPES
|
|
@@ -580,46 +620,44 @@ def typed_image_schema(image_type):
|
|
|
580
620
|
),
|
|
581
621
|
# Allow a default configuration with no transparency preselected
|
|
582
622
|
cv.ensure_list(
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
(image_type,)
|
|
590
|
-
),
|
|
591
|
-
}
|
|
592
|
-
)
|
|
623
|
+
{
|
|
624
|
+
**IMAGE_SCHEMA_NO_DEFAULTS,
|
|
625
|
+
cv.Optional(CONF_TYPE, default=image_type): validate_type(
|
|
626
|
+
(image_type,)
|
|
627
|
+
),
|
|
628
|
+
}
|
|
593
629
|
),
|
|
594
630
|
)
|
|
595
631
|
|
|
596
632
|
|
|
597
633
|
# The config schema can be a (possibly empty) single list of images,
|
|
598
|
-
# or a dictionary
|
|
599
|
-
# or a dictionary with keys `defaults:` and `images:`
|
|
634
|
+
# or a dictionary with optional keys `defaults:`, `images:` and the image types
|
|
600
635
|
|
|
601
636
|
|
|
602
|
-
def _config_schema(
|
|
603
|
-
if isinstance(
|
|
604
|
-
|
|
605
|
-
|
|
637
|
+
def _config_schema(value):
|
|
638
|
+
if isinstance(value, list) or (
|
|
639
|
+
isinstance(value, dict) and (CONF_ID in value or CONF_FILE in value)
|
|
640
|
+
):
|
|
641
|
+
return cv.ensure_list(cv.All(IMAGE_SCHEMA, validate_settings))(value)
|
|
642
|
+
if not isinstance(value, dict):
|
|
606
643
|
raise cv.Invalid(
|
|
607
|
-
"Badly formed image configuration, expected a list or a dictionary"
|
|
608
|
-
)
|
|
609
|
-
if CONF_DEFAULTS in config or CONF_IMAGES in config:
|
|
610
|
-
return validate_defaults(
|
|
611
|
-
cv.Schema(
|
|
612
|
-
{
|
|
613
|
-
cv.Required(CONF_DEFAULTS): OPTIONS_SCHEMA,
|
|
614
|
-
cv.Required(CONF_IMAGES): cv.ensure_list(IMAGE_SCHEMA_NO_DEFAULTS),
|
|
615
|
-
}
|
|
616
|
-
)(config)
|
|
644
|
+
"Badly formed image configuration, expected a list or a dictionary",
|
|
617
645
|
)
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
646
|
+
return cv.All(
|
|
647
|
+
cv.Schema(
|
|
648
|
+
{
|
|
649
|
+
cv.Optional(CONF_DEFAULTS, default={}): DEFAULTS_SCHEMA,
|
|
650
|
+
cv.Optional(CONF_IMAGES, default=[]): cv.ensure_list(
|
|
651
|
+
{
|
|
652
|
+
**IMAGE_SCHEMA_NO_DEFAULTS,
|
|
653
|
+
cv.Optional(CONF_TYPE): validate_type(IMAGE_TYPE),
|
|
654
|
+
}
|
|
655
|
+
),
|
|
656
|
+
**{cv.Optional(t.lower()): typed_image_schema(t) for t in IMAGE_TYPE},
|
|
657
|
+
}
|
|
658
|
+
),
|
|
659
|
+
validate_defaults,
|
|
660
|
+
)(value)
|
|
623
661
|
|
|
624
662
|
|
|
625
663
|
CONFIG_SCHEMA = _config_schema
|
|
@@ -668,14 +706,12 @@ async def write_image(config, all_frames=False):
|
|
|
668
706
|
else Image.Dither.FLOYDSTEINBERG
|
|
669
707
|
)
|
|
670
708
|
type = config[CONF_TYPE]
|
|
671
|
-
transparency = config
|
|
709
|
+
transparency = config.get(CONF_TRANSPARENCY, CONF_OPAQUE)
|
|
672
710
|
invert_alpha = config[CONF_INVERT_ALPHA]
|
|
673
711
|
frame_count = 1
|
|
674
712
|
if all_frames:
|
|
675
|
-
|
|
713
|
+
with contextlib.suppress(AttributeError):
|
|
676
714
|
frame_count = image.n_frames
|
|
677
|
-
except AttributeError:
|
|
678
|
-
pass
|
|
679
715
|
if frame_count <= 1:
|
|
680
716
|
_LOGGER.warning("Image file %s has no animation frames", path)
|
|
681
717
|
|
|
@@ -701,14 +737,9 @@ async def write_image(config, all_frames=False):
|
|
|
701
737
|
|
|
702
738
|
|
|
703
739
|
async def to_code(config):
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
elif CONF_ID not in config:
|
|
708
|
-
for entry in config.values():
|
|
709
|
-
await to_code(entry)
|
|
710
|
-
else:
|
|
711
|
-
prog_arr, width, height, image_type, trans_value, _ = await write_image(config)
|
|
740
|
+
# By now the config should be a simple list.
|
|
741
|
+
for entry in config:
|
|
742
|
+
prog_arr, width, height, image_type, trans_value, _ = await write_image(entry)
|
|
712
743
|
cg.new_Pvariable(
|
|
713
|
-
|
|
744
|
+
entry[CONF_ID], prog_arr, width, height, image_type, trans_value
|
|
714
745
|
)
|
|
@@ -27,14 +27,13 @@ def validate_logger(config):
|
|
|
27
27
|
logger_conf = fv.full_config.get()[CONF_LOGGER]
|
|
28
28
|
if logger_conf[CONF_BAUD_RATE] == 0:
|
|
29
29
|
raise cv.Invalid("improv_serial requires the logger baud_rate to be not 0")
|
|
30
|
-
if CORE.using_esp_idf
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
)
|
|
30
|
+
if CORE.using_esp_idf and (
|
|
31
|
+
logger_conf[CONF_HARDWARE_UART] == USB_CDC
|
|
32
|
+
and get_esp32_variant() == VARIANT_ESP32S3
|
|
33
|
+
):
|
|
34
|
+
raise cv.Invalid(
|
|
35
|
+
"improv_serial does not support the selected logger hardware_uart"
|
|
36
|
+
)
|
|
38
37
|
return config
|
|
39
38
|
|
|
40
39
|
|
|
@@ -34,7 +34,6 @@ static const uint8_t INA219_REGISTER_CURRENT = 0x04;
|
|
|
34
34
|
static const uint8_t INA219_REGISTER_CALIBRATION = 0x05;
|
|
35
35
|
|
|
36
36
|
void INA219Component::setup() {
|
|
37
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
38
37
|
// Config Register
|
|
39
38
|
// 0bx000000000000000 << 15 RESET Bit (1 -> trigger reset)
|
|
40
39
|
if (!this->write_byte_16(INA219_REGISTER_CONFIG, 0x8000)) {
|
|
@@ -37,8 +37,6 @@ static const uint16_t INA226_ADC_TIMES[] = {140, 204, 332, 588, 1100, 2116, 4156
|
|
|
37
37
|
static const uint16_t INA226_ADC_AVG_SAMPLES[] = {1, 4, 16, 64, 128, 256, 512, 1024};
|
|
38
38
|
|
|
39
39
|
void INA226Component::setup() {
|
|
40
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
41
|
-
|
|
42
40
|
ConfigurationRegister config;
|
|
43
41
|
|
|
44
42
|
config.reset = 1;
|
|
@@ -35,8 +35,6 @@ static const uint8_t INA260_REGISTER_MANUFACTURE_ID = 0xFE;
|
|
|
35
35
|
static const uint8_t INA260_REGISTER_DEVICE_ID = 0xFF;
|
|
36
36
|
|
|
37
37
|
void INA260Component::setup() {
|
|
38
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
39
|
-
|
|
40
38
|
// Reset device on setup
|
|
41
39
|
if (!this->write_byte_16(INA260_REGISTER_CONFIG, 0x8000)) {
|
|
42
40
|
this->error_code_ = DEVICE_RESET_FAILED;
|
|
@@ -78,11 +78,8 @@ def validate_model_config(config):
|
|
|
78
78
|
model = config[CONF_MODEL]
|
|
79
79
|
|
|
80
80
|
for key in config:
|
|
81
|
-
if key in SENSOR_MODEL_OPTIONS:
|
|
82
|
-
|
|
83
|
-
raise cv.Invalid(
|
|
84
|
-
f"Device model '{model}' does not support '{key}' sensor"
|
|
85
|
-
)
|
|
81
|
+
if key in SENSOR_MODEL_OPTIONS and model not in SENSOR_MODEL_OPTIONS[key]:
|
|
82
|
+
raise cv.Invalid(f"Device model '{model}' does not support '{key}' sensor")
|
|
86
83
|
|
|
87
84
|
tempco = config[CONF_TEMPERATURE_COEFFICIENT]
|
|
88
85
|
if tempco > 0 and model not in ["INA228", "INA229"]:
|
|
@@ -50,8 +50,6 @@ static bool check_model_and_device_match(INAModel model, uint16_t dev_id) {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
void INA2XX::setup() {
|
|
53
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
54
|
-
|
|
55
53
|
if (!this->reset_config_()) {
|
|
56
54
|
ESP_LOGE(TAG, "Reset failed, check connection");
|
|
57
55
|
this->mark_failed();
|
|
@@ -22,7 +22,6 @@ static const uint8_t INA3221_REGISTER_CHANNEL3_BUS_VOLTAGE = 0x06;
|
|
|
22
22
|
// A0 = SCL -> 0x43
|
|
23
23
|
|
|
24
24
|
void INA3221Component::setup() {
|
|
25
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
26
25
|
// Config Register
|
|
27
26
|
// 0bx000000000000000 << 15 RESET Bit (1 -> trigger reset)
|
|
28
27
|
if (!this->write_byte_16(INA3221_REGISTER_CONFIG, 0x8000)) {
|
|
@@ -84,8 +84,6 @@ void InternalTemperatureSensor::setup() {
|
|
|
84
84
|
#if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32S2) || \
|
|
85
85
|
defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32H2) || defined(USE_ESP32_VARIANT_ESP32C2) || \
|
|
86
86
|
defined(USE_ESP32_VARIANT_ESP32P4)
|
|
87
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
88
|
-
|
|
89
87
|
temperature_sensor_config_t tsens_config = TEMPERATURE_SENSOR_CONFIG_DEFAULT(-10, 80);
|
|
90
88
|
|
|
91
89
|
esp_err_t result = temperature_sensor_install(&tsens_config, &tsensNew);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include "esphome/core/component.h"
|
|
4
|
+
#include "esphome/core/log.h"
|
|
4
5
|
#include "esphome/core/automation.h"
|
|
5
6
|
|
|
6
7
|
namespace esphome {
|
|
@@ -8,16 +9,12 @@ namespace interval {
|
|
|
8
9
|
|
|
9
10
|
class IntervalTrigger : public Trigger<>, public PollingComponent {
|
|
10
11
|
public:
|
|
11
|
-
void update() override {
|
|
12
|
-
if (this->started_)
|
|
13
|
-
this->trigger();
|
|
14
|
-
}
|
|
12
|
+
void update() override { this->trigger(); }
|
|
15
13
|
|
|
16
14
|
void setup() override {
|
|
17
|
-
if (this->startup_delay_
|
|
18
|
-
this->
|
|
19
|
-
|
|
20
|
-
this->set_timeout(this->startup_delay_, [this] { this->started_ = true; });
|
|
15
|
+
if (this->startup_delay_ != 0) {
|
|
16
|
+
this->stop_poller();
|
|
17
|
+
this->set_timeout(this->startup_delay_, [this] { this->start_poller(); });
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
20
|
|
|
@@ -25,7 +22,6 @@ class IntervalTrigger : public Trigger<>, public PollingComponent {
|
|
|
25
22
|
|
|
26
23
|
protected:
|
|
27
24
|
uint32_t startup_delay_{0};
|
|
28
|
-
bool started_{false};
|
|
29
25
|
};
|
|
30
26
|
|
|
31
27
|
} // namespace interval
|
|
@@ -14,7 +14,6 @@ static const uint8_t KMETER_INTERNAL_TEMP_VAL_REG = 0x10;
|
|
|
14
14
|
static const uint8_t KMETER_FIRMWARE_VERSION_REG = 0xFE;
|
|
15
15
|
|
|
16
16
|
void KMeterISOComponent::setup() {
|
|
17
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
18
17
|
this->error_code_ = NONE;
|
|
19
18
|
|
|
20
19
|
// Mark as not failed before initializing. Some devices will turn off sensors to save on batteries
|
|
@@ -46,7 +45,6 @@ void KMeterISOComponent::setup() {
|
|
|
46
45
|
this->mark_failed();
|
|
47
46
|
return;
|
|
48
47
|
}
|
|
49
|
-
ESP_LOGCONFIG(TAG, "The device was successfully setup.");
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
float KMeterISOComponent::get_setup_priority() const { return setup_priority::DATA; }
|
|
@@ -49,8 +49,6 @@ void Lc709203f::setup() {
|
|
|
49
49
|
// initialization code checks the return code from those functions. If they don't return
|
|
50
50
|
// NO_ERROR (0x00), that part of the initialization aborts and will be retried on the next
|
|
51
51
|
// call to update().
|
|
52
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
53
|
-
|
|
54
52
|
// Set power mode to on. Note that, unlike some other similar devices, in sleep mode the IC
|
|
55
53
|
// does not record power usage. If there is significant power consumption during sleep mode,
|
|
56
54
|
// the pack RSOC will likely no longer be correct. Because of that, I do not implement
|
|
@@ -41,9 +41,7 @@ CONFIG_SCHEMA = lcd_base.LCD_SCHEMA.extend(
|
|
|
41
41
|
async def to_code(config):
|
|
42
42
|
var = cg.new_Pvariable(config[CONF_ID])
|
|
43
43
|
await lcd_base.setup_lcd_display(var, config)
|
|
44
|
-
pins_ = []
|
|
45
|
-
for conf in config[CONF_DATA_PINS]:
|
|
46
|
-
pins_.append(await cg.gpio_pin_expression(conf))
|
|
44
|
+
pins_ = [await cg.gpio_pin_expression(conf) for conf in config[CONF_DATA_PINS]]
|
|
47
45
|
cg.add(var.set_data_pins(*pins_))
|
|
48
46
|
enable = await cg.gpio_pin_expression(config[CONF_ENABLE_PIN])
|
|
49
47
|
cg.add(var.set_enable_pin(enable))
|
|
@@ -11,7 +11,6 @@ static const uint8_t LCD_DISPLAY_BACKLIGHT_ON = 0x08;
|
|
|
11
11
|
static const uint8_t LCD_DISPLAY_BACKLIGHT_OFF = 0x00;
|
|
12
12
|
|
|
13
13
|
void PCF8574LCDDisplay::setup() {
|
|
14
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
15
14
|
this->backlight_value_ = LCD_DISPLAY_BACKLIGHT_ON;
|
|
16
15
|
if (!this->write_bytes(this->backlight_value_, nullptr, 0)) {
|
|
17
16
|
this->mark_failed();
|