esphome 2025.6.3__py3-none-any.whl → 2025.7.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 +1 -3
- esphome/codegen.py +2 -0
- esphome/components/ac_dimmer/ac_dimmer.cpp +6 -6
- esphome/components/adc/__init__.py +25 -1
- esphome/components/adc/adc_sensor.h +11 -11
- esphome/components/adc/adc_sensor_common.cpp +1 -1
- esphome/components/adc/adc_sensor_esp32.cpp +16 -8
- esphome/components/ade7880/ade7880.h +0 -2
- esphome/components/ads1115/ads1115.h +0 -1
- esphome/components/ads1118/ads1118.h +0 -1
- esphome/components/ags10/ags10.h +0 -2
- esphome/components/aic3204/aic3204.h +0 -1
- esphome/components/alarm_control_panel/__init__.py +5 -2
- esphome/components/alpha3/alpha3.h +0 -1
- esphome/components/am43/cover/am43_cover.h +0 -1
- esphome/components/am43/sensor/am43_sensor.h +0 -1
- esphome/components/analog_threshold/analog_threshold_binary_sensor.h +0 -2
- esphome/components/anova/anova.cpp +5 -1
- esphome/components/anova/anova.h +0 -1
- esphome/components/apds9960/apds9960.cpp +1 -1
- esphome/components/api/__init__.py +57 -21
- esphome/components/api/api_connection.cpp +344 -539
- esphome/components/api/api_connection.h +224 -141
- esphome/components/api/api_frame_helper.cpp +91 -127
- esphome/components/api/api_frame_helper.h +64 -54
- esphome/components/api/api_pb2.cpp +1837 -9044
- esphome/components/api/api_pb2.h +532 -685
- esphome/components/api/api_pb2_dump.cpp +4432 -0
- esphome/components/api/api_pb2_service.cpp +184 -425
- esphome/components/api/api_pb2_service.h +13 -6
- esphome/components/api/api_server.cpp +131 -167
- esphome/components/api/api_server.h +38 -10
- esphome/components/api/client.py +8 -2
- esphome/components/api/custom_api_device.h +8 -0
- esphome/components/api/list_entities.cpp +37 -104
- esphome/components/api/list_entities.h +33 -23
- esphome/components/api/proto.h +532 -26
- esphome/components/api/subscribe_state.cpp +23 -29
- esphome/components/api/subscribe_state.h +26 -19
- esphome/components/api/user_services.h +2 -0
- esphome/components/as5600/as5600.h +0 -1
- esphome/components/async_tcp/__init__.py +14 -5
- esphome/components/atc_mithermometer/atc_mithermometer.h +0 -1
- esphome/components/atm90e32/atm90e32.cpp +2 -1
- esphome/components/audio/audio_decoder.cpp +1 -1
- esphome/components/audio/audio_transfer_buffer.cpp +2 -2
- esphome/components/b_parasite/b_parasite.h +0 -1
- esphome/components/bedjet/bedjet_hub.cpp +5 -1
- esphome/components/bedjet/climate/bedjet_climate.cpp +5 -1
- esphome/components/beken_spi_led_strip/led_strip.cpp +4 -2
- esphome/components/bh1750/bh1750.cpp +5 -5
- esphome/components/binary_sensor/__init__.py +82 -5
- esphome/components/binary_sensor/automation.h +19 -1
- esphome/components/binary_sensor/binary_sensor.cpp +12 -30
- esphome/components/binary_sensor/binary_sensor.h +11 -25
- esphome/components/binary_sensor/filter.cpp +29 -24
- esphome/components/binary_sensor/filter.h +20 -10
- esphome/components/ble_client/output/ble_binary_output.h +0 -1
- esphome/components/ble_client/sensor/ble_rssi_sensor.cpp +5 -1
- esphome/components/ble_client/sensor/ble_rssi_sensor.h +0 -1
- esphome/components/ble_client/sensor/ble_sensor.cpp +5 -1
- esphome/components/ble_client/sensor/ble_sensor.h +0 -1
- esphome/components/ble_client/switch/ble_switch.h +0 -1
- esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +5 -1
- esphome/components/ble_client/text_sensor/ble_text_sensor.h +0 -1
- esphome/components/ble_presence/ble_presence_device.h +0 -1
- esphome/components/ble_rssi/ble_rssi_sensor.h +0 -1
- esphome/components/ble_scanner/ble_scanner.h +0 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.h +9 -2
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +16 -6
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +8 -2
- esphome/components/bme680/sensor.py +1 -1
- esphome/components/bmp581/bmp581.h +0 -2
- esphome/components/button/__init__.py +5 -2
- esphome/components/camera/__init__.py +1 -0
- esphome/components/camera/camera.cpp +22 -0
- esphome/components/camera/camera.h +80 -0
- esphome/components/canbus/__init__.py +1 -0
- esphome/components/cap1188/cap1188.h +0 -1
- esphome/components/captive_portal/__init__.py +12 -2
- esphome/components/captive_portal/captive_portal.cpp +12 -2
- esphome/components/captive_portal/captive_portal.h +5 -2
- esphome/components/ccs811/ccs811.h +0 -2
- esphome/components/climate/__init__.py +5 -2
- esphome/components/cm1106/sensor.py +2 -2
- esphome/components/const/__init__.py +2 -0
- esphome/components/copy/binary_sensor/copy_binary_sensor.h +0 -1
- esphome/components/copy/button/copy_button.h +0 -1
- esphome/components/copy/cover/copy_cover.h +0 -1
- esphome/components/copy/fan/copy_fan.h +0 -1
- esphome/components/copy/lock/copy_lock.h +0 -1
- esphome/components/copy/number/copy_number.h +0 -1
- esphome/components/copy/select/copy_select.h +0 -1
- esphome/components/copy/sensor/copy_sensor.h +0 -1
- esphome/components/copy/switch/copy_switch.h +0 -1
- esphome/components/copy/text/copy_text.h +0 -1
- esphome/components/copy/text_sensor/copy_text_sensor.h +0 -1
- esphome/components/cover/__init__.py +5 -2
- esphome/components/cs5460a/cs5460a.h +0 -1
- esphome/components/datetime/__init__.py +4 -2
- esphome/components/debug/__init__.py +20 -0
- esphome/components/debug/debug_esp32.cpp +2 -0
- esphome/components/deep_sleep/__init__.py +43 -9
- esphome/components/demo/__init__.py +2 -2
- esphome/components/display/display.cpp +4 -3
- esphome/components/display/display.h +0 -2
- esphome/components/display/display_buffer.cpp +1 -1
- esphome/components/ds2484/__init__.py +1 -0
- esphome/components/ds2484/ds2484.cpp +209 -0
- esphome/components/ds2484/ds2484.h +43 -0
- esphome/components/ds2484/one_wire.py +37 -0
- esphome/components/duty_time/duty_time_sensor.h +0 -1
- esphome/components/ens160_base/ens160_base.h +0 -1
- esphome/components/es7210/es7210.h +0 -1
- esphome/components/es7243e/es7243e.h +0 -1
- esphome/components/es8156/es8156.h +0 -1
- esphome/components/es8311/es8311.h +0 -1
- esphome/components/es8388/es8388.h +0 -1
- esphome/components/esp32/__init__.py +103 -135
- esphome/components/esp32/core.cpp +0 -4
- esphome/components/esp32/gpio.h +1 -1
- esphome/components/esp32/helpers.cpp +69 -0
- esphome/components/esp32_ble/ble.cpp +5 -6
- esphome/components/esp32_ble/ble.h +29 -14
- esphome/components/esp32_ble/ble_event.h +6 -6
- esphome/components/esp32_ble_client/ble_client_base.cpp +21 -6
- esphome/components/esp32_ble_client/ble_client_base.h +24 -9
- esphome/components/esp32_ble_tracker/__init__.py +2 -8
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +5 -5
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +11 -7
- esphome/components/esp32_camera/__init__.py +112 -98
- esphome/components/esp32_camera/esp32_camera.cpp +41 -31
- esphome/components/esp32_camera/esp32_camera.h +35 -30
- esphome/components/esp32_camera_web_server/__init__.py +2 -1
- esphome/components/esp32_camera_web_server/camera_web_server.cpp +8 -8
- esphome/components/esp32_camera_web_server/camera_web_server.h +3 -3
- esphome/components/esp32_hall/sensor.py +2 -21
- esphome/components/esp32_hosted/__init__.py +101 -0
- esphome/components/esp32_hosted/esp32_hosted.py.script +12 -0
- esphome/components/esp32_improv/esp32_improv_component.cpp +3 -0
- esphome/components/esp32_rmt/__init__.py +0 -58
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +77 -63
- esphome/components/esp32_rmt_led_strip/led_strip.h +11 -17
- esphome/components/esp32_rmt_led_strip/light.py +14 -76
- esphome/components/esp32_touch/esp32_touch.h +174 -28
- esphome/components/esp32_touch/esp32_touch_common.cpp +162 -0
- esphome/components/esp32_touch/esp32_touch_v1.cpp +240 -0
- esphome/components/esp32_touch/esp32_touch_v2.cpp +397 -0
- esphome/components/esp8266/__init__.py +2 -0
- esphome/components/esp8266/gpio.cpp +10 -10
- esphome/components/esp8266/helpers.cpp +31 -0
- esphome/components/esphome/ota/__init__.py +1 -0
- esphome/components/esphome/ota/ota_esphome.cpp +24 -19
- esphome/components/ethernet/__init__.py +42 -23
- esphome/components/ethernet/esp_eth_phy_jl1101.c +0 -16
- esphome/components/ethernet/ethernet_component.cpp +69 -29
- esphome/components/ethernet/ethernet_component.h +18 -10
- esphome/components/event/__init__.py +5 -2
- esphome/components/ezo/ezo.h +0 -1
- esphome/components/ezo_pmp/ezo_pmp.h +0 -1
- esphome/components/fan/__init__.py +5 -2
- esphome/components/feedback/feedback_cover.h +0 -1
- esphome/components/font/__init__.py +92 -82
- esphome/components/font/font.cpp +9 -2
- esphome/components/font/font.h +20 -5
- esphome/components/fs3000/fs3000.h +0 -1
- esphome/components/gcja5/gcja5.h +0 -1
- esphome/components/gl_r01_i2c/__init__.py +0 -0
- esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +68 -0
- esphome/components/gl_r01_i2c/gl_r01_i2c.h +22 -0
- esphome/components/gl_r01_i2c/sensor.py +36 -0
- esphome/components/gp8403/gp8403.h +0 -1
- esphome/components/gpio/binary_sensor/__init__.py +17 -0
- esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp +77 -3
- esphome/components/gpio/binary_sensor/gpio_binary_sensor.h +40 -0
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.h +0 -2
- esphome/components/he60r/he60r.h +0 -1
- esphome/components/heatpumpir/climate.py +2 -1
- esphome/components/heatpumpir/heatpumpir.cpp +1 -0
- esphome/components/heatpumpir/heatpumpir.h +1 -0
- esphome/components/honeywellabp2_i2c/honeywellabp2.h +0 -1
- esphome/components/host/__init__.py +3 -1
- esphome/components/host/helpers.cpp +57 -0
- esphome/components/http_request/__init__.py +19 -1
- esphome/components/http_request/http_request.h +1 -1
- esphome/components/http_request/http_request_arduino.h +1 -0
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/http_request/update/http_request_update.cpp +28 -9
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +3 -9
- esphome/components/hydreon_rgxx/sensor.py +1 -1
- esphome/components/i2c/__init__.py +23 -11
- esphome/components/i2c/i2c_bus.h +8 -1
- esphome/components/i2c/i2c_bus_arduino.cpp +4 -3
- esphome/components/i2c/i2c_bus_arduino.h +6 -3
- esphome/components/i2c/i2c_bus_esp_idf.h +5 -3
- esphome/components/i2c_device/i2c_device.h +0 -1
- esphome/components/i2s_audio/__init__.py +2 -10
- esphome/components/i2s_audio/i2s_audio.cpp +1 -5
- esphome/components/i2s_audio/media_player/__init__.py +2 -2
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +2 -2
- esphome/components/iaqcore/iaqcore.h +0 -2
- esphome/components/image/__init__.py +123 -24
- esphome/components/improv_serial/improv_serial_component.cpp +0 -4
- esphome/components/ina219/ina219.cpp +7 -0
- esphome/components/ina219/ina219.h +1 -0
- esphome/components/ina260/ina260.h +0 -2
- esphome/components/inkbird_ibsth1_mini/inkbird_ibsth1_mini.h +0 -1
- esphome/components/inkplate6/display.py +15 -0
- esphome/components/inkplate6/inkplate.cpp +2 -2
- esphome/components/integration/integration_sensor.h +0 -1
- esphome/components/internal_temperature/internal_temperature.cpp +8 -27
- esphome/components/internal_temperature/sensor.py +0 -26
- esphome/components/interval/interval.h +0 -2
- esphome/components/ld2410/button/__init__.py +3 -3
- esphome/components/ld2410/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2410/button/{reset_button.h → factory_reset_button.h} +2 -2
- esphome/components/ld2410/ld2410.cpp +421 -268
- esphome/components/ld2410/ld2410.h +44 -146
- esphome/components/ld2410/number/__init__.py +2 -2
- esphome/components/ld2410/sensor.py +1 -1
- esphome/components/ld2410/switch/__init__.py +1 -1
- esphome/components/ld2420/ld2420.cpp +196 -100
- esphome/components/ld2420/ld2420.h +46 -118
- esphome/components/ld2420/number/__init__.py +2 -2
- esphome/components/ld2420/sensor/__init__.py +6 -2
- esphome/components/ld2420/sensor/ld2420_sensor.h +1 -1
- esphome/components/ld2450/button/__init__.py +3 -3
- esphome/components/ld2450/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2450/button/{reset_button.h → factory_reset_button.h} +2 -2
- esphome/components/ld2450/ld2450.cpp +384 -232
- esphome/components/ld2450/ld2450.h +60 -69
- esphome/components/ld2450/switch/__init__.py +1 -1
- esphome/components/ledc/ledc_output.cpp +1 -63
- esphome/components/libretiny/__init__.py +5 -3
- esphome/components/libretiny/const.py +5 -0
- esphome/components/libretiny/generate_components.py +1 -0
- esphome/components/libretiny/helpers.cpp +35 -0
- esphome/components/libretiny/lt_component.cpp +5 -3
- esphome/components/light/__init__.py +4 -2
- esphome/components/light/addressable_light.h +3 -3
- esphome/components/light/light_call.cpp +180 -243
- esphome/components/light/light_call.h +72 -20
- esphome/components/light/light_color_values.h +14 -14
- esphome/components/light/light_state.h +15 -13
- esphome/components/light/transformers.h +2 -2
- esphome/components/ln882x/__init__.py +52 -0
- esphome/components/ln882x/boards.py +285 -0
- esphome/components/lock/__init__.py +5 -2
- esphome/components/logger/__init__.py +40 -3
- esphome/components/logger/logger.cpp +47 -12
- esphome/components/logger/logger.h +80 -49
- esphome/components/logger/logger_esp32.cpp +3 -3
- esphome/components/lps22/__init__.py +0 -0
- esphome/components/lps22/lps22.cpp +75 -0
- esphome/components/lps22/lps22.h +27 -0
- esphome/components/lps22/sensor.py +58 -0
- esphome/components/ltr390/ltr390.h +0 -1
- esphome/components/ltr501/ltr501.h +0 -1
- esphome/components/ltr_als_ps/ltr_als_ps.h +0 -1
- esphome/components/lvgl/__init__.py +1 -1
- esphome/components/lvgl/schemas.py +66 -6
- esphome/components/lvgl/styles.py +24 -16
- esphome/components/lvgl/widgets/__init__.py +12 -2
- esphome/components/lvgl/widgets/lv_bar.py +40 -19
- esphome/components/m5stack_8angle/light/m5stack_8angle_light.cpp +1 -1
- esphome/components/max9611/max9611.h +0 -1
- esphome/components/mcp23016/__init__.py +1 -1
- esphome/components/mcp23xxx_base/__init__.py +1 -1
- esphome/components/mcp4461/__init__.py +1 -1
- esphome/components/mcp4461/output/__init__.py +3 -2
- esphome/components/mcp9600/mcp9600.h +0 -2
- esphome/components/md5/md5.cpp +3 -3
- esphome/components/md5/md5.h +1 -6
- esphome/components/mdns/__init__.py +22 -11
- esphome/components/media_player/__init__.py +4 -3
- esphome/components/micro_wake_word/__init__.py +1 -5
- esphome/components/micro_wake_word/streaming_model.cpp +2 -2
- esphome/components/microphone/microphone.cpp +7 -9
- esphome/components/microphone/microphone.h +0 -2
- esphome/components/mipi_spi/display.py +1 -0
- esphome/components/mmc5603/mmc5603.cpp +1 -1
- esphome/components/modbus/modbus.cpp +33 -15
- esphome/components/modbus/modbus.h +9 -0
- esphome/components/modbus_controller/__init__.py +42 -10
- esphome/components/modbus_controller/modbus_controller.cpp +92 -11
- esphome/components/modbus_controller/modbus_controller.h +61 -7
- esphome/components/mopeka_pro_check/mopeka_pro_check.h +0 -1
- esphome/components/mopeka_std_check/mopeka_std_check.h +0 -1
- esphome/components/mpl3115a2/mpl3115a2.h +0 -2
- esphome/components/mqtt/__init__.py +16 -0
- esphome/components/mqtt/mqtt_backend.h +2 -1
- esphome/components/mqtt/mqtt_backend_esp32.cpp +132 -47
- esphome/components/mqtt/mqtt_backend_esp32.h +106 -4
- esphome/components/mqtt/mqtt_client.cpp +15 -9
- esphome/components/mqtt/mqtt_client.h +8 -3
- esphome/components/ms8607/ms8607.h +0 -1
- esphome/components/neopixelbus/light.py +4 -1
- esphome/components/neopixelbus/neopixelbus_light.h +1 -1
- esphome/components/network/__init__.py +4 -1
- esphome/components/network/ip_address.h +1 -0
- esphome/components/nextion/__init__.py +16 -0
- esphome/components/nextion/base_component.py +1 -0
- esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +1 -1
- esphome/components/nextion/display.py +14 -4
- esphome/components/nextion/nextion.cpp +166 -101
- esphome/components/nextion/nextion.h +84 -53
- esphome/components/nextion/nextion_commands.cpp +11 -10
- esphome/components/nextion/nextion_component.cpp +28 -28
- esphome/components/nextion/nextion_component.h +53 -18
- esphome/components/nextion/nextion_component_base.h +3 -0
- esphome/components/nextion/nextion_upload.cpp +36 -0
- esphome/components/nextion/nextion_upload_arduino.cpp +10 -35
- esphome/components/nextion/nextion_upload_idf.cpp +9 -33
- esphome/components/nextion/sensor/nextion_sensor.cpp +1 -1
- esphome/components/nextion/switch/nextion_switch.cpp +1 -1
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +1 -1
- esphome/components/nfc/nfc.cpp +3 -22
- esphome/components/nfc/nfc.h +3 -3
- esphome/components/number/__init__.py +5 -2
- esphome/components/online_image/__init__.py +5 -0
- esphome/components/online_image/online_image.cpp +6 -2
- esphome/components/online_image/online_image.h +4 -1
- esphome/components/opentherm/opentherm.cpp +7 -12
- esphome/components/openthread/__init__.py +47 -40
- esphome/components/openthread/const.py +1 -0
- esphome/components/openthread/openthread_esp.cpp +27 -5
- esphome/components/opt3001/__init__.py +0 -0
- esphome/components/opt3001/opt3001.cpp +122 -0
- esphome/components/opt3001/opt3001.h +27 -0
- esphome/components/opt3001/sensor.py +35 -0
- esphome/components/ota/__init__.py +17 -0
- esphome/components/ota/ota_backend.h +27 -1
- esphome/components/ota/ota_backend_arduino_esp32.cpp +12 -2
- esphome/components/ota/ota_backend_arduino_esp32.h +3 -0
- esphome/components/ota/ota_backend_arduino_esp8266.cpp +18 -4
- esphome/components/ota/ota_backend_arduino_esp8266.h +3 -0
- esphome/components/ota/ota_backend_arduino_libretiny.cpp +12 -2
- esphome/components/ota/ota_backend_arduino_libretiny.h +3 -0
- esphome/components/ota/ota_backend_arduino_rp2040.cpp +9 -2
- esphome/components/ota/ota_backend_arduino_rp2040.h +3 -0
- esphome/components/ota/ota_backend_esp_idf.cpp +10 -16
- esphome/components/ota/ota_backend_esp_idf.h +1 -0
- esphome/components/packages/__init__.py +5 -2
- esphome/components/packet_transport/binary_sensor.py +61 -4
- esphome/components/packet_transport/packet_transport.cpp +34 -1
- esphome/components/packet_transport/packet_transport.h +11 -5
- esphome/components/pcf8574/__init__.py +1 -1
- esphome/components/pi4ioe5v6408/__init__.py +84 -0
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +171 -0
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.h +70 -0
- esphome/components/pmsa003i/pmsa003i.h +0 -1
- esphome/components/pmsx003/pmsx003.h +0 -1
- esphome/components/pn7150/pn7150.cpp +7 -7
- esphome/components/pn7150/pn7150.h +0 -1
- esphome/components/pn7160/pn7160.cpp +7 -7
- esphome/components/pn7160/pn7160.h +0 -1
- esphome/components/preferences/syncer.h +2 -0
- esphome/components/prometheus/prometheus_handler.h +1 -1
- esphome/components/psram/psram.cpp +0 -20
- esphome/components/pulse_counter/pulse_counter_sensor.h +0 -1
- esphome/components/pulse_meter/pulse_meter_sensor.cpp +8 -4
- esphome/components/pulse_width/pulse_width.h +0 -1
- esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +0 -4
- esphome/components/pvvx_mithermometer/display/pvvx_display.h +0 -2
- esphome/components/pvvx_mithermometer/pvvx_mithermometer.h +0 -1
- esphome/components/qr_code/__init__.py +13 -10
- esphome/components/qwiic_pir/qwiic_pir.h +0 -1
- esphome/components/radon_eye_ble/radon_eye_listener.cpp +1 -1
- esphome/components/rc522/rc522.h +0 -1
- esphome/components/rdm6300/rdm6300.h +0 -2
- esphome/components/remote_base/__init__.py +7 -5
- esphome/components/remote_base/remote_base.cpp +24 -21
- esphome/components/remote_base/remote_base.h +3 -26
- esphome/components/remote_receiver/__init__.py +40 -46
- esphome/components/remote_receiver/remote_receiver.h +4 -18
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -87
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +1 -1
- esphome/components/remote_transmitter/__init__.py +42 -43
- esphome/components/remote_transmitter/remote_transmitter.h +2 -14
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -77
- esphome/components/resistance/resistance_sensor.h +0 -1
- esphome/components/rp2040/__init__.py +2 -0
- esphome/components/rp2040/helpers.cpp +55 -0
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +2 -2
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -4
- esphome/components/rtttl/__init__.py +4 -4
- esphome/components/rtttl/rtttl.cpp +10 -1
- esphome/components/ruuvitag/ruuvitag.h +0 -1
- esphome/components/safe_mode/safe_mode.cpp +2 -0
- esphome/components/safe_mode/safe_mode.h +4 -1
- esphome/components/scd30/scd30.h +0 -1
- esphome/components/scd30/sensor.py +2 -2
- esphome/components/scd4x/scd4x.cpp +61 -54
- esphome/components/scd4x/scd4x.h +17 -15
- esphome/components/scd4x/sensor.py +4 -4
- esphome/components/script/script.h +0 -2
- esphome/components/sdp3x/sensor.py +1 -1
- esphome/components/select/__init__.py +5 -2
- esphome/components/sen5x/sen5x.h +0 -1
- esphome/components/senseair/senseair.h +0 -1
- esphome/components/sensor/__init__.py +4 -2
- esphome/components/sensor/filter.cpp +1 -1
- esphome/components/sensor/sensor.cpp +12 -6
- esphome/components/sensor/sensor.h +13 -5
- esphome/components/servo/servo.h +0 -1
- esphome/components/sfa30/sfa30.h +0 -1
- esphome/components/sgp30/sgp30.h +0 -1
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/stm32flash.cpp +1 -2
- esphome/components/sht4x/sht4x.h +0 -1
- esphome/components/sm300d2/sm300d2.h +0 -2
- esphome/components/smt100/sensor.py +8 -4
- esphome/components/smt100/smt100.cpp +5 -5
- esphome/components/smt100/smt100.h +3 -3
- esphome/components/sn74hc595/__init__.py +1 -1
- esphome/components/sn74hc595/sn74hc595.cpp +5 -4
- esphome/components/sntp/sntp_component.cpp +9 -3
- esphome/components/sntp/time.py +2 -0
- esphome/components/socket/__init__.py +17 -0
- esphome/components/spi/__init__.py +27 -6
- esphome/components/spi/spi.cpp +3 -2
- esphome/components/spi/spi.h +9 -3
- esphome/components/spi/spi_arduino.cpp +3 -5
- esphome/components/spi/spi_esp_idf.cpp +40 -21
- esphome/components/spi_led_strip/spi_led_strip.cpp +1 -1
- esphome/components/sps30/sps30.h +0 -1
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +0 -4
- esphome/components/status/status_binary_sensor.h +0 -2
- esphome/components/substitutions/__init__.py +76 -19
- esphome/components/substitutions/jinja.py +99 -0
- esphome/components/sun/sun.cpp +3 -4
- esphome/components/switch/__init__.py +5 -2
- esphome/components/switch/binary_sensor/switch_binary_sensor.h +0 -1
- esphome/components/sx126x/__init__.py +317 -0
- esphome/components/sx126x/automation.h +62 -0
- esphome/components/sx126x/packet_transport/__init__.py +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.cpp +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.h +25 -0
- esphome/components/sx126x/sx126x.cpp +523 -0
- esphome/components/sx126x/sx126x.h +140 -0
- esphome/components/sx126x/sx126x_reg.h +163 -0
- esphome/components/sx127x/__init__.py +325 -0
- esphome/components/sx127x/automation.h +62 -0
- esphome/components/sx127x/packet_transport/__init__.py +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.cpp +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.h +25 -0
- esphome/components/sx127x/sx127x.cpp +498 -0
- esphome/components/sx127x/sx127x.h +128 -0
- esphome/components/sx127x/sx127x_reg.h +295 -0
- esphome/components/syslog/esphome_syslog.cpp +5 -3
- esphome/components/syslog/esphome_syslog.h +1 -1
- esphome/components/tca9555/__init__.py +1 -1
- esphome/components/template/binary_sensor/template_binary_sensor.cpp +1 -9
- esphome/components/text/__init__.py +5 -2
- esphome/components/text_sensor/__init__.py +5 -2
- esphome/components/thermostat/thermostat_climate.cpp +34 -31
- esphome/components/thermostat/thermostat_climate.h +43 -39
- esphome/components/time/__init__.py +16 -2
- esphome/components/time/real_time_clock.cpp +4 -0
- esphome/components/time/real_time_clock.h +5 -1
- esphome/components/tlc5971/tlc5971.cpp +4 -1
- esphome/components/tmp1075/tmp1075.h +0 -2
- esphome/components/tof10120/tof10120_sensor.h +0 -1
- esphome/components/tormatic/tormatic_cover.h +0 -1
- esphome/components/total_daily_energy/total_daily_energy.h +0 -1
- esphome/components/tsl2591/tsl2591.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.h +0 -1
- esphome/components/ttp229_lsf/ttp229_lsf.h +0 -1
- esphome/components/tx20/tx20.cpp +2 -2
- esphome/components/uart/__init__.py +18 -0
- esphome/components/uart/uart_component_esp_idf.cpp +0 -4
- esphome/components/update/__init__.py +5 -2
- esphome/components/update/update_entity.h +8 -0
- esphome/components/usb_host/__init__.py +5 -2
- esphome/components/usb_host/usb_host_client.cpp +10 -10
- esphome/components/usb_uart/cp210x.cpp +1 -1
- esphome/components/usb_uart/usb_uart.cpp +41 -44
- esphome/components/usb_uart/usb_uart.h +4 -3
- esphome/components/valve/__init__.py +5 -2
- esphome/components/vbus/vbus.h +0 -1
- esphome/components/veml3235/veml3235.h +0 -1
- esphome/components/veml7700/veml7700.h +0 -1
- esphome/components/vl53l0x/vl53l0x_sensor.h +0 -1
- esphome/components/voice_assistant/voice_assistant.cpp +4 -4
- esphome/components/watchdog/watchdog.cpp +0 -4
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +6 -6
- esphome/components/web_server/__init__.py +34 -19
- esphome/components/web_server/ota/__init__.py +32 -0
- esphome/components/web_server/ota/ota_web_server.cpp +210 -0
- esphome/components/web_server/ota/ota_web_server.h +26 -0
- esphome/components/web_server/web_server.cpp +305 -427
- esphome/components/web_server/web_server.h +33 -23
- esphome/components/web_server/web_server_v1.cpp +4 -5
- esphome/components/web_server_base/__init__.py +5 -2
- esphome/components/web_server_base/web_server_base.cpp +2 -94
- esphome/components/web_server_base/web_server_base.h +5 -25
- esphome/components/web_server_idf/multipart.cpp +254 -0
- esphome/components/web_server_idf/multipart.h +86 -0
- esphome/components/web_server_idf/utils.cpp +32 -0
- esphome/components/web_server_idf/utils.h +10 -0
- esphome/components/web_server_idf/web_server_idf.cpp +162 -16
- esphome/components/web_server_idf/web_server_idf.h +11 -10
- esphome/components/wiegand/wiegand.cpp +2 -2
- esphome/components/wifi/__init__.py +18 -0
- esphome/components/wifi/wifi_component.cpp +17 -22
- esphome/components/wifi/wifi_component.h +27 -23
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +52 -59
- esphome/components/wifi/wifi_component_esp8266.cpp +46 -46
- esphome/components/wifi/wifi_component_esp_idf.cpp +35 -36
- esphome/components/wifi/wifi_component_libretiny.cpp +26 -27
- esphome/components/wifi/wifi_component_pico_w.cpp +3 -3
- esphome/components/wifi_info/wifi_info_text_sensor.cpp +6 -6
- esphome/components/wireguard/__init__.py +2 -11
- esphome/components/xiaomi_ble/xiaomi_ble.cpp +13 -1
- esphome/components/xiaomi_ble/xiaomi_ble.h +1 -0
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.h +0 -1
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h +0 -1
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.h +0 -1
- esphome/components/xiaomi_cgpr1/xiaomi_cgpr1.h +0 -1
- esphome/components/xiaomi_gcls002/xiaomi_gcls002.h +0 -1
- esphome/components/xiaomi_hhccjcy01/xiaomi_hhccjcy01.h +0 -1
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.h +0 -1
- esphome/components/xiaomi_hhccpot002/xiaomi_hhccpot002.h +0 -1
- esphome/components/xiaomi_jqjcy01ym/xiaomi_jqjcy01ym.h +0 -1
- esphome/components/xiaomi_lywsd02/xiaomi_lywsd02.h +0 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.h +0 -1
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.h +0 -1
- esphome/components/xiaomi_lywsdcgq/xiaomi_lywsdcgq.h +0 -1
- esphome/components/xiaomi_mhoc303/xiaomi_mhoc303.h +0 -1
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.h +0 -1
- esphome/components/xiaomi_miscale/xiaomi_miscale.h +0 -1
- esphome/components/xiaomi_mjyd02yla/xiaomi_mjyd02yla.h +0 -1
- esphome/components/xiaomi_mue4094rt/xiaomi_mue4094rt.h +0 -1
- esphome/components/xiaomi_rtcgq02lm/xiaomi_rtcgq02lm.h +0 -1
- esphome/components/xiaomi_wx08zm/xiaomi_wx08zm.h +0 -1
- esphome/components/xiaomi_xmwsdj04mmc/__init__.py +0 -0
- esphome/components/xiaomi_xmwsdj04mmc/sensor.py +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.cpp +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.h +36 -0
- esphome/components/zio_ultrasonic/zio_ultrasonic.h +0 -2
- esphome/components/zyaura/zyaura.h +0 -1
- esphome/config.py +88 -22
- esphome/config_helpers.py +74 -1
- esphome/config_validation.py +12 -1
- esphome/const.py +65 -10
- esphome/core/__init__.py +18 -2
- esphome/core/application.cpp +163 -10
- esphome/core/application.h +145 -165
- esphome/core/area.h +19 -0
- esphome/core/automation.h +58 -9
- esphome/core/color.cpp +3 -5
- esphome/core/color.h +16 -16
- esphome/core/component.cpp +151 -18
- esphome/core/component.h +98 -4
- esphome/core/component_iterator.cpp +11 -9
- esphome/core/component_iterator.h +12 -10
- esphome/core/config.py +155 -6
- esphome/core/controller.cpp +4 -2
- esphome/core/controller.h +1 -1
- esphome/core/datatypes.h +2 -2
- esphome/core/defines.h +17 -2
- esphome/core/device.h +20 -0
- esphome/core/entity_base.cpp +20 -15
- esphome/core/entity_base.h +76 -0
- esphome/core/entity_helpers.py +168 -1
- esphome/core/event_pool.h +81 -0
- esphome/core/helpers.cpp +75 -230
- esphome/core/helpers.h +164 -104
- esphome/core/lock_free_queue.h +151 -0
- esphome/core/log.cpp +2 -2
- esphome/core/log.h +2 -0
- esphome/core/optional.h +5 -0
- esphome/core/ring_buffer.cpp +2 -2
- esphome/core/scheduler.cpp +275 -103
- esphome/core/scheduler.h +154 -17
- esphome/core/time.cpp +5 -5
- esphome/core/time.h +5 -5
- esphome/cpp_generator.py +17 -0
- esphome/cpp_helpers.py +0 -22
- esphome/cpp_types.py +3 -1
- esphome/dashboard/entries.py +1 -1
- esphome/dashboard/util/text.py +5 -21
- esphome/dashboard/web_server.py +9 -1
- esphome/helpers.py +47 -0
- esphome/loader.py +15 -1
- esphome/pins.py +14 -8
- esphome/wizard.py +17 -4
- esphome/writer.py +21 -3
- esphome/yaml_util.py +0 -2
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/METADATA +10 -9
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/RECORD +597 -538
- esphome/components/api/api_pb2_size.h +0 -361
- esphome/components/esp32_ble/ble_event_pool.h +0 -72
- esphome/components/esp32_ble/queue.h +0 -85
- esphome/components/esp32_hall/esp32_hall.cpp +0 -25
- esphome/components/esp32_hall/esp32_hall.h +0 -23
- esphome/components/esp32_touch/esp32_touch.cpp +0 -355
- esphome/components/ld2410/button/reset_button.cpp +0 -9
- esphome/components/ld2450/button/reset_button.cpp +0 -9
- esphome/components/openthread/tlv.py +0 -65
- /esphome/{dashboard/enum.py → enum.py} +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/WHEEL +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/entry_points.txt +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.6.3.dist-info → esphome-2025.7.0b2.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#include "ld2420.h"
|
|
2
|
+
#include "esphome/core/application.h"
|
|
2
3
|
#include "esphome/core/helpers.h"
|
|
3
4
|
|
|
4
5
|
/*
|
|
@@ -40,7 +41,7 @@ There are three documented parameters for modes:
|
|
|
40
41
|
00 04 = Energy output mode
|
|
41
42
|
This mode outputs detailed signal energy values for each gate and the target distance.
|
|
42
43
|
The data format consist of the following.
|
|
43
|
-
Header HH, Length LL,
|
|
44
|
+
Header HH, Length LL, Presence PP, Distance DD, 16 Gate Energies EE, Footer FF
|
|
44
45
|
HH HH HH HH LL LL PP DD DD EE EE .. 16x .. FF FF FF FF
|
|
45
46
|
F4 F3 F2 F1 23 00 00 00 00 00 00 .. .. .. .. F8 F7 F6 F5
|
|
46
47
|
00 00 = debug output mode
|
|
@@ -62,38 +63,105 @@ namespace ld2420 {
|
|
|
62
63
|
|
|
63
64
|
static const char *const TAG = "ld2420";
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
66
|
+
// Local const's
|
|
67
|
+
static const uint16_t REFRESH_RATE_MS = 1000;
|
|
68
|
+
|
|
69
|
+
// Command sets
|
|
70
|
+
static const uint16_t CMD_DISABLE_CONF = 0x00FE;
|
|
71
|
+
static const uint16_t CMD_ENABLE_CONF = 0x00FF;
|
|
72
|
+
static const uint16_t CMD_PARM_HIGH_TRESH = 0x0012;
|
|
73
|
+
static const uint16_t CMD_PARM_LOW_TRESH = 0x0021;
|
|
74
|
+
static const uint16_t CMD_PROTOCOL_VER = 0x0002;
|
|
75
|
+
static const uint16_t CMD_READ_ABD_PARAM = 0x0008;
|
|
76
|
+
static const uint16_t CMD_READ_REG_ADDR = 0x0020;
|
|
77
|
+
static const uint16_t CMD_READ_REGISTER = 0x0002;
|
|
78
|
+
static const uint16_t CMD_READ_SERIAL_NUM = 0x0011;
|
|
79
|
+
static const uint16_t CMD_READ_SYS_PARAM = 0x0013;
|
|
80
|
+
static const uint16_t CMD_READ_VERSION = 0x0000;
|
|
81
|
+
static const uint16_t CMD_RESTART = 0x0068;
|
|
82
|
+
static const uint16_t CMD_SYSTEM_MODE = 0x0000;
|
|
83
|
+
static const uint16_t CMD_SYSTEM_MODE_GR = 0x0003;
|
|
84
|
+
static const uint16_t CMD_SYSTEM_MODE_MTT = 0x0001;
|
|
85
|
+
static const uint16_t CMD_SYSTEM_MODE_SIMPLE = 0x0064;
|
|
86
|
+
static const uint16_t CMD_SYSTEM_MODE_DEBUG = 0x0000;
|
|
87
|
+
static const uint16_t CMD_SYSTEM_MODE_ENERGY = 0x0004;
|
|
88
|
+
static const uint16_t CMD_SYSTEM_MODE_VS = 0x0002;
|
|
89
|
+
static const uint16_t CMD_WRITE_ABD_PARAM = 0x0007;
|
|
90
|
+
static const uint16_t CMD_WRITE_REGISTER = 0x0001;
|
|
91
|
+
static const uint16_t CMD_WRITE_SYS_PARAM = 0x0012;
|
|
92
|
+
|
|
93
|
+
static const uint8_t CMD_ABD_DATA_REPLY_SIZE = 0x04;
|
|
94
|
+
static const uint8_t CMD_ABD_DATA_REPLY_START = 0x0A;
|
|
95
|
+
static const uint8_t CMD_MAX_BYTES = 0x64;
|
|
96
|
+
static const uint8_t CMD_REG_DATA_REPLY_SIZE = 0x02;
|
|
97
|
+
|
|
98
|
+
static const uint8_t LD2420_ERROR_NONE = 0x00;
|
|
99
|
+
static const uint8_t LD2420_ERROR_TIMEOUT = 0x02;
|
|
100
|
+
static const uint8_t LD2420_ERROR_UNKNOWN = 0x01;
|
|
101
|
+
|
|
102
|
+
// Register address values
|
|
103
|
+
static const uint16_t CMD_MIN_GATE_REG = 0x0000;
|
|
104
|
+
static const uint16_t CMD_MAX_GATE_REG = 0x0001;
|
|
105
|
+
static const uint16_t CMD_TIMEOUT_REG = 0x0004;
|
|
106
|
+
static const uint16_t CMD_GATE_MOVE_THRESH[TOTAL_GATES] = {0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015,
|
|
107
|
+
0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B,
|
|
108
|
+
0x001C, 0x001D, 0x001E, 0x001F};
|
|
109
|
+
static const uint16_t CMD_GATE_STILL_THRESH[TOTAL_GATES] = {0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025,
|
|
110
|
+
0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B,
|
|
111
|
+
0x002C, 0x002D, 0x002E, 0x002F};
|
|
112
|
+
static const uint32_t FACTORY_MOVE_THRESH[TOTAL_GATES] = {60000, 30000, 400, 250, 250, 250, 250, 250,
|
|
113
|
+
250, 250, 250, 250, 250, 250, 250, 250};
|
|
114
|
+
static const uint32_t FACTORY_STILL_THRESH[TOTAL_GATES] = {40000, 20000, 200, 200, 200, 200, 200, 150,
|
|
115
|
+
150, 100, 100, 100, 100, 100, 100, 100};
|
|
116
|
+
static const uint16_t FACTORY_TIMEOUT = 120;
|
|
117
|
+
static const uint16_t FACTORY_MIN_GATE = 1;
|
|
118
|
+
static const uint16_t FACTORY_MAX_GATE = 12;
|
|
119
|
+
|
|
120
|
+
// COMMAND_BYTE Header & Footer
|
|
121
|
+
static const uint32_t CMD_FRAME_FOOTER = 0x01020304;
|
|
122
|
+
static const uint32_t CMD_FRAME_HEADER = 0xFAFBFCFD;
|
|
123
|
+
static const uint32_t DEBUG_FRAME_FOOTER = 0xFAFBFCFD;
|
|
124
|
+
static const uint32_t DEBUG_FRAME_HEADER = 0x1410BFAA;
|
|
125
|
+
static const uint32_t ENERGY_FRAME_FOOTER = 0xF5F6F7F8;
|
|
126
|
+
static const uint32_t ENERGY_FRAME_HEADER = 0xF1F2F3F4;
|
|
127
|
+
static const int CALIBRATE_VERSION_MIN = 154;
|
|
128
|
+
static const uint8_t CMD_FRAME_COMMAND = 6;
|
|
129
|
+
static const uint8_t CMD_FRAME_DATA_LENGTH = 4;
|
|
130
|
+
static const uint8_t CMD_FRAME_STATUS = 7;
|
|
131
|
+
static const uint8_t CMD_ERROR_WORD = 8;
|
|
132
|
+
static const uint8_t ENERGY_SENSOR_START = 9;
|
|
133
|
+
static const uint8_t CALIBRATE_REPORT_INTERVAL = 4;
|
|
134
|
+
static const std::string OP_NORMAL_MODE_STRING = "Normal";
|
|
135
|
+
static const std::string OP_SIMPLE_MODE_STRING = "Simple";
|
|
136
|
+
|
|
137
|
+
// Memory-efficient lookup tables
|
|
138
|
+
struct StringToUint8 {
|
|
139
|
+
const char *str;
|
|
140
|
+
uint8_t value;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
static constexpr StringToUint8 OP_MODE_BY_STR[] = {
|
|
144
|
+
{"Normal", OP_NORMAL_MODE},
|
|
145
|
+
{"Calibrate", OP_CALIBRATE_MODE},
|
|
146
|
+
{"Simple", OP_SIMPLE_MODE},
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
static constexpr const char *ERR_MESSAGE[] = {
|
|
150
|
+
"None",
|
|
151
|
+
"Unknown",
|
|
152
|
+
"Timeout",
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// Helper function for lookups
|
|
156
|
+
template<size_t N> uint8_t find_uint8(const StringToUint8 (&arr)[N], const std::string &str) {
|
|
157
|
+
for (const auto &entry : arr) {
|
|
158
|
+
if (str == entry.str)
|
|
159
|
+
return entry.value;
|
|
160
|
+
}
|
|
161
|
+
return 0xFF; // Not found
|
|
94
162
|
}
|
|
95
163
|
|
|
96
|
-
uint8_t
|
|
164
|
+
static uint8_t calc_checksum(void *data, size_t size) {
|
|
97
165
|
uint8_t checksum = 0;
|
|
98
166
|
uint8_t *data_bytes = (uint8_t *) data;
|
|
99
167
|
for (size_t i = 0; i < size; i++) {
|
|
@@ -102,7 +170,7 @@ uint8_t LD2420Component::calc_checksum(void *data, size_t size) {
|
|
|
102
170
|
return checksum;
|
|
103
171
|
}
|
|
104
172
|
|
|
105
|
-
int
|
|
173
|
+
static int get_firmware_int(const char *version_string) {
|
|
106
174
|
std::string version_str = version_string;
|
|
107
175
|
if (version_str[0] == 'v') {
|
|
108
176
|
version_str = version_str.substr(1);
|
|
@@ -112,10 +180,41 @@ int LD2420Component::get_firmware_int_(const char *version_string) {
|
|
|
112
180
|
return version_integer;
|
|
113
181
|
}
|
|
114
182
|
|
|
183
|
+
float LD2420Component::get_setup_priority() const { return setup_priority::BUS; }
|
|
184
|
+
|
|
185
|
+
void LD2420Component::dump_config() {
|
|
186
|
+
ESP_LOGCONFIG(TAG,
|
|
187
|
+
"LD2420:\n"
|
|
188
|
+
" Firmware version: %7s",
|
|
189
|
+
this->firmware_ver_);
|
|
190
|
+
#ifdef USE_NUMBER
|
|
191
|
+
ESP_LOGCONFIG(TAG, "Number:");
|
|
192
|
+
LOG_NUMBER(" ", "Gate Timeout:", this->gate_timeout_number_);
|
|
193
|
+
LOG_NUMBER(" ", "Gate Max Distance:", this->max_gate_distance_number_);
|
|
194
|
+
LOG_NUMBER(" ", "Gate Min Distance:", this->min_gate_distance_number_);
|
|
195
|
+
LOG_NUMBER(" ", "Gate Select:", this->gate_select_number_);
|
|
196
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; gate++) {
|
|
197
|
+
LOG_NUMBER(" ", "Gate Move Threshold:", this->gate_move_threshold_numbers_[gate]);
|
|
198
|
+
LOG_NUMBER(" ", "Gate Still Threshold::", this->gate_still_threshold_numbers_[gate]);
|
|
199
|
+
}
|
|
200
|
+
#endif
|
|
201
|
+
#ifdef USE_BUTTON
|
|
202
|
+
LOG_BUTTON(" ", "Apply Config:", this->apply_config_button_);
|
|
203
|
+
LOG_BUTTON(" ", "Revert Edits:", this->revert_config_button_);
|
|
204
|
+
LOG_BUTTON(" ", "Factory Reset:", this->factory_reset_button_);
|
|
205
|
+
LOG_BUTTON(" ", "Restart Module:", this->restart_module_button_);
|
|
206
|
+
#endif
|
|
207
|
+
ESP_LOGCONFIG(TAG, "Select:");
|
|
208
|
+
LOG_SELECT(" ", "Operating Mode", this->operating_selector_);
|
|
209
|
+
if (ld2420::get_firmware_int(this->firmware_ver_) < CALIBRATE_VERSION_MIN) {
|
|
210
|
+
ESP_LOGW(TAG, "Firmware version %s and older supports Simple Mode only", this->firmware_ver_);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
115
214
|
void LD2420Component::setup() {
|
|
116
215
|
ESP_LOGCONFIG(TAG, "Running setup");
|
|
117
216
|
if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
|
|
118
|
-
ESP_LOGE(TAG,
|
|
217
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
|
119
218
|
this->mark_failed();
|
|
120
219
|
return;
|
|
121
220
|
}
|
|
@@ -124,24 +223,24 @@ void LD2420Component::setup() {
|
|
|
124
223
|
this->init_gate_config_numbers();
|
|
125
224
|
#endif
|
|
126
225
|
this->get_firmware_version_();
|
|
127
|
-
const char *pfw = this->
|
|
226
|
+
const char *pfw = this->firmware_ver_;
|
|
128
227
|
std::string fw_str(pfw);
|
|
129
228
|
|
|
130
|
-
for (auto &listener : listeners_) {
|
|
229
|
+
for (auto &listener : this->listeners_) {
|
|
131
230
|
listener->on_fw_version(fw_str);
|
|
132
231
|
}
|
|
133
232
|
|
|
134
|
-
for (uint8_t gate = 0; gate <
|
|
233
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; gate++) {
|
|
135
234
|
delay_microseconds_safe(125);
|
|
136
235
|
this->get_gate_threshold_(gate);
|
|
137
236
|
}
|
|
138
237
|
|
|
139
238
|
memcpy(&this->new_config, &this->current_config, sizeof(this->current_config));
|
|
140
|
-
if (
|
|
239
|
+
if (ld2420::get_firmware_int(this->firmware_ver_) < CALIBRATE_VERSION_MIN) {
|
|
141
240
|
this->set_operating_mode(OP_SIMPLE_MODE_STRING);
|
|
142
241
|
this->operating_selector_->publish_state(OP_SIMPLE_MODE_STRING);
|
|
143
242
|
this->set_mode_(CMD_SYSTEM_MODE_SIMPLE);
|
|
144
|
-
ESP_LOGW(TAG, "
|
|
243
|
+
ESP_LOGW(TAG, "Firmware version %s and older supports Simple Mode only", this->firmware_ver_);
|
|
145
244
|
} else {
|
|
146
245
|
this->set_mode_(CMD_SYSTEM_MODE_ENERGY);
|
|
147
246
|
this->operating_selector_->publish_state(OP_NORMAL_MODE_STRING);
|
|
@@ -151,23 +250,22 @@ void LD2420Component::setup() {
|
|
|
151
250
|
#endif
|
|
152
251
|
this->set_system_mode(this->system_mode_);
|
|
153
252
|
this->set_config_mode(false);
|
|
154
|
-
ESP_LOGCONFIG(TAG, "LD2420 setup complete.");
|
|
155
253
|
}
|
|
156
254
|
|
|
157
255
|
void LD2420Component::apply_config_action() {
|
|
158
256
|
const uint8_t checksum = calc_checksum(&this->new_config, sizeof(this->new_config));
|
|
159
257
|
if (checksum == calc_checksum(&this->current_config, sizeof(this->current_config))) {
|
|
160
|
-
|
|
258
|
+
ESP_LOGD(TAG, "No configuration change detected");
|
|
161
259
|
return;
|
|
162
260
|
}
|
|
163
|
-
|
|
261
|
+
ESP_LOGD(TAG, "Reconfiguring");
|
|
164
262
|
if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
|
|
165
|
-
ESP_LOGE(TAG,
|
|
263
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
|
166
264
|
this->mark_failed();
|
|
167
265
|
return;
|
|
168
266
|
}
|
|
169
267
|
this->set_min_max_distances_timeout(this->new_config.max_gate, this->new_config.min_gate, this->new_config.timeout);
|
|
170
|
-
for (uint8_t gate = 0; gate <
|
|
268
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; gate++) {
|
|
171
269
|
delay_microseconds_safe(125);
|
|
172
270
|
this->set_gate_threshold(gate);
|
|
173
271
|
}
|
|
@@ -178,13 +276,12 @@ void LD2420Component::apply_config_action() {
|
|
|
178
276
|
this->set_system_mode(this->system_mode_);
|
|
179
277
|
this->set_config_mode(false); // Disable config mode to save new values in LD2420 nvm
|
|
180
278
|
this->set_operating_mode(OP_NORMAL_MODE_STRING);
|
|
181
|
-
ESP_LOGCONFIG(TAG, "LD2420 reconfig complete.");
|
|
182
279
|
}
|
|
183
280
|
|
|
184
281
|
void LD2420Component::factory_reset_action() {
|
|
185
|
-
|
|
282
|
+
ESP_LOGD(TAG, "Setting factory defaults");
|
|
186
283
|
if (this->set_config_mode(true) == LD2420_ERROR_TIMEOUT) {
|
|
187
|
-
ESP_LOGE(TAG,
|
|
284
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
|
188
285
|
this->mark_failed();
|
|
189
286
|
return;
|
|
190
287
|
}
|
|
@@ -194,7 +291,7 @@ void LD2420Component::factory_reset_action() {
|
|
|
194
291
|
this->min_gate_distance_number_->state = FACTORY_MIN_GATE;
|
|
195
292
|
this->max_gate_distance_number_->state = FACTORY_MAX_GATE;
|
|
196
293
|
#endif
|
|
197
|
-
for (uint8_t gate = 0; gate <
|
|
294
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; gate++) {
|
|
198
295
|
this->new_config.move_thresh[gate] = FACTORY_MOVE_THRESH[gate];
|
|
199
296
|
this->new_config.still_thresh[gate] = FACTORY_STILL_THRESH[gate];
|
|
200
297
|
delay_microseconds_safe(125);
|
|
@@ -207,18 +304,16 @@ void LD2420Component::factory_reset_action() {
|
|
|
207
304
|
this->init_gate_config_numbers();
|
|
208
305
|
this->refresh_gate_config_numbers();
|
|
209
306
|
#endif
|
|
210
|
-
ESP_LOGCONFIG(TAG, "LD2420 factory reset complete.");
|
|
211
307
|
}
|
|
212
308
|
|
|
213
309
|
void LD2420Component::restart_module_action() {
|
|
214
|
-
|
|
310
|
+
ESP_LOGD(TAG, "Restarting");
|
|
215
311
|
this->send_module_restart();
|
|
216
312
|
this->set_timeout(250, [this]() {
|
|
217
313
|
this->set_config_mode(true);
|
|
218
|
-
this->set_system_mode(system_mode_);
|
|
314
|
+
this->set_system_mode(this->system_mode_);
|
|
219
315
|
this->set_config_mode(false);
|
|
220
316
|
});
|
|
221
|
-
ESP_LOGCONFIG(TAG, "LD2420 Restarted.");
|
|
222
317
|
}
|
|
223
318
|
|
|
224
319
|
void LD2420Component::revert_config_action() {
|
|
@@ -226,25 +321,25 @@ void LD2420Component::revert_config_action() {
|
|
|
226
321
|
#ifdef USE_NUMBER
|
|
227
322
|
this->init_gate_config_numbers();
|
|
228
323
|
#endif
|
|
229
|
-
|
|
324
|
+
ESP_LOGD(TAG, "Reverted config number edits");
|
|
230
325
|
}
|
|
231
326
|
|
|
232
327
|
void LD2420Component::loop() {
|
|
233
328
|
// If there is a active send command do not process it here, the send command call will handle it.
|
|
234
|
-
if (!get_cmd_active_()) {
|
|
235
|
-
if (!available())
|
|
329
|
+
if (!this->get_cmd_active_()) {
|
|
330
|
+
if (!this->available())
|
|
236
331
|
return;
|
|
237
332
|
static uint8_t buffer[2048];
|
|
238
333
|
static uint8_t rx_data;
|
|
239
|
-
while (available()) {
|
|
240
|
-
rx_data = read();
|
|
334
|
+
while (this->available()) {
|
|
335
|
+
rx_data = this->read();
|
|
241
336
|
this->readline_(rx_data, buffer, sizeof(buffer));
|
|
242
337
|
}
|
|
243
338
|
}
|
|
244
339
|
}
|
|
245
340
|
|
|
246
341
|
void LD2420Component::update_radar_data(uint16_t const *gate_energy, uint8_t sample_number) {
|
|
247
|
-
for (uint8_t gate = 0; gate <
|
|
342
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; ++gate) {
|
|
248
343
|
this->radar_data[gate][sample_number] = gate_energy[gate];
|
|
249
344
|
}
|
|
250
345
|
this->total_sample_number_counter++;
|
|
@@ -254,7 +349,7 @@ void LD2420Component::auto_calibrate_sensitivity() {
|
|
|
254
349
|
// Calculate average and peak values for each gate
|
|
255
350
|
const float move_factor = gate_move_sensitivity_factor + 1;
|
|
256
351
|
const float still_factor = (gate_still_sensitivity_factor / 2) + 1;
|
|
257
|
-
for (uint8_t gate = 0; gate <
|
|
352
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; ++gate) {
|
|
258
353
|
uint32_t sum = 0;
|
|
259
354
|
uint16_t peak = 0;
|
|
260
355
|
|
|
@@ -283,7 +378,7 @@ void LD2420Component::auto_calibrate_sensitivity() {
|
|
|
283
378
|
}
|
|
284
379
|
|
|
285
380
|
void LD2420Component::report_gate_data() {
|
|
286
|
-
for (uint8_t gate = 0; gate <
|
|
381
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; ++gate) {
|
|
287
382
|
// Output results
|
|
288
383
|
ESP_LOGI(TAG, "Gate: %2d Avg: %5d Peak: %5d", gate, this->gate_avg[gate], this->gate_peak[gate]);
|
|
289
384
|
}
|
|
@@ -292,13 +387,13 @@ void LD2420Component::report_gate_data() {
|
|
|
292
387
|
|
|
293
388
|
void LD2420Component::set_operating_mode(const std::string &state) {
|
|
294
389
|
// If unsupported firmware ignore mode select
|
|
295
|
-
if (
|
|
296
|
-
this->current_operating_mode =
|
|
390
|
+
if (ld2420::get_firmware_int(firmware_ver_) >= CALIBRATE_VERSION_MIN) {
|
|
391
|
+
this->current_operating_mode = find_uint8(OP_MODE_BY_STR, state);
|
|
297
392
|
// Entering Auto Calibrate we need to clear the privoiuos data collection
|
|
298
393
|
this->operating_selector_->publish_state(state);
|
|
299
394
|
if (current_operating_mode == OP_CALIBRATE_MODE) {
|
|
300
395
|
this->set_calibration_(true);
|
|
301
|
-
for (uint8_t gate = 0; gate <
|
|
396
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; gate++) {
|
|
302
397
|
this->gate_avg[gate] = 0;
|
|
303
398
|
this->gate_peak[gate] = 0;
|
|
304
399
|
for (uint8_t i = 0; i < CALIBRATE_SAMPLES; i++) {
|
|
@@ -333,11 +428,12 @@ void LD2420Component::readline_(int rx_data, uint8_t *buffer, int len) {
|
|
|
333
428
|
this->set_cmd_active_(false); // Set command state to inactive after responce.
|
|
334
429
|
this->handle_ack_data_(buffer, pos);
|
|
335
430
|
pos = 0;
|
|
336
|
-
} else if ((buffer[pos - 2] == 0x0D && buffer[pos - 1] == 0x0A) &&
|
|
431
|
+
} else if ((buffer[pos - 2] == 0x0D && buffer[pos - 1] == 0x0A) &&
|
|
432
|
+
(this->get_mode_() == CMD_SYSTEM_MODE_SIMPLE)) {
|
|
337
433
|
this->handle_simple_mode_(buffer, pos);
|
|
338
434
|
pos = 0;
|
|
339
435
|
} else if ((memcmp(&buffer[pos - 4], &ENERGY_FRAME_FOOTER, sizeof(ENERGY_FRAME_FOOTER)) == 0) &&
|
|
340
|
-
(get_mode_() == CMD_SYSTEM_MODE_ENERGY)) {
|
|
436
|
+
(this->get_mode_() == CMD_SYSTEM_MODE_ENERGY)) {
|
|
341
437
|
this->handle_energy_mode_(buffer, pos);
|
|
342
438
|
pos = 0;
|
|
343
439
|
}
|
|
@@ -365,13 +461,13 @@ void LD2420Component::handle_energy_mode_(uint8_t *buffer, int len) {
|
|
|
365
461
|
}
|
|
366
462
|
|
|
367
463
|
// Resonable refresh rate for home assistant database size health
|
|
368
|
-
const int32_t current_millis =
|
|
464
|
+
const int32_t current_millis = App.get_loop_component_start_time();
|
|
369
465
|
if (current_millis - this->last_periodic_millis < REFRESH_RATE_MS)
|
|
370
466
|
return;
|
|
371
467
|
this->last_periodic_millis = current_millis;
|
|
372
468
|
for (auto &listener : this->listeners_) {
|
|
373
|
-
listener->on_distance(get_distance_());
|
|
374
|
-
listener->on_presence(get_presence_());
|
|
469
|
+
listener->on_distance(this->get_distance_());
|
|
470
|
+
listener->on_presence(this->get_presence_());
|
|
375
471
|
listener->on_energy(this->gate_energy_, sizeof(this->gate_energy_) / sizeof(this->gate_energy_[0]));
|
|
376
472
|
}
|
|
377
473
|
|
|
@@ -392,9 +488,9 @@ void LD2420Component::handle_simple_mode_(const uint8_t *inbuf, int len) {
|
|
|
392
488
|
char outbuf[bufsize]{0};
|
|
393
489
|
while (true) {
|
|
394
490
|
if (inbuf[pos - 2] == 'O' && inbuf[pos - 1] == 'F' && inbuf[pos] == 'F') {
|
|
395
|
-
set_presence_(false);
|
|
491
|
+
this->set_presence_(false);
|
|
396
492
|
} else if (inbuf[pos - 1] == 'O' && inbuf[pos] == 'N') {
|
|
397
|
-
set_presence_(true);
|
|
493
|
+
this->set_presence_(true);
|
|
398
494
|
}
|
|
399
495
|
if (inbuf[pos] >= '0' && inbuf[pos] <= '9') {
|
|
400
496
|
if (index < bufsize - 1) {
|
|
@@ -411,18 +507,18 @@ void LD2420Component::handle_simple_mode_(const uint8_t *inbuf, int len) {
|
|
|
411
507
|
}
|
|
412
508
|
outbuf[index] = '\0';
|
|
413
509
|
if (index > 1)
|
|
414
|
-
set_distance_(strtol(outbuf, &endptr, 10));
|
|
510
|
+
this->set_distance_(strtol(outbuf, &endptr, 10));
|
|
415
511
|
|
|
416
|
-
if (get_mode_() == CMD_SYSTEM_MODE_SIMPLE) {
|
|
512
|
+
if (this->get_mode_() == CMD_SYSTEM_MODE_SIMPLE) {
|
|
417
513
|
// Resonable refresh rate for home assistant database size health
|
|
418
|
-
const int32_t current_millis =
|
|
514
|
+
const int32_t current_millis = App.get_loop_component_start_time();
|
|
419
515
|
if (current_millis - this->last_normal_periodic_millis < REFRESH_RATE_MS)
|
|
420
516
|
return;
|
|
421
517
|
this->last_normal_periodic_millis = current_millis;
|
|
422
518
|
for (auto &listener : this->listeners_)
|
|
423
|
-
listener->on_distance(get_distance_());
|
|
519
|
+
listener->on_distance(this->get_distance_());
|
|
424
520
|
for (auto &listener : this->listeners_)
|
|
425
|
-
listener->on_presence(get_presence_());
|
|
521
|
+
listener->on_presence(this->get_presence_());
|
|
426
522
|
}
|
|
427
523
|
}
|
|
428
524
|
|
|
@@ -433,10 +529,10 @@ void LD2420Component::handle_ack_data_(uint8_t *buffer, int len) {
|
|
|
433
529
|
uint8_t data_element = 0;
|
|
434
530
|
uint16_t data_pos = 0;
|
|
435
531
|
if (this->cmd_reply_.length > CMD_MAX_BYTES) {
|
|
436
|
-
ESP_LOGW(TAG, "
|
|
532
|
+
ESP_LOGW(TAG, "Reply frame too long");
|
|
437
533
|
return;
|
|
438
534
|
} else if (this->cmd_reply_.length < 2) {
|
|
439
|
-
ESP_LOGW(TAG, "
|
|
535
|
+
ESP_LOGW(TAG, "Command frame too short");
|
|
440
536
|
return;
|
|
441
537
|
}
|
|
442
538
|
memcpy(&this->cmd_reply_.error, &buffer[CMD_ERROR_WORD], sizeof(this->cmd_reply_.error));
|
|
@@ -447,13 +543,13 @@ void LD2420Component::handle_ack_data_(uint8_t *buffer, int len) {
|
|
|
447
543
|
this->cmd_reply_.ack = true;
|
|
448
544
|
switch ((uint16_t) this->cmd_reply_.command) {
|
|
449
545
|
case (CMD_ENABLE_CONF):
|
|
450
|
-
|
|
546
|
+
ESP_LOGV(TAG, "Set config enable: CMD = %2X %s", CMD_ENABLE_CONF, result);
|
|
451
547
|
break;
|
|
452
548
|
case (CMD_DISABLE_CONF):
|
|
453
|
-
|
|
549
|
+
ESP_LOGV(TAG, "Set config disable: CMD = %2X %s", CMD_DISABLE_CONF, result);
|
|
454
550
|
break;
|
|
455
551
|
case (CMD_READ_REGISTER):
|
|
456
|
-
|
|
552
|
+
ESP_LOGV(TAG, "Read register: CMD = %2X %s", CMD_READ_REGISTER, result);
|
|
457
553
|
// TODO Read/Write register is not implemented yet, this will get flushed out to a proper header file
|
|
458
554
|
data_pos = 0x0A;
|
|
459
555
|
for (uint16_t index = 0; index < (CMD_REG_DATA_REPLY_SIZE * // NOLINT
|
|
@@ -465,13 +561,13 @@ void LD2420Component::handle_ack_data_(uint8_t *buffer, int len) {
|
|
|
465
561
|
}
|
|
466
562
|
break;
|
|
467
563
|
case (CMD_WRITE_REGISTER):
|
|
468
|
-
|
|
564
|
+
ESP_LOGV(TAG, "Write register: CMD = %2X %s", CMD_WRITE_REGISTER, result);
|
|
469
565
|
break;
|
|
470
566
|
case (CMD_WRITE_ABD_PARAM):
|
|
471
|
-
|
|
567
|
+
ESP_LOGV(TAG, "Write gate parameter(s): %2X %s", CMD_WRITE_ABD_PARAM, result);
|
|
472
568
|
break;
|
|
473
569
|
case (CMD_READ_ABD_PARAM):
|
|
474
|
-
|
|
570
|
+
ESP_LOGV(TAG, "Read gate parameter(s): %2X %s", CMD_READ_ABD_PARAM, result);
|
|
475
571
|
data_pos = CMD_ABD_DATA_REPLY_START;
|
|
476
572
|
for (uint16_t index = 0; index < (CMD_ABD_DATA_REPLY_SIZE * // NOLINT
|
|
477
573
|
((buffer[CMD_FRAME_DATA_LENGTH] - 4) / CMD_ABD_DATA_REPLY_SIZE));
|
|
@@ -483,11 +579,11 @@ void LD2420Component::handle_ack_data_(uint8_t *buffer, int len) {
|
|
|
483
579
|
}
|
|
484
580
|
break;
|
|
485
581
|
case (CMD_WRITE_SYS_PARAM):
|
|
486
|
-
|
|
582
|
+
ESP_LOGV(TAG, "Set system parameter(s): %2X %s", CMD_WRITE_SYS_PARAM, result);
|
|
487
583
|
break;
|
|
488
584
|
case (CMD_READ_VERSION):
|
|
489
|
-
memcpy(this->
|
|
490
|
-
|
|
585
|
+
memcpy(this->firmware_ver_, &buffer[12], buffer[10]);
|
|
586
|
+
ESP_LOGV(TAG, "Firmware version: %7s %s", this->firmware_ver_, result);
|
|
491
587
|
break;
|
|
492
588
|
default:
|
|
493
589
|
break;
|
|
@@ -533,7 +629,7 @@ int LD2420Component::send_cmd_from_array(CmdFrameT frame) {
|
|
|
533
629
|
}
|
|
534
630
|
|
|
535
631
|
while (!this->cmd_reply_.ack) {
|
|
536
|
-
while (available()) {
|
|
632
|
+
while (this->available()) {
|
|
537
633
|
this->readline_(read(), ack_buffer, sizeof(ack_buffer));
|
|
538
634
|
}
|
|
539
635
|
delay_microseconds_safe(1450);
|
|
@@ -548,7 +644,7 @@ int LD2420Component::send_cmd_from_array(CmdFrameT frame) {
|
|
|
548
644
|
if (this->cmd_reply_.ack)
|
|
549
645
|
retry = 0;
|
|
550
646
|
if (this->cmd_reply_.error > 0)
|
|
551
|
-
handle_cmd_error(error);
|
|
647
|
+
this->handle_cmd_error(error);
|
|
552
648
|
}
|
|
553
649
|
return error;
|
|
554
650
|
}
|
|
@@ -563,7 +659,7 @@ uint8_t LD2420Component::set_config_mode(bool enable) {
|
|
|
563
659
|
cmd_frame.data_length += sizeof(CMD_PROTOCOL_VER);
|
|
564
660
|
}
|
|
565
661
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
566
|
-
|
|
662
|
+
ESP_LOGV(TAG, "Sending set config %s command: %2X", enable ? "enable" : "disable", cmd_frame.command);
|
|
567
663
|
return this->send_cmd_from_array(cmd_frame);
|
|
568
664
|
}
|
|
569
665
|
|
|
@@ -576,7 +672,7 @@ void LD2420Component::ld2420_restart() {
|
|
|
576
672
|
cmd_frame.header = CMD_FRAME_HEADER;
|
|
577
673
|
cmd_frame.command = CMD_RESTART;
|
|
578
674
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
579
|
-
|
|
675
|
+
ESP_LOGV(TAG, "Sending restart command: %2X", cmd_frame.command);
|
|
580
676
|
this->send_cmd_from_array(cmd_frame);
|
|
581
677
|
}
|
|
582
678
|
|
|
@@ -588,7 +684,7 @@ void LD2420Component::get_reg_value_(uint16_t reg) {
|
|
|
588
684
|
cmd_frame.data[1] = reg;
|
|
589
685
|
cmd_frame.data_length += 2;
|
|
590
686
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
591
|
-
|
|
687
|
+
ESP_LOGV(TAG, "Sending read register %4X command: %2X", reg, cmd_frame.command);
|
|
592
688
|
this->send_cmd_from_array(cmd_frame);
|
|
593
689
|
}
|
|
594
690
|
|
|
@@ -602,11 +698,11 @@ void LD2420Component::set_reg_value(uint16_t reg, uint16_t value) {
|
|
|
602
698
|
memcpy(&cmd_frame.data[cmd_frame.data_length], &value, sizeof(CMD_REG_DATA_REPLY_SIZE));
|
|
603
699
|
cmd_frame.data_length += 2;
|
|
604
700
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
605
|
-
|
|
701
|
+
ESP_LOGV(TAG, "Sending write register %4X command: %2X data = %4X", reg, cmd_frame.command, value);
|
|
606
702
|
this->send_cmd_from_array(cmd_frame);
|
|
607
703
|
}
|
|
608
704
|
|
|
609
|
-
void LD2420Component::handle_cmd_error(uint8_t error) {
|
|
705
|
+
void LD2420Component::handle_cmd_error(uint8_t error) { ESP_LOGE(TAG, "Command failed: %s", ERR_MESSAGE[error]); }
|
|
610
706
|
|
|
611
707
|
int LD2420Component::get_gate_threshold_(uint8_t gate) {
|
|
612
708
|
uint8_t error;
|
|
@@ -619,7 +715,7 @@ int LD2420Component::get_gate_threshold_(uint8_t gate) {
|
|
|
619
715
|
memcpy(&cmd_frame.data[cmd_frame.data_length], &CMD_GATE_STILL_THRESH[gate], sizeof(CMD_GATE_STILL_THRESH[gate]));
|
|
620
716
|
cmd_frame.data_length += 2;
|
|
621
717
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
622
|
-
|
|
718
|
+
ESP_LOGV(TAG, "Sending read gate %d high/low threshold command: %2X", gate, cmd_frame.command);
|
|
623
719
|
error = this->send_cmd_from_array(cmd_frame);
|
|
624
720
|
if (error == 0) {
|
|
625
721
|
this->current_config.move_thresh[gate] = cmd_reply_.data[0];
|
|
@@ -644,7 +740,7 @@ int LD2420Component::get_min_max_distances_timeout_() {
|
|
|
644
740
|
sizeof(CMD_TIMEOUT_REG)); // Register: global delay time
|
|
645
741
|
cmd_frame.data_length += sizeof(CMD_TIMEOUT_REG);
|
|
646
742
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
647
|
-
|
|
743
|
+
ESP_LOGV(TAG, "Sending read gate min max and timeout command: %2X", cmd_frame.command);
|
|
648
744
|
error = this->send_cmd_from_array(cmd_frame);
|
|
649
745
|
if (error == 0) {
|
|
650
746
|
this->current_config.min_gate = (uint16_t) cmd_reply_.data[0];
|
|
@@ -667,9 +763,9 @@ void LD2420Component::set_system_mode(uint16_t mode) {
|
|
|
667
763
|
memcpy(&cmd_frame.data[cmd_frame.data_length], &unknown_parm, sizeof(unknown_parm));
|
|
668
764
|
cmd_frame.data_length += sizeof(unknown_parm);
|
|
669
765
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
670
|
-
|
|
766
|
+
ESP_LOGV(TAG, "Sending write system mode command: %2X", cmd_frame.command);
|
|
671
767
|
if (this->send_cmd_from_array(cmd_frame) == 0)
|
|
672
|
-
set_mode_(mode);
|
|
768
|
+
this->set_mode_(mode);
|
|
673
769
|
}
|
|
674
770
|
|
|
675
771
|
void LD2420Component::get_firmware_version_() {
|
|
@@ -679,7 +775,7 @@ void LD2420Component::get_firmware_version_() {
|
|
|
679
775
|
cmd_frame.command = CMD_READ_VERSION;
|
|
680
776
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
681
777
|
|
|
682
|
-
|
|
778
|
+
ESP_LOGV(TAG, "Sending read firmware version command: %2X", cmd_frame.command);
|
|
683
779
|
this->send_cmd_from_array(cmd_frame);
|
|
684
780
|
}
|
|
685
781
|
|
|
@@ -712,7 +808,7 @@ void LD2420Component::set_min_max_distances_timeout(uint32_t max_gate_distance,
|
|
|
712
808
|
cmd_frame.data_length += sizeof(timeout);
|
|
713
809
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
714
810
|
|
|
715
|
-
|
|
811
|
+
ESP_LOGV(TAG, "Sending write gate min max and timeout command: %2X", cmd_frame.command);
|
|
716
812
|
this->send_cmd_from_array(cmd_frame);
|
|
717
813
|
}
|
|
718
814
|
|
|
@@ -738,7 +834,7 @@ void LD2420Component::set_gate_threshold(uint8_t gate) {
|
|
|
738
834
|
sizeof(this->new_config.still_thresh[gate]));
|
|
739
835
|
cmd_frame.data_length += sizeof(this->new_config.still_thresh[gate]);
|
|
740
836
|
cmd_frame.footer = CMD_FRAME_FOOTER;
|
|
741
|
-
|
|
837
|
+
ESP_LOGV(TAG, "Sending set gate %4X sensitivity command: %2X", gate, cmd_frame.command);
|
|
742
838
|
this->send_cmd_from_array(cmd_frame);
|
|
743
839
|
}
|
|
744
840
|
|
|
@@ -756,7 +852,7 @@ void LD2420Component::init_gate_config_numbers() {
|
|
|
756
852
|
this->gate_move_sensitivity_factor_number_->publish_state(this->gate_move_sensitivity_factor);
|
|
757
853
|
if (this->gate_still_sensitivity_factor_number_ != nullptr)
|
|
758
854
|
this->gate_still_sensitivity_factor_number_->publish_state(this->gate_still_sensitivity_factor);
|
|
759
|
-
for (uint8_t gate = 0; gate <
|
|
855
|
+
for (uint8_t gate = 0; gate < TOTAL_GATES; gate++) {
|
|
760
856
|
if (this->gate_still_threshold_numbers_[gate] != nullptr) {
|
|
761
857
|
this->gate_still_threshold_numbers_[gate]->publish_state(
|
|
762
858
|
static_cast<uint16_t>(this->current_config.still_thresh[gate]));
|