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
@@ -75,6 +75,36 @@ class NextionCommandPacer {
|
|
75
75
|
|
76
76
|
class Nextion : public NextionBase, public PollingComponent, public uart::UARTDevice {
|
77
77
|
public:
|
78
|
+
#ifdef USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
79
|
+
/**
|
80
|
+
* @brief Set the maximum number of commands to process in each loop iteration
|
81
|
+
* @param value Maximum number of commands (default: 20)
|
82
|
+
*
|
83
|
+
* Limiting the number of commands per loop helps prevent stack overflows
|
84
|
+
* when a large number of commands are queued at once, especially during boot.
|
85
|
+
*/
|
86
|
+
inline void set_max_commands_per_loop(uint16_t value) { this->max_commands_per_loop_ = value; }
|
87
|
+
|
88
|
+
/**
|
89
|
+
* @brief Get the current maximum number of commands allowed per loop iteration
|
90
|
+
* @return Configured command limit per loop
|
91
|
+
*/
|
92
|
+
inline uint16_t get_max_commands_per_loop() const { return this->max_commands_per_loop_; }
|
93
|
+
#endif // USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
94
|
+
#ifdef USE_NEXTION_MAX_QUEUE_SIZE
|
95
|
+
/**
|
96
|
+
* @brief Set the maximum allowed queue size
|
97
|
+
* @param size Max number of entries allowed in nextion_queue_
|
98
|
+
*/
|
99
|
+
inline void set_max_queue_size(size_t size) { this->max_queue_size_ = size; }
|
100
|
+
|
101
|
+
/**
|
102
|
+
* @brief Get the maximum allowed queue size
|
103
|
+
* @return Current limit (0 = unlimited)
|
104
|
+
*/
|
105
|
+
inline size_t get_max_queue_size() const { return this->max_queue_size_; }
|
106
|
+
#endif // USE_NEXTION_MAX_QUEUE_SIZE
|
107
|
+
|
78
108
|
#ifdef USE_NEXTION_COMMAND_SPACING
|
79
109
|
/**
|
80
110
|
* @brief Set the command spacing for the display
|
@@ -1273,6 +1303,12 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|
1273
1303
|
bool is_connected() { return this->is_connected_; }
|
1274
1304
|
|
1275
1305
|
protected:
|
1306
|
+
#ifdef USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
1307
|
+
uint16_t max_commands_per_loop_{1000};
|
1308
|
+
#endif // USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
1309
|
+
#ifdef USE_NEXTION_MAX_QUEUE_SIZE
|
1310
|
+
size_t max_queue_size_{0};
|
1311
|
+
#endif // USE_NEXTION_MAX_QUEUE_SIZE
|
1276
1312
|
#ifdef USE_NEXTION_COMMAND_SPACING
|
1277
1313
|
NextionCommandPacer command_pacer_{0};
|
1278
1314
|
#endif // USE_NEXTION_COMMAND_SPACING
|
@@ -17,7 +17,7 @@ void Nextion::set_wake_up_page(uint8_t wake_up_page) {
|
|
17
17
|
|
18
18
|
void Nextion::set_touch_sleep_timeout(uint32_t touch_sleep_timeout) {
|
19
19
|
if (touch_sleep_timeout < 3) {
|
20
|
-
ESP_LOGD(TAG, "Sleep timeout out of bounds
|
20
|
+
ESP_LOGD(TAG, "Sleep timeout out of bounds (3-65535)");
|
21
21
|
return;
|
22
22
|
}
|
23
23
|
|
@@ -37,7 +37,7 @@ void Nextion::sleep(bool sleep) {
|
|
37
37
|
|
38
38
|
// Protocol reparse mode
|
39
39
|
bool Nextion::set_protocol_reparse_mode(bool active_mode) {
|
40
|
-
ESP_LOGV(TAG, "
|
40
|
+
ESP_LOGV(TAG, "Reparse mode: %s", YESNO(active_mode));
|
41
41
|
this->ignore_is_setup_ = true; // if not in reparse mode setup will fail, so it should be ignored
|
42
42
|
bool all_commands_sent = true;
|
43
43
|
if (active_mode) { // Sets active protocol reparse mode
|
@@ -184,7 +184,7 @@ void Nextion::goto_page(uint8_t page) { this->add_no_result_to_queue_with_printf
|
|
184
184
|
|
185
185
|
void Nextion::set_backlight_brightness(float brightness) {
|
186
186
|
if (brightness < 0 || brightness > 1.0) {
|
187
|
-
ESP_LOGD(TAG, "Brightness out of bounds
|
187
|
+
ESP_LOGD(TAG, "Brightness out of bounds (0-1.0)");
|
188
188
|
return;
|
189
189
|
}
|
190
190
|
this->add_no_result_to_queue_with_printf_("backlight_brightness", "dim=%d", static_cast<int>(brightness * 100));
|
@@ -31,7 +31,7 @@ inline uint32_t Nextion::get_free_heap_() {
|
|
31
31
|
|
32
32
|
int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
33
33
|
uint32_t range_size = this->tft_size_ - range_start;
|
34
|
-
ESP_LOGV(TAG, "
|
34
|
+
ESP_LOGV(TAG, "Heap: %" PRIu32, this->get_free_heap_());
|
35
35
|
uint32_t range_end = ((upload_first_chunk_sent_ or this->tft_size_ < 4096) ? this->tft_size_ : 4096) - 1;
|
36
36
|
ESP_LOGD(TAG, "Range start: %" PRIu32, range_start);
|
37
37
|
if (range_size <= 0 or range_end <= range_start) {
|
@@ -43,11 +43,11 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
43
43
|
|
44
44
|
char range_header[32];
|
45
45
|
sprintf(range_header, "bytes=%" PRIu32 "-%" PRIu32, range_start, range_end);
|
46
|
-
ESP_LOGV(TAG, "
|
46
|
+
ESP_LOGV(TAG, "Range: %s", range_header);
|
47
47
|
http_client.addHeader("Range", range_header);
|
48
48
|
int code = http_client.GET();
|
49
49
|
if (code != HTTP_CODE_OK and code != HTTP_CODE_PARTIAL_CONTENT) {
|
50
|
-
ESP_LOGW(TAG, "HTTP
|
50
|
+
ESP_LOGW(TAG, "HTTP failed: %s", HTTPClient::errorToString(code).c_str());
|
51
51
|
return -1;
|
52
52
|
}
|
53
53
|
|
@@ -55,7 +55,7 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
55
55
|
ExternalRAMAllocator<uint8_t> allocator(ExternalRAMAllocator<uint8_t>::ALLOW_FAILURE);
|
56
56
|
uint8_t *buffer = allocator.allocate(4096);
|
57
57
|
if (!buffer) {
|
58
|
-
ESP_LOGE(TAG, "
|
58
|
+
ESP_LOGE(TAG, "Buffer alloc failed");
|
59
59
|
return -1;
|
60
60
|
}
|
61
61
|
|
@@ -64,7 +64,7 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
64
64
|
App.feed_wdt();
|
65
65
|
const uint16_t buffer_size =
|
66
66
|
this->content_length_ < 4096 ? this->content_length_ : 4096; // Limits buffer to the remaining data
|
67
|
-
ESP_LOGV(TAG, "
|
67
|
+
ESP_LOGV(TAG, "Fetch %" PRIu16 " bytes", buffer_size);
|
68
68
|
uint16_t read_len = 0;
|
69
69
|
int partial_read_len = 0;
|
70
70
|
const uint32_t start_time = millis();
|
@@ -81,14 +81,13 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
81
81
|
}
|
82
82
|
if (read_len != buffer_size) {
|
83
83
|
// Did not receive the full package within the timeout period
|
84
|
-
ESP_LOGE(TAG, "
|
85
|
-
buffer_size);
|
84
|
+
ESP_LOGE(TAG, "Read failed: %" PRIu16 "/%" PRIu16 " bytes", read_len, buffer_size);
|
86
85
|
// Deallocate buffer
|
87
86
|
allocator.deallocate(buffer, 4096);
|
88
87
|
buffer = nullptr;
|
89
88
|
return -1;
|
90
89
|
}
|
91
|
-
ESP_LOGV(TAG, "%d bytes
|
90
|
+
ESP_LOGV(TAG, "Fetched %d bytes", read_len);
|
92
91
|
if (read_len > 0) {
|
93
92
|
recv_string.clear();
|
94
93
|
this->write_array(buffer, buffer_size);
|
@@ -97,25 +96,23 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
97
96
|
this->content_length_ -= read_len;
|
98
97
|
const float upload_percentage = 100.0f * (this->tft_size_ - this->content_length_) / this->tft_size_;
|
99
98
|
#if defined(USE_ESP32) && defined(USE_PSRAM)
|
100
|
-
ESP_LOGD(
|
101
|
-
|
102
|
-
|
103
|
-
upload_percentage, this->content_length_, static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_INTERNAL)),
|
104
|
-
static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_SPIRAM)));
|
99
|
+
ESP_LOGD(TAG, "Upload: %0.2f%% (%" PRIu32 " left, heap: %" PRIu32 "+%" PRIu32 ")", upload_percentage,
|
100
|
+
this->content_length_, static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_INTERNAL)),
|
101
|
+
static_cast<uint32_t>(heap_caps_get_free_size(MALLOC_CAP_SPIRAM)));
|
105
102
|
#else
|
106
|
-
ESP_LOGD(TAG, "
|
107
|
-
this->
|
103
|
+
ESP_LOGD(TAG, "Upload: %0.2f%% (%" PRIu32 " left, heap: %" PRIu32 ")", upload_percentage, this->content_length_,
|
104
|
+
this->get_free_heap_());
|
108
105
|
#endif
|
109
106
|
upload_first_chunk_sent_ = true;
|
110
107
|
if (recv_string[0] == 0x08 && recv_string.size() == 5) { // handle partial upload request
|
111
|
-
ESP_LOGD(TAG, "
|
108
|
+
ESP_LOGD(TAG, "Recv: [%s]",
|
112
109
|
format_hex_pretty(reinterpret_cast<const uint8_t *>(recv_string.data()), recv_string.size()).c_str());
|
113
110
|
uint32_t result = 0;
|
114
111
|
for (int j = 0; j < 4; ++j) {
|
115
112
|
result += static_cast<uint8_t>(recv_string[j + 1]) << (8 * j);
|
116
113
|
}
|
117
114
|
if (result > 0) {
|
118
|
-
ESP_LOGI(TAG, "
|
115
|
+
ESP_LOGI(TAG, "New range: %" PRIu32, result);
|
119
116
|
this->content_length_ = this->tft_size_ - result;
|
120
117
|
range_start = result;
|
121
118
|
} else {
|
@@ -126,7 +123,7 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
126
123
|
buffer = nullptr;
|
127
124
|
return range_end + 1;
|
128
125
|
} else if (recv_string[0] != 0x05 and recv_string[0] != 0x08) { // 0x05 == "ok"
|
129
|
-
ESP_LOGE(TAG, "Invalid response
|
126
|
+
ESP_LOGE(TAG, "Invalid response: [%s]",
|
130
127
|
format_hex_pretty(reinterpret_cast<const uint8_t *>(recv_string.data()), recv_string.size()).c_str());
|
131
128
|
// Deallocate buffer
|
132
129
|
allocator.deallocate(buffer, 4096);
|
@@ -136,10 +133,10 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
136
133
|
|
137
134
|
recv_string.clear();
|
138
135
|
} else if (read_len == 0) {
|
139
|
-
ESP_LOGV(TAG, "
|
136
|
+
ESP_LOGV(TAG, "HTTP end");
|
140
137
|
break; // Exit the loop if there is no more data to read
|
141
138
|
} else {
|
142
|
-
ESP_LOGE(TAG, "
|
139
|
+
ESP_LOGE(TAG, "HTTP read failed: %d", read_len);
|
143
140
|
break; // Exit the loop on error
|
144
141
|
}
|
145
142
|
}
|
@@ -151,26 +148,26 @@ int Nextion::upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start) {
|
|
151
148
|
}
|
152
149
|
|
153
150
|
bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
|
154
|
-
ESP_LOGD(TAG, "
|
151
|
+
ESP_LOGD(TAG, "TFT upload requested");
|
155
152
|
ESP_LOGD(TAG, "Exit reparse: %s", YESNO(exit_reparse));
|
156
153
|
ESP_LOGD(TAG, "URL: %s", this->tft_url_.c_str());
|
157
154
|
|
158
155
|
if (this->is_updating_) {
|
159
|
-
ESP_LOGW(TAG, "
|
156
|
+
ESP_LOGW(TAG, "Upload in progress");
|
160
157
|
return false;
|
161
158
|
}
|
162
159
|
|
163
160
|
if (!network::is_connected()) {
|
164
|
-
ESP_LOGE(TAG, "
|
161
|
+
ESP_LOGE(TAG, "No network");
|
165
162
|
return false;
|
166
163
|
}
|
167
164
|
|
168
165
|
this->is_updating_ = true;
|
169
166
|
|
170
167
|
if (exit_reparse) {
|
171
|
-
ESP_LOGD(TAG, "
|
168
|
+
ESP_LOGD(TAG, "Exit reparse mode");
|
172
169
|
if (!this->set_protocol_reparse_mode(false)) {
|
173
|
-
ESP_LOGW(TAG, "
|
170
|
+
ESP_LOGW(TAG, "Exit reparse failed");
|
174
171
|
return false;
|
175
172
|
}
|
176
173
|
}
|
@@ -185,8 +182,8 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
|
|
185
182
|
ESP_LOGD(TAG, "Baud rate: %" PRIu32, baud_rate);
|
186
183
|
|
187
184
|
// Define the configuration for the HTTP client
|
188
|
-
ESP_LOGV(TAG, "
|
189
|
-
ESP_LOGV(TAG, "
|
185
|
+
ESP_LOGV(TAG, "Init HTTP client");
|
186
|
+
ESP_LOGV(TAG, "Heap: %" PRIu32, this->get_free_heap_());
|
190
187
|
HTTPClient http_client;
|
191
188
|
http_client.setTimeout(15000); // Yes 15 seconds.... Helps 8266s along
|
192
189
|
|
@@ -215,7 +212,7 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
|
|
215
212
|
http_client.addHeader("Range", "bytes=0-255");
|
216
213
|
const char *header_names[] = {"Content-Range"};
|
217
214
|
http_client.collectHeaders(header_names, 1);
|
218
|
-
ESP_LOGD(TAG, "
|
215
|
+
ESP_LOGD(TAG, "URL: %s", this->tft_url_.c_str());
|
219
216
|
http_client.setReuse(true);
|
220
217
|
// try up to 5 times. DNS sometimes needs a second try or so
|
221
218
|
int tries = 1;
|
@@ -224,7 +221,7 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
|
|
224
221
|
|
225
222
|
App.feed_wdt();
|
226
223
|
while (code != 200 && code != 206 && tries <= 5) {
|
227
|
-
ESP_LOGW(TAG, "HTTP
|
224
|
+
ESP_LOGW(TAG, "HTTP fail: URL: %s; Error: %s, retry %d/5", this->tft_url_.c_str(),
|
228
225
|
HTTPClient::errorToString(code).c_str(), tries);
|
229
226
|
|
230
227
|
delay(250); // NOLINT
|
@@ -241,27 +238,27 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
|
|
241
238
|
content_range_string.remove(0, 12);
|
242
239
|
this->tft_size_ = content_range_string.toInt();
|
243
240
|
|
244
|
-
ESP_LOGD(TAG, "TFT
|
241
|
+
ESP_LOGD(TAG, "TFT size: %zu bytes", this->tft_size_);
|
245
242
|
if (this->tft_size_ < 4096) {
|
246
|
-
ESP_LOGE(TAG, "
|
247
|
-
ESP_LOGD(TAG, "Close HTTP
|
243
|
+
ESP_LOGE(TAG, "Size check failed");
|
244
|
+
ESP_LOGD(TAG, "Close HTTP");
|
248
245
|
http_client.end();
|
249
246
|
ESP_LOGV(TAG, "Connection closed");
|
250
247
|
return this->upload_end_(false);
|
251
248
|
} else {
|
252
|
-
ESP_LOGV(TAG, "
|
249
|
+
ESP_LOGV(TAG, "Size check OK");
|
253
250
|
}
|
254
251
|
this->content_length_ = this->tft_size_;
|
255
252
|
|
256
|
-
ESP_LOGD(TAG, "Uploading
|
253
|
+
ESP_LOGD(TAG, "Uploading");
|
257
254
|
|
258
255
|
// The Nextion will ignore the upload command if it is sleeping
|
259
|
-
ESP_LOGV(TAG, "Wake-up
|
256
|
+
ESP_LOGV(TAG, "Wake-up");
|
260
257
|
this->ignore_is_setup_ = true;
|
261
258
|
this->send_command_("sleep=0");
|
262
259
|
this->send_command_("dim=100");
|
263
260
|
delay(250); // NOLINT
|
264
|
-
ESP_LOGV(TAG, "
|
261
|
+
ESP_LOGV(TAG, "Heap: %" PRIu32, this->get_free_heap_());
|
265
262
|
|
266
263
|
App.feed_wdt();
|
267
264
|
char command[128];
|
@@ -271,16 +268,16 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
|
|
271
268
|
sprintf(command, "whmi-wris %d,%d,1", this->content_length_, baud_rate);
|
272
269
|
|
273
270
|
// Clear serial receive buffer
|
274
|
-
ESP_LOGV(TAG, "Clear
|
271
|
+
ESP_LOGV(TAG, "Clear RX buffer");
|
275
272
|
this->reset_(false);
|
276
273
|
delay(250); // NOLINT
|
277
|
-
ESP_LOGV(TAG, "
|
274
|
+
ESP_LOGV(TAG, "Heap: %" PRIu32, this->get_free_heap_());
|
278
275
|
|
279
|
-
ESP_LOGV(TAG, "
|
276
|
+
ESP_LOGV(TAG, "Upload cmd: %s", command);
|
280
277
|
this->send_command_(command);
|
281
278
|
|
282
279
|
if (baud_rate != this->original_baud_rate_) {
|
283
|
-
ESP_LOGD(TAG, "
|
280
|
+
ESP_LOGD(TAG, "Baud: %" PRIu32 "->%" PRIu32, this->original_baud_rate_, baud_rate);
|
284
281
|
this->parent_->set_baud_rate(baud_rate);
|
285
282
|
this->parent_->load_settings();
|
286
283
|
}
|
@@ -288,74 +285,74 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) {
|
|
288
285
|
App.feed_wdt();
|
289
286
|
|
290
287
|
std::string response;
|
291
|
-
ESP_LOGV(TAG, "
|
288
|
+
ESP_LOGV(TAG, "Wait upload resp");
|
292
289
|
this->recv_ret_string_(response, 5000, true); // This can take some time to return
|
293
290
|
|
294
291
|
// The Nextion display will, if it's ready to accept data, send a 0x05 byte.
|
295
|
-
ESP_LOGD(TAG, "
|
292
|
+
ESP_LOGD(TAG, "Upload resp: [%s] %zu B",
|
296
293
|
format_hex_pretty(reinterpret_cast<const uint8_t *>(response.data()), response.size()).c_str(),
|
297
294
|
response.length());
|
298
|
-
ESP_LOGV(TAG, "
|
295
|
+
ESP_LOGV(TAG, "Heap: %" PRIu32, this->get_free_heap_());
|
299
296
|
|
300
297
|
if (response.find(0x05) != std::string::npos) {
|
301
|
-
ESP_LOGV(TAG, "
|
298
|
+
ESP_LOGV(TAG, "Upload prep done");
|
302
299
|
} else {
|
303
|
-
ESP_LOGE(TAG, "
|
304
|
-
ESP_LOGD(TAG, "Close HTTP
|
300
|
+
ESP_LOGE(TAG, "Prep failed %d '%s'", response[0], response.c_str());
|
301
|
+
ESP_LOGD(TAG, "Close HTTP");
|
305
302
|
http_client.end();
|
306
303
|
ESP_LOGV(TAG, "Connection closed");
|
307
304
|
return this->upload_end_(false);
|
308
305
|
}
|
309
306
|
|
310
|
-
ESP_LOGD(TAG, "
|
311
|
-
ESP_LOGD(TAG, " URL:
|
312
|
-
ESP_LOGD(TAG, "
|
313
|
-
ESP_LOGD(TAG, "
|
307
|
+
ESP_LOGD(TAG, "Upload TFT:");
|
308
|
+
ESP_LOGD(TAG, " URL: %s", this->tft_url_.c_str());
|
309
|
+
ESP_LOGD(TAG, " Size: %d bytes", this->content_length_);
|
310
|
+
ESP_LOGD(TAG, " Heap: %" PRIu32, this->get_free_heap_());
|
314
311
|
|
315
312
|
// Proceed with the content download as before
|
316
313
|
|
317
|
-
ESP_LOGV(TAG, "
|
314
|
+
ESP_LOGV(TAG, "Start chunk transfer");
|
318
315
|
|
319
316
|
uint32_t position = 0;
|
320
317
|
while (this->content_length_ > 0) {
|
321
318
|
int upload_result = upload_by_chunks_(http_client, position);
|
322
319
|
if (upload_result < 0) {
|
323
|
-
ESP_LOGE(TAG, "
|
324
|
-
ESP_LOGD(TAG, "Close HTTP
|
320
|
+
ESP_LOGE(TAG, "Upload error");
|
321
|
+
ESP_LOGD(TAG, "Close HTTP");
|
325
322
|
http_client.end();
|
326
323
|
ESP_LOGV(TAG, "Connection closed");
|
327
324
|
return this->upload_end_(false);
|
328
325
|
}
|
329
326
|
App.feed_wdt();
|
330
|
-
ESP_LOGV(TAG, "
|
327
|
+
ESP_LOGV(TAG, "Heap: %" PRIu32 " left: %" PRIu32, this->get_free_heap_(), this->content_length_);
|
331
328
|
}
|
332
329
|
|
333
|
-
ESP_LOGD(TAG, "
|
330
|
+
ESP_LOGD(TAG, "Upload complete");
|
334
331
|
|
335
|
-
|
332
|
+
ESP_LOGV(TAG, "Close HTTP");
|
336
333
|
http_client.end();
|
337
334
|
ESP_LOGV(TAG, "Connection closed");
|
338
335
|
return upload_end_(true);
|
339
336
|
}
|
340
337
|
|
341
338
|
bool Nextion::upload_end_(bool successful) {
|
342
|
-
ESP_LOGD(TAG, "
|
339
|
+
ESP_LOGD(TAG, "TFT upload done: %s", YESNO(successful));
|
343
340
|
this->is_updating_ = false;
|
344
341
|
this->ignore_is_setup_ = false;
|
345
342
|
|
346
343
|
uint32_t baud_rate = this->parent_->get_baud_rate();
|
347
344
|
if (baud_rate != this->original_baud_rate_) {
|
348
|
-
ESP_LOGD(TAG, "
|
345
|
+
ESP_LOGD(TAG, "Baud back: %" PRIu32 "->%" PRIu32, baud_rate, this->original_baud_rate_);
|
349
346
|
this->parent_->set_baud_rate(this->original_baud_rate_);
|
350
347
|
this->parent_->load_settings();
|
351
348
|
}
|
352
349
|
|
353
350
|
if (successful) {
|
354
|
-
ESP_LOGD(TAG, "
|
351
|
+
ESP_LOGD(TAG, "Restart");
|
355
352
|
delay(1500); // NOLINT
|
356
|
-
|
353
|
+
App.safe_reboot();
|
357
354
|
} else {
|
358
|
-
ESP_LOGE(TAG, "
|
355
|
+
ESP_LOGE(TAG, "TFT upload failed");
|
359
356
|
}
|
360
357
|
return successful;
|
361
358
|
}
|