esphome 2025.3.2__py3-none-any.whl → 2025.4.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +29 -7
- 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/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 +21 -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/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 +1 -1
- esphome/components/lvgl/defines.py +5 -2
- esphome/components/lvgl/lv_validation.py +17 -9
- esphome/components/lvgl/lvcode.py +9 -8
- esphome/components/lvgl/lvgl_esphome.h +19 -0
- esphome/components/lvgl/schemas.py +67 -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/canvas.py +403 -0
- esphome/components/lvgl/widgets/line.py +22 -32
- 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/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/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/const.py +3 -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-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/METADATA +45 -44
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/RECORD +700 -693
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/WHEEL +1 -1
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info/licenses}/LICENSE +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.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"]
|