esphome 2025.5.2__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 -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 +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/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 +48 -30
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +2 -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 +1 -2
- 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/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/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.2.dist-info → esphome-2025.6.0.dist-info}/METADATA +12 -11
- {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/RECORD +750 -696
- {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/WHEEL +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0.dist-info}/top_level.txt +0 -0
@@ -40,12 +40,12 @@ enum MicrophoneEventGroupBits : uint32_t {
|
|
40
40
|
};
|
41
41
|
|
42
42
|
void I2SAudioMicrophone::setup() {
|
43
|
-
ESP_LOGCONFIG(TAG, "
|
43
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
44
44
|
#ifdef USE_I2S_LEGACY
|
45
45
|
#if SOC_I2S_SUPPORTS_ADC
|
46
46
|
if (this->adc_) {
|
47
47
|
if (this->parent_->get_port() != I2S_NUM_0) {
|
48
|
-
ESP_LOGE(TAG, "Internal ADC only works on I2S0
|
48
|
+
ESP_LOGE(TAG, "Internal ADC only works on I2S0");
|
49
49
|
this->mark_failed();
|
50
50
|
return;
|
51
51
|
}
|
@@ -55,7 +55,7 @@ void I2SAudioMicrophone::setup() {
|
|
55
55
|
{
|
56
56
|
if (this->pdm_) {
|
57
57
|
if (this->parent_->get_port() != I2S_NUM_0) {
|
58
|
-
ESP_LOGE(TAG, "PDM only works on I2S0
|
58
|
+
ESP_LOGE(TAG, "PDM only works on I2S0");
|
59
59
|
this->mark_failed();
|
60
60
|
return;
|
61
61
|
}
|
@@ -64,14 +64,14 @@ void I2SAudioMicrophone::setup() {
|
|
64
64
|
|
65
65
|
this->active_listeners_semaphore_ = xSemaphoreCreateCounting(MAX_LISTENERS, MAX_LISTENERS);
|
66
66
|
if (this->active_listeners_semaphore_ == nullptr) {
|
67
|
-
ESP_LOGE(TAG, "
|
67
|
+
ESP_LOGE(TAG, "Creating semaphore failed");
|
68
68
|
this->mark_failed();
|
69
69
|
return;
|
70
70
|
}
|
71
71
|
|
72
72
|
this->event_group_ = xEventGroupCreate();
|
73
73
|
if (this->event_group_ == nullptr) {
|
74
|
-
ESP_LOGE(TAG, "
|
74
|
+
ESP_LOGE(TAG, "Creating event group failed");
|
75
75
|
this->mark_failed();
|
76
76
|
return;
|
77
77
|
}
|
@@ -79,6 +79,15 @@ void I2SAudioMicrophone::setup() {
|
|
79
79
|
this->configure_stream_settings_();
|
80
80
|
}
|
81
81
|
|
82
|
+
void I2SAudioMicrophone::dump_config() {
|
83
|
+
ESP_LOGCONFIG(TAG,
|
84
|
+
"Microphone:\n"
|
85
|
+
" Pin: %d\n"
|
86
|
+
" PDM: %s\n"
|
87
|
+
" DC offset correction: %s",
|
88
|
+
static_cast<int8_t>(this->din_pin_), YESNO(this->pdm_), YESNO(this->correct_dc_offset_));
|
89
|
+
}
|
90
|
+
|
82
91
|
void I2SAudioMicrophone::configure_stream_settings_() {
|
83
92
|
uint8_t channel_count = 1;
|
84
93
|
#ifdef USE_I2S_LEGACY
|
@@ -127,6 +136,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
127
136
|
if (!this->parent_->try_lock()) {
|
128
137
|
return false; // Waiting for another i2s to return lock
|
129
138
|
}
|
139
|
+
this->locked_driver_ = true;
|
130
140
|
esp_err_t err;
|
131
141
|
|
132
142
|
#ifdef USE_I2S_LEGACY
|
@@ -151,7 +161,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
151
161
|
config.mode = (i2s_mode_t) (config.mode | I2S_MODE_ADC_BUILT_IN);
|
152
162
|
err = i2s_driver_install(this->parent_->get_port(), &config, 0, nullptr);
|
153
163
|
if (err != ESP_OK) {
|
154
|
-
ESP_LOGE(TAG, "Error installing
|
164
|
+
ESP_LOGE(TAG, "Error installing driver: %s", esp_err_to_name(err));
|
155
165
|
return false;
|
156
166
|
}
|
157
167
|
|
@@ -174,7 +184,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
174
184
|
|
175
185
|
err = i2s_driver_install(this->parent_->get_port(), &config, 0, nullptr);
|
176
186
|
if (err != ESP_OK) {
|
177
|
-
ESP_LOGE(TAG, "Error installing
|
187
|
+
ESP_LOGE(TAG, "Error installing driver: %s", esp_err_to_name(err));
|
178
188
|
return false;
|
179
189
|
}
|
180
190
|
|
@@ -183,7 +193,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
183
193
|
|
184
194
|
err = i2s_set_pin(this->parent_->get_port(), &pin_config);
|
185
195
|
if (err != ESP_OK) {
|
186
|
-
ESP_LOGE(TAG, "Error setting
|
196
|
+
ESP_LOGE(TAG, "Error setting pin: %s", esp_err_to_name(err));
|
187
197
|
return false;
|
188
198
|
}
|
189
199
|
}
|
@@ -198,7 +208,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
198
208
|
/* Allocate a new RX channel and get the handle of this channel */
|
199
209
|
err = i2s_new_channel(&chan_cfg, NULL, &this->rx_handle_);
|
200
210
|
if (err != ESP_OK) {
|
201
|
-
ESP_LOGE(TAG, "Error creating
|
211
|
+
ESP_LOGE(TAG, "Error creating channel: %s", esp_err_to_name(err));
|
202
212
|
return false;
|
203
213
|
}
|
204
214
|
|
@@ -270,14 +280,14 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
270
280
|
err = i2s_channel_init_std_mode(this->rx_handle_, &std_cfg);
|
271
281
|
}
|
272
282
|
if (err != ESP_OK) {
|
273
|
-
ESP_LOGE(TAG, "Error initializing
|
283
|
+
ESP_LOGE(TAG, "Error initializing channel: %s", esp_err_to_name(err));
|
274
284
|
return false;
|
275
285
|
}
|
276
286
|
|
277
287
|
/* Before reading data, start the RX channel first */
|
278
288
|
i2s_channel_enable(this->rx_handle_);
|
279
289
|
if (err != ESP_OK) {
|
280
|
-
ESP_LOGE(TAG, "
|
290
|
+
ESP_LOGE(TAG, "Enabling failed: %s", esp_err_to_name(err));
|
281
291
|
return false;
|
282
292
|
}
|
283
293
|
#endif
|
@@ -304,31 +314,37 @@ void I2SAudioMicrophone::stop_driver_() {
|
|
304
314
|
if (this->adc_) {
|
305
315
|
err = i2s_adc_disable(this->parent_->get_port());
|
306
316
|
if (err != ESP_OK) {
|
307
|
-
ESP_LOGW(TAG, "Error disabling ADC
|
317
|
+
ESP_LOGW(TAG, "Error disabling ADC: %s", esp_err_to_name(err));
|
308
318
|
}
|
309
319
|
}
|
310
320
|
#endif
|
311
321
|
err = i2s_stop(this->parent_->get_port());
|
312
322
|
if (err != ESP_OK) {
|
313
|
-
ESP_LOGW(TAG, "Error stopping
|
323
|
+
ESP_LOGW(TAG, "Error stopping: %s", esp_err_to_name(err));
|
314
324
|
}
|
315
325
|
err = i2s_driver_uninstall(this->parent_->get_port());
|
316
326
|
if (err != ESP_OK) {
|
317
|
-
ESP_LOGW(TAG, "Error uninstalling
|
327
|
+
ESP_LOGW(TAG, "Error uninstalling driver: %s", esp_err_to_name(err));
|
318
328
|
}
|
319
329
|
#else
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
330
|
+
if (this->rx_handle_ != nullptr) {
|
331
|
+
/* Have to stop the channel before deleting it */
|
332
|
+
err = i2s_channel_disable(this->rx_handle_);
|
333
|
+
if (err != ESP_OK) {
|
334
|
+
ESP_LOGW(TAG, "Error stopping: %s", esp_err_to_name(err));
|
335
|
+
}
|
336
|
+
/* If the handle is not needed any more, delete it to release the channel resources */
|
337
|
+
err = i2s_del_channel(this->rx_handle_);
|
338
|
+
if (err != ESP_OK) {
|
339
|
+
ESP_LOGW(TAG, "Error deleting channel: %s", esp_err_to_name(err));
|
340
|
+
}
|
341
|
+
this->rx_handle_ = nullptr;
|
329
342
|
}
|
330
343
|
#endif
|
331
|
-
this->
|
344
|
+
if (this->locked_driver_) {
|
345
|
+
this->parent_->unlock();
|
346
|
+
this->locked_driver_ = false;
|
347
|
+
}
|
332
348
|
}
|
333
349
|
|
334
350
|
void I2SAudioMicrophone::mic_task(void *params) {
|
@@ -400,7 +416,7 @@ size_t I2SAudioMicrophone::read_(uint8_t *buf, size_t len, TickType_t ticks_to_w
|
|
400
416
|
// Ignore ESP_ERR_TIMEOUT if ticks_to_wait = 0, as it will read the data on the next call
|
401
417
|
if (!this->status_has_warning()) {
|
402
418
|
// Avoid spamming the logs with the error message if its repeated
|
403
|
-
ESP_LOGW(TAG, "
|
419
|
+
ESP_LOGW(TAG, "Read error: %s", esp_err_to_name(err));
|
404
420
|
}
|
405
421
|
this->status_set_warning();
|
406
422
|
return 0;
|
@@ -428,19 +444,19 @@ void I2SAudioMicrophone::loop() {
|
|
428
444
|
uint32_t event_group_bits = xEventGroupGetBits(this->event_group_);
|
429
445
|
|
430
446
|
if (event_group_bits & MicrophoneEventGroupBits::TASK_STARTING) {
|
431
|
-
|
447
|
+
ESP_LOGV(TAG, "Task started, attempting to allocate buffer");
|
432
448
|
xEventGroupClearBits(this->event_group_, MicrophoneEventGroupBits::TASK_STARTING);
|
433
449
|
}
|
434
450
|
|
435
451
|
if (event_group_bits & MicrophoneEventGroupBits::TASK_RUNNING) {
|
436
|
-
|
452
|
+
ESP_LOGV(TAG, "Task is running and reading data");
|
437
453
|
|
438
454
|
xEventGroupClearBits(this->event_group_, MicrophoneEventGroupBits::TASK_RUNNING);
|
439
455
|
this->state_ = microphone::STATE_RUNNING;
|
440
456
|
}
|
441
457
|
|
442
458
|
if ((event_group_bits & MicrophoneEventGroupBits::TASK_STOPPED)) {
|
443
|
-
|
459
|
+
ESP_LOGV(TAG, "Task finished, freeing resources and uninstalling driver");
|
444
460
|
|
445
461
|
vTaskDelete(this->task_handle_);
|
446
462
|
this->task_handle_ = nullptr;
|
@@ -470,7 +486,8 @@ void I2SAudioMicrophone::loop() {
|
|
470
486
|
}
|
471
487
|
|
472
488
|
if (!this->start_driver_()) {
|
473
|
-
|
489
|
+
ESP_LOGE(TAG, "Driver failed to start; retrying in 1 second");
|
490
|
+
this->status_momentary_error("driver_fail", 1000);
|
474
491
|
this->stop_driver_(); // Stop/frees whatever possibly started
|
475
492
|
break;
|
476
493
|
}
|
@@ -480,7 +497,8 @@ void I2SAudioMicrophone::loop() {
|
|
480
497
|
&this->task_handle_);
|
481
498
|
|
482
499
|
if (this->task_handle_ == nullptr) {
|
483
|
-
|
500
|
+
ESP_LOGE(TAG, "Task failed to start, retrying in 1 second");
|
501
|
+
this->status_momentary_error("task_fail", 1000);
|
484
502
|
this->stop_driver_(); // Stops the driver to return the lock; will be reloaded in next attempt
|
485
503
|
}
|
486
504
|
}
|
@@ -18,6 +18,7 @@ namespace i2s_audio {
|
|
18
18
|
class I2SAudioMicrophone : public I2SAudioIn, public microphone::Microphone, public Component {
|
19
19
|
public:
|
20
20
|
void setup() override;
|
21
|
+
void dump_config() override;
|
21
22
|
void start() override;
|
22
23
|
void stop() override;
|
23
24
|
|
@@ -80,6 +81,7 @@ class I2SAudioMicrophone : public I2SAudioIn, public microphone::Microphone, pub
|
|
80
81
|
bool pdm_{false};
|
81
82
|
|
82
83
|
bool correct_dc_offset_;
|
84
|
+
bool locked_driver_{false};
|
83
85
|
int32_t dc_offset_{0};
|
84
86
|
};
|
85
87
|
|
@@ -99,7 +99,7 @@ static const std::vector<int16_t> Q15_VOLUME_SCALING_FACTORS = {
|
|
99
99
|
19508, 20665, 21891, 23189, 24565, 26022, 27566, 29201, 30933, 32767};
|
100
100
|
|
101
101
|
void I2SAudioSpeaker::setup() {
|
102
|
-
ESP_LOGCONFIG(TAG, "
|
102
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
103
103
|
|
104
104
|
this->event_group_ = xEventGroupCreate();
|
105
105
|
|
@@ -110,29 +110,48 @@ void I2SAudioSpeaker::setup() {
|
|
110
110
|
}
|
111
111
|
}
|
112
112
|
|
113
|
+
void I2SAudioSpeaker::dump_config() {
|
114
|
+
ESP_LOGCONFIG(TAG,
|
115
|
+
"Speaker:\n"
|
116
|
+
" Pin: %d\n"
|
117
|
+
" Buffer duration: %" PRIu32,
|
118
|
+
static_cast<int8_t>(this->dout_pin_), this->buffer_duration_ms_);
|
119
|
+
if (this->timeout_.has_value()) {
|
120
|
+
ESP_LOGCONFIG(TAG, " Timeout: %" PRIu32 " ms", this->timeout_.value());
|
121
|
+
}
|
122
|
+
#ifdef USE_I2S_LEGACY
|
123
|
+
#if SOC_I2S_SUPPORTS_DAC
|
124
|
+
ESP_LOGCONFIG(TAG, " Internal DAC mode: %d", static_cast<int8_t>(this->internal_dac_mode_));
|
125
|
+
#endif
|
126
|
+
ESP_LOGCONFIG(TAG, " Communication format: %d", static_cast<int8_t>(this->i2s_comm_fmt_));
|
127
|
+
#else
|
128
|
+
ESP_LOGCONFIG(TAG, " Communication format: %s", this->i2s_comm_fmt_.c_str());
|
129
|
+
#endif
|
130
|
+
}
|
131
|
+
|
113
132
|
void I2SAudioSpeaker::loop() {
|
114
133
|
uint32_t event_group_bits = xEventGroupGetBits(this->event_group_);
|
115
134
|
|
116
135
|
if (event_group_bits & SpeakerEventGroupBits::STATE_STARTING) {
|
117
|
-
ESP_LOGD(TAG, "Starting
|
136
|
+
ESP_LOGD(TAG, "Starting");
|
118
137
|
this->state_ = speaker::STATE_STARTING;
|
119
138
|
xEventGroupClearBits(this->event_group_, SpeakerEventGroupBits::STATE_STARTING);
|
120
139
|
}
|
121
140
|
if (event_group_bits & SpeakerEventGroupBits::STATE_RUNNING) {
|
122
|
-
ESP_LOGD(TAG, "Started
|
141
|
+
ESP_LOGD(TAG, "Started");
|
123
142
|
this->state_ = speaker::STATE_RUNNING;
|
124
143
|
xEventGroupClearBits(this->event_group_, SpeakerEventGroupBits::STATE_RUNNING);
|
125
144
|
this->status_clear_warning();
|
126
145
|
this->status_clear_error();
|
127
146
|
}
|
128
147
|
if (event_group_bits & SpeakerEventGroupBits::STATE_STOPPING) {
|
129
|
-
ESP_LOGD(TAG, "Stopping
|
148
|
+
ESP_LOGD(TAG, "Stopping");
|
130
149
|
this->state_ = speaker::STATE_STOPPING;
|
131
150
|
xEventGroupClearBits(this->event_group_, SpeakerEventGroupBits::STATE_STOPPING);
|
132
151
|
}
|
133
152
|
if (event_group_bits & SpeakerEventGroupBits::STATE_STOPPED) {
|
134
153
|
if (!this->task_created_) {
|
135
|
-
ESP_LOGD(TAG, "Stopped
|
154
|
+
ESP_LOGD(TAG, "Stopped");
|
136
155
|
this->state_ = speaker::STATE_STOPPED;
|
137
156
|
xEventGroupClearBits(this->event_group_, SpeakerEventGroupBits::ALL_BITS);
|
138
157
|
this->speaker_task_handle_ = nullptr;
|
@@ -140,20 +159,19 @@ void I2SAudioSpeaker::loop() {
|
|
140
159
|
}
|
141
160
|
|
142
161
|
if (event_group_bits & SpeakerEventGroupBits::ERR_TASK_FAILED_TO_START) {
|
143
|
-
this->status_set_error("Failed to start
|
162
|
+
this->status_set_error("Failed to start task");
|
144
163
|
xEventGroupClearBits(this->event_group_, SpeakerEventGroupBits::ERR_TASK_FAILED_TO_START);
|
145
164
|
}
|
146
165
|
|
147
166
|
if (event_group_bits & SpeakerEventGroupBits::ALL_ERR_ESP_BITS) {
|
148
167
|
uint32_t error_bits = event_group_bits & SpeakerEventGroupBits::ALL_ERR_ESP_BITS;
|
149
|
-
ESP_LOGW(TAG, "
|
168
|
+
ESP_LOGW(TAG, "Writing failed: %s", esp_err_to_name(err_bit_to_esp_err(error_bits)));
|
150
169
|
this->status_set_warning();
|
151
170
|
}
|
152
171
|
|
153
172
|
if (event_group_bits & SpeakerEventGroupBits::ERR_ESP_NOT_SUPPORTED) {
|
154
|
-
this->status_set_error("Failed to adjust
|
155
|
-
ESP_LOGE(TAG,
|
156
|
-
"Incompatible audio format: sample rate = %" PRIu32 ", channels = %" PRIu8 ", bits per sample = %" PRIu8,
|
173
|
+
this->status_set_error("Failed to adjust bus to match incoming audio");
|
174
|
+
ESP_LOGE(TAG, "Incompatible audio format: sample rate = %" PRIu32 ", channels = %u, bits per sample = %u",
|
157
175
|
this->audio_stream_info_.get_sample_rate(), this->audio_stream_info_.get_channels(),
|
158
176
|
this->audio_stream_info_.get_bits_per_sample());
|
159
177
|
}
|
@@ -202,7 +220,7 @@ void I2SAudioSpeaker::set_mute_state(bool mute_state) {
|
|
202
220
|
|
203
221
|
size_t I2SAudioSpeaker::play(const uint8_t *data, size_t length, TickType_t ticks_to_wait) {
|
204
222
|
if (this->is_failed()) {
|
205
|
-
ESP_LOGE(TAG, "
|
223
|
+
ESP_LOGE(TAG, "Setup failed; cannot play audio");
|
206
224
|
return 0;
|
207
225
|
}
|
208
226
|
if (this->state_ != speaker::STATE_RUNNING && this->state_ != speaker::STATE_STARTING) {
|
@@ -24,6 +24,7 @@ class I2SAudioSpeaker : public I2SAudioOut, public speaker::Speaker, public Comp
|
|
24
24
|
float get_setup_priority() const override { return esphome::setup_priority::PROCESSOR; }
|
25
25
|
|
26
26
|
void setup() override;
|
27
|
+
void dump_config() override;
|
27
28
|
void loop() override;
|
28
29
|
|
29
30
|
void set_buffer_duration(uint32_t buffer_duration_ms) { this->buffer_duration_ms_ = buffer_duration_ms; }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#include "iaqcore.h"
|
2
|
-
#include "esphome/core/log.h"
|
3
2
|
#include "esphome/core/hal.h"
|
4
3
|
#include "esphome/core/helpers.h"
|
4
|
+
#include "esphome/core/log.h"
|
5
5
|
|
6
6
|
namespace esphome {
|
7
7
|
namespace iaqcore {
|
@@ -26,7 +26,7 @@ struct SensorData {
|
|
26
26
|
|
27
27
|
void IAQCore::setup() {
|
28
28
|
if (this->write(nullptr, 0) != i2c::ERROR_OK) {
|
29
|
-
ESP_LOGD(TAG,
|
29
|
+
ESP_LOGD(TAG, ESP_LOG_MSG_COMM_FAIL);
|
30
30
|
this->mark_failed();
|
31
31
|
return;
|
32
32
|
}
|
@@ -89,7 +89,7 @@ void IAQCore::dump_config() {
|
|
89
89
|
LOG_I2C_DEVICE(this);
|
90
90
|
LOG_UPDATE_INTERVAL(this);
|
91
91
|
if (this->is_failed()) {
|
92
|
-
ESP_LOGE(TAG,
|
92
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
93
93
|
}
|
94
94
|
LOG_SENSOR(" ", "CO2", this->co2_);
|
95
95
|
LOG_SENSOR(" ", "TVOC", this->tvoc_);
|
@@ -89,8 +89,10 @@ void ILI9XXXDisplay::setup_pins_() {
|
|
89
89
|
|
90
90
|
void ILI9XXXDisplay::dump_config() {
|
91
91
|
LOG_DISPLAY("", "ili9xxx", this);
|
92
|
-
ESP_LOGCONFIG(TAG,
|
93
|
-
|
92
|
+
ESP_LOGCONFIG(TAG,
|
93
|
+
" Width Offset: %u\n"
|
94
|
+
" Height Offset: %u",
|
95
|
+
this->offset_x_, this->offset_y_);
|
94
96
|
switch (this->buffer_color_mode_) {
|
95
97
|
case BITS_8_INDEXED:
|
96
98
|
ESP_LOGCONFIG(TAG, " Color mode: 8bit Indexed");
|
@@ -111,11 +113,14 @@ void ILI9XXXDisplay::dump_config() {
|
|
111
113
|
LOG_PIN(" CS Pin: ", this->cs_);
|
112
114
|
LOG_PIN(" DC Pin: ", this->dc_pin_);
|
113
115
|
LOG_PIN(" Busy Pin: ", this->busy_pin_);
|
114
|
-
ESP_LOGCONFIG(TAG,
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
116
|
+
ESP_LOGCONFIG(TAG,
|
117
|
+
" Color order: %s\n"
|
118
|
+
" Swap_xy: %s\n"
|
119
|
+
" Mirror_x: %s\n"
|
120
|
+
" Mirror_y: %s\n"
|
121
|
+
" Invert colors: %s",
|
122
|
+
this->color_order_ == display::COLOR_ORDER_BGR ? "BGR" : "RGB", YESNO(this->swap_xy_),
|
123
|
+
YESNO(this->mirror_x_), YESNO(this->mirror_y_), YESNO(this->pre_invertcolors_));
|
119
124
|
|
120
125
|
if (this->is_failed()) {
|
121
126
|
ESP_LOGCONFIG(TAG, " => Failed to init Memory: YES!");
|
@@ -89,7 +89,7 @@ class ILI9XXXDisplay : public display::DisplayBuffer,
|
|
89
89
|
|
90
90
|
void dump_config() override;
|
91
91
|
void setup() override;
|
92
|
-
void
|
92
|
+
void on_powerdown() override { this->command(ILI9XXX_SLPIN); }
|
93
93
|
|
94
94
|
display::DisplayType get_display_type() override { return display::DisplayType::DISPLAY_TYPE_COLOR; }
|
95
95
|
void draw_pixels_at(int x_start, int y_start, int w, int h, const uint8_t *ptr, display::ColorOrder order,
|
@@ -34,7 +34,7 @@ static const uint8_t INA219_REGISTER_CURRENT = 0x04;
|
|
34
34
|
static const uint8_t INA219_REGISTER_CALIBRATION = 0x05;
|
35
35
|
|
36
36
|
void INA219Component::setup() {
|
37
|
-
ESP_LOGCONFIG(TAG, "
|
37
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
38
38
|
// Config Register
|
39
39
|
// 0bx000000000000000 << 15 RESET Bit (1 -> trigger reset)
|
40
40
|
if (!this->write_byte_16(INA219_REGISTER_CONFIG, 0x8000)) {
|
@@ -134,7 +134,7 @@ void INA219Component::dump_config() {
|
|
134
134
|
LOG_I2C_DEVICE(this);
|
135
135
|
|
136
136
|
if (this->is_failed()) {
|
137
|
-
ESP_LOGE(TAG,
|
137
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
138
138
|
return;
|
139
139
|
}
|
140
140
|
LOG_UPDATE_INTERVAL(this);
|
@@ -37,7 +37,7 @@ static const uint16_t INA226_ADC_TIMES[] = {140, 204, 332, 588, 1100, 2116, 4156
|
|
37
37
|
static const uint16_t INA226_ADC_AVG_SAMPLES[] = {1, 4, 16, 64, 128, 256, 512, 1024};
|
38
38
|
|
39
39
|
void INA226Component::setup() {
|
40
|
-
ESP_LOGCONFIG(TAG, "
|
40
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
41
41
|
|
42
42
|
ConfigurationRegister config;
|
43
43
|
|
@@ -88,14 +88,17 @@ void INA226Component::dump_config() {
|
|
88
88
|
LOG_I2C_DEVICE(this);
|
89
89
|
|
90
90
|
if (this->is_failed()) {
|
91
|
-
ESP_LOGE(TAG,
|
91
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
92
92
|
return;
|
93
93
|
}
|
94
94
|
LOG_UPDATE_INTERVAL(this);
|
95
95
|
|
96
|
-
ESP_LOGCONFIG(TAG,
|
97
|
-
|
98
|
-
|
96
|
+
ESP_LOGCONFIG(TAG,
|
97
|
+
" ADC Conversion Time Bus Voltage: %d\n"
|
98
|
+
" ADC Conversion Time Shunt Voltage: %d\n"
|
99
|
+
" ADC Averaging Samples: %d",
|
100
|
+
INA226_ADC_TIMES[this->adc_time_voltage_ & 0b111], INA226_ADC_TIMES[this->adc_time_current_ & 0b111],
|
101
|
+
INA226_ADC_AVG_SAMPLES[this->adc_avg_samples_ & 0b111]);
|
99
102
|
|
100
103
|
LOG_SENSOR(" ", "Bus Voltage", this->bus_voltage_sensor_);
|
101
104
|
LOG_SENSOR(" ", "Shunt Voltage", this->shunt_voltage_sensor_);
|
@@ -35,7 +35,7 @@ static const uint8_t INA260_REGISTER_MANUFACTURE_ID = 0xFE;
|
|
35
35
|
static const uint8_t INA260_REGISTER_DEVICE_ID = 0xFF;
|
36
36
|
|
37
37
|
void INA260Component::setup() {
|
38
|
-
ESP_LOGCONFIG(TAG, "
|
38
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
39
39
|
|
40
40
|
// Reset device on setup
|
41
41
|
if (!this->write_byte_16(INA260_REGISTER_CONFIG, 0x8000)) {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#include "ina2xx_base.h"
|
2
|
-
#include "esphome/core/log.h"
|
3
2
|
#include "esphome/core/hal.h"
|
4
3
|
#include "esphome/core/helpers.h"
|
4
|
+
#include "esphome/core/log.h"
|
5
5
|
#include <cinttypes>
|
6
6
|
#include <cmath>
|
7
7
|
|
@@ -50,7 +50,7 @@ static bool check_model_and_device_match(INAModel model, uint16_t dev_id) {
|
|
50
50
|
}
|
51
51
|
|
52
52
|
void INA2XX::setup() {
|
53
|
-
ESP_LOGCONFIG(TAG, "
|
53
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
54
54
|
|
55
55
|
if (!this->reset_config_()) {
|
56
56
|
ESP_LOGE(TAG, "Reset failed, check connection");
|
@@ -203,15 +203,19 @@ void INA2XX::dump_config() {
|
|
203
203
|
this->dev_id_);
|
204
204
|
}
|
205
205
|
if (this->is_failed()) {
|
206
|
-
ESP_LOGE(TAG,
|
206
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
207
207
|
}
|
208
208
|
LOG_UPDATE_INTERVAL(this);
|
209
|
-
ESP_LOGCONFIG(TAG,
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
209
|
+
ESP_LOGCONFIG(TAG,
|
210
|
+
" Shunt resistance = %f Ohm\n"
|
211
|
+
" Max current = %f A\n"
|
212
|
+
" Shunt temp coeff = %d ppm/°C\n"
|
213
|
+
" ADCRANGE = %d (%s)\n"
|
214
|
+
" CURRENT_LSB = %f\n"
|
215
|
+
" SHUNT_CAL = %d",
|
216
|
+
this->shunt_resistance_ohm_, this->max_current_a_, this->shunt_tempco_ppm_c_,
|
217
|
+
(uint8_t) this->adc_range_, this->adc_range_ ? "±40.96 mV" : "±163.84 mV", this->current_lsb_,
|
218
|
+
this->shunt_cal_);
|
215
219
|
|
216
220
|
ESP_LOGCONFIG(TAG, " ADC Samples = %d; ADC times: Bus = %d μs, Shunt = %d μs, Temp = %d μs",
|
217
221
|
ADC_SAMPLES[0b111 & (uint8_t) this->adc_avg_samples_],
|
@@ -22,7 +22,7 @@ static const uint8_t INA3221_REGISTER_CHANNEL3_BUS_VOLTAGE = 0x06;
|
|
22
22
|
// A0 = SCL -> 0x43
|
23
23
|
|
24
24
|
void INA3221Component::setup() {
|
25
|
-
ESP_LOGCONFIG(TAG, "
|
25
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
26
26
|
// Config Register
|
27
27
|
// 0bx000000000000000 << 15 RESET Bit (1 -> trigger reset)
|
28
28
|
if (!this->write_byte_16(INA3221_REGISTER_CONFIG, 0x8000)) {
|
@@ -60,7 +60,7 @@ void INA3221Component::dump_config() {
|
|
60
60
|
ESP_LOGCONFIG(TAG, "INA3221:");
|
61
61
|
LOG_I2C_DEVICE(this);
|
62
62
|
if (this->is_failed()) {
|
63
|
-
ESP_LOGE(TAG,
|
63
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
64
64
|
}
|
65
65
|
LOG_UPDATE_INTERVAL(this);
|
66
66
|
|
@@ -6,9 +6,12 @@ from esphome.const import (
|
|
6
6
|
CONF_FULL_UPDATE_EVERY,
|
7
7
|
CONF_ID,
|
8
8
|
CONF_LAMBDA,
|
9
|
+
CONF_MIRROR_X,
|
10
|
+
CONF_MIRROR_Y,
|
9
11
|
CONF_MODEL,
|
10
12
|
CONF_OE_PIN,
|
11
13
|
CONF_PAGES,
|
14
|
+
CONF_TRANSFORM,
|
12
15
|
CONF_WAKEUP_PIN,
|
13
16
|
)
|
14
17
|
|
@@ -36,7 +39,6 @@ CONF_SPH_PIN = "sph_pin"
|
|
36
39
|
CONF_SPV_PIN = "spv_pin"
|
37
40
|
CONF_VCOM_PIN = "vcom_pin"
|
38
41
|
|
39
|
-
|
40
42
|
inkplate6_ns = cg.esphome_ns.namespace("inkplate6")
|
41
43
|
Inkplate6 = inkplate6_ns.class_(
|
42
44
|
"Inkplate6",
|
@@ -62,6 +64,12 @@ CONFIG_SCHEMA = cv.All(
|
|
62
64
|
{
|
63
65
|
cv.GenerateID(): cv.declare_id(Inkplate6),
|
64
66
|
cv.Optional(CONF_GREYSCALE, default=False): cv.boolean,
|
67
|
+
cv.Optional(CONF_TRANSFORM): cv.Schema(
|
68
|
+
{
|
69
|
+
cv.Optional(CONF_MIRROR_X, default=False): cv.boolean,
|
70
|
+
cv.Optional(CONF_MIRROR_Y, default=False): cv.boolean,
|
71
|
+
}
|
72
|
+
),
|
65
73
|
cv.Optional(CONF_PARTIAL_UPDATING, default=True): cv.boolean,
|
66
74
|
cv.Optional(CONF_FULL_UPDATE_EVERY, default=10): cv.uint32_t,
|
67
75
|
cv.Optional(CONF_MODEL, default="inkplate_6"): cv.enum(
|
@@ -109,7 +117,6 @@ CONFIG_SCHEMA = cv.All(
|
|
109
117
|
.extend(cv.polling_component_schema("5s"))
|
110
118
|
.extend(i2c.i2c_device_schema(0x48)),
|
111
119
|
cv.has_at_most_one_key(CONF_PAGES, CONF_LAMBDA),
|
112
|
-
cv.only_with_arduino,
|
113
120
|
)
|
114
121
|
|
115
122
|
|
@@ -126,6 +133,9 @@ async def to_code(config):
|
|
126
133
|
cg.add(var.set_writer(lambda_))
|
127
134
|
|
128
135
|
cg.add(var.set_greyscale(config[CONF_GREYSCALE]))
|
136
|
+
if transform := config.get(CONF_TRANSFORM):
|
137
|
+
cg.add(var.set_mirror_x(transform[CONF_MIRROR_X]))
|
138
|
+
cg.add(var.set_mirror_y(transform[CONF_MIRROR_Y]))
|
129
139
|
cg.add(var.set_partial_updating(config[CONF_PARTIAL_UPDATING]))
|
130
140
|
cg.add(var.set_full_update_every(config[CONF_FULL_UPDATE_EVERY]))
|
131
141
|
|
@@ -1,11 +1,9 @@
|
|
1
1
|
#include "inkplate.h"
|
2
|
-
#include "esphome/core/log.h"
|
3
2
|
#include "esphome/core/application.h"
|
4
3
|
#include "esphome/core/helpers.h"
|
4
|
+
#include "esphome/core/log.h"
|
5
5
|
|
6
|
-
#
|
7
|
-
|
8
|
-
#include <esp32-hal-gpio.h>
|
6
|
+
#include <hal/gpio_hal.h>
|
9
7
|
|
10
8
|
namespace esphome {
|
11
9
|
namespace inkplate6 {
|
@@ -156,6 +154,12 @@ void HOT Inkplate6::draw_absolute_pixel_internal(int x, int y, Color color) {
|
|
156
154
|
if (x >= this->get_width_internal() || y >= this->get_height_internal() || x < 0 || y < 0)
|
157
155
|
return;
|
158
156
|
|
157
|
+
if (this->mirror_y_)
|
158
|
+
y = this->get_height_internal() - y - 1;
|
159
|
+
|
160
|
+
if (this->mirror_x_)
|
161
|
+
x = this->get_width_internal() - x - 1;
|
162
|
+
|
159
163
|
if (this->greyscale_) {
|
160
164
|
int x1 = x / 2;
|
161
165
|
int x_sub = x % 2;
|
@@ -180,9 +184,11 @@ void HOT Inkplate6::draw_absolute_pixel_internal(int x, int y, Color color) {
|
|
180
184
|
|
181
185
|
void Inkplate6::dump_config() {
|
182
186
|
LOG_DISPLAY("", "Inkplate", this);
|
183
|
-
ESP_LOGCONFIG(TAG,
|
184
|
-
|
185
|
-
|
187
|
+
ESP_LOGCONFIG(TAG,
|
188
|
+
" Greyscale: %s\n"
|
189
|
+
" Partial Updating: %s\n"
|
190
|
+
" Full Update Every: %d",
|
191
|
+
YESNO(this->greyscale_), YESNO(this->partial_updating_), this->full_update_every_);
|
186
192
|
// Log pins
|
187
193
|
LOG_PIN(" CKV Pin: ", this->ckv_pin_);
|
188
194
|
LOG_PIN(" CL Pin: ", this->cl_pin_);
|
@@ -715,5 +721,3 @@ void Inkplate6::pins_as_outputs_() {
|
|
715
721
|
|
716
722
|
} // namespace inkplate6
|
717
723
|
} // namespace esphome
|
718
|
-
|
719
|
-
#endif // USE_ESP32_FRAMEWORK_ARDUINO
|