esphome 2025.5.1__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 -5
- esphome/components/debug/debug_component.h +1 -1
- esphome/components/debug/debug_esp32.cpp +4 -2
- esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
- esphome/components/demo/__init__.py +206 -0
- esphome/components/demo/demo_alarm_control_panel.h +65 -0
- esphome/components/demo/demo_button.h +15 -0
- esphome/components/demo/demo_date.h +34 -0
- esphome/components/demo/demo_datetime.h +40 -0
- esphome/components/demo/demo_lock.h +17 -0
- esphome/components/demo/demo_select.h +15 -0
- esphome/components/demo/demo_text.h +18 -0
- esphome/components/demo/demo_time.h +34 -0
- esphome/components/demo/demo_valve.h +54 -0
- esphome/components/dfrobot_sen0395/commands.cpp +3 -3
- esphome/components/dht/dht.cpp +29 -50
- esphome/components/dht12/dht12.cpp +2 -2
- esphome/components/display/display.h +5 -3
- esphome/components/dps310/dps310.cpp +7 -5
- esphome/components/ds1307/ds1307.cpp +2 -2
- esphome/components/dsmr/dsmr.cpp +5 -3
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
- esphome/components/duty_time/duty_time_sensor.cpp +5 -3
- esphome/components/ee895/ee895.cpp +3 -3
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
- esphome/components/emc2101/emc2101.cpp +11 -9
- esphome/components/ens160_base/ens160_base.cpp +2 -2
- esphome/components/ens210/ens210.cpp +2 -2
- esphome/components/es7210/es7210.cpp +6 -4
- esphome/components/es7243e/es7243e.cpp +1 -1
- esphome/components/es8156/es8156.cpp +1 -1
- esphome/components/es8311/es8311.cpp +8 -6
- esphome/components/es8388/__init__.py +0 -0
- esphome/components/es8388/audio_dac.py +26 -0
- esphome/components/es8388/es8388.cpp +289 -0
- esphome/components/es8388/es8388.h +81 -0
- esphome/components/es8388/es8388_const.h +83 -0
- esphome/components/es8388/select/__init__.py +47 -0
- esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
- esphome/components/es8388/select/adc_input_mic_select.h +15 -0
- esphome/components/es8388/select/dac_output_select.cpp +12 -0
- esphome/components/es8388/select/dac_output_select.h +15 -0
- esphome/components/esp32/__init__.py +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/gpio.cpp +10 -1
- esphome/components/esp8266/preferences.cpp +6 -6
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
- esphome/components/esp_ldo/__init__.py +91 -0
- esphome/components/esp_ldo/esp_ldo.cpp +43 -0
- esphome/components/esp_ldo/esp_ldo.h +43 -0
- esphome/components/esphome/ota/ota_esphome.cpp +15 -8
- esphome/components/ethernet/ethernet_component.cpp +38 -26
- esphome/components/ethernet/ethernet_component.h +1 -1
- esphome/components/event/__init__.py +1 -0
- esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
- esphome/components/ezo/ezo.cpp +1 -1
- esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
- esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
- esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
- esphome/components/fan/__init__.py +1 -0
- esphome/components/fan/fan.cpp +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 +54 -64
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -0
- 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.h +4 -4
- 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/gpio.cpp +26 -9
- esphome/components/rp2040/preferences.cpp +3 -3
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
- esphome/components/rp2040_pio_led_strip/light.py +1 -1
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
- esphome/components/rtttl/rtttl.cpp +11 -9
- esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
- esphome/components/safe_mode/safe_mode.cpp +9 -8
- esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
- esphome/components/scd30/scd30.cpp +11 -8
- esphome/components/scd4x/scd4x.cpp +12 -8
- esphome/components/sdl/display.py +40 -0
- esphome/components/sdl/sdl_esphome.cpp +2 -2
- esphome/components/sdl/sdl_esphome.h +8 -0
- esphome/components/sdm_meter/sdm_meter.cpp +5 -2
- esphome/components/sdp3x/sdp3x.cpp +11 -11
- esphome/components/sds011/sds011.cpp +5 -6
- esphome/components/sds011/sds011.h +4 -1
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
- esphome/components/selec_meter/selec_meter.cpp +5 -2
- esphome/components/select/__init__.py +1 -0
- esphome/components/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/hal.h +5 -0
- 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.1.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +720 -667
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -30,17 +30,17 @@ static const int32_t DC_OFFSET_MOVING_AVERAGE_COEFFICIENT_DENOMINATOR = 1000;
|
|
30
30
|
static const char *const TAG = "i2s_audio.microphone";
|
31
31
|
|
32
32
|
enum MicrophoneEventGroupBits : uint32_t {
|
33
|
-
COMMAND_STOP = (1 << 0), // stops the microphone task
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
TASK_STOPPED = (1 << 13),
|
33
|
+
COMMAND_STOP = (1 << 0), // stops the microphone task, set and cleared by ``loop``
|
34
|
+
|
35
|
+
TASK_STARTING = (1 << 10), // set by mic task, cleared by ``loop``
|
36
|
+
TASK_RUNNING = (1 << 11), // set by mic task, cleared by ``loop``
|
37
|
+
TASK_STOPPED = (1 << 13), // set by mic task, cleared by ``loop``
|
38
38
|
|
39
39
|
ALL_BITS = 0x00FFFFFF, // All valid FreeRTOS event group bits
|
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_) {
|
@@ -151,24 +151,21 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
151
151
|
config.mode = (i2s_mode_t) (config.mode | I2S_MODE_ADC_BUILT_IN);
|
152
152
|
err = i2s_driver_install(this->parent_->get_port(), &config, 0, nullptr);
|
153
153
|
if (err != ESP_OK) {
|
154
|
-
|
155
|
-
this->status_set_error();
|
154
|
+
ESP_LOGE(TAG, "Error installing I2S driver: %s", esp_err_to_name(err));
|
156
155
|
return false;
|
157
156
|
}
|
158
157
|
|
159
158
|
err = i2s_set_adc_mode(ADC_UNIT_1, this->adc_channel_);
|
160
159
|
if (err != ESP_OK) {
|
161
|
-
|
162
|
-
this->status_set_error();
|
160
|
+
ESP_LOGE(TAG, "Error setting ADC mode: %s", esp_err_to_name(err));
|
163
161
|
return false;
|
164
162
|
}
|
163
|
+
|
165
164
|
err = i2s_adc_enable(this->parent_->get_port());
|
166
165
|
if (err != ESP_OK) {
|
167
|
-
|
168
|
-
this->status_set_error();
|
166
|
+
ESP_LOGE(TAG, "Error enabling ADC: %s", esp_err_to_name(err));
|
169
167
|
return false;
|
170
168
|
}
|
171
|
-
|
172
169
|
} else
|
173
170
|
#endif
|
174
171
|
{
|
@@ -177,8 +174,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
177
174
|
|
178
175
|
err = i2s_driver_install(this->parent_->get_port(), &config, 0, nullptr);
|
179
176
|
if (err != ESP_OK) {
|
180
|
-
|
181
|
-
this->status_set_error();
|
177
|
+
ESP_LOGE(TAG, "Error installing I2S driver: %s", esp_err_to_name(err));
|
182
178
|
return false;
|
183
179
|
}
|
184
180
|
|
@@ -187,8 +183,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
187
183
|
|
188
184
|
err = i2s_set_pin(this->parent_->get_port(), &pin_config);
|
189
185
|
if (err != ESP_OK) {
|
190
|
-
|
191
|
-
this->status_set_error();
|
186
|
+
ESP_LOGE(TAG, "Error setting I2S pin: %s", esp_err_to_name(err));
|
192
187
|
return false;
|
193
188
|
}
|
194
189
|
}
|
@@ -203,8 +198,7 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
203
198
|
/* Allocate a new RX channel and get the handle of this channel */
|
204
199
|
err = i2s_new_channel(&chan_cfg, NULL, &this->rx_handle_);
|
205
200
|
if (err != ESP_OK) {
|
206
|
-
|
207
|
-
this->status_set_error();
|
201
|
+
ESP_LOGE(TAG, "Error creating new I2S channel: %s", esp_err_to_name(err));
|
208
202
|
return false;
|
209
203
|
}
|
210
204
|
|
@@ -276,22 +270,20 @@ bool I2SAudioMicrophone::start_driver_() {
|
|
276
270
|
err = i2s_channel_init_std_mode(this->rx_handle_, &std_cfg);
|
277
271
|
}
|
278
272
|
if (err != ESP_OK) {
|
279
|
-
|
280
|
-
this->status_set_error();
|
273
|
+
ESP_LOGE(TAG, "Error initializing I2S channel: %s", esp_err_to_name(err));
|
281
274
|
return false;
|
282
275
|
}
|
283
276
|
|
284
277
|
/* Before reading data, start the RX channel first */
|
285
278
|
i2s_channel_enable(this->rx_handle_);
|
286
279
|
if (err != ESP_OK) {
|
287
|
-
|
288
|
-
this->status_set_error();
|
280
|
+
ESP_LOGE(TAG, "Error enabling I2S Microphone: %s", esp_err_to_name(err));
|
289
281
|
return false;
|
290
282
|
}
|
291
283
|
#endif
|
292
284
|
|
293
|
-
this->status_clear_error();
|
294
285
|
this->configure_stream_settings_(); // redetermine the settings in case some settings were changed after compilation
|
286
|
+
|
295
287
|
return true;
|
296
288
|
}
|
297
289
|
|
@@ -303,71 +295,55 @@ void I2SAudioMicrophone::stop() {
|
|
303
295
|
}
|
304
296
|
|
305
297
|
void I2SAudioMicrophone::stop_driver_() {
|
298
|
+
// There is no harm continuing to unload the driver if an error is ever returned by the various functions. This
|
299
|
+
// ensures that we stop/unload the driver when it only partially starts.
|
300
|
+
|
306
301
|
esp_err_t err;
|
307
302
|
#ifdef USE_I2S_LEGACY
|
308
303
|
#if SOC_I2S_SUPPORTS_ADC
|
309
304
|
if (this->adc_) {
|
310
305
|
err = i2s_adc_disable(this->parent_->get_port());
|
311
306
|
if (err != ESP_OK) {
|
312
|
-
ESP_LOGW(TAG, "Error disabling ADC: %s", esp_err_to_name(err));
|
313
|
-
this->status_set_error();
|
314
|
-
return;
|
307
|
+
ESP_LOGW(TAG, "Error disabling ADC - it may not have started: %s", esp_err_to_name(err));
|
315
308
|
}
|
316
309
|
}
|
317
310
|
#endif
|
318
311
|
err = i2s_stop(this->parent_->get_port());
|
319
312
|
if (err != ESP_OK) {
|
320
|
-
ESP_LOGW(TAG, "Error stopping I2S microphone: %s", esp_err_to_name(err));
|
321
|
-
this->status_set_error();
|
322
|
-
return;
|
313
|
+
ESP_LOGW(TAG, "Error stopping I2S microphone - it may not have started: %s", esp_err_to_name(err));
|
323
314
|
}
|
324
315
|
err = i2s_driver_uninstall(this->parent_->get_port());
|
325
316
|
if (err != ESP_OK) {
|
326
|
-
ESP_LOGW(TAG, "Error uninstalling I2S driver: %s", esp_err_to_name(err));
|
327
|
-
this->status_set_error();
|
328
|
-
return;
|
317
|
+
ESP_LOGW(TAG, "Error uninstalling I2S driver - it may not have started: %s", esp_err_to_name(err));
|
329
318
|
}
|
330
319
|
#else
|
331
320
|
/* Have to stop the channel before deleting it */
|
332
321
|
err = i2s_channel_disable(this->rx_handle_);
|
333
322
|
if (err != ESP_OK) {
|
334
|
-
ESP_LOGW(TAG, "Error stopping I2S microphone: %s", esp_err_to_name(err));
|
335
|
-
this->status_set_error();
|
336
|
-
return;
|
323
|
+
ESP_LOGW(TAG, "Error stopping I2S microphone - it may not have started: %s", esp_err_to_name(err));
|
337
324
|
}
|
338
325
|
/* If the handle is not needed any more, delete it to release the channel resources */
|
339
326
|
err = i2s_del_channel(this->rx_handle_);
|
340
327
|
if (err != ESP_OK) {
|
341
|
-
ESP_LOGW(TAG, "Error deleting I2S channel: %s", esp_err_to_name(err));
|
342
|
-
this->status_set_error();
|
343
|
-
return;
|
328
|
+
ESP_LOGW(TAG, "Error deleting I2S channel - it may not have started: %s", esp_err_to_name(err));
|
344
329
|
}
|
345
330
|
#endif
|
346
331
|
this->parent_->unlock();
|
347
|
-
this->status_clear_error();
|
348
332
|
}
|
349
333
|
|
350
334
|
void I2SAudioMicrophone::mic_task(void *params) {
|
351
335
|
I2SAudioMicrophone *this_microphone = (I2SAudioMicrophone *) params;
|
352
|
-
|
353
336
|
xEventGroupSetBits(this_microphone->event_group_, MicrophoneEventGroupBits::TASK_STARTING);
|
354
337
|
|
355
|
-
|
356
|
-
bool started = this_microphone->start_driver_();
|
357
|
-
while (!started && start_counter < 10) {
|
358
|
-
// Attempt to load the driver again in 100 ms. Doesn't slow down main loop since its in a task.
|
359
|
-
vTaskDelay(pdMS_TO_TICKS(100));
|
360
|
-
++start_counter;
|
361
|
-
started = this_microphone->start_driver_();
|
362
|
-
}
|
338
|
+
{ // Ensures the samples vector is freed when the task stops
|
363
339
|
|
364
|
-
if (started) {
|
365
|
-
xEventGroupSetBits(this_microphone->event_group_, MicrophoneEventGroupBits::TASK_RUNNING);
|
366
340
|
const size_t bytes_to_read = this_microphone->audio_stream_info_.ms_to_bytes(READ_DURATION_MS);
|
367
341
|
std::vector<uint8_t> samples;
|
368
342
|
samples.reserve(bytes_to_read);
|
369
343
|
|
370
|
-
|
344
|
+
xEventGroupSetBits(this_microphone->event_group_, MicrophoneEventGroupBits::TASK_RUNNING);
|
345
|
+
|
346
|
+
while (!(xEventGroupGetBits(this_microphone->event_group_) & MicrophoneEventGroupBits::COMMAND_STOP)) {
|
371
347
|
if (this_microphone->data_callbacks_.size() > 0) {
|
372
348
|
samples.resize(bytes_to_read);
|
373
349
|
size_t bytes_read = this_microphone->read_(samples.data(), bytes_to_read, 2 * pdMS_TO_TICKS(READ_DURATION_MS));
|
@@ -382,9 +358,6 @@ void I2SAudioMicrophone::mic_task(void *params) {
|
|
382
358
|
}
|
383
359
|
}
|
384
360
|
|
385
|
-
xEventGroupSetBits(this_microphone->event_group_, MicrophoneEventGroupBits::TASK_STOPPING);
|
386
|
-
this_microphone->stop_driver_();
|
387
|
-
|
388
361
|
xEventGroupSetBits(this_microphone->event_group_, MicrophoneEventGroupBits::TASK_STOPPED);
|
389
362
|
while (true) {
|
390
363
|
// Continuously delay until the loop method deletes the task
|
@@ -425,7 +398,10 @@ size_t I2SAudioMicrophone::read_(uint8_t *buf, size_t len, TickType_t ticks_to_w
|
|
425
398
|
#endif
|
426
399
|
if ((err != ESP_OK) && ((err != ESP_ERR_TIMEOUT) || (ticks_to_wait != 0))) {
|
427
400
|
// Ignore ESP_ERR_TIMEOUT if ticks_to_wait = 0, as it will read the data on the next call
|
428
|
-
|
401
|
+
if (!this->status_has_warning()) {
|
402
|
+
// Avoid spamming the logs with the error message if its repeated
|
403
|
+
ESP_LOGW(TAG, "Error reading from I2S microphone: %s", esp_err_to_name(err));
|
404
|
+
}
|
429
405
|
this->status_set_warning();
|
430
406
|
return 0;
|
431
407
|
}
|
@@ -452,7 +428,7 @@ void I2SAudioMicrophone::loop() {
|
|
452
428
|
uint32_t event_group_bits = xEventGroupGetBits(this->event_group_);
|
453
429
|
|
454
430
|
if (event_group_bits & MicrophoneEventGroupBits::TASK_STARTING) {
|
455
|
-
ESP_LOGD(TAG, "Task
|
431
|
+
ESP_LOGD(TAG, "Task started, attempting to allocate buffer");
|
456
432
|
xEventGroupClearBits(this->event_group_, MicrophoneEventGroupBits::TASK_STARTING);
|
457
433
|
}
|
458
434
|
|
@@ -463,23 +439,25 @@ void I2SAudioMicrophone::loop() {
|
|
463
439
|
this->state_ = microphone::STATE_RUNNING;
|
464
440
|
}
|
465
441
|
|
466
|
-
if (event_group_bits & MicrophoneEventGroupBits::TASK_STOPPING) {
|
467
|
-
ESP_LOGD(TAG, "Task is stopping, attempting to unload the I2S audio driver");
|
468
|
-
xEventGroupClearBits(this->event_group_, MicrophoneEventGroupBits::TASK_STOPPING);
|
469
|
-
}
|
470
|
-
|
471
442
|
if ((event_group_bits & MicrophoneEventGroupBits::TASK_STOPPED)) {
|
472
|
-
ESP_LOGD(TAG, "Task
|
443
|
+
ESP_LOGD(TAG, "Task finished, freeing resources and uninstalling I2S driver");
|
444
|
+
|
473
445
|
vTaskDelete(this->task_handle_);
|
474
446
|
this->task_handle_ = nullptr;
|
447
|
+
this->stop_driver_();
|
475
448
|
xEventGroupClearBits(this->event_group_, ALL_BITS);
|
449
|
+
this->status_clear_error();
|
450
|
+
|
476
451
|
this->state_ = microphone::STATE_STOPPED;
|
477
452
|
}
|
478
453
|
|
454
|
+
// Start the microphone if any semaphores are taken
|
479
455
|
if ((uxSemaphoreGetCount(this->active_listeners_semaphore_) < MAX_LISTENERS) &&
|
480
456
|
(this->state_ == microphone::STATE_STOPPED)) {
|
481
457
|
this->state_ = microphone::STATE_STARTING;
|
482
458
|
}
|
459
|
+
|
460
|
+
// Stop the microphone if all semaphores are returned
|
483
461
|
if ((uxSemaphoreGetCount(this->active_listeners_semaphore_) == MAX_LISTENERS) &&
|
484
462
|
(this->state_ == microphone::STATE_RUNNING)) {
|
485
463
|
this->state_ = microphone::STATE_STOPPING;
|
@@ -487,14 +465,26 @@ void I2SAudioMicrophone::loop() {
|
|
487
465
|
|
488
466
|
switch (this->state_) {
|
489
467
|
case microphone::STATE_STARTING:
|
490
|
-
if (
|
468
|
+
if (this->status_has_error()) {
|
469
|
+
break;
|
470
|
+
}
|
471
|
+
|
472
|
+
if (!this->start_driver_()) {
|
473
|
+
this->status_momentary_error("I2S driver failed to start, unloading it and attempting again in 1 second", 1000);
|
474
|
+
this->stop_driver_(); // Stop/frees whatever possibly started
|
475
|
+
break;
|
476
|
+
}
|
477
|
+
|
478
|
+
if (this->task_handle_ == nullptr) {
|
491
479
|
xTaskCreate(I2SAudioMicrophone::mic_task, "mic_task", TASK_STACK_SIZE, (void *) this, TASK_PRIORITY,
|
492
480
|
&this->task_handle_);
|
493
481
|
|
494
482
|
if (this->task_handle_ == nullptr) {
|
495
483
|
this->status_momentary_error("Task failed to start, attempting again in 1 second", 1000);
|
484
|
+
this->stop_driver_(); // Stops the driver to return the lock; will be reloaded in next attempt
|
496
485
|
}
|
497
486
|
}
|
487
|
+
|
498
488
|
break;
|
499
489
|
case microphone::STATE_RUNNING:
|
500
490
|
break;
|
@@ -43,7 +43,11 @@ class I2SAudioMicrophone : public I2SAudioIn, public microphone::Microphone, pub
|
|
43
43
|
#endif
|
44
44
|
|
45
45
|
protected:
|
46
|
+
/// @brief Starts the I2S driver. Updates the ``audio_stream_info_`` member variable with the current setttings.
|
47
|
+
/// @return True if succesful, false otherwise
|
46
48
|
bool start_driver_();
|
49
|
+
|
50
|
+
/// @brief Stops the I2S driver.
|
47
51
|
void stop_driver_();
|
48
52
|
|
49
53
|
/// @brief Attempts to correct a microphone DC offset; e.g., a microphones silent level is offset from 0. Applies a
|
@@ -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
|
|
@@ -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
|
@@ -1,11 +1,9 @@
|
|
1
1
|
#pragma once
|
2
2
|
|
3
|
+
#include "esphome/components/display/display_buffer.h"
|
4
|
+
#include "esphome/components/i2c/i2c.h"
|
3
5
|
#include "esphome/core/component.h"
|
4
6
|
#include "esphome/core/hal.h"
|
5
|
-
#include "esphome/components/i2c/i2c.h"
|
6
|
-
#include "esphome/components/display/display_buffer.h"
|
7
|
-
|
8
|
-
#ifdef USE_ESP32_FRAMEWORK_ARDUINO
|
9
7
|
|
10
8
|
namespace esphome {
|
11
9
|
namespace inkplate6 {
|
@@ -92,6 +90,9 @@ class Inkplate6 : public display::DisplayBuffer, public i2c::I2CDevice {
|
|
92
90
|
if (this->is_ready())
|
93
91
|
this->initialize_();
|
94
92
|
}
|
93
|
+
void set_mirror_y(bool mirror_y) { this->mirror_y_ = mirror_y; }
|
94
|
+
void set_mirror_x(bool mirror_x) { this->mirror_x_ = mirror_x; }
|
95
|
+
|
95
96
|
void set_partial_updating(bool partial_updating) { this->partial_updating_ = partial_updating; }
|
96
97
|
void set_full_update_every(uint32_t full_update_every) { this->full_update_every_ = full_update_every; }
|
97
98
|
|
@@ -221,6 +222,8 @@ class Inkplate6 : public display::DisplayBuffer, public i2c::I2CDevice {
|
|
221
222
|
|
222
223
|
bool block_partial_{true};
|
223
224
|
bool greyscale_;
|
225
|
+
bool mirror_y_{false};
|
226
|
+
bool mirror_x_{false};
|
224
227
|
bool partial_updating_;
|
225
228
|
|
226
229
|
InkplateModel model_;
|
@@ -249,5 +252,3 @@ class Inkplate6 : public display::DisplayBuffer, public i2c::I2CDevice {
|
|
249
252
|
|
250
253
|
} // namespace inkplate6
|
251
254
|
} // namespace esphome
|
252
|
-
|
253
|
-
#endif // USE_ESP32_FRAMEWORK_ARDUINO
|