esphome 2025.7.5__py3-none-any.whl → 2025.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +190 -83
- 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 +102 -52
- 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 +475 -116
- esphome/components/atm90e32/atm90e32.h +43 -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 +392 -81
- 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 +203 -60
- 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 +41 -2
- esphome/components/esp32_ble/ble.cpp +14 -10
- 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 +139 -73
- 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/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 +0 -1
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +2 -2
- 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/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 +2 -2
- 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/pipsolar.cpp +54 -42
- esphome/components/pipsolar/pipsolar.h +5 -4
- 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 +6 -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/senseair/senseair.cpp +7 -3
- esphome/components/senseair/senseair.h +11 -0
- 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 +188 -353
- 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 +17 -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 +12 -16
- esphome/const.py +26 -1
- esphome/core/__init__.py +92 -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 +45 -10
- esphome/core/helpers.cpp +8 -15
- esphome/core/helpers.h +60 -6
- esphome/core/lock_free_queue.h +1 -1
- esphome/core/scheduler.cpp +311 -77
- esphome/core/scheduler.h +141 -28
- 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 +16 -108
- esphome/yaml_util.py +7 -5
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/METADATA +13 -14
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/RECORD +755 -675
- 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.5.dist-info → esphome-2025.8.0.dist-info}/WHEEL +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/top_level.txt +0 -0
|
@@ -17,8 +17,6 @@ static const char *const TAG = "es8156";
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
void ES8156::setup() {
|
|
20
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
21
|
-
|
|
22
20
|
ES8156_ERROR_FAILED(this->write_byte(ES8156_REG02_SCLK_MODE, 0x04));
|
|
23
21
|
ES8156_ERROR_FAILED(this->write_byte(ES8156_REG20_ANALOG_SYS1, 0x2A));
|
|
24
22
|
ES8156_ERROR_FAILED(this->write_byte(ES8156_REG21_ANALOG_SYS2, 0x3C));
|
|
@@ -22,8 +22,6 @@ static const char *const TAG = "es8311";
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
void ES8311::setup() {
|
|
25
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
26
|
-
|
|
27
25
|
// Reset
|
|
28
26
|
ES8311_ERROR_FAILED(this->write_byte(ES8311_REG00_RESET, 0x1F));
|
|
29
27
|
ES8311_ERROR_FAILED(this->write_byte(ES8311_REG00_RESET, 0x00));
|
|
@@ -15,6 +15,7 @@ from esphome.const import (
|
|
|
15
15
|
CONF_FRAMEWORK,
|
|
16
16
|
CONF_IGNORE_EFUSE_CUSTOM_MAC,
|
|
17
17
|
CONF_IGNORE_EFUSE_MAC_CRC,
|
|
18
|
+
CONF_LOG_LEVEL,
|
|
18
19
|
CONF_NAME,
|
|
19
20
|
CONF_PATH,
|
|
20
21
|
CONF_PLATFORM_VERSION,
|
|
@@ -31,6 +32,7 @@ from esphome.const import (
|
|
|
31
32
|
KEY_TARGET_FRAMEWORK,
|
|
32
33
|
KEY_TARGET_PLATFORM,
|
|
33
34
|
PLATFORM_ESP32,
|
|
35
|
+
ThreadModel,
|
|
34
36
|
__version__,
|
|
35
37
|
)
|
|
36
38
|
from esphome.core import CORE, HexInt, TimePeriod
|
|
@@ -39,7 +41,7 @@ import esphome.final_validate as fv
|
|
|
39
41
|
from esphome.helpers import copy_file_if_changed, mkdir_p, write_file_if_changed
|
|
40
42
|
from esphome.types import ConfigType
|
|
41
43
|
|
|
42
|
-
from .boards import BOARDS
|
|
44
|
+
from .boards import BOARDS, STANDARD_BOARDS
|
|
43
45
|
from .const import ( # noqa
|
|
44
46
|
KEY_BOARD,
|
|
45
47
|
KEY_COMPONENTS,
|
|
@@ -75,8 +77,18 @@ CONF_ASSERTION_LEVEL = "assertion_level"
|
|
|
75
77
|
CONF_COMPILER_OPTIMIZATION = "compiler_optimization"
|
|
76
78
|
CONF_ENABLE_IDF_EXPERIMENTAL_FEATURES = "enable_idf_experimental_features"
|
|
77
79
|
CONF_ENABLE_LWIP_ASSERT = "enable_lwip_assert"
|
|
80
|
+
CONF_EXECUTE_FROM_PSRAM = "execute_from_psram"
|
|
78
81
|
CONF_RELEASE = "release"
|
|
79
82
|
|
|
83
|
+
LOG_LEVELS_IDF = [
|
|
84
|
+
"NONE",
|
|
85
|
+
"ERROR",
|
|
86
|
+
"WARN",
|
|
87
|
+
"INFO",
|
|
88
|
+
"DEBUG",
|
|
89
|
+
"VERBOSE",
|
|
90
|
+
]
|
|
91
|
+
|
|
80
92
|
ASSERTION_LEVELS = {
|
|
81
93
|
"DISABLE": "CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE",
|
|
82
94
|
"ENABLE": "CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE",
|
|
@@ -309,19 +321,19 @@ def _format_framework_espidf_version(
|
|
|
309
321
|
|
|
310
322
|
# The default/recommended arduino framework version
|
|
311
323
|
# - https://github.com/espressif/arduino-esp32/releases
|
|
312
|
-
RECOMMENDED_ARDUINO_FRAMEWORK_VERSION = cv.Version(3,
|
|
324
|
+
RECOMMENDED_ARDUINO_FRAMEWORK_VERSION = cv.Version(3, 2, 1)
|
|
313
325
|
# The platform-espressif32 version to use for arduino frameworks
|
|
314
326
|
# - https://github.com/pioarduino/platform-espressif32/releases
|
|
315
|
-
ARDUINO_PLATFORM_VERSION = cv.Version(
|
|
327
|
+
ARDUINO_PLATFORM_VERSION = cv.Version(54, 3, 21, "2")
|
|
316
328
|
|
|
317
329
|
# The default/recommended esp-idf framework version
|
|
318
330
|
# - https://github.com/espressif/esp-idf/releases
|
|
319
331
|
# - https://api.registry.platformio.org/v3/packages/platformio/tool/framework-espidf
|
|
320
|
-
RECOMMENDED_ESP_IDF_FRAMEWORK_VERSION = cv.Version(5,
|
|
332
|
+
RECOMMENDED_ESP_IDF_FRAMEWORK_VERSION = cv.Version(5, 4, 2)
|
|
321
333
|
# The platformio/espressif32 version to use for esp-idf frameworks
|
|
322
334
|
# - https://github.com/platformio/platform-espressif32/releases
|
|
323
335
|
# - https://api.registry.platformio.org/v3/packages/platformio/platform/espressif32
|
|
324
|
-
ESP_IDF_PLATFORM_VERSION = cv.Version(
|
|
336
|
+
ESP_IDF_PLATFORM_VERSION = cv.Version(54, 3, 21, "2")
|
|
325
337
|
|
|
326
338
|
# List based on https://registry.platformio.org/tools/platformio/framework-espidf/versions
|
|
327
339
|
SUPPORTED_PLATFORMIO_ESP_IDF_5X = [
|
|
@@ -356,8 +368,8 @@ SUPPORTED_PIOARDUINO_ESP_IDF_5X = [
|
|
|
356
368
|
def _arduino_check_versions(value):
|
|
357
369
|
value = value.copy()
|
|
358
370
|
lookups = {
|
|
359
|
-
"dev": (cv.Version(3,
|
|
360
|
-
"latest": (cv.Version(3,
|
|
371
|
+
"dev": (cv.Version(3, 2, 1), "https://github.com/espressif/arduino-esp32.git"),
|
|
372
|
+
"latest": (cv.Version(3, 2, 1), None),
|
|
361
373
|
"recommended": (RECOMMENDED_ARDUINO_FRAMEWORK_VERSION, None),
|
|
362
374
|
}
|
|
363
375
|
|
|
@@ -395,8 +407,8 @@ def _arduino_check_versions(value):
|
|
|
395
407
|
def _esp_idf_check_versions(value):
|
|
396
408
|
value = value.copy()
|
|
397
409
|
lookups = {
|
|
398
|
-
"dev": (cv.Version(5,
|
|
399
|
-
"latest": (cv.Version(5,
|
|
410
|
+
"dev": (cv.Version(5, 4, 2), "https://github.com/espressif/esp-idf.git"),
|
|
411
|
+
"latest": (cv.Version(5, 2, 2), None),
|
|
400
412
|
"recommended": (RECOMMENDED_ESP_IDF_FRAMEWORK_VERSION, None),
|
|
401
413
|
}
|
|
402
414
|
|
|
@@ -467,10 +479,10 @@ def _parse_platform_version(value):
|
|
|
467
479
|
try:
|
|
468
480
|
ver = cv.Version.parse(cv.version_number(value))
|
|
469
481
|
if ver.major >= 50: # a pioarduino version
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
return f"https://github.com/pioarduino/platform-espressif32/releases/download/{
|
|
482
|
+
release = f"{ver.major}.{ver.minor:02d}.{ver.patch:02d}"
|
|
483
|
+
if ver.extra:
|
|
484
|
+
release += f"-{ver.extra}"
|
|
485
|
+
return f"https://github.com/pioarduino/platform-espressif32/releases/download/{release}/platform-espressif32.zip"
|
|
474
486
|
# if platform version is a valid version constraint, prefix the default package
|
|
475
487
|
cv.platformio_version_constraint(value)
|
|
476
488
|
return f"platformio/espressif32@{value}"
|
|
@@ -487,56 +499,90 @@ def _platform_is_platformio(value):
|
|
|
487
499
|
|
|
488
500
|
|
|
489
501
|
def _detect_variant(value):
|
|
490
|
-
board = value
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
502
|
+
board = value.get(CONF_BOARD)
|
|
503
|
+
variant = value.get(CONF_VARIANT)
|
|
504
|
+
if variant and board is None:
|
|
505
|
+
# If variant is set, we can derive the board from it
|
|
506
|
+
# variant has already been validated against the known set
|
|
507
|
+
value = value.copy()
|
|
508
|
+
value[CONF_BOARD] = STANDARD_BOARDS[variant]
|
|
509
|
+
elif board in BOARDS:
|
|
510
|
+
variant = variant or BOARDS[board][KEY_VARIANT]
|
|
511
|
+
if variant != BOARDS[board][KEY_VARIANT]:
|
|
494
512
|
raise cv.Invalid(
|
|
495
513
|
f"Option '{CONF_VARIANT}' does not match selected board.",
|
|
496
514
|
path=[CONF_VARIANT],
|
|
497
515
|
)
|
|
498
516
|
value = value.copy()
|
|
499
517
|
value[CONF_VARIANT] = variant
|
|
518
|
+
elif not variant:
|
|
519
|
+
raise cv.Invalid(
|
|
520
|
+
"This board is unknown, if you are sure you want to compile with this board selection, "
|
|
521
|
+
f"override with option '{CONF_VARIANT}'",
|
|
522
|
+
path=[CONF_BOARD],
|
|
523
|
+
)
|
|
500
524
|
else:
|
|
501
|
-
if CONF_VARIANT not in value:
|
|
502
|
-
raise cv.Invalid(
|
|
503
|
-
"This board is unknown, if you are sure you want to compile with this board selection, "
|
|
504
|
-
f"override with option '{CONF_VARIANT}'",
|
|
505
|
-
path=[CONF_BOARD],
|
|
506
|
-
)
|
|
507
525
|
_LOGGER.warning(
|
|
508
|
-
"This board is unknown
|
|
526
|
+
"This board is unknown; the specified variant '%s' will be used but this may not work as expected.",
|
|
527
|
+
variant,
|
|
509
528
|
)
|
|
510
529
|
return value
|
|
511
530
|
|
|
512
531
|
|
|
513
532
|
def final_validate(config):
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
533
|
+
# Imported locally to avoid circular import issues
|
|
534
|
+
from esphome.components.psram import DOMAIN as PSRAM_DOMAIN
|
|
535
|
+
|
|
536
|
+
errs = []
|
|
537
|
+
full_config = fv.full_config.get()
|
|
538
|
+
if pio_options := full_config[CONF_ESPHOME].get(CONF_PLATFORMIO_OPTIONS):
|
|
539
|
+
pio_flash_size_key = "board_upload.flash_size"
|
|
540
|
+
pio_partitions_key = "board_build.partitions"
|
|
541
|
+
if CONF_PARTITIONS in config and pio_partitions_key in pio_options:
|
|
542
|
+
errs.append(
|
|
543
|
+
cv.Invalid(
|
|
544
|
+
f"Do not specify '{pio_partitions_key}' in '{CONF_PLATFORMIO_OPTIONS}' with '{CONF_PARTITIONS}' in esp32"
|
|
545
|
+
)
|
|
546
|
+
)
|
|
547
|
+
if pio_flash_size_key in pio_options:
|
|
548
|
+
errs.append(
|
|
549
|
+
cv.Invalid(
|
|
550
|
+
f"Please specify {CONF_FLASH_SIZE} within esp32 configuration only"
|
|
551
|
+
)
|
|
552
|
+
)
|
|
532
553
|
if (
|
|
533
554
|
config[CONF_VARIANT] != VARIANT_ESP32
|
|
534
555
|
and CONF_ADVANCED in (conf_fw := config[CONF_FRAMEWORK])
|
|
535
556
|
and CONF_IGNORE_EFUSE_MAC_CRC in conf_fw[CONF_ADVANCED]
|
|
536
557
|
):
|
|
537
|
-
|
|
538
|
-
|
|
558
|
+
errs.append(
|
|
559
|
+
cv.Invalid(
|
|
560
|
+
f"'{CONF_IGNORE_EFUSE_MAC_CRC}' is not supported on {config[CONF_VARIANT]}",
|
|
561
|
+
path=[CONF_FRAMEWORK, CONF_ADVANCED, CONF_IGNORE_EFUSE_MAC_CRC],
|
|
562
|
+
)
|
|
539
563
|
)
|
|
564
|
+
if (
|
|
565
|
+
config.get(CONF_FRAMEWORK, {})
|
|
566
|
+
.get(CONF_ADVANCED, {})
|
|
567
|
+
.get(CONF_EXECUTE_FROM_PSRAM)
|
|
568
|
+
):
|
|
569
|
+
if config[CONF_VARIANT] != VARIANT_ESP32S3:
|
|
570
|
+
errs.append(
|
|
571
|
+
cv.Invalid(
|
|
572
|
+
f"'{CONF_EXECUTE_FROM_PSRAM}' is only supported on {VARIANT_ESP32S3} variant",
|
|
573
|
+
path=[CONF_FRAMEWORK, CONF_ADVANCED, CONF_EXECUTE_FROM_PSRAM],
|
|
574
|
+
)
|
|
575
|
+
)
|
|
576
|
+
if PSRAM_DOMAIN not in full_config:
|
|
577
|
+
errs.append(
|
|
578
|
+
cv.Invalid(
|
|
579
|
+
f"'{CONF_EXECUTE_FROM_PSRAM}' requires PSRAM to be configured",
|
|
580
|
+
path=[CONF_FRAMEWORK, CONF_ADVANCED, CONF_EXECUTE_FROM_PSRAM],
|
|
581
|
+
)
|
|
582
|
+
)
|
|
583
|
+
|
|
584
|
+
if errs:
|
|
585
|
+
raise cv.MultipleInvalid(errs)
|
|
540
586
|
|
|
541
587
|
return config
|
|
542
588
|
|
|
@@ -563,6 +609,8 @@ CONF_SDKCONFIG_OPTIONS = "sdkconfig_options"
|
|
|
563
609
|
CONF_ENABLE_LWIP_DHCP_SERVER = "enable_lwip_dhcp_server"
|
|
564
610
|
CONF_ENABLE_LWIP_MDNS_QUERIES = "enable_lwip_mdns_queries"
|
|
565
611
|
CONF_ENABLE_LWIP_BRIDGE_INTERFACE = "enable_lwip_bridge_interface"
|
|
612
|
+
CONF_ENABLE_LWIP_TCPIP_CORE_LOCKING = "enable_lwip_tcpip_core_locking"
|
|
613
|
+
CONF_ENABLE_LWIP_CHECK_THREAD_SAFETY = "enable_lwip_check_thread_safety"
|
|
566
614
|
|
|
567
615
|
|
|
568
616
|
def _validate_idf_component(config: ConfigType) -> ConfigType:
|
|
@@ -585,6 +633,9 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All(
|
|
|
585
633
|
cv.Optional(CONF_SDKCONFIG_OPTIONS, default={}): {
|
|
586
634
|
cv.string_strict: cv.string_strict
|
|
587
635
|
},
|
|
636
|
+
cv.Optional(CONF_LOG_LEVEL, default="ERROR"): cv.one_of(
|
|
637
|
+
*LOG_LEVELS_IDF, upper=True
|
|
638
|
+
),
|
|
588
639
|
cv.Optional(CONF_ADVANCED, default={}): cv.Schema(
|
|
589
640
|
{
|
|
590
641
|
cv.Optional(CONF_ASSERTION_LEVEL): cv.one_of(
|
|
@@ -611,6 +662,13 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All(
|
|
|
611
662
|
cv.Optional(
|
|
612
663
|
CONF_ENABLE_LWIP_BRIDGE_INTERFACE, default=False
|
|
613
664
|
): cv.boolean,
|
|
665
|
+
cv.Optional(
|
|
666
|
+
CONF_ENABLE_LWIP_TCPIP_CORE_LOCKING, default=True
|
|
667
|
+
): cv.boolean,
|
|
668
|
+
cv.Optional(
|
|
669
|
+
CONF_ENABLE_LWIP_CHECK_THREAD_SAFETY, default=True
|
|
670
|
+
): cv.boolean,
|
|
671
|
+
cv.Optional(CONF_EXECUTE_FROM_PSRAM): cv.boolean,
|
|
614
672
|
}
|
|
615
673
|
),
|
|
616
674
|
cv.Optional(CONF_COMPONENTS, default=[]): cv.ensure_list(
|
|
@@ -635,6 +693,64 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All(
|
|
|
635
693
|
)
|
|
636
694
|
|
|
637
695
|
|
|
696
|
+
class _FrameworkMigrationWarning:
|
|
697
|
+
shown = False
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
def _show_framework_migration_message(name: str, variant: str) -> None:
|
|
701
|
+
"""Show a friendly message about framework migration when defaulting to Arduino."""
|
|
702
|
+
if _FrameworkMigrationWarning.shown:
|
|
703
|
+
return
|
|
704
|
+
_FrameworkMigrationWarning.shown = True
|
|
705
|
+
|
|
706
|
+
from esphome.log import AnsiFore, color
|
|
707
|
+
|
|
708
|
+
message = (
|
|
709
|
+
color(
|
|
710
|
+
AnsiFore.BOLD_CYAN,
|
|
711
|
+
f"💡 IMPORTANT: {name} doesn't have a framework specified!",
|
|
712
|
+
)
|
|
713
|
+
+ "\n\n"
|
|
714
|
+
+ f"Currently, {variant} defaults to the Arduino framework.\n"
|
|
715
|
+
+ color(AnsiFore.YELLOW, "This will change to ESP-IDF in ESPHome 2026.1.0.\n")
|
|
716
|
+
+ "\n"
|
|
717
|
+
+ "Note: Newer ESP32 variants (C6, H2, P4, etc.) already use ESP-IDF by default.\n"
|
|
718
|
+
+ "\n"
|
|
719
|
+
+ "Why change? ESP-IDF offers:\n"
|
|
720
|
+
+ color(AnsiFore.GREEN, " ✨ Up to 40% smaller binaries\n")
|
|
721
|
+
+ color(AnsiFore.GREEN, " 🚀 Better performance and optimization\n")
|
|
722
|
+
+ color(AnsiFore.GREEN, " 📦 Custom-built firmware for your exact needs\n")
|
|
723
|
+
+ color(
|
|
724
|
+
AnsiFore.GREEN,
|
|
725
|
+
" 🔧 Active development and testing by ESPHome developers\n",
|
|
726
|
+
)
|
|
727
|
+
+ "\n"
|
|
728
|
+
+ "Trade-offs:\n"
|
|
729
|
+
+ color(AnsiFore.YELLOW, " ⏱️ Compile times are ~25% longer\n")
|
|
730
|
+
+ color(AnsiFore.YELLOW, " 🔄 Some components need migration\n")
|
|
731
|
+
+ "\n"
|
|
732
|
+
+ "What should I do?\n"
|
|
733
|
+
+ color(AnsiFore.CYAN, " Option 1")
|
|
734
|
+
+ ": Migrate to ESP-IDF (recommended)\n"
|
|
735
|
+
+ " Add this to your YAML under 'esp32:':\n"
|
|
736
|
+
+ color(AnsiFore.WHITE, " framework:\n")
|
|
737
|
+
+ color(AnsiFore.WHITE, " type: esp-idf\n")
|
|
738
|
+
+ "\n"
|
|
739
|
+
+ color(AnsiFore.CYAN, " Option 2")
|
|
740
|
+
+ ": Keep using Arduino (still supported)\n"
|
|
741
|
+
+ " Add this to your YAML under 'esp32:':\n"
|
|
742
|
+
+ color(AnsiFore.WHITE, " framework:\n")
|
|
743
|
+
+ color(AnsiFore.WHITE, " type: arduino\n")
|
|
744
|
+
+ "\n"
|
|
745
|
+
+ "Need help? Check out the migration guide:\n"
|
|
746
|
+
+ color(
|
|
747
|
+
AnsiFore.BLUE,
|
|
748
|
+
"https://esphome.io/guides/esp32_arduino_to_idf.html",
|
|
749
|
+
)
|
|
750
|
+
)
|
|
751
|
+
_LOGGER.warning(message)
|
|
752
|
+
|
|
753
|
+
|
|
638
754
|
def _set_default_framework(config):
|
|
639
755
|
if CONF_FRAMEWORK not in config:
|
|
640
756
|
config = config.copy()
|
|
@@ -643,6 +759,10 @@ def _set_default_framework(config):
|
|
|
643
759
|
if variant in ARDUINO_ALLOWED_VARIANTS:
|
|
644
760
|
config[CONF_FRAMEWORK] = ARDUINO_FRAMEWORK_SCHEMA({})
|
|
645
761
|
config[CONF_FRAMEWORK][CONF_TYPE] = FRAMEWORK_ARDUINO
|
|
762
|
+
# Show the migration message
|
|
763
|
+
_show_framework_migration_message(
|
|
764
|
+
config.get(CONF_NAME, "This device"), variant
|
|
765
|
+
)
|
|
646
766
|
else:
|
|
647
767
|
config[CONF_FRAMEWORK] = ESP_IDF_FRAMEWORK_SCHEMA({})
|
|
648
768
|
config[CONF_FRAMEWORK][CONF_TYPE] = FRAMEWORK_ESP_IDF
|
|
@@ -676,7 +796,7 @@ CONF_PARTITIONS = "partitions"
|
|
|
676
796
|
CONFIG_SCHEMA = cv.All(
|
|
677
797
|
cv.Schema(
|
|
678
798
|
{
|
|
679
|
-
cv.
|
|
799
|
+
cv.Optional(CONF_BOARD): cv.string_strict,
|
|
680
800
|
cv.Optional(CONF_CPU_FREQUENCY): cv.one_of(
|
|
681
801
|
*FULL_CPU_FREQUENCIES, upper=True
|
|
682
802
|
),
|
|
@@ -691,6 +811,7 @@ CONFIG_SCHEMA = cv.All(
|
|
|
691
811
|
_detect_variant,
|
|
692
812
|
_set_default_framework,
|
|
693
813
|
set_core_data,
|
|
814
|
+
cv.has_at_least_one_key(CONF_BOARD, CONF_VARIANT),
|
|
694
815
|
)
|
|
695
816
|
|
|
696
817
|
|
|
@@ -703,8 +824,10 @@ async def to_code(config):
|
|
|
703
824
|
cg.set_cpp_standard("gnu++20")
|
|
704
825
|
cg.add_build_flag("-DUSE_ESP32")
|
|
705
826
|
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
|
|
706
|
-
|
|
707
|
-
cg.
|
|
827
|
+
variant = config[CONF_VARIANT]
|
|
828
|
+
cg.add_build_flag(f"-DUSE_ESP32_VARIANT_{variant}")
|
|
829
|
+
cg.add_define("ESPHOME_VARIANT", VARIANT_FRIENDLY[variant])
|
|
830
|
+
cg.add_define(ThreadModel.MULTI_ATOMICS)
|
|
708
831
|
|
|
709
832
|
cg.add_platformio_option("lib_ldf_mode", "off")
|
|
710
833
|
cg.add_platformio_option("lib_compat_mode", "strict")
|
|
@@ -737,6 +860,7 @@ async def to_code(config):
|
|
|
737
860
|
cg.add_platformio_option(
|
|
738
861
|
"platform_packages", ["espressif/toolchain-esp32ulp@2.35.0-20220830"]
|
|
739
862
|
)
|
|
863
|
+
add_idf_sdkconfig_option(f"CONFIG_IDF_TARGET_{variant}", True)
|
|
740
864
|
add_idf_sdkconfig_option(
|
|
741
865
|
f"CONFIG_ESPTOOLPY_FLASHSIZE_{config[CONF_FLASH_SIZE]}", True
|
|
742
866
|
)
|
|
@@ -774,6 +898,21 @@ async def to_code(config):
|
|
|
774
898
|
add_idf_sdkconfig_option("CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES", False)
|
|
775
899
|
if not advanced.get(CONF_ENABLE_LWIP_BRIDGE_INTERFACE, False):
|
|
776
900
|
add_idf_sdkconfig_option("CONFIG_LWIP_BRIDGEIF_MAX_PORTS", 0)
|
|
901
|
+
if advanced.get(CONF_EXECUTE_FROM_PSRAM, False):
|
|
902
|
+
add_idf_sdkconfig_option("CONFIG_SPIRAM_FETCH_INSTRUCTIONS", True)
|
|
903
|
+
add_idf_sdkconfig_option("CONFIG_SPIRAM_RODATA", True)
|
|
904
|
+
|
|
905
|
+
# Apply LWIP core locking for better socket performance
|
|
906
|
+
# This is already enabled by default in Arduino framework, where it provides
|
|
907
|
+
# significant performance benefits. Our benchmarks show socket operations are
|
|
908
|
+
# 24-200% faster with core locking enabled:
|
|
909
|
+
# - select() on 4 sockets: ~190μs (Arduino/core locking) vs ~235μs (ESP-IDF default)
|
|
910
|
+
# - Up to 200% slower under load when all operations queue through tcpip_thread
|
|
911
|
+
# Enabling this makes ESP-IDF socket performance match Arduino framework.
|
|
912
|
+
if advanced.get(CONF_ENABLE_LWIP_TCPIP_CORE_LOCKING, True):
|
|
913
|
+
add_idf_sdkconfig_option("CONFIG_LWIP_TCPIP_CORE_LOCKING", True)
|
|
914
|
+
if advanced.get(CONF_ENABLE_LWIP_CHECK_THREAD_SAFETY, True):
|
|
915
|
+
add_idf_sdkconfig_option("CONFIG_LWIP_CHECK_THREAD_SAFETY", True)
|
|
777
916
|
|
|
778
917
|
cg.add_platformio_option("board_build.partitions", "partitions.csv")
|
|
779
918
|
if CONF_PARTITIONS in config:
|
|
@@ -813,6 +952,10 @@ async def to_code(config):
|
|
|
813
952
|
),
|
|
814
953
|
)
|
|
815
954
|
|
|
955
|
+
add_idf_sdkconfig_option(
|
|
956
|
+
f"CONFIG_LOG_DEFAULT_LEVEL_{conf[CONF_LOG_LEVEL]}", True
|
|
957
|
+
)
|
|
958
|
+
|
|
816
959
|
for name, value in conf[CONF_SDKCONFIG_OPTIONS].items():
|
|
817
960
|
add_idf_sdkconfig_option(name, RawSdkconfigValue(value))
|
|
818
961
|
|
|
@@ -862,7 +1005,7 @@ def get_arduino_partition_csv(flash_size):
|
|
|
862
1005
|
eeprom_partition_start = app1_partition_start + app_partition_size
|
|
863
1006
|
spiffs_partition_start = eeprom_partition_start + eeprom_partition_size
|
|
864
1007
|
|
|
865
|
-
|
|
1008
|
+
return f"""\
|
|
866
1009
|
nvs, data, nvs, 0x9000, 0x5000,
|
|
867
1010
|
otadata, data, ota, 0xE000, 0x2000,
|
|
868
1011
|
app0, app, ota_0, 0x{app0_partition_start:X}, 0x{app_partition_size:X},
|
|
@@ -870,20 +1013,18 @@ app1, app, ota_1, 0x{app1_partition_start:X}, 0x{app_partition_size:X},
|
|
|
870
1013
|
eeprom, data, 0x99, 0x{eeprom_partition_start:X}, 0x{eeprom_partition_size:X},
|
|
871
1014
|
spiffs, data, spiffs, 0x{spiffs_partition_start:X}, 0x{spiffs_partition_size:X}
|
|
872
1015
|
"""
|
|
873
|
-
return partition_csv
|
|
874
1016
|
|
|
875
1017
|
|
|
876
1018
|
def get_idf_partition_csv(flash_size):
|
|
877
1019
|
app_partition_size = APP_PARTITION_SIZES[flash_size]
|
|
878
1020
|
|
|
879
|
-
|
|
1021
|
+
return f"""\
|
|
880
1022
|
otadata, data, ota, , 0x2000,
|
|
881
1023
|
phy_init, data, phy, , 0x1000,
|
|
882
1024
|
app0, app, ota_0, , 0x{app_partition_size:X},
|
|
883
1025
|
app1, app, ota_1, , 0x{app_partition_size:X},
|
|
884
1026
|
nvs, data, nvs, , 0x6D000,
|
|
885
1027
|
"""
|
|
886
|
-
return partition_csv
|
|
887
1028
|
|
|
888
1029
|
|
|
889
1030
|
def _format_sdkconfig_val(value: SdkconfigValueType) -> str:
|
|
@@ -943,14 +1084,16 @@ def _write_idf_component_yml():
|
|
|
943
1084
|
|
|
944
1085
|
# Called by writer.py
|
|
945
1086
|
def copy_files():
|
|
946
|
-
if
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
1087
|
+
if (
|
|
1088
|
+
CORE.using_arduino
|
|
1089
|
+
and "partitions.csv" not in CORE.data[KEY_ESP32][KEY_EXTRA_BUILD_FILES]
|
|
1090
|
+
):
|
|
1091
|
+
write_file_if_changed(
|
|
1092
|
+
CORE.relative_build_path("partitions.csv"),
|
|
1093
|
+
get_arduino_partition_csv(
|
|
1094
|
+
CORE.platformio_options.get("board_upload.flash_size")
|
|
1095
|
+
),
|
|
1096
|
+
)
|
|
954
1097
|
if CORE.using_esp_idf:
|
|
955
1098
|
_write_sdkconfig()
|
|
956
1099
|
_write_idf_component_yml()
|
|
@@ -970,7 +1113,7 @@ def copy_files():
|
|
|
970
1113
|
__version__,
|
|
971
1114
|
)
|
|
972
1115
|
|
|
973
|
-
for
|
|
1116
|
+
for file in CORE.data[KEY_ESP32][KEY_EXTRA_BUILD_FILES].values():
|
|
974
1117
|
if file[KEY_PATH].startswith("http"):
|
|
975
1118
|
import requests
|
|
976
1119
|
|
|
@@ -2,13 +2,30 @@ from .const import (
|
|
|
2
2
|
VARIANT_ESP32,
|
|
3
3
|
VARIANT_ESP32C2,
|
|
4
4
|
VARIANT_ESP32C3,
|
|
5
|
+
VARIANT_ESP32C5,
|
|
5
6
|
VARIANT_ESP32C6,
|
|
6
7
|
VARIANT_ESP32H2,
|
|
7
8
|
VARIANT_ESP32P4,
|
|
8
9
|
VARIANT_ESP32S2,
|
|
9
10
|
VARIANT_ESP32S3,
|
|
11
|
+
VARIANTS,
|
|
10
12
|
)
|
|
11
13
|
|
|
14
|
+
STANDARD_BOARDS = {
|
|
15
|
+
VARIANT_ESP32: "esp32dev",
|
|
16
|
+
VARIANT_ESP32C2: "esp32-c2-devkitm-1",
|
|
17
|
+
VARIANT_ESP32C3: "esp32-c3-devkitm-1",
|
|
18
|
+
VARIANT_ESP32C5: "esp32-c5-devkitc-1",
|
|
19
|
+
VARIANT_ESP32C6: "esp32-c6-devkitm-1",
|
|
20
|
+
VARIANT_ESP32H2: "esp32-h2-devkitm-1",
|
|
21
|
+
VARIANT_ESP32P4: "esp32-p4-evboard",
|
|
22
|
+
VARIANT_ESP32S2: "esp32-s2-kaluga-1",
|
|
23
|
+
VARIANT_ESP32S3: "esp32-s3-devkitc-1",
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Make sure not missed here if a new variant added.
|
|
27
|
+
assert all(v in STANDARD_BOARDS for v in VARIANTS)
|
|
28
|
+
|
|
12
29
|
ESP32_BASE_PINS = {
|
|
13
30
|
"TX": 1,
|
|
14
31
|
"RX": 3,
|
|
@@ -114,7 +114,6 @@ void ESP32InternalGPIOPin::setup() {
|
|
|
114
114
|
if (flags_ & gpio::FLAG_OUTPUT) {
|
|
115
115
|
gpio_set_drive_capability(pin_, drive_strength_);
|
|
116
116
|
}
|
|
117
|
-
ESP_LOGD(TAG, "rtc: %d", SOC_GPIO_SUPPORT_RTC_INDEPENDENT);
|
|
118
117
|
}
|
|
119
118
|
|
|
120
119
|
void ESP32InternalGPIOPin::pin_mode(gpio::Flags flags) {
|
esphome/components/esp32/gpio.py
CHANGED
|
@@ -187,8 +187,7 @@ def validate_supports(value):
|
|
|
187
187
|
"Open-drain only works with output mode", [CONF_MODE, CONF_OPEN_DRAIN]
|
|
188
188
|
)
|
|
189
189
|
|
|
190
|
-
|
|
191
|
-
return value
|
|
190
|
+
return _esp32_validations[variant].usage_validation(value)
|
|
192
191
|
|
|
193
192
|
|
|
194
193
|
# https://docs.espressif.com/projects/esp-idf/en/v3.3.5/api-reference/peripherals/gpio.html#_CPPv416gpio_drive_cap_t
|
|
@@ -2,6 +2,7 @@ import logging
|
|
|
2
2
|
|
|
3
3
|
import esphome.config_validation as cv
|
|
4
4
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
|
5
|
+
from esphome.pins import check_strapping_pin
|
|
5
6
|
|
|
6
7
|
_ESP32H2_SPI_FLASH_PINS = {6, 7, 15, 16, 17, 18, 19, 20, 21}
|
|
7
8
|
|
|
@@ -15,13 +16,6 @@ _LOGGER = logging.getLogger(__name__)
|
|
|
15
16
|
def esp32_h2_validate_gpio_pin(value):
|
|
16
17
|
if value < 0 or value > 27:
|
|
17
18
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-27)")
|
|
18
|
-
if value in _ESP32H2_STRAPPING_PINS:
|
|
19
|
-
_LOGGER.warning(
|
|
20
|
-
"GPIO%d is a Strapping PIN and should be avoided.\n"
|
|
21
|
-
"Attaching external pullup/down resistors to strapping pins can cause unexpected failures.\n"
|
|
22
|
-
"See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins",
|
|
23
|
-
value,
|
|
24
|
-
)
|
|
25
19
|
if value in _ESP32H2_SPI_FLASH_PINS:
|
|
26
20
|
_LOGGER.warning(
|
|
27
21
|
"GPIO%d is reserved for SPI Flash communication on some ESP32-H2 chip variants.\n"
|
|
@@ -49,4 +43,5 @@ def esp32_h2_validate_supports(value):
|
|
|
49
43
|
if is_input:
|
|
50
44
|
# All ESP32 pins support input mode
|
|
51
45
|
pass
|
|
46
|
+
check_strapping_pin(value, _ESP32H2_STRAPPING_PINS, _LOGGER)
|
|
52
47
|
return value
|
|
@@ -2,6 +2,7 @@ import logging
|
|
|
2
2
|
|
|
3
3
|
import esphome.config_validation as cv
|
|
4
4
|
from esphome.const import CONF_INPUT, CONF_MODE, CONF_NUMBER
|
|
5
|
+
from esphome.pins import check_strapping_pin
|
|
5
6
|
|
|
6
7
|
_ESP32P4_USB_JTAG_PINS = {24, 25}
|
|
7
8
|
|
|
@@ -13,13 +14,6 @@ _LOGGER = logging.getLogger(__name__)
|
|
|
13
14
|
def esp32_p4_validate_gpio_pin(value):
|
|
14
15
|
if value < 0 or value > 54:
|
|
15
16
|
raise cv.Invalid(f"Invalid pin number: {value} (must be 0-54)")
|
|
16
|
-
if value in _ESP32P4_STRAPPING_PINS:
|
|
17
|
-
_LOGGER.warning(
|
|
18
|
-
"GPIO%d is a Strapping PIN and should be avoided.\n"
|
|
19
|
-
"Attaching external pullup/down resistors to strapping pins can cause unexpected failures.\n"
|
|
20
|
-
"See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins",
|
|
21
|
-
value,
|
|
22
|
-
)
|
|
23
17
|
if value in _ESP32P4_USB_JTAG_PINS:
|
|
24
18
|
_LOGGER.warning(
|
|
25
19
|
"GPIO%d is reserved for the USB-Serial-JTAG interface.\n"
|
|
@@ -40,4 +34,5 @@ def esp32_p4_validate_supports(value):
|
|
|
40
34
|
if is_input:
|
|
41
35
|
# All ESP32 pins support input mode
|
|
42
36
|
pass
|
|
37
|
+
check_strapping_pin(value, _ESP32P4_STRAPPING_PINS, _LOGGER)
|
|
43
38
|
return value
|