esphome 2025.3.2__py3-none-any.whl → 2025.4.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +29 -7
- esphome/components/a01nyub/sensor.py +2 -2
- esphome/components/a02yyuw/sensor.py +2 -2
- esphome/components/a4988/stepper.py +1 -2
- esphome/components/absolute_humidity/sensor.py +3 -3
- esphome/components/ac_dimmer/output.py +3 -3
- esphome/components/adalight/__init__.py +2 -2
- esphome/components/adc128s102/__init__.py +1 -1
- esphome/components/adc128s102/sensor/__init__.py +3 -3
- esphome/components/addressable_light/display.py +5 -5
- esphome/components/ade7880/sensor.py +2 -2
- esphome/components/ade7953_base/__init__.py +10 -10
- esphome/components/ade7953_i2c/sensor.py +1 -2
- esphome/components/ade7953_spi/sensor.py +1 -2
- esphome/components/ads1115/__init__.py +1 -1
- esphome/components/ads1115/sensor/__init__.py +4 -3
- esphome/components/ads1118/__init__.py +1 -1
- esphome/components/ads1118/sensor/__init__.py +5 -4
- esphome/components/ags10/sensor.py +9 -9
- esphome/components/aht10/sensor.py +2 -2
- esphome/components/airthings_ble/__init__.py +1 -1
- esphome/components/airthings_wave_base/__init__.py +2 -3
- esphome/components/airthings_wave_mini/sensor.py +2 -5
- esphome/components/airthings_wave_plus/sensor.py +8 -9
- esphome/components/alpha3/sensor.py +5 -5
- esphome/components/am2315c/sensor.py +1 -1
- esphome/components/am2320/sensor.py +1 -1
- esphome/components/am43/cover/__init__.py +1 -1
- esphome/components/am43/sensor/__init__.py +3 -3
- esphome/components/analog_threshold/binary_sensor.py +2 -5
- esphome/components/anova/climate.py +1 -1
- esphome/components/apds9306/sensor.py +1 -1
- esphome/components/apds9960/__init__.py +1 -1
- esphome/components/apds9960/binary_sensor.py +2 -1
- esphome/components/apds9960/sensor.py +3 -2
- esphome/components/api/api_frame_helper.cpp +21 -1
- esphome/components/as3935/__init__.py +3 -3
- esphome/components/as3935/binary_sensor.py +2 -1
- esphome/components/as3935/sensor.py +4 -3
- esphome/components/as3935_i2c/__init__.py +1 -1
- esphome/components/as3935_spi/__init__.py +1 -1
- esphome/components/as5600/__init__.py +2 -2
- esphome/components/as5600/sensor/__init__.py +10 -9
- esphome/components/as7341/sensor.py +1 -2
- esphome/components/at581x/__init__.py +4 -8
- esphome/components/at581x/switch/__init__.py +2 -4
- esphome/components/atc_mithermometer/sensor.py +3 -3
- esphome/components/b_parasite/sensor.py +2 -2
- esphome/components/ballu/climate.py +1 -1
- esphome/components/bang_bang/climate.py +2 -2
- esphome/components/bedjet/__init__.py +2 -6
- esphome/components/bedjet/climate/__init__.py +3 -6
- esphome/components/bedjet/fan/__init__.py +4 -9
- esphome/components/bedjet/sensor/__init__.py +3 -6
- esphome/components/beken_spi_led_strip/light.py +2 -2
- esphome/components/bh1750/sensor.py +2 -6
- esphome/components/binary/fan/__init__.py +2 -1
- esphome/components/binary/light/__init__.py +3 -2
- esphome/components/binary_sensor_map/sensor.py +5 -6
- esphome/components/bl0939/sensor.py +1 -1
- esphome/components/bl0940/sensor.py +3 -3
- esphome/components/ble_client/__init__.py +3 -2
- esphome/components/ble_client/sensor/__init__.py +1 -1
- esphome/components/ble_client/text_sensor/__init__.py +1 -1
- esphome/components/bluetooth_proxy/__init__.py +35 -23
- esphome/components/bme280_base/__init__.py +1 -1
- esphome/components/bme280_i2c/sensor.py +3 -2
- esphome/components/bme280_spi/sensor.py +3 -2
- esphome/components/bme680/sensor.py +4 -4
- esphome/components/bme680_bsec/__init__.py +1 -1
- esphome/components/bme680_bsec/sensor.py +3 -6
- esphome/components/bme680_bsec/text_sensor.py +3 -2
- esphome/components/bmi160/sensor.py +6 -6
- esphome/components/bmp085/sensor.py +1 -1
- esphome/components/bmp280_base/__init__.py +1 -1
- esphome/components/bmp280_i2c/sensor.py +3 -2
- esphome/components/bmp280_spi/sensor.py +3 -2
- esphome/components/bmp3xx_base/__init__.py +1 -1
- esphome/components/bmp3xx_i2c/sensor.py +2 -1
- esphome/components/bmp3xx_spi/sensor.py +2 -1
- esphome/components/bmp581/sensor.py +2 -1
- esphome/components/bp1658cj/__init__.py +2 -6
- esphome/components/bp1658cj/output.py +2 -1
- esphome/components/bp5758d/__init__.py +2 -6
- esphome/components/bp5758d/output.py +3 -2
- esphome/components/canbus/__init__.py +13 -2
- esphome/components/canbus/canbus.cpp +7 -1
- esphome/components/cap1188/__init__.py +2 -2
- esphome/components/cap1188/binary_sensor.py +3 -2
- esphome/components/captive_portal/__init__.py +3 -3
- esphome/components/ccs811/sensor.py +10 -10
- esphome/components/cd74hc4067/__init__.py +2 -5
- esphome/components/cd74hc4067/sensor.py +6 -5
- esphome/components/climate_ir/__init__.py +2 -2
- esphome/components/climate_ir_lg/climate.py +1 -1
- esphome/components/color/__init__.py +1 -2
- esphome/components/color_temperature/light.py +2 -2
- esphome/components/combination/sensor.py +1 -1
- esphome/components/coolix/climate.py +1 -1
- esphome/components/copy/binary_sensor/__init__.py +1 -1
- esphome/components/copy/button/__init__.py +1 -1
- esphome/components/copy/cover/__init__.py +1 -1
- esphome/components/copy/fan/__init__.py +2 -7
- esphome/components/copy/lock/__init__.py +2 -7
- esphome/components/copy/number/__init__.py +1 -1
- esphome/components/copy/select/__init__.py +2 -7
- esphome/components/copy/sensor/__init__.py +2 -2
- esphome/components/copy/switch/__init__.py +1 -1
- esphome/components/copy/text/__init__.py +2 -7
- esphome/components/copy/text_sensor/__init__.py +2 -6
- esphome/components/cs5460a/sensor.py +7 -7
- esphome/components/cse7761/sensor.py +2 -2
- esphome/components/cse7766/sensor.py +1 -1
- esphome/components/cst226/touchscreen/__init__.py +3 -4
- esphome/components/ct_clamp/sensor.py +1 -1
- esphome/components/current_based/cover.py +3 -4
- esphome/components/cwww/light.py +3 -3
- esphome/components/dac7678/__init__.py +1 -1
- esphome/components/dac7678/output.py +2 -1
- esphome/components/daikin/climate.py +1 -1
- esphome/components/daikin_arc/climate.py +1 -1
- esphome/components/daikin_brc/climate.py +1 -1
- esphome/components/dallas_temp/sensor.py +1 -1
- esphome/components/daly_bms/__init__.py +2 -2
- esphome/components/daly_bms/binary_sensor.py +3 -2
- esphome/components/daly_bms/sensor.py +14 -13
- esphome/components/daly_bms/text_sensor.py +3 -2
- esphome/components/dashboard_import/__init__.py +5 -5
- esphome/components/debug/sensor.py +7 -6
- esphome/components/debug/text_sensor.py +1 -1
- esphome/components/deep_sleep/__init__.py +12 -13
- esphome/components/delonghi/climate.py +1 -1
- esphome/components/demo/__init__.py +1 -1
- esphome/components/dfplayer/__init__.py +3 -3
- esphome/components/dfrobot_sen0395/__init__.py +3 -3
- esphome/components/dfrobot_sen0395/binary_sensor.py +2 -1
- esphome/components/dfrobot_sen0395/switch/__init__.py +2 -3
- esphome/components/dht/sensor.py +4 -5
- esphome/components/dht12/sensor.py +3 -3
- esphome/components/display/display.cpp +2 -2
- esphome/components/dps310/sensor.py +3 -3
- esphome/components/ds1307/time.py +2 -3
- esphome/components/dsmr/__init__.py +3 -7
- esphome/components/dsmr/sensor.py +5 -4
- esphome/components/dsmr/text_sensor.py +3 -2
- esphome/components/duty_cycle/sensor.py +3 -8
- esphome/components/duty_time/sensor.py +7 -7
- esphome/components/e131/__init__.py +3 -3
- esphome/components/ee895/sensor.py +5 -5
- esphome/components/ektf2232/touchscreen/__init__.py +2 -3
- esphome/components/emc2101/__init__.py +1 -1
- esphome/components/emc2101/output/__init__.py +3 -2
- esphome/components/emc2101/sensor/__init__.py +4 -3
- esphome/components/emmeti/climate.py +1 -1
- esphome/components/endstop/cover.py +3 -3
- esphome/components/ens160_base/__init__.py +1 -1
- esphome/components/ens160_i2c/sensor.py +2 -1
- esphome/components/ens160_spi/sensor.py +2 -1
- esphome/components/ens210/sensor.py +1 -1
- esphome/components/esp32/__init__.py +10 -0
- esphome/components/esp32_ble_tracker/__init__.py +135 -51
- esphome/components/esp32_camera/__init__.py +7 -8
- esphome/components/esp32_camera_web_server/__init__.py +2 -2
- esphome/components/esp32_can/canbus.py +21 -0
- esphome/components/esp32_can/esp32_can.cpp +1 -1
- esphome/components/esp32_can/esp32_can.h +4 -0
- esphome/components/esp32_dac/output.py +2 -2
- esphome/components/esp32_hall/sensor.py +2 -6
- esphome/components/esp32_touch/__init__.py +7 -7
- esphome/components/esp32_touch/binary_sensor.py +4 -7
- esphome/components/esp8266_pwm/output.py +3 -8
- esphome/components/ethernet/__init__.py +1 -0
- esphome/components/ethernet/ethernet_component.cpp +1 -1
- esphome/components/ethernet_info/ethernet_info_text_sensor.h +1 -0
- esphome/components/exposure_notifications/__init__.py +2 -2
- esphome/components/external_components/__init__.py +1 -1
- esphome/components/ezo/sensor.py +2 -2
- esphome/components/ezo_pmp/__init__.py +4 -4
- esphome/components/ezo_pmp/binary_sensor.py +4 -4
- esphome/components/ezo_pmp/sensor.py +4 -5
- esphome/components/ezo_pmp/text_sensor.py +2 -6
- esphome/components/factory_reset/button/__init__.py +2 -1
- esphome/components/factory_reset/switch/__init__.py +3 -2
- esphome/components/fastled_base/__init__.py +3 -3
- esphome/components/fastled_clockless/light.py +2 -2
- esphome/components/fastled_spi/light.py +2 -2
- esphome/components/feedback/cover.py +3 -3
- esphome/components/fingerprint_grow/__init__.py +5 -6
- esphome/components/fingerprint_grow/binary_sensor.py +2 -1
- esphome/components/fingerprint_grow/sensor.py +2 -1
- esphome/components/fs3000/sensor.py +2 -6
- esphome/components/ft5x06/touchscreen/__init__.py +2 -2
- esphome/components/ft63x6/touchscreen.py +2 -3
- esphome/components/fujitsu_general/climate.py +1 -1
- esphome/components/gcja5/sensor.py +4 -4
- esphome/components/gdk101/__init__.py +1 -1
- esphome/components/gdk101/binary_sensor.py +2 -1
- esphome/components/gdk101/sensor.py +5 -4
- esphome/components/globals/__init__.py +1 -2
- esphome/components/gp2y1010au0f/sensor.py +3 -3
- esphome/components/gp8403/__init__.py +1 -2
- esphome/components/gp8403/output/__init__.py +3 -4
- esphome/components/gpio/binary_sensor/__init__.py +3 -2
- esphome/components/gpio/one_wire/__init__.py +3 -2
- esphome/components/gpio/output/__init__.py +3 -2
- esphome/components/gpio/switch/__init__.py +3 -2
- esphome/components/gps/__init__.py +4 -5
- esphome/components/gps/time/__init__.py +3 -2
- esphome/components/graph/__init__.py +12 -12
- esphome/components/grove_tb6612fng/__init__.py +5 -6
- esphome/components/growatt_solar/sensor.py +1 -1
- esphome/components/gt911/binary_sensor/__init__.py +2 -2
- esphome/components/haier/binary_sensor/__init__.py +4 -10
- esphome/components/haier/button/__init__.py +3 -6
- esphome/components/haier/sensor/__init__.py +4 -6
- esphome/components/haier/switch/__init__.py +4 -7
- esphome/components/haier/text_sensor/__init__.py +4 -9
- esphome/components/havells_solar/sensor.py +1 -1
- esphome/components/hbridge/fan/__init__.py +6 -6
- esphome/components/hbridge/light/__init__.py +2 -1
- esphome/components/hdc1080/sensor.py +1 -1
- esphome/components/he60r/cover.py +2 -6
- esphome/components/heatpumpir/climate.py +1 -1
- esphome/components/hitachi_ac344/climate.py +1 -1
- esphome/components/hitachi_ac424/climate.py +1 -1
- esphome/components/hlw8012/sensor.py +6 -6
- esphome/components/hm3301/sensor.py +3 -3
- esphome/components/hmc5883l/sensor.py +4 -4
- esphome/components/homeassistant/time/__init__.py +2 -1
- esphome/components/honeywell_hih_i2c/sensor.py +3 -3
- esphome/components/honeywellabp/sensor.py +1 -2
- esphome/components/honeywellabp2_i2c/sensor.py +1 -2
- esphome/components/host/time/__init__.py +2 -2
- esphome/components/hrxl_maxsonar_wr/sensor.py +1 -1
- esphome/components/hte501/sensor.py +3 -3
- esphome/components/http_request/ota/__init__.py +5 -9
- esphome/components/http_request/update/__init__.py +3 -7
- esphome/components/htu21d/sensor.py +6 -6
- esphome/components/htu31d/sensor.py +1 -1
- esphome/components/hx711/sensor.py +3 -8
- esphome/components/hydreon_rgxx/binary_sensor.py +3 -7
- esphome/components/hydreon_rgxx/sensor.py +4 -4
- esphome/components/hyt271/sensor.py +1 -1
- esphome/components/i2c_device/__init__.py +1 -1
- esphome/components/i2s_audio/media_player/__init__.py +6 -8
- esphome/components/iaqcore/sensor.py +2 -2
- esphome/components/ina219/sensor.py +2 -2
- esphome/components/ina226/sensor.py +4 -4
- esphome/components/ina260/sensor.py +4 -4
- esphome/components/ina2xx_base/__init__.py +2 -2
- esphome/components/ina2xx_i2c/sensor.py +1 -1
- esphome/components/ina2xx_spi/sensor.py +1 -1
- esphome/components/ina3221/sensor.py +3 -3
- esphome/components/inkbird_ibsth1_mini/sensor.py +2 -2
- esphome/components/inkplate6/display.py +2 -2
- esphome/components/integration/sensor.py +4 -4
- esphome/components/internal_temperature/sensor.py +5 -7
- esphome/components/interval/__init__.py +1 -1
- esphome/components/jsn_sr04t/sensor.py +3 -3
- esphome/components/kamstrup_kmp/sensor.py +1 -1
- esphome/components/key_collector/__init__.py +2 -2
- esphome/components/kmeteriso/sensor.py +2 -2
- esphome/components/kuntze/sensor.py +5 -5
- esphome/components/lcd_base/__init__.py +2 -2
- esphome/components/lcd_gpio/display.py +4 -4
- esphome/components/lcd_menu/__init__.py +3 -7
- esphome/components/lcd_pcf8574/display.py +1 -1
- esphome/components/ld2410/__init__.py +4 -4
- esphome/components/ld2410/binary_sensor.py +5 -4
- esphome/components/ld2410/button/__init__.py +3 -2
- esphome/components/ld2410/number/__init__.py +5 -4
- esphome/components/ld2410/select/__init__.py +4 -3
- esphome/components/ld2410/sensor.py +6 -5
- esphome/components/ld2410/switch/__init__.py +2 -1
- esphome/components/ld2410/text_sensor.py +3 -2
- esphome/components/ld2420/__init__.py +1 -1
- esphome/components/ld2420/binary_sensor/__init__.py +4 -3
- esphome/components/ld2420/button/__init__.py +3 -2
- esphome/components/ld2420/number/__init__.py +3 -2
- esphome/components/ld2420/select/__init__.py +1 -0
- esphome/components/ld2420/sensor/__init__.py +3 -2
- esphome/components/ld2420/text_sensor/__init__.py +2 -6
- esphome/components/ld2450/__init__.py +2 -5
- esphome/components/ledc/output.py +3 -3
- esphome/components/libretiny/text_sensor.py +1 -1
- esphome/components/libretiny_pwm/output.py +3 -7
- esphome/components/lightwaverf/__init__.py +6 -8
- esphome/components/lilygo_t5_47/touchscreen/__init__.py +2 -3
- esphome/components/ltr390/sensor.py +1 -1
- esphome/components/ltr501/sensor.py +2 -2
- esphome/components/ltr_als_ps/sensor.py +2 -2
- esphome/components/lvgl/__init__.py +9 -12
- esphome/components/lvgl/automation.py +1 -1
- esphome/components/lvgl/defines.py +5 -2
- esphome/components/lvgl/lv_validation.py +17 -9
- esphome/components/lvgl/lvcode.py +9 -8
- esphome/components/lvgl/lvgl_esphome.h +19 -0
- esphome/components/lvgl/schemas.py +67 -18
- esphome/components/lvgl/styles.py +42 -11
- esphome/components/lvgl/switch/__init__.py +13 -8
- esphome/components/lvgl/switch/lvgl_switch.h +5 -16
- esphome/components/lvgl/trigger.py +10 -1
- esphome/components/lvgl/widgets/__init__.py +1 -2
- esphome/components/lvgl/widgets/canvas.py +403 -0
- esphome/components/lvgl/widgets/line.py +22 -32
- esphome/components/m5stack_8angle/__init__.py +1 -2
- esphome/components/m5stack_8angle/binary_sensor/__init__.py +2 -3
- esphome/components/m5stack_8angle/light/__init__.py +2 -4
- esphome/components/m5stack_8angle/sensor/__init__.py +2 -4
- esphome/components/matrix_keypad/binary_sensor/__init__.py +4 -3
- esphome/components/max31855/sensor.py +1 -1
- esphome/components/max31865/sensor.py +1 -1
- esphome/components/max44009/sensor.py +1 -1
- esphome/components/max6675/sensor.py +1 -1
- esphome/components/max6956/__init__.py +5 -5
- esphome/components/max6956/output/__init__.py +4 -3
- esphome/components/max7219/display.py +1 -1
- esphome/components/max7219digit/display.py +1 -1
- esphome/components/max9611/sensor.py +10 -10
- esphome/components/mcp23008/__init__.py +1 -1
- esphome/components/mcp23016/__init__.py +4 -4
- esphome/components/mcp23017/__init__.py +1 -1
- esphome/components/mcp23s08/__init__.py +1 -1
- esphome/components/mcp23s17/__init__.py +1 -1
- esphome/components/mcp23xxx_base/__init__.py +4 -4
- esphome/components/mcp2515/canbus.py +2 -2
- esphome/components/mcp3008/__init__.py +1 -1
- esphome/components/mcp3008/sensor/__init__.py +4 -4
- esphome/components/mcp3204/__init__.py +1 -1
- esphome/components/mcp3204/sensor/__init__.py +3 -2
- esphome/components/mcp4461/__init__.py +42 -0
- esphome/components/mcp4461/mcp4461.cpp +618 -0
- esphome/components/mcp4461/mcp4461.h +171 -0
- esphome/components/mcp4461/output/__init__.py +60 -0
- esphome/components/mcp4461/output/mcp4461_output.cpp +73 -0
- esphome/components/mcp4461/output/mcp4461_output.h +49 -0
- esphome/components/mcp4725/output.py +2 -2
- esphome/components/mcp4728/__init__.py +1 -1
- esphome/components/mcp4728/output/__init__.py +4 -3
- esphome/components/mcp47a1/output.py +2 -2
- esphome/components/mcp9808/sensor.py +1 -1
- esphome/components/mdns/__init__.py +1 -1
- esphome/components/mhz19/sensor.py +4 -4
- esphome/components/micronova/__init__.py +3 -5
- esphome/components/micronova/button/__init__.py +5 -5
- esphome/components/micronova/number/__init__.py +6 -10
- esphome/components/micronova/sensor/__init__.py +6 -6
- esphome/components/micronova/switch/__init__.py +6 -8
- esphome/components/micronova/text_sensor/__init__.py +5 -5
- esphome/components/microphone/__init__.py +2 -4
- esphome/components/midea/climate.py +6 -10
- esphome/components/midea_ir/climate.py +1 -1
- esphome/components/mitsubishi/climate.py +1 -1
- esphome/components/mlx90614/sensor.py +1 -1
- esphome/components/mmc5603/sensor.py +4 -4
- esphome/components/mmc5983/sensor.py +1 -1
- esphome/components/modbus/__init__.py +5 -9
- esphome/components/modbus_controller/__init__.py +1 -1
- esphome/components/monochromatic/light.py +2 -2
- esphome/components/mopeka_ble/__init__.py +1 -1
- esphome/components/mopeka_pro_check/sensor.py +12 -12
- esphome/components/mopeka_std_check/sensor.py +8 -8
- esphome/components/mpl3115a2/sensor.py +1 -1
- esphome/components/mpr121/__init__.py +3 -3
- esphome/components/mpr121/binary_sensor/__init__.py +5 -4
- esphome/components/mpu6050/sensor.py +4 -4
- esphome/components/mpu6886/sensor.py +4 -4
- esphome/components/mqtt_subscribe/sensor/__init__.py +3 -5
- esphome/components/mqtt_subscribe/text_sensor/__init__.py +1 -1
- esphome/components/ms5611/sensor.py +2 -2
- esphome/components/ms8607/sensor.py +1 -1
- esphome/components/my9231/__init__.py +1 -1
- esphome/components/my9231/output.py +2 -1
- esphome/components/nau7802/nau7802.cpp +0 -4
- esphome/components/nau7802/nau7802.h +0 -2
- esphome/components/neopixelbus/_methods.py +11 -9
- esphome/components/neopixelbus/light.py +11 -18
- esphome/components/nextion/binary_sensor/__init__.py +6 -14
- esphome/components/nextion/sensor/__init__.py +7 -10
- esphome/components/nextion/switch/__init__.py +3 -5
- esphome/components/nextion/text_sensor/__init__.py +3 -7
- esphome/components/noblex/climate.py +1 -1
- esphome/components/ntc/sensor.py +1 -1
- esphome/components/opentherm/__init__.py +6 -6
- esphome/components/opentherm/input.py +2 -1
- esphome/components/opentherm/number/__init__.py +5 -4
- esphome/components/opentherm/output/__init__.py +3 -2
- esphome/components/opentherm/schema.py +7 -7
- esphome/components/opentherm/switch/__init__.py +3 -2
- esphome/components/opentherm/validate.py +1 -1
- esphome/components/output/__init__.py +2 -3
- esphome/components/output/button/__init__.py +3 -2
- esphome/components/output/lock/__init__.py +2 -1
- esphome/components/output/switch/__init__.py +2 -1
- esphome/components/partition/light.py +4 -4
- esphome/components/pca6416a/__init__.py +4 -4
- esphome/components/pca9554/__init__.py +4 -4
- esphome/components/pca9685/__init__.py +2 -2
- esphome/components/pca9685/output.py +2 -1
- esphome/components/pcf85063/time.py +2 -3
- esphome/components/pcf8563/time.py +2 -2
- esphome/components/pcf8574/__init__.py +4 -4
- esphome/components/pid/climate.py +2 -2
- esphome/components/pid/sensor/__init__.py +4 -8
- esphome/components/pipsolar/__init__.py +1 -1
- esphome/components/pipsolar/binary_sensor/__init__.py +2 -2
- esphome/components/pipsolar/output/__init__.py +4 -3
- esphome/components/pipsolar/sensor/__init__.py +5 -4
- esphome/components/pipsolar/switch/__init__.py +2 -1
- esphome/components/pipsolar/text_sensor/__init__.py +2 -1
- esphome/components/pm1006/sensor.py +2 -2
- esphome/components/pmsa003i/sensor.py +4 -4
- esphome/components/pmsx003/sensor.py +10 -11
- esphome/components/pmwcs3/sensor.py +5 -5
- esphome/components/pn532/__init__.py +3 -3
- esphome/components/pn532_i2c/__init__.py +1 -1
- esphome/components/pn532_spi/__init__.py +1 -1
- esphome/components/pn7150/__init__.py +2 -2
- esphome/components/pn7150_i2c/__init__.py +1 -1
- esphome/components/pn7160/__init__.py +2 -2
- esphome/components/pn7160_i2c/__init__.py +1 -1
- esphome/components/pn7160_spi/__init__.py +1 -1
- esphome/components/power_supply/__init__.py +1 -1
- esphome/components/prometheus/__init__.py +3 -8
- esphome/components/psram/__init__.py +75 -11
- esphome/components/psram/psram.cpp +18 -7
- esphome/components/pulse_counter/sensor.py +4 -4
- esphome/components/pulse_meter/sensor.py +3 -3
- esphome/components/pulse_width/sensor.py +3 -8
- esphome/components/pvvx_mithermometer/display/__init__.py +1 -1
- esphome/components/pvvx_mithermometer/sensor.py +3 -3
- esphome/components/pylontech/__init__.py +1 -0
- esphome/components/pylontech/sensor/__init__.py +8 -13
- esphome/components/pylontech/text_sensor/__init__.py +2 -7
- esphome/components/pzem004t/sensor.py +3 -3
- esphome/components/pzemac/sensor.py +9 -9
- esphome/components/pzemdc/sensor.py +6 -6
- esphome/components/qmc5883l/sensor.py +5 -5
- esphome/components/qmp6988/sensor.py +3 -3
- esphome/components/qr_code/__init__.py +1 -1
- esphome/components/qspi_dbi/display.py +1 -1
- esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
- esphome/components/qspi_dbi/qspi_dbi.h +1 -1
- esphome/components/qwiic_pir/binary_sensor.py +2 -5
- esphome/components/radon_eye_ble/__init__.py +1 -1
- esphome/components/radon_eye_rd200/sensor.py +3 -4
- esphome/components/rc522/__init__.py +3 -3
- esphome/components/rc522_i2c/__init__.py +1 -1
- esphome/components/rc522_spi/__init__.py +1 -1
- esphome/components/rdm6300/__init__.py +2 -2
- esphome/components/rdm6300/binary_sensor.py +2 -1
- esphome/components/resistance/sensor.py +2 -2
- esphome/components/restart/button/__init__.py +1 -1
- esphome/components/restart/switch/__init__.py +2 -5
- esphome/components/rf_bridge/__init__.py +3 -3
- esphome/components/rgb/light.py +2 -2
- esphome/components/rgbct/light.py +3 -3
- esphome/components/rgbw/light.py +2 -2
- esphome/components/rgbww/light.py +4 -4
- esphome/components/rotary_encoder/sensor.py +8 -8
- esphome/components/rp2040_pio/__init__.py +0 -1
- esphome/components/rp2040_pio_led_strip/light.py +2 -4
- esphome/components/rp2040_pwm/output.py +3 -7
- esphome/components/rtttl/__init__.py +6 -6
- esphome/components/ruuvi_ble/__init__.py +1 -1
- esphome/components/ruuvitag/sensor.py +15 -15
- esphome/components/safe_mode/__init__.py +2 -3
- esphome/components/safe_mode/button/__init__.py +3 -2
- esphome/components/safe_mode/switch/__init__.py +4 -7
- esphome/components/scd30/sensor.py +5 -6
- esphome/components/scd4x/sensor.py +6 -8
- esphome/components/script/__init__.py +2 -2
- esphome/components/sdl/display.py +3 -3
- esphome/components/sdl/touchscreen/__init__.py +2 -2
- esphome/components/sdm_meter/sensor.py +3 -3
- esphome/components/sdp3x/sensor.py +1 -2
- esphome/components/sds011/sensor.py +4 -4
- esphome/components/seeed_mr24hpc1/__init__.py +1 -1
- esphome/components/seeed_mr24hpc1/binary_sensor.py +2 -5
- esphome/components/seeed_mr24hpc1/button/__init__.py +1 -0
- esphome/components/seeed_mr24hpc1/number/__init__.py +2 -4
- esphome/components/seeed_mr24hpc1/select/__init__.py +2 -3
- esphome/components/seeed_mr24hpc1/sensor.py +1 -0
- esphome/components/seeed_mr24hpc1/switch/__init__.py +2 -4
- esphome/components/seeed_mr24hpc1/text_sensor.py +1 -0
- esphome/components/seeed_mr60bha2/binary_sensor.py +2 -4
- esphome/components/seeed_mr60bha2/sensor.py +1 -1
- esphome/components/seeed_mr60fda2/button/__init__.py +1 -1
- esphome/components/seeed_mr60fda2/select/__init__.py +0 -1
- esphome/components/selec_meter/sensor.py +1 -1
- esphome/components/sen0321/sensor.py +2 -2
- esphome/components/sen21231/sensor.py +1 -1
- esphome/components/senseair/sensor.py +3 -3
- esphome/components/sensirion_common/__init__.py +0 -2
- esphome/components/servo/__init__.py +3 -3
- esphome/components/sfa30/sensor.py +4 -5
- esphome/components/sgp4x/sensor.py +2 -2
- esphome/components/shelly_dimmer/light.py +16 -16
- esphome/components/sht3xd/sensor.py +1 -1
- esphome/components/sht4x/sensor.py +6 -6
- esphome/components/shtcx/sensor.py +1 -1
- esphome/components/shutdown/button/__init__.py +2 -6
- esphome/components/shutdown/switch/__init__.py +2 -5
- esphome/components/sigma_delta_output/output.py +2 -7
- esphome/components/sim800l/__init__.py +3 -7
- esphome/components/sim800l/binary_sensor.py +3 -5
- esphome/components/sim800l/sensor.py +2 -1
- esphome/components/slow_pwm/output.py +4 -5
- esphome/components/sm10bit_base/__init__.py +2 -6
- esphome/components/sm16716/__init__.py +1 -1
- esphome/components/sm16716/output.py +2 -1
- esphome/components/sm2135/__init__.py +2 -6
- esphome/components/sm2135/output.py +2 -1
- esphome/components/sm2235/__init__.py +1 -1
- esphome/components/sm2235/output.py +2 -1
- esphome/components/sm2335/__init__.py +1 -1
- esphome/components/sm2335/output.py +2 -1
- esphome/components/sm300d2/sensor.py +13 -13
- esphome/components/sml/__init__.py +1 -1
- esphome/components/sml/sensor/__init__.py +1 -1
- esphome/components/sml/text_sensor/__init__.py +1 -1
- esphome/components/smt100/sensor.py +5 -6
- esphome/components/sn74hc165/__init__.py +5 -5
- esphome/components/sn74hc595/__init__.py +5 -5
- esphome/components/socket/__init__.py +1 -1
- esphome/components/sonoff_d1/light.py +2 -6
- esphome/components/speaker/media_player/speaker_media_player.cpp +47 -12
- esphome/components/speed/fan/__init__.py +2 -2
- esphome/components/spi/__init__.py +45 -36
- esphome/components/spi/spi.h +1 -0
- esphome/components/spi/spi_esp_idf.cpp +13 -5
- esphome/components/sprinkler/__init__.py +4 -5
- esphome/components/sps30/sensor.py +8 -8
- esphome/components/ssd1306_i2c/display.py +2 -2
- esphome/components/ssd1322_base/__init__.py +2 -2
- esphome/components/ssd1325_base/__init__.py +2 -2
- esphome/components/ssd1327_base/__init__.py +2 -2
- esphome/components/ssd1327_i2c/display.py +1 -1
- esphome/components/ssd1331_base/__init__.py +2 -2
- esphome/components/ssd1351_base/__init__.py +2 -2
- esphome/components/st7567_base/__init__.py +4 -4
- esphome/components/st7567_i2c/display.py +1 -1
- esphome/components/st7920/display.py +2 -2
- esphome/components/statsd/__init__.py +3 -3
- esphome/components/status/binary_sensor.py +2 -5
- esphome/components/status_led/__init__.py +1 -1
- esphome/components/status_led/light/__init__.py +2 -1
- esphome/components/stepper/__init__.py +2 -2
- esphome/components/sts3x/sensor.py +1 -1
- esphome/components/substitutions/__init__.py +2 -2
- esphome/components/sun/__init__.py +4 -4
- esphome/components/sun/sensor/__init__.py +4 -7
- esphome/components/sun/text_sensor/__init__.py +5 -4
- esphome/components/sun_gtil2/__init__.py +1 -1
- esphome/components/sun_gtil2/sensor.py +7 -6
- esphome/components/sun_gtil2/text_sensor.py +3 -2
- esphome/components/sx1509/__init__.py +5 -5
- esphome/components/sx1509/binary_sensor/__init__.py +3 -3
- esphome/components/sx1509/output/__init__.py +4 -3
- esphome/components/t6615/sensor.py +1 -1
- esphome/components/tca9548a/__init__.py +1 -1
- esphome/components/tcl112/climate.py +1 -1
- esphome/components/tcs34725/sensor.py +4 -4
- esphome/components/tee501/sensor.py +1 -1
- esphome/components/teleinfo/__init__.py +1 -1
- esphome/components/teleinfo/sensor/__init__.py +1 -7
- esphome/components/teleinfo/text_sensor/__init__.py +1 -1
- esphome/components/tem3200/sensor.py +1 -2
- esphome/components/template/alarm_control_panel/__init__.py +3 -10
- esphome/components/template/cover/__init__.py +4 -3
- esphome/components/template/datetime/__init__.py +8 -9
- esphome/components/template/event/__init__.py +2 -5
- esphome/components/template/fan/__init__.py +2 -6
- esphome/components/template/lock/__init__.py +3 -2
- esphome/components/template/number/__init__.py +3 -2
- esphome/components/template/output/__init__.py +4 -3
- esphome/components/template/select/__init__.py +3 -2
- esphome/components/template/sensor/__init__.py +4 -7
- esphome/components/template/switch/__init__.py +3 -2
- esphome/components/template/text/__init__.py +4 -3
- esphome/components/template/text_sensor/__init__.py +3 -2
- esphome/components/template/valve/__init__.py +3 -2
- esphome/components/time/real_time_clock.cpp +0 -4
- esphome/components/time/real_time_clock.h +4 -3
- esphome/components/time_based/cover.py +3 -3
- esphome/components/tlc59208f/__init__.py +1 -1
- esphome/components/tlc59208f/output.py +2 -1
- esphome/components/tlc5947/__init__.py +1 -1
- esphome/components/tlc5947/output/__init__.py +2 -1
- esphome/components/tlc5971/__init__.py +2 -8
- esphome/components/tlc5971/output/__init__.py +2 -1
- esphome/components/tm1621/display.py +3 -3
- esphome/components/tm1637/binary_sensor.py +1 -1
- esphome/components/tm1637/display.py +3 -3
- esphome/components/tm1651/__init__.py +4 -4
- esphome/components/tmp102/sensor.py +1 -1
- esphome/components/tmp1075/sensor.py +2 -2
- esphome/components/tmp117/sensor.py +1 -1
- esphome/components/tof10120/sensor.py +2 -2
- esphome/components/tormatic/cover.py +2 -6
- esphome/components/toshiba/climate.py +1 -1
- esphome/components/total_daily_energy/sensor.py +4 -4
- esphome/components/tsl2561/sensor.py +1 -1
- esphome/components/tsl2591/sensor.py +9 -9
- esphome/components/tt21100/binary_sensor/__init__.py +2 -2
- esphome/components/tt21100/touchscreen/__init__.py +2 -3
- esphome/components/ttp229_bsf/__init__.py +2 -2
- esphome/components/ttp229_bsf/binary_sensor.py +3 -2
- esphome/components/ttp229_lsf/__init__.py +1 -1
- esphome/components/ttp229_lsf/binary_sensor.py +3 -2
- esphome/components/tuya/__init__.py +3 -5
- esphome/components/tuya/binary_sensor/__init__.py +2 -2
- esphome/components/tuya/climate/__init__.py +6 -5
- esphome/components/tuya/cover/__init__.py +5 -4
- esphome/components/tuya/fan/__init__.py +3 -2
- esphome/components/tuya/light/__init__.py +9 -8
- esphome/components/tuya/number/__init__.py +6 -5
- esphome/components/tuya/select/__init__.py +4 -3
- esphome/components/tuya/sensor/__init__.py +3 -2
- esphome/components/tuya/switch/__init__.py +3 -2
- esphome/components/tuya/text_sensor/__init__.py +3 -2
- esphome/components/tx20/sensor.py +6 -6
- esphome/components/uart/__init__.py +20 -19
- esphome/components/uart/button/__init__.py +2 -1
- esphome/components/uart/switch/__init__.py +2 -1
- esphome/components/ufire_ise/sensor.py +2 -2
- esphome/components/uln2003/stepper.py +2 -2
- esphome/components/ultrasonic/sensor.py +4 -4
- esphome/components/uponor_smatrix/__init__.py +2 -6
- esphome/components/uponor_smatrix/climate/__init__.py +3 -3
- esphome/components/vbus/__init__.py +1 -1
- esphome/components/vbus/binary_sensor/__init__.py +7 -6
- esphome/components/vbus/sensor/__init__.py +7 -6
- esphome/components/veml3235/sensor.py +1 -1
- esphome/components/veml7700/sensor.py +1 -1
- esphome/components/version/text_sensor.py +2 -6
- esphome/components/vl53l0x/sensor.py +6 -6
- esphome/components/web_server_base/__init__.py +2 -2
- esphome/components/web_server_idf/__init__.py +1 -1
- esphome/components/weikai/__init__.py +1 -1
- esphome/components/whirlpool/climate.py +1 -1
- esphome/components/whynter/climate.py +1 -1
- esphome/components/wireguard/binary_sensor.py +1 -1
- esphome/components/wireguard/sensor.py +2 -5
- esphome/components/wireguard/text_sensor.py +2 -5
- esphome/components/wk2132_i2c/__init__.py +1 -1
- esphome/components/wk2132_spi/__init__.py +1 -2
- esphome/components/wk2168_i2c/__init__.py +3 -8
- esphome/components/wk2168_spi/__init__.py +3 -8
- esphome/components/wk2204_i2c/__init__.py +1 -1
- esphome/components/wk2204_spi/__init__.py +1 -1
- esphome/components/wk2212_i2c/__init__.py +3 -8
- esphome/components/wk2212_spi/__init__.py +3 -8
- esphome/components/wl_134/text_sensor.py +2 -4
- esphome/components/wled/__init__.py +2 -2
- esphome/components/x9c/output.py +4 -4
- esphome/components/xgzp68xx/sensor.py +5 -5
- esphome/components/xiaomi_ble/__init__.py +1 -1
- esphome/components/xiaomi_cgd1/sensor.py +3 -3
- esphome/components/xiaomi_cgdk2/sensor.py +3 -3
- esphome/components/xiaomi_cgg1/sensor.py +2 -2
- esphome/components/xiaomi_cgpr1/binary_sensor.py +6 -6
- esphome/components/xiaomi_gcls002/sensor.py +7 -7
- esphome/components/xiaomi_hhccjcy01/sensor.py +9 -9
- esphome/components/xiaomi_hhccjcy10/sensor.py +9 -9
- esphome/components/xiaomi_hhccpot002/sensor.py +7 -7
- esphome/components/xiaomi_jqjcy01ym/sensor.py +6 -6
- esphome/components/xiaomi_lywsd02/sensor.py +4 -4
- esphome/components/xiaomi_lywsd02mmc/sensor.py +5 -5
- esphome/components/xiaomi_lywsd03mmc/sensor.py +6 -6
- esphome/components/xiaomi_lywsdcgq/sensor.py +5 -5
- esphome/components/xiaomi_mhoc303/sensor.py +4 -4
- esphome/components/xiaomi_mhoc401/sensor.py +6 -6
- esphome/components/xiaomi_miscale/sensor.py +6 -6
- esphome/components/xiaomi_mjyd02yla/binary_sensor.py +8 -8
- esphome/components/xiaomi_mue4094rt/binary_sensor.py +2 -7
- esphome/components/xiaomi_rtcgq02lm/__init__.py +2 -3
- esphome/components/xiaomi_rtcgq02lm/binary_sensor.py +3 -3
- esphome/components/xiaomi_rtcgq02lm/sensor.py +3 -3
- esphome/components/xiaomi_wx08zm/binary_sensor.py +2 -3
- esphome/components/xl9535/__init__.py +2 -2
- esphome/components/yashima/climate.py +1 -1
- esphome/components/zhlt01/climate.py +1 -1
- esphome/components/zio_ultrasonic/sensor.py +2 -5
- esphome/components/zyaura/sensor.py +7 -7
- esphome/const.py +3 -1
- esphome/core/component.cpp +3 -1
- esphome/core/component.h +15 -2
- esphome/core/config.py +4 -0
- esphome/core/defines.h +21 -0
- esphome/core/helpers.cpp +6 -7
- esphome/core/scheduler.cpp +34 -67
- esphome/core/scheduler.h +7 -17
- esphome/dashboard/status/mqtt.py +0 -2
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/METADATA +45 -44
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/RECORD +700 -693
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/WHEEL +1 -1
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info/licenses}/LICENSE +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0b1.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import display
|
4
|
-
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_DATA, CONF_DIMENSIONS, CONF_POSITION
|
5
5
|
|
6
6
|
CONF_USER_CHARACTERS = "user_characters"
|
7
7
|
|
@@ -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 lcd_base
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_DATA_PINS,
|
7
7
|
CONF_ENABLE_PIN,
|
8
|
-
CONF_RS_PIN,
|
9
|
-
CONF_RW_PIN,
|
10
8
|
CONF_ID,
|
11
9
|
CONF_LAMBDA,
|
10
|
+
CONF_RS_PIN,
|
11
|
+
CONF_RW_PIN,
|
12
12
|
)
|
13
13
|
|
14
14
|
AUTO_LOAD = ["lcd_base"]
|
@@ -1,17 +1,13 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
|
-
from esphome.const import (
|
4
|
-
CONF_ID,
|
5
|
-
CONF_DIMENSIONS,
|
6
|
-
CONF_DISPLAY_ID,
|
7
|
-
)
|
8
|
-
from esphome.core.entity_helpers import inherit_property_from
|
9
2
|
from esphome.components import lcd_base
|
10
3
|
from esphome.components.display_menu_base import (
|
11
4
|
DISPLAY_MENU_BASE_SCHEMA,
|
12
5
|
DisplayMenuComponent,
|
13
6
|
display_menu_to_code,
|
14
7
|
)
|
8
|
+
import esphome.config_validation as cv
|
9
|
+
from esphome.const import CONF_DIMENSIONS, CONF_DISPLAY_ID, CONF_ID
|
10
|
+
from esphome.core.entity_helpers import inherit_property_from
|
15
11
|
|
16
12
|
CODEOWNERS = ["@numo68"]
|
17
13
|
|
@@ -1,9 +1,9 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
|
-
from esphome.components import uart
|
4
|
-
from esphome.const import CONF_ID, CONF_THROTTLE, CONF_TIMEOUT, CONF_PASSWORD
|
5
1
|
from esphome import automation
|
6
2
|
from esphome.automation import maybe_simple_id
|
3
|
+
import esphome.codegen as cg
|
4
|
+
from esphome.components import uart
|
5
|
+
import esphome.config_validation as cv
|
6
|
+
from esphome.const import CONF_ID, CONF_PASSWORD, CONF_THROTTLE, CONF_TIMEOUT
|
7
7
|
|
8
8
|
DEPENDENCIES = ["uart"]
|
9
9
|
CODEOWNERS = ["@sebcaps", "@regevbr"]
|
@@ -2,16 +2,17 @@ import esphome.codegen as cg
|
|
2
2
|
from esphome.components import binary_sensor
|
3
3
|
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
|
+
CONF_HAS_MOVING_TARGET,
|
6
|
+
CONF_HAS_STILL_TARGET,
|
7
|
+
CONF_HAS_TARGET,
|
5
8
|
DEVICE_CLASS_MOTION,
|
6
9
|
DEVICE_CLASS_OCCUPANCY,
|
7
10
|
DEVICE_CLASS_PRESENCE,
|
8
11
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
9
|
-
ICON_MOTION_SENSOR,
|
10
12
|
ICON_ACCOUNT,
|
11
|
-
|
12
|
-
CONF_HAS_MOVING_TARGET,
|
13
|
-
CONF_HAS_STILL_TARGET,
|
13
|
+
ICON_MOTION_SENSOR,
|
14
14
|
)
|
15
|
+
|
15
16
|
from . import CONF_LD2410_ID, LD2410Component
|
16
17
|
|
17
18
|
DEPENDENCIES = ["ld2410"]
|
@@ -5,12 +5,13 @@ from esphome.const import (
|
|
5
5
|
CONF_FACTORY_RESET,
|
6
6
|
CONF_RESTART,
|
7
7
|
DEVICE_CLASS_RESTART,
|
8
|
-
ENTITY_CATEGORY_DIAGNOSTIC,
|
9
8
|
ENTITY_CATEGORY_CONFIG,
|
9
|
+
ENTITY_CATEGORY_DIAGNOSTIC,
|
10
|
+
ICON_DATABASE,
|
10
11
|
ICON_RESTART,
|
11
12
|
ICON_RESTART_ALERT,
|
12
|
-
ICON_DATABASE,
|
13
13
|
)
|
14
|
+
|
14
15
|
from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
|
15
16
|
|
16
17
|
QueryButton = ld2410_ns.class_("QueryButton", button.Button)
|
@@ -5,15 +5,16 @@ from esphome.const import (
|
|
5
5
|
CONF_ID,
|
6
6
|
CONF_TIMEOUT,
|
7
7
|
DEVICE_CLASS_DISTANCE,
|
8
|
-
DEVICE_CLASS_SIGNAL_STRENGTH,
|
9
8
|
DEVICE_CLASS_ILLUMINANCE,
|
10
|
-
|
11
|
-
UNIT_PERCENT,
|
9
|
+
DEVICE_CLASS_SIGNAL_STRENGTH,
|
12
10
|
ENTITY_CATEGORY_CONFIG,
|
11
|
+
ICON_LIGHTBULB,
|
13
12
|
ICON_MOTION_SENSOR,
|
14
13
|
ICON_TIMELAPSE,
|
15
|
-
|
14
|
+
UNIT_PERCENT,
|
15
|
+
UNIT_SECOND,
|
16
16
|
)
|
17
|
+
|
17
18
|
from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
|
18
19
|
|
19
20
|
GateThresholdNumber = ld2410_ns.class_("GateThresholdNumber", number.Number)
|
@@ -2,13 +2,14 @@ import esphome.codegen as cg
|
|
2
2
|
from esphome.components import select
|
3
3
|
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
|
-
ENTITY_CATEGORY_CONFIG,
|
6
5
|
CONF_BAUD_RATE,
|
7
|
-
|
8
|
-
ICON_SCALE,
|
6
|
+
ENTITY_CATEGORY_CONFIG,
|
9
7
|
ICON_LIGHTBULB,
|
10
8
|
ICON_RULER,
|
9
|
+
ICON_SCALE,
|
10
|
+
ICON_THERMOMETER,
|
11
11
|
)
|
12
|
+
|
12
13
|
from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
|
13
14
|
|
14
15
|
BaudRateSelect = ld2410_ns.class_("BaudRateSelect", select.Select)
|
@@ -2,17 +2,18 @@ import esphome.codegen as cg
|
|
2
2
|
from esphome.components import sensor
|
3
3
|
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
|
-
DEVICE_CLASS_DISTANCE,
|
6
|
-
UNIT_CENTIMETER,
|
7
|
-
UNIT_PERCENT,
|
8
5
|
CONF_LIGHT,
|
6
|
+
DEVICE_CLASS_DISTANCE,
|
9
7
|
DEVICE_CLASS_ILLUMINANCE,
|
10
8
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
11
|
-
ICON_SIGNAL,
|
12
9
|
ICON_FLASH,
|
13
|
-
ICON_MOTION_SENSOR,
|
14
10
|
ICON_LIGHTBULB,
|
11
|
+
ICON_MOTION_SENSOR,
|
12
|
+
ICON_SIGNAL,
|
13
|
+
UNIT_CENTIMETER,
|
14
|
+
UNIT_PERCENT,
|
15
15
|
)
|
16
|
+
|
16
17
|
from . import CONF_LD2410_ID, LD2410Component
|
17
18
|
|
18
19
|
DEPENDENCIES = ["ld2410"]
|
@@ -3,10 +3,11 @@ from esphome.components import switch
|
|
3
3
|
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
5
|
DEVICE_CLASS_SWITCH,
|
6
|
-
ICON_BLUETOOTH,
|
7
6
|
ENTITY_CATEGORY_CONFIG,
|
7
|
+
ICON_BLUETOOTH,
|
8
8
|
ICON_PULSE,
|
9
9
|
)
|
10
|
+
|
10
11
|
from .. import CONF_LD2410_ID, LD2410Component, ld2410_ns
|
11
12
|
|
12
13
|
BluetoothSwitch = ld2410_ns.class_("BluetoothSwitch", switch.Switch)
|
@@ -2,12 +2,13 @@ import esphome.codegen as cg
|
|
2
2
|
from esphome.components import text_sensor
|
3
3
|
import esphome.config_validation as cv
|
4
4
|
from esphome.const import (
|
5
|
-
ENTITY_CATEGORY_DIAGNOSTIC,
|
6
|
-
CONF_VERSION,
|
7
5
|
CONF_MAC_ADDRESS,
|
6
|
+
CONF_VERSION,
|
7
|
+
ENTITY_CATEGORY_DIAGNOSTIC,
|
8
8
|
ICON_BLUETOOTH,
|
9
9
|
ICON_CHIP,
|
10
10
|
)
|
11
|
+
|
11
12
|
from . import CONF_LD2410_ID, LD2410Component
|
12
13
|
|
13
14
|
DEPENDENCIES = ["ld2410"]
|
@@ -1,8 +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
|
-
|
5
|
-
from
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_HAS_TARGET, CONF_ID, DEVICE_CLASS_OCCUPANCY
|
5
|
+
|
6
|
+
from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
|
6
7
|
|
7
8
|
LD2420BinarySensor = ld2420_ns.class_(
|
8
9
|
"LD2420BinarySensor", binary_sensor.BinarySensor, cg.Component
|
@@ -4,12 +4,13 @@ import esphome.config_validation as cv
|
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_FACTORY_RESET,
|
6
6
|
DEVICE_CLASS_RESTART,
|
7
|
-
ENTITY_CATEGORY_DIAGNOSTIC,
|
8
7
|
ENTITY_CATEGORY_CONFIG,
|
8
|
+
ENTITY_CATEGORY_DIAGNOSTIC,
|
9
|
+
ICON_DATABASE,
|
9
10
|
ICON_RESTART,
|
10
11
|
ICON_RESTART_ALERT,
|
11
|
-
ICON_DATABASE,
|
12
12
|
)
|
13
|
+
|
13
14
|
from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
|
14
15
|
|
15
16
|
LD2420ApplyConfigButton = ld2420_ns.class_("LD2420ApplyConfigButton", button.Button)
|
@@ -4,12 +4,13 @@ import esphome.config_validation as cv
|
|
4
4
|
from esphome.const import (
|
5
5
|
CONF_ID,
|
6
6
|
DEVICE_CLASS_DISTANCE,
|
7
|
-
UNIT_SECOND,
|
8
7
|
ENTITY_CATEGORY_CONFIG,
|
9
8
|
ICON_MOTION_SENSOR,
|
10
|
-
ICON_TIMELAPSE,
|
11
9
|
ICON_SCALE,
|
10
|
+
ICON_TIMELAPSE,
|
11
|
+
UNIT_SECOND,
|
12
12
|
)
|
13
|
+
|
13
14
|
from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
|
14
15
|
|
15
16
|
LD2420TimeoutNumber = ld2420_ns.class_("LD2420TimeoutNumber", number.Number)
|
@@ -1,8 +1,9 @@
|
|
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 CONF_ID, DEVICE_CLASS_DISTANCE, UNIT_CENTIMETER
|
5
|
-
|
5
|
+
|
6
|
+
from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
|
6
7
|
|
7
8
|
LD2420Sensor = ld2420_ns.class_("LD2420Sensor", sensor.Sensor, cg.Component)
|
8
9
|
|
@@ -1,13 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
2
|
from esphome.components import text_sensor
|
3
3
|
import esphome.config_validation as cv
|
4
|
-
from esphome.const import
|
5
|
-
CONF_ID,
|
6
|
-
ENTITY_CATEGORY_DIAGNOSTIC,
|
7
|
-
ICON_CHIP,
|
8
|
-
)
|
4
|
+
from esphome.const import CONF_ID, ENTITY_CATEGORY_DIAGNOSTIC, ICON_CHIP
|
9
5
|
|
10
|
-
from .. import
|
6
|
+
from .. import CONF_LD2420_ID, LD2420Component, ld2420_ns
|
11
7
|
|
12
8
|
LD2420TextSensor = ld2420_ns.class_(
|
13
9
|
"LD2420TextSensor", text_sensor.TextSensor, cg.Component
|
@@ -1,10 +1,7 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import uart
|
4
|
-
|
5
|
-
|
6
|
-
CONF_THROTTLE,
|
7
|
-
)
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_ID, CONF_THROTTLE
|
8
5
|
|
9
6
|
DEPENDENCIES = ["uart"]
|
10
7
|
CODEOWNERS = ["@hareeshmu"]
|
@@ -1,12 +1,12 @@
|
|
1
|
-
from esphome import
|
1
|
+
from esphome import automation, pins
|
2
|
+
import esphome.codegen as cg
|
2
3
|
from esphome.components import output
|
3
4
|
import esphome.config_validation as cv
|
4
|
-
import esphome.codegen as cg
|
5
5
|
from esphome.const import (
|
6
|
-
CONF_PHASE_ANGLE,
|
7
6
|
CONF_CHANNEL,
|
8
7
|
CONF_FREQUENCY,
|
9
8
|
CONF_ID,
|
9
|
+
CONF_PHASE_ANGLE,
|
10
10
|
CONF_PIN,
|
11
11
|
)
|
12
12
|
|
@@ -1,12 +1,8 @@
|
|
1
|
-
from esphome import
|
1
|
+
from esphome import automation, pins
|
2
|
+
import esphome.codegen as cg
|
2
3
|
from esphome.components import output
|
3
4
|
import esphome.config_validation as cv
|
4
|
-
|
5
|
-
from esphome.const import (
|
6
|
-
CONF_FREQUENCY,
|
7
|
-
CONF_ID,
|
8
|
-
CONF_PIN,
|
9
|
-
)
|
5
|
+
from esphome.const import CONF_FREQUENCY, CONF_ID, CONF_PIN
|
10
6
|
|
11
7
|
DEPENDENCIES = ["libretiny"]
|
12
8
|
|
@@ -1,17 +1,15 @@
|
|
1
|
+
from esphome import automation, pins
|
1
2
|
import esphome.codegen as cg
|
2
3
|
import esphome.config_validation as cv
|
3
|
-
from esphome import pins
|
4
|
-
from esphome import automation
|
5
|
-
|
6
4
|
from esphome.const import (
|
7
|
-
|
5
|
+
CONF_CODE,
|
8
6
|
CONF_ID,
|
9
|
-
CONF_NAME,
|
10
|
-
CONF_WRITE_PIN,
|
11
|
-
CONF_REPEAT,
|
12
7
|
CONF_INVERTED,
|
8
|
+
CONF_NAME,
|
13
9
|
CONF_PULSE_LENGTH,
|
14
|
-
|
10
|
+
CONF_READ_PIN,
|
11
|
+
CONF_REPEAT,
|
12
|
+
CONF_WRITE_PIN,
|
15
13
|
)
|
16
14
|
from esphome.cpp_helpers import gpio_pin_expression
|
17
15
|
|
@@ -1,8 +1,7 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
|
-
|
4
1
|
from esphome import pins
|
2
|
+
import esphome.codegen as cg
|
5
3
|
from esphome.components import i2c, touchscreen
|
4
|
+
import esphome.config_validation as cv
|
6
5
|
from esphome.const import CONF_ID, CONF_INTERRUPT_PIN
|
7
6
|
|
8
7
|
from .. import lilygo_t5_47_ns
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import i2c, sensor
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_ACTUAL_GAIN,
|
7
7
|
CONF_ACTUAL_INTEGRATION_TIME,
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation
|
2
|
+
import esphome.codegen as cg
|
4
3
|
from esphome.components import i2c, sensor
|
4
|
+
import esphome.config_validation as cv
|
5
5
|
from esphome.const import (
|
6
6
|
CONF_ACTUAL_GAIN,
|
7
7
|
CONF_ACTUAL_INTEGRATION_TIME,
|
@@ -10,6 +10,7 @@ from esphome.const import (
|
|
10
10
|
CONF_GROUP,
|
11
11
|
CONF_ID,
|
12
12
|
CONF_LAMBDA,
|
13
|
+
CONF_ON_BOOT,
|
13
14
|
CONF_ON_IDLE,
|
14
15
|
CONF_PAGES,
|
15
16
|
CONF_TIMEOUT,
|
@@ -38,19 +39,18 @@ from .lvcode import LvContext, LvglComponent, lvgl_static
|
|
38
39
|
from .schemas import (
|
39
40
|
DISP_BG_SCHEMA,
|
40
41
|
FLEX_OBJ_SCHEMA,
|
42
|
+
FULL_STYLE_SCHEMA,
|
41
43
|
GRID_CELL_SCHEMA,
|
42
44
|
LAYOUT_SCHEMAS,
|
43
|
-
STYLE_SCHEMA,
|
44
45
|
WIDGET_TYPES,
|
45
46
|
any_widget_schema,
|
46
47
|
container_schema,
|
47
48
|
create_modify_schema,
|
48
|
-
grid_alignments,
|
49
49
|
obj_schema,
|
50
50
|
)
|
51
51
|
from .styles import add_top_layer, styles_to_code, theme_to_code
|
52
52
|
from .touchscreens import touchscreen_schema, touchscreens_to_code
|
53
|
-
from .trigger import generate_triggers
|
53
|
+
from .trigger import add_on_boot_triggers, generate_triggers
|
54
54
|
from .types import (
|
55
55
|
FontEngine,
|
56
56
|
IdleTrigger,
|
@@ -73,6 +73,7 @@ from .widgets.animimg import animimg_spec
|
|
73
73
|
from .widgets.arc import arc_spec
|
74
74
|
from .widgets.button import button_spec
|
75
75
|
from .widgets.buttonmatrix import buttonmatrix_spec
|
76
|
+
from .widgets.canvas import canvas_spec
|
76
77
|
from .widgets.checkbox import checkbox_spec
|
77
78
|
from .widgets.dropdown import dropdown_spec
|
78
79
|
from .widgets.img import img_spec
|
@@ -125,6 +126,7 @@ for w_type in (
|
|
125
126
|
keyboard_spec,
|
126
127
|
tileview_spec,
|
127
128
|
qr_code_spec,
|
129
|
+
canvas_spec,
|
128
130
|
):
|
129
131
|
WIDGET_TYPES[w_type.name] = w_type
|
130
132
|
|
@@ -365,6 +367,7 @@ async def to_code(configs):
|
|
365
367
|
conf[CONF_TRIGGER_ID], lv_component, False
|
366
368
|
)
|
367
369
|
await build_automation(resume_trigger, [], conf)
|
370
|
+
await add_on_boot_triggers(config.get(CONF_ON_BOOT, ()))
|
368
371
|
|
369
372
|
# This must be done after all widgets are created
|
370
373
|
for comp in helpers.lvgl_components_required:
|
@@ -373,6 +376,7 @@ async def to_code(configs):
|
|
373
376
|
add_define("LV_COLOR_SCREEN_TRANSP", "1")
|
374
377
|
for use in helpers.lv_uses:
|
375
378
|
add_define(f"LV_USE_{use.upper()}")
|
379
|
+
cg.add_define(f"USE_LVGL_{use.upper()}")
|
376
380
|
lv_conf_h_file = CORE.relative_src_path(LV_CONF_FILENAME)
|
377
381
|
write_file_if_changed(lv_conf_h_file, generate_lv_conf_h())
|
378
382
|
cg.add_build_flag("-DLV_CONF_H=1")
|
@@ -418,15 +422,8 @@ LVGL_SCHEMA = cv.All(
|
|
418
422
|
"big_endian", "little_endian"
|
419
423
|
),
|
420
424
|
cv.Optional(df.CONF_STYLE_DEFINITIONS): cv.ensure_list(
|
421
|
-
cv.Schema({cv.Required(CONF_ID): cv.declare_id(lv_style_t)})
|
422
|
-
|
423
|
-
.extend(
|
424
|
-
{
|
425
|
-
cv.Optional(df.CONF_GRID_CELL_X_ALIGN): grid_alignments,
|
426
|
-
cv.Optional(df.CONF_GRID_CELL_Y_ALIGN): grid_alignments,
|
427
|
-
cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
|
428
|
-
cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
|
429
|
-
}
|
425
|
+
cv.Schema({cv.Required(CONF_ID): cv.declare_id(lv_style_t)}).extend(
|
426
|
+
FULL_STYLE_SCHEMA
|
430
427
|
)
|
431
428
|
),
|
432
429
|
cv.Optional(CONF_ON_IDLE): validate_automation(
|
@@ -17,6 +17,7 @@ from .defines import (
|
|
17
17
|
CONF_SHOW_SNOW,
|
18
18
|
PARTS,
|
19
19
|
literal,
|
20
|
+
static_cast,
|
20
21
|
)
|
21
22
|
from .lv_validation import lv_bool, lv_color, lv_image, opacity
|
22
23
|
from .lvcode import (
|
@@ -32,7 +33,6 @@ from .lvcode import (
|
|
32
33
|
lv_expr,
|
33
34
|
lv_obj,
|
34
35
|
lvgl_comp,
|
35
|
-
static_cast,
|
36
36
|
)
|
37
37
|
from .schemas import DISP_BG_SCHEMA, LIST_ACTION_SCHEMA, LVGL_SCHEMA, base_update_schema
|
38
38
|
from .types import (
|
@@ -29,12 +29,16 @@ def add_define(macro, value="1"):
|
|
29
29
|
lv_defines[macro] = value
|
30
30
|
|
31
31
|
|
32
|
-
def literal(arg):
|
32
|
+
def literal(arg) -> MockObj:
|
33
33
|
if isinstance(arg, str):
|
34
34
|
return MockObj(arg)
|
35
35
|
return arg
|
36
36
|
|
37
37
|
|
38
|
+
def static_cast(type, value):
|
39
|
+
return literal(f"static_cast<{type}>({value})")
|
40
|
+
|
41
|
+
|
38
42
|
def call_lambda(lamb: LambdaExpression):
|
39
43
|
expr = lamb.content.strip()
|
40
44
|
if expr.startswith("return") and expr.endswith(";"):
|
@@ -416,7 +420,6 @@ CONF_CHANGE_RATE = "change_rate"
|
|
416
420
|
CONF_CLOSE_BUTTON = "close_button"
|
417
421
|
CONF_COLOR_DEPTH = "color_depth"
|
418
422
|
CONF_CONTROL = "control"
|
419
|
-
CONF_DEFAULT = "default"
|
420
423
|
CONF_DEFAULT_FONT = "default_font"
|
421
424
|
CONF_DEFAULT_GROUP = "default_group"
|
422
425
|
CONF_DIR = "dir"
|
@@ -254,11 +254,27 @@ def pixels_or_percent_validator(value):
|
|
254
254
|
pixels_or_percent = LValidator(pixels_or_percent_validator, uint32, retmapper=literal)
|
255
255
|
|
256
256
|
|
257
|
-
def
|
257
|
+
def pixels_validator(value):
|
258
|
+
if isinstance(value, str) and value.lower().endswith("px"):
|
259
|
+
value = value[:-2]
|
260
|
+
return cv.positive_int(value)
|
261
|
+
|
262
|
+
|
263
|
+
pixels = LValidator(pixels_validator, uint32, retmapper=literal)
|
264
|
+
|
265
|
+
|
266
|
+
def zoom_validator(value):
|
258
267
|
value = cv.float_range(0.1, 10.0)(value)
|
268
|
+
return value
|
269
|
+
|
270
|
+
|
271
|
+
def zoom_retmapper(value):
|
259
272
|
return int(value * 256)
|
260
273
|
|
261
274
|
|
275
|
+
zoom = LValidator(zoom_validator, uint32, retmapper=zoom_retmapper)
|
276
|
+
|
277
|
+
|
262
278
|
def angle(value):
|
263
279
|
"""
|
264
280
|
Validation for an angle in degrees, converted to an integer representing 0.1deg units
|
@@ -286,14 +302,6 @@ def size_validator(value):
|
|
286
302
|
size = LValidator(size_validator, uint32, retmapper=literal)
|
287
303
|
|
288
304
|
|
289
|
-
def pixels_validator(value):
|
290
|
-
if isinstance(value, str) and value.lower().endswith("px"):
|
291
|
-
return cv.int_(value[:-2])
|
292
|
-
return cv.int_(value)
|
293
|
-
|
294
|
-
|
295
|
-
pixels = LValidator(pixels_validator, uint32, retmapper=literal)
|
296
|
-
|
297
305
|
radius_consts = LvConstant("LV_RADIUS_", "CIRCLE")
|
298
306
|
|
299
307
|
|
@@ -206,11 +206,16 @@ class LocalVariable(MockObj):
|
|
206
206
|
|
207
207
|
def __enter__(self):
|
208
208
|
CodeContext.start_block()
|
209
|
-
CodeContext.append(
|
210
|
-
VariableDeclarationExpression(self.base.type, self.modifier, self.base.id)
|
211
|
-
)
|
212
209
|
if self.rhs is not None:
|
213
|
-
CodeContext.append(
|
210
|
+
CodeContext.append(
|
211
|
+
AssignmentExpression(self.base.type, self.modifier, self.base, self.rhs)
|
212
|
+
)
|
213
|
+
else:
|
214
|
+
CodeContext.append(
|
215
|
+
VariableDeclarationExpression(
|
216
|
+
self.base.type, self.modifier, self.base.id
|
217
|
+
)
|
218
|
+
)
|
214
219
|
return MockObj(self.base)
|
215
220
|
|
216
221
|
def __exit__(self, *args):
|
@@ -285,10 +290,6 @@ class LvExpr(MockLv):
|
|
285
290
|
pass
|
286
291
|
|
287
292
|
|
288
|
-
def static_cast(type, value):
|
289
|
-
return literal(f"static_cast<{type}>({value})")
|
290
|
-
|
291
|
-
|
292
293
|
# Top level mock for generic lv_ calls to be recorded
|
293
294
|
lv = MockLv("lv_")
|
294
295
|
# Just generate an expression
|
@@ -63,6 +63,11 @@ inline void lv_disp_set_bg_image(lv_disp_t *disp, esphome::image::Image *image)
|
|
63
63
|
inline void lv_obj_set_style_bg_img_src(lv_obj_t *obj, esphome::image::Image *image, lv_style_selector_t selector) {
|
64
64
|
lv_obj_set_style_bg_img_src(obj, image->get_lv_img_dsc(), selector);
|
65
65
|
}
|
66
|
+
inline void lv_canvas_draw_img(lv_obj_t *canvas, lv_coord_t x, lv_coord_t y, image::Image *image,
|
67
|
+
lv_draw_img_dsc_t *dsc) {
|
68
|
+
lv_canvas_draw_img(canvas, x, y, image->get_lv_img_dsc(), dsc);
|
69
|
+
}
|
70
|
+
|
66
71
|
#ifdef USE_LVGL_METER
|
67
72
|
inline lv_meter_indicator_t *lv_meter_add_needle_img(lv_obj_t *obj, lv_meter_scale_t *scale, esphome::image::Image *src,
|
68
73
|
lv_coord_t pivot_x, lv_coord_t pivot_y) {
|
@@ -90,6 +95,7 @@ inline void lv_animimg_set_src(lv_obj_t *img, std::vector<image::Image *> images
|
|
90
95
|
// Parent class for things that wrap an LVGL object
|
91
96
|
class LvCompound {
|
92
97
|
public:
|
98
|
+
virtual ~LvCompound() = default;
|
93
99
|
virtual void set_obj(lv_obj_t *lv_obj) { this->obj = lv_obj; }
|
94
100
|
lv_obj_t *obj{};
|
95
101
|
};
|
@@ -330,6 +336,19 @@ class LVEncoderListener : public Parented<LvglComponent> {
|
|
330
336
|
};
|
331
337
|
#endif // USE_LVGL_KEY_LISTENER
|
332
338
|
|
339
|
+
#ifdef USE_LVGL_LINE
|
340
|
+
class LvLineType : public LvCompound {
|
341
|
+
public:
|
342
|
+
std::vector<lv_point_t> get_points() { return this->points_; }
|
343
|
+
void set_points(std::vector<lv_point_t> points) {
|
344
|
+
this->points_ = std::move(points);
|
345
|
+
lv_line_set_points(this->obj, this->points_.data(), this->points_.size());
|
346
|
+
}
|
347
|
+
|
348
|
+
protected:
|
349
|
+
std::vector<lv_point_t> points_{};
|
350
|
+
};
|
351
|
+
#endif
|
333
352
|
#if defined(USE_LVGL_DROPDOWN) || defined(LV_USE_ROLLER)
|
334
353
|
class LvSelectable : public LvCompound {
|
335
354
|
public:
|