esphome 2025.5.1__py3-none-any.whl → 2025.6.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 +20 -14
- esphome/components/a4988/a4988.cpp +1 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +6 -4
- esphome/components/ac_dimmer/ac_dimmer.cpp +4 -2
- esphome/components/adc/adc_sensor_esp32.cpp +5 -3
- esphome/components/adc/adc_sensor_esp8266.cpp +5 -3
- esphome/components/adc/adc_sensor_libretiny.cpp +5 -3
- esphome/components/adc/adc_sensor_rp2040.cpp +5 -3
- esphome/components/adc128s102/adc128s102.cpp +1 -1
- esphome/components/ade7880/ade7880.cpp +28 -17
- esphome/components/ade7953_base/ade7953_base.cpp +12 -9
- esphome/components/ade7953_i2c/ade7953_i2c.cpp +1 -1
- esphome/components/ade7953_spi/ade7953_spi.cpp +1 -1
- esphome/components/ads1115/ads1115.cpp +3 -5
- esphome/components/ads1118/ads1118.cpp +2 -1
- esphome/components/ags10/ags10.cpp +3 -2
- esphome/components/aht10/aht10.cpp +27 -29
- esphome/components/aic3204/aic3204.cpp +2 -2
- esphome/components/alarm_control_panel/__init__.py +1 -0
- esphome/components/am2315c/am2315c.cpp +2 -2
- esphome/components/am2320/am2320.cpp +2 -2
- esphome/components/am43/am43_base.h +1 -1
- esphome/components/am43/cover/am43_cover.cpp +4 -2
- esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +4 -2
- esphome/components/apds9306/apds9306.cpp +8 -5
- esphome/components/apds9960/apds9960.cpp +2 -2
- esphome/components/api/__init__.py +5 -0
- esphome/components/api/api_connection.cpp +753 -379
- esphome/components/api/api_connection.h +341 -283
- esphome/components/api/api_frame_helper.cpp +349 -344
- esphome/components/api/api_frame_helper.h +121 -94
- esphome/components/api/api_pb2.cpp +5 -0
- esphome/components/api/api_pb2.h +703 -227
- esphome/components/api/api_pb2_service.cpp +12 -688
- esphome/components/api/api_pb2_service.h +53 -207
- esphome/components/api/api_server.cpp +71 -29
- esphome/components/api/api_server.h +9 -0
- esphome/components/api/client.py +5 -4
- esphome/components/api/homeassistant_service.h +1 -1
- esphome/components/api/list_entities.cpp +1 -1
- esphome/components/api/proto.cpp +1 -0
- esphome/components/api/proto.h +5 -4
- esphome/components/api/subscribe_state.cpp +8 -16
- esphome/components/as3935/as3935.cpp +3 -3
- esphome/components/as5600/as5600.cpp +9 -7
- esphome/components/as7341/as7341.cpp +7 -5
- esphome/components/at581x/at581x.cpp +13 -10
- esphome/components/atm90e26/atm90e26.cpp +2 -2
- esphome/components/atm90e32/atm90e32.cpp +3 -3
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +5 -3
- esphome/components/bang_bang/bang_bang_climate.cpp +8 -5
- esphome/components/bedjet/bedjet_hub.cpp +6 -4
- esphome/components/beken_spi_led_strip/led_strip.cpp +11 -7
- esphome/components/bh1750/bh1750.cpp +2 -2
- esphome/components/binary_sensor/__init__.py +1 -0
- esphome/components/binary_sensor/automation.cpp +1 -2
- esphome/components/bl0906/bl0906.cpp +1 -1
- esphome/components/bl0942/bl0942.cpp +11 -8
- esphome/components/bl0942/sensor.py +1 -1
- esphome/components/ble_client/__init__.py +5 -1
- esphome/components/ble_client/output/ble_binary_output.cpp +6 -3
- esphome/components/ble_client/sensor/ble_sensor.cpp +9 -6
- esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +8 -5
- esphome/components/bluetooth_proxy/__init__.py +5 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -5
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +18 -16
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +1 -1
- esphome/components/bme280_base/bme280_base.cpp +5 -6
- esphome/components/bme680/bme680.cpp +3 -3
- esphome/components/bme680/sensor.py +2 -2
- esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
- esphome/components/bme680_bsec/sensor.py +7 -3
- esphome/components/bme68x_bsec2/__init__.py +6 -5
- esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
- esphome/components/bme68x_bsec2/sensor.py +4 -4
- esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
- esphome/components/bmi160/bmi160.cpp +11 -11
- esphome/components/bmp085/bmp085.cpp +2 -2
- esphome/components/bmp280_base/bmp280_base.cpp +3 -3
- esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
- esphome/components/bmp581/bmp581.cpp +33 -27
- esphome/components/bp1658cj/bp1658cj.cpp +5 -3
- esphome/components/bp5758d/bp5758d.cpp +1 -1
- esphome/components/button/__init__.py +1 -0
- esphome/components/canbus/canbus.cpp +1 -1
- esphome/components/cap1188/cap1188.cpp +6 -4
- esphome/components/captive_portal/captive_portal.cpp +1 -1
- esphome/components/ccs811/ccs811.cpp +3 -2
- esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
- esphome/components/ch422g/ch422g.cpp +2 -2
- esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
- esphome/components/climate/__init__.py +1 -0
- esphome/components/climate/climate.cpp +12 -7
- esphome/components/climate/climate.h +1 -1
- esphome/components/climate_ir/climate_ir.cpp +7 -4
- esphome/components/cm1106/__init__.py +1 -0
- esphome/components/cm1106/cm1106.cpp +112 -0
- esphome/components/cm1106/cm1106.h +40 -0
- esphome/components/cm1106/sensor.py +72 -0
- esphome/components/const/__init__.py +1 -0
- esphome/components/cover/__init__.py +1 -0
- esphome/components/cs5460a/cs5460a.cpp +16 -11
- esphome/components/cse7761/cse7761.cpp +2 -2
- esphome/components/cse7766/cse7766.cpp +0 -5
- esphome/components/cse7766/cse7766.h +5 -1
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
- esphome/components/current_based/current_based_cover.cpp +4 -2
- esphome/components/dac7678/dac7678_output.cpp +4 -4
- esphome/components/dallas_temp/dallas_temp.cpp +2 -3
- esphome/components/daly_bms/daly_bms.cpp +2 -1
- esphome/components/dashboard_import/__init__.py +1 -2
- esphome/components/datetime/__init__.py +3 -1
- esphome/components/datetime/date_entity.cpp +5 -5
- esphome/components/datetime/datetime_base.h +0 -5
- esphome/components/datetime/datetime_entity.cpp +8 -8
- esphome/components/datetime/time_entity.cpp +4 -4
- esphome/components/debug/debug_component.cpp +1 -5
- esphome/components/debug/debug_component.h +1 -1
- esphome/components/debug/debug_esp32.cpp +4 -2
- esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
- esphome/components/demo/__init__.py +206 -0
- esphome/components/demo/demo_alarm_control_panel.h +65 -0
- esphome/components/demo/demo_button.h +15 -0
- esphome/components/demo/demo_date.h +34 -0
- esphome/components/demo/demo_datetime.h +40 -0
- esphome/components/demo/demo_lock.h +17 -0
- esphome/components/demo/demo_select.h +15 -0
- esphome/components/demo/demo_text.h +18 -0
- esphome/components/demo/demo_time.h +34 -0
- esphome/components/demo/demo_valve.h +54 -0
- esphome/components/dfrobot_sen0395/commands.cpp +3 -3
- esphome/components/dht/dht.cpp +29 -50
- esphome/components/dht12/dht12.cpp +2 -2
- esphome/components/display/display.h +5 -3
- esphome/components/dps310/dps310.cpp +7 -5
- esphome/components/ds1307/ds1307.cpp +2 -2
- esphome/components/dsmr/dsmr.cpp +5 -3
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
- esphome/components/duty_time/duty_time_sensor.cpp +5 -3
- esphome/components/ee895/ee895.cpp +3 -3
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
- esphome/components/emc2101/emc2101.cpp +11 -9
- esphome/components/ens160_base/ens160_base.cpp +2 -2
- esphome/components/ens210/ens210.cpp +2 -2
- esphome/components/es7210/es7210.cpp +6 -4
- esphome/components/es7243e/es7243e.cpp +1 -1
- esphome/components/es8156/es8156.cpp +1 -1
- esphome/components/es8311/es8311.cpp +8 -6
- esphome/components/es8388/__init__.py +0 -0
- esphome/components/es8388/audio_dac.py +26 -0
- esphome/components/es8388/es8388.cpp +289 -0
- esphome/components/es8388/es8388.h +81 -0
- esphome/components/es8388/es8388_const.h +83 -0
- esphome/components/es8388/select/__init__.py +47 -0
- esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
- esphome/components/es8388/select/adc_input_mic_select.h +15 -0
- esphome/components/es8388/select/dac_output_select.cpp +12 -0
- esphome/components/es8388/select/dac_output_select.h +15 -0
- esphome/components/esp32/__init__.py +118 -23
- esphome/components/esp32/boards.py +208 -125
- esphome/components/esp32/const.py +6 -0
- esphome/components/esp32/gpio.py +14 -1
- esphome/components/esp32/gpio_esp32_c5.py +45 -0
- esphome/components/esp32/gpio_esp32_p4.py +43 -0
- esphome/components/esp32/preferences.cpp +7 -7
- esphome/components/esp32_ble/__init__.py +115 -0
- esphome/components/esp32_ble/ble.cpp +101 -54
- esphome/components/esp32_ble/ble.h +24 -5
- esphome/components/esp32_ble/ble_event.h +172 -32
- esphome/components/esp32_ble/ble_scan_result.h +24 -0
- esphome/components/esp32_ble/ble_uuid.h +1 -1
- esphome/components/esp32_ble/queue.h +53 -27
- esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
- esphome/components/esp32_ble_server/__init__.py +4 -1
- esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
- esphome/components/esp32_ble_server/ble_server.h +0 -1
- esphome/components/esp32_ble_tracker/__init__.py +7 -2
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +107 -75
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +16 -16
- esphome/components/esp32_camera/esp32_camera.cpp +35 -27
- esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
- esphome/components/esp32_dac/esp32_dac.cpp +2 -2
- esphome/components/esp32_improv/__init__.py +5 -1
- esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
- esphome/components/esp32_rmt_led_strip/light.py +5 -1
- esphome/components/esp32_touch/esp32_touch.cpp +12 -8
- esphome/components/esp8266/gpio.cpp +10 -1
- esphome/components/esp8266/preferences.cpp +6 -6
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
- esphome/components/esp_ldo/__init__.py +91 -0
- esphome/components/esp_ldo/esp_ldo.cpp +43 -0
- esphome/components/esp_ldo/esp_ldo.h +43 -0
- esphome/components/esphome/ota/ota_esphome.cpp +15 -8
- esphome/components/ethernet/ethernet_component.cpp +38 -26
- esphome/components/ethernet/ethernet_component.h +1 -1
- esphome/components/event/__init__.py +1 -0
- esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
- esphome/components/ezo/ezo.cpp +1 -1
- esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
- esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
- esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
- esphome/components/fan/__init__.py +1 -0
- esphome/components/fan/fan.cpp +30 -19
- esphome/components/fastled_base/fastled_light.cpp +7 -5
- esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
- esphome/components/fs3000/fs3000.cpp +1 -1
- esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
- esphome/components/ft63x6/ft63x6.cpp +5 -3
- esphome/components/gcja5/gcja5.cpp +0 -12
- esphome/components/gcja5/gcja5.h +8 -3
- esphome/components/gdk101/gdk101.cpp +2 -2
- esphome/components/globals/globals_component.h +13 -10
- esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
- esphome/components/gp8403/gp8403.cpp +4 -2
- esphome/components/gp8403/output/gp8403_output.cpp +4 -2
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
- esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
- esphome/components/gpio/switch/gpio_switch.cpp +1 -1
- esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
- esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
- esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
- esphome/components/growatt_solar/growatt_solar.cpp +6 -3
- esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
- esphome/components/haier/haier_base.cpp +2 -2
- esphome/components/haier/hon_climate.cpp +13 -6
- esphome/components/havells_solar/havells_solar.cpp +5 -2
- esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
- esphome/components/hdc1080/hdc1080.cpp +2 -2
- esphome/components/he60r/he60r.cpp +4 -2
- esphome/components/hlw8012/hlw8012.cpp +6 -4
- esphome/components/hm3301/hm3301.cpp +2 -2
- esphome/components/hmc5883l/hmc5883l.cpp +2 -2
- esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
- esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
- esphome/components/honeywellabp/honeywellabp.cpp +4 -2
- esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
- esphome/components/hte501/hte501.cpp +3 -2
- esphome/components/http_request/__init__.py +2 -2
- esphome/components/http_request/http_request.cpp +7 -5
- esphome/components/http_request/http_request_idf.cpp +4 -2
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/htu21d/htu21d.cpp +2 -2
- esphome/components/htu31d/htu31d.cpp +2 -2
- esphome/components/hx711/hx711.cpp +2 -2
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
- esphome/components/hyt271/hyt271.cpp +2 -2
- esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
- esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
- esphome/components/i2s_audio/__init__.py +2 -0
- esphome/components/i2s_audio/i2s_audio.cpp +3 -4
- esphome/components/i2s_audio/i2s_audio.h +1 -1
- esphome/components/i2s_audio/media_player/__init__.py +1 -1
- esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +85 -77
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +6 -0
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +29 -11
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +1 -0
- esphome/components/iaqcore/iaqcore.cpp +3 -3
- esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
- esphome/components/ili9xxx/ili9xxx_display.h +1 -1
- esphome/components/image/image.cpp +1 -0
- esphome/components/ina219/ina219.cpp +2 -2
- esphome/components/ina226/ina226.cpp +8 -5
- esphome/components/ina260/ina260.cpp +1 -1
- esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
- esphome/components/ina3221/ina3221.cpp +2 -2
- esphome/components/inkplate6/display.py +12 -2
- esphome/components/inkplate6/inkplate.cpp +13 -9
- esphome/components/inkplate6/inkplate.h +7 -6
- esphome/components/integration/integration_sensor.cpp +1 -1
- esphome/components/internal_temperature/internal_temperature.cpp +4 -4
- esphome/components/json/json_util.cpp +4 -5
- esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
- esphome/components/key_collector/key_collector.cpp +4 -2
- esphome/components/kmeteriso/kmeteriso.cpp +4 -4
- esphome/components/kuntze/kuntze.cpp +4 -2
- esphome/components/lc709203f/__init__.py +1 -0
- esphome/components/lc709203f/lc709203f.cpp +299 -0
- esphome/components/lc709203f/lc709203f.h +55 -0
- esphome/components/lc709203f/sensor.py +93 -0
- esphome/components/lcd_base/lcd_display.cpp +2 -2
- esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
- esphome/components/lcd_menu/lcd_menu.cpp +6 -4
- esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
- esphome/components/ld2410/ld2410.cpp +6 -7
- esphome/components/ld2420/ld2420.cpp +9 -7
- esphome/components/ld2450/ld2450.cpp +6 -4
- esphome/components/ld2450/sensor.py +2 -2
- esphome/components/ledc/ledc_output.cpp +32 -28
- esphome/components/libretiny/const.py +1 -1
- esphome/components/libretiny/preferences.cpp +6 -7
- esphome/components/light/__init__.py +2 -1
- esphome/components/light/esp_hsv_color.h +1 -1
- esphome/components/light/light_state.cpp +9 -5
- esphome/components/light/light_state.h +15 -15
- esphome/components/light/light_transformer.h +1 -1
- esphome/components/lightwaverf/LwTx.cpp +1 -1
- esphome/components/lightwaverf/lightwaverf.cpp +1 -1
- esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
- esphome/components/lock/__init__.py +1 -0
- esphome/components/lock/lock.h +1 -1
- esphome/components/logger/__init__.py +6 -0
- esphome/components/logger/logger.cpp +11 -20
- esphome/components/logger/logger.h +5 -6
- esphome/components/logger/logger_esp32.cpp +5 -5
- esphome/components/ltr390/ltr390.cpp +8 -5
- esphome/components/ltr501/ltr501.cpp +19 -14
- esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
- esphome/components/lvgl/__init__.py +2 -2
- esphome/components/lvgl/automation.py +5 -4
- esphome/components/lvgl/defines.py +0 -2
- esphome/components/lvgl/lv_validation.py +1 -3
- esphome/components/lvgl/lvcode.py +7 -8
- esphome/components/lvgl/lvgl_esphome.cpp +26 -10
- esphome/components/lvgl/schemas.py +22 -23
- esphome/components/lvgl/trigger.py +8 -3
- esphome/components/lvgl/widgets/__init__.py +2 -2
- esphome/components/lvgl/widgets/canvas.py +9 -3
- esphome/components/lvgl/widgets/line.py +2 -1
- esphome/components/lvgl/widgets/tabview.py +7 -0
- esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
- esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
- esphome/components/max17043/max17043.cpp +2 -2
- esphome/components/max31855/max31855.cpp +2 -1
- esphome/components/max31856/max31856.cpp +9 -11
- esphome/components/max31865/max31865.cpp +6 -4
- esphome/components/max44009/max44009.cpp +2 -2
- esphome/components/max6675/max6675.cpp +1 -1
- esphome/components/max6956/max6956.cpp +5 -3
- esphome/components/max7219/max7219.cpp +8 -6
- esphome/components/max7219digit/automation.h +52 -0
- esphome/components/max7219digit/display.py +93 -1
- esphome/components/max7219digit/max7219digit.cpp +16 -13
- esphome/components/max9611/max9611.cpp +9 -6
- esphome/components/mcp23008/mcp23008.cpp +1 -1
- esphome/components/mcp23016/mcp23016.cpp +1 -1
- esphome/components/mcp23017/mcp23017.cpp +1 -1
- esphome/components/mcp23s08/mcp23s08.cpp +1 -1
- esphome/components/mcp23s17/mcp23s17.cpp +1 -1
- esphome/components/mcp3008/mcp3008.cpp +1 -1
- esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
- esphome/components/mcp3204/mcp3204.cpp +1 -1
- esphome/components/mcp4461/mcp4461.cpp +2 -2
- esphome/components/mcp4725/mcp4725.cpp +2 -2
- esphome/components/mcp4728/mcp4728.cpp +2 -2
- esphome/components/mcp9600/mcp9600.cpp +1 -1
- esphome/components/mcp9808/mcp9808.cpp +4 -4
- esphome/components/mdns/mdns_component.cpp +8 -2
- esphome/components/mdns/mdns_component.h +3 -1
- esphome/components/mdns/mdns_esp32.cpp +2 -2
- esphome/components/media_player/__init__.py +1 -0
- esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
- esphome/components/micro_wake_word/streaming_model.cpp +10 -6
- esphome/components/micronova/micronova.h +2 -2
- esphome/components/mics_4514/mics_4514.cpp +2 -2
- esphome/components/midea/air_conditioner.cpp +7 -5
- esphome/components/midea_ir/midea_ir.cpp +1 -1
- esphome/components/mipi_spi/mipi_spi.cpp +24 -15
- esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
- esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
- esphome/components/mlx90614/mlx90614.cpp +4 -3
- esphome/components/mmc5603/mmc5603.cpp +2 -2
- esphome/components/mmc5983/mmc5983.cpp +1 -1
- esphome/components/modbus/modbus.cpp +7 -5
- esphome/components/modbus_controller/modbus_controller.cpp +6 -4
- esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
- esphome/components/modbus_controller/switch/__init__.py +6 -2
- esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
- esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
- esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
- esphome/components/mpr121/mpr121.cpp +2 -2
- esphome/components/mpu6050/mpu6050.cpp +6 -6
- esphome/components/mpu6886/mpu6886.cpp +6 -6
- esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
- esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
- esphome/components/mqtt/mqtt_client.cpp +31 -24
- esphome/components/mqtt/mqtt_component.cpp +3 -3
- esphome/components/mqtt/mqtt_cover.cpp +8 -4
- esphome/components/mqtt/mqtt_fan.cpp +12 -6
- esphome/components/mqtt/mqtt_valve.cpp +4 -2
- esphome/components/ms5611/ms5611.cpp +2 -2
- esphome/components/ms8607/ms8607.cpp +2 -2
- esphome/components/msa3xx/msa3xx.cpp +16 -12
- esphome/components/my9231/my9231.cpp +7 -5
- esphome/components/nau7802/nau7802.cpp +6 -4
- esphome/components/neopixelbus/neopixelbus_light.h +2 -2
- esphome/components/network/ip_address.h +1 -1
- esphome/components/network/util.cpp +13 -0
- esphome/components/nextion/base_component.py +2 -0
- esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +3 -4
- esphome/components/nextion/display.py +34 -22
- esphome/components/nextion/nextion.cpp +182 -143
- esphome/components/nextion/nextion.h +36 -0
- esphome/components/nextion/nextion_commands.cpp +3 -3
- esphome/components/nextion/nextion_upload_arduino.cpp +69 -69
- esphome/components/nextion/nextion_upload_idf.cpp +79 -80
- esphome/components/nextion/sensor/nextion_sensor.cpp +5 -5
- esphome/components/nextion/switch/nextion_switch.cpp +2 -2
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +3 -3
- esphome/components/nfc/nci_message.h +1 -1
- esphome/components/nfc/ndef_record.h +1 -1
- esphome/components/nfc/ndef_record_text.h +1 -1
- esphome/components/nfc/ndef_record_uri.h +1 -1
- esphome/components/nfc/nfc.h +1 -1
- esphome/components/nfc/nfc_tag.h +1 -1
- esphome/components/noblex/noblex.cpp +1 -1
- esphome/components/npi19/npi19.cpp +5 -7
- esphome/components/number/__init__.py +11 -0
- esphome/components/number/number.cpp +1 -1
- esphome/components/number/number.h +0 -4
- esphome/components/online_image/__init__.py +13 -1
- esphome/components/online_image/online_image.cpp +26 -4
- esphome/components/online_image/online_image.h +21 -4
- esphome/components/opentherm/generate.py +3 -3
- esphome/components/opentherm/hub.cpp +11 -7
- esphome/components/opentherm/number/number.cpp +5 -3
- esphome/components/opentherm/opentherm.h +1 -1
- esphome/components/opentherm/schema.py +13 -13
- esphome/components/opentherm/validate.py +1 -1
- esphome/components/openthread/__init__.py +146 -0
- esphome/components/openthread/const.py +10 -0
- esphome/components/openthread/openthread.cpp +206 -0
- esphome/components/openthread/openthread.h +68 -0
- esphome/components/openthread/openthread_esp.cpp +164 -0
- esphome/components/openthread/tlv.py +58 -0
- esphome/components/openthread_info/__init__.py +0 -0
- esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
- esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
- esphome/components/openthread_info/text_sensor.py +105 -0
- esphome/components/output/float_output.cpp +1 -1
- esphome/components/output/switch/output_switch.cpp +1 -1
- esphome/components/packet_transport/packet_transport.cpp +6 -4
- esphome/components/pca6416a/pca6416a.cpp +2 -2
- esphome/components/pca9554/pca9554.cpp +6 -4
- esphome/components/pca9685/pca9685_output.cpp +12 -8
- esphome/components/pcd8544/pcd_8544.cpp +1 -1
- esphome/components/pcf85063/pcf85063.cpp +2 -2
- esphome/components/pcf8563/pcf8563.cpp +2 -2
- esphome/components/pcf8574/pcf8574.cpp +2 -2
- esphome/components/pid/pid_climate.cpp +8 -5
- esphome/components/pid/pid_climate.h +1 -1
- esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
- esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
- esphome/components/pipsolar/pipsolar.cpp +3 -3
- esphome/components/pm1006/pm1006.cpp +3 -7
- esphome/components/pm1006/pm1006.h +4 -1
- esphome/components/pm2005/pm2005.cpp +12 -13
- esphome/components/pm2005/sensor.py +1 -1
- esphome/components/pmsa003i/pmsa003i.cpp +2 -2
- esphome/components/pmsx003/pmsx003.cpp +0 -4
- esphome/components/pmsx003/pmsx003.h +5 -2
- esphome/components/pmwcs3/pmwcs3.cpp +9 -13
- esphome/components/pmwcs3/pmwcs3.h +0 -1
- esphome/components/pn532/pn532.cpp +7 -7
- esphome/components/pn532/pn532.h +1 -1
- esphome/components/pn532_spi/pn532_spi.cpp +1 -1
- esphome/components/pn7150/pn7150.cpp +4 -4
- esphome/components/pn7160/pn7160.cpp +4 -4
- esphome/components/power_supply/power_supply.cpp +6 -4
- esphome/components/power_supply/power_supply.h +1 -1
- esphome/components/prometheus/__init__.py +0 -1
- esphome/components/psram/__init__.py +59 -35
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
- esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
- esphome/components/pylontech/pylontech.cpp +2 -2
- esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
- esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
- esphome/components/pzemac/pzemac.cpp +4 -2
- esphome/components/pzemdc/pzemdc.cpp +4 -2
- esphome/components/qmc5883l/qmc5883l.cpp +2 -2
- esphome/components/qmp6988/qmp6988.cpp +2 -2
- esphome/components/qmp6988/qmp6988.h +1 -1
- esphome/components/qr_code/qr_code.cpp +5 -3
- esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
- esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
- esphome/components/rc522/rc522.cpp +5 -5
- esphome/components/rdm6300/rdm6300.cpp +1 -0
- esphome/components/remote_receiver/__init__.py +10 -2
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
- esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
- esphome/components/remote_transmitter/__init__.py +10 -2
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
- esphome/components/resistance/resistance_sensor.cpp +6 -3
- esphome/components/restart/button/restart_button.cpp +1 -1
- esphome/components/restart/switch/restart_switch.cpp +1 -1
- esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
- esphome/components/rp2040/__init__.py +7 -0
- esphome/components/rp2040/core.cpp +8 -1
- esphome/components/rp2040/gpio.cpp +26 -9
- esphome/components/rp2040/preferences.cpp +3 -3
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
- esphome/components/rp2040_pio_led_strip/light.py +1 -1
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
- esphome/components/rtttl/rtttl.cpp +11 -9
- esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
- esphome/components/safe_mode/safe_mode.cpp +9 -8
- esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
- esphome/components/scd30/scd30.cpp +11 -8
- esphome/components/scd4x/scd4x.cpp +12 -8
- esphome/components/sdl/display.py +40 -0
- esphome/components/sdl/sdl_esphome.cpp +2 -2
- esphome/components/sdl/sdl_esphome.h +8 -0
- esphome/components/sdm_meter/sdm_meter.cpp +5 -2
- esphome/components/sdp3x/sdp3x.cpp +11 -11
- esphome/components/sds011/sds011.cpp +5 -6
- esphome/components/sds011/sds011.h +4 -1
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
- esphome/components/selec_meter/selec_meter.cpp +5 -2
- esphome/components/select/__init__.py +1 -0
- esphome/components/select/select.cpp +1 -1
- esphome/components/select/select.h +0 -4
- esphome/components/sen0321/sen0321.cpp +2 -2
- esphome/components/sen21231/sen21231.cpp +1 -1
- esphome/components/sen5x/sen5x.cpp +10 -7
- esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
- esphome/components/sensirion_common/i2c_sensirion.h +1 -0
- esphome/components/sensor/__init__.py +11 -1
- esphome/components/sensor/filter.h +1 -1
- esphome/components/sensor/sensor.cpp +8 -4
- esphome/components/sensor/sensor.h +12 -11
- esphome/components/servo/servo.cpp +12 -9
- esphome/components/servo/servo.h +1 -1
- esphome/components/sfa30/sfa30.cpp +1 -1
- esphome/components/sgp30/sgp30.cpp +10 -8
- esphome/components/sgp4x/sgp4x.cpp +49 -61
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
- esphome/components/sht3xd/sht3xd.cpp +1 -1
- esphome/components/sht4x/sht4x.cpp +2 -2
- esphome/components/shtcx/shtcx.cpp +13 -16
- esphome/components/shutdown/button/shutdown_button.cpp +1 -1
- esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
- esphome/components/sim800l/sim800l.cpp +2 -2
- esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
- esphome/components/sm16716/sm16716.cpp +1 -1
- esphome/components/sm2135/sm2135.cpp +1 -1
- esphome/components/sm2235/sm2235.cpp +5 -3
- esphome/components/sm2335/sm2335.cpp +5 -3
- esphome/components/sml/sml.cpp +1 -1
- esphome/components/sn74hc165/sn74hc165.cpp +1 -2
- esphome/components/sn74hc595/sn74hc595.cpp +1 -2
- esphome/components/sntp/sntp_component.cpp +1 -1
- esphome/components/socket/__init__.py +2 -0
- esphome/components/socket/bsd_sockets_impl.cpp +51 -7
- esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
- esphome/components/socket/lwip_sockets_impl.cpp +51 -7
- esphome/components/socket/socket.cpp +31 -0
- esphome/components/socket/socket.h +27 -1
- esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
- esphome/components/sonoff_d1/sonoff_d1.h +2 -2
- esphome/components/sound_level/sound_level.cpp +4 -2
- esphome/components/speaker/media_player/__init__.py +3 -0
- esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
- esphome/components/speaker/media_player/speaker_media_player.h +6 -0
- esphome/components/spi/__init__.py +10 -2
- esphome/components/spi/spi.cpp +4 -4
- esphome/components/spi/spi_arduino.cpp +22 -9
- esphome/components/spi_device/spi_device.cpp +1 -2
- esphome/components/sprinkler/sprinkler.cpp +9 -6
- esphome/components/sps30/sps30.cpp +16 -15
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
- esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
- esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
- esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
- esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
- esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
- esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
- esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
- esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
- esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
- esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
- esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
- esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
- esphome/components/st7567_base/st7567_base.cpp +3 -3
- esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
- esphome/components/st7567_spi/st7567_spi.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +4 -2
- esphome/components/st7735/st7735.cpp +3 -3
- esphome/components/st7789v/st7789v.cpp +10 -7
- esphome/components/st7920/st7920.cpp +6 -4
- esphome/components/statsd/statsd.cpp +9 -5
- esphome/components/status_led/light/status_led_light.cpp +3 -3
- esphome/components/status_led/light/status_led_light.h +1 -1
- esphome/components/status_led/status_led.cpp +1 -1
- esphome/components/stepper/stepper.h +5 -3
- esphome/components/sts3x/sts3x.cpp +2 -2
- esphome/components/switch/__init__.py +1 -0
- esphome/components/switch/switch.cpp +18 -12
- esphome/components/switch/switch.h +14 -8
- esphome/components/sx1509/__init__.py +53 -20
- esphome/components/sx1509/sx1509.cpp +29 -5
- esphome/components/sx1509/sx1509.h +9 -1
- esphome/components/t6615/t6615.cpp +1 -0
- esphome/components/tc74/tc74.cpp +1 -1
- esphome/components/tca9548a/tca9548a.cpp +1 -1
- esphome/components/tca9555/tca9555.cpp +2 -2
- esphome/components/tcs34725/tcs34725.cpp +4 -4
- esphome/components/tee501/tee501.cpp +3 -2
- esphome/components/tem3200/tem3200.cpp +5 -6
- esphome/components/template/alarm_control_panel/__init__.py +6 -0
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +43 -12
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +4 -1
- esphome/components/template/cover/template_cover.cpp +1 -1
- esphome/components/template/select/template_select.cpp +6 -4
- esphome/components/template/text/template_text.cpp +2 -3
- esphome/components/template/valve/template_valve.cpp +5 -3
- esphome/components/text/__init__.py +10 -11
- esphome/components/text/text.cpp +1 -1
- esphome/components/text/text.h +0 -4
- esphome/components/text_sensor/__init__.py +1 -0
- esphome/components/text_sensor/text_sensor.cpp +8 -4
- esphome/components/text_sensor/text_sensor.h +6 -6
- esphome/components/thermostat/thermostat_climate.cpp +67 -43
- esphome/components/time/__init__.py +1 -2
- esphome/components/time_based/time_based_cover.cpp +4 -2
- esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
- esphome/components/tm1621/tm1621.cpp +3 -3
- esphome/components/tm1637/tm1637.cpp +9 -7
- esphome/components/tm1638/tm1638.cpp +7 -5
- esphome/components/tm1651/tm1651.cpp +2 -2
- esphome/components/tmp102/tmp102.cpp +1 -3
- esphome/components/tmp102/tmp102.h +0 -3
- esphome/components/tmp1075/tmp1075.cpp +12 -9
- esphome/components/tmp117/tmp117.cpp +2 -2
- esphome/components/tof10120/tof10120_sensor.cpp +2 -2
- esphome/components/tormatic/tormatic_cover.cpp +4 -2
- esphome/components/tsl2561/tsl2561.cpp +7 -5
- esphome/components/tsl2591/tsl2591.cpp +25 -27
- esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
- esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
- esphome/components/tuya/select/tuya_select.cpp +5 -3
- esphome/components/tx20/tx20.cpp +3 -3
- esphome/components/uart/__init__.py +4 -5
- esphome/components/uart/button/uart_button.cpp +1 -1
- esphome/components/uart/switch/uart_switch.cpp +2 -2
- esphome/components/uart/uart.cpp +2 -2
- esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
- esphome/components/uart/uart_component_esp8266.cpp +9 -7
- esphome/components/uart/uart_component_esp_idf.cpp +9 -7
- esphome/components/uart/uart_component_host.cpp +11 -8
- esphome/components/uart/uart_component_libretiny.cpp +8 -6
- esphome/components/uart/uart_component_rp2040.cpp +8 -6
- esphome/components/udp/udp_component.cpp +9 -5
- esphome/components/ufire_ec/ufire_ec.cpp +5 -3
- esphome/components/ufire_ise/ufire_ise.cpp +1 -1
- esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
- esphome/components/update/__init__.py +1 -0
- esphome/components/update/update_entity.cpp +1 -1
- esphome/components/update/update_entity.h +0 -3
- esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
- esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
- esphome/components/uptime/sensor/uptime_timestamp_sensor.cpp +1 -1
- esphome/components/usb_host/__init__.py +64 -0
- esphome/components/usb_host/usb_host.h +116 -0
- esphome/components/usb_host/usb_host_client.cpp +394 -0
- esphome/components/usb_host/usb_host_component.cpp +35 -0
- esphome/components/usb_uart/__init__.py +134 -0
- esphome/components/usb_uart/ch34x.cpp +80 -0
- esphome/components/usb_uart/cp210x.cpp +126 -0
- esphome/components/usb_uart/usb_uart.cpp +328 -0
- esphome/components/usb_uart/usb_uart.h +151 -0
- esphome/components/valve/__init__.py +1 -0
- esphome/components/veml3235/veml3235.cpp +13 -9
- esphome/components/veml7700/veml7700.cpp +10 -6
- esphome/components/voice_assistant/voice_assistant.cpp +7 -7
- esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
- esphome/components/web_server/server_index_v2.h +632 -630
- esphome/components/web_server/server_index_v3.h +411 -409
- esphome/components/web_server/web_server.cpp +5 -3
- esphome/components/web_server_base/web_server_base.cpp +1 -1
- esphome/components/web_server_idf/__init__.py +0 -2
- esphome/components/web_server_idf/utils.cpp +1 -1
- esphome/components/web_server_idf/web_server_idf.cpp +7 -3
- esphome/components/web_server_idf/web_server_idf.h +7 -0
- esphome/components/weikai/__init__.py +2 -0
- esphome/components/weikai/weikai.cpp +24 -22
- esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
- esphome/components/weikai_spi/weikai_spi.cpp +11 -6
- esphome/components/wiegand/wiegand.cpp +1 -1
- esphome/components/wifi/wifi_component.cpp +50 -37
- esphome/components/wifi/wifi_component.h +7 -4
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
- esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
- esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
- esphome/components/wireguard/wireguard.cpp +21 -21
- esphome/components/wl_134/text_sensor.py +1 -2
- esphome/components/wled/wled_light_effect.cpp +1 -1
- esphome/components/x9c/x9c.cpp +5 -3
- esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
- esphome/components/xl9535/xl9535.cpp +2 -2
- esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
- esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
- esphome/config.py +3 -2
- esphome/config_validation.py +46 -17
- esphome/const.py +10 -1
- esphome/core/__init__.py +37 -18
- esphome/core/application.cpp +197 -8
- esphome/core/application.h +116 -6
- esphome/core/component.cpp +36 -15
- esphome/core/component.h +43 -13
- esphome/core/config.py +12 -0
- esphome/core/defines.h +10 -2
- esphome/core/entity_base.cpp +4 -16
- esphome/core/entity_base.h +27 -13
- esphome/core/hal.h +5 -0
- esphome/core/helpers.cpp +1 -1
- esphome/core/helpers.h +5 -5
- esphome/core/log.h +2 -0
- esphome/core/log_const_en.h +4 -0
- esphome/core/scheduler.cpp +2 -2
- esphome/coroutine.py +3 -4
- esphome/cpp_generator.py +32 -32
- esphome/dashboard/core.py +2 -2
- esphome/dashboard/web_server.py +2 -2
- esphome/git.py +4 -4
- esphome/helpers.py +5 -6
- esphome/loader.py +8 -7
- esphome/log.py +7 -1
- esphome/platformio_api.py +2 -3
- esphome/storage_json.py +13 -5
- esphome/types.py +12 -13
- esphome/util.py +1 -2
- esphome/wizard.py +0 -16
- esphome/writer.py +5 -3
- esphome/yaml_util.py +6 -1
- esphome/zeroconf.py +1 -1
- {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/METADATA +12 -11
- {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/RECORD +753 -699
- {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/WHEEL +1 -1
- {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.1.dist-info → esphome-2025.6.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "esphome/core/component.h"
|
4
|
+
#include "esphome/components/sensor/sensor.h"
|
5
|
+
#include "esphome/components/i2c/i2c.h"
|
6
|
+
|
7
|
+
namespace esphome {
|
8
|
+
namespace lc709203f {
|
9
|
+
|
10
|
+
enum LC709203FState {
|
11
|
+
STATE_INIT,
|
12
|
+
STATE_RSOC,
|
13
|
+
STATE_TEMP_SETUP,
|
14
|
+
STATE_NORMAL,
|
15
|
+
};
|
16
|
+
|
17
|
+
/// Enum listing allowable voltage settings for the LC709203F.
|
18
|
+
enum LC709203FBatteryVoltage {
|
19
|
+
LC709203F_BATTERY_VOLTAGE_3_8 = 0x0000,
|
20
|
+
LC709203F_BATTERY_VOLTAGE_3_7 = 0x0001,
|
21
|
+
};
|
22
|
+
|
23
|
+
class Lc709203f : public sensor::Sensor, public PollingComponent, public i2c::I2CDevice {
|
24
|
+
public:
|
25
|
+
void setup() override;
|
26
|
+
void update() override;
|
27
|
+
void dump_config() override;
|
28
|
+
|
29
|
+
void set_pack_size(uint16_t pack_size);
|
30
|
+
void set_thermistor_b_constant(uint16_t b_constant);
|
31
|
+
void set_pack_voltage(LC709203FBatteryVoltage pack_voltage);
|
32
|
+
void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; }
|
33
|
+
void set_battery_remaining_sensor(sensor::Sensor *battery_remaining_sensor) {
|
34
|
+
battery_remaining_sensor_ = battery_remaining_sensor;
|
35
|
+
}
|
36
|
+
void set_temperature_sensor(sensor::Sensor *temperature_sensor) { temperature_sensor_ = temperature_sensor; }
|
37
|
+
|
38
|
+
private:
|
39
|
+
uint8_t get_register_(uint8_t register_to_read, uint16_t *register_value);
|
40
|
+
uint8_t set_register_(uint8_t register_to_set, uint16_t value_to_set);
|
41
|
+
uint8_t crc8_(uint8_t *byte_buffer, uint8_t length_of_crc);
|
42
|
+
|
43
|
+
protected:
|
44
|
+
sensor::Sensor *voltage_sensor_{nullptr};
|
45
|
+
sensor::Sensor *battery_remaining_sensor_{nullptr};
|
46
|
+
sensor::Sensor *temperature_sensor_{nullptr};
|
47
|
+
uint16_t pack_size_;
|
48
|
+
uint16_t apa_;
|
49
|
+
uint16_t b_constant_;
|
50
|
+
LC709203FState state_ = STATE_INIT;
|
51
|
+
uint16_t pack_voltage_;
|
52
|
+
};
|
53
|
+
|
54
|
+
} // namespace lc709203f
|
55
|
+
} // namespace esphome
|
@@ -0,0 +1,93 @@
|
|
1
|
+
import esphome.codegen as cg
|
2
|
+
from esphome.components import i2c, sensor
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import (
|
5
|
+
CONF_BATTERY_LEVEL,
|
6
|
+
CONF_BATTERY_VOLTAGE,
|
7
|
+
CONF_ID,
|
8
|
+
CONF_SIZE,
|
9
|
+
CONF_TEMPERATURE,
|
10
|
+
CONF_VOLTAGE,
|
11
|
+
DEVICE_CLASS_BATTERY,
|
12
|
+
DEVICE_CLASS_TEMPERATURE,
|
13
|
+
DEVICE_CLASS_VOLTAGE,
|
14
|
+
ENTITY_CATEGORY_DIAGNOSTIC,
|
15
|
+
STATE_CLASS_MEASUREMENT,
|
16
|
+
UNIT_CELSIUS,
|
17
|
+
UNIT_PERCENT,
|
18
|
+
UNIT_VOLT,
|
19
|
+
)
|
20
|
+
|
21
|
+
DEPENDENCIES = ["i2c"]
|
22
|
+
|
23
|
+
lc709203f_ns = cg.esphome_ns.namespace("lc709203f")
|
24
|
+
|
25
|
+
CONF_B_CONSTANT = "b_constant"
|
26
|
+
|
27
|
+
LC709203FBatteryVoltage = lc709203f_ns.enum("LC709203FBatteryVoltage")
|
28
|
+
BATTERY_VOLTAGE_OPTIONS = {
|
29
|
+
"3.7": LC709203FBatteryVoltage.LC709203F_BATTERY_VOLTAGE_3_7,
|
30
|
+
"3.8": LC709203FBatteryVoltage.LC709203F_BATTERY_VOLTAGE_3_8,
|
31
|
+
}
|
32
|
+
|
33
|
+
lc709203f = lc709203f_ns.class_("Lc709203f", cg.PollingComponent, i2c.I2CDevice)
|
34
|
+
|
35
|
+
CONFIG_SCHEMA = (
|
36
|
+
cv.Schema(
|
37
|
+
{
|
38
|
+
cv.GenerateID(): cv.declare_id(lc709203f),
|
39
|
+
cv.Optional(CONF_SIZE, default="500"): cv.int_range(100, 3000),
|
40
|
+
cv.Optional(CONF_VOLTAGE, default="3.7"): cv.enum(
|
41
|
+
BATTERY_VOLTAGE_OPTIONS, upper=True
|
42
|
+
),
|
43
|
+
cv.Optional(CONF_BATTERY_VOLTAGE): sensor.sensor_schema(
|
44
|
+
unit_of_measurement=UNIT_VOLT,
|
45
|
+
accuracy_decimals=3,
|
46
|
+
device_class=DEVICE_CLASS_VOLTAGE,
|
47
|
+
state_class=STATE_CLASS_MEASUREMENT,
|
48
|
+
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
49
|
+
),
|
50
|
+
cv.Optional(CONF_BATTERY_LEVEL): sensor.sensor_schema(
|
51
|
+
unit_of_measurement=UNIT_PERCENT,
|
52
|
+
accuracy_decimals=3,
|
53
|
+
device_class=DEVICE_CLASS_BATTERY,
|
54
|
+
state_class=STATE_CLASS_MEASUREMENT,
|
55
|
+
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
56
|
+
),
|
57
|
+
cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema(
|
58
|
+
unit_of_measurement=UNIT_CELSIUS,
|
59
|
+
accuracy_decimals=2,
|
60
|
+
device_class=DEVICE_CLASS_TEMPERATURE,
|
61
|
+
state_class=STATE_CLASS_MEASUREMENT,
|
62
|
+
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
63
|
+
).extend(
|
64
|
+
{
|
65
|
+
cv.Required(CONF_B_CONSTANT): cv.int_range(0, 0xFFFF),
|
66
|
+
}
|
67
|
+
),
|
68
|
+
}
|
69
|
+
)
|
70
|
+
.extend(cv.polling_component_schema("60s"))
|
71
|
+
.extend(i2c.i2c_device_schema(0x0B))
|
72
|
+
)
|
73
|
+
|
74
|
+
|
75
|
+
async def to_code(config):
|
76
|
+
var = cg.new_Pvariable(config[CONF_ID])
|
77
|
+
await cg.register_component(var, config)
|
78
|
+
await i2c.register_i2c_device(var, config)
|
79
|
+
cg.add(var.set_pack_size(config.get(CONF_SIZE)))
|
80
|
+
cg.add(var.set_pack_voltage(BATTERY_VOLTAGE_OPTIONS[config[CONF_VOLTAGE]]))
|
81
|
+
|
82
|
+
if voltage_config := config.get(CONF_BATTERY_VOLTAGE):
|
83
|
+
sens = await sensor.new_sensor(voltage_config)
|
84
|
+
cg.add(var.set_voltage_sensor(sens))
|
85
|
+
|
86
|
+
if level_config := config.get(CONF_BATTERY_LEVEL):
|
87
|
+
sens = await sensor.new_sensor(level_config)
|
88
|
+
cg.add(var.set_battery_remaining_sensor(sens))
|
89
|
+
|
90
|
+
if temp_config := config.get(CONF_TEMPERATURE):
|
91
|
+
sens = await sensor.new_sensor(temp_config)
|
92
|
+
cg.add(var.set_temperature_sensor(sens))
|
93
|
+
cg.add(var.set_thermistor_b_constant(temp_config[CONF_B_CONSTANT]))
|
@@ -7,7 +7,7 @@ namespace lcd_gpio {
|
|
7
7
|
static const char *const TAG = "lcd_gpio";
|
8
8
|
|
9
9
|
void GPIOLCDDisplay::setup() {
|
10
|
-
ESP_LOGCONFIG(TAG, "
|
10
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
11
11
|
this->rs_pin_->setup(); // OUTPUT
|
12
12
|
this->rs_pin_->digital_write(false);
|
13
13
|
if (this->rw_pin_ != nullptr) {
|
@@ -24,8 +24,10 @@ void GPIOLCDDisplay::setup() {
|
|
24
24
|
LCDDisplay::setup();
|
25
25
|
}
|
26
26
|
void GPIOLCDDisplay::dump_config() {
|
27
|
-
ESP_LOGCONFIG(TAG,
|
28
|
-
|
27
|
+
ESP_LOGCONFIG(TAG,
|
28
|
+
"GPIO LCD Display:\n"
|
29
|
+
" Columns: %u, Rows: %u",
|
30
|
+
this->columns_, this->rows_);
|
29
31
|
LOG_PIN(" RS Pin: ", this->rs_pin_);
|
30
32
|
LOG_PIN(" RW Pin: ", this->rw_pin_);
|
31
33
|
LOG_PIN(" Enable Pin: ", this->enable_pin_);
|
@@ -19,10 +19,12 @@ void LCDCharacterMenuComponent::setup() {
|
|
19
19
|
float LCDCharacterMenuComponent::get_setup_priority() const { return setup_priority::PROCESSOR - 1.0f; }
|
20
20
|
|
21
21
|
void LCDCharacterMenuComponent::dump_config() {
|
22
|
-
ESP_LOGCONFIG(TAG,
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
ESP_LOGCONFIG(TAG,
|
23
|
+
"LCD Menu\n"
|
24
|
+
" Columns: %u, Rows: %u\n"
|
25
|
+
" Mark characters: %02x, %02x, %02x, %02x",
|
26
|
+
this->columns_, this->rows_, this->mark_selected_, this->mark_editing_, this->mark_submenu_,
|
27
|
+
this->mark_back_);
|
26
28
|
if (this->is_failed()) {
|
27
29
|
ESP_LOGE(TAG, "The connected display failed, the menu is disabled!");
|
28
30
|
}
|
@@ -11,7 +11,7 @@ static const uint8_t LCD_DISPLAY_BACKLIGHT_ON = 0x08;
|
|
11
11
|
static const uint8_t LCD_DISPLAY_BACKLIGHT_OFF = 0x00;
|
12
12
|
|
13
13
|
void PCF8574LCDDisplay::setup() {
|
14
|
-
ESP_LOGCONFIG(TAG, "
|
14
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
15
15
|
this->backlight_value_ = LCD_DISPLAY_BACKLIGHT_ON;
|
16
16
|
if (!this->write_bytes(this->backlight_value_, nullptr, 0)) {
|
17
17
|
this->mark_failed();
|
@@ -21,12 +21,14 @@ void PCF8574LCDDisplay::setup() {
|
|
21
21
|
LCDDisplay::setup();
|
22
22
|
}
|
23
23
|
void PCF8574LCDDisplay::dump_config() {
|
24
|
-
ESP_LOGCONFIG(TAG,
|
25
|
-
|
24
|
+
ESP_LOGCONFIG(TAG,
|
25
|
+
"PCF8574 LCD Display:\n"
|
26
|
+
" Columns: %u, Rows: %u",
|
27
|
+
this->columns_, this->rows_);
|
26
28
|
LOG_I2C_DEVICE(this);
|
27
29
|
LOG_UPDATE_INTERVAL(this);
|
28
30
|
if (this->is_failed()) {
|
29
|
-
ESP_LOGE(TAG,
|
31
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
30
32
|
}
|
31
33
|
}
|
32
34
|
void PCF8574LCDDisplay::write_n_bits(uint8_t value, uint8_t n) {
|
@@ -72,17 +72,16 @@ void LD2410Component::dump_config() {
|
|
72
72
|
}
|
73
73
|
#endif
|
74
74
|
this->read_all_info();
|
75
|
-
ESP_LOGCONFIG(TAG,
|
76
|
-
|
77
|
-
|
75
|
+
ESP_LOGCONFIG(TAG,
|
76
|
+
" Throttle_ : %ums\n"
|
77
|
+
" MAC Address : %s\n"
|
78
|
+
" Firmware Version : %s",
|
79
|
+
this->throttle_, const_cast<char *>(this->mac_.c_str()), const_cast<char *>(this->version_.c_str()));
|
78
80
|
}
|
79
81
|
|
80
82
|
void LD2410Component::setup() {
|
81
|
-
ESP_LOGCONFIG(TAG, "
|
83
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
82
84
|
this->read_all_info();
|
83
|
-
ESP_LOGCONFIG(TAG, "Mac Address : %s", const_cast<char *>(this->mac_.c_str()));
|
84
|
-
ESP_LOGCONFIG(TAG, "Firmware Version : %s", const_cast<char *>(this->version_.c_str()));
|
85
|
-
ESP_LOGCONFIG(TAG, "LD2410 setup complete.");
|
86
85
|
}
|
87
86
|
|
88
87
|
void LD2410Component::read_all_info() {
|
@@ -65,9 +65,11 @@ static const char *const TAG = "ld2420";
|
|
65
65
|
float LD2420Component::get_setup_priority() const { return setup_priority::BUS; }
|
66
66
|
|
67
67
|
void LD2420Component::dump_config() {
|
68
|
-
ESP_LOGCONFIG(TAG,
|
69
|
-
|
70
|
-
|
68
|
+
ESP_LOGCONFIG(TAG,
|
69
|
+
"LD2420:\n"
|
70
|
+
" Firmware Version : %7s\n"
|
71
|
+
"LD2420 Number:",
|
72
|
+
this->ld2420_firmware_ver_);
|
71
73
|
#ifdef USE_NUMBER
|
72
74
|
LOG_NUMBER(TAG, " Gate Timeout:", this->gate_timeout_number_);
|
73
75
|
LOG_NUMBER(TAG, " Gate Max Distance:", this->max_gate_distance_number_);
|
@@ -111,7 +113,7 @@ int LD2420Component::get_firmware_int_(const char *version_string) {
|
|
111
113
|
}
|
112
114
|
|
113
115
|
void LD2420Component::setup() {
|
114
|
-
ESP_LOGCONFIG(TAG, "
|
116
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
115
117
|
if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
|
116
118
|
ESP_LOGE(TAG, "LD2420 module has failed to respond, check baud rate and serial connections.");
|
117
119
|
this->mark_failed();
|
@@ -158,7 +160,7 @@ void LD2420Component::apply_config_action() {
|
|
158
160
|
ESP_LOGCONFIG(TAG, "No configuration change detected");
|
159
161
|
return;
|
160
162
|
}
|
161
|
-
ESP_LOGCONFIG(TAG, "Reconfiguring LD2420
|
163
|
+
ESP_LOGCONFIG(TAG, "Reconfiguring LD2420");
|
162
164
|
if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
|
163
165
|
ESP_LOGE(TAG, "LD2420 module has failed to respond, check baud rate and serial connections.");
|
164
166
|
this->mark_failed();
|
@@ -180,7 +182,7 @@ void LD2420Component::apply_config_action() {
|
|
180
182
|
}
|
181
183
|
|
182
184
|
void LD2420Component::factory_reset_action() {
|
183
|
-
ESP_LOGCONFIG(TAG, "Setting factory defaults
|
185
|
+
ESP_LOGCONFIG(TAG, "Setting factory defaults");
|
184
186
|
if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
|
185
187
|
ESP_LOGE(TAG, "LD2420 module has failed to respond, check baud rate and serial connections.");
|
186
188
|
this->mark_failed();
|
@@ -209,7 +211,7 @@ void LD2420Component::factory_reset_action() {
|
|
209
211
|
}
|
210
212
|
|
211
213
|
void LD2420Component::restart_module_action() {
|
212
|
-
ESP_LOGCONFIG(TAG, "Restarting LD2420 module
|
214
|
+
ESP_LOGCONFIG(TAG, "Restarting LD2420 module");
|
213
215
|
this->send_module_restart();
|
214
216
|
this->set_timeout(250, [this]() {
|
215
217
|
this->set_config_mode(true);
|
@@ -109,7 +109,7 @@ static inline std::string format_version(uint8_t *buffer) {
|
|
109
109
|
LD2450Component::LD2450Component() {}
|
110
110
|
|
111
111
|
void LD2450Component::setup() {
|
112
|
-
ESP_LOGCONFIG(TAG, "
|
112
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
113
113
|
#ifdef USE_NUMBER
|
114
114
|
if (this->presence_timeout_number_ != nullptr) {
|
115
115
|
this->pref_ = global_preferences->make_preference<float>(this->presence_timeout_number_->get_object_id_hash());
|
@@ -188,9 +188,11 @@ void LD2450Component::dump_config() {
|
|
188
188
|
#ifdef USE_NUMBER
|
189
189
|
LOG_NUMBER(" ", "PresenceTimeoutNumber", this->presence_timeout_number_);
|
190
190
|
#endif
|
191
|
-
ESP_LOGCONFIG(TAG,
|
192
|
-
|
193
|
-
|
191
|
+
ESP_LOGCONFIG(TAG,
|
192
|
+
" Throttle : %ums\n"
|
193
|
+
" MAC Address : %s\n"
|
194
|
+
" Firmware version : %s",
|
195
|
+
this->throttle_, const_cast<char *>(this->mac_.c_str()), const_cast<char *>(this->version_.c_str()));
|
194
196
|
}
|
195
197
|
|
196
198
|
void LD2450Component::loop() {
|
@@ -6,6 +6,8 @@ from esphome.const import (
|
|
6
6
|
CONF_DISTANCE,
|
7
7
|
CONF_RESOLUTION,
|
8
8
|
CONF_SPEED,
|
9
|
+
CONF_X,
|
10
|
+
CONF_Y,
|
9
11
|
DEVICE_CLASS_DISTANCE,
|
10
12
|
DEVICE_CLASS_SPEED,
|
11
13
|
UNIT_DEGREES,
|
@@ -19,8 +21,6 @@ DEPENDENCIES = ["ld2450"]
|
|
19
21
|
CONF_MOVING_TARGET_COUNT = "moving_target_count"
|
20
22
|
CONF_STILL_TARGET_COUNT = "still_target_count"
|
21
23
|
CONF_TARGET_COUNT = "target_count"
|
22
|
-
CONF_X = "x"
|
23
|
-
CONF_Y = "y"
|
24
24
|
|
25
25
|
ICON_ACCOUNT_GROUP = "mdi:account-group"
|
26
26
|
ICON_ACCOUNT_SWITCH = "mdi:account-switch"
|
@@ -46,11 +46,13 @@ inline ledc_mode_t get_speed_mode(uint8_t) { return LEDC_LOW_SPEED_MODE; }
|
|
46
46
|
#endif
|
47
47
|
#endif
|
48
48
|
|
49
|
-
float ledc_max_frequency_for_bit_depth(uint8_t bit_depth) {
|
49
|
+
float ledc_max_frequency_for_bit_depth(uint8_t bit_depth) {
|
50
|
+
return static_cast<float>(CLOCK_FREQUENCY) / static_cast<float>(1 << bit_depth);
|
51
|
+
}
|
50
52
|
|
51
53
|
float ledc_min_frequency_for_bit_depth(uint8_t bit_depth, bool low_frequency) {
|
52
54
|
const float max_div_num = ((1 << MAX_RES_BITS) - 1) / (low_frequency ? 32.0f : 256.0f);
|
53
|
-
return CLOCK_FREQUENCY / (max_div_num * float(1 << bit_depth));
|
55
|
+
return static_cast<float>(CLOCK_FREQUENCY) / (max_div_num * static_cast<float>(1 << bit_depth));
|
54
56
|
}
|
55
57
|
|
56
58
|
optional<uint8_t> ledc_bit_depth_for_frequency(float frequency) {
|
@@ -100,13 +102,13 @@ esp_err_t configure_timer_frequency(ledc_mode_t speed_mode, ledc_timer_t timer_n
|
|
100
102
|
|
101
103
|
#ifdef USE_ESP_IDF
|
102
104
|
constexpr int ledc_angle_to_htop(float angle, uint8_t bit_depth) {
|
103
|
-
return static_cast<int>(angle * ((1U << bit_depth) - 1) / 360.);
|
105
|
+
return static_cast<int>(angle * ((1U << bit_depth) - 1) / 360.0f);
|
104
106
|
}
|
105
107
|
#endif // USE_ESP_IDF
|
106
108
|
|
107
109
|
void LEDCOutput::write_state(float state) {
|
108
|
-
if (!initialized_) {
|
109
|
-
ESP_LOGW(TAG, "
|
110
|
+
if (!this->initialized_) {
|
111
|
+
ESP_LOGW(TAG, "Not yet initialized");
|
110
112
|
return;
|
111
113
|
}
|
112
114
|
|
@@ -122,8 +124,8 @@ void LEDCOutput::write_state(float state) {
|
|
122
124
|
ledcWrite(this->channel_, duty);
|
123
125
|
#endif
|
124
126
|
#ifdef USE_ESP_IDF
|
125
|
-
auto speed_mode = get_speed_mode(channel_);
|
126
|
-
auto chan_num = static_cast<ledc_channel_t>(channel_ % 8);
|
127
|
+
auto speed_mode = get_speed_mode(this->channel_);
|
128
|
+
auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
|
127
129
|
int hpoint = ledc_angle_to_htop(this->phase_angle_, this->bit_depth_);
|
128
130
|
if (duty == max_duty) {
|
129
131
|
ledc_stop(speed_mode, chan_num, 1);
|
@@ -137,7 +139,7 @@ void LEDCOutput::write_state(float state) {
|
|
137
139
|
}
|
138
140
|
|
139
141
|
void LEDCOutput::setup() {
|
140
|
-
|
142
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
141
143
|
#ifdef USE_ARDUINO
|
142
144
|
this->update_frequency(this->frequency_);
|
143
145
|
this->turn_off();
|
@@ -145,9 +147,9 @@ void LEDCOutput::setup() {
|
|
145
147
|
ledcAttachPin(this->pin_->get_pin(), this->channel_);
|
146
148
|
#endif
|
147
149
|
#ifdef USE_ESP_IDF
|
148
|
-
auto speed_mode = get_speed_mode(channel_);
|
149
|
-
auto timer_num = static_cast<ledc_timer_t>((channel_ % 8) / 2);
|
150
|
-
auto chan_num = static_cast<ledc_channel_t>(channel_ % 8);
|
150
|
+
auto speed_mode = get_speed_mode(this->channel_);
|
151
|
+
auto timer_num = static_cast<ledc_timer_t>((this->channel_ % 8) / 2);
|
152
|
+
auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
|
151
153
|
|
152
154
|
esp_err_t timer_init_result =
|
153
155
|
configure_timer_frequency(speed_mode, timer_num, chan_num, this->channel_, this->bit_depth_, this->frequency_);
|
@@ -163,26 +165,28 @@ void LEDCOutput::setup() {
|
|
163
165
|
ESP_LOGV(TAG, "Angle of %.1f° results in hpoint %u", this->phase_angle_, hpoint);
|
164
166
|
|
165
167
|
ledc_channel_config_t chan_conf{};
|
166
|
-
chan_conf.gpio_num = pin_->get_pin();
|
168
|
+
chan_conf.gpio_num = this->pin_->get_pin();
|
167
169
|
chan_conf.speed_mode = speed_mode;
|
168
170
|
chan_conf.channel = chan_num;
|
169
171
|
chan_conf.intr_type = LEDC_INTR_DISABLE;
|
170
172
|
chan_conf.timer_sel = timer_num;
|
171
|
-
chan_conf.duty = inverted_ == pin_->is_inverted() ? 0 : (1U << bit_depth_);
|
173
|
+
chan_conf.duty = this->inverted_ == this->pin_->is_inverted() ? 0 : (1U << this->bit_depth_);
|
172
174
|
chan_conf.hpoint = hpoint;
|
173
175
|
ledc_channel_config(&chan_conf);
|
174
|
-
initialized_ = true;
|
176
|
+
this->initialized_ = true;
|
175
177
|
this->status_clear_error();
|
176
178
|
#endif
|
177
179
|
}
|
178
180
|
|
179
181
|
void LEDCOutput::dump_config() {
|
180
|
-
ESP_LOGCONFIG(TAG, "
|
182
|
+
ESP_LOGCONFIG(TAG, "Output:");
|
181
183
|
LOG_PIN(" Pin ", this->pin_);
|
182
|
-
ESP_LOGCONFIG(TAG,
|
183
|
-
|
184
|
-
|
185
|
-
|
184
|
+
ESP_LOGCONFIG(TAG,
|
185
|
+
" Channel: %u\n"
|
186
|
+
" PWM Frequency: %.1f Hz\n"
|
187
|
+
" Phase angle: %.1f°\n"
|
188
|
+
" Bit depth: %u",
|
189
|
+
this->channel_, this->frequency_, this->phase_angle_, this->bit_depth_);
|
186
190
|
ESP_LOGV(TAG, " Max frequency for bit depth: %f", ledc_max_frequency_for_bit_depth(this->bit_depth_));
|
187
191
|
ESP_LOGV(TAG, " Min frequency for bit depth: %f",
|
188
192
|
ledc_min_frequency_for_bit_depth(this->bit_depth_, (this->frequency_ < 100)));
|
@@ -205,17 +209,17 @@ void LEDCOutput::update_frequency(float frequency) {
|
|
205
209
|
this->bit_depth_ = bit_depth_opt.value_or(8);
|
206
210
|
this->frequency_ = frequency;
|
207
211
|
#ifdef USE_ARDUINO
|
208
|
-
ESP_LOGV(TAG, "Using Arduino API - Trying to define channel, frequency and bit depth
|
212
|
+
ESP_LOGV(TAG, "Using Arduino API - Trying to define channel, frequency and bit depth");
|
209
213
|
u_int32_t configured_frequency = 0;
|
210
214
|
|
211
215
|
// Configure LEDC channel, frequency and bit depth with fallback
|
212
216
|
int attempt_count_max = SETUP_ATTEMPT_COUNT_MAX;
|
213
217
|
while (attempt_count_max > 0 && configured_frequency == 0) {
|
214
|
-
ESP_LOGV(TAG, "
|
215
|
-
this->
|
218
|
+
ESP_LOGV(TAG, "Initializing channel %u with frequency %.1f and bit depth of %u", this->channel_, this->frequency_,
|
219
|
+
this->bit_depth_);
|
216
220
|
configured_frequency = ledcSetup(this->channel_, frequency, this->bit_depth_);
|
217
221
|
if (configured_frequency != 0) {
|
218
|
-
initialized_ = true;
|
222
|
+
this->initialized_ = true;
|
219
223
|
this->status_clear_error();
|
220
224
|
ESP_LOGV(TAG, "Configured frequency: %u with bit depth: %u", configured_frequency, this->bit_depth_);
|
221
225
|
} else {
|
@@ -236,14 +240,14 @@ void LEDCOutput::update_frequency(float frequency) {
|
|
236
240
|
|
237
241
|
#endif // USE_ARDUINO
|
238
242
|
#ifdef USE_ESP_IDF
|
239
|
-
if (!initialized_) {
|
240
|
-
ESP_LOGW(TAG, "
|
243
|
+
if (!this->initialized_) {
|
244
|
+
ESP_LOGW(TAG, "Not yet initialized");
|
241
245
|
return;
|
242
246
|
}
|
243
247
|
|
244
|
-
auto speed_mode = get_speed_mode(channel_);
|
245
|
-
auto timer_num = static_cast<ledc_timer_t>((channel_ % 8) / 2);
|
246
|
-
auto chan_num = static_cast<ledc_channel_t>(channel_ % 8);
|
248
|
+
auto speed_mode = get_speed_mode(this->channel_);
|
249
|
+
auto timer_num = static_cast<ledc_timer_t>((this->channel_ % 8) / 2);
|
250
|
+
auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
|
247
251
|
|
248
252
|
esp_err_t timer_init_result =
|
249
253
|
configure_timer_frequency(speed_mode, timer_num, chan_num, this->channel_, this->bit_depth_, this->frequency_);
|
@@ -1,8 +1,8 @@
|
|
1
1
|
#ifdef USE_LIBRETINY
|
2
2
|
|
3
|
-
#include "esphome/core/preferences.h"
|
4
3
|
#include "esphome/core/helpers.h"
|
5
4
|
#include "esphome/core/log.h"
|
5
|
+
#include "esphome/core/preferences.h"
|
6
6
|
#include <flashdb.h>
|
7
7
|
#include <cstring>
|
8
8
|
#include <vector>
|
@@ -101,7 +101,7 @@ class LibreTinyPreferences : public ESPPreferences {
|
|
101
101
|
if (s_pending_save.empty())
|
102
102
|
return true;
|
103
103
|
|
104
|
-
|
104
|
+
ESP_LOGV(TAG, "Saving %d items...", s_pending_save.size());
|
105
105
|
// goal try write all pending saves even if one fails
|
106
106
|
int cached = 0, written = 0, failed = 0;
|
107
107
|
fdb_err_t last_err = FDB_NO_ERR;
|
@@ -129,11 +129,10 @@ class LibreTinyPreferences : public ESPPreferences {
|
|
129
129
|
}
|
130
130
|
s_pending_save.erase(s_pending_save.begin() + i);
|
131
131
|
}
|
132
|
-
ESP_LOGD(TAG, "
|
133
|
-
|
132
|
+
ESP_LOGD(TAG, "Writing %d items: %d cached, %d written, %d failed", cached + written + failed, cached, written,
|
133
|
+
failed);
|
134
134
|
if (failed > 0) {
|
135
|
-
ESP_LOGE(TAG, "
|
136
|
-
last_key.c_str());
|
135
|
+
ESP_LOGE(TAG, "Writing %d items failed. Last error=%d for key=%s", failed, last_err, last_key.c_str());
|
137
136
|
}
|
138
137
|
|
139
138
|
return failed == 0;
|
@@ -158,7 +157,7 @@ class LibreTinyPreferences : public ESPPreferences {
|
|
158
157
|
}
|
159
158
|
|
160
159
|
bool reset() override {
|
161
|
-
ESP_LOGD(TAG, "
|
160
|
+
ESP_LOGD(TAG, "Erasing storage");
|
162
161
|
s_pending_save.clear();
|
163
162
|
|
164
163
|
fdb_kv_set_default(&db);
|
@@ -37,7 +37,7 @@ from esphome.const import (
|
|
37
37
|
CONF_WEB_SERVER,
|
38
38
|
CONF_WHITE,
|
39
39
|
)
|
40
|
-
from esphome.core import coroutine_with_priority
|
40
|
+
from esphome.core import CORE, coroutine_with_priority
|
41
41
|
from esphome.cpp_generator import MockObjClass
|
42
42
|
from esphome.cpp_helpers import setup_entity
|
43
43
|
|
@@ -270,6 +270,7 @@ async def setup_light_core_(light_var, output_var, config):
|
|
270
270
|
async def register_light(output_var, config):
|
271
271
|
light_var = cg.new_Pvariable(config[CONF_ID], output_var)
|
272
272
|
cg.add(cg.App.register_light(light_var))
|
273
|
+
CORE.register_platform_component("light", light_var)
|
273
274
|
await cg.register_component(light_var, config)
|
274
275
|
await setup_light_core_(light_var, output_var, config)
|
275
276
|
|
@@ -18,7 +18,7 @@ LightCall LightState::toggle() { return this->make_call().set_state(!this->remot
|
|
18
18
|
LightCall LightState::make_call() { return LightCall(this); }
|
19
19
|
|
20
20
|
void LightState::setup() {
|
21
|
-
ESP_LOGCONFIG(TAG, "
|
21
|
+
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->get_name().c_str());
|
22
22
|
|
23
23
|
this->output_->setup_state(this);
|
24
24
|
for (auto *effect : this->effects_) {
|
@@ -91,12 +91,16 @@ void LightState::setup() {
|
|
91
91
|
void LightState::dump_config() {
|
92
92
|
ESP_LOGCONFIG(TAG, "Light '%s'", this->get_name().c_str());
|
93
93
|
if (this->get_traits().supports_color_capability(ColorCapability::BRIGHTNESS)) {
|
94
|
-
ESP_LOGCONFIG(TAG,
|
95
|
-
|
94
|
+
ESP_LOGCONFIG(TAG,
|
95
|
+
" Default Transition Length: %.1fs\n"
|
96
|
+
" Gamma Correct: %.2f",
|
97
|
+
this->default_transition_length_ / 1e3f, this->gamma_correct_);
|
96
98
|
}
|
97
99
|
if (this->get_traits().supports_color_capability(ColorCapability::COLOR_TEMPERATURE)) {
|
98
|
-
ESP_LOGCONFIG(TAG,
|
99
|
-
|
100
|
+
ESP_LOGCONFIG(TAG,
|
101
|
+
" Min Mireds: %.1f\n"
|
102
|
+
" Max Mireds: %.1f",
|
103
|
+
this->get_traits().get_min_mireds(), this->get_traits().get_max_mireds());
|
100
104
|
}
|
101
105
|
}
|
102
106
|
void LightState::loop() {
|
@@ -17,7 +17,7 @@ namespace light {
|
|
17
17
|
|
18
18
|
class LightOutput;
|
19
19
|
|
20
|
-
enum LightRestoreMode {
|
20
|
+
enum LightRestoreMode : uint8_t {
|
21
21
|
LIGHT_RESTORE_DEFAULT_OFF,
|
22
22
|
LIGHT_RESTORE_DEFAULT_ON,
|
23
23
|
LIGHT_ALWAYS_OFF,
|
@@ -212,12 +212,18 @@ class LightState : public EntityBase, public Component {
|
|
212
212
|
|
213
213
|
/// Store the output to allow effects to have more access.
|
214
214
|
LightOutput *output_;
|
215
|
-
/// Value for storing the index of the currently active effect. 0 if no effect is active
|
216
|
-
uint32_t active_effect_index_{};
|
217
215
|
/// The currently active transformer for this light (transition/flash).
|
218
216
|
std::unique_ptr<LightTransformer> transformer_{nullptr};
|
219
|
-
///
|
220
|
-
|
217
|
+
/// List of effects for this light.
|
218
|
+
std::vector<LightEffect *> effects_;
|
219
|
+
/// Value for storing the index of the currently active effect. 0 if no effect is active
|
220
|
+
uint32_t active_effect_index_{};
|
221
|
+
/// Default transition length for all transitions in ms.
|
222
|
+
uint32_t default_transition_length_{};
|
223
|
+
/// Transition length to use for flash transitions.
|
224
|
+
uint32_t flash_transition_length_{};
|
225
|
+
/// Gamma correction factor for the light.
|
226
|
+
float gamma_correct_{};
|
221
227
|
|
222
228
|
/// Object used to store the persisted values of the light.
|
223
229
|
ESPPreferenceObject rtc_;
|
@@ -236,19 +242,13 @@ class LightState : public EntityBase, public Component {
|
|
236
242
|
*/
|
237
243
|
CallbackManager<void()> target_state_reached_callback_{};
|
238
244
|
|
239
|
-
/// Default transition length for all transitions in ms.
|
240
|
-
uint32_t default_transition_length_{};
|
241
|
-
/// Transition length to use for flash transitions.
|
242
|
-
uint32_t flash_transition_length_{};
|
243
|
-
/// Gamma correction factor for the light.
|
244
|
-
float gamma_correct_{};
|
245
|
-
/// Restore mode of the light.
|
246
|
-
LightRestoreMode restore_mode_;
|
247
245
|
/// Initial state of the light.
|
248
246
|
optional<LightStateRTCState> initial_state_{};
|
249
|
-
/// List of effects for this light.
|
250
|
-
std::vector<LightEffect *> effects_;
|
251
247
|
|
248
|
+
/// Restore mode of the light.
|
249
|
+
LightRestoreMode restore_mode_;
|
250
|
+
/// Whether the light value should be written in the next cycle.
|
251
|
+
bool next_write_{true};
|
252
252
|
// for effects, true if a transformer (transition) is active.
|
253
253
|
bool is_transformer_active_ = false;
|
254
254
|
};
|