esphome 2025.5.2__py3-none-any.whl → 2025.6.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +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 +712 -358
- esphome/components/api/api_connection.h +343 -284
- esphome/components/api/api_frame_helper.cpp +349 -344
- esphome/components/api/api_frame_helper.h +121 -94
- esphome/components/api/api_pb2.cpp +2 -0
- esphome/components/api/api_pb2.h +637 -1
- 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 -2
- 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 +4 -3
- 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 +16 -14
- esphome/components/bme280_base/bme280_base.cpp +3 -3
- 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/debug/debug_component.cpp +1 -1
- 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 +88 -20
- 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 +11 -9
- esphome/components/esp32_ble/ble_uuid.h +1 -1
- 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 +6 -2
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +12 -9
- 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/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 +4 -2
- 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 +1 -1
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
- 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 +2 -1
- 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_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 +9 -5
- 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 +2 -2
- 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 +2 -3
- 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 +58 -61
- esphome/components/nextion/nextion_upload_idf.cpp +69 -72
- esphome/components/nextion/sensor/nextion_sensor.cpp +4 -4
- esphome/components/nextion/switch/nextion_switch.cpp +2 -2
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +2 -2
- 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/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/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/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/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.h +9 -5
- 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_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 +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 +1 -1
- 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 +38 -12
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +3 -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_sensor/__init__.py +1 -0
- 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/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/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/utils.cpp +1 -1
- esphome/components/web_server_idf/web_server_idf.cpp +1 -1
- esphome/components/weikai/__init__.py +2 -0
- esphome/components/weikai/weikai.cpp +23 -21
- 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 +188 -5
- esphome/core/application.h +110 -0
- esphome/core/component.h +13 -0
- esphome/core/config.py +12 -0
- esphome/core/defines.h +10 -2
- esphome/core/helpers.cpp +1 -1
- esphome/core/helpers.h +4 -4
- 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/writer.py +5 -3
- esphome/yaml_util.py +6 -1
- esphome/zeroconf.py +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +715 -662
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,289 @@
|
|
1
|
+
#include "es8388.h"
|
2
|
+
|
3
|
+
#include <cinttypes>
|
4
|
+
#include "esphome/core/hal.h"
|
5
|
+
#include "esphome/core/log.h"
|
6
|
+
|
7
|
+
namespace esphome {
|
8
|
+
namespace es8388 {
|
9
|
+
|
10
|
+
static const char *const TAG = "es8388";
|
11
|
+
|
12
|
+
// Mark the component as failed; use only in setup
|
13
|
+
#define ES8388_ERROR_FAILED(func) \
|
14
|
+
if (!(func)) { \
|
15
|
+
this->mark_failed(); \
|
16
|
+
return; \
|
17
|
+
}
|
18
|
+
|
19
|
+
// Return false; use outside of setup
|
20
|
+
#define ES8388_ERROR_CHECK(func) \
|
21
|
+
if (!(func)) { \
|
22
|
+
return false; \
|
23
|
+
}
|
24
|
+
|
25
|
+
void ES8388::setup() {
|
26
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
27
|
+
|
28
|
+
// mute DAC
|
29
|
+
this->set_mute_state_(true);
|
30
|
+
|
31
|
+
// I2S worker mode
|
32
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_MASTERMODE, 0x00));
|
33
|
+
|
34
|
+
/* Chip Control and Power Management */
|
35
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_CONTROL2, 0x50));
|
36
|
+
// normal all and power up all
|
37
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_CHIPPOWER, 0x00));
|
38
|
+
|
39
|
+
// vmidsel/500k
|
40
|
+
// EnRef=0,Play&Record Mode,(0x17-both of mic&play)
|
41
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_CONTROL1, 0x12));
|
42
|
+
|
43
|
+
// i2s 16 bits
|
44
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL1, 0x18));
|
45
|
+
// sample freq 256
|
46
|
+
// DACFsMode,SINGLE SPEED; DACFsRatio,256
|
47
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL2, 0x02));
|
48
|
+
// 0x00 audio on LIN1&RIN1, 0x09 LIN2&RIN2
|
49
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL16, 0x00));
|
50
|
+
// only left DAC to left mixer enable 0db
|
51
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL17, 0x90));
|
52
|
+
// only right DAC to right mixer enable 0db
|
53
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL20, 0x90));
|
54
|
+
// set internal ADC and DAC use the same LRCK clock, ADC LRCK as internal LRCK
|
55
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL21, 0x80));
|
56
|
+
// vroi=0 - 1.5k VREF to analog output resistance (default)
|
57
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL23, 0x00));
|
58
|
+
|
59
|
+
// power down adc and line in
|
60
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCPOWER, 0xFF));
|
61
|
+
|
62
|
+
//@nightdav
|
63
|
+
ES8388_ERROR_FAILED(
|
64
|
+
this->write_byte(ES8388_ADCCONTROL1, 0x00)); // +21dB : recommended value for ALC & voice recording
|
65
|
+
|
66
|
+
// set to Mono Right
|
67
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL3, 0x02));
|
68
|
+
|
69
|
+
// I2S 16 Bits length and I2S serial audio data format
|
70
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL4, 0x0d));
|
71
|
+
// ADCFsMode,singel SPEED,RATIO=256
|
72
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL5, 0x02));
|
73
|
+
|
74
|
+
// ADC Volume
|
75
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL8, 0x00));
|
76
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL9, 0x00));
|
77
|
+
|
78
|
+
//@nightDav
|
79
|
+
// ALC Config (as recommended by ES8388 user guide for voice recording)
|
80
|
+
|
81
|
+
// Reg 0x12 = 0xe2 (ALC enable, PGA Max. Gain=23.5dB, Min. Gain=0dB)
|
82
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL10, 0xe2));
|
83
|
+
|
84
|
+
// Reg 0x13 = 0xa0 (ALC Target=-1.5dB, ALC Hold time =0 mS)
|
85
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL11, 0xa0));
|
86
|
+
// Reg 0x14 = 0x12(Decay time =820uS , Attack time = 416 uS)
|
87
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL12, 0x12));
|
88
|
+
|
89
|
+
// Reg 0x15 = 0x06(ALC mode)
|
90
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL13, 0x06));
|
91
|
+
|
92
|
+
// Reg 0x16 = 0xc3(nose gate = -40.5dB, NGG = 0x01(mute ADC))
|
93
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL14, 0xc3));
|
94
|
+
|
95
|
+
// Power on ADC
|
96
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL21, 0x80));
|
97
|
+
|
98
|
+
// Start state machine
|
99
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_CHIPPOWER, 0xF0));
|
100
|
+
delay(1);
|
101
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_CHIPPOWER, 0x00));
|
102
|
+
|
103
|
+
// DAC volume max
|
104
|
+
// Set initial volume
|
105
|
+
// this->set_volume(0.75); // 0.75 = 0xBF = 0dB
|
106
|
+
|
107
|
+
this->set_mute_state_(false);
|
108
|
+
|
109
|
+
// unmute ADC with fade in
|
110
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCCONTROL7, 0x60));
|
111
|
+
// unmute DAC with fade in
|
112
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_DACCONTROL3, 0x20));
|
113
|
+
|
114
|
+
// Power on ADC, Enable LIN&RIN, Power off MICBIAS, set int1lp to low power mode
|
115
|
+
ES8388_ERROR_FAILED(this->write_byte(ES8388_ADCPOWER, 0x09));
|
116
|
+
|
117
|
+
#ifdef USE_SELECT
|
118
|
+
if (this->dac_output_select_ != nullptr) {
|
119
|
+
auto dac_power = this->get_dac_power();
|
120
|
+
if (dac_power.has_value()) {
|
121
|
+
auto dac_power_str = this->dac_output_select_->at(dac_power.value());
|
122
|
+
if (dac_power_str.has_value()) {
|
123
|
+
this->dac_output_select_->publish_state(dac_power_str.value());
|
124
|
+
} else {
|
125
|
+
ESP_LOGW(TAG, "Unknown DAC output power value: %d", dac_power.value());
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
if (this->adc_input_mic_select_ != nullptr) {
|
130
|
+
auto mic_input = this->get_mic_input();
|
131
|
+
if (mic_input.has_value()) {
|
132
|
+
auto mic_input_str = this->adc_input_mic_select_->at(mic_input.value());
|
133
|
+
if (mic_input_str.has_value()) {
|
134
|
+
this->adc_input_mic_select_->publish_state(mic_input_str.value());
|
135
|
+
} else {
|
136
|
+
ESP_LOGW(TAG, "Unknown ADC input mic value: %d", mic_input.value());
|
137
|
+
}
|
138
|
+
}
|
139
|
+
}
|
140
|
+
#endif
|
141
|
+
}
|
142
|
+
|
143
|
+
void ES8388::dump_config() {
|
144
|
+
ESP_LOGCONFIG(TAG, "ES8388 Audio Codec:");
|
145
|
+
LOG_I2C_DEVICE(this);
|
146
|
+
#ifdef USE_SELECT
|
147
|
+
LOG_SELECT(" ", "DacOutputSelect", this->dac_output_select_);
|
148
|
+
LOG_SELECT(" ", "ADCInputMicSelect", this->adc_input_mic_select_);
|
149
|
+
#endif
|
150
|
+
|
151
|
+
if (this->is_failed()) {
|
152
|
+
ESP_LOGCONFIG(TAG, " Failed to initialize");
|
153
|
+
return;
|
154
|
+
}
|
155
|
+
}
|
156
|
+
|
157
|
+
bool ES8388::set_volume(float volume) {
|
158
|
+
volume = clamp(volume, 0.0f, 1.0f);
|
159
|
+
uint8_t value = remap<uint8_t, float>(volume, 0.0f, 1.0f, -96, 0);
|
160
|
+
ESP_LOGD(TAG, "Setting ES8388_DACCONTROL4 / ES8388_DACCONTROL5 to 0x%02X (volume: %f)", value, volume);
|
161
|
+
ES8388_ERROR_CHECK(this->write_byte(ES8388_DACCONTROL4, value));
|
162
|
+
ES8388_ERROR_CHECK(this->write_byte(ES8388_DACCONTROL5, value));
|
163
|
+
|
164
|
+
return true;
|
165
|
+
}
|
166
|
+
|
167
|
+
float ES8388::volume() {
|
168
|
+
uint8_t value;
|
169
|
+
ES8388_ERROR_CHECK(this->read_byte(ES8388_DACCONTROL4, &value));
|
170
|
+
return remap<float, uint8_t>(value, -96, 0, 0.0f, 1.0f);
|
171
|
+
}
|
172
|
+
|
173
|
+
bool ES8388::set_mute_state_(bool mute_state) {
|
174
|
+
uint8_t value = 0;
|
175
|
+
|
176
|
+
this->is_muted_ = mute_state;
|
177
|
+
|
178
|
+
ES8388_ERROR_CHECK(this->read_byte(ES8388_DACCONTROL3, &value));
|
179
|
+
ESP_LOGV(TAG, "Read ES8388_DACCONTROL3: 0x%02X", value);
|
180
|
+
|
181
|
+
if (mute_state) {
|
182
|
+
value = 0x3C;
|
183
|
+
}
|
184
|
+
|
185
|
+
ESP_LOGV(TAG, "Setting ES8388_DACCONTROL3 to 0x%02X (muted: %s)", value, YESNO(mute_state));
|
186
|
+
return this->write_byte(ES8388_DACCONTROL3, value);
|
187
|
+
}
|
188
|
+
|
189
|
+
// Set dac power output
|
190
|
+
bool ES8388::set_dac_output(DacOutputLine line) {
|
191
|
+
uint8_t reg_out1 = 0;
|
192
|
+
uint8_t reg_out2 = 0;
|
193
|
+
uint8_t dac_power = 0;
|
194
|
+
|
195
|
+
// 0x00: -30dB , 0x1E: 0dB
|
196
|
+
switch (line) {
|
197
|
+
case DAC_OUTPUT_LINE1:
|
198
|
+
reg_out1 = 0x1E;
|
199
|
+
dac_power = ES8388_DAC_OUTPUT_LOUT1_ROUT1;
|
200
|
+
break;
|
201
|
+
case DAC_OUTPUT_LINE2:
|
202
|
+
reg_out2 = 0x1E;
|
203
|
+
dac_power = ES8388_DAC_OUTPUT_LOUT2_ROUT2;
|
204
|
+
break;
|
205
|
+
case DAC_OUTPUT_BOTH:
|
206
|
+
reg_out1 = 0x1E;
|
207
|
+
reg_out2 = 0x1E;
|
208
|
+
dac_power = ES8388_DAC_OUTPUT_BOTH;
|
209
|
+
break;
|
210
|
+
default:
|
211
|
+
ESP_LOGE(TAG, "Unknown DAC output line: %d", line);
|
212
|
+
return false;
|
213
|
+
};
|
214
|
+
|
215
|
+
ESP_LOGV(TAG, "Setting ES8388_DACPOWER to 0x%02X", dac_power);
|
216
|
+
ESP_LOGV(TAG, "Setting ES8388_DACCONTROL24 / ES8388_DACCONTROL25 to 0x%02X", reg_out1);
|
217
|
+
ESP_LOGV(TAG, "Setting ES8388_DACCONTROL26 / ES8388_DACCONTROL27 to 0x%02X", reg_out2);
|
218
|
+
|
219
|
+
ES8388_ERROR_CHECK(this->write_byte(ES8388_DACCONTROL24, reg_out1)); // LOUT1VOL
|
220
|
+
ES8388_ERROR_CHECK(this->write_byte(ES8388_DACCONTROL25, reg_out1)); // ROUT1VOL
|
221
|
+
ES8388_ERROR_CHECK(this->write_byte(ES8388_DACCONTROL26, reg_out2)); // LOUT2VOL
|
222
|
+
ES8388_ERROR_CHECK(this->write_byte(ES8388_DACCONTROL27, reg_out2)); // ROUT1VOL
|
223
|
+
|
224
|
+
return this->write_byte(ES8388_DACPOWER, dac_power);
|
225
|
+
}
|
226
|
+
|
227
|
+
optional<DacOutputLine> ES8388::get_dac_power() {
|
228
|
+
uint8_t dac_power;
|
229
|
+
if (!this->read_byte(ES8388_DACPOWER, &dac_power)) {
|
230
|
+
this->status_momentary_warning("Failed to read ES8388_DACPOWER");
|
231
|
+
return {};
|
232
|
+
}
|
233
|
+
switch (dac_power) {
|
234
|
+
case ES8388_DAC_OUTPUT_LOUT1_ROUT1:
|
235
|
+
return DAC_OUTPUT_LINE1;
|
236
|
+
case ES8388_DAC_OUTPUT_LOUT2_ROUT2:
|
237
|
+
return DAC_OUTPUT_LINE2;
|
238
|
+
case ES8388_DAC_OUTPUT_BOTH:
|
239
|
+
return DAC_OUTPUT_BOTH;
|
240
|
+
default:
|
241
|
+
return {};
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
// Set ADC input MIC
|
246
|
+
bool ES8388::set_adc_input_mic(AdcInputMicLine line) {
|
247
|
+
uint8_t mic_input = 0;
|
248
|
+
|
249
|
+
switch (line) {
|
250
|
+
case ADC_INPUT_MIC_LINE1:
|
251
|
+
mic_input = ES8388_ADC_INPUT_LINPUT1_RINPUT1;
|
252
|
+
break;
|
253
|
+
case ADC_INPUT_MIC_LINE2:
|
254
|
+
mic_input = ES8388_ADC_INPUT_LINPUT2_RINPUT2;
|
255
|
+
break;
|
256
|
+
case ADC_INPUT_MIC_DIFFERENCE:
|
257
|
+
mic_input = ES8388_ADC_INPUT_DIFFERENCE;
|
258
|
+
break;
|
259
|
+
default:
|
260
|
+
ESP_LOGE(TAG, "Unknown ADC input mic line: %d", line);
|
261
|
+
return false;
|
262
|
+
}
|
263
|
+
|
264
|
+
ESP_LOGV(TAG, "Setting ES8388_ADCCONTROL2 to 0x%02X", mic_input);
|
265
|
+
ES8388_ERROR_CHECK(this->write_byte(ES8388_ADCCONTROL2, mic_input));
|
266
|
+
|
267
|
+
return true;
|
268
|
+
}
|
269
|
+
|
270
|
+
optional<AdcInputMicLine> ES8388::get_mic_input() {
|
271
|
+
uint8_t mic_input;
|
272
|
+
if (!this->read_byte(ES8388_ADCCONTROL2, &mic_input)) {
|
273
|
+
this->status_momentary_warning("Failed to read ES8388_ADCCONTROL2");
|
274
|
+
return {};
|
275
|
+
}
|
276
|
+
switch (mic_input) {
|
277
|
+
case ES8388_ADC_INPUT_LINPUT1_RINPUT1:
|
278
|
+
return ADC_INPUT_MIC_LINE1;
|
279
|
+
case ES8388_ADC_INPUT_LINPUT2_RINPUT2:
|
280
|
+
return ADC_INPUT_MIC_LINE2;
|
281
|
+
case ES8388_ADC_INPUT_DIFFERENCE:
|
282
|
+
return ADC_INPUT_MIC_DIFFERENCE;
|
283
|
+
default:
|
284
|
+
return {};
|
285
|
+
};
|
286
|
+
}
|
287
|
+
|
288
|
+
} // namespace es8388
|
289
|
+
} // namespace esphome
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <map>
|
4
|
+
|
5
|
+
#include "esphome/components/audio_dac/audio_dac.h"
|
6
|
+
#include "esphome/components/i2c/i2c.h"
|
7
|
+
#include "esphome/core/component.h"
|
8
|
+
#ifdef USE_SELECT
|
9
|
+
#include "esphome/components/select/select.h"
|
10
|
+
#endif
|
11
|
+
|
12
|
+
#include "es8388_const.h"
|
13
|
+
|
14
|
+
namespace esphome {
|
15
|
+
namespace es8388 {
|
16
|
+
|
17
|
+
enum DacOutputLine : uint8_t {
|
18
|
+
DAC_OUTPUT_LINE1,
|
19
|
+
DAC_OUTPUT_LINE2,
|
20
|
+
DAC_OUTPUT_BOTH,
|
21
|
+
};
|
22
|
+
|
23
|
+
enum AdcInputMicLine : uint8_t {
|
24
|
+
ADC_INPUT_MIC_LINE1,
|
25
|
+
ADC_INPUT_MIC_LINE2,
|
26
|
+
ADC_INPUT_MIC_DIFFERENCE,
|
27
|
+
};
|
28
|
+
|
29
|
+
class ES8388 : public audio_dac::AudioDac, public Component, public i2c::I2CDevice {
|
30
|
+
#ifdef USE_SELECT
|
31
|
+
SUB_SELECT(dac_output)
|
32
|
+
SUB_SELECT(adc_input_mic)
|
33
|
+
#endif
|
34
|
+
|
35
|
+
public:
|
36
|
+
/////////////////////////
|
37
|
+
// Component overrides //
|
38
|
+
/////////////////////////
|
39
|
+
|
40
|
+
void setup() override;
|
41
|
+
float get_setup_priority() const override { return setup_priority::DATA; }
|
42
|
+
void dump_config() override;
|
43
|
+
|
44
|
+
////////////////////////
|
45
|
+
// AudioDac overrides //
|
46
|
+
////////////////////////
|
47
|
+
|
48
|
+
/// @brief Writes the volume out to the DAC
|
49
|
+
/// @param volume floating point between 0.0 and 1.0
|
50
|
+
/// @return True if successful and false otherwise
|
51
|
+
bool set_volume(float volume) override;
|
52
|
+
|
53
|
+
/// @brief Gets the current volume out from the DAC
|
54
|
+
/// @return floating point between 0.0 and 1.0
|
55
|
+
float volume() override;
|
56
|
+
|
57
|
+
/// @brief Disables mute for audio out
|
58
|
+
/// @return True if successful and false otherwise
|
59
|
+
bool set_mute_off() override { return this->set_mute_state_(false); }
|
60
|
+
|
61
|
+
/// @brief Enables mute for audio out
|
62
|
+
/// @return True if successful and false otherwise
|
63
|
+
bool set_mute_on() override { return this->set_mute_state_(true); }
|
64
|
+
|
65
|
+
bool is_muted() override { return this->is_muted_; }
|
66
|
+
|
67
|
+
optional<DacOutputLine> get_dac_power();
|
68
|
+
optional<AdcInputMicLine> get_mic_input();
|
69
|
+
|
70
|
+
bool set_dac_output(DacOutputLine line);
|
71
|
+
bool set_adc_input_mic(AdcInputMicLine line);
|
72
|
+
|
73
|
+
protected:
|
74
|
+
/// @brief Mutes or unmutes the DAC audio out
|
75
|
+
/// @param mute_state True to mute, false to unmute
|
76
|
+
/// @return True if successful and false otherwise
|
77
|
+
bool set_mute_state_(bool mute_state);
|
78
|
+
};
|
79
|
+
|
80
|
+
} // namespace es8388
|
81
|
+
} // namespace esphome
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#pragma once
|
2
|
+
#include <cstdint>
|
3
|
+
|
4
|
+
namespace esphome {
|
5
|
+
namespace es8388 {
|
6
|
+
|
7
|
+
/* ES8388 register */
|
8
|
+
static const uint8_t ES8388_CONTROL1 = 0x00;
|
9
|
+
static const uint8_t ES8388_CONTROL2 = 0x01;
|
10
|
+
|
11
|
+
static const uint8_t ES8388_CHIPPOWER = 0x02;
|
12
|
+
|
13
|
+
static const uint8_t ES8388_ADCPOWER = 0x03;
|
14
|
+
static const uint8_t ES8388_DACPOWER = 0x04;
|
15
|
+
|
16
|
+
static const uint8_t ES8388_CHIPLOPOW1 = 0x05;
|
17
|
+
static const uint8_t ES8388_CHIPLOPOW2 = 0x06;
|
18
|
+
|
19
|
+
static const uint8_t ES8388_ANAVOLMANAG = 0x07;
|
20
|
+
|
21
|
+
static const uint8_t ES8388_MASTERMODE = 0x08;
|
22
|
+
|
23
|
+
/* ADC */
|
24
|
+
static const uint8_t ES8388_ADCCONTROL1 = 0x09;
|
25
|
+
static const uint8_t ES8388_ADCCONTROL2 = 0x0a;
|
26
|
+
static const uint8_t ES8388_ADCCONTROL3 = 0x0b;
|
27
|
+
static const uint8_t ES8388_ADCCONTROL4 = 0x0c;
|
28
|
+
static const uint8_t ES8388_ADCCONTROL5 = 0x0d;
|
29
|
+
static const uint8_t ES8388_ADCCONTROL6 = 0x0e;
|
30
|
+
static const uint8_t ES8388_ADCCONTROL7 = 0x0f;
|
31
|
+
static const uint8_t ES8388_ADCCONTROL8 = 0x10;
|
32
|
+
static const uint8_t ES8388_ADCCONTROL9 = 0x11;
|
33
|
+
static const uint8_t ES8388_ADCCONTROL10 = 0x12;
|
34
|
+
static const uint8_t ES8388_ADCCONTROL11 = 0x13;
|
35
|
+
static const uint8_t ES8388_ADCCONTROL12 = 0x14;
|
36
|
+
static const uint8_t ES8388_ADCCONTROL13 = 0x15;
|
37
|
+
static const uint8_t ES8388_ADCCONTROL14 = 0x16;
|
38
|
+
/* DAC */
|
39
|
+
static const uint8_t ES8388_DACCONTROL1 = 0x17;
|
40
|
+
static const uint8_t ES8388_DACCONTROL2 = 0x18;
|
41
|
+
static const uint8_t ES8388_DACCONTROL3 = 0x19;
|
42
|
+
static const uint8_t ES8388_DACCONTROL4 = 0x1a;
|
43
|
+
static const uint8_t ES8388_DACCONTROL5 = 0x1b;
|
44
|
+
static const uint8_t ES8388_DACCONTROL6 = 0x1c;
|
45
|
+
static const uint8_t ES8388_DACCONTROL7 = 0x1d;
|
46
|
+
static const uint8_t ES8388_DACCONTROL8 = 0x1e;
|
47
|
+
static const uint8_t ES8388_DACCONTROL9 = 0x1f;
|
48
|
+
static const uint8_t ES8388_DACCONTROL10 = 0x20;
|
49
|
+
static const uint8_t ES8388_DACCONTROL11 = 0x21;
|
50
|
+
static const uint8_t ES8388_DACCONTROL12 = 0x22;
|
51
|
+
static const uint8_t ES8388_DACCONTROL13 = 0x23;
|
52
|
+
static const uint8_t ES8388_DACCONTROL14 = 0x24;
|
53
|
+
static const uint8_t ES8388_DACCONTROL15 = 0x25;
|
54
|
+
static const uint8_t ES8388_DACCONTROL16 = 0x26;
|
55
|
+
static const uint8_t ES8388_DACCONTROL17 = 0x27;
|
56
|
+
static const uint8_t ES8388_DACCONTROL18 = 0x28;
|
57
|
+
static const uint8_t ES8388_DACCONTROL19 = 0x29;
|
58
|
+
static const uint8_t ES8388_DACCONTROL20 = 0x2a;
|
59
|
+
static const uint8_t ES8388_DACCONTROL21 = 0x2b;
|
60
|
+
static const uint8_t ES8388_DACCONTROL22 = 0x2c;
|
61
|
+
static const uint8_t ES8388_DACCONTROL23 = 0x2d;
|
62
|
+
static const uint8_t ES8388_DACCONTROL24 = 0x2e;
|
63
|
+
static const uint8_t ES8388_DACCONTROL25 = 0x2f;
|
64
|
+
static const uint8_t ES8388_DACCONTROL26 = 0x30;
|
65
|
+
static const uint8_t ES8388_DACCONTROL27 = 0x31;
|
66
|
+
static const uint8_t ES8388_DACCONTROL28 = 0x32;
|
67
|
+
static const uint8_t ES8388_DACCONTROL29 = 0x33;
|
68
|
+
static const uint8_t ES8388_DACCONTROL30 = 0x34;
|
69
|
+
|
70
|
+
static const uint8_t ES8388_DAC_OUTPUT_NONE = 0xC0; // ALL DAC DOWN
|
71
|
+
|
72
|
+
static const uint8_t ES8388_DAC_OUTPUT_LOUT1_ROUT1 = 0x30;
|
73
|
+
static const uint8_t ES8388_DAC_OUTPUT_LOUT2_ROUT2 = 0x0C;
|
74
|
+
static const uint8_t ES8388_DAC_OUTPUT_BOTH = 0x3C;
|
75
|
+
|
76
|
+
static const uint8_t ES8388_ADC_INPUT_LINPUT1_RINPUT1 = 0x00;
|
77
|
+
static const uint8_t ES8388_ADC_INPUT_MIC1 = 0x05;
|
78
|
+
static const uint8_t ES8388_ADC_INPUT_MIC2 = 0x06;
|
79
|
+
static const uint8_t ES8388_ADC_INPUT_LINPUT2_RINPUT2 = 0x50;
|
80
|
+
static const uint8_t ES8388_ADC_INPUT_DIFFERENCE = 0xf0;
|
81
|
+
|
82
|
+
} // namespace es8388
|
83
|
+
} // namespace esphome
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import esphome.codegen as cg
|
2
|
+
from esphome.components import select
|
3
|
+
import esphome.config_validation as cv
|
4
|
+
from esphome.const import ENTITY_CATEGORY_CONFIG, ICON_CHIP # noqa: F401
|
5
|
+
|
6
|
+
from ..audio_dac import CONF_ES8388_ID, ES8388, es8388_ns
|
7
|
+
|
8
|
+
CONF_DAC_OUTPUT = "dac_output"
|
9
|
+
CONF_ADC_INPUT_MIC = "adc_input_mic"
|
10
|
+
|
11
|
+
DacOutputSelect = es8388_ns.class_("DacOutputSelect", select.Select)
|
12
|
+
ADCInputMicSelect = es8388_ns.class_("ADCInputMicSelect", select.Select)
|
13
|
+
|
14
|
+
CONFIG_SCHEMA = cv.All(
|
15
|
+
{
|
16
|
+
cv.GenerateID(CONF_ES8388_ID): cv.use_id(ES8388),
|
17
|
+
cv.Optional(CONF_DAC_OUTPUT): select.select_schema(
|
18
|
+
DacOutputSelect,
|
19
|
+
entity_category=ENTITY_CATEGORY_CONFIG,
|
20
|
+
icon=ICON_CHIP,
|
21
|
+
),
|
22
|
+
cv.Optional(CONF_ADC_INPUT_MIC): select.select_schema(
|
23
|
+
ADCInputMicSelect,
|
24
|
+
entity_category=ENTITY_CATEGORY_CONFIG,
|
25
|
+
icon=ICON_CHIP,
|
26
|
+
),
|
27
|
+
}
|
28
|
+
)
|
29
|
+
|
30
|
+
|
31
|
+
async def to_code(config):
|
32
|
+
parent = await cg.get_variable(config[CONF_ES8388_ID])
|
33
|
+
if dac_output_config := config.get(CONF_DAC_OUTPUT):
|
34
|
+
s = await select.new_select(
|
35
|
+
dac_output_config,
|
36
|
+
options=["LINE1", "LINE2", "BOTH"],
|
37
|
+
)
|
38
|
+
await cg.register_parented(s, parent)
|
39
|
+
cg.add(parent.set_dac_output_select(s))
|
40
|
+
|
41
|
+
if adc_input_mic_config := config.get(CONF_ADC_INPUT_MIC):
|
42
|
+
s = await select.new_select(
|
43
|
+
adc_input_mic_config,
|
44
|
+
options=["LINE1", "LINE2", "DIFFERENCE"],
|
45
|
+
)
|
46
|
+
await cg.register_parented(s, parent)
|
47
|
+
cg.add(parent.set_adc_input_mic_select(s))
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#include "adc_input_mic_select.h"
|
2
|
+
|
3
|
+
namespace esphome {
|
4
|
+
namespace es8388 {
|
5
|
+
|
6
|
+
void ADCInputMicSelect::control(const std::string &value) {
|
7
|
+
this->publish_state(value);
|
8
|
+
this->parent_->set_adc_input_mic(static_cast<AdcInputMicLine>(this->index_of(value).value()));
|
9
|
+
}
|
10
|
+
|
11
|
+
} // namespace es8388
|
12
|
+
} // namespace esphome
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "esphome/components/es8388/es8388.h"
|
4
|
+
#include "esphome/components/select/select.h"
|
5
|
+
|
6
|
+
namespace esphome {
|
7
|
+
namespace es8388 {
|
8
|
+
|
9
|
+
class ADCInputMicSelect : public select::Select, public Parented<ES8388> {
|
10
|
+
protected:
|
11
|
+
void control(const std::string &value) override;
|
12
|
+
};
|
13
|
+
|
14
|
+
} // namespace es8388
|
15
|
+
} // namespace esphome
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#include "dac_output_select.h"
|
2
|
+
|
3
|
+
namespace esphome {
|
4
|
+
namespace es8388 {
|
5
|
+
|
6
|
+
void DacOutputSelect::control(const std::string &value) {
|
7
|
+
this->publish_state(value);
|
8
|
+
this->parent_->set_dac_output(static_cast<DacOutputLine>(this->index_of(value).value()));
|
9
|
+
}
|
10
|
+
|
11
|
+
} // namespace es8388
|
12
|
+
} // namespace esphome
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "esphome/components/es8388/es8388.h"
|
4
|
+
#include "esphome/components/select/select.h"
|
5
|
+
|
6
|
+
namespace esphome {
|
7
|
+
namespace es8388 {
|
8
|
+
|
9
|
+
class DacOutputSelect : public select::Select, public Parented<ES8388> {
|
10
|
+
protected:
|
11
|
+
void control(const std::string &value) override;
|
12
|
+
};
|
13
|
+
|
14
|
+
} // namespace es8388
|
15
|
+
} // namespace esphome
|