esphome 2025.3.2__py3-none-any.whl → 2025.4.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 +34 -10
- esphome/components/a01nyub/sensor.py +2 -2
- esphome/components/a02yyuw/sensor.py +2 -2
- esphome/components/a4988/stepper.py +1 -2
- esphome/components/absolute_humidity/sensor.py +3 -3
- esphome/components/ac_dimmer/output.py +3 -3
- esphome/components/adalight/__init__.py +2 -2
- esphome/components/adc128s102/__init__.py +1 -1
- esphome/components/adc128s102/sensor/__init__.py +3 -3
- esphome/components/addressable_light/display.py +5 -5
- esphome/components/ade7880/sensor.py +2 -2
- esphome/components/ade7953_base/__init__.py +10 -10
- esphome/components/ade7953_i2c/sensor.py +1 -2
- esphome/components/ade7953_spi/sensor.py +1 -2
- esphome/components/ads1115/__init__.py +1 -1
- esphome/components/ads1115/sensor/__init__.py +4 -3
- esphome/components/ads1118/__init__.py +1 -1
- esphome/components/ads1118/sensor/__init__.py +5 -4
- esphome/components/ags10/sensor.py +9 -9
- esphome/components/aht10/sensor.py +2 -2
- esphome/components/airthings_ble/__init__.py +1 -1
- esphome/components/airthings_wave_base/__init__.py +2 -3
- esphome/components/airthings_wave_mini/sensor.py +2 -5
- esphome/components/airthings_wave_plus/sensor.py +8 -9
- esphome/components/alpha3/sensor.py +5 -5
- esphome/components/am2315c/am2315c.cpp +4 -4
- esphome/components/am2315c/sensor.py +1 -1
- esphome/components/am2320/sensor.py +1 -1
- esphome/components/am43/cover/__init__.py +1 -1
- esphome/components/am43/sensor/__init__.py +3 -3
- esphome/components/analog_threshold/binary_sensor.py +2 -5
- esphome/components/anova/climate.py +1 -1
- esphome/components/apds9306/sensor.py +1 -1
- esphome/components/apds9960/__init__.py +1 -1
- esphome/components/apds9960/binary_sensor.py +2 -1
- esphome/components/apds9960/sensor.py +3 -2
- esphome/components/api/api_frame_helper.cpp +25 -1
- esphome/components/as3935/__init__.py +3 -3
- esphome/components/as3935/binary_sensor.py +2 -1
- esphome/components/as3935/sensor.py +4 -3
- esphome/components/as3935_i2c/__init__.py +1 -1
- esphome/components/as3935_spi/__init__.py +1 -1
- esphome/components/as5600/__init__.py +2 -2
- esphome/components/as5600/sensor/__init__.py +10 -9
- esphome/components/as7341/sensor.py +1 -2
- esphome/components/at581x/__init__.py +4 -8
- esphome/components/at581x/switch/__init__.py +2 -4
- esphome/components/atc_mithermometer/sensor.py +3 -3
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +7 -3
- esphome/components/b_parasite/sensor.py +2 -2
- esphome/components/ballu/climate.py +1 -1
- esphome/components/bang_bang/climate.py +2 -2
- esphome/components/bedjet/__init__.py +2 -6
- esphome/components/bedjet/climate/__init__.py +3 -6
- esphome/components/bedjet/fan/__init__.py +4 -9
- esphome/components/bedjet/sensor/__init__.py +3 -6
- esphome/components/beken_spi_led_strip/light.py +2 -2
- esphome/components/bh1750/sensor.py +2 -6
- esphome/components/binary/fan/__init__.py +2 -1
- esphome/components/binary/light/__init__.py +3 -2
- esphome/components/binary_sensor_map/sensor.py +5 -6
- esphome/components/bl0939/sensor.py +1 -1
- esphome/components/bl0940/sensor.py +3 -3
- esphome/components/ble_client/__init__.py +3 -2
- esphome/components/ble_client/sensor/__init__.py +1 -1
- esphome/components/ble_client/text_sensor/__init__.py +1 -1
- esphome/components/bluetooth_proxy/__init__.py +35 -23
- esphome/components/bme280_base/__init__.py +1 -1
- esphome/components/bme280_i2c/sensor.py +3 -2
- esphome/components/bme280_spi/sensor.py +3 -2
- esphome/components/bme680/sensor.py +4 -4
- esphome/components/bme680_bsec/__init__.py +1 -1
- esphome/components/bme680_bsec/sensor.py +3 -6
- esphome/components/bme680_bsec/text_sensor.py +3 -2
- esphome/components/bmi160/sensor.py +6 -6
- esphome/components/bmp085/sensor.py +1 -1
- esphome/components/bmp280_base/__init__.py +1 -1
- esphome/components/bmp280_i2c/sensor.py +3 -2
- esphome/components/bmp280_spi/sensor.py +3 -2
- esphome/components/bmp3xx_base/__init__.py +1 -1
- esphome/components/bmp3xx_i2c/sensor.py +2 -1
- esphome/components/bmp3xx_spi/sensor.py +2 -1
- esphome/components/bmp581/sensor.py +2 -1
- esphome/components/bp1658cj/__init__.py +2 -6
- esphome/components/bp1658cj/output.py +2 -1
- esphome/components/bp5758d/__init__.py +2 -6
- esphome/components/bp5758d/output.py +3 -2
- esphome/components/canbus/__init__.py +13 -2
- esphome/components/canbus/canbus.cpp +7 -1
- esphome/components/cap1188/__init__.py +2 -2
- esphome/components/cap1188/binary_sensor.py +3 -2
- esphome/components/captive_portal/__init__.py +3 -3
- esphome/components/ccs811/sensor.py +10 -10
- esphome/components/cd74hc4067/__init__.py +2 -5
- esphome/components/cd74hc4067/sensor.py +6 -5
- esphome/components/climate_ir/__init__.py +2 -2
- esphome/components/climate_ir_lg/climate.py +1 -1
- esphome/components/color/__init__.py +1 -2
- esphome/components/color_temperature/light.py +2 -2
- esphome/components/combination/sensor.py +1 -1
- esphome/components/coolix/climate.py +1 -1
- esphome/components/copy/binary_sensor/__init__.py +1 -1
- esphome/components/copy/button/__init__.py +1 -1
- esphome/components/copy/cover/__init__.py +1 -1
- esphome/components/copy/fan/__init__.py +2 -7
- esphome/components/copy/lock/__init__.py +2 -7
- esphome/components/copy/number/__init__.py +1 -1
- esphome/components/copy/select/__init__.py +2 -7
- esphome/components/copy/sensor/__init__.py +2 -2
- esphome/components/copy/switch/__init__.py +1 -1
- esphome/components/copy/text/__init__.py +2 -7
- esphome/components/copy/text_sensor/__init__.py +2 -6
- esphome/components/cs5460a/sensor.py +7 -7
- esphome/components/cse7761/sensor.py +2 -2
- esphome/components/cse7766/sensor.py +1 -1
- esphome/components/cst226/touchscreen/__init__.py +3 -4
- esphome/components/ct_clamp/sensor.py +1 -1
- esphome/components/current_based/cover.py +3 -4
- esphome/components/cwww/light.py +3 -3
- esphome/components/dac7678/__init__.py +1 -1
- esphome/components/dac7678/output.py +2 -1
- esphome/components/daikin/climate.py +1 -1
- esphome/components/daikin_arc/climate.py +1 -1
- esphome/components/daikin_brc/climate.py +1 -1
- esphome/components/dallas_temp/sensor.py +1 -1
- esphome/components/daly_bms/__init__.py +2 -2
- esphome/components/daly_bms/binary_sensor.py +3 -2
- esphome/components/daly_bms/sensor.py +14 -13
- esphome/components/daly_bms/text_sensor.py +3 -2
- esphome/components/dashboard_import/__init__.py +5 -5
- esphome/components/debug/sensor.py +7 -6
- esphome/components/debug/text_sensor.py +1 -1
- esphome/components/deep_sleep/__init__.py +12 -13
- esphome/components/delonghi/climate.py +1 -1
- esphome/components/demo/__init__.py +1 -1
- esphome/components/dfplayer/__init__.py +3 -3
- esphome/components/dfrobot_sen0395/__init__.py +3 -3
- esphome/components/dfrobot_sen0395/binary_sensor.py +2 -1
- esphome/components/dfrobot_sen0395/switch/__init__.py +2 -3
- esphome/components/dht/sensor.py +4 -5
- esphome/components/dht12/sensor.py +3 -3
- esphome/components/display/display.cpp +2 -2
- esphome/components/dps310/sensor.py +3 -3
- esphome/components/ds1307/time.py +2 -3
- esphome/components/dsmr/__init__.py +3 -7
- esphome/components/dsmr/sensor.py +5 -4
- esphome/components/dsmr/text_sensor.py +3 -2
- esphome/components/duty_cycle/sensor.py +3 -8
- esphome/components/duty_time/sensor.py +7 -7
- esphome/components/e131/__init__.py +3 -3
- esphome/components/ee895/sensor.py +5 -5
- esphome/components/ektf2232/touchscreen/__init__.py +2 -3
- esphome/components/emc2101/__init__.py +1 -1
- esphome/components/emc2101/output/__init__.py +3 -2
- esphome/components/emc2101/sensor/__init__.py +4 -3
- esphome/components/emmeti/climate.py +1 -1
- esphome/components/endstop/cover.py +3 -3
- esphome/components/ens160_base/__init__.py +1 -1
- esphome/components/ens160_i2c/sensor.py +2 -1
- esphome/components/ens160_spi/sensor.py +2 -1
- esphome/components/ens210/sensor.py +1 -1
- esphome/components/esp32/__init__.py +10 -0
- esphome/components/esp32_ble_tracker/__init__.py +135 -51
- esphome/components/esp32_camera/__init__.py +7 -8
- esphome/components/esp32_camera_web_server/__init__.py +2 -2
- esphome/components/esp32_can/canbus.py +21 -0
- esphome/components/esp32_can/esp32_can.cpp +1 -1
- esphome/components/esp32_can/esp32_can.h +4 -0
- esphome/components/esp32_dac/output.py +2 -2
- esphome/components/esp32_hall/sensor.py +2 -6
- esphome/components/esp32_touch/__init__.py +7 -7
- esphome/components/esp32_touch/binary_sensor.py +4 -7
- esphome/components/esp8266_pwm/output.py +3 -8
- esphome/components/ethernet/__init__.py +1 -0
- esphome/components/ethernet/ethernet_component.cpp +1 -1
- esphome/components/ethernet_info/ethernet_info_text_sensor.h +1 -0
- esphome/components/exposure_notifications/__init__.py +2 -2
- esphome/components/external_components/__init__.py +1 -1
- esphome/components/ezo/sensor.py +2 -2
- esphome/components/ezo_pmp/__init__.py +4 -4
- esphome/components/ezo_pmp/binary_sensor.py +4 -4
- esphome/components/ezo_pmp/sensor.py +4 -5
- esphome/components/ezo_pmp/text_sensor.py +2 -6
- esphome/components/factory_reset/button/__init__.py +2 -1
- esphome/components/factory_reset/switch/__init__.py +3 -2
- esphome/components/fastled_base/__init__.py +3 -3
- esphome/components/fastled_clockless/light.py +2 -2
- esphome/components/fastled_spi/light.py +2 -2
- esphome/components/feedback/cover.py +3 -3
- esphome/components/fingerprint_grow/__init__.py +5 -6
- esphome/components/fingerprint_grow/binary_sensor.py +2 -1
- esphome/components/fingerprint_grow/sensor.py +2 -1
- esphome/components/fs3000/sensor.py +2 -6
- esphome/components/ft5x06/touchscreen/__init__.py +2 -2
- esphome/components/ft63x6/touchscreen.py +2 -3
- esphome/components/fujitsu_general/climate.py +1 -1
- esphome/components/gcja5/sensor.py +4 -4
- esphome/components/gdk101/__init__.py +1 -1
- esphome/components/gdk101/binary_sensor.py +2 -1
- esphome/components/gdk101/sensor.py +5 -4
- esphome/components/globals/__init__.py +1 -2
- esphome/components/gp2y1010au0f/sensor.py +3 -3
- esphome/components/gp8403/__init__.py +1 -2
- esphome/components/gp8403/output/__init__.py +3 -4
- esphome/components/gpio/binary_sensor/__init__.py +3 -2
- esphome/components/gpio/one_wire/__init__.py +3 -2
- esphome/components/gpio/output/__init__.py +3 -2
- esphome/components/gpio/switch/__init__.py +3 -2
- esphome/components/gps/__init__.py +4 -5
- esphome/components/gps/time/__init__.py +3 -2
- esphome/components/graph/__init__.py +12 -12
- esphome/components/grove_tb6612fng/__init__.py +5 -6
- esphome/components/growatt_solar/sensor.py +1 -1
- esphome/components/gt911/binary_sensor/__init__.py +2 -2
- esphome/components/haier/binary_sensor/__init__.py +4 -10
- esphome/components/haier/button/__init__.py +3 -6
- esphome/components/haier/sensor/__init__.py +4 -6
- esphome/components/haier/switch/__init__.py +4 -7
- esphome/components/haier/text_sensor/__init__.py +4 -9
- esphome/components/havells_solar/sensor.py +1 -1
- esphome/components/hbridge/fan/__init__.py +6 -6
- esphome/components/hbridge/light/__init__.py +2 -1
- esphome/components/hdc1080/sensor.py +1 -1
- esphome/components/he60r/cover.py +2 -6
- esphome/components/heatpumpir/climate.py +1 -1
- esphome/components/hitachi_ac344/climate.py +1 -1
- esphome/components/hitachi_ac424/climate.py +1 -1
- esphome/components/hlw8012/sensor.py +6 -6
- esphome/components/hm3301/sensor.py +3 -3
- esphome/components/hmc5883l/sensor.py +4 -4
- esphome/components/homeassistant/time/__init__.py +2 -1
- esphome/components/honeywell_hih_i2c/sensor.py +3 -3
- esphome/components/honeywellabp/sensor.py +1 -2
- esphome/components/honeywellabp2_i2c/sensor.py +1 -2
- esphome/components/host/time/__init__.py +2 -2
- esphome/components/hrxl_maxsonar_wr/sensor.py +1 -1
- esphome/components/hte501/sensor.py +3 -3
- esphome/components/http_request/ota/__init__.py +5 -9
- esphome/components/http_request/update/__init__.py +3 -7
- esphome/components/htu21d/sensor.py +6 -6
- esphome/components/htu31d/sensor.py +1 -1
- esphome/components/hx711/sensor.py +3 -8
- esphome/components/hydreon_rgxx/binary_sensor.py +3 -7
- esphome/components/hydreon_rgxx/sensor.py +4 -4
- esphome/components/hyt271/sensor.py +1 -1
- esphome/components/i2c_device/__init__.py +1 -1
- esphome/components/i2s_audio/media_player/__init__.py +6 -8
- esphome/components/iaqcore/sensor.py +2 -2
- esphome/components/ina219/sensor.py +2 -2
- esphome/components/ina226/sensor.py +4 -4
- esphome/components/ina260/sensor.py +4 -4
- esphome/components/ina2xx_base/__init__.py +2 -2
- esphome/components/ina2xx_i2c/sensor.py +1 -1
- esphome/components/ina2xx_spi/sensor.py +1 -1
- esphome/components/ina3221/sensor.py +3 -3
- esphome/components/inkbird_ibsth1_mini/sensor.py +2 -2
- esphome/components/inkplate6/display.py +2 -2
- esphome/components/integration/sensor.py +4 -4
- esphome/components/internal_temperature/sensor.py +5 -7
- esphome/components/interval/__init__.py +1 -1
- esphome/components/jsn_sr04t/sensor.py +3 -3
- esphome/components/kamstrup_kmp/sensor.py +1 -1
- esphome/components/key_collector/__init__.py +2 -2
- esphome/components/kmeteriso/sensor.py +2 -2
- esphome/components/kuntze/sensor.py +5 -5
- esphome/components/lcd_base/__init__.py +2 -2
- esphome/components/lcd_gpio/display.py +4 -4
- esphome/components/lcd_menu/__init__.py +3 -7
- esphome/components/lcd_pcf8574/display.py +1 -1
- esphome/components/ld2410/__init__.py +4 -4
- esphome/components/ld2410/binary_sensor.py +5 -4
- esphome/components/ld2410/button/__init__.py +3 -2
- esphome/components/ld2410/number/__init__.py +5 -4
- esphome/components/ld2410/select/__init__.py +4 -3
- esphome/components/ld2410/sensor.py +6 -5
- esphome/components/ld2410/switch/__init__.py +2 -1
- esphome/components/ld2410/text_sensor.py +3 -2
- esphome/components/ld2420/__init__.py +1 -1
- esphome/components/ld2420/binary_sensor/__init__.py +4 -3
- esphome/components/ld2420/button/__init__.py +3 -2
- esphome/components/ld2420/number/__init__.py +3 -2
- esphome/components/ld2420/select/__init__.py +1 -0
- esphome/components/ld2420/sensor/__init__.py +3 -2
- esphome/components/ld2420/text_sensor/__init__.py +2 -6
- esphome/components/ld2450/__init__.py +2 -5
- esphome/components/ledc/output.py +3 -3
- esphome/components/libretiny/text_sensor.py +1 -1
- esphome/components/libretiny_pwm/output.py +3 -7
- esphome/components/lightwaverf/__init__.py +6 -8
- esphome/components/lilygo_t5_47/touchscreen/__init__.py +2 -3
- esphome/components/ltr390/sensor.py +1 -1
- esphome/components/ltr501/sensor.py +2 -2
- esphome/components/ltr_als_ps/sensor.py +2 -2
- esphome/components/lvgl/__init__.py +9 -12
- esphome/components/lvgl/automation.py +15 -3
- esphome/components/lvgl/defines.py +5 -2
- esphome/components/lvgl/encoders.py +3 -2
- esphome/components/lvgl/lv_validation.py +17 -9
- esphome/components/lvgl/lvcode.py +11 -9
- esphome/components/lvgl/lvgl_esphome.h +21 -0
- esphome/components/lvgl/number/__init__.py +23 -20
- esphome/components/lvgl/number/lvgl_number.h +27 -14
- esphome/components/lvgl/schemas.py +70 -19
- esphome/components/lvgl/select/__init__.py +11 -13
- esphome/components/lvgl/select/lvgl_select.h +25 -18
- esphome/components/lvgl/styles.py +42 -11
- esphome/components/lvgl/switch/__init__.py +13 -8
- esphome/components/lvgl/switch/lvgl_switch.h +5 -16
- esphome/components/lvgl/trigger.py +10 -1
- esphome/components/lvgl/widgets/__init__.py +1 -2
- esphome/components/lvgl/widgets/buttonmatrix.py +2 -2
- esphome/components/lvgl/widgets/canvas.py +407 -0
- esphome/components/lvgl/widgets/line.py +22 -32
- esphome/components/lvgl/widgets/meter.py +3 -1
- esphome/components/m5stack_8angle/__init__.py +1 -2
- esphome/components/m5stack_8angle/binary_sensor/__init__.py +2 -3
- esphome/components/m5stack_8angle/light/__init__.py +2 -4
- esphome/components/m5stack_8angle/sensor/__init__.py +2 -4
- esphome/components/matrix_keypad/binary_sensor/__init__.py +4 -3
- esphome/components/max31855/sensor.py +1 -1
- esphome/components/max31865/sensor.py +1 -1
- esphome/components/max44009/sensor.py +1 -1
- esphome/components/max6675/sensor.py +1 -1
- esphome/components/max6956/__init__.py +5 -5
- esphome/components/max6956/output/__init__.py +4 -3
- esphome/components/max7219/display.py +1 -1
- esphome/components/max7219digit/display.py +1 -1
- esphome/components/max9611/sensor.py +10 -10
- esphome/components/mcp23008/__init__.py +1 -1
- esphome/components/mcp23016/__init__.py +4 -4
- esphome/components/mcp23017/__init__.py +1 -1
- esphome/components/mcp23s08/__init__.py +1 -1
- esphome/components/mcp23s17/__init__.py +1 -1
- esphome/components/mcp23xxx_base/__init__.py +4 -4
- esphome/components/mcp2515/canbus.py +2 -2
- esphome/components/mcp3008/__init__.py +1 -1
- esphome/components/mcp3008/sensor/__init__.py +4 -4
- esphome/components/mcp3204/__init__.py +1 -1
- esphome/components/mcp3204/sensor/__init__.py +3 -2
- esphome/components/mcp4461/__init__.py +42 -0
- esphome/components/mcp4461/mcp4461.cpp +618 -0
- esphome/components/mcp4461/mcp4461.h +171 -0
- esphome/components/mcp4461/output/__init__.py +60 -0
- esphome/components/mcp4461/output/mcp4461_output.cpp +73 -0
- esphome/components/mcp4461/output/mcp4461_output.h +49 -0
- esphome/components/mcp4725/output.py +2 -2
- esphome/components/mcp4728/__init__.py +1 -1
- esphome/components/mcp4728/output/__init__.py +4 -3
- esphome/components/mcp47a1/output.py +2 -2
- esphome/components/mcp9808/sensor.py +1 -1
- esphome/components/mdns/__init__.py +1 -1
- esphome/components/mhz19/sensor.py +4 -4
- esphome/components/micronova/__init__.py +3 -5
- esphome/components/micronova/button/__init__.py +5 -5
- esphome/components/micronova/number/__init__.py +6 -10
- esphome/components/micronova/sensor/__init__.py +6 -6
- esphome/components/micronova/switch/__init__.py +6 -8
- esphome/components/micronova/text_sensor/__init__.py +5 -5
- esphome/components/microphone/__init__.py +2 -4
- esphome/components/midea/climate.py +6 -10
- esphome/components/midea_ir/climate.py +1 -1
- esphome/components/mitsubishi/climate.py +1 -1
- esphome/components/mlx90614/sensor.py +1 -1
- esphome/components/mmc5603/sensor.py +4 -4
- esphome/components/mmc5983/sensor.py +1 -1
- esphome/components/modbus/__init__.py +5 -9
- esphome/components/modbus_controller/__init__.py +1 -1
- esphome/components/monochromatic/light.py +2 -2
- esphome/components/mopeka_ble/__init__.py +1 -1
- esphome/components/mopeka_pro_check/sensor.py +12 -12
- esphome/components/mopeka_std_check/sensor.py +8 -8
- esphome/components/mpl3115a2/sensor.py +1 -1
- esphome/components/mpr121/__init__.py +3 -3
- esphome/components/mpr121/binary_sensor/__init__.py +5 -4
- esphome/components/mpu6050/sensor.py +4 -4
- esphome/components/mpu6886/sensor.py +4 -4
- esphome/components/mqtt_subscribe/sensor/__init__.py +3 -5
- esphome/components/mqtt_subscribe/text_sensor/__init__.py +1 -1
- esphome/components/ms5611/sensor.py +2 -2
- esphome/components/ms8607/sensor.py +1 -1
- esphome/components/my9231/__init__.py +1 -1
- esphome/components/my9231/output.py +2 -1
- esphome/components/nau7802/nau7802.cpp +0 -4
- esphome/components/nau7802/nau7802.h +0 -2
- esphome/components/neopixelbus/_methods.py +11 -9
- esphome/components/neopixelbus/light.py +11 -18
- esphome/components/nextion/binary_sensor/__init__.py +6 -14
- esphome/components/nextion/sensor/__init__.py +7 -10
- esphome/components/nextion/switch/__init__.py +3 -5
- esphome/components/nextion/text_sensor/__init__.py +3 -7
- esphome/components/noblex/climate.py +1 -1
- esphome/components/ntc/sensor.py +1 -1
- esphome/components/opentherm/__init__.py +6 -6
- esphome/components/opentherm/input.py +2 -1
- esphome/components/opentherm/number/__init__.py +5 -4
- esphome/components/opentherm/output/__init__.py +3 -2
- esphome/components/opentherm/schema.py +7 -7
- esphome/components/opentherm/switch/__init__.py +3 -2
- esphome/components/opentherm/validate.py +1 -1
- esphome/components/output/__init__.py +2 -3
- esphome/components/output/button/__init__.py +3 -2
- esphome/components/output/lock/__init__.py +2 -1
- esphome/components/output/switch/__init__.py +2 -1
- esphome/components/partition/light.py +4 -4
- esphome/components/pca6416a/__init__.py +4 -4
- esphome/components/pca9554/__init__.py +4 -4
- esphome/components/pca9685/__init__.py +2 -2
- esphome/components/pca9685/output.py +2 -1
- esphome/components/pcf85063/time.py +2 -3
- esphome/components/pcf8563/time.py +2 -2
- esphome/components/pcf8574/__init__.py +4 -4
- esphome/components/pid/climate.py +2 -2
- esphome/components/pid/sensor/__init__.py +4 -8
- esphome/components/pipsolar/__init__.py +1 -1
- esphome/components/pipsolar/binary_sensor/__init__.py +2 -2
- esphome/components/pipsolar/output/__init__.py +4 -3
- esphome/components/pipsolar/sensor/__init__.py +5 -4
- esphome/components/pipsolar/switch/__init__.py +2 -1
- esphome/components/pipsolar/text_sensor/__init__.py +2 -1
- esphome/components/pm1006/sensor.py +2 -2
- esphome/components/pmsa003i/sensor.py +4 -4
- esphome/components/pmsx003/sensor.py +10 -11
- esphome/components/pmwcs3/sensor.py +5 -5
- esphome/components/pn532/__init__.py +3 -3
- esphome/components/pn532_i2c/__init__.py +1 -1
- esphome/components/pn532_spi/__init__.py +1 -1
- esphome/components/pn7150/__init__.py +2 -2
- esphome/components/pn7150_i2c/__init__.py +1 -1
- esphome/components/pn7160/__init__.py +2 -2
- esphome/components/pn7160_i2c/__init__.py +1 -1
- esphome/components/pn7160_spi/__init__.py +1 -1
- esphome/components/power_supply/__init__.py +1 -1
- esphome/components/prometheus/__init__.py +3 -8
- esphome/components/psram/__init__.py +75 -11
- esphome/components/psram/psram.cpp +18 -7
- esphome/components/pulse_counter/sensor.py +4 -4
- esphome/components/pulse_meter/sensor.py +3 -3
- esphome/components/pulse_width/sensor.py +3 -8
- esphome/components/pvvx_mithermometer/display/__init__.py +1 -1
- esphome/components/pvvx_mithermometer/sensor.py +3 -3
- esphome/components/pylontech/__init__.py +1 -0
- esphome/components/pylontech/sensor/__init__.py +8 -13
- esphome/components/pylontech/text_sensor/__init__.py +2 -7
- esphome/components/pzem004t/sensor.py +3 -3
- esphome/components/pzemac/sensor.py +9 -9
- esphome/components/pzemdc/sensor.py +6 -6
- esphome/components/qmc5883l/sensor.py +5 -5
- esphome/components/qmp6988/sensor.py +3 -3
- esphome/components/qr_code/__init__.py +1 -1
- esphome/components/qspi_dbi/display.py +1 -1
- esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
- esphome/components/qspi_dbi/qspi_dbi.h +1 -1
- esphome/components/qwiic_pir/binary_sensor.py +2 -5
- esphome/components/radon_eye_ble/__init__.py +1 -1
- esphome/components/radon_eye_rd200/sensor.py +3 -4
- esphome/components/rc522/__init__.py +3 -3
- esphome/components/rc522_i2c/__init__.py +1 -1
- esphome/components/rc522_spi/__init__.py +1 -1
- esphome/components/rdm6300/__init__.py +2 -2
- esphome/components/rdm6300/binary_sensor.py +2 -1
- esphome/components/resistance/sensor.py +2 -2
- esphome/components/restart/button/__init__.py +1 -1
- esphome/components/restart/switch/__init__.py +2 -5
- esphome/components/rf_bridge/__init__.py +3 -3
- esphome/components/rgb/light.py +2 -2
- esphome/components/rgbct/light.py +3 -3
- esphome/components/rgbw/light.py +2 -2
- esphome/components/rgbww/light.py +4 -4
- esphome/components/rotary_encoder/sensor.py +8 -8
- esphome/components/rp2040_pio/__init__.py +0 -1
- esphome/components/rp2040_pio_led_strip/light.py +2 -4
- esphome/components/rp2040_pwm/output.py +3 -7
- esphome/components/rtttl/__init__.py +6 -6
- esphome/components/ruuvi_ble/__init__.py +1 -1
- esphome/components/ruuvitag/sensor.py +15 -15
- esphome/components/safe_mode/__init__.py +2 -3
- esphome/components/safe_mode/button/__init__.py +3 -2
- esphome/components/safe_mode/switch/__init__.py +4 -7
- esphome/components/scd30/sensor.py +5 -6
- esphome/components/scd4x/sensor.py +6 -8
- esphome/components/script/__init__.py +2 -2
- esphome/components/sdl/display.py +3 -3
- esphome/components/sdl/touchscreen/__init__.py +2 -2
- esphome/components/sdm_meter/sensor.py +3 -3
- esphome/components/sdp3x/sensor.py +1 -2
- esphome/components/sds011/sensor.py +4 -4
- esphome/components/seeed_mr24hpc1/__init__.py +1 -1
- esphome/components/seeed_mr24hpc1/binary_sensor.py +2 -5
- esphome/components/seeed_mr24hpc1/button/__init__.py +1 -0
- esphome/components/seeed_mr24hpc1/number/__init__.py +2 -4
- esphome/components/seeed_mr24hpc1/select/__init__.py +2 -3
- esphome/components/seeed_mr24hpc1/sensor.py +1 -0
- esphome/components/seeed_mr24hpc1/switch/__init__.py +2 -4
- esphome/components/seeed_mr24hpc1/text_sensor.py +1 -0
- esphome/components/seeed_mr60bha2/binary_sensor.py +2 -4
- esphome/components/seeed_mr60bha2/sensor.py +1 -1
- esphome/components/seeed_mr60fda2/button/__init__.py +1 -1
- esphome/components/seeed_mr60fda2/select/__init__.py +0 -1
- esphome/components/selec_meter/sensor.py +1 -1
- esphome/components/sen0321/sensor.py +2 -2
- esphome/components/sen21231/sensor.py +1 -1
- esphome/components/senseair/sensor.py +3 -3
- esphome/components/sensirion_common/__init__.py +0 -2
- esphome/components/servo/__init__.py +3 -3
- esphome/components/sfa30/sensor.py +4 -5
- esphome/components/sgp4x/sensor.py +2 -2
- esphome/components/shelly_dimmer/light.py +16 -16
- esphome/components/sht3xd/sensor.py +1 -1
- esphome/components/sht4x/sensor.py +6 -6
- esphome/components/shtcx/sensor.py +1 -1
- esphome/components/shutdown/button/__init__.py +2 -6
- esphome/components/shutdown/switch/__init__.py +2 -5
- esphome/components/sigma_delta_output/output.py +2 -7
- esphome/components/sim800l/__init__.py +3 -7
- esphome/components/sim800l/binary_sensor.py +3 -5
- esphome/components/sim800l/sensor.py +2 -1
- esphome/components/slow_pwm/output.py +4 -5
- esphome/components/sm10bit_base/__init__.py +2 -6
- esphome/components/sm16716/__init__.py +1 -1
- esphome/components/sm16716/output.py +2 -1
- esphome/components/sm2135/__init__.py +2 -6
- esphome/components/sm2135/output.py +2 -1
- esphome/components/sm2235/__init__.py +1 -1
- esphome/components/sm2235/output.py +2 -1
- esphome/components/sm2335/__init__.py +1 -1
- esphome/components/sm2335/output.py +2 -1
- esphome/components/sm300d2/sensor.py +13 -13
- esphome/components/sml/__init__.py +1 -1
- esphome/components/sml/sensor/__init__.py +1 -1
- esphome/components/sml/sml.cpp +8 -6
- esphome/components/sml/sml.h +1 -1
- esphome/components/sml/sml_parser.cpp +16 -18
- esphome/components/sml/sml_parser.h +42 -12
- esphome/components/sml/text_sensor/__init__.py +1 -1
- esphome/components/smt100/sensor.py +5 -6
- esphome/components/sn74hc165/__init__.py +5 -5
- esphome/components/sn74hc595/__init__.py +5 -5
- esphome/components/socket/__init__.py +1 -1
- esphome/components/sonoff_d1/light.py +2 -6
- esphome/components/speaker/media_player/audio_pipeline.cpp +3 -2
- esphome/components/speaker/media_player/speaker_media_player.cpp +47 -12
- esphome/components/speed/fan/__init__.py +2 -2
- esphome/components/spi/__init__.py +45 -36
- esphome/components/spi/spi.h +1 -0
- esphome/components/spi/spi_esp_idf.cpp +13 -5
- esphome/components/sprinkler/__init__.py +4 -5
- esphome/components/sps30/sensor.py +8 -8
- esphome/components/ssd1306_i2c/display.py +2 -2
- esphome/components/ssd1322_base/__init__.py +2 -2
- esphome/components/ssd1325_base/__init__.py +2 -2
- esphome/components/ssd1327_base/__init__.py +2 -2
- esphome/components/ssd1327_i2c/display.py +1 -1
- esphome/components/ssd1331_base/__init__.py +2 -2
- esphome/components/ssd1351_base/__init__.py +2 -2
- esphome/components/st7567_base/__init__.py +4 -4
- esphome/components/st7567_i2c/display.py +1 -1
- esphome/components/st7920/display.py +2 -2
- esphome/components/statsd/__init__.py +3 -3
- esphome/components/status/binary_sensor.py +2 -5
- esphome/components/status_led/__init__.py +1 -1
- esphome/components/status_led/light/__init__.py +2 -1
- esphome/components/stepper/__init__.py +2 -2
- esphome/components/sts3x/sensor.py +1 -1
- esphome/components/substitutions/__init__.py +2 -2
- esphome/components/sun/__init__.py +4 -4
- esphome/components/sun/sensor/__init__.py +4 -7
- esphome/components/sun/text_sensor/__init__.py +5 -4
- esphome/components/sun_gtil2/__init__.py +1 -1
- esphome/components/sun_gtil2/sensor.py +7 -6
- esphome/components/sun_gtil2/text_sensor.py +3 -2
- esphome/components/sx1509/__init__.py +5 -5
- esphome/components/sx1509/binary_sensor/__init__.py +3 -3
- esphome/components/sx1509/output/__init__.py +4 -3
- esphome/components/t6615/sensor.py +1 -1
- esphome/components/tca9548a/__init__.py +1 -1
- esphome/components/tcl112/climate.py +1 -1
- esphome/components/tcs34725/sensor.py +4 -4
- esphome/components/tee501/sensor.py +1 -1
- esphome/components/teleinfo/__init__.py +1 -1
- esphome/components/teleinfo/sensor/__init__.py +1 -7
- esphome/components/teleinfo/text_sensor/__init__.py +1 -1
- esphome/components/tem3200/sensor.py +1 -2
- esphome/components/template/alarm_control_panel/__init__.py +3 -10
- esphome/components/template/cover/__init__.py +4 -3
- esphome/components/template/datetime/__init__.py +8 -9
- esphome/components/template/event/__init__.py +2 -5
- esphome/components/template/fan/__init__.py +2 -6
- esphome/components/template/lock/__init__.py +3 -2
- esphome/components/template/number/__init__.py +3 -2
- esphome/components/template/output/__init__.py +4 -3
- esphome/components/template/select/__init__.py +3 -2
- esphome/components/template/sensor/__init__.py +4 -7
- esphome/components/template/switch/__init__.py +3 -2
- esphome/components/template/text/__init__.py +4 -3
- esphome/components/template/text_sensor/__init__.py +3 -2
- esphome/components/template/valve/__init__.py +3 -2
- esphome/components/time/real_time_clock.cpp +0 -4
- esphome/components/time/real_time_clock.h +4 -3
- esphome/components/time_based/cover.py +3 -3
- esphome/components/tlc59208f/__init__.py +1 -1
- esphome/components/tlc59208f/output.py +2 -1
- esphome/components/tlc5947/__init__.py +1 -1
- esphome/components/tlc5947/output/__init__.py +2 -1
- esphome/components/tlc5971/__init__.py +2 -8
- esphome/components/tlc5971/output/__init__.py +2 -1
- esphome/components/tm1621/display.py +3 -3
- esphome/components/tm1637/binary_sensor.py +1 -1
- esphome/components/tm1637/display.py +3 -3
- esphome/components/tm1651/__init__.py +4 -4
- esphome/components/tmp102/sensor.py +1 -1
- esphome/components/tmp1075/sensor.py +2 -2
- esphome/components/tmp117/sensor.py +1 -1
- esphome/components/tof10120/sensor.py +2 -2
- esphome/components/tormatic/cover.py +2 -6
- esphome/components/toshiba/climate.py +1 -1
- esphome/components/total_daily_energy/sensor.py +4 -4
- esphome/components/tsl2561/sensor.py +1 -1
- esphome/components/tsl2591/sensor.py +9 -9
- esphome/components/tt21100/binary_sensor/__init__.py +2 -2
- esphome/components/tt21100/touchscreen/__init__.py +2 -3
- esphome/components/ttp229_bsf/__init__.py +2 -2
- esphome/components/ttp229_bsf/binary_sensor.py +3 -2
- esphome/components/ttp229_lsf/__init__.py +1 -1
- esphome/components/ttp229_lsf/binary_sensor.py +3 -2
- esphome/components/tuya/__init__.py +3 -5
- esphome/components/tuya/binary_sensor/__init__.py +2 -2
- esphome/components/tuya/climate/__init__.py +6 -5
- esphome/components/tuya/cover/__init__.py +5 -4
- esphome/components/tuya/fan/__init__.py +3 -2
- esphome/components/tuya/light/__init__.py +9 -8
- esphome/components/tuya/number/__init__.py +6 -5
- esphome/components/tuya/select/__init__.py +4 -3
- esphome/components/tuya/sensor/__init__.py +3 -2
- esphome/components/tuya/switch/__init__.py +3 -2
- esphome/components/tuya/text_sensor/__init__.py +3 -2
- esphome/components/tx20/sensor.py +6 -6
- esphome/components/uart/__init__.py +20 -19
- esphome/components/uart/button/__init__.py +2 -1
- esphome/components/uart/switch/__init__.py +2 -1
- esphome/components/ufire_ise/sensor.py +2 -2
- esphome/components/uln2003/stepper.py +2 -2
- esphome/components/ultrasonic/sensor.py +4 -4
- esphome/components/uponor_smatrix/__init__.py +2 -6
- esphome/components/uponor_smatrix/climate/__init__.py +3 -3
- esphome/components/vbus/__init__.py +1 -1
- esphome/components/vbus/binary_sensor/__init__.py +7 -6
- esphome/components/vbus/sensor/__init__.py +7 -6
- esphome/components/veml3235/sensor.py +1 -1
- esphome/components/veml7700/sensor.py +1 -1
- esphome/components/version/text_sensor.py +2 -6
- esphome/components/vl53l0x/sensor.py +6 -6
- esphome/components/web_server_base/__init__.py +2 -2
- esphome/components/web_server_idf/__init__.py +1 -1
- esphome/components/weikai/__init__.py +1 -1
- esphome/components/whirlpool/climate.py +1 -1
- esphome/components/whynter/climate.py +1 -1
- esphome/components/wireguard/binary_sensor.py +1 -1
- esphome/components/wireguard/sensor.py +2 -5
- esphome/components/wireguard/text_sensor.py +2 -5
- esphome/components/wk2132_i2c/__init__.py +1 -1
- esphome/components/wk2132_spi/__init__.py +1 -2
- esphome/components/wk2168_i2c/__init__.py +3 -8
- esphome/components/wk2168_spi/__init__.py +3 -8
- esphome/components/wk2204_i2c/__init__.py +1 -1
- esphome/components/wk2204_spi/__init__.py +1 -1
- esphome/components/wk2212_i2c/__init__.py +3 -8
- esphome/components/wk2212_spi/__init__.py +3 -8
- esphome/components/wl_134/text_sensor.py +2 -4
- esphome/components/wled/__init__.py +2 -2
- esphome/components/x9c/output.py +4 -4
- esphome/components/xgzp68xx/sensor.py +5 -5
- esphome/components/xiaomi_ble/__init__.py +1 -1
- esphome/components/xiaomi_cgd1/sensor.py +3 -3
- esphome/components/xiaomi_cgdk2/sensor.py +3 -3
- esphome/components/xiaomi_cgg1/sensor.py +2 -2
- esphome/components/xiaomi_cgpr1/binary_sensor.py +6 -6
- esphome/components/xiaomi_gcls002/sensor.py +7 -7
- esphome/components/xiaomi_hhccjcy01/sensor.py +9 -9
- esphome/components/xiaomi_hhccjcy10/sensor.py +9 -9
- esphome/components/xiaomi_hhccpot002/sensor.py +7 -7
- esphome/components/xiaomi_jqjcy01ym/sensor.py +6 -6
- esphome/components/xiaomi_lywsd02/sensor.py +4 -4
- esphome/components/xiaomi_lywsd02mmc/sensor.py +5 -5
- esphome/components/xiaomi_lywsd03mmc/sensor.py +6 -6
- esphome/components/xiaomi_lywsdcgq/sensor.py +5 -5
- esphome/components/xiaomi_mhoc303/sensor.py +4 -4
- esphome/components/xiaomi_mhoc401/sensor.py +6 -6
- esphome/components/xiaomi_miscale/sensor.py +6 -6
- esphome/components/xiaomi_mjyd02yla/binary_sensor.py +8 -8
- esphome/components/xiaomi_mue4094rt/binary_sensor.py +2 -7
- esphome/components/xiaomi_rtcgq02lm/__init__.py +2 -3
- esphome/components/xiaomi_rtcgq02lm/binary_sensor.py +3 -3
- esphome/components/xiaomi_rtcgq02lm/sensor.py +3 -3
- esphome/components/xiaomi_wx08zm/binary_sensor.py +2 -3
- esphome/components/xl9535/__init__.py +2 -2
- esphome/components/yashima/climate.py +1 -1
- esphome/components/zhlt01/climate.py +1 -1
- esphome/components/zio_ultrasonic/sensor.py +2 -5
- esphome/components/zyaura/sensor.py +7 -7
- esphome/config_validation.py +0 -42
- esphome/const.py +3 -1
- esphome/core/__init__.py +0 -1
- esphome/core/component.cpp +3 -1
- esphome/core/component.h +15 -2
- esphome/core/config.py +4 -0
- esphome/core/defines.h +21 -0
- esphome/core/helpers.cpp +6 -7
- esphome/core/scheduler.cpp +34 -67
- esphome/core/scheduler.h +7 -17
- esphome/dashboard/status/mqtt.py +0 -2
- esphome/vscode.py +27 -8
- esphome/yaml_util.py +75 -39
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/METADATA +45 -44
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/RECORD +718 -711
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/WHEEL +1 -1
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info/licenses}/LICENSE +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/top_level.txt +0 -0
@@ -1,21 +1,43 @@
|
|
1
|
+
import logging
|
2
|
+
|
1
3
|
import esphome.codegen as cg
|
4
|
+
from esphome.components.esp32 import (
|
5
|
+
CONF_ENABLE_IDF_EXPERIMENTAL_FEATURES,
|
6
|
+
VARIANT_ESP32,
|
7
|
+
add_idf_sdkconfig_option,
|
8
|
+
get_esp32_variant,
|
9
|
+
only_on_variant,
|
10
|
+
)
|
11
|
+
from esphome.components.esp32.const import VARIANT_ESP32S2, VARIANT_ESP32S3
|
2
12
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components.esp32 import add_idf_sdkconfig_option, get_esp32_variant
|
4
|
-
from esphome.core import CORE
|
5
13
|
from esphome.const import (
|
14
|
+
CONF_ADVANCED,
|
15
|
+
CONF_FRAMEWORK,
|
6
16
|
CONF_ID,
|
7
17
|
CONF_MODE,
|
8
18
|
CONF_SPEED,
|
19
|
+
PLATFORM_ESP32,
|
9
20
|
)
|
21
|
+
from esphome.core import CORE
|
22
|
+
import esphome.final_validate as fv
|
10
23
|
|
11
24
|
CODEOWNERS = ["@esphome/core"]
|
12
25
|
|
26
|
+
DEPENDENCIES = [PLATFORM_ESP32]
|
27
|
+
|
28
|
+
_LOGGER = logging.getLogger(__name__)
|
29
|
+
|
13
30
|
psram_ns = cg.esphome_ns.namespace("psram")
|
14
31
|
PsramComponent = psram_ns.class_("PsramComponent", cg.Component)
|
15
32
|
|
33
|
+
TYPE_QUAD = "quad"
|
34
|
+
TYPE_OCTAL = "octal"
|
35
|
+
|
36
|
+
CONF_ENABLE_ECC = "enable_ecc"
|
37
|
+
|
16
38
|
SPIRAM_MODES = {
|
17
|
-
|
18
|
-
|
39
|
+
TYPE_QUAD: "CONFIG_SPIRAM_MODE_QUAD",
|
40
|
+
TYPE_OCTAL: "CONFIG_SPIRAM_MODE_OCT",
|
19
41
|
}
|
20
42
|
|
21
43
|
SPIRAM_SPEEDS = {
|
@@ -24,21 +46,57 @@ SPIRAM_SPEEDS = {
|
|
24
46
|
120e6: "CONFIG_SPIRAM_SPEED_120M",
|
25
47
|
}
|
26
48
|
|
49
|
+
|
50
|
+
def validate_psram_mode(config):
|
51
|
+
if config[CONF_MODE] == TYPE_OCTAL and config[CONF_SPEED] == 120e6:
|
52
|
+
esp32_config = fv.full_config.get()[PLATFORM_ESP32]
|
53
|
+
if (
|
54
|
+
esp32_config[CONF_FRAMEWORK]
|
55
|
+
.get(CONF_ADVANCED, {})
|
56
|
+
.get(CONF_ENABLE_IDF_EXPERIMENTAL_FEATURES)
|
57
|
+
):
|
58
|
+
_LOGGER.warning(
|
59
|
+
"120MHz PSRAM in octal mode is an experimental feature - use at your own risk"
|
60
|
+
)
|
61
|
+
else:
|
62
|
+
raise cv.Invalid("PSRAM 120MHz is not supported in octal mode")
|
63
|
+
if config[CONF_MODE] != TYPE_OCTAL and config[CONF_ENABLE_ECC]:
|
64
|
+
raise cv.Invalid("ECC is only available in octal mode.")
|
65
|
+
if config[CONF_MODE] == TYPE_OCTAL:
|
66
|
+
variant = get_esp32_variant()
|
67
|
+
if variant != VARIANT_ESP32S3:
|
68
|
+
raise cv.Invalid(
|
69
|
+
f"Octal PSRAM is only supported on ESP32-S3, not {variant}"
|
70
|
+
)
|
71
|
+
return config
|
72
|
+
|
73
|
+
|
27
74
|
CONFIG_SCHEMA = cv.All(
|
28
75
|
cv.Schema(
|
29
76
|
{
|
30
77
|
cv.GenerateID(): cv.declare_id(PsramComponent),
|
31
|
-
cv.Optional(CONF_MODE): cv.enum(
|
32
|
-
|
78
|
+
cv.Optional(CONF_MODE, default=TYPE_QUAD): cv.enum(
|
79
|
+
SPIRAM_MODES, lower=True
|
80
|
+
),
|
81
|
+
cv.Optional(CONF_ENABLE_ECC, default=False): cv.boolean,
|
82
|
+
cv.Optional(CONF_SPEED, default=40e6): cv.All(
|
83
|
+
cv.frequency, cv.one_of(*SPIRAM_SPEEDS)
|
84
|
+
),
|
33
85
|
}
|
34
86
|
),
|
35
|
-
|
87
|
+
only_on_variant(
|
88
|
+
supported=[VARIANT_ESP32, VARIANT_ESP32S3, VARIANT_ESP32S2],
|
89
|
+
),
|
36
90
|
)
|
37
91
|
|
92
|
+
FINAL_VALIDATE_SCHEMA = validate_psram_mode
|
93
|
+
|
38
94
|
|
39
95
|
async def to_code(config):
|
40
96
|
if CORE.using_arduino:
|
41
97
|
cg.add_build_flag("-DBOARD_HAS_PSRAM")
|
98
|
+
if config[CONF_MODE] == TYPE_OCTAL:
|
99
|
+
cg.add_platformio_option("board_build.arduino.memory_type", "qio_opi")
|
42
100
|
|
43
101
|
if CORE.using_esp_idf:
|
44
102
|
add_idf_sdkconfig_option(
|
@@ -49,10 +107,16 @@ async def to_code(config):
|
|
49
107
|
add_idf_sdkconfig_option("CONFIG_SPIRAM_USE_CAPS_ALLOC", True)
|
50
108
|
add_idf_sdkconfig_option("CONFIG_SPIRAM_IGNORE_NOTFOUND", True)
|
51
109
|
|
52
|
-
|
53
|
-
|
54
|
-
if CONF_SPEED
|
55
|
-
add_idf_sdkconfig_option(
|
110
|
+
add_idf_sdkconfig_option(f"{SPIRAM_MODES[config[CONF_MODE]]}", True)
|
111
|
+
add_idf_sdkconfig_option(f"{SPIRAM_SPEEDS[config[CONF_SPEED]]}", True)
|
112
|
+
if config[CONF_MODE] == TYPE_OCTAL and config[CONF_SPEED] == 120e6:
|
113
|
+
add_idf_sdkconfig_option("CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240", True)
|
114
|
+
# This works only on IDF 5.4.x but does no harm on earlier versions
|
115
|
+
add_idf_sdkconfig_option(
|
116
|
+
"CONFIG_SPIRAM_TIMING_TUNING_POINT_VIA_TEMPERATURE_SENSOR", True
|
117
|
+
)
|
118
|
+
if config[CONF_ENABLE_ECC]:
|
119
|
+
add_idf_sdkconfig_option("CONFIG_SPIRAM_ECC_ENABLE", True)
|
56
120
|
|
57
121
|
cg.add_define("USE_PSRAM")
|
58
122
|
|
@@ -1,25 +1,36 @@
|
|
1
|
-
#include "psram.h"
|
2
1
|
|
3
2
|
#ifdef USE_ESP32
|
3
|
+
#include "psram.h"
|
4
|
+
#ifdef USE_ESP_IDF
|
5
|
+
#include <esp_psram.h>
|
6
|
+
#endif // USE_ESP_IDF
|
4
7
|
|
5
8
|
#include "esphome/core/log.h"
|
6
9
|
|
7
10
|
#include <esp_heap_caps.h>
|
8
|
-
#include <esp_idf_version.h>
|
9
11
|
|
10
12
|
namespace esphome {
|
11
13
|
namespace psram {
|
12
|
-
|
13
14
|
static const char *const TAG = "psram";
|
14
15
|
|
15
16
|
void PsramComponent::dump_config() {
|
17
|
+
ESP_LOGCONFIG(TAG, "PSRAM:");
|
18
|
+
#ifdef USE_ESP_IDF
|
19
|
+
bool available = esp_psram_is_initialized();
|
20
|
+
|
21
|
+
ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available));
|
22
|
+
if (available) {
|
23
|
+
ESP_LOGCONFIG(TAG, " Size: %zu KB", esp_psram_get_size() / 1024);
|
24
|
+
#if CONFIG_SPIRAM_ECC_ENABLE
|
25
|
+
ESP_LOGCONFIG(TAG, " ECC enabled: YES");
|
26
|
+
#endif
|
27
|
+
}
|
28
|
+
#else
|
16
29
|
// Technically this can be false if the PSRAM is full, but heap_caps_get_total_size() isn't always available, and it's
|
17
30
|
// very unlikely for the PSRAM to be full.
|
18
31
|
bool available = heap_caps_get_free_size(MALLOC_CAP_SPIRAM) > 0;
|
19
|
-
|
20
|
-
ESP_LOGCONFIG(TAG, "PSRAM:");
|
21
32
|
ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available));
|
22
|
-
|
33
|
+
|
23
34
|
if (available) {
|
24
35
|
const size_t psram_total_size_bytes = heap_caps_get_total_size(MALLOC_CAP_SPIRAM);
|
25
36
|
const float psram_total_size_kb = psram_total_size_bytes / 1024.0f;
|
@@ -30,7 +41,7 @@ void PsramComponent::dump_config() {
|
|
30
41
|
ESP_LOGCONFIG(TAG, " Size: %zu bytes", psram_total_size_bytes);
|
31
42
|
}
|
32
43
|
}
|
33
|
-
#endif
|
44
|
+
#endif // USE_ESP_IDF
|
34
45
|
}
|
35
46
|
|
36
47
|
} // namespace psram
|
@@ -1,22 +1,22 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation, pins
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import sensor
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_COUNT_MODE,
|
7
7
|
CONF_FALLING_EDGE,
|
8
8
|
CONF_ID,
|
9
9
|
CONF_INTERNAL_FILTER,
|
10
|
+
CONF_NUMBER,
|
10
11
|
CONF_PIN,
|
11
12
|
CONF_RISING_EDGE,
|
12
|
-
CONF_NUMBER,
|
13
13
|
CONF_TOTAL,
|
14
14
|
CONF_VALUE,
|
15
15
|
ICON_PULSE,
|
16
16
|
STATE_CLASS_MEASUREMENT,
|
17
17
|
STATE_CLASS_TOTAL_INCREASING,
|
18
|
-
UNIT_PULSES_PER_MINUTE,
|
19
18
|
UNIT_PULSES,
|
19
|
+
UNIT_PULSES_PER_MINUTE,
|
20
20
|
)
|
21
21
|
from esphome.core import CORE
|
22
22
|
|
@@ -1,13 +1,13 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation, pins
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import sensor
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_ID,
|
7
7
|
CONF_INTERNAL_FILTER,
|
8
8
|
CONF_INTERNAL_FILTER_MODE,
|
9
|
-
CONF_PIN,
|
10
9
|
CONF_NUMBER,
|
10
|
+
CONF_PIN,
|
11
11
|
CONF_TIMEOUT,
|
12
12
|
CONF_TOTAL,
|
13
13
|
CONF_VALUE,
|
@@ -1,13 +1,8 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import pins
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import sensor
|
5
|
-
|
6
|
-
|
7
|
-
STATE_CLASS_MEASUREMENT,
|
8
|
-
UNIT_SECOND,
|
9
|
-
ICON_TIMER,
|
10
|
-
)
|
4
|
+
import esphome.config_validation as cv
|
5
|
+
from esphome.const import CONF_PIN, ICON_TIMER, STATE_CLASS_MEASUREMENT, UNIT_SECOND
|
11
6
|
|
12
7
|
pulse_width_ns = cg.esphome_ns.namespace("pulse_width")
|
13
8
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
+
from esphome.components import esp32_ble_tracker, sensor
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import sensor, esp32_ble_tracker
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_BATTERY_LEVEL,
|
6
6
|
CONF_BATTERY_VOLTAGE,
|
7
|
-
CONF_MAC_ADDRESS,
|
8
7
|
CONF_HUMIDITY,
|
8
|
+
CONF_ID,
|
9
|
+
CONF_MAC_ADDRESS,
|
9
10
|
CONF_SIGNAL_STRENGTH,
|
10
11
|
CONF_TEMPERATURE,
|
11
|
-
CONF_ID,
|
12
12
|
DEVICE_CLASS_BATTERY,
|
13
13
|
DEVICE_CLASS_HUMIDITY,
|
14
14
|
DEVICE_CLASS_SIGNAL_STRENGTH,
|
@@ -1,27 +1,22 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
|
-
CONF_VOLTAGE,
|
6
5
|
CONF_CURRENT,
|
6
|
+
CONF_ID,
|
7
7
|
CONF_TEMPERATURE,
|
8
|
-
|
9
|
-
|
10
|
-
DEVICE_CLASS_VOLTAGE,
|
8
|
+
CONF_VOLTAGE,
|
9
|
+
DEVICE_CLASS_BATTERY,
|
11
10
|
DEVICE_CLASS_CURRENT,
|
12
11
|
DEVICE_CLASS_TEMPERATURE,
|
13
|
-
|
12
|
+
DEVICE_CLASS_VOLTAGE,
|
13
|
+
UNIT_AMPERE,
|
14
14
|
UNIT_CELSIUS,
|
15
15
|
UNIT_PERCENT,
|
16
|
-
|
16
|
+
UNIT_VOLT,
|
17
17
|
)
|
18
18
|
|
19
|
-
from .. import
|
20
|
-
CONF_PYLONTECH_ID,
|
21
|
-
PYLONTECH_COMPONENT_SCHEMA,
|
22
|
-
CONF_BATTERY,
|
23
|
-
pylontech_ns,
|
24
|
-
)
|
19
|
+
from .. import CONF_BATTERY, CONF_PYLONTECH_ID, PYLONTECH_COMPONENT_SCHEMA, pylontech_ns
|
25
20
|
|
26
21
|
PylontechSensor = pylontech_ns.class_("PylontechSensor", cg.Component)
|
27
22
|
|
@@ -1,14 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import text_sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import CONF_ID
|
5
5
|
|
6
|
-
from .. import
|
7
|
-
CONF_PYLONTECH_ID,
|
8
|
-
PYLONTECH_COMPONENT_SCHEMA,
|
9
|
-
CONF_BATTERY,
|
10
|
-
pylontech_ns,
|
11
|
-
)
|
6
|
+
from .. import CONF_BATTERY, CONF_PYLONTECH_ID, PYLONTECH_COMPONENT_SCHEMA, pylontech_ns
|
12
7
|
|
13
8
|
PylontechTextSensor = pylontech_ns.class_("PylontechTextSensor", cg.Component)
|
14
9
|
|
@@ -1,20 +1,20 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import sensor, uart
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_CURRENT,
|
6
|
+
CONF_ENERGY,
|
6
7
|
CONF_ID,
|
7
8
|
CONF_POWER,
|
8
9
|
CONF_VOLTAGE,
|
9
|
-
CONF_ENERGY,
|
10
10
|
DEVICE_CLASS_CURRENT,
|
11
11
|
DEVICE_CLASS_ENERGY,
|
12
12
|
DEVICE_CLASS_POWER,
|
13
13
|
DEVICE_CLASS_VOLTAGE,
|
14
14
|
STATE_CLASS_MEASUREMENT,
|
15
15
|
STATE_CLASS_TOTAL_INCREASING,
|
16
|
-
UNIT_VOLT,
|
17
16
|
UNIT_AMPERE,
|
17
|
+
UNIT_VOLT,
|
18
18
|
UNIT_WATT,
|
19
19
|
UNIT_WATT_HOURS,
|
20
20
|
)
|
@@ -1,27 +1,27 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation
|
4
2
|
from esphome.automation import maybe_simple_id
|
5
|
-
|
3
|
+
import esphome.codegen as cg
|
4
|
+
from esphome.components import modbus, sensor
|
5
|
+
import esphome.config_validation as cv
|
6
6
|
from esphome.const import (
|
7
7
|
CONF_CURRENT,
|
8
8
|
CONF_ENERGY,
|
9
|
+
CONF_FREQUENCY,
|
9
10
|
CONF_ID,
|
10
11
|
CONF_POWER,
|
11
|
-
CONF_VOLTAGE,
|
12
|
-
CONF_FREQUENCY,
|
13
12
|
CONF_POWER_FACTOR,
|
14
|
-
|
15
|
-
DEVICE_CLASS_VOLTAGE,
|
13
|
+
CONF_VOLTAGE,
|
16
14
|
DEVICE_CLASS_CURRENT,
|
17
|
-
DEVICE_CLASS_POWER,
|
18
15
|
DEVICE_CLASS_ENERGY,
|
16
|
+
DEVICE_CLASS_POWER,
|
17
|
+
DEVICE_CLASS_POWER_FACTOR,
|
18
|
+
DEVICE_CLASS_VOLTAGE,
|
19
19
|
ICON_CURRENT_AC,
|
20
20
|
STATE_CLASS_MEASUREMENT,
|
21
21
|
STATE_CLASS_TOTAL_INCREASING,
|
22
|
+
UNIT_AMPERE,
|
22
23
|
UNIT_HERTZ,
|
23
24
|
UNIT_VOLT,
|
24
|
-
UNIT_AMPERE,
|
25
25
|
UNIT_WATT,
|
26
26
|
UNIT_WATT_HOURS,
|
27
27
|
)
|
@@ -1,13 +1,13 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation
|
4
2
|
from esphome.automation import maybe_simple_id
|
5
|
-
|
3
|
+
import esphome.codegen as cg
|
4
|
+
from esphome.components import modbus, sensor
|
5
|
+
import esphome.config_validation as cv
|
6
6
|
from esphome.const import (
|
7
7
|
CONF_CURRENT,
|
8
|
+
CONF_ENERGY,
|
8
9
|
CONF_ID,
|
9
10
|
CONF_POWER,
|
10
|
-
CONF_ENERGY,
|
11
11
|
CONF_VOLTAGE,
|
12
12
|
DEVICE_CLASS_CURRENT,
|
13
13
|
DEVICE_CLASS_ENERGY,
|
@@ -15,10 +15,10 @@ from esphome.const import (
|
|
15
15
|
DEVICE_CLASS_VOLTAGE,
|
16
16
|
STATE_CLASS_MEASUREMENT,
|
17
17
|
STATE_CLASS_TOTAL_INCREASING,
|
18
|
-
UNIT_VOLT,
|
19
18
|
UNIT_AMPERE,
|
20
|
-
UNIT_WATT,
|
21
19
|
UNIT_KILOWATT_HOURS,
|
20
|
+
UNIT_VOLT,
|
21
|
+
UNIT_WATT,
|
22
22
|
)
|
23
23
|
|
24
24
|
AUTO_LOAD = ["modbus"]
|
@@ -1,24 +1,24 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import i2c, sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_ADDRESS,
|
6
6
|
CONF_FIELD_STRENGTH_X,
|
7
7
|
CONF_FIELD_STRENGTH_Y,
|
8
8
|
CONF_FIELD_STRENGTH_Z,
|
9
9
|
CONF_HEADING,
|
10
|
-
CONF_TEMPERATURE,
|
11
10
|
CONF_ID,
|
12
11
|
CONF_OVERSAMPLING,
|
13
12
|
CONF_RANGE,
|
13
|
+
CONF_TEMPERATURE,
|
14
|
+
CONF_UPDATE_INTERVAL,
|
14
15
|
DEVICE_CLASS_TEMPERATURE,
|
15
16
|
ICON_MAGNET,
|
17
|
+
ICON_SCREEN_ROTATION,
|
16
18
|
STATE_CLASS_MEASUREMENT,
|
17
|
-
UNIT_MICROTESLA,
|
18
19
|
UNIT_CELSIUS,
|
19
20
|
UNIT_DEGREES,
|
20
|
-
|
21
|
-
CONF_UPDATE_INTERVAL,
|
21
|
+
UNIT_MICROTESLA,
|
22
22
|
)
|
23
23
|
|
24
24
|
DEPENDENCIES = ["i2c"]
|
@@ -1,8 +1,10 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import i2c, sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_ID,
|
6
|
+
CONF_IIR_FILTER,
|
7
|
+
CONF_OVERSAMPLING,
|
6
8
|
CONF_PRESSURE,
|
7
9
|
CONF_TEMPERATURE,
|
8
10
|
DEVICE_CLASS_PRESSURE,
|
@@ -10,8 +12,6 @@ from esphome.const import (
|
|
10
12
|
STATE_CLASS_MEASUREMENT,
|
11
13
|
UNIT_CELSIUS,
|
12
14
|
UNIT_HECTOPASCAL,
|
13
|
-
CONF_IIR_FILTER,
|
14
|
-
CONF_OVERSAMPLING,
|
15
15
|
)
|
16
16
|
|
17
17
|
DEPENDENCIES = ["i2c"]
|
@@ -1,11 +1,8 @@
|
|
1
1
|
from esphome import core
|
2
2
|
import esphome.codegen as cg
|
3
|
+
from esphome.components import binary_sensor, i2c
|
3
4
|
import esphome.config_validation as cv
|
4
|
-
from esphome.
|
5
|
-
from esphome.const import (
|
6
|
-
CONF_DEBOUNCE,
|
7
|
-
DEVICE_CLASS_MOTION,
|
8
|
-
)
|
5
|
+
from esphome.const import CONF_DEBOUNCE, DEVICE_CLASS_MOTION
|
9
6
|
|
10
7
|
DEPENDENCIES = ["i2c"]
|
11
8
|
CODEOWNERS = ["@kahrendt"]
|
@@ -1,14 +1,13 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
+
from esphome.components import ble_client, sensor
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import sensor, ble_client
|
4
|
-
|
5
4
|
from esphome.const import (
|
6
|
-
STATE_CLASS_MEASUREMENT,
|
7
|
-
UNIT_BECQUEREL_PER_CUBIC_METER,
|
8
5
|
CONF_ID,
|
9
6
|
CONF_RADON,
|
10
7
|
CONF_RADON_LONG_TERM,
|
11
8
|
ICON_RADIOACTIVE,
|
9
|
+
STATE_CLASS_MEASUREMENT,
|
10
|
+
UNIT_BECQUEREL_PER_CUBIC_METER,
|
12
11
|
)
|
13
12
|
|
14
13
|
DEPENDENCIES = ["ble_client"]
|
@@ -1,12 +1,12 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation, pins
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import i2c
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_ON_TAG,
|
7
7
|
CONF_ON_TAG_REMOVED,
|
8
|
-
CONF_TRIGGER_ID,
|
9
8
|
CONF_RESET_PIN,
|
9
|
+
CONF_TRIGGER_ID,
|
10
10
|
)
|
11
11
|
|
12
12
|
CODEOWNERS = ["@glmnet"]
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import uart
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import CONF_ID, CONF_ON_TAG, CONF_TRIGGER_ID
|
6
6
|
|
7
7
|
DEPENDENCIES = ["uart"]
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_REFERENCE_VOLTAGE,
|
6
6
|
CONF_SENSOR,
|
7
|
+
ICON_FLASH,
|
7
8
|
STATE_CLASS_MEASUREMENT,
|
8
9
|
UNIT_OHM,
|
9
|
-
ICON_FLASH,
|
10
10
|
)
|
11
11
|
|
12
12
|
resistance_ns = cg.esphome_ns.namespace("resistance")
|
@@ -1,10 +1,7 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import switch
|
4
|
-
|
5
|
-
|
6
|
-
ICON_RESTART,
|
7
|
-
)
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import ENTITY_CATEGORY_CONFIG, ICON_RESTART
|
8
5
|
|
9
6
|
restart_ns = cg.esphome_ns.namespace("restart")
|
10
7
|
RestartSwitch = restart_ns.class_("RestartSwitch", switch.Switch, cg.Component)
|
@@ -1,9 +1,10 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import uart
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_CODE,
|
7
|
+
CONF_DURATION,
|
7
8
|
CONF_HIGH,
|
8
9
|
CONF_ID,
|
9
10
|
CONF_LENGTH,
|
@@ -12,7 +13,6 @@ from esphome.const import (
|
|
12
13
|
CONF_RAW,
|
13
14
|
CONF_SYNC,
|
14
15
|
CONF_TRIGGER_ID,
|
15
|
-
CONF_DURATION,
|
16
16
|
)
|
17
17
|
|
18
18
|
DEPENDENCIES = ["uart"]
|