esphome 2025.5.2__py3-none-any.whl → 2025.6.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +20 -14
- esphome/components/a4988/a4988.cpp +1 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +6 -4
- esphome/components/ac_dimmer/ac_dimmer.cpp +4 -2
- esphome/components/adc/adc_sensor_esp32.cpp +5 -3
- esphome/components/adc/adc_sensor_esp8266.cpp +5 -3
- esphome/components/adc/adc_sensor_libretiny.cpp +5 -3
- esphome/components/adc/adc_sensor_rp2040.cpp +5 -3
- esphome/components/adc128s102/adc128s102.cpp +1 -1
- esphome/components/ade7880/ade7880.cpp +28 -17
- esphome/components/ade7953_base/ade7953_base.cpp +12 -9
- esphome/components/ade7953_i2c/ade7953_i2c.cpp +1 -1
- esphome/components/ade7953_spi/ade7953_spi.cpp +1 -1
- esphome/components/ads1115/ads1115.cpp +3 -5
- esphome/components/ads1118/ads1118.cpp +2 -1
- esphome/components/ags10/ags10.cpp +3 -2
- esphome/components/aht10/aht10.cpp +27 -29
- esphome/components/aic3204/aic3204.cpp +2 -2
- esphome/components/alarm_control_panel/__init__.py +1 -0
- esphome/components/am2315c/am2315c.cpp +2 -2
- esphome/components/am2320/am2320.cpp +2 -2
- esphome/components/am43/am43_base.h +1 -1
- esphome/components/am43/cover/am43_cover.cpp +4 -2
- esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +4 -2
- esphome/components/apds9306/apds9306.cpp +8 -5
- esphome/components/apds9960/apds9960.cpp +2 -2
- esphome/components/api/__init__.py +5 -0
- esphome/components/api/api_connection.cpp +712 -358
- esphome/components/api/api_connection.h +343 -284
- esphome/components/api/api_frame_helper.cpp +349 -344
- esphome/components/api/api_frame_helper.h +121 -94
- esphome/components/api/api_pb2.cpp +2 -0
- esphome/components/api/api_pb2.h +637 -1
- esphome/components/api/api_pb2_service.cpp +12 -688
- esphome/components/api/api_pb2_service.h +53 -207
- esphome/components/api/api_server.cpp +71 -29
- esphome/components/api/api_server.h +9 -0
- esphome/components/api/client.py +5 -2
- esphome/components/api/homeassistant_service.h +1 -1
- esphome/components/api/list_entities.cpp +1 -1
- esphome/components/api/proto.cpp +1 -0
- esphome/components/api/proto.h +4 -3
- esphome/components/api/subscribe_state.cpp +8 -16
- esphome/components/as3935/as3935.cpp +3 -3
- esphome/components/as5600/as5600.cpp +9 -7
- esphome/components/as7341/as7341.cpp +7 -5
- esphome/components/at581x/at581x.cpp +13 -10
- esphome/components/atm90e26/atm90e26.cpp +2 -2
- esphome/components/atm90e32/atm90e32.cpp +3 -3
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +5 -3
- esphome/components/bang_bang/bang_bang_climate.cpp +8 -5
- esphome/components/bedjet/bedjet_hub.cpp +6 -4
- esphome/components/beken_spi_led_strip/led_strip.cpp +11 -7
- esphome/components/bh1750/bh1750.cpp +2 -2
- esphome/components/binary_sensor/__init__.py +1 -0
- esphome/components/binary_sensor/automation.cpp +1 -2
- esphome/components/bl0906/bl0906.cpp +1 -1
- esphome/components/bl0942/bl0942.cpp +11 -8
- esphome/components/bl0942/sensor.py +1 -1
- esphome/components/ble_client/__init__.py +5 -1
- esphome/components/ble_client/output/ble_binary_output.cpp +6 -3
- esphome/components/ble_client/sensor/ble_sensor.cpp +9 -6
- esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +8 -5
- esphome/components/bluetooth_proxy/__init__.py +5 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -5
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +16 -14
- esphome/components/bme280_base/bme280_base.cpp +3 -3
- esphome/components/bme680/bme680.cpp +3 -3
- esphome/components/bme680/sensor.py +2 -2
- esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
- esphome/components/bme680_bsec/sensor.py +7 -3
- esphome/components/bme68x_bsec2/__init__.py +6 -5
- esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
- esphome/components/bme68x_bsec2/sensor.py +4 -4
- esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
- esphome/components/bmi160/bmi160.cpp +11 -11
- esphome/components/bmp085/bmp085.cpp +2 -2
- esphome/components/bmp280_base/bmp280_base.cpp +3 -3
- esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
- esphome/components/bmp581/bmp581.cpp +33 -27
- esphome/components/bp1658cj/bp1658cj.cpp +5 -3
- esphome/components/bp5758d/bp5758d.cpp +1 -1
- esphome/components/button/__init__.py +1 -0
- esphome/components/canbus/canbus.cpp +1 -1
- esphome/components/cap1188/cap1188.cpp +6 -4
- esphome/components/captive_portal/captive_portal.cpp +1 -1
- esphome/components/ccs811/ccs811.cpp +3 -2
- esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
- esphome/components/ch422g/ch422g.cpp +2 -2
- esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
- esphome/components/climate/__init__.py +1 -0
- esphome/components/climate/climate.cpp +12 -7
- esphome/components/climate/climate.h +1 -1
- esphome/components/climate_ir/climate_ir.cpp +7 -4
- esphome/components/cm1106/__init__.py +1 -0
- esphome/components/cm1106/cm1106.cpp +112 -0
- esphome/components/cm1106/cm1106.h +40 -0
- esphome/components/cm1106/sensor.py +72 -0
- esphome/components/const/__init__.py +1 -0
- esphome/components/cover/__init__.py +1 -0
- esphome/components/cs5460a/cs5460a.cpp +16 -11
- esphome/components/cse7761/cse7761.cpp +2 -2
- esphome/components/cse7766/cse7766.cpp +0 -5
- esphome/components/cse7766/cse7766.h +5 -1
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
- esphome/components/current_based/current_based_cover.cpp +4 -2
- esphome/components/dac7678/dac7678_output.cpp +4 -4
- esphome/components/dallas_temp/dallas_temp.cpp +2 -3
- esphome/components/daly_bms/daly_bms.cpp +2 -1
- esphome/components/dashboard_import/__init__.py +1 -2
- esphome/components/datetime/__init__.py +3 -1
- esphome/components/debug/debug_component.cpp +1 -1
- esphome/components/debug/debug_component.h +1 -1
- esphome/components/debug/debug_esp32.cpp +4 -2
- esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
- esphome/components/demo/__init__.py +206 -0
- esphome/components/demo/demo_alarm_control_panel.h +65 -0
- esphome/components/demo/demo_button.h +15 -0
- esphome/components/demo/demo_date.h +34 -0
- esphome/components/demo/demo_datetime.h +40 -0
- esphome/components/demo/demo_lock.h +17 -0
- esphome/components/demo/demo_select.h +15 -0
- esphome/components/demo/demo_text.h +18 -0
- esphome/components/demo/demo_time.h +34 -0
- esphome/components/demo/demo_valve.h +54 -0
- esphome/components/dfrobot_sen0395/commands.cpp +3 -3
- esphome/components/dht/dht.cpp +29 -50
- esphome/components/dht12/dht12.cpp +2 -2
- esphome/components/display/display.h +5 -3
- esphome/components/dps310/dps310.cpp +7 -5
- esphome/components/ds1307/ds1307.cpp +2 -2
- esphome/components/dsmr/dsmr.cpp +5 -3
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
- esphome/components/duty_time/duty_time_sensor.cpp +5 -3
- esphome/components/ee895/ee895.cpp +3 -3
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
- esphome/components/emc2101/emc2101.cpp +11 -9
- esphome/components/ens160_base/ens160_base.cpp +2 -2
- esphome/components/ens210/ens210.cpp +2 -2
- esphome/components/es7210/es7210.cpp +6 -4
- esphome/components/es7243e/es7243e.cpp +1 -1
- esphome/components/es8156/es8156.cpp +1 -1
- esphome/components/es8311/es8311.cpp +8 -6
- esphome/components/es8388/__init__.py +0 -0
- esphome/components/es8388/audio_dac.py +26 -0
- esphome/components/es8388/es8388.cpp +289 -0
- esphome/components/es8388/es8388.h +81 -0
- esphome/components/es8388/es8388_const.h +83 -0
- esphome/components/es8388/select/__init__.py +47 -0
- esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
- esphome/components/es8388/select/adc_input_mic_select.h +15 -0
- esphome/components/es8388/select/dac_output_select.cpp +12 -0
- esphome/components/es8388/select/dac_output_select.h +15 -0
- esphome/components/esp32/__init__.py +88 -20
- esphome/components/esp32/boards.py +208 -125
- esphome/components/esp32/const.py +6 -0
- esphome/components/esp32/gpio.py +14 -1
- esphome/components/esp32/gpio_esp32_c5.py +45 -0
- esphome/components/esp32/gpio_esp32_p4.py +43 -0
- esphome/components/esp32/preferences.cpp +7 -7
- esphome/components/esp32_ble/__init__.py +115 -0
- esphome/components/esp32_ble/ble.cpp +11 -9
- esphome/components/esp32_ble/ble_uuid.h +1 -1
- esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
- esphome/components/esp32_ble_server/__init__.py +4 -1
- esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
- esphome/components/esp32_ble_server/ble_server.h +0 -1
- esphome/components/esp32_ble_tracker/__init__.py +6 -2
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +12 -9
- esphome/components/esp32_camera/esp32_camera.cpp +35 -27
- esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
- esphome/components/esp32_dac/esp32_dac.cpp +2 -2
- esphome/components/esp32_improv/__init__.py +5 -1
- esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
- esphome/components/esp32_rmt_led_strip/light.py +5 -1
- esphome/components/esp32_touch/esp32_touch.cpp +12 -8
- esphome/components/esp8266/preferences.cpp +6 -6
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
- esphome/components/esp_ldo/__init__.py +91 -0
- esphome/components/esp_ldo/esp_ldo.cpp +43 -0
- esphome/components/esp_ldo/esp_ldo.h +43 -0
- esphome/components/esphome/ota/ota_esphome.cpp +15 -8
- esphome/components/ethernet/ethernet_component.cpp +38 -26
- esphome/components/ethernet/ethernet_component.h +1 -1
- esphome/components/event/__init__.py +1 -0
- esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
- esphome/components/ezo/ezo.cpp +1 -1
- esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
- esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
- esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
- esphome/components/fan/__init__.py +1 -0
- esphome/components/fan/fan.cpp +4 -2
- esphome/components/fastled_base/fastled_light.cpp +7 -5
- esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
- esphome/components/fs3000/fs3000.cpp +1 -1
- esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
- esphome/components/ft63x6/ft63x6.cpp +5 -3
- esphome/components/gcja5/gcja5.cpp +0 -12
- esphome/components/gcja5/gcja5.h +8 -3
- esphome/components/gdk101/gdk101.cpp +2 -2
- esphome/components/globals/globals_component.h +13 -10
- esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
- esphome/components/gp8403/gp8403.cpp +4 -2
- esphome/components/gp8403/output/gp8403_output.cpp +4 -2
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
- esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
- esphome/components/gpio/switch/gpio_switch.cpp +1 -1
- esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
- esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
- esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
- esphome/components/growatt_solar/growatt_solar.cpp +6 -3
- esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
- esphome/components/haier/haier_base.cpp +2 -2
- esphome/components/haier/hon_climate.cpp +13 -6
- esphome/components/havells_solar/havells_solar.cpp +5 -2
- esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
- esphome/components/hdc1080/hdc1080.cpp +2 -2
- esphome/components/he60r/he60r.cpp +4 -2
- esphome/components/hlw8012/hlw8012.cpp +6 -4
- esphome/components/hm3301/hm3301.cpp +2 -2
- esphome/components/hmc5883l/hmc5883l.cpp +2 -2
- esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
- esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
- esphome/components/honeywellabp/honeywellabp.cpp +4 -2
- esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
- esphome/components/hte501/hte501.cpp +3 -2
- esphome/components/http_request/__init__.py +2 -2
- esphome/components/http_request/http_request.cpp +7 -5
- esphome/components/http_request/http_request_idf.cpp +4 -2
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/htu21d/htu21d.cpp +2 -2
- esphome/components/htu31d/htu31d.cpp +2 -2
- esphome/components/hx711/hx711.cpp +2 -2
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
- esphome/components/hyt271/hyt271.cpp +2 -2
- esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
- esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
- esphome/components/i2s_audio/__init__.py +2 -0
- esphome/components/i2s_audio/i2s_audio.cpp +3 -4
- esphome/components/i2s_audio/i2s_audio.h +1 -1
- esphome/components/i2s_audio/media_player/__init__.py +1 -1
- esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +1 -1
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
- esphome/components/iaqcore/iaqcore.cpp +3 -3
- esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
- esphome/components/ili9xxx/ili9xxx_display.h +1 -1
- esphome/components/image/image.cpp +1 -0
- esphome/components/ina219/ina219.cpp +2 -2
- esphome/components/ina226/ina226.cpp +8 -5
- esphome/components/ina260/ina260.cpp +1 -1
- esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
- esphome/components/ina3221/ina3221.cpp +2 -2
- esphome/components/inkplate6/display.py +12 -2
- esphome/components/inkplate6/inkplate.cpp +13 -9
- esphome/components/inkplate6/inkplate.h +7 -6
- esphome/components/integration/integration_sensor.cpp +1 -1
- esphome/components/internal_temperature/internal_temperature.cpp +4 -4
- esphome/components/json/json_util.cpp +4 -5
- esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
- esphome/components/key_collector/key_collector.cpp +4 -2
- esphome/components/kmeteriso/kmeteriso.cpp +2 -1
- esphome/components/kuntze/kuntze.cpp +4 -2
- esphome/components/lc709203f/__init__.py +1 -0
- esphome/components/lc709203f/lc709203f.cpp +299 -0
- esphome/components/lc709203f/lc709203f.h +55 -0
- esphome/components/lc709203f/sensor.py +93 -0
- esphome/components/lcd_base/lcd_display.cpp +2 -2
- esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
- esphome/components/lcd_menu/lcd_menu.cpp +6 -4
- esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
- esphome/components/ld2410/ld2410.cpp +6 -7
- esphome/components/ld2420/ld2420.cpp +9 -7
- esphome/components/ld2450/ld2450.cpp +6 -4
- esphome/components/ld2450/sensor.py +2 -2
- esphome/components/ledc/ledc_output.cpp +32 -28
- esphome/components/libretiny/const.py +1 -1
- esphome/components/libretiny/preferences.cpp +6 -7
- esphome/components/light/__init__.py +2 -1
- esphome/components/light/esp_hsv_color.h +1 -1
- esphome/components/light/light_state.cpp +9 -5
- esphome/components/light/light_transformer.h +1 -1
- esphome/components/lightwaverf/LwTx.cpp +1 -1
- esphome/components/lightwaverf/lightwaverf.cpp +1 -1
- esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
- esphome/components/lock/__init__.py +1 -0
- esphome/components/lock/lock.h +1 -1
- esphome/components/logger/__init__.py +6 -0
- esphome/components/logger/logger.cpp +9 -5
- esphome/components/logger/logger_esp32.cpp +5 -5
- esphome/components/ltr390/ltr390.cpp +8 -5
- esphome/components/ltr501/ltr501.cpp +19 -14
- esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
- esphome/components/lvgl/__init__.py +2 -2
- esphome/components/lvgl/automation.py +5 -4
- esphome/components/lvgl/defines.py +0 -2
- esphome/components/lvgl/lv_validation.py +1 -3
- esphome/components/lvgl/lvcode.py +7 -8
- esphome/components/lvgl/lvgl_esphome.cpp +26 -10
- esphome/components/lvgl/schemas.py +22 -23
- esphome/components/lvgl/trigger.py +8 -3
- esphome/components/lvgl/widgets/__init__.py +2 -2
- esphome/components/lvgl/widgets/canvas.py +9 -3
- esphome/components/lvgl/widgets/line.py +2 -1
- esphome/components/lvgl/widgets/tabview.py +7 -0
- esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
- esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
- esphome/components/max17043/max17043.cpp +2 -2
- esphome/components/max31855/max31855.cpp +2 -1
- esphome/components/max31856/max31856.cpp +9 -11
- esphome/components/max31865/max31865.cpp +6 -4
- esphome/components/max44009/max44009.cpp +2 -2
- esphome/components/max6675/max6675.cpp +1 -1
- esphome/components/max6956/max6956.cpp +5 -3
- esphome/components/max7219/max7219.cpp +8 -6
- esphome/components/max7219digit/automation.h +52 -0
- esphome/components/max7219digit/display.py +93 -1
- esphome/components/max7219digit/max7219digit.cpp +16 -13
- esphome/components/max9611/max9611.cpp +9 -6
- esphome/components/mcp23008/mcp23008.cpp +1 -1
- esphome/components/mcp23016/mcp23016.cpp +1 -1
- esphome/components/mcp23017/mcp23017.cpp +1 -1
- esphome/components/mcp23s08/mcp23s08.cpp +1 -1
- esphome/components/mcp23s17/mcp23s17.cpp +1 -1
- esphome/components/mcp3008/mcp3008.cpp +1 -1
- esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
- esphome/components/mcp3204/mcp3204.cpp +1 -1
- esphome/components/mcp4461/mcp4461.cpp +2 -2
- esphome/components/mcp4725/mcp4725.cpp +2 -2
- esphome/components/mcp4728/mcp4728.cpp +2 -2
- esphome/components/mcp9600/mcp9600.cpp +1 -1
- esphome/components/mcp9808/mcp9808.cpp +4 -4
- esphome/components/mdns/mdns_component.cpp +8 -2
- esphome/components/mdns/mdns_component.h +3 -1
- esphome/components/mdns/mdns_esp32.cpp +2 -2
- esphome/components/media_player/__init__.py +1 -0
- esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
- esphome/components/micro_wake_word/streaming_model.cpp +10 -6
- esphome/components/micronova/micronova.h +2 -2
- esphome/components/mics_4514/mics_4514.cpp +2 -2
- esphome/components/midea/air_conditioner.cpp +7 -5
- esphome/components/midea_ir/midea_ir.cpp +1 -1
- esphome/components/mipi_spi/mipi_spi.cpp +24 -15
- esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
- esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
- esphome/components/mlx90614/mlx90614.cpp +4 -3
- esphome/components/mmc5603/mmc5603.cpp +2 -2
- esphome/components/mmc5983/mmc5983.cpp +1 -1
- esphome/components/modbus/modbus.cpp +7 -5
- esphome/components/modbus_controller/modbus_controller.cpp +6 -4
- esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
- esphome/components/modbus_controller/switch/__init__.py +6 -2
- esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
- esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
- esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
- esphome/components/mpr121/mpr121.cpp +2 -2
- esphome/components/mpu6050/mpu6050.cpp +6 -6
- esphome/components/mpu6886/mpu6886.cpp +6 -6
- esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
- esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
- esphome/components/mqtt/mqtt_client.cpp +31 -24
- esphome/components/mqtt/mqtt_component.cpp +2 -2
- esphome/components/mqtt/mqtt_cover.cpp +8 -4
- esphome/components/mqtt/mqtt_fan.cpp +12 -6
- esphome/components/mqtt/mqtt_valve.cpp +4 -2
- esphome/components/ms5611/ms5611.cpp +2 -2
- esphome/components/ms8607/ms8607.cpp +2 -2
- esphome/components/msa3xx/msa3xx.cpp +16 -12
- esphome/components/my9231/my9231.cpp +7 -5
- esphome/components/nau7802/nau7802.cpp +6 -4
- esphome/components/neopixelbus/neopixelbus_light.h +2 -2
- esphome/components/network/ip_address.h +1 -1
- esphome/components/network/util.cpp +13 -0
- esphome/components/nextion/base_component.py +2 -0
- esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +2 -3
- esphome/components/nextion/display.py +34 -22
- esphome/components/nextion/nextion.cpp +182 -143
- esphome/components/nextion/nextion.h +36 -0
- esphome/components/nextion/nextion_commands.cpp +3 -3
- esphome/components/nextion/nextion_upload_arduino.cpp +58 -61
- esphome/components/nextion/nextion_upload_idf.cpp +69 -72
- esphome/components/nextion/sensor/nextion_sensor.cpp +4 -4
- esphome/components/nextion/switch/nextion_switch.cpp +2 -2
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +2 -2
- esphome/components/nfc/nci_message.h +1 -1
- esphome/components/nfc/ndef_record.h +1 -1
- esphome/components/nfc/ndef_record_text.h +1 -1
- esphome/components/nfc/ndef_record_uri.h +1 -1
- esphome/components/nfc/nfc.h +1 -1
- esphome/components/nfc/nfc_tag.h +1 -1
- esphome/components/noblex/noblex.cpp +1 -1
- esphome/components/npi19/npi19.cpp +5 -7
- esphome/components/number/__init__.py +11 -0
- esphome/components/online_image/__init__.py +13 -1
- esphome/components/online_image/online_image.cpp +26 -4
- esphome/components/online_image/online_image.h +21 -4
- esphome/components/opentherm/generate.py +3 -3
- esphome/components/opentherm/hub.cpp +11 -7
- esphome/components/opentherm/number/number.cpp +5 -3
- esphome/components/opentherm/opentherm.h +1 -1
- esphome/components/opentherm/schema.py +13 -13
- esphome/components/opentherm/validate.py +1 -1
- esphome/components/openthread/__init__.py +146 -0
- esphome/components/openthread/const.py +10 -0
- esphome/components/openthread/openthread.cpp +206 -0
- esphome/components/openthread/openthread.h +68 -0
- esphome/components/openthread/openthread_esp.cpp +164 -0
- esphome/components/openthread/tlv.py +58 -0
- esphome/components/openthread_info/__init__.py +0 -0
- esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
- esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
- esphome/components/openthread_info/text_sensor.py +105 -0
- esphome/components/output/float_output.cpp +1 -1
- esphome/components/output/switch/output_switch.cpp +1 -1
- esphome/components/packet_transport/packet_transport.cpp +6 -4
- esphome/components/pca6416a/pca6416a.cpp +2 -2
- esphome/components/pca9554/pca9554.cpp +6 -4
- esphome/components/pca9685/pca9685_output.cpp +12 -8
- esphome/components/pcd8544/pcd_8544.cpp +1 -1
- esphome/components/pcf85063/pcf85063.cpp +2 -2
- esphome/components/pcf8563/pcf8563.cpp +2 -2
- esphome/components/pcf8574/pcf8574.cpp +2 -2
- esphome/components/pid/pid_climate.cpp +8 -5
- esphome/components/pid/pid_climate.h +1 -1
- esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
- esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
- esphome/components/pipsolar/pipsolar.cpp +3 -3
- esphome/components/pm1006/pm1006.cpp +3 -7
- esphome/components/pm1006/pm1006.h +4 -1
- esphome/components/pm2005/pm2005.cpp +12 -13
- esphome/components/pm2005/sensor.py +1 -1
- esphome/components/pmsa003i/pmsa003i.cpp +2 -2
- esphome/components/pmsx003/pmsx003.cpp +0 -4
- esphome/components/pmsx003/pmsx003.h +5 -2
- esphome/components/pmwcs3/pmwcs3.cpp +9 -13
- esphome/components/pmwcs3/pmwcs3.h +0 -1
- esphome/components/pn532/pn532.cpp +7 -7
- esphome/components/pn532/pn532.h +1 -1
- esphome/components/pn532_spi/pn532_spi.cpp +1 -1
- esphome/components/pn7150/pn7150.cpp +4 -4
- esphome/components/pn7160/pn7160.cpp +4 -4
- esphome/components/power_supply/power_supply.cpp +6 -4
- esphome/components/power_supply/power_supply.h +1 -1
- esphome/components/psram/__init__.py +59 -35
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
- esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
- esphome/components/pylontech/pylontech.cpp +2 -2
- esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
- esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
- esphome/components/pzemac/pzemac.cpp +4 -2
- esphome/components/pzemdc/pzemdc.cpp +4 -2
- esphome/components/qmc5883l/qmc5883l.cpp +2 -2
- esphome/components/qmp6988/qmp6988.cpp +2 -2
- esphome/components/qmp6988/qmp6988.h +1 -1
- esphome/components/qr_code/qr_code.cpp +5 -3
- esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
- esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
- esphome/components/rc522/rc522.cpp +5 -5
- esphome/components/rdm6300/rdm6300.cpp +1 -0
- esphome/components/remote_receiver/__init__.py +10 -2
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
- esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
- esphome/components/remote_transmitter/__init__.py +10 -2
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
- esphome/components/resistance/resistance_sensor.cpp +6 -3
- esphome/components/restart/button/restart_button.cpp +1 -1
- esphome/components/restart/switch/restart_switch.cpp +1 -1
- esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
- esphome/components/rp2040/__init__.py +7 -0
- esphome/components/rp2040/core.cpp +8 -1
- esphome/components/rp2040/preferences.cpp +3 -3
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
- esphome/components/rp2040_pio_led_strip/light.py +1 -1
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
- esphome/components/rtttl/rtttl.cpp +11 -9
- esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
- esphome/components/safe_mode/safe_mode.cpp +9 -8
- esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
- esphome/components/scd30/scd30.cpp +11 -8
- esphome/components/scd4x/scd4x.cpp +12 -8
- esphome/components/sdl/display.py +40 -0
- esphome/components/sdl/sdl_esphome.cpp +2 -2
- esphome/components/sdl/sdl_esphome.h +8 -0
- esphome/components/sdm_meter/sdm_meter.cpp +5 -2
- esphome/components/sdp3x/sdp3x.cpp +11 -11
- esphome/components/sds011/sds011.cpp +5 -6
- esphome/components/sds011/sds011.h +4 -1
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
- esphome/components/selec_meter/selec_meter.cpp +5 -2
- esphome/components/select/__init__.py +1 -0
- esphome/components/sen0321/sen0321.cpp +2 -2
- esphome/components/sen21231/sen21231.cpp +1 -1
- esphome/components/sen5x/sen5x.cpp +10 -7
- esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
- esphome/components/sensirion_common/i2c_sensirion.h +1 -0
- esphome/components/sensor/__init__.py +11 -1
- esphome/components/sensor/filter.h +1 -1
- esphome/components/sensor/sensor.h +9 -5
- esphome/components/servo/servo.cpp +12 -9
- esphome/components/servo/servo.h +1 -1
- esphome/components/sfa30/sfa30.cpp +1 -1
- esphome/components/sgp30/sgp30.cpp +10 -8
- esphome/components/sgp4x/sgp4x.cpp +49 -61
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
- esphome/components/sht3xd/sht3xd.cpp +1 -1
- esphome/components/sht4x/sht4x.cpp +2 -2
- esphome/components/shtcx/shtcx.cpp +13 -16
- esphome/components/shutdown/button/shutdown_button.cpp +1 -1
- esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
- esphome/components/sim800l/sim800l.cpp +2 -2
- esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
- esphome/components/sm16716/sm16716.cpp +1 -1
- esphome/components/sm2135/sm2135.cpp +1 -1
- esphome/components/sm2235/sm2235.cpp +5 -3
- esphome/components/sm2335/sm2335.cpp +5 -3
- esphome/components/sml/sml.cpp +1 -1
- esphome/components/sn74hc165/sn74hc165.cpp +1 -2
- esphome/components/sn74hc595/sn74hc595.cpp +1 -2
- esphome/components/sntp/sntp_component.cpp +1 -1
- esphome/components/socket/__init__.py +2 -0
- esphome/components/socket/bsd_sockets_impl.cpp +51 -7
- esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
- esphome/components/socket/lwip_sockets_impl.cpp +51 -7
- esphome/components/socket/socket.cpp +31 -0
- esphome/components/socket/socket.h +27 -1
- esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
- esphome/components/sonoff_d1/sonoff_d1.h +2 -2
- esphome/components/sound_level/sound_level.cpp +4 -2
- esphome/components/speaker/media_player/__init__.py +3 -0
- esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
- esphome/components/speaker/media_player/speaker_media_player.h +6 -0
- esphome/components/spi/__init__.py +10 -2
- esphome/components/spi/spi.cpp +4 -4
- esphome/components/spi_device/spi_device.cpp +1 -2
- esphome/components/sprinkler/sprinkler.cpp +9 -6
- esphome/components/sps30/sps30.cpp +16 -15
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
- esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
- esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
- esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
- esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
- esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
- esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
- esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
- esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
- esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
- esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
- esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
- esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
- esphome/components/st7567_base/st7567_base.cpp +3 -3
- esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
- esphome/components/st7567_spi/st7567_spi.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +4 -2
- esphome/components/st7735/st7735.cpp +3 -3
- esphome/components/st7789v/st7789v.cpp +10 -7
- esphome/components/st7920/st7920.cpp +6 -4
- esphome/components/statsd/statsd.cpp +9 -5
- esphome/components/status_led/light/status_led_light.cpp +1 -1
- esphome/components/status_led/status_led.cpp +1 -1
- esphome/components/stepper/stepper.h +5 -3
- esphome/components/sts3x/sts3x.cpp +2 -2
- esphome/components/switch/__init__.py +1 -0
- esphome/components/switch/switch.cpp +18 -12
- esphome/components/switch/switch.h +1 -1
- esphome/components/sx1509/__init__.py +53 -20
- esphome/components/sx1509/sx1509.cpp +29 -5
- esphome/components/sx1509/sx1509.h +9 -1
- esphome/components/t6615/t6615.cpp +1 -0
- esphome/components/tc74/tc74.cpp +1 -1
- esphome/components/tca9548a/tca9548a.cpp +1 -1
- esphome/components/tca9555/tca9555.cpp +2 -2
- esphome/components/tcs34725/tcs34725.cpp +4 -4
- esphome/components/tee501/tee501.cpp +3 -2
- esphome/components/tem3200/tem3200.cpp +5 -6
- esphome/components/template/alarm_control_panel/__init__.py +6 -0
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +38 -12
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +3 -1
- esphome/components/template/cover/template_cover.cpp +1 -1
- esphome/components/template/select/template_select.cpp +6 -4
- esphome/components/template/text/template_text.cpp +2 -3
- esphome/components/template/valve/template_valve.cpp +5 -3
- esphome/components/text/__init__.py +10 -11
- esphome/components/text_sensor/__init__.py +1 -0
- esphome/components/thermostat/thermostat_climate.cpp +67 -43
- esphome/components/time/__init__.py +1 -2
- esphome/components/time_based/time_based_cover.cpp +4 -2
- esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
- esphome/components/tm1621/tm1621.cpp +3 -3
- esphome/components/tm1637/tm1637.cpp +9 -7
- esphome/components/tm1638/tm1638.cpp +7 -5
- esphome/components/tm1651/tm1651.cpp +2 -2
- esphome/components/tmp102/tmp102.cpp +1 -3
- esphome/components/tmp102/tmp102.h +0 -3
- esphome/components/tmp1075/tmp1075.cpp +12 -9
- esphome/components/tmp117/tmp117.cpp +2 -2
- esphome/components/tof10120/tof10120_sensor.cpp +2 -2
- esphome/components/tormatic/tormatic_cover.cpp +4 -2
- esphome/components/tsl2561/tsl2561.cpp +7 -5
- esphome/components/tsl2591/tsl2591.cpp +25 -27
- esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
- esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
- esphome/components/tuya/select/tuya_select.cpp +5 -3
- esphome/components/tx20/tx20.cpp +3 -3
- esphome/components/uart/__init__.py +4 -5
- esphome/components/uart/button/uart_button.cpp +1 -1
- esphome/components/uart/switch/uart_switch.cpp +2 -2
- esphome/components/uart/uart.cpp +2 -2
- esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
- esphome/components/uart/uart_component_esp8266.cpp +9 -7
- esphome/components/uart/uart_component_esp_idf.cpp +9 -7
- esphome/components/uart/uart_component_host.cpp +11 -8
- esphome/components/uart/uart_component_libretiny.cpp +8 -6
- esphome/components/uart/uart_component_rp2040.cpp +8 -6
- esphome/components/udp/udp_component.cpp +9 -5
- esphome/components/ufire_ec/ufire_ec.cpp +5 -3
- esphome/components/ufire_ise/ufire_ise.cpp +1 -1
- esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
- esphome/components/update/__init__.py +1 -0
- esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
- esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
- esphome/components/usb_host/__init__.py +64 -0
- esphome/components/usb_host/usb_host.h +116 -0
- esphome/components/usb_host/usb_host_client.cpp +394 -0
- esphome/components/usb_host/usb_host_component.cpp +35 -0
- esphome/components/usb_uart/__init__.py +134 -0
- esphome/components/usb_uart/ch34x.cpp +80 -0
- esphome/components/usb_uart/cp210x.cpp +126 -0
- esphome/components/usb_uart/usb_uart.cpp +328 -0
- esphome/components/usb_uart/usb_uart.h +151 -0
- esphome/components/valve/__init__.py +1 -0
- esphome/components/veml3235/veml3235.cpp +13 -9
- esphome/components/veml7700/veml7700.cpp +10 -6
- esphome/components/voice_assistant/voice_assistant.cpp +7 -7
- esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
- esphome/components/web_server/server_index_v2.h +632 -630
- esphome/components/web_server/server_index_v3.h +411 -409
- esphome/components/web_server/web_server.cpp +5 -3
- esphome/components/web_server_base/web_server_base.cpp +1 -1
- esphome/components/web_server_idf/utils.cpp +1 -1
- esphome/components/web_server_idf/web_server_idf.cpp +1 -1
- esphome/components/weikai/__init__.py +2 -0
- esphome/components/weikai/weikai.cpp +23 -21
- esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
- esphome/components/weikai_spi/weikai_spi.cpp +11 -6
- esphome/components/wiegand/wiegand.cpp +1 -1
- esphome/components/wifi/wifi_component.cpp +50 -37
- esphome/components/wifi/wifi_component.h +7 -4
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
- esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
- esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
- esphome/components/wireguard/wireguard.cpp +21 -21
- esphome/components/wl_134/text_sensor.py +1 -2
- esphome/components/wled/wled_light_effect.cpp +1 -1
- esphome/components/x9c/x9c.cpp +5 -3
- esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
- esphome/components/xl9535/xl9535.cpp +2 -2
- esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
- esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
- esphome/config.py +3 -2
- esphome/config_validation.py +46 -17
- esphome/const.py +10 -1
- esphome/core/__init__.py +37 -18
- esphome/core/application.cpp +188 -5
- esphome/core/application.h +110 -0
- esphome/core/component.h +13 -0
- esphome/core/config.py +12 -0
- esphome/core/defines.h +10 -2
- esphome/core/helpers.cpp +1 -1
- esphome/core/helpers.h +4 -4
- esphome/core/log.h +2 -0
- esphome/core/log_const_en.h +4 -0
- esphome/core/scheduler.cpp +2 -2
- esphome/coroutine.py +3 -4
- esphome/cpp_generator.py +32 -32
- esphome/dashboard/core.py +2 -2
- esphome/dashboard/web_server.py +2 -2
- esphome/git.py +4 -4
- esphome/helpers.py +5 -6
- esphome/loader.py +8 -7
- esphome/log.py +7 -1
- esphome/platformio_api.py +2 -3
- esphome/storage_json.py +13 -5
- esphome/types.py +12 -13
- esphome/util.py +1 -2
- esphome/writer.py +5 -3
- esphome/yaml_util.py +6 -1
- esphome/zeroconf.py +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +715 -662
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -20,24 +20,18 @@ inline const char *to_string(SHTCXType type) {
|
|
20
20
|
case SHTCX_TYPE_SHTC1:
|
21
21
|
return "SHTC1";
|
22
22
|
default:
|
23
|
-
return "
|
23
|
+
return "UNKNOWN";
|
24
24
|
}
|
25
25
|
}
|
26
26
|
|
27
27
|
void SHTCXComponent::setup() {
|
28
|
-
ESP_LOGCONFIG(TAG, "
|
28
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
29
29
|
this->wake_up();
|
30
30
|
this->soft_reset();
|
31
31
|
|
32
|
-
if (!this->write_command(SHTCX_COMMAND_READ_ID_REGISTER)) {
|
33
|
-
ESP_LOGE(TAG, "Error requesting Device ID");
|
34
|
-
this->mark_failed();
|
35
|
-
return;
|
36
|
-
}
|
37
|
-
|
38
32
|
uint16_t device_id_register;
|
39
|
-
if (!this->read_data(&device_id_register, 1)) {
|
40
|
-
ESP_LOGE(TAG,
|
33
|
+
if (!this->write_command(SHTCX_COMMAND_READ_ID_REGISTER) || !this->read_data(&device_id_register, 1)) {
|
34
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
41
35
|
this->mark_failed();
|
42
36
|
return;
|
43
37
|
}
|
@@ -53,31 +47,33 @@ void SHTCXComponent::setup() {
|
|
53
47
|
} else {
|
54
48
|
this->type_ = SHTCX_TYPE_UNKNOWN;
|
55
49
|
}
|
56
|
-
ESP_LOGCONFIG(TAG, " Device identified: %s (%04x)", to_string(this->type_), device_id_register);
|
57
50
|
}
|
51
|
+
|
58
52
|
void SHTCXComponent::dump_config() {
|
59
53
|
ESP_LOGCONFIG(TAG, "SHTCx:");
|
60
54
|
ESP_LOGCONFIG(TAG, " Model: %s (%04x)", to_string(this->type_), this->sensor_id_);
|
61
55
|
LOG_I2C_DEVICE(this);
|
62
56
|
if (this->is_failed()) {
|
63
|
-
ESP_LOGE(TAG,
|
57
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
64
58
|
}
|
65
59
|
LOG_UPDATE_INTERVAL(this);
|
66
60
|
|
67
61
|
LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
|
68
62
|
LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
|
69
63
|
}
|
64
|
+
|
70
65
|
float SHTCXComponent::get_setup_priority() const { return setup_priority::DATA; }
|
66
|
+
|
71
67
|
void SHTCXComponent::update() {
|
72
68
|
if (this->status_has_warning()) {
|
73
|
-
ESP_LOGW(TAG, "Retrying
|
69
|
+
ESP_LOGW(TAG, "Retrying communication");
|
74
70
|
this->soft_reset();
|
75
71
|
}
|
76
72
|
if (this->type_ != SHTCX_TYPE_SHTC1) {
|
77
73
|
this->wake_up();
|
78
74
|
}
|
79
75
|
if (!this->write_command(SHTCX_COMMAND_POLLING_H)) {
|
80
|
-
ESP_LOGE(TAG, "
|
76
|
+
ESP_LOGE(TAG, "Polling failed");
|
81
77
|
if (this->temperature_sensor_ != nullptr)
|
82
78
|
this->temperature_sensor_->publish_state(NAN);
|
83
79
|
if (this->humidity_sensor_ != nullptr)
|
@@ -91,13 +87,13 @@ void SHTCXComponent::update() {
|
|
91
87
|
float humidity = NAN;
|
92
88
|
uint16_t raw_data[2];
|
93
89
|
if (!this->read_data(raw_data, 2)) {
|
94
|
-
ESP_LOGE(TAG,
|
90
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
95
91
|
this->status_set_warning();
|
96
92
|
} else {
|
97
93
|
temperature = 175.0f * float(raw_data[0]) / 65536.0f - 45.0f;
|
98
94
|
humidity = 100.0f * float(raw_data[1]) / 65536.0f;
|
99
95
|
|
100
|
-
ESP_LOGD(TAG, "
|
96
|
+
ESP_LOGD(TAG, "Temperature=%.2f°C Humidity=%.2f%%", temperature, humidity);
|
101
97
|
}
|
102
98
|
if (this->temperature_sensor_ != nullptr)
|
103
99
|
this->temperature_sensor_->publish_state(temperature);
|
@@ -114,6 +110,7 @@ void SHTCXComponent::soft_reset() {
|
|
114
110
|
this->write_command(SHTCX_COMMAND_SOFT_RESET);
|
115
111
|
delayMicroseconds(200);
|
116
112
|
}
|
113
|
+
|
117
114
|
void SHTCXComponent::sleep() { this->write_command(SHTCX_COMMAND_SLEEP); }
|
118
115
|
|
119
116
|
void SHTCXComponent::wake_up() {
|
@@ -17,7 +17,7 @@ static const char *const TAG = "shutdown.button";
|
|
17
17
|
|
18
18
|
void ShutdownButton::dump_config() { LOG_BUTTON("", "Shutdown Button", this); }
|
19
19
|
void ShutdownButton::press_action() {
|
20
|
-
ESP_LOGI(TAG, "Shutting down
|
20
|
+
ESP_LOGI(TAG, "Shutting down");
|
21
21
|
// Let MQTT settle a bit
|
22
22
|
delay(100); // NOLINT
|
23
23
|
App.run_safe_shutdown_hooks();
|
@@ -28,7 +28,7 @@ void Sim800LComponent::update() {
|
|
28
28
|
this->state_ = STATE_DIALING1;
|
29
29
|
} else if (this->registered_ && this->connect_pending_) {
|
30
30
|
this->connect_pending_ = false;
|
31
|
-
ESP_LOGI(TAG, "Connecting
|
31
|
+
ESP_LOGI(TAG, "Connecting");
|
32
32
|
this->send_cmd_("ATA");
|
33
33
|
this->state_ = STATE_ATA_SENT;
|
34
34
|
} else if (this->registered_ && this->send_ussd_pending_) {
|
@@ -36,7 +36,7 @@ void Sim800LComponent::update() {
|
|
36
36
|
this->state_ = STATE_SEND_USSD1;
|
37
37
|
} else if (this->registered_ && this->disconnect_pending_) {
|
38
38
|
this->disconnect_pending_ = false;
|
39
|
-
ESP_LOGI(TAG, "Disconnecting
|
39
|
+
ESP_LOGI(TAG, "Disconnecting");
|
40
40
|
this->send_cmd_("ATH");
|
41
41
|
} else if (this->registered_ && this->call_state_ != 6) {
|
42
42
|
send_cmd_("AT+CLCC");
|
@@ -63,8 +63,10 @@ void SlowPWMOutput::dump_config() {
|
|
63
63
|
if (this->turn_off_trigger_) {
|
64
64
|
ESP_LOGCONFIG(TAG, " Turn off automation configured");
|
65
65
|
}
|
66
|
-
ESP_LOGCONFIG(TAG,
|
67
|
-
|
66
|
+
ESP_LOGCONFIG(TAG,
|
67
|
+
" Period: %d ms\n"
|
68
|
+
" Restart cycle on state change: %s",
|
69
|
+
this->period_, YESNO(this->restart_cycle_on_state_change_));
|
68
70
|
LOG_FLOAT_OUTPUT(this);
|
69
71
|
}
|
70
72
|
|
@@ -7,7 +7,7 @@ namespace sm16716 {
|
|
7
7
|
static const char *const TAG = "sm16716";
|
8
8
|
|
9
9
|
void SM16716::setup() {
|
10
|
-
ESP_LOGCONFIG(TAG, "
|
10
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
11
11
|
this->data_pin_->setup();
|
12
12
|
this->data_pin_->digital_write(false);
|
13
13
|
this->clock_pin_->setup();
|
@@ -20,7 +20,7 @@ static const uint8_t SM2135_RGB = 0x00; // RGB channel
|
|
20
20
|
static const uint8_t SM2135_CW = 0x80; // CW channel (Chip default)
|
21
21
|
|
22
22
|
void SM2135::setup() {
|
23
|
-
ESP_LOGCONFIG(TAG, "
|
23
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
24
24
|
this->data_pin_->setup();
|
25
25
|
this->data_pin_->digital_write(false);
|
26
26
|
this->data_pin_->pin_mode(gpio::FLAG_OUTPUT);
|
@@ -7,7 +7,7 @@ namespace sm2235 {
|
|
7
7
|
static const char *const TAG = "sm2235";
|
8
8
|
|
9
9
|
void SM2235::setup() {
|
10
|
-
ESP_LOGCONFIG(TAG, "
|
10
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
11
11
|
this->data_pin_->setup();
|
12
12
|
this->data_pin_->digital_write(true);
|
13
13
|
this->clock_pin_->setup();
|
@@ -19,8 +19,10 @@ void SM2235::dump_config() {
|
|
19
19
|
ESP_LOGCONFIG(TAG, "sm2235:");
|
20
20
|
LOG_PIN(" Data Pin: ", this->data_pin_);
|
21
21
|
LOG_PIN(" Clock Pin: ", this->clock_pin_);
|
22
|
-
ESP_LOGCONFIG(TAG,
|
23
|
-
|
22
|
+
ESP_LOGCONFIG(TAG,
|
23
|
+
" Color Channels Max Power: %u\n"
|
24
|
+
" White Channels Max Power: %u",
|
25
|
+
this->max_power_color_channels_, this->max_power_white_channels_);
|
24
26
|
}
|
25
27
|
|
26
28
|
} // namespace sm2235
|
@@ -7,7 +7,7 @@ namespace sm2335 {
|
|
7
7
|
static const char *const TAG = "sm2335";
|
8
8
|
|
9
9
|
void SM2335::setup() {
|
10
|
-
ESP_LOGCONFIG(TAG, "
|
10
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
11
11
|
this->data_pin_->setup();
|
12
12
|
this->data_pin_->digital_write(true);
|
13
13
|
this->clock_pin_->setup();
|
@@ -19,8 +19,10 @@ void SM2335::dump_config() {
|
|
19
19
|
ESP_LOGCONFIG(TAG, "sm2335:");
|
20
20
|
LOG_PIN(" Data Pin: ", this->data_pin_);
|
21
21
|
LOG_PIN(" Clock Pin: ", this->clock_pin_);
|
22
|
-
ESP_LOGCONFIG(TAG,
|
23
|
-
|
22
|
+
ESP_LOGCONFIG(TAG,
|
23
|
+
" Color Channels Max Power: %u\n"
|
24
|
+
" White Channels Max Power: %u",
|
25
|
+
this->max_power_color_channels_, this->max_power_white_channels_);
|
24
26
|
}
|
25
27
|
|
26
28
|
} // namespace sm2335
|
esphome/components/sml/sml.cpp
CHANGED
@@ -7,8 +7,7 @@ namespace sn74hc165 {
|
|
7
7
|
static const char *const TAG = "sn74hc165";
|
8
8
|
|
9
9
|
void SN74HC165Component::setup() {
|
10
|
-
ESP_LOGCONFIG(TAG, "
|
11
|
-
|
10
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
12
11
|
// initialize pins
|
13
12
|
this->clock_pin_->setup();
|
14
13
|
this->data_pin_->setup();
|
@@ -7,8 +7,7 @@ namespace sn74hc595 {
|
|
7
7
|
static const char *const TAG = "sn74hc595";
|
8
8
|
|
9
9
|
void SN74HC595Component::pre_setup_() {
|
10
|
-
ESP_LOGCONFIG(TAG, "
|
11
|
-
|
10
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
12
11
|
if (this->have_oe_pin_) { // disable output
|
13
12
|
this->oe_pin_->setup();
|
14
13
|
this->oe_pin_->digital_write(true);
|
@@ -35,5 +35,7 @@ async def to_code(config):
|
|
35
35
|
cg.add_define("USE_SOCKET_IMPL_LWIP_TCP")
|
36
36
|
elif impl == IMPLEMENTATION_LWIP_SOCKETS:
|
37
37
|
cg.add_define("USE_SOCKET_IMPL_LWIP_SOCKETS")
|
38
|
+
cg.add_define("USE_SOCKET_SELECT_SUPPORT")
|
38
39
|
elif impl == IMPLEMENTATION_BSD_SOCKETS:
|
39
40
|
cg.add_define("USE_SOCKET_IMPL_BSD_SOCKETS")
|
41
|
+
cg.add_define("USE_SOCKET_SELECT_SUPPORT")
|
@@ -5,6 +5,7 @@
|
|
5
5
|
#ifdef USE_SOCKET_IMPL_BSD_SOCKETS
|
6
6
|
|
7
7
|
#include <cstring>
|
8
|
+
#include "esphome/core/application.h"
|
8
9
|
|
9
10
|
#ifdef USE_ESP32
|
10
11
|
#include <esp_idf_version.h>
|
@@ -40,7 +41,20 @@ std::string format_sockaddr(const struct sockaddr_storage &storage) {
|
|
40
41
|
|
41
42
|
class BSDSocketImpl : public Socket {
|
42
43
|
public:
|
43
|
-
BSDSocketImpl(int fd) : fd_(fd) {
|
44
|
+
BSDSocketImpl(int fd, bool monitor_loop = false) : fd_(fd) {
|
45
|
+
#ifdef USE_SOCKET_SELECT_SUPPORT
|
46
|
+
// Register new socket with the application for select() if monitoring requested
|
47
|
+
if (monitor_loop && fd_ >= 0) {
|
48
|
+
// Only set loop_monitored_ to true if registration succeeds
|
49
|
+
loop_monitored_ = App.register_socket_fd(fd_);
|
50
|
+
} else {
|
51
|
+
loop_monitored_ = false;
|
52
|
+
}
|
53
|
+
#else
|
54
|
+
// Without select support, ignore monitor_loop parameter
|
55
|
+
(void) monitor_loop;
|
56
|
+
#endif
|
57
|
+
}
|
44
58
|
~BSDSocketImpl() override {
|
45
59
|
if (!closed_) {
|
46
60
|
close(); // NOLINT(clang-analyzer-optin.cplusplus.VirtualCall)
|
@@ -48,16 +62,35 @@ class BSDSocketImpl : public Socket {
|
|
48
62
|
}
|
49
63
|
int connect(const struct sockaddr *addr, socklen_t addrlen) override { return ::connect(fd_, addr, addrlen); }
|
50
64
|
std::unique_ptr<Socket> accept(struct sockaddr *addr, socklen_t *addrlen) override {
|
65
|
+
return accept_impl_(addr, addrlen, false);
|
66
|
+
}
|
67
|
+
std::unique_ptr<Socket> accept_loop_monitored(struct sockaddr *addr, socklen_t *addrlen) override {
|
68
|
+
return accept_impl_(addr, addrlen, true);
|
69
|
+
}
|
70
|
+
|
71
|
+
private:
|
72
|
+
std::unique_ptr<Socket> accept_impl_(struct sockaddr *addr, socklen_t *addrlen, bool loop_monitored) {
|
51
73
|
int fd = ::accept(fd_, addr, addrlen);
|
52
74
|
if (fd == -1)
|
53
75
|
return {};
|
54
|
-
return make_unique<BSDSocketImpl>(fd);
|
76
|
+
return make_unique<BSDSocketImpl>(fd, loop_monitored);
|
55
77
|
}
|
78
|
+
|
79
|
+
public:
|
56
80
|
int bind(const struct sockaddr *addr, socklen_t addrlen) override { return ::bind(fd_, addr, addrlen); }
|
57
81
|
int close() override {
|
58
|
-
|
59
|
-
|
60
|
-
|
82
|
+
if (!closed_) {
|
83
|
+
#ifdef USE_SOCKET_SELECT_SUPPORT
|
84
|
+
// Unregister from select() before closing if monitored
|
85
|
+
if (loop_monitored_) {
|
86
|
+
App.unregister_socket_fd(fd_);
|
87
|
+
}
|
88
|
+
#endif
|
89
|
+
int ret = ::close(fd_);
|
90
|
+
closed_ = true;
|
91
|
+
return ret;
|
92
|
+
}
|
93
|
+
return 0;
|
61
94
|
}
|
62
95
|
int shutdown(int how) override { return ::shutdown(fd_, how); }
|
63
96
|
|
@@ -126,16 +159,27 @@ class BSDSocketImpl : public Socket {
|
|
126
159
|
return 0;
|
127
160
|
}
|
128
161
|
|
162
|
+
int get_fd() const override { return fd_; }
|
163
|
+
|
129
164
|
protected:
|
130
165
|
int fd_;
|
131
166
|
bool closed_ = false;
|
132
167
|
};
|
133
168
|
|
134
|
-
|
169
|
+
// Helper to create a socket with optional monitoring
|
170
|
+
static std::unique_ptr<Socket> create_socket(int domain, int type, int protocol, bool loop_monitored = false) {
|
135
171
|
int ret = ::socket(domain, type, protocol);
|
136
172
|
if (ret == -1)
|
137
173
|
return nullptr;
|
138
|
-
return std::unique_ptr<Socket>{new BSDSocketImpl(ret)};
|
174
|
+
return std::unique_ptr<Socket>{new BSDSocketImpl(ret, loop_monitored)};
|
175
|
+
}
|
176
|
+
|
177
|
+
std::unique_ptr<Socket> socket(int domain, int type, int protocol) {
|
178
|
+
return create_socket(domain, type, protocol, false);
|
179
|
+
}
|
180
|
+
|
181
|
+
std::unique_ptr<Socket> socket_loop_monitored(int domain, int type, int protocol) {
|
182
|
+
return create_socket(domain, type, protocol, true);
|
139
183
|
}
|
140
184
|
|
141
185
|
} // namespace socket
|
@@ -606,6 +606,11 @@ std::unique_ptr<Socket> socket(int domain, int type, int protocol) {
|
|
606
606
|
return std::unique_ptr<Socket>{sock};
|
607
607
|
}
|
608
608
|
|
609
|
+
std::unique_ptr<Socket> socket_loop_monitored(int domain, int type, int protocol) {
|
610
|
+
// LWIPRawImpl doesn't use file descriptors, so monitoring is not applicable
|
611
|
+
return socket(domain, type, protocol);
|
612
|
+
}
|
613
|
+
|
609
614
|
} // namespace socket
|
610
615
|
} // namespace esphome
|
611
616
|
|
@@ -5,6 +5,7 @@
|
|
5
5
|
#ifdef USE_SOCKET_IMPL_LWIP_SOCKETS
|
6
6
|
|
7
7
|
#include <cstring>
|
8
|
+
#include "esphome/core/application.h"
|
8
9
|
|
9
10
|
namespace esphome {
|
10
11
|
namespace socket {
|
@@ -33,7 +34,20 @@ std::string format_sockaddr(const struct sockaddr_storage &storage) {
|
|
33
34
|
|
34
35
|
class LwIPSocketImpl : public Socket {
|
35
36
|
public:
|
36
|
-
LwIPSocketImpl(int fd) : fd_(fd) {
|
37
|
+
LwIPSocketImpl(int fd, bool monitor_loop = false) : fd_(fd) {
|
38
|
+
#ifdef USE_SOCKET_SELECT_SUPPORT
|
39
|
+
// Register new socket with the application for select() if monitoring requested
|
40
|
+
if (monitor_loop && fd_ >= 0) {
|
41
|
+
// Only set loop_monitored_ to true if registration succeeds
|
42
|
+
loop_monitored_ = App.register_socket_fd(fd_);
|
43
|
+
} else {
|
44
|
+
loop_monitored_ = false;
|
45
|
+
}
|
46
|
+
#else
|
47
|
+
// Without select support, ignore monitor_loop parameter
|
48
|
+
(void) monitor_loop;
|
49
|
+
#endif
|
50
|
+
}
|
37
51
|
~LwIPSocketImpl() override {
|
38
52
|
if (!closed_) {
|
39
53
|
close(); // NOLINT(clang-analyzer-optin.cplusplus.VirtualCall)
|
@@ -41,16 +55,35 @@ class LwIPSocketImpl : public Socket {
|
|
41
55
|
}
|
42
56
|
int connect(const struct sockaddr *addr, socklen_t addrlen) override { return lwip_connect(fd_, addr, addrlen); }
|
43
57
|
std::unique_ptr<Socket> accept(struct sockaddr *addr, socklen_t *addrlen) override {
|
58
|
+
return accept_impl_(addr, addrlen, false);
|
59
|
+
}
|
60
|
+
std::unique_ptr<Socket> accept_loop_monitored(struct sockaddr *addr, socklen_t *addrlen) override {
|
61
|
+
return accept_impl_(addr, addrlen, true);
|
62
|
+
}
|
63
|
+
|
64
|
+
private:
|
65
|
+
std::unique_ptr<Socket> accept_impl_(struct sockaddr *addr, socklen_t *addrlen, bool loop_monitored) {
|
44
66
|
int fd = lwip_accept(fd_, addr, addrlen);
|
45
67
|
if (fd == -1)
|
46
68
|
return {};
|
47
|
-
return make_unique<LwIPSocketImpl>(fd);
|
69
|
+
return make_unique<LwIPSocketImpl>(fd, loop_monitored);
|
48
70
|
}
|
71
|
+
|
72
|
+
public:
|
49
73
|
int bind(const struct sockaddr *addr, socklen_t addrlen) override { return lwip_bind(fd_, addr, addrlen); }
|
50
74
|
int close() override {
|
51
|
-
|
52
|
-
|
53
|
-
|
75
|
+
if (!closed_) {
|
76
|
+
#ifdef USE_SOCKET_SELECT_SUPPORT
|
77
|
+
// Unregister from select() before closing if monitored
|
78
|
+
if (loop_monitored_) {
|
79
|
+
App.unregister_socket_fd(fd_);
|
80
|
+
}
|
81
|
+
#endif
|
82
|
+
int ret = lwip_close(fd_);
|
83
|
+
closed_ = true;
|
84
|
+
return ret;
|
85
|
+
}
|
86
|
+
return 0;
|
54
87
|
}
|
55
88
|
int shutdown(int how) override { return lwip_shutdown(fd_, how); }
|
56
89
|
|
@@ -98,16 +131,27 @@ class LwIPSocketImpl : public Socket {
|
|
98
131
|
return 0;
|
99
132
|
}
|
100
133
|
|
134
|
+
int get_fd() const override { return fd_; }
|
135
|
+
|
101
136
|
protected:
|
102
137
|
int fd_;
|
103
138
|
bool closed_ = false;
|
104
139
|
};
|
105
140
|
|
106
|
-
|
141
|
+
// Helper to create a socket with optional monitoring
|
142
|
+
static std::unique_ptr<Socket> create_socket(int domain, int type, int protocol, bool loop_monitored = false) {
|
107
143
|
int ret = lwip_socket(domain, type, protocol);
|
108
144
|
if (ret == -1)
|
109
145
|
return nullptr;
|
110
|
-
return std::unique_ptr<Socket>{new LwIPSocketImpl(ret)};
|
146
|
+
return std::unique_ptr<Socket>{new LwIPSocketImpl(ret, loop_monitored)};
|
147
|
+
}
|
148
|
+
|
149
|
+
std::unique_ptr<Socket> socket(int domain, int type, int protocol) {
|
150
|
+
return create_socket(domain, type, protocol, false);
|
151
|
+
}
|
152
|
+
|
153
|
+
std::unique_ptr<Socket> socket_loop_monitored(int domain, int type, int protocol) {
|
154
|
+
return create_socket(domain, type, protocol, true);
|
111
155
|
}
|
112
156
|
|
113
157
|
} // namespace socket
|
@@ -4,12 +4,35 @@
|
|
4
4
|
#include <cstring>
|
5
5
|
#include <string>
|
6
6
|
#include "esphome/core/log.h"
|
7
|
+
#include "esphome/core/application.h"
|
7
8
|
|
8
9
|
namespace esphome {
|
9
10
|
namespace socket {
|
10
11
|
|
11
12
|
Socket::~Socket() {}
|
12
13
|
|
14
|
+
bool Socket::ready() const {
|
15
|
+
#ifdef USE_SOCKET_SELECT_SUPPORT
|
16
|
+
if (!loop_monitored_) {
|
17
|
+
// Non-monitored sockets always return true (assume data may be available)
|
18
|
+
return true;
|
19
|
+
}
|
20
|
+
|
21
|
+
// For loop-monitored sockets, check with the Application's select() results
|
22
|
+
int fd = this->get_fd();
|
23
|
+
if (fd < 0) {
|
24
|
+
// No valid file descriptor, assume ready (fallback behavior)
|
25
|
+
return true;
|
26
|
+
}
|
27
|
+
|
28
|
+
return App.is_socket_ready(fd);
|
29
|
+
#else
|
30
|
+
// Without select() support, we can't monitor sockets in the loop
|
31
|
+
// Always return true (assume data may be available)
|
32
|
+
return true;
|
33
|
+
#endif
|
34
|
+
}
|
35
|
+
|
13
36
|
std::unique_ptr<Socket> socket_ip(int type, int protocol) {
|
14
37
|
#if USE_NETWORK_IPV6
|
15
38
|
return socket(AF_INET6, type, protocol);
|
@@ -18,6 +41,14 @@ std::unique_ptr<Socket> socket_ip(int type, int protocol) {
|
|
18
41
|
#endif /* USE_NETWORK_IPV6 */
|
19
42
|
}
|
20
43
|
|
44
|
+
std::unique_ptr<Socket> socket_ip_loop_monitored(int type, int protocol) {
|
45
|
+
#if USE_NETWORK_IPV6
|
46
|
+
return socket_loop_monitored(AF_INET6, type, protocol);
|
47
|
+
#else
|
48
|
+
return socket_loop_monitored(AF_INET, type, protocol);
|
49
|
+
#endif /* USE_NETWORK_IPV6 */
|
50
|
+
}
|
51
|
+
|
21
52
|
socklen_t set_sockaddr(struct sockaddr *addr, socklen_t addrlen, const std::string &ip_address, uint16_t port) {
|
22
53
|
#if USE_NETWORK_IPV6
|
23
54
|
if (ip_address.find(':') != std::string::npos) {
|
@@ -17,6 +17,11 @@ class Socket {
|
|
17
17
|
Socket &operator=(const Socket &) = delete;
|
18
18
|
|
19
19
|
virtual std::unique_ptr<Socket> accept(struct sockaddr *addr, socklen_t *addrlen) = 0;
|
20
|
+
/// Accept a connection and monitor it in the main loop
|
21
|
+
/// NOTE: This function is NOT thread-safe and must only be called from the main loop
|
22
|
+
virtual std::unique_ptr<Socket> accept_loop_monitored(struct sockaddr *addr, socklen_t *addrlen) {
|
23
|
+
return accept(addr, addrlen); // Default implementation for backward compatibility
|
24
|
+
}
|
20
25
|
virtual int bind(const struct sockaddr *addr, socklen_t addrlen) = 0;
|
21
26
|
virtual int close() = 0;
|
22
27
|
// not supported yet:
|
@@ -44,14 +49,35 @@ class Socket {
|
|
44
49
|
|
45
50
|
virtual int setblocking(bool blocking) = 0;
|
46
51
|
virtual int loop() { return 0; };
|
52
|
+
|
53
|
+
/// Get the underlying file descriptor (returns -1 if not supported)
|
54
|
+
virtual int get_fd() const { return -1; }
|
55
|
+
|
56
|
+
/// Check if socket has data ready to read
|
57
|
+
/// For loop-monitored sockets, checks with the Application's select() results
|
58
|
+
/// For non-monitored sockets, always returns true (assumes data may be available)
|
59
|
+
bool ready() const;
|
60
|
+
|
61
|
+
protected:
|
62
|
+
#ifdef USE_SOCKET_SELECT_SUPPORT
|
63
|
+
bool loop_monitored_{false}; ///< Whether this socket is monitored by the event loop
|
64
|
+
#endif
|
47
65
|
};
|
48
66
|
|
49
67
|
/// Create a socket of the given domain, type and protocol.
|
50
68
|
std::unique_ptr<Socket> socket(int domain, int type, int protocol);
|
51
|
-
|
52
69
|
/// Create a socket in the newest available IP domain (IPv6 or IPv4) of the given type and protocol.
|
53
70
|
std::unique_ptr<Socket> socket_ip(int type, int protocol);
|
54
71
|
|
72
|
+
/// Create a socket and monitor it for data in the main loop.
|
73
|
+
/// Like socket() but also registers the socket with the Application's select() loop.
|
74
|
+
/// WARNING: These functions are NOT thread-safe. They must only be called from the main loop
|
75
|
+
/// as they register the socket file descriptor with the global Application instance.
|
76
|
+
/// NOTE: On ESP platforms, FD_SETSIZE is typically 10, limiting the number of monitored sockets.
|
77
|
+
/// File descriptors >= FD_SETSIZE will not be monitored and will log an error.
|
78
|
+
std::unique_ptr<Socket> socket_loop_monitored(int domain, int type, int protocol);
|
79
|
+
std::unique_ptr<Socket> socket_ip_loop_monitored(int type, int protocol);
|
80
|
+
|
55
81
|
/// Set a sockaddr to the specified address and port for the IP version used by socket_ip().
|
56
82
|
socklen_t set_sockaddr(struct sockaddr *addr, socklen_t addrlen, const std::string &ip_address, uint16_t port);
|
57
83
|
|
@@ -286,10 +286,13 @@ void SonoffD1Output::write_state(light::LightState *state) {
|
|
286
286
|
}
|
287
287
|
|
288
288
|
void SonoffD1Output::dump_config() {
|
289
|
-
ESP_LOGCONFIG(TAG,
|
290
|
-
|
291
|
-
|
292
|
-
|
289
|
+
ESP_LOGCONFIG(TAG,
|
290
|
+
"Sonoff D1 Dimmer: '%s'\n"
|
291
|
+
" Use RM433 Remote: %s\n"
|
292
|
+
" Minimal brightness: %d\n"
|
293
|
+
" Maximal brightness: %d",
|
294
|
+
this->light_state_ ? this->light_state_->get_name().c_str() : "", ONOFF(this->use_rm433_remote_),
|
295
|
+
this->min_value_, this->max_value_);
|
293
296
|
}
|
294
297
|
|
295
298
|
void SonoffD1Output::loop() {
|
@@ -31,9 +31,9 @@
|
|
31
31
|
-----
|
32
32
|
*/
|
33
33
|
|
34
|
-
#include "esphome/core/log.h"
|
35
|
-
#include "esphome/core/helpers.h"
|
36
34
|
#include "esphome/core/component.h"
|
35
|
+
#include "esphome/core/helpers.h"
|
36
|
+
#include "esphome/core/log.h"
|
37
37
|
#include "esphome/components/uart/uart.h"
|
38
38
|
#include "esphome/components/light/light_output.h"
|
39
39
|
#include "esphome/components/light/light_state.h"
|
@@ -19,8 +19,10 @@ static const uint32_t RING_BUFFER_DURATION_MS = 120;
|
|
19
19
|
static const double MAX_SAMPLE_SQUARED_DENOMINATOR = INT16_MIN * INT16_MIN;
|
20
20
|
|
21
21
|
void SoundLevelComponent::dump_config() {
|
22
|
-
ESP_LOGCONFIG(TAG,
|
23
|
-
|
22
|
+
ESP_LOGCONFIG(TAG,
|
23
|
+
"Sound Level Component:\n"
|
24
|
+
" Measurement Duration: %" PRIu32 " ms",
|
25
|
+
measurement_duration_ms_);
|
24
26
|
LOG_SENSOR(" ", "Peak:", this->peak_sensor_);
|
25
27
|
|
26
28
|
LOG_SENSOR(" ", "RMS:", this->rms_sensor_);
|
@@ -48,6 +48,7 @@ CONF_ON_UNMUTE = "on_unmute"
|
|
48
48
|
CONF_ON_VOLUME = "on_volume"
|
49
49
|
CONF_STREAM = "stream"
|
50
50
|
CONF_VOLUME_INCREMENT = "volume_increment"
|
51
|
+
CONF_VOLUME_INITIAL = "volume_initial"
|
51
52
|
CONF_VOLUME_MIN = "volume_min"
|
52
53
|
CONF_VOLUME_MAX = "volume_max"
|
53
54
|
|
@@ -282,6 +283,7 @@ CONFIG_SCHEMA = cv.All(
|
|
282
283
|
cv.Optional(CONF_FILES): cv.ensure_list(MEDIA_FILE_TYPE_SCHEMA),
|
283
284
|
cv.Optional(CONF_TASK_STACK_IN_PSRAM, default=False): cv.boolean,
|
284
285
|
cv.Optional(CONF_VOLUME_INCREMENT, default=0.05): cv.percentage,
|
286
|
+
cv.Optional(CONF_VOLUME_INITIAL, default=0.5): cv.percentage,
|
285
287
|
cv.Optional(CONF_VOLUME_MAX, default=1.0): cv.percentage,
|
286
288
|
cv.Optional(CONF_VOLUME_MIN, default=0.0): cv.percentage,
|
287
289
|
cv.Optional(CONF_ON_MUTE): automation.validate_automation(single=True),
|
@@ -356,6 +358,7 @@ async def to_code(config):
|
|
356
358
|
)
|
357
359
|
|
358
360
|
cg.add(var.set_volume_increment(config[CONF_VOLUME_INCREMENT]))
|
361
|
+
cg.add(var.set_volume_initial(config[CONF_VOLUME_INITIAL]))
|
359
362
|
cg.add(var.set_volume_max(config[CONF_VOLUME_MAX]))
|
360
363
|
cg.add(var.set_volume_min(config[CONF_VOLUME_MIN]))
|
361
364
|
|
@@ -48,8 +48,6 @@ static const uint32_t MEDIA_CONTROLS_QUEUE_LENGTH = 20;
|
|
48
48
|
static const UBaseType_t MEDIA_PIPELINE_TASK_PRIORITY = 1;
|
49
49
|
static const UBaseType_t ANNOUNCEMENT_PIPELINE_TASK_PRIORITY = 1;
|
50
50
|
|
51
|
-
static const float FIRST_BOOT_DEFAULT_VOLUME = 0.5f;
|
52
|
-
|
53
51
|
static const char *const TAG = "speaker_media_player";
|
54
52
|
|
55
53
|
void SpeakerMediaPlayer::setup() {
|
@@ -64,7 +62,7 @@ void SpeakerMediaPlayer::setup() {
|
|
64
62
|
this->set_volume_(volume_restore_state.volume);
|
65
63
|
this->set_mute_state_(volume_restore_state.is_muted);
|
66
64
|
} else {
|
67
|
-
this->set_volume_(
|
65
|
+
this->set_volume_(this->volume_initial_);
|
68
66
|
this->set_mute_state_(false);
|
69
67
|
}
|
70
68
|
|