esphome 2025.3.2__py3-none-any.whl → 2025.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +34 -10
- esphome/components/a01nyub/sensor.py +2 -2
- esphome/components/a02yyuw/sensor.py +2 -2
- esphome/components/a4988/stepper.py +1 -2
- esphome/components/absolute_humidity/sensor.py +3 -3
- esphome/components/ac_dimmer/output.py +3 -3
- esphome/components/adalight/__init__.py +2 -2
- esphome/components/adc128s102/__init__.py +1 -1
- esphome/components/adc128s102/sensor/__init__.py +3 -3
- esphome/components/addressable_light/display.py +5 -5
- esphome/components/ade7880/sensor.py +2 -2
- esphome/components/ade7953_base/__init__.py +10 -10
- esphome/components/ade7953_i2c/sensor.py +1 -2
- esphome/components/ade7953_spi/sensor.py +1 -2
- esphome/components/ads1115/__init__.py +1 -1
- esphome/components/ads1115/sensor/__init__.py +4 -3
- esphome/components/ads1118/__init__.py +1 -1
- esphome/components/ads1118/sensor/__init__.py +5 -4
- esphome/components/ags10/sensor.py +9 -9
- esphome/components/aht10/sensor.py +2 -2
- esphome/components/airthings_ble/__init__.py +1 -1
- esphome/components/airthings_wave_base/__init__.py +2 -3
- esphome/components/airthings_wave_mini/sensor.py +2 -5
- esphome/components/airthings_wave_plus/sensor.py +8 -9
- esphome/components/alpha3/sensor.py +5 -5
- esphome/components/am2315c/am2315c.cpp +4 -4
- esphome/components/am2315c/sensor.py +1 -1
- esphome/components/am2320/sensor.py +1 -1
- esphome/components/am43/cover/__init__.py +1 -1
- esphome/components/am43/sensor/__init__.py +3 -3
- esphome/components/analog_threshold/binary_sensor.py +2 -5
- esphome/components/anova/climate.py +1 -1
- esphome/components/apds9306/sensor.py +1 -1
- esphome/components/apds9960/__init__.py +1 -1
- esphome/components/apds9960/binary_sensor.py +2 -1
- esphome/components/apds9960/sensor.py +3 -2
- esphome/components/api/api_frame_helper.cpp +25 -1
- esphome/components/as3935/__init__.py +3 -3
- esphome/components/as3935/binary_sensor.py +2 -1
- esphome/components/as3935/sensor.py +4 -3
- esphome/components/as3935_i2c/__init__.py +1 -1
- esphome/components/as3935_spi/__init__.py +1 -1
- esphome/components/as5600/__init__.py +2 -2
- esphome/components/as5600/sensor/__init__.py +10 -9
- esphome/components/as7341/sensor.py +1 -2
- esphome/components/at581x/__init__.py +4 -8
- esphome/components/at581x/switch/__init__.py +2 -4
- esphome/components/atc_mithermometer/sensor.py +3 -3
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +7 -3
- esphome/components/b_parasite/sensor.py +2 -2
- esphome/components/ballu/climate.py +1 -1
- esphome/components/bang_bang/climate.py +2 -2
- esphome/components/bedjet/__init__.py +2 -6
- esphome/components/bedjet/climate/__init__.py +3 -6
- esphome/components/bedjet/fan/__init__.py +4 -9
- esphome/components/bedjet/sensor/__init__.py +3 -6
- esphome/components/beken_spi_led_strip/light.py +2 -2
- esphome/components/bh1750/sensor.py +2 -6
- esphome/components/binary/fan/__init__.py +2 -1
- esphome/components/binary/light/__init__.py +3 -2
- esphome/components/binary_sensor_map/sensor.py +5 -6
- esphome/components/bl0939/sensor.py +1 -1
- esphome/components/bl0940/sensor.py +3 -3
- esphome/components/ble_client/__init__.py +3 -2
- esphome/components/ble_client/sensor/__init__.py +1 -1
- esphome/components/ble_client/text_sensor/__init__.py +1 -1
- esphome/components/bluetooth_proxy/__init__.py +35 -23
- esphome/components/bme280_base/__init__.py +1 -1
- esphome/components/bme280_i2c/sensor.py +3 -2
- esphome/components/bme280_spi/sensor.py +3 -2
- esphome/components/bme680/sensor.py +4 -4
- esphome/components/bme680_bsec/__init__.py +1 -1
- esphome/components/bme680_bsec/sensor.py +3 -6
- esphome/components/bme680_bsec/text_sensor.py +3 -2
- esphome/components/bmi160/sensor.py +6 -6
- esphome/components/bmp085/sensor.py +1 -1
- esphome/components/bmp280_base/__init__.py +1 -1
- esphome/components/bmp280_i2c/sensor.py +3 -2
- esphome/components/bmp280_spi/sensor.py +3 -2
- esphome/components/bmp3xx_base/__init__.py +1 -1
- esphome/components/bmp3xx_i2c/sensor.py +2 -1
- esphome/components/bmp3xx_spi/sensor.py +2 -1
- esphome/components/bmp581/sensor.py +2 -1
- esphome/components/bp1658cj/__init__.py +2 -6
- esphome/components/bp1658cj/output.py +2 -1
- esphome/components/bp5758d/__init__.py +2 -6
- esphome/components/bp5758d/output.py +3 -2
- esphome/components/canbus/__init__.py +13 -2
- esphome/components/canbus/canbus.cpp +7 -1
- esphome/components/cap1188/__init__.py +2 -2
- esphome/components/cap1188/binary_sensor.py +3 -2
- esphome/components/captive_portal/__init__.py +3 -3
- esphome/components/ccs811/sensor.py +10 -10
- esphome/components/cd74hc4067/__init__.py +2 -5
- esphome/components/cd74hc4067/sensor.py +6 -5
- esphome/components/climate_ir/__init__.py +2 -2
- esphome/components/climate_ir_lg/climate.py +1 -1
- esphome/components/color/__init__.py +1 -2
- esphome/components/color_temperature/light.py +2 -2
- esphome/components/combination/sensor.py +1 -1
- esphome/components/coolix/climate.py +1 -1
- esphome/components/copy/binary_sensor/__init__.py +1 -1
- esphome/components/copy/button/__init__.py +1 -1
- esphome/components/copy/cover/__init__.py +1 -1
- esphome/components/copy/fan/__init__.py +2 -7
- esphome/components/copy/lock/__init__.py +2 -7
- esphome/components/copy/number/__init__.py +1 -1
- esphome/components/copy/select/__init__.py +2 -7
- esphome/components/copy/sensor/__init__.py +2 -2
- esphome/components/copy/switch/__init__.py +1 -1
- esphome/components/copy/text/__init__.py +2 -7
- esphome/components/copy/text_sensor/__init__.py +2 -6
- esphome/components/cs5460a/sensor.py +7 -7
- esphome/components/cse7761/sensor.py +2 -2
- esphome/components/cse7766/sensor.py +1 -1
- esphome/components/cst226/touchscreen/__init__.py +3 -4
- esphome/components/ct_clamp/sensor.py +1 -1
- esphome/components/current_based/cover.py +3 -4
- esphome/components/cwww/light.py +3 -3
- esphome/components/dac7678/__init__.py +1 -1
- esphome/components/dac7678/output.py +2 -1
- esphome/components/daikin/climate.py +1 -1
- esphome/components/daikin_arc/climate.py +1 -1
- esphome/components/daikin_brc/climate.py +1 -1
- esphome/components/dallas_temp/sensor.py +1 -1
- esphome/components/daly_bms/__init__.py +2 -2
- esphome/components/daly_bms/binary_sensor.py +3 -2
- esphome/components/daly_bms/sensor.py +14 -13
- esphome/components/daly_bms/text_sensor.py +3 -2
- esphome/components/dashboard_import/__init__.py +5 -5
- esphome/components/debug/sensor.py +7 -6
- esphome/components/debug/text_sensor.py +1 -1
- esphome/components/deep_sleep/__init__.py +12 -13
- esphome/components/delonghi/climate.py +1 -1
- esphome/components/demo/__init__.py +1 -1
- esphome/components/dfplayer/__init__.py +3 -3
- esphome/components/dfrobot_sen0395/__init__.py +3 -3
- esphome/components/dfrobot_sen0395/binary_sensor.py +2 -1
- esphome/components/dfrobot_sen0395/switch/__init__.py +2 -3
- esphome/components/dht/sensor.py +4 -5
- esphome/components/dht12/sensor.py +3 -3
- esphome/components/display/display.cpp +2 -2
- esphome/components/dps310/sensor.py +3 -3
- esphome/components/ds1307/time.py +2 -3
- esphome/components/dsmr/__init__.py +3 -7
- esphome/components/dsmr/sensor.py +5 -4
- esphome/components/dsmr/text_sensor.py +3 -2
- esphome/components/duty_cycle/sensor.py +3 -8
- esphome/components/duty_time/sensor.py +7 -7
- esphome/components/e131/__init__.py +3 -3
- esphome/components/ee895/sensor.py +5 -5
- esphome/components/ektf2232/touchscreen/__init__.py +2 -3
- esphome/components/emc2101/__init__.py +1 -1
- esphome/components/emc2101/output/__init__.py +3 -2
- esphome/components/emc2101/sensor/__init__.py +4 -3
- esphome/components/emmeti/climate.py +1 -1
- esphome/components/endstop/cover.py +3 -3
- esphome/components/ens160_base/__init__.py +1 -1
- esphome/components/ens160_i2c/sensor.py +2 -1
- esphome/components/ens160_spi/sensor.py +2 -1
- esphome/components/ens210/sensor.py +1 -1
- esphome/components/esp32/__init__.py +10 -0
- esphome/components/esp32_ble_tracker/__init__.py +135 -51
- esphome/components/esp32_camera/__init__.py +7 -8
- esphome/components/esp32_camera_web_server/__init__.py +2 -2
- esphome/components/esp32_can/canbus.py +21 -0
- esphome/components/esp32_can/esp32_can.cpp +1 -1
- esphome/components/esp32_can/esp32_can.h +4 -0
- esphome/components/esp32_dac/output.py +2 -2
- esphome/components/esp32_hall/sensor.py +2 -6
- esphome/components/esp32_touch/__init__.py +7 -7
- esphome/components/esp32_touch/binary_sensor.py +4 -7
- esphome/components/esp8266_pwm/output.py +3 -8
- esphome/components/ethernet/__init__.py +1 -0
- esphome/components/ethernet/ethernet_component.cpp +1 -1
- esphome/components/ethernet_info/ethernet_info_text_sensor.h +1 -0
- esphome/components/exposure_notifications/__init__.py +2 -2
- esphome/components/external_components/__init__.py +1 -1
- esphome/components/ezo/sensor.py +2 -2
- esphome/components/ezo_pmp/__init__.py +4 -4
- esphome/components/ezo_pmp/binary_sensor.py +4 -4
- esphome/components/ezo_pmp/sensor.py +4 -5
- esphome/components/ezo_pmp/text_sensor.py +2 -6
- esphome/components/factory_reset/button/__init__.py +2 -1
- esphome/components/factory_reset/switch/__init__.py +3 -2
- esphome/components/fastled_base/__init__.py +3 -3
- esphome/components/fastled_clockless/light.py +2 -2
- esphome/components/fastled_spi/light.py +2 -2
- esphome/components/feedback/cover.py +3 -3
- esphome/components/fingerprint_grow/__init__.py +5 -6
- esphome/components/fingerprint_grow/binary_sensor.py +2 -1
- esphome/components/fingerprint_grow/sensor.py +2 -1
- esphome/components/fs3000/sensor.py +2 -6
- esphome/components/ft5x06/touchscreen/__init__.py +2 -2
- esphome/components/ft63x6/touchscreen.py +2 -3
- esphome/components/fujitsu_general/climate.py +1 -1
- esphome/components/gcja5/sensor.py +4 -4
- esphome/components/gdk101/__init__.py +1 -1
- esphome/components/gdk101/binary_sensor.py +2 -1
- esphome/components/gdk101/sensor.py +5 -4
- esphome/components/globals/__init__.py +1 -2
- esphome/components/gp2y1010au0f/sensor.py +3 -3
- esphome/components/gp8403/__init__.py +1 -2
- esphome/components/gp8403/output/__init__.py +3 -4
- esphome/components/gpio/binary_sensor/__init__.py +3 -2
- esphome/components/gpio/one_wire/__init__.py +3 -2
- esphome/components/gpio/output/__init__.py +3 -2
- esphome/components/gpio/switch/__init__.py +3 -2
- esphome/components/gps/__init__.py +4 -5
- esphome/components/gps/time/__init__.py +3 -2
- esphome/components/graph/__init__.py +12 -12
- esphome/components/grove_tb6612fng/__init__.py +5 -6
- esphome/components/growatt_solar/sensor.py +1 -1
- esphome/components/gt911/binary_sensor/__init__.py +2 -2
- esphome/components/haier/binary_sensor/__init__.py +4 -10
- esphome/components/haier/button/__init__.py +3 -6
- esphome/components/haier/sensor/__init__.py +4 -6
- esphome/components/haier/switch/__init__.py +4 -7
- esphome/components/haier/text_sensor/__init__.py +4 -9
- esphome/components/havells_solar/sensor.py +1 -1
- esphome/components/hbridge/fan/__init__.py +6 -6
- esphome/components/hbridge/light/__init__.py +2 -1
- esphome/components/hdc1080/sensor.py +1 -1
- esphome/components/he60r/cover.py +2 -6
- esphome/components/heatpumpir/climate.py +1 -1
- esphome/components/hitachi_ac344/climate.py +1 -1
- esphome/components/hitachi_ac424/climate.py +1 -1
- esphome/components/hlw8012/sensor.py +6 -6
- esphome/components/hm3301/sensor.py +3 -3
- esphome/components/hmc5883l/sensor.py +4 -4
- esphome/components/homeassistant/time/__init__.py +2 -1
- esphome/components/honeywell_hih_i2c/sensor.py +3 -3
- esphome/components/honeywellabp/sensor.py +1 -2
- esphome/components/honeywellabp2_i2c/sensor.py +1 -2
- esphome/components/host/time/__init__.py +2 -2
- esphome/components/hrxl_maxsonar_wr/sensor.py +1 -1
- esphome/components/hte501/sensor.py +3 -3
- esphome/components/http_request/ota/__init__.py +5 -9
- esphome/components/http_request/update/__init__.py +3 -7
- esphome/components/htu21d/sensor.py +6 -6
- esphome/components/htu31d/sensor.py +1 -1
- esphome/components/hx711/sensor.py +3 -8
- esphome/components/hydreon_rgxx/binary_sensor.py +3 -7
- esphome/components/hydreon_rgxx/sensor.py +4 -4
- esphome/components/hyt271/sensor.py +1 -1
- esphome/components/i2c_device/__init__.py +1 -1
- esphome/components/i2s_audio/media_player/__init__.py +6 -8
- esphome/components/iaqcore/sensor.py +2 -2
- esphome/components/ina219/sensor.py +2 -2
- esphome/components/ina226/sensor.py +4 -4
- esphome/components/ina260/sensor.py +4 -4
- esphome/components/ina2xx_base/__init__.py +2 -2
- esphome/components/ina2xx_i2c/sensor.py +1 -1
- esphome/components/ina2xx_spi/sensor.py +1 -1
- esphome/components/ina3221/sensor.py +3 -3
- esphome/components/inkbird_ibsth1_mini/sensor.py +2 -2
- esphome/components/inkplate6/display.py +2 -2
- esphome/components/integration/sensor.py +4 -4
- esphome/components/internal_temperature/sensor.py +5 -7
- esphome/components/interval/__init__.py +1 -1
- esphome/components/jsn_sr04t/sensor.py +3 -3
- esphome/components/kamstrup_kmp/sensor.py +1 -1
- esphome/components/key_collector/__init__.py +2 -2
- esphome/components/kmeteriso/sensor.py +2 -2
- esphome/components/kuntze/sensor.py +5 -5
- esphome/components/lcd_base/__init__.py +2 -2
- esphome/components/lcd_gpio/display.py +4 -4
- esphome/components/lcd_menu/__init__.py +3 -7
- esphome/components/lcd_pcf8574/display.py +1 -1
- esphome/components/ld2410/__init__.py +4 -4
- esphome/components/ld2410/binary_sensor.py +5 -4
- esphome/components/ld2410/button/__init__.py +3 -2
- esphome/components/ld2410/number/__init__.py +5 -4
- esphome/components/ld2410/select/__init__.py +4 -3
- esphome/components/ld2410/sensor.py +6 -5
- esphome/components/ld2410/switch/__init__.py +2 -1
- esphome/components/ld2410/text_sensor.py +3 -2
- esphome/components/ld2420/__init__.py +1 -1
- esphome/components/ld2420/binary_sensor/__init__.py +4 -3
- esphome/components/ld2420/button/__init__.py +3 -2
- esphome/components/ld2420/number/__init__.py +3 -2
- esphome/components/ld2420/select/__init__.py +1 -0
- esphome/components/ld2420/sensor/__init__.py +3 -2
- esphome/components/ld2420/text_sensor/__init__.py +2 -6
- esphome/components/ld2450/__init__.py +2 -5
- esphome/components/ledc/output.py +3 -3
- esphome/components/libretiny/text_sensor.py +1 -1
- esphome/components/libretiny_pwm/output.py +3 -7
- esphome/components/lightwaverf/__init__.py +6 -8
- esphome/components/lilygo_t5_47/touchscreen/__init__.py +2 -3
- esphome/components/ltr390/sensor.py +1 -1
- esphome/components/ltr501/sensor.py +2 -2
- esphome/components/ltr_als_ps/sensor.py +2 -2
- esphome/components/lvgl/__init__.py +9 -12
- esphome/components/lvgl/automation.py +15 -3
- esphome/components/lvgl/defines.py +5 -2
- esphome/components/lvgl/encoders.py +3 -2
- esphome/components/lvgl/lv_validation.py +17 -9
- esphome/components/lvgl/lvcode.py +11 -9
- esphome/components/lvgl/lvgl_esphome.h +21 -0
- esphome/components/lvgl/number/__init__.py +23 -20
- esphome/components/lvgl/number/lvgl_number.h +27 -14
- esphome/components/lvgl/schemas.py +70 -19
- esphome/components/lvgl/select/__init__.py +11 -13
- esphome/components/lvgl/select/lvgl_select.h +25 -18
- esphome/components/lvgl/styles.py +42 -11
- esphome/components/lvgl/switch/__init__.py +13 -8
- esphome/components/lvgl/switch/lvgl_switch.h +5 -16
- esphome/components/lvgl/trigger.py +10 -1
- esphome/components/lvgl/widgets/__init__.py +1 -2
- esphome/components/lvgl/widgets/buttonmatrix.py +2 -2
- esphome/components/lvgl/widgets/canvas.py +407 -0
- esphome/components/lvgl/widgets/line.py +22 -32
- esphome/components/lvgl/widgets/meter.py +3 -1
- esphome/components/m5stack_8angle/__init__.py +1 -2
- esphome/components/m5stack_8angle/binary_sensor/__init__.py +2 -3
- esphome/components/m5stack_8angle/light/__init__.py +2 -4
- esphome/components/m5stack_8angle/sensor/__init__.py +2 -4
- esphome/components/matrix_keypad/binary_sensor/__init__.py +4 -3
- esphome/components/max31855/sensor.py +1 -1
- esphome/components/max31865/sensor.py +1 -1
- esphome/components/max44009/sensor.py +1 -1
- esphome/components/max6675/sensor.py +1 -1
- esphome/components/max6956/__init__.py +5 -5
- esphome/components/max6956/output/__init__.py +4 -3
- esphome/components/max7219/display.py +1 -1
- esphome/components/max7219digit/display.py +1 -1
- esphome/components/max9611/sensor.py +10 -10
- esphome/components/mcp23008/__init__.py +1 -1
- esphome/components/mcp23016/__init__.py +4 -4
- esphome/components/mcp23017/__init__.py +1 -1
- esphome/components/mcp23s08/__init__.py +1 -1
- esphome/components/mcp23s17/__init__.py +1 -1
- esphome/components/mcp23xxx_base/__init__.py +4 -4
- esphome/components/mcp2515/canbus.py +2 -2
- esphome/components/mcp3008/__init__.py +1 -1
- esphome/components/mcp3008/sensor/__init__.py +4 -4
- esphome/components/mcp3204/__init__.py +1 -1
- esphome/components/mcp3204/sensor/__init__.py +3 -2
- esphome/components/mcp4461/__init__.py +42 -0
- esphome/components/mcp4461/mcp4461.cpp +618 -0
- esphome/components/mcp4461/mcp4461.h +171 -0
- esphome/components/mcp4461/output/__init__.py +60 -0
- esphome/components/mcp4461/output/mcp4461_output.cpp +73 -0
- esphome/components/mcp4461/output/mcp4461_output.h +49 -0
- esphome/components/mcp4725/output.py +2 -2
- esphome/components/mcp4728/__init__.py +1 -1
- esphome/components/mcp4728/output/__init__.py +4 -3
- esphome/components/mcp47a1/output.py +2 -2
- esphome/components/mcp9808/sensor.py +1 -1
- esphome/components/mdns/__init__.py +1 -1
- esphome/components/mhz19/sensor.py +4 -4
- esphome/components/micronova/__init__.py +3 -5
- esphome/components/micronova/button/__init__.py +5 -5
- esphome/components/micronova/number/__init__.py +6 -10
- esphome/components/micronova/sensor/__init__.py +6 -6
- esphome/components/micronova/switch/__init__.py +6 -8
- esphome/components/micronova/text_sensor/__init__.py +5 -5
- esphome/components/microphone/__init__.py +2 -4
- esphome/components/midea/climate.py +6 -10
- esphome/components/midea_ir/climate.py +1 -1
- esphome/components/mitsubishi/climate.py +1 -1
- esphome/components/mlx90614/sensor.py +1 -1
- esphome/components/mmc5603/sensor.py +4 -4
- esphome/components/mmc5983/sensor.py +1 -1
- esphome/components/modbus/__init__.py +5 -9
- esphome/components/modbus_controller/__init__.py +1 -1
- esphome/components/monochromatic/light.py +2 -2
- esphome/components/mopeka_ble/__init__.py +1 -1
- esphome/components/mopeka_pro_check/sensor.py +12 -12
- esphome/components/mopeka_std_check/sensor.py +8 -8
- esphome/components/mpl3115a2/sensor.py +1 -1
- esphome/components/mpr121/__init__.py +3 -3
- esphome/components/mpr121/binary_sensor/__init__.py +5 -4
- esphome/components/mpu6050/sensor.py +4 -4
- esphome/components/mpu6886/sensor.py +4 -4
- esphome/components/mqtt_subscribe/sensor/__init__.py +3 -5
- esphome/components/mqtt_subscribe/text_sensor/__init__.py +1 -1
- esphome/components/ms5611/sensor.py +2 -2
- esphome/components/ms8607/sensor.py +1 -1
- esphome/components/my9231/__init__.py +1 -1
- esphome/components/my9231/output.py +2 -1
- esphome/components/nau7802/nau7802.cpp +0 -4
- esphome/components/nau7802/nau7802.h +0 -2
- esphome/components/neopixelbus/_methods.py +11 -9
- esphome/components/neopixelbus/light.py +11 -18
- esphome/components/nextion/binary_sensor/__init__.py +6 -14
- esphome/components/nextion/sensor/__init__.py +7 -10
- esphome/components/nextion/switch/__init__.py +3 -5
- esphome/components/nextion/text_sensor/__init__.py +3 -7
- esphome/components/noblex/climate.py +1 -1
- esphome/components/ntc/sensor.py +1 -1
- esphome/components/opentherm/__init__.py +6 -6
- esphome/components/opentherm/input.py +2 -1
- esphome/components/opentherm/number/__init__.py +5 -4
- esphome/components/opentherm/output/__init__.py +3 -2
- esphome/components/opentherm/schema.py +7 -7
- esphome/components/opentherm/switch/__init__.py +3 -2
- esphome/components/opentherm/validate.py +1 -1
- esphome/components/output/__init__.py +2 -3
- esphome/components/output/button/__init__.py +3 -2
- esphome/components/output/lock/__init__.py +2 -1
- esphome/components/output/switch/__init__.py +2 -1
- esphome/components/partition/light.py +4 -4
- esphome/components/pca6416a/__init__.py +4 -4
- esphome/components/pca9554/__init__.py +4 -4
- esphome/components/pca9685/__init__.py +2 -2
- esphome/components/pca9685/output.py +2 -1
- esphome/components/pcf85063/time.py +2 -3
- esphome/components/pcf8563/time.py +2 -2
- esphome/components/pcf8574/__init__.py +4 -4
- esphome/components/pid/climate.py +2 -2
- esphome/components/pid/sensor/__init__.py +4 -8
- esphome/components/pipsolar/__init__.py +1 -1
- esphome/components/pipsolar/binary_sensor/__init__.py +2 -2
- esphome/components/pipsolar/output/__init__.py +4 -3
- esphome/components/pipsolar/sensor/__init__.py +5 -4
- esphome/components/pipsolar/switch/__init__.py +2 -1
- esphome/components/pipsolar/text_sensor/__init__.py +2 -1
- esphome/components/pm1006/sensor.py +2 -2
- esphome/components/pmsa003i/sensor.py +4 -4
- esphome/components/pmsx003/sensor.py +10 -11
- esphome/components/pmwcs3/sensor.py +5 -5
- esphome/components/pn532/__init__.py +3 -3
- esphome/components/pn532_i2c/__init__.py +1 -1
- esphome/components/pn532_spi/__init__.py +1 -1
- esphome/components/pn7150/__init__.py +2 -2
- esphome/components/pn7150_i2c/__init__.py +1 -1
- esphome/components/pn7160/__init__.py +2 -2
- esphome/components/pn7160_i2c/__init__.py +1 -1
- esphome/components/pn7160_spi/__init__.py +1 -1
- esphome/components/power_supply/__init__.py +1 -1
- esphome/components/prometheus/__init__.py +3 -8
- esphome/components/psram/__init__.py +75 -11
- esphome/components/psram/psram.cpp +18 -7
- esphome/components/pulse_counter/sensor.py +4 -4
- esphome/components/pulse_meter/sensor.py +3 -3
- esphome/components/pulse_width/sensor.py +3 -8
- esphome/components/pvvx_mithermometer/display/__init__.py +1 -1
- esphome/components/pvvx_mithermometer/sensor.py +3 -3
- esphome/components/pylontech/__init__.py +1 -0
- esphome/components/pylontech/sensor/__init__.py +8 -13
- esphome/components/pylontech/text_sensor/__init__.py +2 -7
- esphome/components/pzem004t/sensor.py +3 -3
- esphome/components/pzemac/sensor.py +9 -9
- esphome/components/pzemdc/sensor.py +6 -6
- esphome/components/qmc5883l/sensor.py +5 -5
- esphome/components/qmp6988/sensor.py +3 -3
- esphome/components/qr_code/__init__.py +1 -1
- esphome/components/qspi_dbi/display.py +1 -1
- esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
- esphome/components/qspi_dbi/qspi_dbi.h +1 -1
- esphome/components/qwiic_pir/binary_sensor.py +2 -5
- esphome/components/radon_eye_ble/__init__.py +1 -1
- esphome/components/radon_eye_rd200/sensor.py +3 -4
- esphome/components/rc522/__init__.py +3 -3
- esphome/components/rc522_i2c/__init__.py +1 -1
- esphome/components/rc522_spi/__init__.py +1 -1
- esphome/components/rdm6300/__init__.py +2 -2
- esphome/components/rdm6300/binary_sensor.py +2 -1
- esphome/components/resistance/sensor.py +2 -2
- esphome/components/restart/button/__init__.py +1 -1
- esphome/components/restart/switch/__init__.py +2 -5
- esphome/components/rf_bridge/__init__.py +3 -3
- esphome/components/rgb/light.py +2 -2
- esphome/components/rgbct/light.py +3 -3
- esphome/components/rgbw/light.py +2 -2
- esphome/components/rgbww/light.py +4 -4
- esphome/components/rotary_encoder/sensor.py +8 -8
- esphome/components/rp2040_pio/__init__.py +0 -1
- esphome/components/rp2040_pio_led_strip/light.py +2 -4
- esphome/components/rp2040_pwm/output.py +3 -7
- esphome/components/rtttl/__init__.py +6 -6
- esphome/components/ruuvi_ble/__init__.py +1 -1
- esphome/components/ruuvitag/sensor.py +15 -15
- esphome/components/safe_mode/__init__.py +2 -3
- esphome/components/safe_mode/button/__init__.py +3 -2
- esphome/components/safe_mode/switch/__init__.py +4 -7
- esphome/components/scd30/sensor.py +5 -6
- esphome/components/scd4x/sensor.py +6 -8
- esphome/components/script/__init__.py +2 -2
- esphome/components/sdl/display.py +3 -3
- esphome/components/sdl/touchscreen/__init__.py +2 -2
- esphome/components/sdm_meter/sensor.py +3 -3
- esphome/components/sdp3x/sensor.py +1 -2
- esphome/components/sds011/sensor.py +4 -4
- esphome/components/seeed_mr24hpc1/__init__.py +1 -1
- esphome/components/seeed_mr24hpc1/binary_sensor.py +2 -5
- esphome/components/seeed_mr24hpc1/button/__init__.py +1 -0
- esphome/components/seeed_mr24hpc1/number/__init__.py +2 -4
- esphome/components/seeed_mr24hpc1/select/__init__.py +2 -3
- esphome/components/seeed_mr24hpc1/sensor.py +1 -0
- esphome/components/seeed_mr24hpc1/switch/__init__.py +2 -4
- esphome/components/seeed_mr24hpc1/text_sensor.py +1 -0
- esphome/components/seeed_mr60bha2/binary_sensor.py +2 -4
- esphome/components/seeed_mr60bha2/sensor.py +1 -1
- esphome/components/seeed_mr60fda2/button/__init__.py +1 -1
- esphome/components/seeed_mr60fda2/select/__init__.py +0 -1
- esphome/components/selec_meter/sensor.py +1 -1
- esphome/components/sen0321/sensor.py +2 -2
- esphome/components/sen21231/sensor.py +1 -1
- esphome/components/senseair/sensor.py +3 -3
- esphome/components/sensirion_common/__init__.py +0 -2
- esphome/components/servo/__init__.py +3 -3
- esphome/components/sfa30/sensor.py +4 -5
- esphome/components/sgp4x/sensor.py +2 -2
- esphome/components/shelly_dimmer/light.py +16 -16
- esphome/components/sht3xd/sensor.py +1 -1
- esphome/components/sht4x/sensor.py +6 -6
- esphome/components/shtcx/sensor.py +1 -1
- esphome/components/shutdown/button/__init__.py +2 -6
- esphome/components/shutdown/switch/__init__.py +2 -5
- esphome/components/sigma_delta_output/output.py +2 -7
- esphome/components/sim800l/__init__.py +3 -7
- esphome/components/sim800l/binary_sensor.py +3 -5
- esphome/components/sim800l/sensor.py +2 -1
- esphome/components/slow_pwm/output.py +4 -5
- esphome/components/sm10bit_base/__init__.py +2 -6
- esphome/components/sm16716/__init__.py +1 -1
- esphome/components/sm16716/output.py +2 -1
- esphome/components/sm2135/__init__.py +2 -6
- esphome/components/sm2135/output.py +2 -1
- esphome/components/sm2235/__init__.py +1 -1
- esphome/components/sm2235/output.py +2 -1
- esphome/components/sm2335/__init__.py +1 -1
- esphome/components/sm2335/output.py +2 -1
- esphome/components/sm300d2/sensor.py +13 -13
- esphome/components/sml/__init__.py +1 -1
- esphome/components/sml/sensor/__init__.py +1 -1
- esphome/components/sml/sml.cpp +8 -6
- esphome/components/sml/sml.h +1 -1
- esphome/components/sml/sml_parser.cpp +16 -18
- esphome/components/sml/sml_parser.h +42 -12
- esphome/components/sml/text_sensor/__init__.py +1 -1
- esphome/components/smt100/sensor.py +5 -6
- esphome/components/sn74hc165/__init__.py +5 -5
- esphome/components/sn74hc595/__init__.py +5 -5
- esphome/components/socket/__init__.py +1 -1
- esphome/components/sonoff_d1/light.py +2 -6
- esphome/components/speaker/media_player/audio_pipeline.cpp +3 -2
- esphome/components/speaker/media_player/speaker_media_player.cpp +47 -12
- esphome/components/speed/fan/__init__.py +2 -2
- esphome/components/spi/__init__.py +45 -36
- esphome/components/spi/spi.h +1 -0
- esphome/components/spi/spi_esp_idf.cpp +13 -5
- esphome/components/sprinkler/__init__.py +4 -5
- esphome/components/sps30/sensor.py +8 -8
- esphome/components/ssd1306_i2c/display.py +2 -2
- esphome/components/ssd1322_base/__init__.py +2 -2
- esphome/components/ssd1325_base/__init__.py +2 -2
- esphome/components/ssd1327_base/__init__.py +2 -2
- esphome/components/ssd1327_i2c/display.py +1 -1
- esphome/components/ssd1331_base/__init__.py +2 -2
- esphome/components/ssd1351_base/__init__.py +2 -2
- esphome/components/st7567_base/__init__.py +4 -4
- esphome/components/st7567_i2c/display.py +1 -1
- esphome/components/st7920/display.py +2 -2
- esphome/components/statsd/__init__.py +3 -3
- esphome/components/status/binary_sensor.py +2 -5
- esphome/components/status_led/__init__.py +1 -1
- esphome/components/status_led/light/__init__.py +2 -1
- esphome/components/stepper/__init__.py +2 -2
- esphome/components/sts3x/sensor.py +1 -1
- esphome/components/substitutions/__init__.py +2 -2
- esphome/components/sun/__init__.py +4 -4
- esphome/components/sun/sensor/__init__.py +4 -7
- esphome/components/sun/text_sensor/__init__.py +5 -4
- esphome/components/sun_gtil2/__init__.py +1 -1
- esphome/components/sun_gtil2/sensor.py +7 -6
- esphome/components/sun_gtil2/text_sensor.py +3 -2
- esphome/components/sx1509/__init__.py +5 -5
- esphome/components/sx1509/binary_sensor/__init__.py +3 -3
- esphome/components/sx1509/output/__init__.py +4 -3
- esphome/components/t6615/sensor.py +1 -1
- esphome/components/tca9548a/__init__.py +1 -1
- esphome/components/tcl112/climate.py +1 -1
- esphome/components/tcs34725/sensor.py +4 -4
- esphome/components/tee501/sensor.py +1 -1
- esphome/components/teleinfo/__init__.py +1 -1
- esphome/components/teleinfo/sensor/__init__.py +1 -7
- esphome/components/teleinfo/text_sensor/__init__.py +1 -1
- esphome/components/tem3200/sensor.py +1 -2
- esphome/components/template/alarm_control_panel/__init__.py +3 -10
- esphome/components/template/cover/__init__.py +4 -3
- esphome/components/template/datetime/__init__.py +8 -9
- esphome/components/template/event/__init__.py +2 -5
- esphome/components/template/fan/__init__.py +2 -6
- esphome/components/template/lock/__init__.py +3 -2
- esphome/components/template/number/__init__.py +3 -2
- esphome/components/template/output/__init__.py +4 -3
- esphome/components/template/select/__init__.py +3 -2
- esphome/components/template/sensor/__init__.py +4 -7
- esphome/components/template/switch/__init__.py +3 -2
- esphome/components/template/text/__init__.py +4 -3
- esphome/components/template/text_sensor/__init__.py +3 -2
- esphome/components/template/valve/__init__.py +3 -2
- esphome/components/time/real_time_clock.cpp +0 -4
- esphome/components/time/real_time_clock.h +4 -3
- esphome/components/time_based/cover.py +3 -3
- esphome/components/tlc59208f/__init__.py +1 -1
- esphome/components/tlc59208f/output.py +2 -1
- esphome/components/tlc5947/__init__.py +1 -1
- esphome/components/tlc5947/output/__init__.py +2 -1
- esphome/components/tlc5971/__init__.py +2 -8
- esphome/components/tlc5971/output/__init__.py +2 -1
- esphome/components/tm1621/display.py +3 -3
- esphome/components/tm1637/binary_sensor.py +1 -1
- esphome/components/tm1637/display.py +3 -3
- esphome/components/tm1651/__init__.py +4 -4
- esphome/components/tmp102/sensor.py +1 -1
- esphome/components/tmp1075/sensor.py +2 -2
- esphome/components/tmp117/sensor.py +1 -1
- esphome/components/tof10120/sensor.py +2 -2
- esphome/components/tormatic/cover.py +2 -6
- esphome/components/toshiba/climate.py +1 -1
- esphome/components/total_daily_energy/sensor.py +4 -4
- esphome/components/tsl2561/sensor.py +1 -1
- esphome/components/tsl2591/sensor.py +9 -9
- esphome/components/tt21100/binary_sensor/__init__.py +2 -2
- esphome/components/tt21100/touchscreen/__init__.py +2 -3
- esphome/components/ttp229_bsf/__init__.py +2 -2
- esphome/components/ttp229_bsf/binary_sensor.py +3 -2
- esphome/components/ttp229_lsf/__init__.py +1 -1
- esphome/components/ttp229_lsf/binary_sensor.py +3 -2
- esphome/components/tuya/__init__.py +3 -5
- esphome/components/tuya/binary_sensor/__init__.py +2 -2
- esphome/components/tuya/climate/__init__.py +6 -5
- esphome/components/tuya/cover/__init__.py +5 -4
- esphome/components/tuya/fan/__init__.py +3 -2
- esphome/components/tuya/light/__init__.py +9 -8
- esphome/components/tuya/number/__init__.py +6 -5
- esphome/components/tuya/select/__init__.py +4 -3
- esphome/components/tuya/sensor/__init__.py +3 -2
- esphome/components/tuya/switch/__init__.py +3 -2
- esphome/components/tuya/text_sensor/__init__.py +3 -2
- esphome/components/tx20/sensor.py +6 -6
- esphome/components/uart/__init__.py +20 -19
- esphome/components/uart/button/__init__.py +2 -1
- esphome/components/uart/switch/__init__.py +2 -1
- esphome/components/ufire_ise/sensor.py +2 -2
- esphome/components/uln2003/stepper.py +2 -2
- esphome/components/ultrasonic/sensor.py +4 -4
- esphome/components/uponor_smatrix/__init__.py +2 -6
- esphome/components/uponor_smatrix/climate/__init__.py +3 -3
- esphome/components/vbus/__init__.py +1 -1
- esphome/components/vbus/binary_sensor/__init__.py +7 -6
- esphome/components/vbus/sensor/__init__.py +7 -6
- esphome/components/veml3235/sensor.py +1 -1
- esphome/components/veml7700/sensor.py +1 -1
- esphome/components/version/text_sensor.py +2 -6
- esphome/components/vl53l0x/sensor.py +6 -6
- esphome/components/web_server_base/__init__.py +2 -2
- esphome/components/web_server_idf/__init__.py +1 -1
- esphome/components/weikai/__init__.py +1 -1
- esphome/components/whirlpool/climate.py +1 -1
- esphome/components/whynter/climate.py +1 -1
- esphome/components/wireguard/binary_sensor.py +1 -1
- esphome/components/wireguard/sensor.py +2 -5
- esphome/components/wireguard/text_sensor.py +2 -5
- esphome/components/wk2132_i2c/__init__.py +1 -1
- esphome/components/wk2132_spi/__init__.py +1 -2
- esphome/components/wk2168_i2c/__init__.py +3 -8
- esphome/components/wk2168_spi/__init__.py +3 -8
- esphome/components/wk2204_i2c/__init__.py +1 -1
- esphome/components/wk2204_spi/__init__.py +1 -1
- esphome/components/wk2212_i2c/__init__.py +3 -8
- esphome/components/wk2212_spi/__init__.py +3 -8
- esphome/components/wl_134/text_sensor.py +2 -4
- esphome/components/wled/__init__.py +2 -2
- esphome/components/x9c/output.py +4 -4
- esphome/components/xgzp68xx/sensor.py +5 -5
- esphome/components/xiaomi_ble/__init__.py +1 -1
- esphome/components/xiaomi_cgd1/sensor.py +3 -3
- esphome/components/xiaomi_cgdk2/sensor.py +3 -3
- esphome/components/xiaomi_cgg1/sensor.py +2 -2
- esphome/components/xiaomi_cgpr1/binary_sensor.py +6 -6
- esphome/components/xiaomi_gcls002/sensor.py +7 -7
- esphome/components/xiaomi_hhccjcy01/sensor.py +9 -9
- esphome/components/xiaomi_hhccjcy10/sensor.py +9 -9
- esphome/components/xiaomi_hhccpot002/sensor.py +7 -7
- esphome/components/xiaomi_jqjcy01ym/sensor.py +6 -6
- esphome/components/xiaomi_lywsd02/sensor.py +4 -4
- esphome/components/xiaomi_lywsd02mmc/sensor.py +5 -5
- esphome/components/xiaomi_lywsd03mmc/sensor.py +6 -6
- esphome/components/xiaomi_lywsdcgq/sensor.py +5 -5
- esphome/components/xiaomi_mhoc303/sensor.py +4 -4
- esphome/components/xiaomi_mhoc401/sensor.py +6 -6
- esphome/components/xiaomi_miscale/sensor.py +6 -6
- esphome/components/xiaomi_mjyd02yla/binary_sensor.py +8 -8
- esphome/components/xiaomi_mue4094rt/binary_sensor.py +2 -7
- esphome/components/xiaomi_rtcgq02lm/__init__.py +2 -3
- esphome/components/xiaomi_rtcgq02lm/binary_sensor.py +3 -3
- esphome/components/xiaomi_rtcgq02lm/sensor.py +3 -3
- esphome/components/xiaomi_wx08zm/binary_sensor.py +2 -3
- esphome/components/xl9535/__init__.py +2 -2
- esphome/components/yashima/climate.py +1 -1
- esphome/components/zhlt01/climate.py +1 -1
- esphome/components/zio_ultrasonic/sensor.py +2 -5
- esphome/components/zyaura/sensor.py +7 -7
- esphome/config_validation.py +0 -42
- esphome/const.py +3 -1
- esphome/core/__init__.py +0 -1
- esphome/core/component.cpp +3 -1
- esphome/core/component.h +15 -2
- esphome/core/config.py +4 -0
- esphome/core/defines.h +21 -0
- esphome/core/helpers.cpp +6 -7
- esphome/core/scheduler.cpp +34 -67
- esphome/core/scheduler.h +7 -17
- esphome/dashboard/status/mqtt.py +0 -2
- esphome/vscode.py +27 -8
- esphome/yaml_util.py +75 -39
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/METADATA +45 -44
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/RECORD +718 -711
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/WHEEL +1 -1
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info/licenses}/LICENSE +0 -0
- {esphome-2025.3.2.dist-info → esphome-2025.4.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,171 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "esphome/core/component.h"
|
4
|
+
#include "esphome/core/log.h"
|
5
|
+
#include "esphome/components/i2c/i2c.h"
|
6
|
+
|
7
|
+
namespace esphome {
|
8
|
+
namespace mcp4461 {
|
9
|
+
|
10
|
+
struct WiperState {
|
11
|
+
bool enabled = true;
|
12
|
+
uint16_t state = 0;
|
13
|
+
optional<float> initial_value;
|
14
|
+
bool terminal_a = true;
|
15
|
+
bool terminal_b = true;
|
16
|
+
bool terminal_w = true;
|
17
|
+
bool terminal_hw = true;
|
18
|
+
bool wiper_lock_active = false;
|
19
|
+
bool update_level = false;
|
20
|
+
bool update_terminal = false;
|
21
|
+
};
|
22
|
+
|
23
|
+
// default wiper state is 128 / 0x80h
|
24
|
+
enum class Mcp4461Commands : uint8_t { WRITE = 0x00, INCREMENT = 0x04, DECREMENT = 0x08, READ = 0x0C };
|
25
|
+
|
26
|
+
enum class Mcp4461Addresses : uint8_t {
|
27
|
+
MCP4461_VW0 = 0x00,
|
28
|
+
MCP4461_VW1 = 0x10,
|
29
|
+
MCP4461_VW2 = 0x60,
|
30
|
+
MCP4461_VW3 = 0x70,
|
31
|
+
MCP4461_STATUS = 0x50,
|
32
|
+
MCP4461_TCON0 = 0x40,
|
33
|
+
MCP4461_TCON1 = 0xA0,
|
34
|
+
MCP4461_EEPROM_1 = 0xB0
|
35
|
+
};
|
36
|
+
|
37
|
+
enum class Mcp4461WiperIdx : uint8_t {
|
38
|
+
MCP4461_WIPER_0 = 0,
|
39
|
+
MCP4461_WIPER_1 = 1,
|
40
|
+
MCP4461_WIPER_2 = 2,
|
41
|
+
MCP4461_WIPER_3 = 3,
|
42
|
+
MCP4461_WIPER_4 = 4,
|
43
|
+
MCP4461_WIPER_5 = 5,
|
44
|
+
MCP4461_WIPER_6 = 6,
|
45
|
+
MCP4461_WIPER_7 = 7
|
46
|
+
};
|
47
|
+
|
48
|
+
enum class Mcp4461EepromLocation : uint8_t {
|
49
|
+
MCP4461_EEPROM_0 = 0,
|
50
|
+
MCP4461_EEPROM_1 = 1,
|
51
|
+
MCP4461_EEPROM_2 = 2,
|
52
|
+
MCP4461_EEPROM_3 = 3,
|
53
|
+
MCP4461_EEPROM_4 = 4
|
54
|
+
};
|
55
|
+
|
56
|
+
enum class Mcp4461TerminalIdx : uint8_t { MCP4461_TERMINAL_0 = 0, MCP4461_TERMINAL_1 = 1 };
|
57
|
+
|
58
|
+
class Mcp4461Wiper;
|
59
|
+
|
60
|
+
// Mcp4461Component
|
61
|
+
class Mcp4461Component : public Component, public i2c::I2CDevice {
|
62
|
+
public:
|
63
|
+
Mcp4461Component(bool disable_wiper_0, bool disable_wiper_1, bool disable_wiper_2, bool disable_wiper_3)
|
64
|
+
: wiper_0_disabled_(disable_wiper_0),
|
65
|
+
wiper_1_disabled_(disable_wiper_1),
|
66
|
+
wiper_2_disabled_(disable_wiper_2),
|
67
|
+
wiper_3_disabled_(disable_wiper_3) {
|
68
|
+
this->reg_[0].enabled = !wiper_0_disabled_;
|
69
|
+
this->reg_[1].enabled = !wiper_1_disabled_;
|
70
|
+
this->reg_[2].enabled = !wiper_2_disabled_;
|
71
|
+
this->reg_[3].enabled = !wiper_3_disabled_;
|
72
|
+
}
|
73
|
+
|
74
|
+
void setup() override;
|
75
|
+
void dump_config() override;
|
76
|
+
float get_setup_priority() const override { return setup_priority::HARDWARE; }
|
77
|
+
void loop() override;
|
78
|
+
/// @brief get eeprom value from location
|
79
|
+
/// @param[in] location - eeprom location 0-4
|
80
|
+
/// @return eeprom value of specified location (9 bits max)
|
81
|
+
uint16_t get_eeprom_value(Mcp4461EepromLocation location);
|
82
|
+
/// @brief set eeprom value at specified location
|
83
|
+
/// @param[in] location - eeprom location 0-4
|
84
|
+
/// @param[in] value - 9 bits value to store
|
85
|
+
bool set_eeprom_value(Mcp4461EepromLocation location, uint16_t value);
|
86
|
+
/// @brief public function used to set initial value
|
87
|
+
/// @param[in] wiper - the wiper to set the value for
|
88
|
+
/// @param[in] initial_value - the initial value in range 0-1.0 as float
|
89
|
+
void set_initial_value(Mcp4461WiperIdx wiper, float initial_value);
|
90
|
+
/// @brief public function used to set disable terminal config
|
91
|
+
/// @param[in] wiper - the wiper to set the value for
|
92
|
+
/// @param[in] terminal - the terminal to disable, one of ['a','b','w','h']
|
93
|
+
void initialize_terminal_disabled(Mcp4461WiperIdx wiper, char terminal);
|
94
|
+
/// @brief read status register to log
|
95
|
+
void read_status_register_to_log();
|
96
|
+
|
97
|
+
protected:
|
98
|
+
friend class Mcp4461Wiper;
|
99
|
+
void update_write_protection_status_();
|
100
|
+
uint8_t get_wiper_address_(uint8_t wiper);
|
101
|
+
uint16_t read_wiper_level_(uint8_t wiper);
|
102
|
+
uint8_t get_status_register_();
|
103
|
+
uint16_t get_wiper_level_(Mcp4461WiperIdx wiper);
|
104
|
+
bool set_wiper_level_(Mcp4461WiperIdx wiper, uint16_t value);
|
105
|
+
bool update_wiper_level_(Mcp4461WiperIdx wiper);
|
106
|
+
void enable_wiper_(Mcp4461WiperIdx wiper);
|
107
|
+
void disable_wiper_(Mcp4461WiperIdx wiper);
|
108
|
+
bool increase_wiper_(Mcp4461WiperIdx wiper);
|
109
|
+
bool decrease_wiper_(Mcp4461WiperIdx wiper);
|
110
|
+
void enable_terminal_(Mcp4461WiperIdx wiper, char terminal);
|
111
|
+
void disable_terminal_(Mcp4461WiperIdx, char terminal);
|
112
|
+
bool is_writing_();
|
113
|
+
bool is_eeprom_ready_for_writing_(bool wait_if_not_ready);
|
114
|
+
void write_wiper_level_(uint8_t wiper, uint16_t value);
|
115
|
+
bool mcp4461_write_(uint8_t addr, uint16_t data, bool nonvolatile = false);
|
116
|
+
uint8_t calc_terminal_connector_byte_(Mcp4461TerminalIdx terminal_connector);
|
117
|
+
void update_terminal_register_(Mcp4461TerminalIdx terminal_connector);
|
118
|
+
uint8_t get_terminal_register_(Mcp4461TerminalIdx terminal_connector);
|
119
|
+
bool set_terminal_register_(Mcp4461TerminalIdx terminal_connector, uint8_t data);
|
120
|
+
|
121
|
+
// Converts a status to a human readable string
|
122
|
+
static const LogString *get_message_string(int status) {
|
123
|
+
switch (status) {
|
124
|
+
case MCP4461_STATUS_I2C_ERROR:
|
125
|
+
return LOG_STR("I2C error - communication with MCP4461 failed!");
|
126
|
+
case MCP4461_STATUS_REGISTER_ERROR:
|
127
|
+
return LOG_STR("Status register could not be read");
|
128
|
+
case MCP4461_STATUS_REGISTER_INVALID:
|
129
|
+
return LOG_STR("Invalid status register value - bits 1,7 or 8 are 0");
|
130
|
+
case MCP4461_VALUE_INVALID:
|
131
|
+
return LOG_STR("Invalid value for wiper given");
|
132
|
+
case MCP4461_WRITE_PROTECTED:
|
133
|
+
return LOG_STR("MCP4461 is write protected. Setting nonvolatile wipers/eeprom values is prohibited.");
|
134
|
+
case MCP4461_WIPER_ENABLED:
|
135
|
+
return LOG_STR("MCP4461 Wiper is already enabled, ignoring cmd to enable.");
|
136
|
+
case MCP4461_WIPER_DISABLED:
|
137
|
+
return LOG_STR("MCP4461 Wiper is disabled. All actions on this wiper are prohibited.");
|
138
|
+
case MCP4461_WIPER_LOCKED:
|
139
|
+
return LOG_STR("MCP4461 Wiper is locked using WiperLock-technology. All actions on this wiper are prohibited.");
|
140
|
+
case MCP4461_STATUS_OK:
|
141
|
+
return LOG_STR("Status OK");
|
142
|
+
default:
|
143
|
+
return LOG_STR("Unknown");
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
enum ErrorCode {
|
148
|
+
MCP4461_STATUS_OK = 0, // CMD completed successfully
|
149
|
+
MCP4461_FAILED, // component failed
|
150
|
+
MCP4461_STATUS_I2C_ERROR, // Unable to communicate with device
|
151
|
+
MCP4461_STATUS_REGISTER_INVALID, // Status register value was invalid
|
152
|
+
MCP4461_STATUS_REGISTER_ERROR, // Error fetching status register
|
153
|
+
MCP4461_PROHIBITED_FOR_NONVOLATILE, //
|
154
|
+
MCP4461_VALUE_INVALID, // Invalid value given for wiper / eeprom
|
155
|
+
MCP4461_WRITE_PROTECTED, // The value was read, but the CRC over the payload (valid and data) does not match
|
156
|
+
MCP4461_WIPER_ENABLED, // The wiper is enabled, discard additional enabling actions
|
157
|
+
MCP4461_WIPER_DISABLED, // The wiper is disabled - all actions for this wiper will be aborted/discarded
|
158
|
+
MCP4461_WIPER_LOCKED, // The wiper is locked using WiperLock-technology - all actions for this wiper will be
|
159
|
+
// aborted/discarded
|
160
|
+
} error_code_{MCP4461_STATUS_OK};
|
161
|
+
|
162
|
+
WiperState reg_[8];
|
163
|
+
bool last_eeprom_write_timed_out_{false};
|
164
|
+
bool write_protected_{false};
|
165
|
+
bool wiper_0_disabled_{false};
|
166
|
+
bool wiper_1_disabled_{false};
|
167
|
+
bool wiper_2_disabled_{false};
|
168
|
+
bool wiper_3_disabled_{false};
|
169
|
+
};
|
170
|
+
} // namespace mcp4461
|
171
|
+
} // namespace esphome
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import esphome.codegen as cg
|
2
|
+
import esphome.config_validation as cv
|
3
|
+
from esphome.components import output
|
4
|
+
from esphome.const import CONF_CHANNEL, CONF_ID, CONF_INITIAL_VALUE
|
5
|
+
from .. import Mcp4461Component, CONF_MCP4461_ID, mcp4461_ns
|
6
|
+
|
7
|
+
DEPENDENCIES = ["mcp4461"]
|
8
|
+
|
9
|
+
Mcp4461Wiper = mcp4461_ns.class_(
|
10
|
+
"Mcp4461Wiper", output.FloatOutput, cg.Parented.template(Mcp4461Component)
|
11
|
+
)
|
12
|
+
|
13
|
+
Mcp4461WiperIdx = mcp4461_ns.enum("Mcp4461WiperIdx", is_class=True)
|
14
|
+
CHANNEL_OPTIONS = {
|
15
|
+
"A": Mcp4461WiperIdx.MCP4461_WIPER_0,
|
16
|
+
"B": Mcp4461WiperIdx.MCP4461_WIPER_1,
|
17
|
+
"C": Mcp4461WiperIdx.MCP4461_WIPER_2,
|
18
|
+
"D": Mcp4461WiperIdx.MCP4461_WIPER_3,
|
19
|
+
"E": Mcp4461WiperIdx.MCP4461_WIPER_4,
|
20
|
+
"F": Mcp4461WiperIdx.MCP4461_WIPER_5,
|
21
|
+
"G": Mcp4461WiperIdx.MCP4461_WIPER_6,
|
22
|
+
"H": Mcp4461WiperIdx.MCP4461_WIPER_7,
|
23
|
+
}
|
24
|
+
|
25
|
+
CONF_TERMINAL_A = "terminal_a"
|
26
|
+
CONF_TERMINAL_B = "terminal_b"
|
27
|
+
CONF_TERMINAL_W = "terminal_w"
|
28
|
+
|
29
|
+
CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
|
30
|
+
{
|
31
|
+
cv.Required(CONF_ID): cv.declare_id(Mcp4461Wiper),
|
32
|
+
cv.GenerateID(CONF_MCP4461_ID): cv.use_id(Mcp4461Component),
|
33
|
+
cv.Required(CONF_CHANNEL): cv.enum(CHANNEL_OPTIONS, upper=True),
|
34
|
+
cv.Optional(CONF_TERMINAL_A, default=True): cv.boolean,
|
35
|
+
cv.Optional(CONF_TERMINAL_B, default=True): cv.boolean,
|
36
|
+
cv.Optional(CONF_TERMINAL_W, default=True): cv.boolean,
|
37
|
+
cv.Optional(CONF_INITIAL_VALUE): cv.float_range(min=0.0, max=1.0),
|
38
|
+
}
|
39
|
+
)
|
40
|
+
|
41
|
+
|
42
|
+
async def to_code(config):
|
43
|
+
parent = await cg.get_variable(config[CONF_MCP4461_ID])
|
44
|
+
var = cg.new_Pvariable(
|
45
|
+
config[CONF_ID],
|
46
|
+
parent,
|
47
|
+
config[CONF_CHANNEL],
|
48
|
+
)
|
49
|
+
if not config[CONF_TERMINAL_A]:
|
50
|
+
cg.add(parent.initialize_terminal_disabled(config[CONF_CHANNEL], "a"))
|
51
|
+
if not config[CONF_TERMINAL_B]:
|
52
|
+
cg.add(parent.initialize_terminal_disabled(config[CONF_CHANNEL], "b"))
|
53
|
+
if not config[CONF_TERMINAL_W]:
|
54
|
+
cg.add(parent.initialize_terminal_disabled(config[CONF_CHANNEL], "w"))
|
55
|
+
if CONF_INITIAL_VALUE in config:
|
56
|
+
cg.add(
|
57
|
+
parent.set_initial_value(config[CONF_CHANNEL], config[CONF_INITIAL_VALUE])
|
58
|
+
)
|
59
|
+
await output.register_output(var, config)
|
60
|
+
await cg.register_parented(var, config[CONF_MCP4461_ID])
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#include "mcp4461_output.h"
|
2
|
+
#include <cmath>
|
3
|
+
|
4
|
+
#include "esphome/core/helpers.h"
|
5
|
+
#include "esphome/core/log.h"
|
6
|
+
|
7
|
+
namespace esphome {
|
8
|
+
namespace mcp4461 {
|
9
|
+
|
10
|
+
static const char *const TAG = "mcp4461.output";
|
11
|
+
|
12
|
+
// public set_level function
|
13
|
+
void Mcp4461Wiper::set_level(float state) {
|
14
|
+
if (!std::isfinite(state)) {
|
15
|
+
ESP_LOGW(TAG, "Finite state state value is required.");
|
16
|
+
return;
|
17
|
+
}
|
18
|
+
state = clamp(state, 0.0f, 1.0f);
|
19
|
+
if (this->is_inverted()) {
|
20
|
+
state = 1.0f - state;
|
21
|
+
}
|
22
|
+
this->write_state(state);
|
23
|
+
}
|
24
|
+
|
25
|
+
// floats from other components (like light etc.) are passed as "percentage floats"
|
26
|
+
// this function converts them to the 0 - 256 range used by the MCP4461
|
27
|
+
void Mcp4461Wiper::write_state(float state) {
|
28
|
+
if (this->parent_->set_wiper_level_(this->wiper_, static_cast<uint16_t>(std::roundf(state * 256)))) {
|
29
|
+
this->state_ = state;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
float Mcp4461Wiper::read_state() { return (static_cast<float>(this->parent_->get_wiper_level_(this->wiper_)) / 256.0); }
|
34
|
+
|
35
|
+
float Mcp4461Wiper::update_state() {
|
36
|
+
this->state_ = this->read_state();
|
37
|
+
return this->state_;
|
38
|
+
}
|
39
|
+
|
40
|
+
void Mcp4461Wiper::set_state(bool state) {
|
41
|
+
if (state) {
|
42
|
+
this->turn_on();
|
43
|
+
} else {
|
44
|
+
this->turn_off();
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
void Mcp4461Wiper::turn_on() { this->parent_->enable_wiper_(this->wiper_); }
|
49
|
+
|
50
|
+
void Mcp4461Wiper::turn_off() { this->parent_->disable_wiper_(this->wiper_); }
|
51
|
+
|
52
|
+
void Mcp4461Wiper::increase_wiper() {
|
53
|
+
if (this->parent_->increase_wiper_(this->wiper_)) {
|
54
|
+
this->state_ = this->update_state();
|
55
|
+
ESP_LOGV(TAG, "Increased wiper %u to %u", static_cast<uint8_t>(this->wiper_),
|
56
|
+
static_cast<uint16_t>(std::roundf(this->state_ * 256)));
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
void Mcp4461Wiper::decrease_wiper() {
|
61
|
+
if (this->parent_->decrease_wiper_(this->wiper_)) {
|
62
|
+
this->state_ = this->update_state();
|
63
|
+
ESP_LOGV(TAG, "Decreased wiper %u to %u", static_cast<uint8_t>(this->wiper_),
|
64
|
+
static_cast<uint16_t>(std::roundf(this->state_ * 256)));
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
void Mcp4461Wiper::enable_terminal(char terminal) { this->parent_->enable_terminal_(this->wiper_, terminal); }
|
69
|
+
|
70
|
+
void Mcp4461Wiper::disable_terminal(char terminal) { this->parent_->disable_terminal_(this->wiper_, terminal); }
|
71
|
+
|
72
|
+
} // namespace mcp4461
|
73
|
+
} // namespace esphome
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "../mcp4461.h"
|
4
|
+
#include "esphome/core/component.h"
|
5
|
+
#include "esphome/components/output/float_output.h"
|
6
|
+
#include "esphome/components/i2c/i2c.h"
|
7
|
+
|
8
|
+
namespace esphome {
|
9
|
+
namespace mcp4461 {
|
10
|
+
|
11
|
+
class Mcp4461Wiper : public output::FloatOutput, public Parented<Mcp4461Component> {
|
12
|
+
public:
|
13
|
+
Mcp4461Wiper(Mcp4461Component *parent, Mcp4461WiperIdx wiper) : parent_(parent), wiper_(wiper) {}
|
14
|
+
/// @brief Set level of wiper
|
15
|
+
/// @param[in] state - The desired float level in range 0-1.0
|
16
|
+
void set_level(float state);
|
17
|
+
/// @brief Enables/Disables current output using bool parameter
|
18
|
+
/// @param[in] state boolean var representing desired state (true=ON, false=OFF)
|
19
|
+
void set_state(bool state) override;
|
20
|
+
/// @brief Enables current output
|
21
|
+
void turn_on() override;
|
22
|
+
/// @brief Disables current output
|
23
|
+
void turn_off() override;
|
24
|
+
/// @brief Read current device wiper state without updating internal output state
|
25
|
+
/// @return float - current device state as float in range 0 - 1.0
|
26
|
+
float read_state();
|
27
|
+
/// @brief Update current output state using device wiper state
|
28
|
+
/// @return float - current updated output state as float in range 0 - 1.0
|
29
|
+
float update_state();
|
30
|
+
/// @brief Increase wiper by 1 tap
|
31
|
+
void increase_wiper();
|
32
|
+
/// @brief Decrease wiper by 1 tap
|
33
|
+
void decrease_wiper();
|
34
|
+
/// @brief Enable given terminal
|
35
|
+
/// @param[in] terminal single char parameter defining desired terminal to enable, one of { 'a', 'b', 'w', 'h' }
|
36
|
+
void enable_terminal(char terminal);
|
37
|
+
/// @brief Disable given terminal
|
38
|
+
/// @param[in] terminal single char parameter defining desired terminal to disable, one of { 'a', 'b', 'w', 'h' }
|
39
|
+
void disable_terminal(char terminal);
|
40
|
+
|
41
|
+
protected:
|
42
|
+
void write_state(float state) override;
|
43
|
+
Mcp4461Component *parent_;
|
44
|
+
Mcp4461WiperIdx wiper_;
|
45
|
+
float state_;
|
46
|
+
};
|
47
|
+
|
48
|
+
} // namespace mcp4461
|
49
|
+
} // namespace esphome
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import output
|
4
|
-
|
5
|
-
from
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_CHANNEL, CONF_GAIN, CONF_ID
|
5
|
+
|
6
|
+
from .. import CONF_MCP4728_ID, MCP4728Component, mcp4728_ns
|
6
7
|
|
7
8
|
DEPENDENCIES = ["mcp4728"]
|
8
9
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import esphome.config_validation as cv
|
2
1
|
import esphome.codegen as cg
|
3
|
-
from esphome.components import
|
2
|
+
from esphome.components import i2c, output
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
from esphome.const import CONF_ID
|
5
5
|
|
6
6
|
CODEOWNERS = ["@jesserockz"]
|
@@ -1,18 +1,18 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
1
|
from esphome import automation
|
4
2
|
from esphome.automation import maybe_simple_id
|
3
|
+
import esphome.codegen as cg
|
5
4
|
from esphome.components import sensor, uart
|
5
|
+
import esphome.config_validation as cv
|
6
6
|
from esphome.const import (
|
7
7
|
CONF_CO2,
|
8
8
|
CONF_ID,
|
9
9
|
CONF_TEMPERATURE,
|
10
|
-
DEVICE_CLASS_TEMPERATURE,
|
11
10
|
DEVICE_CLASS_CARBON_DIOXIDE,
|
11
|
+
DEVICE_CLASS_TEMPERATURE,
|
12
12
|
ICON_MOLECULE_CO2,
|
13
13
|
STATE_CLASS_MEASUREMENT,
|
14
|
-
UNIT_PARTS_PER_MILLION,
|
15
14
|
UNIT_CELSIUS,
|
15
|
+
UNIT_PARTS_PER_MILLION,
|
16
16
|
)
|
17
17
|
|
18
18
|
DEPENDENCIES = ["uart"]
|
@@ -1,10 +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 uart
|
5
|
-
|
6
|
-
|
7
|
-
)
|
4
|
+
import esphome.config_validation as cv
|
5
|
+
from esphome.const import CONF_ID
|
8
6
|
|
9
7
|
CODEOWNERS = ["@jorre05"]
|
10
8
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import button
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
|
5
5
|
from .. import (
|
6
|
-
MicroNova,
|
7
|
-
MicroNovaFunctions,
|
8
|
-
CONF_MICRONOVA_ID,
|
9
|
-
CONF_MEMORY_LOCATION,
|
10
6
|
CONF_MEMORY_ADDRESS,
|
7
|
+
CONF_MEMORY_LOCATION,
|
8
|
+
CONF_MICRONOVA_ID,
|
11
9
|
MICRONOVA_LISTENER_SCHEMA,
|
10
|
+
MicroNova,
|
11
|
+
MicroNovaFunctions,
|
12
12
|
micronova_ns,
|
13
13
|
)
|
14
14
|
|
@@ -1,19 +1,15 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import number
|
4
|
-
|
5
|
-
|
6
|
-
UNIT_CELSIUS,
|
7
|
-
CONF_STEP,
|
8
|
-
)
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import CONF_STEP, DEVICE_CLASS_TEMPERATURE, UNIT_CELSIUS
|
9
5
|
|
10
6
|
from .. import (
|
11
|
-
MicroNova,
|
12
|
-
MicroNovaFunctions,
|
13
|
-
CONF_MICRONOVA_ID,
|
14
|
-
CONF_MEMORY_LOCATION,
|
15
7
|
CONF_MEMORY_ADDRESS,
|
8
|
+
CONF_MEMORY_LOCATION,
|
9
|
+
CONF_MICRONOVA_ID,
|
16
10
|
MICRONOVA_LISTENER_SCHEMA,
|
11
|
+
MicroNova,
|
12
|
+
MicroNovaFunctions,
|
17
13
|
micronova_ns,
|
18
14
|
)
|
19
15
|
|
@@ -1,21 +1,21 @@
|
|
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
|
-
DEVICE_CLASS_TEMPERATURE,
|
6
5
|
DEVICE_CLASS_PRESSURE,
|
6
|
+
DEVICE_CLASS_TEMPERATURE,
|
7
7
|
STATE_CLASS_MEASUREMENT,
|
8
8
|
UNIT_CELSIUS,
|
9
9
|
UNIT_REVOLUTIONS_PER_MINUTE,
|
10
10
|
)
|
11
11
|
|
12
12
|
from .. import (
|
13
|
-
MicroNova,
|
14
|
-
MicroNovaFunctions,
|
15
|
-
CONF_MICRONOVA_ID,
|
16
|
-
CONF_MEMORY_LOCATION,
|
17
13
|
CONF_MEMORY_ADDRESS,
|
14
|
+
CONF_MEMORY_LOCATION,
|
15
|
+
CONF_MICRONOVA_ID,
|
18
16
|
MICRONOVA_LISTENER_SCHEMA,
|
17
|
+
MicroNova,
|
18
|
+
MicroNovaFunctions,
|
19
19
|
micronova_ns,
|
20
20
|
)
|
21
21
|
|
@@ -1,17 +1,15 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import switch
|
4
|
-
|
5
|
-
|
6
|
-
)
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import ICON_POWER
|
7
5
|
|
8
6
|
from .. import (
|
9
|
-
MicroNova,
|
10
|
-
MicroNovaFunctions,
|
11
|
-
CONF_MICRONOVA_ID,
|
12
|
-
CONF_MEMORY_LOCATION,
|
13
7
|
CONF_MEMORY_ADDRESS,
|
8
|
+
CONF_MEMORY_LOCATION,
|
9
|
+
CONF_MICRONOVA_ID,
|
14
10
|
MICRONOVA_LISTENER_SCHEMA,
|
11
|
+
MicroNova,
|
12
|
+
MicroNovaFunctions,
|
15
13
|
micronova_ns,
|
16
14
|
)
|
17
15
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
|
-
import esphome.config_validation as cv
|
3
2
|
from esphome.components import text_sensor
|
3
|
+
import esphome.config_validation as cv
|
4
4
|
|
5
5
|
from .. import (
|
6
|
-
MicroNova,
|
7
|
-
MicroNovaFunctions,
|
8
|
-
CONF_MICRONOVA_ID,
|
9
|
-
CONF_MEMORY_LOCATION,
|
10
6
|
CONF_MEMORY_ADDRESS,
|
7
|
+
CONF_MEMORY_LOCATION,
|
8
|
+
CONF_MICRONOVA_ID,
|
11
9
|
MICRONOVA_LISTENER_SCHEMA,
|
10
|
+
MicroNova,
|
11
|
+
MicroNovaFunctions,
|
12
12
|
micronova_ns,
|
13
13
|
)
|
14
14
|
|
@@ -1,13 +1,11 @@
|
|
1
1
|
from esphome import automation
|
2
|
-
import esphome.config_validation as cv
|
3
|
-
import esphome.codegen as cg
|
4
|
-
|
5
2
|
from esphome.automation import maybe_simple_id
|
3
|
+
import esphome.codegen as cg
|
4
|
+
import esphome.config_validation as cv
|
6
5
|
from esphome.const import CONF_ID, CONF_TRIGGER_ID
|
7
6
|
from esphome.core import CORE
|
8
7
|
from esphome.coroutine import coroutine_with_priority
|
9
8
|
|
10
|
-
|
11
9
|
CODEOWNERS = ["@jesserockz"]
|
12
10
|
|
13
11
|
IS_PLATFORM_COMPONENT = True
|
@@ -1,9 +1,9 @@
|
|
1
|
-
from esphome.core import coroutine
|
2
1
|
from esphome import automation
|
3
|
-
|
2
|
+
import esphome.codegen as cg
|
3
|
+
from esphome.components import climate, remote_transmitter, sensor, uart
|
4
|
+
from esphome.components.climate import ClimateMode, ClimatePreset, ClimateSwingMode
|
4
5
|
from esphome.components.remote_base import CONF_TRANSMITTER_ID
|
5
6
|
import esphome.config_validation as cv
|
6
|
-
import esphome.codegen as cg
|
7
7
|
from esphome.const import (
|
8
8
|
CONF_AUTOCONF,
|
9
9
|
CONF_BEEPER,
|
@@ -16,12 +16,12 @@ from esphome.const import (
|
|
16
16
|
CONF_SUPPORTED_MODES,
|
17
17
|
CONF_SUPPORTED_PRESETS,
|
18
18
|
CONF_SUPPORTED_SWING_MODES,
|
19
|
-
CONF_TIMEOUT,
|
20
19
|
CONF_TEMPERATURE,
|
20
|
+
CONF_TIMEOUT,
|
21
21
|
CONF_USE_FAHRENHEIT,
|
22
|
+
DEVICE_CLASS_HUMIDITY,
|
22
23
|
DEVICE_CLASS_POWER,
|
23
24
|
DEVICE_CLASS_TEMPERATURE,
|
24
|
-
DEVICE_CLASS_HUMIDITY,
|
25
25
|
ICON_POWER,
|
26
26
|
ICON_THERMOMETER,
|
27
27
|
ICON_WATER_PERCENT,
|
@@ -30,11 +30,7 @@ from esphome.const import (
|
|
30
30
|
UNIT_PERCENT,
|
31
31
|
UNIT_WATT,
|
32
32
|
)
|
33
|
-
from esphome.
|
34
|
-
ClimateMode,
|
35
|
-
ClimatePreset,
|
36
|
-
ClimateSwingMode,
|
37
|
-
)
|
33
|
+
from esphome.core import coroutine
|
38
34
|
|
39
35
|
CODEOWNERS = ["@dudanov"]
|
40
36
|
DEPENDENCIES = ["climate", "uart"]
|