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
@@ -37,6 +37,7 @@ CODEOWNERS = ["@esphome/core", "@clydebarrow"]
|
|
37
37
|
spi_ns = cg.esphome_ns.namespace("spi")
|
38
38
|
SPIComponent = spi_ns.class_("SPIComponent", cg.Component)
|
39
39
|
QuadSPIComponent = spi_ns.class_("QuadSPIComponent", cg.Component)
|
40
|
+
OctalSPIComponent = spi_ns.class_("OctalSPIComponent", cg.Component)
|
40
41
|
SPIDevice = spi_ns.class_("SPIDevice")
|
41
42
|
SPIDataRate = spi_ns.enum("SPIDataRate")
|
42
43
|
SPIMode = spi_ns.enum("SPIMode")
|
@@ -78,6 +79,13 @@ CONF_INTERFACE = "interface"
|
|
78
79
|
CONF_INTERFACE_INDEX = "interface_index"
|
79
80
|
TYPE_SINGLE = "single"
|
80
81
|
TYPE_QUAD = "quad"
|
82
|
+
TYPE_OCTAL = "octal"
|
83
|
+
|
84
|
+
TYPE_CLASS = {
|
85
|
+
TYPE_SINGLE: SPIComponent,
|
86
|
+
TYPE_QUAD: QuadSPIComponent,
|
87
|
+
TYPE_OCTAL: OctalSPIComponent,
|
88
|
+
}
|
81
89
|
|
82
90
|
# RP2040 SPI pin assignments are complicated;
|
83
91
|
# refer to GPIO function select table in https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf
|
@@ -230,7 +238,7 @@ def validate_spi_config(config):
|
|
230
238
|
):
|
231
239
|
raise cv.Invalid("Invalid pin selections for hardware SPI interface")
|
232
240
|
if CONF_DATA_PINS in spi and CONF_INTERFACE_INDEX not in spi:
|
233
|
-
raise cv.Invalid("Quad
|
241
|
+
raise cv.Invalid("Quad and octal modes requires a hardware interface")
|
234
242
|
|
235
243
|
return config
|
236
244
|
|
@@ -251,7 +259,7 @@ def get_spi_interface(index):
|
|
251
259
|
return "new SPIClass(HSPI)"
|
252
260
|
|
253
261
|
|
254
|
-
|
262
|
+
SPI_SINGLE_SCHEMA = cv.All(
|
255
263
|
cv.Schema(
|
256
264
|
{
|
257
265
|
cv.GenerateID(): cv.declare_id(SPIComponent),
|
@@ -266,7 +274,7 @@ SPI_SCHEMA = cv.All(
|
|
266
274
|
lower=True,
|
267
275
|
),
|
268
276
|
cv.Optional(CONF_DATA_PINS): cv.invalid(
|
269
|
-
"'data_pins' should be used with 'type: quad' only"
|
277
|
+
"'data_pins' should be used with 'type: quad or octal' only"
|
270
278
|
),
|
271
279
|
}
|
272
280
|
),
|
@@ -274,38 +282,41 @@ SPI_SCHEMA = cv.All(
|
|
274
282
|
cv.only_on([PLATFORM_ESP32, PLATFORM_ESP8266, PLATFORM_RP2040]),
|
275
283
|
)
|
276
284
|
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
"
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
)
|
285
|
+
|
286
|
+
def spi_mode_schema(mode):
|
287
|
+
if mode == TYPE_SINGLE:
|
288
|
+
return SPI_SINGLE_SCHEMA
|
289
|
+
pin_count = 4 if mode == TYPE_QUAD else 8
|
290
|
+
return cv.All(
|
291
|
+
cv.Schema(
|
292
|
+
{
|
293
|
+
cv.GenerateID(): cv.declare_id(TYPE_CLASS[mode]),
|
294
|
+
cv.Required(CONF_CLK_PIN): pins.gpio_output_pin_schema,
|
295
|
+
cv.Required(CONF_DATA_PINS): cv.All(
|
296
|
+
cv.ensure_list(pins.internal_gpio_output_pin_number),
|
297
|
+
cv.Length(min=pin_count, max=pin_count),
|
298
|
+
),
|
299
|
+
cv.Optional(CONF_INTERFACE, default="hardware"): cv.one_of(
|
300
|
+
*sum(get_hw_interface_list(), ["hardware"]),
|
301
|
+
lower=True,
|
302
|
+
),
|
303
|
+
cv.Optional(CONF_MISO_PIN): cv.invalid(
|
304
|
+
f"'miso_pin' should not be used with {mode} SPI"
|
305
|
+
),
|
306
|
+
cv.Optional(CONF_MOSI_PIN): cv.invalid(
|
307
|
+
f"'mosi_pin' should not be used with {mode} SPI"
|
308
|
+
),
|
309
|
+
}
|
310
|
+
),
|
311
|
+
cv.only_on([PLATFORM_ESP32]),
|
312
|
+
cv.only_with_esp_idf,
|
313
|
+
)
|
314
|
+
|
301
315
|
|
302
316
|
CONFIG_SCHEMA = cv.All(
|
303
317
|
cv.ensure_list(
|
304
318
|
cv.typed_schema(
|
305
|
-
{
|
306
|
-
TYPE_SINGLE: SPI_SCHEMA,
|
307
|
-
TYPE_QUAD: SPI_QUAD_SCHEMA,
|
308
|
-
},
|
319
|
+
{k: spi_mode_schema(k) for k in TYPE_CLASS},
|
309
320
|
default_type=TYPE_SINGLE,
|
310
321
|
)
|
311
322
|
),
|
@@ -344,19 +355,17 @@ def spi_device_schema(
|
|
344
355
|
cs_pin_required=True,
|
345
356
|
default_data_rate=cv.UNDEFINED,
|
346
357
|
default_mode=cv.UNDEFINED,
|
347
|
-
|
358
|
+
mode=TYPE_SINGLE,
|
348
359
|
):
|
349
360
|
"""Create a schema for an SPI device.
|
350
361
|
:param cs_pin_required: If true, make the CS_PIN required in the config.
|
351
362
|
:param default_data_rate: Optional data_rate to use as default
|
352
363
|
:param default_mode Optional. The default SPI mode to use.
|
353
|
-
:param
|
364
|
+
:param mode Choose single, quad or octal mode.
|
354
365
|
:return: The SPI device schema, `extend` this in your config schema.
|
355
366
|
"""
|
356
367
|
schema = {
|
357
|
-
cv.GenerateID(CONF_SPI_ID): cv.use_id(
|
358
|
-
QuadSPIComponent if quad else SPIComponent
|
359
|
-
),
|
368
|
+
cv.GenerateID(CONF_SPI_ID): cv.use_id(TYPE_CLASS[mode]),
|
360
369
|
cv.Optional(CONF_DATA_RATE, default=default_data_rate): SPI_DATA_RATE_SCHEMA,
|
361
370
|
cv.Optional(CONF_SPI_MODE, default=default_mode): cv.enum(
|
362
371
|
SPI_MODE_OPTIONS, upper=True
|
esphome/components/spi/spi.h
CHANGED
@@ -211,11 +211,19 @@ class SPIBusHw : public SPIBus {
|
|
211
211
|
buscfg.data1_io_num = data_pins[1];
|
212
212
|
buscfg.data2_io_num = data_pins[2];
|
213
213
|
buscfg.data3_io_num = data_pins[3];
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
214
|
+
if (data_pins.size() == 8) {
|
215
|
+
buscfg.data4_io_num = data_pins[4];
|
216
|
+
buscfg.data5_io_num = data_pins[5];
|
217
|
+
buscfg.data6_io_num = data_pins[6];
|
218
|
+
buscfg.data7_io_num = data_pins[7];
|
219
|
+
buscfg.flags |= SPICOMMON_BUSFLAG_OCTAL;
|
220
|
+
} else {
|
221
|
+
buscfg.data4_io_num = -1;
|
222
|
+
buscfg.data5_io_num = -1;
|
223
|
+
buscfg.data6_io_num = -1;
|
224
|
+
buscfg.data7_io_num = -1;
|
225
|
+
buscfg.flags |= SPICOMMON_BUSFLAG_QUAD;
|
226
|
+
}
|
219
227
|
}
|
220
228
|
buscfg.max_transfer_sz = MAX_TRANSFER_SIZE;
|
221
229
|
auto err = spi_bus_initialize(channel, &buscfg, SPI_DMA_CH_AUTO);
|
@@ -1,9 +1,8 @@
|
|
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
|
-
|
6
|
-
from esphome.components import switch
|
3
|
+
import esphome.codegen as cg
|
4
|
+
from esphome.components import number, switch
|
5
|
+
import esphome.config_validation as cv
|
7
6
|
from esphome.const import (
|
8
7
|
CONF_ENTITY_CATEGORY,
|
9
8
|
CONF_ID,
|
@@ -14,12 +13,12 @@ from esphome.const import (
|
|
14
13
|
CONF_REPEAT,
|
15
14
|
CONF_RESTORE_VALUE,
|
16
15
|
CONF_RUN_DURATION,
|
16
|
+
CONF_SET_ACTION,
|
17
17
|
CONF_STEP,
|
18
18
|
CONF_UNIT_OF_MEASUREMENT,
|
19
19
|
ENTITY_CATEGORY_CONFIG,
|
20
20
|
UNIT_MINUTE,
|
21
21
|
UNIT_SECOND,
|
22
|
-
CONF_SET_ACTION,
|
23
22
|
)
|
24
23
|
|
25
24
|
AUTO_LOAD = ["number", "switch"]
|
@@ -1,30 +1,30 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
|
-
from esphome.components import i2c, sensor, sensirion_common
|
4
1
|
from esphome import automation
|
5
2
|
from esphome.automation import maybe_simple_id
|
3
|
+
import esphome.codegen as cg
|
4
|
+
from esphome.components import i2c, sensirion_common, sensor
|
5
|
+
import esphome.config_validation as cv
|
6
6
|
from esphome.const import (
|
7
7
|
CONF_ID,
|
8
8
|
CONF_PM_1_0,
|
9
9
|
CONF_PM_2_5,
|
10
10
|
CONF_PM_4_0,
|
11
11
|
CONF_PM_10_0,
|
12
|
+
CONF_PM_SIZE,
|
12
13
|
CONF_PMC_0_5,
|
13
14
|
CONF_PMC_1_0,
|
14
15
|
CONF_PMC_2_5,
|
15
16
|
CONF_PMC_4_0,
|
16
17
|
CONF_PMC_10_0,
|
17
|
-
CONF_PM_SIZE,
|
18
18
|
DEVICE_CLASS_PM1,
|
19
19
|
DEVICE_CLASS_PM10,
|
20
20
|
DEVICE_CLASS_PM25,
|
21
|
-
STATE_CLASS_MEASUREMENT,
|
22
|
-
UNIT_MICROGRAMS_PER_CUBIC_METER,
|
23
|
-
UNIT_COUNTS_PER_CUBIC_CENTIMETER,
|
24
|
-
UNIT_MICROMETER,
|
25
21
|
ICON_CHEMICAL_WEAPON,
|
26
22
|
ICON_COUNTER,
|
27
23
|
ICON_RULER,
|
24
|
+
STATE_CLASS_MEASUREMENT,
|
25
|
+
UNIT_COUNTS_PER_CUBIC_CENTIMETER,
|
26
|
+
UNIT_MICROGRAMS_PER_CUBIC_METER,
|
27
|
+
UNIT_MICROMETER,
|
28
28
|
)
|
29
29
|
|
30
30
|
CODEOWNERS = ["@martgras"]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
|
3
|
-
from esphome.components import ssd1306_base, i2c
|
2
|
+
from esphome.components import i2c, ssd1306_base
|
4
3
|
from esphome.components.ssd1306_base import _validate
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import CONF_ID, CONF_LAMBDA, CONF_PAGES
|
6
6
|
|
7
7
|
AUTO_LOAD = ["ssd1306_base"]
|
@@ -1,7 +1,7 @@
|
|
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 display
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_BRIGHTNESS,
|
7
7
|
CONF_EXTERNAL_VCC,
|
@@ -1,7 +1,7 @@
|
|
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 display
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_BRIGHTNESS,
|
7
7
|
CONF_EXTERNAL_VCC,
|
@@ -1,7 +1,7 @@
|
|
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 display
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import CONF_BRIGHTNESS, CONF_LAMBDA, CONF_MODEL, CONF_RESET_PIN
|
6
6
|
|
7
7
|
CODEOWNERS = ["@kbx81"]
|
@@ -1,7 +1,7 @@
|
|
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 display
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import CONF_BRIGHTNESS, CONF_LAMBDA, CONF_RESET_PIN
|
6
6
|
|
7
7
|
CODEOWNERS = ["@kbx81"]
|
@@ -1,7 +1,7 @@
|
|
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 display
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import CONF_BRIGHTNESS, CONF_LAMBDA, CONF_MODEL, CONF_RESET_PIN
|
6
6
|
|
7
7
|
CODEOWNERS = ["@kbx81"]
|
@@ -1,14 +1,14 @@
|
|
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 display
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
|
+
CONF_INVERT_COLORS,
|
6
7
|
CONF_LAMBDA,
|
7
|
-
CONF_RESET_PIN,
|
8
8
|
CONF_MIRROR_X,
|
9
9
|
CONF_MIRROR_Y,
|
10
|
+
CONF_RESET_PIN,
|
10
11
|
CONF_TRANSFORM,
|
11
|
-
CONF_INVERT_COLORS,
|
12
12
|
)
|
13
13
|
|
14
14
|
CODEOWNERS = ["@latonita"]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import display, spi
|
4
|
-
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_HEIGHT, CONF_ID, CONF_LAMBDA, CONF_WIDTH
|
5
5
|
|
6
6
|
AUTO_LOAD = ["display"]
|
7
7
|
CODEOWNERS = ["@marsjan155"]
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
+
from esphome.components import binary_sensor, sensor
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import sensor, binary_sensor
|
4
4
|
from esphome.const import (
|
5
|
+
CONF_BINARY_SENSORS,
|
5
6
|
CONF_ID,
|
6
|
-
CONF_PORT,
|
7
7
|
CONF_NAME,
|
8
|
+
CONF_PORT,
|
8
9
|
CONF_SENSORS,
|
9
|
-
CONF_BINARY_SENSORS,
|
10
10
|
)
|
11
11
|
|
12
12
|
AUTO_LOAD = ["socket"]
|
@@ -1,10 +1,7 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import binary_sensor
|
4
|
-
|
5
|
-
|
6
|
-
ENTITY_CATEGORY_DIAGNOSTIC,
|
7
|
-
)
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import DEVICE_CLASS_CONNECTIVITY, ENTITY_CATEGORY_DIAGNOSTIC
|
8
5
|
|
9
6
|
DEPENDENCIES = ["network"]
|
10
7
|
|
@@ -1,8 +1,9 @@
|
|
1
1
|
from esphome import pins
|
2
2
|
import esphome.codegen as cg
|
3
|
-
import esphome.config_validation as cv
|
4
3
|
from esphome.components import light, output
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import CONF_OUTPUT, CONF_OUTPUT_ID, CONF_PIN
|
6
|
+
|
6
7
|
from .. import status_led_ns
|
7
8
|
|
8
9
|
AUTO_LOAD = ["output"]
|
@@ -1,14 +1,14 @@
|
|
1
|
+
from esphome import automation
|
1
2
|
import esphome.codegen as cg
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome import automation
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_ACCELERATION,
|
6
6
|
CONF_DECELERATION,
|
7
7
|
CONF_ID,
|
8
8
|
CONF_MAX_SPEED,
|
9
9
|
CONF_POSITION,
|
10
|
-
CONF_TARGET,
|
11
10
|
CONF_SPEED,
|
11
|
+
CONF_TARGET,
|
12
12
|
)
|
13
13
|
from esphome.core import CORE, coroutine_with_priority
|
14
14
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import logging
|
2
2
|
|
3
|
-
import esphome.config_validation as cv
|
4
3
|
from esphome import core
|
4
|
+
from esphome.config_helpers import Extend, Remove, merge_config
|
5
|
+
import esphome.config_validation as cv
|
5
6
|
from esphome.const import CONF_SUBSTITUTIONS, VALID_SUBSTITUTIONS_CHARACTERS
|
6
7
|
from esphome.yaml_util import ESPHomeDataBase, make_data_base
|
7
|
-
from esphome.config_helpers import merge_config, Extend, Remove
|
8
8
|
|
9
9
|
CODEOWNERS = ["@esphome/core"]
|
10
10
|
_LOGGER = logging.getLogger(__name__)
|
@@ -1,15 +1,15 @@
|
|
1
1
|
import re
|
2
2
|
|
3
|
-
import esphome.codegen as cg
|
4
|
-
import esphome.config_validation as cv
|
5
3
|
from esphome import automation
|
4
|
+
import esphome.codegen as cg
|
6
5
|
from esphome.components import time
|
6
|
+
import esphome.config_validation as cv
|
7
7
|
from esphome.const import (
|
8
|
-
CONF_TIME_ID,
|
9
8
|
CONF_ID,
|
10
|
-
CONF_TRIGGER_ID,
|
11
9
|
CONF_LATITUDE,
|
12
10
|
CONF_LONGITUDE,
|
11
|
+
CONF_TIME_ID,
|
12
|
+
CONF_TRIGGER_ID,
|
13
13
|
)
|
14
14
|
|
15
15
|
CODEOWNERS = ["@OttoWinter"]
|
@@ -1,12 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import sensor
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
)
|
9
|
-
from .. import sun_ns, CONF_SUN_ID, Sun
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_TYPE, ICON_WEATHER_SUNSET, UNIT_DEGREES
|
5
|
+
|
6
|
+
from .. import CONF_SUN_ID, Sun, sun_ns
|
10
7
|
|
11
8
|
DEPENDENCIES = ["sun"]
|
12
9
|
|
@@ -1,14 +1,15 @@
|
|
1
|
+
import esphome.codegen as cg
|
1
2
|
from esphome.components import text_sensor
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
import esphome.codegen as cg
|
4
4
|
from esphome.const import (
|
5
|
+
CONF_FORMAT,
|
5
6
|
CONF_ICON,
|
7
|
+
CONF_TYPE,
|
6
8
|
ICON_WEATHER_SUNSET_DOWN,
|
7
9
|
ICON_WEATHER_SUNSET_UP,
|
8
|
-
CONF_TYPE,
|
9
|
-
CONF_FORMAT,
|
10
10
|
)
|
11
|
-
|
11
|
+
|
12
|
+
from .. import CONF_ELEVATION, CONF_SUN_ID, DEFAULT_ELEVATION, Sun, elevation, sun_ns
|
12
13
|
|
13
14
|
DEPENDENCIES = ["sun"]
|
14
15
|
|
@@ -1,18 +1,19 @@
|
|
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_TEMPERATURE,
|
6
6
|
DEVICE_CLASS_POWER,
|
7
7
|
DEVICE_CLASS_TEMPERATURE,
|
8
|
+
DEVICE_CLASS_VOLTAGE,
|
8
9
|
ICON_FLASH,
|
9
|
-
UNIT_VOLT,
|
10
10
|
ICON_THERMOMETER,
|
11
|
-
UNIT_WATT,
|
12
11
|
UNIT_CELSIUS,
|
13
|
-
|
12
|
+
UNIT_VOLT,
|
13
|
+
UNIT_WATT,
|
14
14
|
)
|
15
|
-
|
15
|
+
|
16
|
+
from . import CONF_SUN_GTIL2_ID, SunGTIL2Component
|
16
17
|
|
17
18
|
CONF_AC_VOLTAGE = "ac_voltage"
|
18
19
|
CONF_DC_VOLTAGE = "dc_voltage"
|
@@ -1,8 +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_STATE
|
5
|
-
|
5
|
+
|
6
|
+
from . import CONF_SUN_GTIL2_ID, SunGTIL2Component
|
6
7
|
|
7
8
|
CONF_SERIAL_NUMBER = "serial_number"
|
8
9
|
|
@@ -1,17 +1,17 @@
|
|
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 i2c
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_ID,
|
7
7
|
CONF_INPUT,
|
8
|
-
CONF_NUMBER,
|
9
|
-
CONF_MODE,
|
10
8
|
CONF_INVERTED,
|
9
|
+
CONF_MODE,
|
10
|
+
CONF_NUMBER,
|
11
|
+
CONF_OPEN_DRAIN,
|
11
12
|
CONF_OUTPUT,
|
12
13
|
CONF_PULLDOWN,
|
13
14
|
CONF_PULLUP,
|
14
|
-
CONF_OPEN_DRAIN,
|
15
15
|
)
|
16
16
|
|
17
17
|
CONF_KEYPAD = "keypad"
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import binary_sensor
|
4
|
-
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_COL, CONF_ROW
|
5
5
|
|
6
|
-
from .. import SX1509Component, sx1509_ns
|
6
|
+
from .. import CONF_SX1509_ID, SX1509Component, sx1509_ns
|
7
7
|
|
8
8
|
DEPENDENCIES = ["sx1509"]
|
9
9
|
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import output
|
4
|
-
|
5
|
-
from
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_ID, CONF_PIN
|
5
|
+
|
6
|
+
from .. import CONF_SX1509_ID, SX1509Component, sx1509_ns
|
6
7
|
|
7
8
|
DEPENDENCIES = ["sx1509"]
|
8
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 i2c, sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_COLOR_TEMPERATURE,
|
6
6
|
CONF_GAIN,
|
7
|
+
CONF_GLASS_ATTENUATION_FACTOR,
|
7
8
|
CONF_ID,
|
8
9
|
CONF_ILLUMINANCE,
|
9
|
-
CONF_GLASS_ATTENUATION_FACTOR,
|
10
10
|
CONF_INTEGRATION_TIME,
|
11
11
|
DEVICE_CLASS_ILLUMINANCE,
|
12
12
|
ICON_LIGHTBULB,
|
13
|
-
STATE_CLASS_MEASUREMENT,
|
14
|
-
UNIT_PERCENT,
|
15
13
|
ICON_THERMOMETER,
|
14
|
+
STATE_CLASS_MEASUREMENT,
|
16
15
|
UNIT_KELVIN,
|
17
16
|
UNIT_LUX,
|
17
|
+
UNIT_PERCENT,
|
18
18
|
)
|
19
19
|
|
20
20
|
DEPENDENCIES = ["i2c"]
|