esphome 2025.3.3__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/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/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/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/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.3.dist-info → esphome-2025.4.0b1.dist-info}/METADATA +45 -44
- {esphome-2025.3.3.dist-info → esphome-2025.4.0b1.dist-info}/RECORD +695 -688
- {esphome-2025.3.3.dist-info → esphome-2025.4.0b1.dist-info}/WHEEL +1 -1
- {esphome-2025.3.3.dist-info → esphome-2025.4.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.3.3.dist-info → esphome-2025.4.0b1.dist-info/licenses}/LICENSE +0 -0
- {esphome-2025.3.3.dist-info → esphome-2025.4.0b1.dist-info}/top_level.txt +0 -0
esphome/__main__.py
CHANGED
@@ -133,7 +133,7 @@ def get_port_type(port):
|
|
133
133
|
return "NETWORK"
|
134
134
|
|
135
135
|
|
136
|
-
def run_miniterm(config, port):
|
136
|
+
def run_miniterm(config, port, args):
|
137
137
|
import serial
|
138
138
|
|
139
139
|
from esphome import platformio_api
|
@@ -154,7 +154,7 @@ def run_miniterm(config, port):
|
|
154
154
|
|
155
155
|
# We can't set to False by default since it leads to toggling and hence
|
156
156
|
# ESP32 resets on some platforms.
|
157
|
-
if config["logger"][CONF_DEASSERT_RTS_DTR]:
|
157
|
+
if config["logger"][CONF_DEASSERT_RTS_DTR] or args.reset:
|
158
158
|
ser.dtr = False
|
159
159
|
ser.rts = False
|
160
160
|
|
@@ -244,11 +244,11 @@ def compile_program(args, config):
|
|
244
244
|
return 0 if idedata is not None else 1
|
245
245
|
|
246
246
|
|
247
|
-
def upload_using_esptool(config, port, file):
|
247
|
+
def upload_using_esptool(config, port, file, speed):
|
248
248
|
from esphome import platformio_api
|
249
249
|
|
250
|
-
first_baudrate = config[CONF_ESPHOME][CONF_PLATFORMIO_OPTIONS].get(
|
251
|
-
"upload_speed", 460800
|
250
|
+
first_baudrate = speed or config[CONF_ESPHOME][CONF_PLATFORMIO_OPTIONS].get(
|
251
|
+
"upload_speed", os.getenv("ESPHOME_UPLOAD_SPEED", "460800")
|
252
252
|
)
|
253
253
|
|
254
254
|
if file is not None:
|
@@ -348,7 +348,7 @@ def upload_program(config, args, host):
|
|
348
348
|
check_permissions(host)
|
349
349
|
if CORE.target_platform in (PLATFORM_ESP32, PLATFORM_ESP8266):
|
350
350
|
file = getattr(args, "file", None)
|
351
|
-
return upload_using_esptool(config, host, file)
|
351
|
+
return upload_using_esptool(config, host, file, args.upload_speed)
|
352
352
|
|
353
353
|
if CORE.target_platform in (PLATFORM_RP2040):
|
354
354
|
return upload_using_platformio(config, args.device)
|
@@ -397,7 +397,7 @@ def show_logs(config, args, port):
|
|
397
397
|
raise EsphomeError("Logger is not configured!")
|
398
398
|
if get_port_type(port) == "SERIAL":
|
399
399
|
check_permissions(port)
|
400
|
-
return run_miniterm(config, port)
|
400
|
+
return run_miniterm(config, port, args)
|
401
401
|
if get_port_type(port) == "NETWORK" and "api" in config:
|
402
402
|
if config[CONF_MDNS][CONF_DISABLED] and CONF_MQTT in config:
|
403
403
|
from esphome import mqtt
|
@@ -842,6 +842,10 @@ def parse_args(argv):
|
|
842
842
|
"--device",
|
843
843
|
help="Manually specify the serial port/address to use, for example /dev/ttyUSB0.",
|
844
844
|
)
|
845
|
+
parser_upload.add_argument(
|
846
|
+
"--upload_speed",
|
847
|
+
help="Override the default or configured upload speed.",
|
848
|
+
)
|
845
849
|
parser_upload.add_argument(
|
846
850
|
"--file",
|
847
851
|
help="Manually specify the binary file to upload.",
|
@@ -860,6 +864,13 @@ def parse_args(argv):
|
|
860
864
|
"--device",
|
861
865
|
help="Manually specify the serial port/address to use, for example /dev/ttyUSB0.",
|
862
866
|
)
|
867
|
+
parser_logs.add_argument(
|
868
|
+
"--reset",
|
869
|
+
"-r",
|
870
|
+
action="store_true",
|
871
|
+
help="Reset the device before starting serial logs.",
|
872
|
+
default=os.getenv("ESPHOME_SERIAL_LOGGING_RESET"),
|
873
|
+
)
|
863
874
|
|
864
875
|
parser_discover = subparsers.add_parser(
|
865
876
|
"discover",
|
@@ -882,9 +893,20 @@ def parse_args(argv):
|
|
882
893
|
"--device",
|
883
894
|
help="Manually specify the serial port/address to use, for example /dev/ttyUSB0.",
|
884
895
|
)
|
896
|
+
parser_run.add_argument(
|
897
|
+
"--upload_speed",
|
898
|
+
help="Override the default or configured upload speed.",
|
899
|
+
)
|
885
900
|
parser_run.add_argument(
|
886
901
|
"--no-logs", help="Disable starting logs.", action="store_true"
|
887
902
|
)
|
903
|
+
parser_run.add_argument(
|
904
|
+
"--reset",
|
905
|
+
"-r",
|
906
|
+
action="store_true",
|
907
|
+
help="Reset the device before starting serial logs.",
|
908
|
+
default=os.getenv("ESPHOME_SERIAL_LOGGING_RESET"),
|
909
|
+
)
|
888
910
|
|
889
911
|
parser_clean = subparsers.add_parser(
|
890
912
|
"clean-mqtt",
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
2
|
from esphome.components import sensor, uart
|
3
3
|
from esphome.const import (
|
4
|
+
DEVICE_CLASS_DISTANCE,
|
5
|
+
ICON_ARROW_EXPAND_VERTICAL,
|
4
6
|
STATE_CLASS_MEASUREMENT,
|
5
7
|
UNIT_METER,
|
6
|
-
ICON_ARROW_EXPAND_VERTICAL,
|
7
|
-
DEVICE_CLASS_DISTANCE,
|
8
8
|
)
|
9
9
|
|
10
10
|
CODEOWNERS = ["@MrSuicideParrot"]
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
2
|
from esphome.components import sensor, uart
|
3
3
|
from esphome.const import (
|
4
|
-
STATE_CLASS_MEASUREMENT,
|
5
|
-
ICON_ARROW_EXPAND_VERTICAL,
|
6
4
|
DEVICE_CLASS_DISTANCE,
|
5
|
+
ICON_ARROW_EXPAND_VERTICAL,
|
6
|
+
STATE_CLASS_MEASUREMENT,
|
7
7
|
UNIT_MILLIMETER,
|
8
8
|
)
|
9
9
|
|
@@ -1,10 +1,9 @@
|
|
1
1
|
from esphome import pins
|
2
|
+
import esphome.codegen as cg
|
2
3
|
from esphome.components import stepper
|
3
4
|
import esphome.config_validation as cv
|
4
|
-
import esphome.codegen as cg
|
5
5
|
from esphome.const import CONF_DIR_PIN, CONF_ID, CONF_SLEEP_PIN, CONF_STEP_PIN
|
6
6
|
|
7
|
-
|
8
7
|
a4988_ns = cg.esphome_ns.namespace("a4988")
|
9
8
|
A4988 = a4988_ns.class_("A4988", stepper.Stepper, cg.Component)
|
10
9
|
|
@@ -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
|
+
CONF_EQUATION,
|
5
6
|
CONF_HUMIDITY,
|
6
7
|
CONF_TEMPERATURE,
|
7
|
-
STATE_CLASS_MEASUREMENT,
|
8
|
-
CONF_EQUATION,
|
9
8
|
ICON_WATER,
|
9
|
+
STATE_CLASS_MEASUREMENT,
|
10
10
|
UNIT_GRAMS_PER_CUBIC_METER,
|
11
11
|
)
|
12
12
|
|
@@ -1,8 +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 output
|
5
|
-
|
4
|
+
import esphome.config_validation as cv
|
5
|
+
from esphome.const import CONF_ID, CONF_METHOD, CONF_MIN_POWER
|
6
6
|
|
7
7
|
CODEOWNERS = ["@glmnet"]
|
8
8
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import uart
|
4
|
-
from esphome.components.light.types import AddressableLightEffect
|
5
3
|
from esphome.components.light.effects import register_addressable_effect
|
4
|
+
from esphome.components.light.types import AddressableLightEffect
|
5
|
+
import esphome.config_validation as cv
|
6
6
|
from esphome.const import CONF_NAME, CONF_UART_ID
|
7
7
|
|
8
8
|
DEPENDENCIES = ["uart"]
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import sensor, voltage_sampler
|
4
|
-
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_CHANNEL, CONF_ID
|
5
5
|
|
6
|
-
from .. import
|
6
|
+
from .. import ADC128S102, adc128s102_ns
|
7
7
|
|
8
8
|
AUTO_LOAD = ["voltage_sampler"]
|
9
9
|
DEPENDENCIES = ["adc128s102"]
|
@@ -1,15 +1,15 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import display, light
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
|
+
CONF_ADDRESSABLE_LIGHT_ID,
|
6
|
+
CONF_HEIGHT,
|
5
7
|
CONF_ID,
|
6
8
|
CONF_LAMBDA,
|
7
9
|
CONF_PAGES,
|
8
|
-
CONF_ADDRESSABLE_LIGHT_ID,
|
9
|
-
CONF_HEIGHT,
|
10
|
-
CONF_WIDTH,
|
11
|
-
CONF_UPDATE_INTERVAL,
|
12
10
|
CONF_PIXEL_MAPPER,
|
11
|
+
CONF_UPDATE_INTERVAL,
|
12
|
+
CONF_WIDTH,
|
13
13
|
)
|
14
14
|
|
15
15
|
CODEOWNERS = ["@justfalter"]
|
@@ -1,7 +1,7 @@
|
|
1
|
+
from esphome import pins
|
1
2
|
import esphome.codegen as cg
|
3
|
+
from esphome.components import i2c, sensor
|
2
4
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import sensor, i2c
|
4
|
-
from esphome import pins
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_ACTIVE_POWER,
|
7
7
|
CONF_APPARENT_POWER,
|
@@ -1,27 +1,27 @@
|
|
1
|
+
from esphome import pins
|
1
2
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
3
|
from esphome.components import sensor
|
4
|
-
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
|
+
CONF_FREQUENCY,
|
6
7
|
CONF_IRQ_PIN,
|
7
8
|
CONF_VOLTAGE,
|
8
|
-
CONF_FREQUENCY,
|
9
9
|
CONF_VOLTAGE_GAIN,
|
10
|
-
DEVICE_CLASS_CURRENT,
|
11
10
|
DEVICE_CLASS_APPARENT_POWER,
|
11
|
+
DEVICE_CLASS_CURRENT,
|
12
|
+
DEVICE_CLASS_FREQUENCY,
|
12
13
|
DEVICE_CLASS_POWER,
|
13
|
-
DEVICE_CLASS_REACTIVE_POWER,
|
14
14
|
DEVICE_CLASS_POWER_FACTOR,
|
15
|
+
DEVICE_CLASS_REACTIVE_POWER,
|
15
16
|
DEVICE_CLASS_VOLTAGE,
|
16
|
-
DEVICE_CLASS_FREQUENCY,
|
17
17
|
STATE_CLASS_MEASUREMENT,
|
18
|
-
UNIT_VOLT,
|
19
|
-
UNIT_HERTZ,
|
20
18
|
UNIT_AMPERE,
|
19
|
+
UNIT_HERTZ,
|
20
|
+
UNIT_PERCENT,
|
21
|
+
UNIT_VOLT,
|
21
22
|
UNIT_VOLT_AMPS,
|
22
|
-
UNIT_WATT,
|
23
23
|
UNIT_VOLT_AMPS_REACTIVE,
|
24
|
-
|
24
|
+
UNIT_WATT,
|
25
25
|
)
|
26
26
|
|
27
27
|
CONF_CURRENT_A = "current_a"
|
@@ -1,9 +1,8 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
+
from esphome.components import ade7953_base, i2c
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import i2c, ade7953_base
|
4
4
|
from esphome.const import CONF_ID
|
5
5
|
|
6
|
-
|
7
6
|
DEPENDENCIES = ["i2c"]
|
8
7
|
AUTO_LOAD = ["ade7953_base"]
|
9
8
|
|
@@ -1,9 +1,8 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
+
from esphome.components import ade7953_base, spi
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import spi, ade7953_base
|
4
4
|
from esphome.const import CONF_ID
|
5
5
|
|
6
|
-
|
7
6
|
DEPENDENCIES = ["spi"]
|
8
7
|
AUTO_LOAD = ["ade7953_base"]
|
9
8
|
|
@@ -1,17 +1,18 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import sensor, voltage_sampler
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_GAIN,
|
6
|
+
CONF_ID,
|
6
7
|
CONF_MULTIPLEXER,
|
7
8
|
CONF_RESOLUTION,
|
8
9
|
CONF_SAMPLE_RATE,
|
9
10
|
DEVICE_CLASS_VOLTAGE,
|
10
11
|
STATE_CLASS_MEASUREMENT,
|
11
12
|
UNIT_VOLT,
|
12
|
-
CONF_ID,
|
13
13
|
)
|
14
|
-
|
14
|
+
|
15
|
+
from .. import CONF_ADS1115_ID, ADS1115Component, ads1115_ns
|
15
16
|
|
16
17
|
AUTO_LOAD = ["voltage_sampler"]
|
17
18
|
DEPENDENCIES = ["ads1115"]
|
@@ -1,17 +1,18 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import sensor, voltage_sampler
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_GAIN,
|
6
6
|
CONF_MULTIPLEXER,
|
7
|
-
|
7
|
+
CONF_TYPE,
|
8
8
|
DEVICE_CLASS_TEMPERATURE,
|
9
|
+
DEVICE_CLASS_VOLTAGE,
|
9
10
|
STATE_CLASS_MEASUREMENT,
|
10
11
|
UNIT_CELSIUS,
|
11
12
|
UNIT_VOLT,
|
12
|
-
CONF_TYPE,
|
13
13
|
)
|
14
|
-
|
14
|
+
|
15
|
+
from .. import ADS1118, CONF_ADS1118_ID, ads1118_ns
|
15
16
|
|
16
17
|
AUTO_LOAD = ["voltage_sampler"]
|
17
18
|
DEPENDENCIES = ["ads1118"]
|
@@ -1,21 +1,21 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
1
|
from esphome import automation
|
3
|
-
import esphome.
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import i2c, sensor
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
|
+
CONF_ADDRESS,
|
6
7
|
CONF_ID,
|
7
|
-
|
8
|
-
|
8
|
+
CONF_MODE,
|
9
|
+
CONF_TVOC,
|
10
|
+
CONF_VALUE,
|
11
|
+
CONF_VERSION,
|
9
12
|
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS_PARTS,
|
10
13
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
14
|
+
ICON_RADIATOR,
|
15
|
+
ICON_RESTART,
|
11
16
|
STATE_CLASS_MEASUREMENT,
|
12
17
|
UNIT_OHM,
|
13
18
|
UNIT_PARTS_PER_BILLION,
|
14
|
-
CONF_ADDRESS,
|
15
|
-
CONF_TVOC,
|
16
|
-
CONF_VERSION,
|
17
|
-
CONF_MODE,
|
18
|
-
CONF_VALUE,
|
19
19
|
)
|
20
20
|
|
21
21
|
CONF_RESISTANCE = "resistance"
|
@@ -1,16 +1,16 @@
|
|
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_HUMIDITY,
|
6
6
|
CONF_ID,
|
7
7
|
CONF_TEMPERATURE,
|
8
|
+
CONF_VARIANT,
|
8
9
|
DEVICE_CLASS_HUMIDITY,
|
9
10
|
DEVICE_CLASS_TEMPERATURE,
|
10
11
|
STATE_CLASS_MEASUREMENT,
|
11
12
|
UNIT_CELSIUS,
|
12
13
|
UNIT_PERCENT,
|
13
|
-
CONF_VARIANT,
|
14
14
|
)
|
15
15
|
|
16
16
|
DEPENDENCIES = ["i2c"]
|
@@ -1,18 +1,17 @@
|
|
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
5
|
CONF_BATTERY_VOLTAGE,
|
7
6
|
CONF_HUMIDITY,
|
8
7
|
CONF_PRESSURE,
|
9
8
|
CONF_TEMPERATURE,
|
10
9
|
CONF_TVOC,
|
11
|
-
DEVICE_CLASS_VOLTAGE,
|
12
10
|
DEVICE_CLASS_HUMIDITY,
|
13
11
|
DEVICE_CLASS_PRESSURE,
|
14
12
|
DEVICE_CLASS_TEMPERATURE,
|
15
13
|
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS_PARTS,
|
14
|
+
DEVICE_CLASS_VOLTAGE,
|
16
15
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
17
16
|
STATE_CLASS_MEASUREMENT,
|
18
17
|
UNIT_CELSIUS,
|
@@ -1,10 +1,7 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import airthings_wave_base
|
4
|
-
|
5
|
-
from esphome.const import
|
6
|
-
CONF_ID,
|
7
|
-
)
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_ID
|
8
5
|
|
9
6
|
DEPENDENCIES = airthings_wave_base.DEPENDENCIES
|
10
7
|
|
@@ -1,20 +1,19 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
+
from esphome.components import airthings_wave_base, sensor
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import sensor, airthings_wave_base
|
4
|
-
|
5
4
|
from esphome.const import (
|
6
|
-
|
7
|
-
STATE_CLASS_MEASUREMENT,
|
8
|
-
ICON_RADIOACTIVE,
|
5
|
+
CONF_CO2,
|
9
6
|
CONF_ID,
|
7
|
+
CONF_ILLUMINANCE,
|
10
8
|
CONF_RADON,
|
11
9
|
CONF_RADON_LONG_TERM,
|
12
|
-
|
10
|
+
DEVICE_CLASS_CARBON_DIOXIDE,
|
11
|
+
DEVICE_CLASS_ILLUMINANCE,
|
12
|
+
ICON_RADIOACTIVE,
|
13
|
+
STATE_CLASS_MEASUREMENT,
|
13
14
|
UNIT_BECQUEREL_PER_CUBIC_METER,
|
14
|
-
UNIT_PARTS_PER_MILLION,
|
15
|
-
CONF_ILLUMINANCE,
|
16
15
|
UNIT_LUX,
|
17
|
-
|
16
|
+
UNIT_PARTS_PER_MILLION,
|
18
17
|
)
|
19
18
|
|
20
19
|
DEPENDENCIES = airthings_wave_base.DEPENDENCIES
|
@@ -1,20 +1,20 @@
|
|
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
4
|
from esphome.const import (
|
5
|
-
CONF_ID,
|
6
5
|
CONF_CURRENT,
|
7
6
|
CONF_FLOW,
|
8
7
|
CONF_HEAD,
|
8
|
+
CONF_ID,
|
9
9
|
CONF_POWER,
|
10
10
|
CONF_SPEED,
|
11
11
|
CONF_VOLTAGE,
|
12
12
|
UNIT_AMPERE,
|
13
|
-
UNIT_VOLT,
|
14
|
-
UNIT_WATT,
|
15
|
-
UNIT_METER,
|
16
13
|
UNIT_CUBIC_METER_PER_HOUR,
|
14
|
+
UNIT_METER,
|
17
15
|
UNIT_REVOLUTIONS_PER_MINUTE,
|
16
|
+
UNIT_VOLT,
|
17
|
+
UNIT_WATT,
|
18
18
|
)
|
19
19
|
|
20
20
|
alpha3_ns = cg.esphome_ns.namespace("alpha3")
|
@@ -1,12 +1,12 @@
|
|
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
4
|
from esphome.const import (
|
5
|
-
CONF_ID,
|
6
5
|
CONF_BATTERY_LEVEL,
|
6
|
+
CONF_ID,
|
7
|
+
CONF_ILLUMINANCE,
|
7
8
|
DEVICE_CLASS_BATTERY,
|
8
9
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
9
|
-
CONF_ILLUMINANCE,
|
10
10
|
ICON_BRIGHTNESS_5,
|
11
11
|
UNIT_PERCENT,
|
12
12
|
)
|
@@ -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, sensor
|
4
|
-
|
5
|
-
|
6
|
-
CONF_THRESHOLD,
|
7
|
-
)
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_SENSOR_ID, CONF_THRESHOLD
|
8
5
|
|
9
6
|
analog_threshold_ns = cg.esphome_ns.namespace("analog_threshold")
|
10
7
|
|
@@ -2,8 +2,8 @@
|
|
2
2
|
# https://www.mouser.ca/datasheet/2/678/AVGO_S_A0002854364_1-2574547.pdf
|
3
3
|
|
4
4
|
import esphome.codegen as cg
|
5
|
-
import esphome.config_validation as cv
|
6
5
|
from esphome.components import i2c, sensor
|
6
|
+
import esphome.config_validation as cv
|
7
7
|
from esphome.const import (
|
8
8
|
CONF_GAIN,
|
9
9
|
DEVICE_CLASS_ILLUMINANCE,
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import binary_sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import CONF_DIRECTION, DEVICE_CLASS_MOVING
|
5
|
+
|
5
6
|
from . import APDS9960, CONF_APDS9960_ID
|
6
7
|
|
7
8
|
DEPENDENCIES = ["apds9960"]
|
@@ -1,12 +1,13 @@
|
|
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_TYPE,
|
6
|
+
ICON_LIGHTBULB,
|
6
7
|
STATE_CLASS_MEASUREMENT,
|
7
8
|
UNIT_PERCENT,
|
8
|
-
ICON_LIGHTBULB,
|
9
9
|
)
|
10
|
+
|
10
11
|
from . import APDS9960, CONF_APDS9960_ID
|
11
12
|
|
12
13
|
DEPENDENCIES = ["apds9960"]
|
@@ -893,8 +893,28 @@ APIError APIPlaintextFrameHelper::read_packet(ReadPacketBuffer *buffer) {
|
|
893
893
|
|
894
894
|
ParsedFrame frame;
|
895
895
|
aerr = try_read_frame_(&frame);
|
896
|
-
if (aerr != APIError::OK)
|
896
|
+
if (aerr != APIError::OK) {
|
897
|
+
if (aerr == APIError::BAD_INDICATOR) {
|
898
|
+
// Make sure to tell the remote that we don't
|
899
|
+
// understand the indicator byte so it knows
|
900
|
+
// we do not support it.
|
901
|
+
struct iovec iov[1];
|
902
|
+
// The \x00 first byte is the marker for plaintext.
|
903
|
+
//
|
904
|
+
// The remote will know how to handle the indicator byte,
|
905
|
+
// but it likely won't understand the rest of the message.
|
906
|
+
//
|
907
|
+
// We must send at least 3 bytes to be read, so we add
|
908
|
+
// a message after the indicator byte to ensures its long
|
909
|
+
// enough and can aid in debugging.
|
910
|
+
const char msg[] = "\x00"
|
911
|
+
"Bad indicator byte";
|
912
|
+
iov[0].iov_base = (void *) msg;
|
913
|
+
iov[0].iov_len = 19;
|
914
|
+
write_raw_(iov, 1);
|
915
|
+
}
|
897
916
|
return aerr;
|
917
|
+
}
|
898
918
|
|
899
919
|
buffer->container = std::move(frame.msg);
|
900
920
|
buffer->data_offset = 0;
|