esphome 2025.5.2__py3-none-any.whl → 2025.6.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +20 -14
- esphome/components/a4988/a4988.cpp +1 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +6 -4
- esphome/components/ac_dimmer/ac_dimmer.cpp +4 -2
- esphome/components/adc/adc_sensor_esp32.cpp +5 -3
- esphome/components/adc/adc_sensor_esp8266.cpp +5 -3
- esphome/components/adc/adc_sensor_libretiny.cpp +5 -3
- esphome/components/adc/adc_sensor_rp2040.cpp +5 -3
- esphome/components/adc128s102/adc128s102.cpp +1 -1
- esphome/components/ade7880/ade7880.cpp +28 -17
- esphome/components/ade7953_base/ade7953_base.cpp +12 -9
- esphome/components/ade7953_i2c/ade7953_i2c.cpp +1 -1
- esphome/components/ade7953_spi/ade7953_spi.cpp +1 -1
- esphome/components/ads1115/ads1115.cpp +3 -5
- esphome/components/ads1118/ads1118.cpp +2 -1
- esphome/components/ags10/ags10.cpp +3 -2
- esphome/components/aht10/aht10.cpp +27 -29
- esphome/components/aic3204/aic3204.cpp +2 -2
- esphome/components/alarm_control_panel/__init__.py +1 -0
- esphome/components/am2315c/am2315c.cpp +2 -2
- esphome/components/am2320/am2320.cpp +2 -2
- esphome/components/am43/am43_base.h +1 -1
- esphome/components/am43/cover/am43_cover.cpp +4 -2
- esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +4 -2
- esphome/components/apds9306/apds9306.cpp +8 -5
- esphome/components/apds9960/apds9960.cpp +2 -2
- esphome/components/api/__init__.py +5 -0
- esphome/components/api/api_connection.cpp +753 -379
- esphome/components/api/api_connection.h +341 -283
- esphome/components/api/api_frame_helper.cpp +349 -344
- esphome/components/api/api_frame_helper.h +121 -94
- esphome/components/api/api_pb2.cpp +3 -0
- esphome/components/api/api_pb2.h +702 -227
- esphome/components/api/api_pb2_service.cpp +12 -688
- esphome/components/api/api_pb2_service.h +53 -207
- esphome/components/api/api_server.cpp +71 -29
- esphome/components/api/api_server.h +9 -0
- esphome/components/api/client.py +5 -4
- esphome/components/api/homeassistant_service.h +1 -1
- esphome/components/api/list_entities.cpp +1 -1
- esphome/components/api/proto.cpp +1 -0
- esphome/components/api/proto.h +5 -4
- esphome/components/api/subscribe_state.cpp +8 -16
- esphome/components/as3935/as3935.cpp +3 -3
- esphome/components/as5600/as5600.cpp +9 -7
- esphome/components/as7341/as7341.cpp +7 -5
- esphome/components/at581x/at581x.cpp +13 -10
- esphome/components/atm90e26/atm90e26.cpp +2 -2
- esphome/components/atm90e32/atm90e32.cpp +3 -3
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +5 -3
- esphome/components/bang_bang/bang_bang_climate.cpp +8 -5
- esphome/components/bedjet/bedjet_hub.cpp +6 -4
- esphome/components/beken_spi_led_strip/led_strip.cpp +11 -7
- esphome/components/bh1750/bh1750.cpp +2 -2
- esphome/components/binary_sensor/__init__.py +1 -0
- esphome/components/binary_sensor/automation.cpp +1 -2
- esphome/components/bl0906/bl0906.cpp +1 -1
- esphome/components/bl0942/bl0942.cpp +11 -8
- esphome/components/bl0942/sensor.py +1 -1
- esphome/components/ble_client/__init__.py +5 -1
- esphome/components/ble_client/output/ble_binary_output.cpp +6 -3
- esphome/components/ble_client/sensor/ble_sensor.cpp +9 -6
- esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +8 -5
- esphome/components/bluetooth_proxy/__init__.py +5 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -5
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +18 -16
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +1 -1
- esphome/components/bme280_base/bme280_base.cpp +5 -6
- esphome/components/bme680/bme680.cpp +3 -3
- esphome/components/bme680/sensor.py +2 -2
- esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
- esphome/components/bme680_bsec/sensor.py +7 -3
- esphome/components/bme68x_bsec2/__init__.py +6 -5
- esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
- esphome/components/bme68x_bsec2/sensor.py +4 -4
- esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
- esphome/components/bmi160/bmi160.cpp +11 -11
- esphome/components/bmp085/bmp085.cpp +2 -2
- esphome/components/bmp280_base/bmp280_base.cpp +3 -3
- esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
- esphome/components/bmp581/bmp581.cpp +33 -27
- esphome/components/bp1658cj/bp1658cj.cpp +5 -3
- esphome/components/bp5758d/bp5758d.cpp +1 -1
- esphome/components/button/__init__.py +1 -0
- esphome/components/canbus/canbus.cpp +1 -1
- esphome/components/cap1188/cap1188.cpp +6 -4
- esphome/components/captive_portal/captive_portal.cpp +1 -1
- esphome/components/ccs811/ccs811.cpp +3 -2
- esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
- esphome/components/ch422g/ch422g.cpp +2 -2
- esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
- esphome/components/climate/__init__.py +1 -0
- esphome/components/climate/climate.cpp +12 -7
- esphome/components/climate/climate.h +1 -1
- esphome/components/climate_ir/climate_ir.cpp +7 -4
- esphome/components/cm1106/__init__.py +1 -0
- esphome/components/cm1106/cm1106.cpp +112 -0
- esphome/components/cm1106/cm1106.h +40 -0
- esphome/components/cm1106/sensor.py +72 -0
- esphome/components/const/__init__.py +1 -0
- esphome/components/cover/__init__.py +1 -0
- esphome/components/cs5460a/cs5460a.cpp +16 -11
- esphome/components/cse7761/cse7761.cpp +2 -2
- esphome/components/cse7766/cse7766.cpp +0 -5
- esphome/components/cse7766/cse7766.h +5 -1
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
- esphome/components/current_based/current_based_cover.cpp +4 -2
- esphome/components/dac7678/dac7678_output.cpp +4 -4
- esphome/components/dallas_temp/dallas_temp.cpp +2 -3
- esphome/components/daly_bms/daly_bms.cpp +2 -1
- esphome/components/dashboard_import/__init__.py +1 -2
- esphome/components/datetime/__init__.py +3 -1
- esphome/components/datetime/date_entity.cpp +5 -5
- esphome/components/datetime/datetime_base.h +0 -5
- esphome/components/datetime/datetime_entity.cpp +8 -8
- esphome/components/datetime/time_entity.cpp +4 -4
- esphome/components/debug/debug_component.cpp +1 -1
- esphome/components/debug/debug_component.h +1 -1
- esphome/components/debug/debug_esp32.cpp +4 -2
- esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
- esphome/components/demo/__init__.py +206 -0
- esphome/components/demo/demo_alarm_control_panel.h +65 -0
- esphome/components/demo/demo_button.h +15 -0
- esphome/components/demo/demo_date.h +34 -0
- esphome/components/demo/demo_datetime.h +40 -0
- esphome/components/demo/demo_lock.h +17 -0
- esphome/components/demo/demo_select.h +15 -0
- esphome/components/demo/demo_text.h +18 -0
- esphome/components/demo/demo_time.h +34 -0
- esphome/components/demo/demo_valve.h +54 -0
- esphome/components/dfrobot_sen0395/commands.cpp +3 -3
- esphome/components/dht/dht.cpp +29 -50
- esphome/components/dht12/dht12.cpp +2 -2
- esphome/components/display/display.h +5 -3
- esphome/components/dps310/dps310.cpp +7 -5
- esphome/components/ds1307/ds1307.cpp +2 -2
- esphome/components/dsmr/dsmr.cpp +5 -3
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
- esphome/components/duty_time/duty_time_sensor.cpp +5 -3
- esphome/components/ee895/ee895.cpp +3 -3
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
- esphome/components/emc2101/emc2101.cpp +11 -9
- esphome/components/ens160_base/ens160_base.cpp +2 -2
- esphome/components/ens210/ens210.cpp +2 -2
- esphome/components/es7210/es7210.cpp +6 -4
- esphome/components/es7243e/es7243e.cpp +1 -1
- esphome/components/es8156/es8156.cpp +1 -1
- esphome/components/es8311/es8311.cpp +8 -6
- esphome/components/es8388/__init__.py +0 -0
- esphome/components/es8388/audio_dac.py +26 -0
- esphome/components/es8388/es8388.cpp +289 -0
- esphome/components/es8388/es8388.h +81 -0
- esphome/components/es8388/es8388_const.h +83 -0
- esphome/components/es8388/select/__init__.py +47 -0
- esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
- esphome/components/es8388/select/adc_input_mic_select.h +15 -0
- esphome/components/es8388/select/dac_output_select.cpp +12 -0
- esphome/components/es8388/select/dac_output_select.h +15 -0
- esphome/components/esp32/__init__.py +118 -23
- esphome/components/esp32/boards.py +208 -125
- esphome/components/esp32/const.py +6 -0
- esphome/components/esp32/gpio.py +14 -1
- esphome/components/esp32/gpio_esp32_c5.py +45 -0
- esphome/components/esp32/gpio_esp32_p4.py +43 -0
- esphome/components/esp32/preferences.cpp +7 -7
- esphome/components/esp32_ble/__init__.py +115 -0
- esphome/components/esp32_ble/ble.cpp +101 -54
- esphome/components/esp32_ble/ble.h +24 -5
- esphome/components/esp32_ble/ble_event.h +172 -32
- esphome/components/esp32_ble/ble_scan_result.h +24 -0
- esphome/components/esp32_ble/ble_uuid.h +1 -1
- esphome/components/esp32_ble/queue.h +53 -27
- esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
- esphome/components/esp32_ble_server/__init__.py +4 -1
- esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
- esphome/components/esp32_ble_server/ble_server.h +0 -1
- esphome/components/esp32_ble_tracker/__init__.py +7 -2
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +107 -75
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +16 -16
- esphome/components/esp32_camera/esp32_camera.cpp +35 -27
- esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
- esphome/components/esp32_dac/esp32_dac.cpp +2 -2
- esphome/components/esp32_improv/__init__.py +5 -1
- esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
- esphome/components/esp32_rmt_led_strip/light.py +5 -1
- esphome/components/esp32_touch/esp32_touch.cpp +12 -8
- esphome/components/esp8266/preferences.cpp +6 -6
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
- esphome/components/esp_ldo/__init__.py +91 -0
- esphome/components/esp_ldo/esp_ldo.cpp +43 -0
- esphome/components/esp_ldo/esp_ldo.h +43 -0
- esphome/components/esphome/ota/ota_esphome.cpp +15 -8
- esphome/components/ethernet/ethernet_component.cpp +38 -26
- esphome/components/ethernet/ethernet_component.h +1 -1
- esphome/components/event/__init__.py +1 -0
- esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
- esphome/components/ezo/ezo.cpp +1 -1
- esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
- esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
- esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
- esphome/components/fan/__init__.py +1 -0
- esphome/components/fan/fan.cpp +30 -19
- esphome/components/fastled_base/fastled_light.cpp +7 -5
- esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
- esphome/components/fs3000/fs3000.cpp +1 -1
- esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
- esphome/components/ft63x6/ft63x6.cpp +5 -3
- esphome/components/gcja5/gcja5.cpp +0 -12
- esphome/components/gcja5/gcja5.h +8 -3
- esphome/components/gdk101/gdk101.cpp +2 -2
- esphome/components/globals/globals_component.h +13 -10
- esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
- esphome/components/gp8403/gp8403.cpp +4 -2
- esphome/components/gp8403/output/gp8403_output.cpp +4 -2
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
- esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
- esphome/components/gpio/switch/gpio_switch.cpp +1 -1
- esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
- esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
- esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
- esphome/components/growatt_solar/growatt_solar.cpp +6 -3
- esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
- esphome/components/haier/haier_base.cpp +2 -2
- esphome/components/haier/hon_climate.cpp +13 -6
- esphome/components/havells_solar/havells_solar.cpp +5 -2
- esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
- esphome/components/hdc1080/hdc1080.cpp +2 -2
- esphome/components/he60r/he60r.cpp +4 -2
- esphome/components/hlw8012/hlw8012.cpp +6 -4
- esphome/components/hm3301/hm3301.cpp +2 -2
- esphome/components/hmc5883l/hmc5883l.cpp +2 -2
- esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
- esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
- esphome/components/honeywellabp/honeywellabp.cpp +4 -2
- esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
- esphome/components/hte501/hte501.cpp +3 -2
- esphome/components/http_request/__init__.py +2 -2
- esphome/components/http_request/http_request.cpp +7 -5
- esphome/components/http_request/http_request_idf.cpp +4 -2
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/htu21d/htu21d.cpp +2 -2
- esphome/components/htu31d/htu31d.cpp +2 -2
- esphome/components/hx711/hx711.cpp +2 -2
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
- esphome/components/hyt271/hyt271.cpp +2 -2
- esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
- esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
- esphome/components/i2s_audio/__init__.py +2 -0
- esphome/components/i2s_audio/i2s_audio.cpp +3 -4
- esphome/components/i2s_audio/i2s_audio.h +1 -1
- esphome/components/i2s_audio/media_player/__init__.py +1 -1
- esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +13 -10
- 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 +4 -4
- esphome/components/kuntze/kuntze.cpp +4 -2
- esphome/components/lc709203f/__init__.py +1 -0
- esphome/components/lc709203f/lc709203f.cpp +299 -0
- esphome/components/lc709203f/lc709203f.h +55 -0
- esphome/components/lc709203f/sensor.py +93 -0
- esphome/components/lcd_base/lcd_display.cpp +2 -2
- esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
- esphome/components/lcd_menu/lcd_menu.cpp +6 -4
- esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
- esphome/components/ld2410/ld2410.cpp +6 -7
- esphome/components/ld2420/ld2420.cpp +9 -7
- esphome/components/ld2450/ld2450.cpp +6 -4
- esphome/components/ld2450/sensor.py +2 -2
- esphome/components/ledc/ledc_output.cpp +32 -28
- esphome/components/libretiny/const.py +1 -1
- esphome/components/libretiny/preferences.cpp +6 -7
- esphome/components/light/__init__.py +2 -1
- esphome/components/light/esp_hsv_color.h +1 -1
- esphome/components/light/light_state.cpp +9 -5
- esphome/components/light/light_transformer.h +1 -1
- esphome/components/lightwaverf/LwTx.cpp +1 -1
- esphome/components/lightwaverf/lightwaverf.cpp +1 -1
- esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
- esphome/components/lock/__init__.py +1 -0
- esphome/components/lock/lock.h +1 -1
- esphome/components/logger/__init__.py +6 -0
- esphome/components/logger/logger.cpp +11 -20
- esphome/components/logger/logger.h +1 -2
- esphome/components/logger/logger_esp32.cpp +5 -5
- esphome/components/ltr390/ltr390.cpp +8 -5
- esphome/components/ltr501/ltr501.cpp +19 -14
- esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
- esphome/components/lvgl/__init__.py +2 -2
- esphome/components/lvgl/automation.py +5 -4
- esphome/components/lvgl/defines.py +0 -2
- esphome/components/lvgl/lv_validation.py +1 -3
- esphome/components/lvgl/lvcode.py +7 -8
- esphome/components/lvgl/lvgl_esphome.cpp +26 -10
- esphome/components/lvgl/schemas.py +22 -23
- esphome/components/lvgl/trigger.py +8 -3
- esphome/components/lvgl/widgets/__init__.py +2 -2
- esphome/components/lvgl/widgets/canvas.py +9 -3
- esphome/components/lvgl/widgets/line.py +2 -1
- esphome/components/lvgl/widgets/tabview.py +7 -0
- esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
- esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
- esphome/components/max17043/max17043.cpp +2 -2
- esphome/components/max31855/max31855.cpp +2 -1
- esphome/components/max31856/max31856.cpp +9 -11
- esphome/components/max31865/max31865.cpp +6 -4
- esphome/components/max44009/max44009.cpp +2 -2
- esphome/components/max6675/max6675.cpp +1 -1
- esphome/components/max6956/max6956.cpp +5 -3
- esphome/components/max7219/max7219.cpp +8 -6
- esphome/components/max7219digit/automation.h +52 -0
- esphome/components/max7219digit/display.py +93 -1
- esphome/components/max7219digit/max7219digit.cpp +16 -13
- esphome/components/max9611/max9611.cpp +9 -6
- esphome/components/mcp23008/mcp23008.cpp +1 -1
- esphome/components/mcp23016/mcp23016.cpp +1 -1
- esphome/components/mcp23017/mcp23017.cpp +1 -1
- esphome/components/mcp23s08/mcp23s08.cpp +1 -1
- esphome/components/mcp23s17/mcp23s17.cpp +1 -1
- esphome/components/mcp3008/mcp3008.cpp +1 -1
- esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
- esphome/components/mcp3204/mcp3204.cpp +1 -1
- esphome/components/mcp4461/mcp4461.cpp +2 -2
- esphome/components/mcp4725/mcp4725.cpp +2 -2
- esphome/components/mcp4728/mcp4728.cpp +2 -2
- esphome/components/mcp9600/mcp9600.cpp +1 -1
- esphome/components/mcp9808/mcp9808.cpp +4 -4
- esphome/components/mdns/mdns_component.cpp +8 -2
- esphome/components/mdns/mdns_component.h +3 -1
- esphome/components/mdns/mdns_esp32.cpp +2 -2
- esphome/components/media_player/__init__.py +1 -0
- esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
- esphome/components/micro_wake_word/streaming_model.cpp +10 -6
- esphome/components/micronova/micronova.h +2 -2
- esphome/components/mics_4514/mics_4514.cpp +2 -2
- esphome/components/midea/air_conditioner.cpp +7 -5
- esphome/components/midea_ir/midea_ir.cpp +1 -1
- esphome/components/mipi_spi/mipi_spi.cpp +24 -15
- esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
- esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
- esphome/components/mlx90614/mlx90614.cpp +4 -3
- esphome/components/mmc5603/mmc5603.cpp +2 -2
- esphome/components/mmc5983/mmc5983.cpp +1 -1
- esphome/components/modbus/modbus.cpp +7 -5
- esphome/components/modbus_controller/modbus_controller.cpp +6 -4
- esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
- esphome/components/modbus_controller/switch/__init__.py +6 -2
- esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
- esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
- esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
- esphome/components/mpr121/mpr121.cpp +2 -2
- esphome/components/mpu6050/mpu6050.cpp +6 -6
- esphome/components/mpu6886/mpu6886.cpp +6 -6
- esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
- esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
- esphome/components/mqtt/mqtt_client.cpp +31 -24
- esphome/components/mqtt/mqtt_component.cpp +3 -3
- esphome/components/mqtt/mqtt_cover.cpp +8 -4
- esphome/components/mqtt/mqtt_fan.cpp +12 -6
- esphome/components/mqtt/mqtt_valve.cpp +4 -2
- esphome/components/ms5611/ms5611.cpp +2 -2
- esphome/components/ms8607/ms8607.cpp +2 -2
- esphome/components/msa3xx/msa3xx.cpp +16 -12
- esphome/components/my9231/my9231.cpp +7 -5
- esphome/components/nau7802/nau7802.cpp +6 -4
- esphome/components/neopixelbus/neopixelbus_light.h +2 -2
- esphome/components/network/ip_address.h +1 -1
- esphome/components/network/util.cpp +13 -0
- esphome/components/nextion/base_component.py +2 -0
- esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +3 -4
- esphome/components/nextion/display.py +34 -22
- esphome/components/nextion/nextion.cpp +182 -143
- esphome/components/nextion/nextion.h +36 -0
- esphome/components/nextion/nextion_commands.cpp +3 -3
- esphome/components/nextion/nextion_upload_arduino.cpp +69 -69
- esphome/components/nextion/nextion_upload_idf.cpp +79 -80
- esphome/components/nextion/sensor/nextion_sensor.cpp +5 -5
- esphome/components/nextion/switch/nextion_switch.cpp +2 -2
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +3 -3
- esphome/components/nfc/nci_message.h +1 -1
- esphome/components/nfc/ndef_record.h +1 -1
- esphome/components/nfc/ndef_record_text.h +1 -1
- esphome/components/nfc/ndef_record_uri.h +1 -1
- esphome/components/nfc/nfc.h +1 -1
- esphome/components/nfc/nfc_tag.h +1 -1
- esphome/components/noblex/noblex.cpp +1 -1
- esphome/components/npi19/npi19.cpp +5 -7
- esphome/components/number/__init__.py +11 -0
- esphome/components/number/number.cpp +1 -1
- esphome/components/number/number.h +0 -4
- esphome/components/online_image/__init__.py +13 -1
- esphome/components/online_image/online_image.cpp +26 -4
- esphome/components/online_image/online_image.h +21 -4
- esphome/components/opentherm/generate.py +3 -3
- esphome/components/opentherm/hub.cpp +11 -7
- esphome/components/opentherm/number/number.cpp +5 -3
- esphome/components/opentherm/opentherm.h +1 -1
- esphome/components/opentherm/schema.py +13 -13
- esphome/components/opentherm/validate.py +1 -1
- esphome/components/openthread/__init__.py +146 -0
- esphome/components/openthread/const.py +10 -0
- esphome/components/openthread/openthread.cpp +206 -0
- esphome/components/openthread/openthread.h +68 -0
- esphome/components/openthread/openthread_esp.cpp +164 -0
- esphome/components/openthread/tlv.py +58 -0
- esphome/components/openthread_info/__init__.py +0 -0
- esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
- esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
- esphome/components/openthread_info/text_sensor.py +105 -0
- esphome/components/output/float_output.cpp +1 -1
- esphome/components/output/switch/output_switch.cpp +1 -1
- esphome/components/packet_transport/packet_transport.cpp +6 -4
- esphome/components/pca6416a/pca6416a.cpp +2 -2
- esphome/components/pca9554/pca9554.cpp +6 -4
- esphome/components/pca9685/pca9685_output.cpp +12 -8
- esphome/components/pcd8544/pcd_8544.cpp +1 -1
- esphome/components/pcf85063/pcf85063.cpp +2 -2
- esphome/components/pcf8563/pcf8563.cpp +2 -2
- esphome/components/pcf8574/pcf8574.cpp +2 -2
- esphome/components/pid/pid_climate.cpp +8 -5
- esphome/components/pid/pid_climate.h +1 -1
- esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
- esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
- esphome/components/pipsolar/pipsolar.cpp +3 -3
- esphome/components/pm1006/pm1006.cpp +3 -7
- esphome/components/pm1006/pm1006.h +4 -1
- esphome/components/pm2005/pm2005.cpp +12 -13
- esphome/components/pm2005/sensor.py +1 -1
- esphome/components/pmsa003i/pmsa003i.cpp +2 -2
- esphome/components/pmsx003/pmsx003.cpp +0 -4
- esphome/components/pmsx003/pmsx003.h +5 -2
- esphome/components/pmwcs3/pmwcs3.cpp +9 -13
- esphome/components/pmwcs3/pmwcs3.h +0 -1
- esphome/components/pn532/pn532.cpp +7 -7
- esphome/components/pn532/pn532.h +1 -1
- esphome/components/pn532_spi/pn532_spi.cpp +1 -1
- esphome/components/pn7150/pn7150.cpp +4 -4
- esphome/components/pn7160/pn7160.cpp +4 -4
- esphome/components/power_supply/power_supply.cpp +6 -4
- esphome/components/power_supply/power_supply.h +1 -1
- esphome/components/prometheus/__init__.py +0 -1
- esphome/components/psram/__init__.py +59 -35
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
- esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
- esphome/components/pylontech/pylontech.cpp +2 -2
- esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
- esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
- esphome/components/pzemac/pzemac.cpp +4 -2
- esphome/components/pzemdc/pzemdc.cpp +4 -2
- esphome/components/qmc5883l/qmc5883l.cpp +2 -2
- esphome/components/qmp6988/qmp6988.cpp +2 -2
- esphome/components/qmp6988/qmp6988.h +1 -1
- esphome/components/qr_code/qr_code.cpp +5 -3
- esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
- esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
- esphome/components/rc522/rc522.cpp +5 -5
- esphome/components/rdm6300/rdm6300.cpp +1 -0
- esphome/components/remote_receiver/__init__.py +10 -2
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
- esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
- esphome/components/remote_transmitter/__init__.py +10 -2
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
- esphome/components/resistance/resistance_sensor.cpp +6 -3
- esphome/components/restart/button/restart_button.cpp +1 -1
- esphome/components/restart/switch/restart_switch.cpp +1 -1
- esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
- esphome/components/rp2040/__init__.py +7 -0
- esphome/components/rp2040/core.cpp +8 -1
- esphome/components/rp2040/preferences.cpp +3 -3
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
- esphome/components/rp2040_pio_led_strip/light.py +1 -1
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
- esphome/components/rtttl/rtttl.cpp +11 -9
- esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
- esphome/components/safe_mode/safe_mode.cpp +9 -8
- esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
- esphome/components/scd30/scd30.cpp +11 -8
- esphome/components/scd4x/scd4x.cpp +12 -8
- esphome/components/sdl/display.py +40 -0
- esphome/components/sdl/sdl_esphome.cpp +2 -2
- esphome/components/sdl/sdl_esphome.h +8 -0
- esphome/components/sdm_meter/sdm_meter.cpp +5 -2
- esphome/components/sdp3x/sdp3x.cpp +11 -11
- esphome/components/sds011/sds011.cpp +5 -6
- esphome/components/sds011/sds011.h +4 -1
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
- esphome/components/selec_meter/selec_meter.cpp +5 -2
- esphome/components/select/__init__.py +1 -0
- esphome/components/select/select.cpp +1 -1
- esphome/components/select/select.h +0 -4
- esphome/components/sen0321/sen0321.cpp +2 -2
- esphome/components/sen21231/sen21231.cpp +1 -1
- esphome/components/sen5x/sen5x.cpp +10 -7
- esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
- esphome/components/sensirion_common/i2c_sensirion.h +1 -0
- esphome/components/sensor/__init__.py +11 -1
- esphome/components/sensor/filter.h +1 -1
- esphome/components/sensor/sensor.cpp +8 -4
- esphome/components/sensor/sensor.h +12 -11
- esphome/components/servo/servo.cpp +12 -9
- esphome/components/servo/servo.h +1 -1
- esphome/components/sfa30/sfa30.cpp +1 -1
- esphome/components/sgp30/sgp30.cpp +10 -8
- esphome/components/sgp4x/sgp4x.cpp +49 -61
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
- esphome/components/sht3xd/sht3xd.cpp +1 -1
- esphome/components/sht4x/sht4x.cpp +2 -2
- esphome/components/shtcx/shtcx.cpp +13 -16
- esphome/components/shutdown/button/shutdown_button.cpp +1 -1
- esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
- esphome/components/sim800l/sim800l.cpp +2 -2
- esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
- esphome/components/sm16716/sm16716.cpp +1 -1
- esphome/components/sm2135/sm2135.cpp +1 -1
- esphome/components/sm2235/sm2235.cpp +5 -3
- esphome/components/sm2335/sm2335.cpp +5 -3
- esphome/components/sml/sml.cpp +1 -1
- esphome/components/sn74hc165/sn74hc165.cpp +1 -2
- esphome/components/sn74hc595/sn74hc595.cpp +1 -2
- esphome/components/sntp/sntp_component.cpp +1 -1
- esphome/components/socket/__init__.py +2 -0
- esphome/components/socket/bsd_sockets_impl.cpp +51 -7
- esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
- esphome/components/socket/lwip_sockets_impl.cpp +51 -7
- esphome/components/socket/socket.cpp +31 -0
- esphome/components/socket/socket.h +27 -1
- esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
- esphome/components/sonoff_d1/sonoff_d1.h +2 -2
- esphome/components/sound_level/sound_level.cpp +4 -2
- esphome/components/speaker/media_player/__init__.py +3 -0
- esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
- esphome/components/speaker/media_player/speaker_media_player.h +6 -0
- esphome/components/spi/__init__.py +10 -2
- esphome/components/spi/spi.cpp +4 -4
- esphome/components/spi_device/spi_device.cpp +1 -2
- esphome/components/sprinkler/sprinkler.cpp +9 -6
- esphome/components/sps30/sps30.cpp +16 -15
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
- esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
- esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
- esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
- esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
- esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
- esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
- esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
- esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
- esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
- esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
- esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
- esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
- esphome/components/st7567_base/st7567_base.cpp +3 -3
- esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
- esphome/components/st7567_spi/st7567_spi.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +4 -2
- esphome/components/st7735/st7735.cpp +3 -3
- esphome/components/st7789v/st7789v.cpp +10 -7
- esphome/components/st7920/st7920.cpp +6 -4
- esphome/components/statsd/statsd.cpp +9 -5
- esphome/components/status_led/light/status_led_light.cpp +3 -3
- esphome/components/status_led/light/status_led_light.h +1 -1
- esphome/components/status_led/status_led.cpp +1 -1
- esphome/components/stepper/stepper.h +5 -3
- esphome/components/sts3x/sts3x.cpp +2 -2
- esphome/components/switch/__init__.py +1 -0
- esphome/components/switch/switch.cpp +18 -12
- esphome/components/switch/switch.h +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 +43 -12
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +4 -1
- esphome/components/template/cover/template_cover.cpp +1 -1
- esphome/components/template/select/template_select.cpp +6 -4
- esphome/components/template/text/template_text.cpp +2 -3
- esphome/components/template/valve/template_valve.cpp +5 -3
- esphome/components/text/__init__.py +10 -11
- esphome/components/text/text.cpp +1 -1
- esphome/components/text/text.h +0 -4
- esphome/components/text_sensor/__init__.py +1 -0
- esphome/components/text_sensor/text_sensor.cpp +8 -4
- esphome/components/text_sensor/text_sensor.h +6 -6
- esphome/components/thermostat/thermostat_climate.cpp +67 -43
- esphome/components/time/__init__.py +1 -2
- esphome/components/time_based/time_based_cover.cpp +4 -2
- esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
- esphome/components/tm1621/tm1621.cpp +3 -3
- esphome/components/tm1637/tm1637.cpp +9 -7
- esphome/components/tm1638/tm1638.cpp +7 -5
- esphome/components/tm1651/tm1651.cpp +2 -2
- esphome/components/tmp102/tmp102.cpp +1 -3
- esphome/components/tmp102/tmp102.h +0 -3
- esphome/components/tmp1075/tmp1075.cpp +12 -9
- esphome/components/tmp117/tmp117.cpp +2 -2
- esphome/components/tof10120/tof10120_sensor.cpp +2 -2
- esphome/components/tormatic/tormatic_cover.cpp +4 -2
- esphome/components/tsl2561/tsl2561.cpp +7 -5
- esphome/components/tsl2591/tsl2591.cpp +25 -27
- esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
- esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
- esphome/components/tuya/select/tuya_select.cpp +5 -3
- esphome/components/tx20/tx20.cpp +3 -3
- esphome/components/uart/__init__.py +4 -5
- esphome/components/uart/button/uart_button.cpp +1 -1
- esphome/components/uart/switch/uart_switch.cpp +2 -2
- esphome/components/uart/uart.cpp +2 -2
- esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
- esphome/components/uart/uart_component_esp8266.cpp +9 -7
- esphome/components/uart/uart_component_esp_idf.cpp +9 -7
- esphome/components/uart/uart_component_host.cpp +11 -8
- esphome/components/uart/uart_component_libretiny.cpp +8 -6
- esphome/components/uart/uart_component_rp2040.cpp +8 -6
- esphome/components/udp/udp_component.cpp +9 -5
- esphome/components/ufire_ec/ufire_ec.cpp +5 -3
- esphome/components/ufire_ise/ufire_ise.cpp +1 -1
- esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
- esphome/components/update/__init__.py +1 -0
- esphome/components/update/update_entity.cpp +1 -1
- esphome/components/update/update_entity.h +0 -3
- esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
- esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
- esphome/components/uptime/sensor/uptime_timestamp_sensor.cpp +1 -1
- esphome/components/usb_host/__init__.py +64 -0
- esphome/components/usb_host/usb_host.h +116 -0
- esphome/components/usb_host/usb_host_client.cpp +394 -0
- esphome/components/usb_host/usb_host_component.cpp +35 -0
- esphome/components/usb_uart/__init__.py +134 -0
- esphome/components/usb_uart/ch34x.cpp +80 -0
- esphome/components/usb_uart/cp210x.cpp +126 -0
- esphome/components/usb_uart/usb_uart.cpp +328 -0
- esphome/components/usb_uart/usb_uart.h +151 -0
- esphome/components/valve/__init__.py +1 -0
- esphome/components/veml3235/veml3235.cpp +13 -9
- esphome/components/veml7700/veml7700.cpp +10 -6
- esphome/components/voice_assistant/voice_assistant.cpp +7 -7
- esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
- esphome/components/web_server/server_index_v2.h +632 -630
- esphome/components/web_server/server_index_v3.h +411 -409
- esphome/components/web_server/web_server.cpp +5 -3
- esphome/components/web_server_base/web_server_base.cpp +1 -1
- esphome/components/web_server_idf/__init__.py +0 -2
- esphome/components/web_server_idf/utils.cpp +1 -1
- esphome/components/web_server_idf/web_server_idf.cpp +7 -3
- esphome/components/web_server_idf/web_server_idf.h +7 -0
- esphome/components/weikai/__init__.py +2 -0
- esphome/components/weikai/weikai.cpp +24 -22
- esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
- esphome/components/weikai_spi/weikai_spi.cpp +11 -6
- esphome/components/wiegand/wiegand.cpp +1 -1
- esphome/components/wifi/wifi_component.cpp +50 -37
- esphome/components/wifi/wifi_component.h +7 -4
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
- esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
- esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
- esphome/components/wireguard/wireguard.cpp +21 -21
- esphome/components/wl_134/text_sensor.py +1 -2
- esphome/components/wled/wled_light_effect.cpp +1 -1
- esphome/components/x9c/x9c.cpp +5 -3
- esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
- esphome/components/xl9535/xl9535.cpp +2 -2
- esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
- esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
- esphome/config.py +3 -2
- esphome/config_validation.py +46 -17
- esphome/const.py +10 -1
- esphome/core/__init__.py +37 -18
- esphome/core/application.cpp +197 -8
- esphome/core/application.h +116 -6
- esphome/core/component.cpp +36 -15
- esphome/core/component.h +43 -13
- esphome/core/config.py +12 -0
- esphome/core/defines.h +10 -2
- esphome/core/entity_base.cpp +4 -16
- esphome/core/entity_base.h +27 -13
- esphome/core/helpers.cpp +1 -1
- esphome/core/helpers.h +5 -5
- esphome/core/log.h +2 -0
- esphome/core/log_const_en.h +4 -0
- esphome/core/scheduler.cpp +2 -2
- esphome/coroutine.py +3 -4
- esphome/cpp_generator.py +32 -32
- esphome/dashboard/core.py +2 -2
- esphome/dashboard/web_server.py +2 -2
- esphome/git.py +4 -4
- esphome/helpers.py +5 -6
- esphome/loader.py +8 -7
- esphome/log.py +7 -1
- esphome/platformio_api.py +2 -3
- esphome/storage_json.py +13 -5
- esphome/types.py +12 -13
- esphome/util.py +1 -2
- esphome/wizard.py +0 -16
- esphome/writer.py +5 -3
- esphome/yaml_util.py +6 -1
- esphome/zeroconf.py +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/METADATA +12 -11
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/RECORD +746 -692
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/WHEEL +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/top_level.txt +0 -0
@@ -37,7 +37,7 @@ bool Nextion::send_command_(const std::string &command) {
|
|
37
37
|
}
|
38
38
|
#endif // USE_NEXTION_COMMAND_SPACING
|
39
39
|
|
40
|
-
ESP_LOGN(TAG, "
|
40
|
+
ESP_LOGN(TAG, "cmd: %s", command.c_str());
|
41
41
|
|
42
42
|
this->write_str(command.c_str());
|
43
43
|
const uint8_t to_send[3] = {0xFF, 0xFF, 0xFF};
|
@@ -57,7 +57,7 @@ bool Nextion::check_connect_() {
|
|
57
57
|
// Check if the handshake should be skipped for the Nextion connection
|
58
58
|
if (this->skip_connection_handshake_) {
|
59
59
|
// Log the connection status without handshake
|
60
|
-
ESP_LOGW(TAG, "
|
60
|
+
ESP_LOGW(TAG, "Connected (no handshake)");
|
61
61
|
// Set the connection status to true
|
62
62
|
this->is_connected_ = true;
|
63
63
|
// Return true indicating the connection is set
|
@@ -88,27 +88,27 @@ bool Nextion::check_connect_() {
|
|
88
88
|
this->recv_ret_string_(response, 0, false);
|
89
89
|
if (!response.empty() && response[0] == 0x1A) {
|
90
90
|
// Swallow invalid variable name responses that may be caused by the above commands
|
91
|
-
ESP_LOGD(TAG, "0x1A error ignored
|
91
|
+
ESP_LOGD(TAG, "0x1A error ignored (setup)");
|
92
92
|
return false;
|
93
93
|
}
|
94
94
|
if (response.empty() || response.find("comok") == std::string::npos) {
|
95
95
|
#ifdef NEXTION_PROTOCOL_LOG
|
96
|
-
ESP_LOGN(TAG, "Bad connect
|
96
|
+
ESP_LOGN(TAG, "Bad connect: %s", response.c_str());
|
97
97
|
for (size_t i = 0; i < response.length(); i++) {
|
98
|
-
ESP_LOGN(TAG, "
|
98
|
+
ESP_LOGN(TAG, "resp: %s %d %d %c", response.c_str(), i, response[i], response[i]);
|
99
99
|
}
|
100
100
|
#endif
|
101
101
|
|
102
|
-
ESP_LOGW(TAG, "
|
102
|
+
ESP_LOGW(TAG, "Not connected");
|
103
103
|
comok_sent_ = 0;
|
104
104
|
return false;
|
105
105
|
}
|
106
106
|
|
107
107
|
this->ignore_is_setup_ = true;
|
108
|
-
ESP_LOGI(TAG, "
|
108
|
+
ESP_LOGI(TAG, "Connected");
|
109
109
|
this->is_connected_ = true;
|
110
110
|
|
111
|
-
ESP_LOGN(TAG, "connect
|
111
|
+
ESP_LOGN(TAG, "connect: %s", response.c_str());
|
112
112
|
|
113
113
|
size_t start;
|
114
114
|
size_t end = 0;
|
@@ -120,14 +120,14 @@ bool Nextion::check_connect_() {
|
|
120
120
|
|
121
121
|
this->is_detected_ = (connect_info.size() == 7);
|
122
122
|
if (this->is_detected_) {
|
123
|
-
ESP_LOGN(TAG, "
|
123
|
+
ESP_LOGN(TAG, "Connect info: %zu", connect_info.size());
|
124
124
|
|
125
125
|
this->device_model_ = connect_info[2];
|
126
126
|
this->firmware_version_ = connect_info[3];
|
127
127
|
this->serial_number_ = connect_info[5];
|
128
128
|
this->flash_size_ = connect_info[6];
|
129
129
|
} else {
|
130
|
-
ESP_LOGE(TAG, "
|
130
|
+
ESP_LOGE(TAG, "Bad connect value: '%s'", response.c_str());
|
131
131
|
}
|
132
132
|
|
133
133
|
this->ignore_is_setup_ = false;
|
@@ -148,31 +148,43 @@ void Nextion::reset_(bool reset_nextion) {
|
|
148
148
|
void Nextion::dump_config() {
|
149
149
|
ESP_LOGCONFIG(TAG, "Nextion:");
|
150
150
|
if (this->skip_connection_handshake_) {
|
151
|
-
ESP_LOGCONFIG(TAG, " Skip handshake:
|
151
|
+
ESP_LOGCONFIG(TAG, " Skip handshake: %s", YESNO(this->skip_connection_handshake_));
|
152
152
|
} else {
|
153
|
-
ESP_LOGCONFIG(TAG,
|
154
|
-
|
155
|
-
|
156
|
-
|
153
|
+
ESP_LOGCONFIG(TAG,
|
154
|
+
" Device Model: %s\n"
|
155
|
+
" FW Version: %s\n"
|
156
|
+
" Serial Number: %s\n"
|
157
|
+
" Flash Size: %s",
|
158
|
+
this->device_model_.c_str(), this->firmware_version_.c_str(), this->serial_number_.c_str(),
|
159
|
+
this->flash_size_.c_str());
|
157
160
|
}
|
158
|
-
ESP_LOGCONFIG(TAG,
|
159
|
-
|
161
|
+
ESP_LOGCONFIG(TAG,
|
162
|
+
" Wake On Touch: %s\n"
|
163
|
+
" Exit reparse: %s",
|
164
|
+
YESNO(this->auto_wake_on_touch_), YESNO(this->exit_reparse_on_start_));
|
165
|
+
#ifdef USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
166
|
+
ESP_LOGCONFIG(TAG, " Max commands per loop: %u", this->max_commands_per_loop_);
|
167
|
+
#endif // USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
160
168
|
|
161
169
|
if (this->touch_sleep_timeout_ != 0) {
|
162
|
-
ESP_LOGCONFIG(TAG, " Touch Timeout:
|
170
|
+
ESP_LOGCONFIG(TAG, " Touch Timeout: %" PRIu32, this->touch_sleep_timeout_);
|
163
171
|
}
|
164
172
|
|
165
173
|
if (this->wake_up_page_ != -1) {
|
166
|
-
ESP_LOGCONFIG(TAG, " Wake Up Page:
|
174
|
+
ESP_LOGCONFIG(TAG, " Wake Up Page: %d", this->wake_up_page_);
|
167
175
|
}
|
168
176
|
|
169
177
|
if (this->start_up_page_ != -1) {
|
170
|
-
ESP_LOGCONFIG(TAG, " Start Up Page:
|
178
|
+
ESP_LOGCONFIG(TAG, " Start Up Page: %d", this->start_up_page_);
|
171
179
|
}
|
172
180
|
|
173
181
|
#ifdef USE_NEXTION_COMMAND_SPACING
|
174
|
-
ESP_LOGCONFIG(TAG, "
|
182
|
+
ESP_LOGCONFIG(TAG, " Cmd spacing: %u ms", this->command_pacer_.get_spacing());
|
175
183
|
#endif // USE_NEXTION_COMMAND_SPACING
|
184
|
+
|
185
|
+
#ifdef USE_NEXTION_MAX_QUEUE_SIZE
|
186
|
+
ESP_LOGCONFIG(TAG, " Max queue size: %zu", this->max_queue_size_);
|
187
|
+
#endif
|
176
188
|
}
|
177
189
|
|
178
190
|
float Nextion::get_setup_priority() const { return setup_priority::DATA; }
|
@@ -248,7 +260,7 @@ bool Nextion::send_command_printf(const char *format, ...) {
|
|
248
260
|
int ret = vsnprintf(buffer, sizeof(buffer), format, arg);
|
249
261
|
va_end(arg);
|
250
262
|
if (ret <= 0) {
|
251
|
-
ESP_LOGW(TAG, "
|
263
|
+
ESP_LOGW(TAG, "Bad cmd format: '%s'", format);
|
252
264
|
return false;
|
253
265
|
}
|
254
266
|
|
@@ -269,9 +281,9 @@ void Nextion::print_queue_members_() {
|
|
269
281
|
break;
|
270
282
|
|
271
283
|
if (i == nullptr) {
|
272
|
-
ESP_LOGN(TAG, "
|
284
|
+
ESP_LOGN(TAG, "Queue null");
|
273
285
|
} else {
|
274
|
-
ESP_LOGN(TAG, "
|
286
|
+
ESP_LOGN(TAG, "Queue type: %d:%s, name: %s", i->component->get_queue_type(),
|
275
287
|
i->component->get_queue_type_string().c_str(), i->component->get_variable_name().c_str());
|
276
288
|
}
|
277
289
|
}
|
@@ -312,7 +324,7 @@ void Nextion::loop() {
|
|
312
324
|
this->started_ms_ = millis();
|
313
325
|
|
314
326
|
if (this->started_ms_ + this->startup_override_ms_ < millis()) {
|
315
|
-
ESP_LOGD(TAG, "
|
327
|
+
ESP_LOGD(TAG, "Manual ready set");
|
316
328
|
this->nextion_reports_is_setup_ = true;
|
317
329
|
}
|
318
330
|
}
|
@@ -321,20 +333,20 @@ void Nextion::loop() {
|
|
321
333
|
bool Nextion::remove_from_q_(bool report_empty) {
|
322
334
|
if (this->nextion_queue_.empty()) {
|
323
335
|
if (report_empty) {
|
324
|
-
ESP_LOGE(TAG, "
|
336
|
+
ESP_LOGE(TAG, "Queue empty");
|
325
337
|
}
|
326
338
|
return false;
|
327
339
|
}
|
328
340
|
|
329
341
|
NextionQueue *nb = this->nextion_queue_.front();
|
330
342
|
if (!nb || !nb->component) {
|
331
|
-
ESP_LOGE(TAG, "Invalid queue
|
343
|
+
ESP_LOGE(TAG, "Invalid queue");
|
332
344
|
this->nextion_queue_.pop_front();
|
333
345
|
return false;
|
334
346
|
}
|
335
347
|
NextionComponentBase *component = nb->component;
|
336
348
|
|
337
|
-
ESP_LOGN(TAG, "
|
349
|
+
ESP_LOGN(TAG, "Removed: %s", component->get_variable_name().c_str());
|
338
350
|
|
339
351
|
if (component->get_queue_type() == NextionQueueType::NO_RESULT) {
|
340
352
|
if (component->get_variable_name() == "sleep_wake") {
|
@@ -361,6 +373,10 @@ void Nextion::process_nextion_commands_() {
|
|
361
373
|
return;
|
362
374
|
}
|
363
375
|
|
376
|
+
#ifdef USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
377
|
+
size_t commands_processed = 0;
|
378
|
+
#endif // USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
379
|
+
|
364
380
|
#ifdef USE_NEXTION_COMMAND_SPACING
|
365
381
|
if (!this->command_pacer_.can_send()) {
|
366
382
|
return; // Will try again in next loop iteration
|
@@ -370,16 +386,22 @@ void Nextion::process_nextion_commands_() {
|
|
370
386
|
size_t to_process_length = 0;
|
371
387
|
std::string to_process;
|
372
388
|
|
373
|
-
ESP_LOGN(TAG, "
|
389
|
+
ESP_LOGN(TAG, "command_data_ %s len %d", this->command_data_.c_str(), this->command_data_.length());
|
374
390
|
#ifdef NEXTION_PROTOCOL_LOG
|
375
391
|
this->print_queue_members_();
|
376
392
|
#endif
|
377
393
|
while ((to_process_length = this->command_data_.find(COMMAND_DELIMITER)) != std::string::npos) {
|
378
|
-
|
394
|
+
#ifdef USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
395
|
+
if (++commands_processed > this->max_commands_per_loop_) {
|
396
|
+
ESP_LOGW(TAG, "Command processing limit exceeded");
|
397
|
+
break;
|
398
|
+
}
|
399
|
+
#endif // USE_NEXTION_MAX_COMMANDS_PER_LOOP
|
400
|
+
ESP_LOGN(TAG, "queue size: %zu", this->nextion_queue_.size());
|
379
401
|
while (to_process_length + COMMAND_DELIMITER.length() < this->command_data_.length() &&
|
380
402
|
static_cast<uint8_t>(this->command_data_[to_process_length + COMMAND_DELIMITER.length()]) == 0xFF) {
|
381
403
|
++to_process_length;
|
382
|
-
ESP_LOGN(TAG, "Add
|
404
|
+
ESP_LOGN(TAG, "Add 0xFF");
|
383
405
|
}
|
384
406
|
|
385
407
|
this->nextion_event_ = this->command_data_[0];
|
@@ -389,19 +411,19 @@ void Nextion::process_nextion_commands_() {
|
|
389
411
|
|
390
412
|
switch (this->nextion_event_) {
|
391
413
|
case 0x00: // instruction sent by user has failed
|
392
|
-
ESP_LOGW(TAG, "
|
414
|
+
ESP_LOGW(TAG, "Invalid instruction");
|
393
415
|
this->remove_from_q_();
|
394
416
|
|
395
417
|
break;
|
396
418
|
case 0x01: // instruction sent by user was successful
|
397
419
|
|
398
|
-
ESP_LOGVV(TAG, "
|
420
|
+
ESP_LOGVV(TAG, "Cmd OK");
|
399
421
|
ESP_LOGN(TAG, "this->nextion_queue_.empty() %s", this->nextion_queue_.empty() ? "True" : "False");
|
400
422
|
|
401
423
|
this->remove_from_q_();
|
402
424
|
if (!this->is_setup_) {
|
403
425
|
if (this->nextion_queue_.empty()) {
|
404
|
-
ESP_LOGD(TAG, "
|
426
|
+
ESP_LOGD(TAG, "Setup complete");
|
405
427
|
this->is_setup_ = true;
|
406
428
|
this->setup_callback_.call();
|
407
429
|
}
|
@@ -411,96 +433,91 @@ void Nextion::process_nextion_commands_() {
|
|
411
433
|
#endif
|
412
434
|
break;
|
413
435
|
case 0x02: // invalid Component ID or name was used
|
414
|
-
ESP_LOGW(TAG, "
|
436
|
+
ESP_LOGW(TAG, "Invalid component ID/name");
|
415
437
|
this->remove_from_q_();
|
416
438
|
break;
|
417
439
|
case 0x03: // invalid Page ID or name was used
|
418
|
-
ESP_LOGW(TAG, "
|
440
|
+
ESP_LOGW(TAG, "Invalid page ID");
|
419
441
|
this->remove_from_q_();
|
420
442
|
break;
|
421
443
|
case 0x04: // invalid Picture ID was used
|
422
|
-
ESP_LOGW(TAG, "
|
444
|
+
ESP_LOGW(TAG, "Invalid picture ID");
|
423
445
|
this->remove_from_q_();
|
424
446
|
break;
|
425
447
|
case 0x05: // invalid Font ID was used
|
426
|
-
ESP_LOGW(TAG, "
|
448
|
+
ESP_LOGW(TAG, "Invalid font ID");
|
427
449
|
this->remove_from_q_();
|
428
450
|
break;
|
429
451
|
case 0x06: // File operation fails
|
430
|
-
ESP_LOGW(TAG, "
|
452
|
+
ESP_LOGW(TAG, "File operation failed");
|
431
453
|
break;
|
432
454
|
case 0x09: // Instructions with CRC validation fails their CRC check
|
433
|
-
ESP_LOGW(TAG, "
|
455
|
+
ESP_LOGW(TAG, "CRC validation failed");
|
434
456
|
break;
|
435
457
|
case 0x11: // invalid Baud rate was used
|
436
|
-
ESP_LOGW(TAG, "
|
458
|
+
ESP_LOGW(TAG, "Invalid baud rate");
|
437
459
|
break;
|
438
460
|
case 0x12: // invalid Waveform ID or Channel # was used
|
439
461
|
if (this->waveform_queue_.empty()) {
|
440
|
-
ESP_LOGW(TAG,
|
441
|
-
"Nextion reported invalid Waveform ID or Channel # was used but no waveform sensor in queue found!");
|
462
|
+
ESP_LOGW(TAG, "Waveform ID/ch used but no sensor queued");
|
442
463
|
} else {
|
443
464
|
auto &nb = this->waveform_queue_.front();
|
444
465
|
NextionComponentBase *component = nb->component;
|
445
466
|
|
446
|
-
ESP_LOGW(TAG, "
|
447
|
-
component->
|
467
|
+
ESP_LOGW(TAG, "Invalid waveform ID %d/ch %d", component->get_component_id(),
|
468
|
+
component->get_wave_channel_id());
|
448
469
|
|
449
|
-
ESP_LOGN(TAG, "
|
450
|
-
component->get_component_id(), component->get_wave_channel_id());
|
470
|
+
ESP_LOGN(TAG, "Remove waveform ID %d/ch %d", component->get_component_id(), component->get_wave_channel_id());
|
451
471
|
|
452
472
|
delete nb; // NOLINT(cppcoreguidelines-owning-memory)
|
453
473
|
this->waveform_queue_.pop_front();
|
454
474
|
}
|
455
475
|
break;
|
456
476
|
case 0x1A: // variable name invalid
|
457
|
-
ESP_LOGW(TAG, "
|
477
|
+
ESP_LOGW(TAG, "Invalid variable name");
|
458
478
|
this->remove_from_q_();
|
459
479
|
break;
|
460
480
|
case 0x1B: // variable operation invalid
|
461
|
-
ESP_LOGW(TAG, "
|
481
|
+
ESP_LOGW(TAG, "Invalid variable operation");
|
462
482
|
this->remove_from_q_();
|
463
483
|
break;
|
464
484
|
case 0x1C: // failed to assign
|
465
|
-
ESP_LOGW(TAG, "
|
485
|
+
ESP_LOGW(TAG, "Variable assign failed");
|
466
486
|
this->remove_from_q_();
|
467
487
|
break;
|
468
488
|
case 0x1D: // operate EEPROM failed
|
469
|
-
ESP_LOGW(TAG, "
|
489
|
+
ESP_LOGW(TAG, "EEPROM operation failed");
|
470
490
|
break;
|
471
491
|
case 0x1E: // parameter quantity invalid
|
472
|
-
ESP_LOGW(TAG, "
|
492
|
+
ESP_LOGW(TAG, "Invalid parameter count");
|
473
493
|
this->remove_from_q_();
|
474
494
|
break;
|
475
495
|
case 0x1F: // IO operation failed
|
476
|
-
ESP_LOGW(TAG, "
|
496
|
+
ESP_LOGW(TAG, "Invalid component I/O");
|
477
497
|
break;
|
478
498
|
case 0x20: // undefined escape characters
|
479
|
-
ESP_LOGW(TAG, "
|
499
|
+
ESP_LOGW(TAG, "Undefined escape chars");
|
480
500
|
this->remove_from_q_();
|
481
501
|
break;
|
482
502
|
case 0x23: // too long variable name
|
483
|
-
ESP_LOGW(TAG, "
|
503
|
+
ESP_LOGW(TAG, "Variable name too long");
|
484
504
|
this->remove_from_q_();
|
485
505
|
break;
|
486
506
|
case 0x24: // Serial Buffer overflow occurs
|
487
507
|
// Buffer will continue to receive the current instruction, all previous instructions are lost.
|
488
|
-
ESP_LOGE(TAG, "
|
508
|
+
ESP_LOGE(TAG, "Serial buffer overflow");
|
489
509
|
this->buffer_overflow_callback_.call();
|
490
510
|
break;
|
491
511
|
case 0x65: { // touch event return data
|
492
512
|
if (to_process_length != 3) {
|
493
|
-
ESP_LOGW(TAG, "
|
513
|
+
ESP_LOGW(TAG, "Incorrect touch len: %zu (need 3)", to_process_length);
|
494
514
|
break;
|
495
515
|
}
|
496
516
|
|
497
517
|
uint8_t page_id = to_process[0];
|
498
518
|
uint8_t component_id = to_process[1];
|
499
519
|
uint8_t touch_event = to_process[2]; // 0 -> release, 1 -> press
|
500
|
-
ESP_LOGD(TAG, "
|
501
|
-
ESP_LOGD(TAG, " page_id: %u", page_id);
|
502
|
-
ESP_LOGD(TAG, " component_id: %u", component_id);
|
503
|
-
ESP_LOGD(TAG, " event type: %s", touch_event ? "PRESS" : "RELEASE");
|
520
|
+
ESP_LOGD(TAG, "Touch %s: page %u comp %u", touch_event ? "PRESS" : "RELEASE", page_id, component_id);
|
504
521
|
for (auto *touch : this->touch_) {
|
505
522
|
touch->process_touch(page_id, component_id, touch_event != 0);
|
506
523
|
}
|
@@ -510,12 +527,12 @@ void Nextion::process_nextion_commands_() {
|
|
510
527
|
case 0x66: { // Nextion initiated new page event return data.
|
511
528
|
// Also is used for sendme command which we never explicitly initiate
|
512
529
|
if (to_process_length != 1) {
|
513
|
-
ESP_LOGW(TAG, "
|
530
|
+
ESP_LOGW(TAG, "Page event: expect 1, got %zu", to_process_length);
|
514
531
|
break;
|
515
532
|
}
|
516
533
|
|
517
534
|
uint8_t page_id = to_process[0];
|
518
|
-
ESP_LOGD(TAG, "
|
535
|
+
ESP_LOGD(TAG, "New page: %u", page_id);
|
519
536
|
this->page_callback_.call(page_id);
|
520
537
|
break;
|
521
538
|
}
|
@@ -525,7 +542,7 @@ void Nextion::process_nextion_commands_() {
|
|
525
542
|
case 0x68: { // touch coordinate data (sleep)
|
526
543
|
|
527
544
|
if (to_process_length != 5) {
|
528
|
-
ESP_LOGW(TAG, "Touch coordinate
|
545
|
+
ESP_LOGW(TAG, "Touch coordinate: expect 5, got %zu", to_process_length);
|
529
546
|
ESP_LOGW(TAG, "%s", to_process.c_str());
|
530
547
|
break;
|
531
548
|
}
|
@@ -533,10 +550,7 @@ void Nextion::process_nextion_commands_() {
|
|
533
550
|
uint16_t x = (uint16_t(to_process[0]) << 8) | to_process[1];
|
534
551
|
uint16_t y = (uint16_t(to_process[2]) << 8) | to_process[3];
|
535
552
|
uint8_t touch_event = to_process[4]; // 0 -> release, 1 -> press
|
536
|
-
ESP_LOGD(TAG, "
|
537
|
-
ESP_LOGD(TAG, " x: %u", x);
|
538
|
-
ESP_LOGD(TAG, " y: %u", y);
|
539
|
-
ESP_LOGD(TAG, " type: %s", touch_event ? "PRESS" : "RELEASE");
|
553
|
+
ESP_LOGD(TAG, "Touch %s at %u,%u", touch_event ? "PRESS" : "RELEASE", x, y);
|
540
554
|
break;
|
541
555
|
}
|
542
556
|
|
@@ -547,25 +561,23 @@ void Nextion::process_nextion_commands_() {
|
|
547
561
|
case 0x70: // string variable data return
|
548
562
|
{
|
549
563
|
if (this->nextion_queue_.empty()) {
|
550
|
-
ESP_LOGW(TAG, "
|
564
|
+
ESP_LOGW(TAG, "String return but queue is empty");
|
551
565
|
break;
|
552
566
|
}
|
553
567
|
|
554
568
|
NextionQueue *nb = this->nextion_queue_.front();
|
555
569
|
if (!nb || !nb->component) {
|
556
|
-
ESP_LOGE(TAG, "Invalid queue entry
|
570
|
+
ESP_LOGE(TAG, "Invalid queue entry");
|
557
571
|
this->nextion_queue_.pop_front();
|
558
572
|
return;
|
559
573
|
}
|
560
574
|
NextionComponentBase *component = nb->component;
|
561
575
|
|
562
576
|
if (component->get_queue_type() != NextionQueueType::TEXT_SENSOR) {
|
563
|
-
ESP_LOGE(TAG, "
|
564
|
-
component->get_variable_name().c_str());
|
577
|
+
ESP_LOGE(TAG, "String return but '%s' not text sensor", component->get_variable_name().c_str());
|
565
578
|
} else {
|
566
|
-
ESP_LOGN(TAG, "
|
567
|
-
component->
|
568
|
-
component->set_state_from_string(to_process, true, false);
|
579
|
+
ESP_LOGN(TAG, "String resp: '%s' id: %s type: %s", to_process.c_str(), component->get_variable_name().c_str(),
|
580
|
+
component->get_queue_type_string().c_str());
|
569
581
|
}
|
570
582
|
|
571
583
|
delete nb; // NOLINT(cppcoreguidelines-owning-memory)
|
@@ -581,12 +593,12 @@ void Nextion::process_nextion_commands_() {
|
|
581
593
|
case 0x71: // numeric variable data return
|
582
594
|
{
|
583
595
|
if (this->nextion_queue_.empty()) {
|
584
|
-
ESP_LOGE(TAG, "
|
596
|
+
ESP_LOGE(TAG, "Numeric return but queue empty");
|
585
597
|
break;
|
586
598
|
}
|
587
599
|
|
588
600
|
if (to_process_length == 0) {
|
589
|
-
ESP_LOGE(TAG, "
|
601
|
+
ESP_LOGE(TAG, "Numeric return but no data");
|
590
602
|
break;
|
591
603
|
}
|
592
604
|
|
@@ -598,7 +610,7 @@ void Nextion::process_nextion_commands_() {
|
|
598
610
|
|
599
611
|
NextionQueue *nb = this->nextion_queue_.front();
|
600
612
|
if (!nb || !nb->component) {
|
601
|
-
ESP_LOGE(TAG, "Invalid queue
|
613
|
+
ESP_LOGE(TAG, "Invalid queue");
|
602
614
|
this->nextion_queue_.pop_front();
|
603
615
|
return;
|
604
616
|
}
|
@@ -607,12 +619,11 @@ void Nextion::process_nextion_commands_() {
|
|
607
619
|
if (component->get_queue_type() != NextionQueueType::SENSOR &&
|
608
620
|
component->get_queue_type() != NextionQueueType::BINARY_SENSOR &&
|
609
621
|
component->get_queue_type() != NextionQueueType::SWITCH) {
|
610
|
-
ESP_LOGE(TAG, "
|
611
|
-
component->
|
622
|
+
ESP_LOGE(TAG, "Numeric return but '%s' invalid type %d", component->get_variable_name().c_str(),
|
623
|
+
component->get_queue_type());
|
612
624
|
} else {
|
613
|
-
ESP_LOGN(TAG, "
|
614
|
-
component->
|
615
|
-
component->get_queue_type_string().c_str(), value);
|
625
|
+
ESP_LOGN(TAG, "Numeric: %s type %d:%s val %d", component->get_variable_name().c_str(),
|
626
|
+
component->get_queue_type(), component->get_queue_type_string().c_str(), value);
|
616
627
|
component->set_state_from_int(value, true, false);
|
617
628
|
}
|
618
629
|
|
@@ -623,14 +634,14 @@ void Nextion::process_nextion_commands_() {
|
|
623
634
|
}
|
624
635
|
|
625
636
|
case 0x86: { // device automatically enters into sleep mode
|
626
|
-
ESP_LOGVV(TAG, "
|
637
|
+
ESP_LOGVV(TAG, "Auto sleep");
|
627
638
|
this->is_sleeping_ = true;
|
628
639
|
this->sleep_callback_.call();
|
629
640
|
break;
|
630
641
|
}
|
631
642
|
case 0x87: // device automatically wakes up
|
632
643
|
{
|
633
|
-
ESP_LOGVV(TAG, "
|
644
|
+
ESP_LOGVV(TAG, "Auto wake");
|
634
645
|
this->is_sleeping_ = false;
|
635
646
|
this->wake_callback_.call();
|
636
647
|
this->all_components_send_state_(false);
|
@@ -638,7 +649,7 @@ void Nextion::process_nextion_commands_() {
|
|
638
649
|
}
|
639
650
|
case 0x88: // system successful start up
|
640
651
|
{
|
641
|
-
ESP_LOGD(TAG, "
|
652
|
+
ESP_LOGD(TAG, "System start: %zu", to_process_length);
|
642
653
|
this->nextion_reports_is_setup_ = true;
|
643
654
|
break;
|
644
655
|
}
|
@@ -657,17 +668,15 @@ void Nextion::process_nextion_commands_() {
|
|
657
668
|
// Get variable name
|
658
669
|
auto index = to_process.find('\0');
|
659
670
|
if (index == std::string::npos || (to_process_length - index - 1) < 1) {
|
660
|
-
ESP_LOGE(TAG, "Bad switch
|
661
|
-
ESP_LOGN(TAG, "
|
671
|
+
ESP_LOGE(TAG, "Bad switch data (0x90)");
|
672
|
+
ESP_LOGN(TAG, "proc: %s %zu %d", to_process.c_str(), to_process_length, index);
|
662
673
|
break;
|
663
674
|
}
|
664
675
|
|
665
676
|
variable_name = to_process.substr(0, index);
|
666
677
|
++index;
|
667
678
|
|
668
|
-
ESP_LOGN(TAG, "
|
669
|
-
ESP_LOGN(TAG, " variable_name: %s", variable_name.c_str());
|
670
|
-
ESP_LOGN(TAG, " value: %d", to_process[0] != 0);
|
679
|
+
ESP_LOGN(TAG, "Switch %s: %s", ONOFF(to_process[index] != 0), variable_name.c_str());
|
671
680
|
|
672
681
|
for (auto *switchtype : this->switchtype_) {
|
673
682
|
switchtype->process_bool(variable_name, to_process[index] != 0);
|
@@ -685,8 +694,8 @@ void Nextion::process_nextion_commands_() {
|
|
685
694
|
|
686
695
|
auto index = to_process.find('\0');
|
687
696
|
if (index == std::string::npos || (to_process_length - index - 1) != 4) {
|
688
|
-
ESP_LOGE(TAG, "Bad sensor
|
689
|
-
ESP_LOGN(TAG, "
|
697
|
+
ESP_LOGE(TAG, "Bad sensor data (0x91)");
|
698
|
+
ESP_LOGN(TAG, "proc: %s %zu %d", to_process.c_str(), to_process_length, index);
|
690
699
|
break;
|
691
700
|
}
|
692
701
|
|
@@ -698,9 +707,7 @@ void Nextion::process_nextion_commands_() {
|
|
698
707
|
value += to_process[i + index + 1] << (8 * i);
|
699
708
|
}
|
700
709
|
|
701
|
-
ESP_LOGN(TAG, "
|
702
|
-
ESP_LOGN(TAG, " variable_name: %s", variable_name.c_str());
|
703
|
-
ESP_LOGN(TAG, " value: %d", value);
|
710
|
+
ESP_LOGN(TAG, "Sensor: %s=%d", variable_name.c_str(), value);
|
704
711
|
|
705
712
|
for (auto *sensor : this->sensortype_) {
|
706
713
|
sensor->process_sensor(variable_name, value);
|
@@ -722,8 +729,8 @@ void Nextion::process_nextion_commands_() {
|
|
722
729
|
// Get variable name
|
723
730
|
auto index = to_process.find('\0');
|
724
731
|
if (index == std::string::npos || (to_process_length - index - 1) < 1) {
|
725
|
-
ESP_LOGE(TAG, "Bad text
|
726
|
-
ESP_LOGN(TAG, "
|
732
|
+
ESP_LOGE(TAG, "Bad text data (0x92)");
|
733
|
+
ESP_LOGN(TAG, "proc: %s %zu %d", to_process.c_str(), to_process_length, index);
|
727
734
|
break;
|
728
735
|
}
|
729
736
|
|
@@ -732,9 +739,7 @@ void Nextion::process_nextion_commands_() {
|
|
732
739
|
|
733
740
|
text_value = to_process.substr(index);
|
734
741
|
|
735
|
-
ESP_LOGN(TAG, "
|
736
|
-
ESP_LOGN(TAG, " variable_name: %s", variable_name.c_str());
|
737
|
-
ESP_LOGN(TAG, " value: %s", text_value.c_str());
|
742
|
+
ESP_LOGN(TAG, "Text sensor: %s='%s'", variable_name.c_str(), text_value.c_str());
|
738
743
|
|
739
744
|
// NextionTextSensorResponseQueue *nq = new NextionTextSensorResponseQueue;
|
740
745
|
// nq->variable_name = variable_name;
|
@@ -757,17 +762,15 @@ void Nextion::process_nextion_commands_() {
|
|
757
762
|
// Get variable name
|
758
763
|
auto index = to_process.find('\0');
|
759
764
|
if (index == std::string::npos || (to_process_length - index - 1) < 1) {
|
760
|
-
ESP_LOGE(TAG, "Bad binary
|
761
|
-
ESP_LOGN(TAG, "
|
765
|
+
ESP_LOGE(TAG, "Bad binary data (0x92)");
|
766
|
+
ESP_LOGN(TAG, "proc: %s %zu %d", to_process.c_str(), to_process_length, index);
|
762
767
|
break;
|
763
768
|
}
|
764
769
|
|
765
770
|
variable_name = to_process.substr(0, index);
|
766
771
|
++index;
|
767
772
|
|
768
|
-
ESP_LOGN(TAG, "
|
769
|
-
ESP_LOGN(TAG, " variable_name: %s", variable_name.c_str());
|
770
|
-
ESP_LOGN(TAG, " value: %d", to_process[index] != 0);
|
773
|
+
ESP_LOGN(TAG, "Binary sensor: %s=%s", variable_name.c_str(), ONOFF(to_process[index] != 0));
|
771
774
|
|
772
775
|
for (auto *binarysensortype : this->binarysensortype_) {
|
773
776
|
binarysensortype->process_bool(&variable_name[0], to_process[index] != 0);
|
@@ -775,14 +778,14 @@ void Nextion::process_nextion_commands_() {
|
|
775
778
|
break;
|
776
779
|
}
|
777
780
|
case 0xFD: { // data transparent transmit finished
|
778
|
-
ESP_LOGVV(TAG, "
|
781
|
+
ESP_LOGVV(TAG, "Data transmit done");
|
779
782
|
this->check_pending_waveform_();
|
780
783
|
break;
|
781
784
|
}
|
782
785
|
case 0xFE: { // data transparent transmit ready
|
783
|
-
ESP_LOGVV(TAG, "
|
786
|
+
ESP_LOGVV(TAG, "Ready for transmit");
|
784
787
|
if (this->waveform_queue_.empty()) {
|
785
|
-
ESP_LOGE(TAG, "No waveforms
|
788
|
+
ESP_LOGE(TAG, "No waveforms queued");
|
786
789
|
break;
|
787
790
|
}
|
788
791
|
|
@@ -793,8 +796,8 @@ void Nextion::process_nextion_commands_() {
|
|
793
796
|
|
794
797
|
this->write_array(component->get_wave_buffer().data(), static_cast<int>(buffer_to_send));
|
795
798
|
|
796
|
-
ESP_LOGN(TAG, "
|
797
|
-
component->
|
799
|
+
ESP_LOGN(TAG, "Send waveform: component id %d, waveform id %d, size %zu", component->get_component_id(),
|
800
|
+
component->get_wave_channel_id(), buffer_to_send);
|
798
801
|
|
799
802
|
component->clear_wave_buffer(buffer_to_send);
|
800
803
|
delete nb; // NOLINT(cppcoreguidelines-owning-memory)
|
@@ -802,14 +805,12 @@ void Nextion::process_nextion_commands_() {
|
|
802
805
|
break;
|
803
806
|
}
|
804
807
|
default:
|
805
|
-
ESP_LOGW(TAG, "
|
808
|
+
ESP_LOGW(TAG, "Unknown event: 0x%02X", this->nextion_event_);
|
806
809
|
break;
|
807
810
|
}
|
808
811
|
|
809
812
|
// ESP_LOGN(TAG, "nextion_event_ deleting from 0 to %d", to_process_length + COMMAND_DELIMITER.length() + 1);
|
810
813
|
this->command_data_.erase(0, to_process_length + COMMAND_DELIMITER.length() + 1);
|
811
|
-
// App.feed_wdt(); Remove before master merge
|
812
|
-
this->process_serial_();
|
813
814
|
}
|
814
815
|
|
815
816
|
uint32_t ms = millis();
|
@@ -819,15 +820,15 @@ void Nextion::process_nextion_commands_() {
|
|
819
820
|
NextionComponentBase *component = this->nextion_queue_[i]->component;
|
820
821
|
if (this->nextion_queue_[i]->queue_time + this->max_q_age_ms_ < ms) {
|
821
822
|
if (this->nextion_queue_[i]->queue_time == 0) {
|
822
|
-
ESP_LOGD(TAG, "
|
823
|
-
component->
|
823
|
+
ESP_LOGD(TAG, "Remove old queue '%s':'%s' (t=0)", component->get_queue_type_string().c_str(),
|
824
|
+
component->get_variable_name().c_str());
|
824
825
|
}
|
825
826
|
|
826
827
|
if (component->get_variable_name() == "sleep_wake") {
|
827
828
|
this->is_sleeping_ = false;
|
828
829
|
}
|
829
830
|
|
830
|
-
ESP_LOGD(TAG, "
|
831
|
+
ESP_LOGD(TAG, "Remove old queue '%s':'%s'", component->get_queue_type_string().c_str(),
|
831
832
|
component->get_variable_name().c_str());
|
832
833
|
|
833
834
|
if (component->get_queue_type() == NextionQueueType::NO_RESULT) {
|
@@ -847,20 +848,17 @@ void Nextion::process_nextion_commands_() {
|
|
847
848
|
}
|
848
849
|
}
|
849
850
|
}
|
850
|
-
ESP_LOGN(TAG, "Loop
|
851
|
+
ESP_LOGN(TAG, "Loop end");
|
851
852
|
// App.feed_wdt(); Remove before master merge
|
852
853
|
this->process_serial_();
|
853
|
-
} //
|
854
|
+
} // Nextion::process_nextion_commands_()
|
854
855
|
|
855
856
|
void Nextion::set_nextion_sensor_state(int queue_type, const std::string &name, float state) {
|
856
857
|
this->set_nextion_sensor_state(static_cast<NextionQueueType>(queue_type), name, state);
|
857
858
|
}
|
858
859
|
|
859
860
|
void Nextion::set_nextion_sensor_state(NextionQueueType queue_type, const std::string &name, float state) {
|
860
|
-
ESP_LOGN(TAG, "
|
861
|
-
ESP_LOGN(TAG, " variable: %s", name.c_str());
|
862
|
-
ESP_LOGN(TAG, " state: %lf", state);
|
863
|
-
ESP_LOGN(TAG, " queue type: %d", queue_type);
|
861
|
+
ESP_LOGN(TAG, "State: %s=%lf (type %d)", name.c_str(), state, queue_type);
|
864
862
|
|
865
863
|
switch (queue_type) {
|
866
864
|
case NextionQueueType::SENSOR: {
|
@@ -891,15 +889,13 @@ void Nextion::set_nextion_sensor_state(NextionQueueType queue_type, const std::s
|
|
891
889
|
break;
|
892
890
|
}
|
893
891
|
default: {
|
894
|
-
ESP_LOGW(TAG, "
|
892
|
+
ESP_LOGW(TAG, "set_sensor_state: bad type %d", queue_type);
|
895
893
|
}
|
896
894
|
}
|
897
895
|
}
|
898
896
|
|
899
897
|
void Nextion::set_nextion_text_state(const std::string &name, const std::string &state) {
|
900
|
-
ESP_LOGD(TAG, "
|
901
|
-
ESP_LOGD(TAG, " variable: %s", name.c_str());
|
902
|
-
ESP_LOGD(TAG, " state: %s", state.c_str());
|
898
|
+
ESP_LOGD(TAG, "State: %s='%s'", name.c_str(), state.c_str());
|
903
899
|
|
904
900
|
for (auto *sensor : this->textsensortype_) {
|
905
901
|
if (name == sensor->get_variable_name()) {
|
@@ -910,7 +906,7 @@ void Nextion::set_nextion_text_state(const std::string &name, const std::string
|
|
910
906
|
}
|
911
907
|
|
912
908
|
void Nextion::all_components_send_state_(bool force_update) {
|
913
|
-
ESP_LOGD(TAG, "
|
909
|
+
ESP_LOGD(TAG, "Send states");
|
914
910
|
for (auto *binarysensortype : this->binarysensortype_) {
|
915
911
|
if (force_update || binarysensortype->get_needs_to_send_update())
|
916
912
|
binarysensortype->send_state_to_nextion();
|
@@ -998,13 +994,30 @@ uint16_t Nextion::recv_ret_string_(std::string &response, uint32_t timeout, bool
|
|
998
994
|
}
|
999
995
|
|
1000
996
|
/**
|
1001
|
-
* @brief
|
997
|
+
* @brief Add a command to the Nextion queue that expects no response.
|
998
|
+
*
|
999
|
+
* This is typically used for write-only operations such as variable assignments or component updates
|
1000
|
+
* where no return value or acknowledgment is expected from the display.
|
1002
1001
|
*
|
1003
|
-
*
|
1002
|
+
* If the `max_queue_size` limit is configured and reached, the command will be skipped.
|
1003
|
+
*
|
1004
|
+
* @param variable_name Name of the variable or component associated with the command.
|
1004
1005
|
*/
|
1005
1006
|
void Nextion::add_no_result_to_queue_(const std::string &variable_name) {
|
1006
|
-
|
1007
|
-
|
1007
|
+
#ifdef USE_NEXTION_MAX_QUEUE_SIZE
|
1008
|
+
if (this->max_queue_size_ > 0 && this->nextion_queue_.size() >= this->max_queue_size_) {
|
1009
|
+
ESP_LOGW(TAG, "Queue full (%zu), drop: %s", this->nextion_queue_.size(), variable_name.c_str());
|
1010
|
+
return;
|
1011
|
+
}
|
1012
|
+
#endif
|
1013
|
+
|
1014
|
+
ExternalRAMAllocator<nextion::NextionQueue> allocator(ExternalRAMAllocator<nextion::NextionQueue>::ALLOW_FAILURE);
|
1015
|
+
nextion::NextionQueue *nextion_queue = allocator.allocate(1);
|
1016
|
+
if (nextion_queue == nullptr) {
|
1017
|
+
ESP_LOGW(TAG, "Queue alloc failed");
|
1018
|
+
return;
|
1019
|
+
}
|
1020
|
+
new (nextion_queue) nextion::NextionQueue();
|
1008
1021
|
|
1009
1022
|
// NOLINTNEXTLINE(cppcoreguidelines-owning-memory)
|
1010
1023
|
nextion_queue->component = new nextion::NextionComponentBase;
|
@@ -1014,7 +1027,7 @@ void Nextion::add_no_result_to_queue_(const std::string &variable_name) {
|
|
1014
1027
|
|
1015
1028
|
this->nextion_queue_.push_back(nextion_queue);
|
1016
1029
|
|
1017
|
-
ESP_LOGN(TAG, "
|
1030
|
+
ESP_LOGN(TAG, "Queue NORESULT: %s", nextion_queue->component->get_variable_name().c_str());
|
1018
1031
|
}
|
1019
1032
|
|
1020
1033
|
/**
|
@@ -1043,7 +1056,7 @@ bool Nextion::add_no_result_to_queue_with_ignore_sleep_printf_(const std::string
|
|
1043
1056
|
int ret = vsnprintf(buffer, sizeof(buffer), format, arg);
|
1044
1057
|
va_end(arg);
|
1045
1058
|
if (ret <= 0) {
|
1046
|
-
ESP_LOGW(TAG, "
|
1059
|
+
ESP_LOGW(TAG, "Bad cmd format: '%s'", format);
|
1047
1060
|
return false;
|
1048
1061
|
}
|
1049
1062
|
|
@@ -1068,7 +1081,7 @@ bool Nextion::add_no_result_to_queue_with_printf_(const std::string &variable_na
|
|
1068
1081
|
int ret = vsnprintf(buffer, sizeof(buffer), format, arg);
|
1069
1082
|
va_end(arg);
|
1070
1083
|
if (ret <= 0) {
|
1071
|
-
ESP_LOGW(TAG, "
|
1084
|
+
ESP_LOGW(TAG, "Bad cmd format: '%s'", format);
|
1072
1085
|
return false;
|
1073
1086
|
}
|
1074
1087
|
|
@@ -1133,18 +1146,39 @@ void Nextion::add_no_result_to_queue_with_set_internal_(const std::string &varia
|
|
1133
1146
|
state_value.c_str());
|
1134
1147
|
}
|
1135
1148
|
|
1149
|
+
/**
|
1150
|
+
* @brief Queue a GET command for a component that expects a response from the Nextion display.
|
1151
|
+
*
|
1152
|
+
* This method is used for querying values such as sensor states, text content, or switch status.
|
1153
|
+
* The component will be added to the Nextion queue only if the display is already set up,
|
1154
|
+
* the queue has not reached the configured maximum size (if set), and the command is sent successfully.
|
1155
|
+
*
|
1156
|
+
* @param component Pointer to the Nextion component that will handle the response.
|
1157
|
+
*/
|
1136
1158
|
void Nextion::add_to_get_queue(NextionComponentBase *component) {
|
1137
1159
|
if ((!this->is_setup() && !this->ignore_is_setup_))
|
1138
1160
|
return;
|
1139
1161
|
|
1140
|
-
|
1141
|
-
|
1162
|
+
#ifdef USE_NEXTION_MAX_QUEUE_SIZE
|
1163
|
+
if (this->max_queue_size_ > 0 && this->nextion_queue_.size() >= this->max_queue_size_) {
|
1164
|
+
ESP_LOGW(TAG, "Queue full (%zu), drop GET: %s", this->nextion_queue_.size(),
|
1165
|
+
component->get_variable_name().c_str());
|
1166
|
+
return;
|
1167
|
+
}
|
1168
|
+
#endif
|
1169
|
+
|
1170
|
+
ExternalRAMAllocator<nextion::NextionQueue> allocator(ExternalRAMAllocator<nextion::NextionQueue>::ALLOW_FAILURE);
|
1171
|
+
nextion::NextionQueue *nextion_queue = allocator.allocate(1);
|
1172
|
+
if (nextion_queue == nullptr) {
|
1173
|
+
ESP_LOGW(TAG, "Queue alloc failed");
|
1174
|
+
return;
|
1175
|
+
}
|
1176
|
+
new (nextion_queue) nextion::NextionQueue();
|
1142
1177
|
|
1143
1178
|
nextion_queue->component = component;
|
1144
1179
|
nextion_queue->queue_time = millis();
|
1145
1180
|
|
1146
|
-
ESP_LOGN(TAG, "
|
1147
|
-
component->get_variable_name().c_str());
|
1181
|
+
ESP_LOGN(TAG, "Queue %s: %s", component->get_queue_type_string().c_str(), component->get_variable_name().c_str());
|
1148
1182
|
|
1149
1183
|
std::string command = "get " + component->get_variable_name_to_send();
|
1150
1184
|
|
@@ -1165,8 +1199,13 @@ void Nextion::add_addt_command_to_queue(NextionComponentBase *component) {
|
|
1165
1199
|
if ((!this->is_setup() && !this->ignore_is_setup_) || this->is_sleeping())
|
1166
1200
|
return;
|
1167
1201
|
|
1168
|
-
|
1169
|
-
nextion::NextionQueue *nextion_queue =
|
1202
|
+
ExternalRAMAllocator<nextion::NextionQueue> allocator(ExternalRAMAllocator<nextion::NextionQueue>::ALLOW_FAILURE);
|
1203
|
+
nextion::NextionQueue *nextion_queue = allocator.allocate(1);
|
1204
|
+
if (nextion_queue == nullptr) {
|
1205
|
+
ESP_LOGW(TAG, "Queue alloc failed");
|
1206
|
+
return;
|
1207
|
+
}
|
1208
|
+
new (nextion_queue) nextion::NextionQueue();
|
1170
1209
|
|
1171
1210
|
nextion_queue->component = component;
|
1172
1211
|
nextion_queue->queue_time = millis();
|
@@ -1195,8 +1234,8 @@ void Nextion::check_pending_waveform_() {
|
|
1195
1234
|
|
1196
1235
|
void Nextion::set_writer(const nextion_writer_t &writer) { this->writer_ = writer; }
|
1197
1236
|
|
1198
|
-
ESPDEPRECATED("set_wait_for_ack(bool)
|
1199
|
-
void Nextion::set_wait_for_ack(bool wait_for_ack) { ESP_LOGE(TAG, "
|
1237
|
+
ESPDEPRECATED("set_wait_for_ack(bool) deprecated, no effect", "v1.20")
|
1238
|
+
void Nextion::set_wait_for_ack(bool wait_for_ack) { ESP_LOGE(TAG, "Deprecated"); }
|
1200
1239
|
|
1201
1240
|
bool Nextion::is_updating() { return this->is_updating_; }
|
1202
1241
|
|