esphome 2025.6.2__py3-none-any.whl → 2025.7.0__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 +10 -4
- 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/as3935_spi/as3935_spi.h +0 -2
- 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/esp_ldo/__init__.py +10 -8
- esphome/components/esp_ldo/esp_ldo.h +3 -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/fan/fan.cpp +4 -0
- 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 +39 -1
- 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.cpp +0 -1
- esphome/components/http_request/http_request_arduino.h +1 -0
- esphome/components/http_request/http_request_idf.cpp +0 -1
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/http_request/update/http_request_update.cpp +35 -16
- 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/__init__.py +1 -1
- 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/json/__init__.py +1 -1
- esphome/components/json/json_util.cpp +56 -63
- 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/binary_sensor/ld2420_binary_sensor.cpp +2 -2
- esphome/components/ld2420/button/reconfig_buttons.cpp +1 -1
- esphome/components/ld2420/ld2420.cpp +252 -147
- esphome/components/ld2420/ld2420.h +52 -126
- esphome/components/ld2420/number/__init__.py +2 -2
- esphome/components/ld2420/number/gate_config_number.cpp +1 -1
- esphome/components/ld2420/select/operating_mode_select.cpp +1 -1
- esphome/components/ld2420/sensor/__init__.py +6 -2
- esphome/components/ld2420/sensor/ld2420_sensor.cpp +2 -2
- esphome/components/ld2420/sensor/ld2420_sensor.h +1 -1
- esphome/components/ld2420/text_sensor/text_sensor.cpp +2 -2
- 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_json_schema.cpp +17 -16
- 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/lvgl/widgets/meter.py +20 -13
- 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_alarm_control_panel.cpp +2 -1
- 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_binary_sensor.cpp +1 -0
- esphome/components/mqtt/mqtt_button.cpp +4 -1
- esphome/components/mqtt/mqtt_client.cpp +17 -9
- esphome/components/mqtt/mqtt_client.h +8 -3
- esphome/components/mqtt/mqtt_climate.cpp +6 -4
- esphome/components/mqtt/mqtt_component.cpp +3 -1
- esphome/components/mqtt/mqtt_cover.cpp +1 -0
- esphome/components/mqtt/mqtt_date.cpp +4 -3
- esphome/components/mqtt/mqtt_datetime.cpp +7 -6
- esphome/components/mqtt/mqtt_event.cpp +6 -3
- esphome/components/mqtt/mqtt_fan.cpp +1 -0
- esphome/components/mqtt/mqtt_light.cpp +8 -4
- esphome/components/mqtt/mqtt_lock.cpp +3 -1
- esphome/components/mqtt/mqtt_number.cpp +1 -0
- esphome/components/mqtt/mqtt_select.cpp +2 -1
- esphome/components/mqtt/mqtt_sensor.cpp +3 -1
- esphome/components/mqtt/mqtt_switch.cpp +3 -1
- esphome/components/mqtt/mqtt_text.cpp +1 -0
- esphome/components/mqtt/mqtt_text_sensor.cpp +3 -1
- esphome/components/mqtt/mqtt_time.cpp +4 -3
- esphome/components/mqtt/mqtt_update.cpp +1 -0
- esphome/components/mqtt/mqtt_valve.cpp +3 -1
- esphome/components/ms8607/ms8607.cpp +1 -1
- 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 +9 -1
- esphome/components/online_image/online_image.cpp +17 -7
- esphome/components/online_image/online_image.h +10 -2
- esphome/components/opentherm/opentherm.cpp +7 -12
- esphome/components/opentherm/output/output.cpp +1 -1
- 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.cpp +2 -2
- 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 +81 -21
- 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 +1 -5
- 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 +324 -439
- 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 +164 -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 +169 -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 +156 -22
- 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 +165 -105
- 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/platformio_api.py +2 -0
- esphome/wizard.py +17 -4
- esphome/writer.py +44 -3
- esphome/yaml_util.py +0 -2
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/METADATA +10 -9
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/RECORD +639 -580
- 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.2.dist-info → esphome-2025.7.0.dist-info}/WHEEL +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0.dist-info}/top_level.txt +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
#include <iomanip>
|
|
4
|
-
#include <map>
|
|
5
3
|
#include "esphome/components/uart/uart.h"
|
|
6
4
|
#include "esphome/core/component.h"
|
|
7
5
|
#include "esphome/core/defines.h"
|
|
8
6
|
#include "esphome/core/helpers.h"
|
|
9
7
|
#include "esphome/core/preferences.h"
|
|
8
|
+
#include <limits>
|
|
9
|
+
#include <cmath>
|
|
10
10
|
#ifdef USE_SENSOR
|
|
11
11
|
#include "esphome/components/sensor/sensor.h"
|
|
12
12
|
#endif
|
|
@@ -38,10 +38,18 @@ namespace ld2450 {
|
|
|
38
38
|
|
|
39
39
|
// Constants
|
|
40
40
|
static const uint8_t DEFAULT_PRESENCE_TIMEOUT = 5; // Timeout to reset presense status 5 sec.
|
|
41
|
-
static const uint8_t MAX_LINE_LENGTH =
|
|
41
|
+
static const uint8_t MAX_LINE_LENGTH = 41; // Max characters for serial buffer
|
|
42
42
|
static const uint8_t MAX_TARGETS = 3; // Max 3 Targets in LD2450
|
|
43
43
|
static const uint8_t MAX_ZONES = 3; // Max 3 Zones in LD2450
|
|
44
44
|
|
|
45
|
+
enum Direction : uint8_t {
|
|
46
|
+
DIRECTION_APPROACHING = 0,
|
|
47
|
+
DIRECTION_MOVING_AWAY = 1,
|
|
48
|
+
DIRECTION_STATIONARY = 2,
|
|
49
|
+
DIRECTION_NA = 3,
|
|
50
|
+
DIRECTION_UNDEFINED = 4,
|
|
51
|
+
};
|
|
52
|
+
|
|
45
53
|
// Target coordinate struct
|
|
46
54
|
struct Target {
|
|
47
55
|
int16_t x;
|
|
@@ -66,63 +74,23 @@ struct ZoneOfNumbers {
|
|
|
66
74
|
};
|
|
67
75
|
#endif
|
|
68
76
|
|
|
69
|
-
enum BaudRateStructure : uint8_t {
|
|
70
|
-
BAUD_RATE_9600 = 1,
|
|
71
|
-
BAUD_RATE_19200 = 2,
|
|
72
|
-
BAUD_RATE_38400 = 3,
|
|
73
|
-
BAUD_RATE_57600 = 4,
|
|
74
|
-
BAUD_RATE_115200 = 5,
|
|
75
|
-
BAUD_RATE_230400 = 6,
|
|
76
|
-
BAUD_RATE_256000 = 7,
|
|
77
|
-
BAUD_RATE_460800 = 8
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
// Convert baud rate enum to int
|
|
81
|
-
static const std::map<std::string, uint8_t> BAUD_RATE_ENUM_TO_INT{
|
|
82
|
-
{"9600", BAUD_RATE_9600}, {"19200", BAUD_RATE_19200}, {"38400", BAUD_RATE_38400},
|
|
83
|
-
{"57600", BAUD_RATE_57600}, {"115200", BAUD_RATE_115200}, {"230400", BAUD_RATE_230400},
|
|
84
|
-
{"256000", BAUD_RATE_256000}, {"460800", BAUD_RATE_460800}};
|
|
85
|
-
|
|
86
|
-
// Zone type struct
|
|
87
|
-
enum ZoneTypeStructure : uint8_t { ZONE_DISABLED = 0, ZONE_DETECTION = 1, ZONE_FILTER = 2 };
|
|
88
|
-
|
|
89
|
-
// Convert zone type int to enum
|
|
90
|
-
static const std::map<ZoneTypeStructure, std::string> ZONE_TYPE_INT_TO_ENUM{
|
|
91
|
-
{ZONE_DISABLED, "Disabled"}, {ZONE_DETECTION, "Detection"}, {ZONE_FILTER, "Filter"}};
|
|
92
|
-
|
|
93
|
-
// Convert zone type enum to int
|
|
94
|
-
static const std::map<std::string, uint8_t> ZONE_TYPE_ENUM_TO_INT{
|
|
95
|
-
{"Disabled", ZONE_DISABLED}, {"Detection", ZONE_DETECTION}, {"Filter", ZONE_FILTER}};
|
|
96
|
-
|
|
97
|
-
// LD2450 serial command header & footer
|
|
98
|
-
static const uint8_t CMD_FRAME_HEADER[4] = {0xFD, 0xFC, 0xFB, 0xFA};
|
|
99
|
-
static const uint8_t CMD_FRAME_END[4] = {0x04, 0x03, 0x02, 0x01};
|
|
100
|
-
|
|
101
|
-
enum PeriodicDataStructure : uint8_t {
|
|
102
|
-
TARGET_X = 4,
|
|
103
|
-
TARGET_Y = 6,
|
|
104
|
-
TARGET_SPEED = 8,
|
|
105
|
-
TARGET_RESOLUTION = 10,
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
enum PeriodicDataValue : uint8_t { HEAD = 0xAA, END = 0x55, CHECK = 0x00 };
|
|
109
|
-
|
|
110
|
-
enum AckDataStructure : uint8_t { COMMAND = 6, COMMAND_STATUS = 7 };
|
|
111
|
-
|
|
112
77
|
class LD2450Component : public Component, public uart::UARTDevice {
|
|
113
|
-
#ifdef USE_SENSOR
|
|
114
|
-
SUB_SENSOR(target_count)
|
|
115
|
-
SUB_SENSOR(still_target_count)
|
|
116
|
-
SUB_SENSOR(moving_target_count)
|
|
117
|
-
#endif
|
|
118
78
|
#ifdef USE_BINARY_SENSOR
|
|
119
|
-
SUB_BINARY_SENSOR(target)
|
|
120
79
|
SUB_BINARY_SENSOR(moving_target)
|
|
121
80
|
SUB_BINARY_SENSOR(still_target)
|
|
81
|
+
SUB_BINARY_SENSOR(target)
|
|
82
|
+
#endif
|
|
83
|
+
#ifdef USE_SENSOR
|
|
84
|
+
SUB_SENSOR(moving_target_count)
|
|
85
|
+
SUB_SENSOR(still_target_count)
|
|
86
|
+
SUB_SENSOR(target_count)
|
|
122
87
|
#endif
|
|
123
88
|
#ifdef USE_TEXT_SENSOR
|
|
124
|
-
SUB_TEXT_SENSOR(version)
|
|
125
89
|
SUB_TEXT_SENSOR(mac)
|
|
90
|
+
SUB_TEXT_SENSOR(version)
|
|
91
|
+
#endif
|
|
92
|
+
#ifdef USE_NUMBER
|
|
93
|
+
SUB_NUMBER(presence_timeout)
|
|
126
94
|
#endif
|
|
127
95
|
#ifdef USE_SELECT
|
|
128
96
|
SUB_SELECT(baud_rate)
|
|
@@ -133,20 +101,16 @@ class LD2450Component : public Component, public uart::UARTDevice {
|
|
|
133
101
|
SUB_SWITCH(multi_target)
|
|
134
102
|
#endif
|
|
135
103
|
#ifdef USE_BUTTON
|
|
136
|
-
SUB_BUTTON(
|
|
104
|
+
SUB_BUTTON(factory_reset)
|
|
137
105
|
SUB_BUTTON(restart)
|
|
138
106
|
#endif
|
|
139
|
-
#ifdef USE_NUMBER
|
|
140
|
-
SUB_NUMBER(presence_timeout)
|
|
141
|
-
#endif
|
|
142
107
|
|
|
143
108
|
public:
|
|
144
|
-
LD2450Component();
|
|
145
109
|
void setup() override;
|
|
146
110
|
void dump_config() override;
|
|
147
111
|
void loop() override;
|
|
148
112
|
void set_presence_timeout();
|
|
149
|
-
void set_throttle(uint16_t value) { this->throttle_ = value; }
|
|
113
|
+
void set_throttle(uint16_t value) { this->throttle_ = value; }
|
|
150
114
|
void read_all_info();
|
|
151
115
|
void query_zone_info();
|
|
152
116
|
void restart_and_read_all_info();
|
|
@@ -182,10 +146,10 @@ class LD2450Component : public Component, public uart::UARTDevice {
|
|
|
182
146
|
protected:
|
|
183
147
|
void send_command_(uint8_t command_str, const uint8_t *command_value, uint8_t command_value_len);
|
|
184
148
|
void set_config_mode_(bool enable);
|
|
185
|
-
void handle_periodic_data_(
|
|
186
|
-
bool handle_ack_data_(
|
|
187
|
-
void process_zone_(
|
|
188
|
-
void readline_(int readch
|
|
149
|
+
void handle_periodic_data_();
|
|
150
|
+
bool handle_ack_data_();
|
|
151
|
+
void process_zone_();
|
|
152
|
+
void readline_(int readch);
|
|
189
153
|
void get_version_();
|
|
190
154
|
void get_mac_();
|
|
191
155
|
void query_target_tracking_mode_();
|
|
@@ -197,19 +161,46 @@ class LD2450Component : public Component, public uart::UARTDevice {
|
|
|
197
161
|
bool get_timeout_status_(uint32_t check_millis);
|
|
198
162
|
uint8_t count_targets_in_zone_(const Zone &zone, bool is_moving);
|
|
199
163
|
|
|
200
|
-
Target target_info_[MAX_TARGETS];
|
|
201
|
-
Zone zone_config_[MAX_ZONES];
|
|
202
|
-
uint8_t buffer_pos_ = 0; // where to resume processing/populating buffer
|
|
203
|
-
uint8_t buffer_data_[MAX_LINE_LENGTH];
|
|
204
164
|
uint32_t last_periodic_millis_ = 0;
|
|
205
165
|
uint32_t presence_millis_ = 0;
|
|
206
166
|
uint32_t still_presence_millis_ = 0;
|
|
207
167
|
uint32_t moving_presence_millis_ = 0;
|
|
208
168
|
uint16_t throttle_ = 0;
|
|
209
169
|
uint16_t timeout_ = 5;
|
|
170
|
+
uint8_t buffer_data_[MAX_LINE_LENGTH];
|
|
171
|
+
uint8_t mac_address_[6] = {0, 0, 0, 0, 0, 0};
|
|
172
|
+
uint8_t version_[6] = {0, 0, 0, 0, 0, 0};
|
|
173
|
+
uint8_t buffer_pos_ = 0; // where to resume processing/populating buffer
|
|
210
174
|
uint8_t zone_type_ = 0;
|
|
211
|
-
|
|
212
|
-
|
|
175
|
+
bool bluetooth_on_{false};
|
|
176
|
+
Target target_info_[MAX_TARGETS];
|
|
177
|
+
Zone zone_config_[MAX_ZONES];
|
|
178
|
+
|
|
179
|
+
// Change detection - cache previous values to avoid redundant publishes
|
|
180
|
+
// All values are initialized to sentinel values that are outside the valid sensor ranges
|
|
181
|
+
// to ensure the first real measurement is always published
|
|
182
|
+
struct CachedTargetData {
|
|
183
|
+
int16_t x = std::numeric_limits<int16_t>::min(); // -32768, outside range of -4860 to 4860
|
|
184
|
+
int16_t y = std::numeric_limits<int16_t>::min(); // -32768, outside range of 0 to 7560
|
|
185
|
+
int16_t speed = std::numeric_limits<int16_t>::min(); // -32768, outside practical sensor range
|
|
186
|
+
uint16_t resolution = std::numeric_limits<uint16_t>::max(); // 65535, unlikely resolution value
|
|
187
|
+
uint16_t distance = std::numeric_limits<uint16_t>::max(); // 65535, outside range of 0 to ~8990
|
|
188
|
+
Direction direction = DIRECTION_UNDEFINED; // Undefined, will differ from any real direction
|
|
189
|
+
float angle = NAN; // NAN, safe sentinel for floats
|
|
190
|
+
} cached_target_data_[MAX_TARGETS];
|
|
191
|
+
|
|
192
|
+
struct CachedZoneData {
|
|
193
|
+
uint8_t still_count = std::numeric_limits<uint8_t>::max(); // 255, unlikely zone count
|
|
194
|
+
uint8_t moving_count = std::numeric_limits<uint8_t>::max(); // 255, unlikely zone count
|
|
195
|
+
uint8_t total_count = std::numeric_limits<uint8_t>::max(); // 255, unlikely zone count
|
|
196
|
+
} cached_zone_data_[MAX_ZONES];
|
|
197
|
+
|
|
198
|
+
struct CachedGlobalData {
|
|
199
|
+
uint8_t target_count = std::numeric_limits<uint8_t>::max(); // 255, max 3 targets possible
|
|
200
|
+
uint8_t still_count = std::numeric_limits<uint8_t>::max(); // 255, max 3 targets possible
|
|
201
|
+
uint8_t moving_count = std::numeric_limits<uint8_t>::max(); // 255, max 3 targets possible
|
|
202
|
+
} cached_global_data_;
|
|
203
|
+
|
|
213
204
|
#ifdef USE_NUMBER
|
|
214
205
|
ESPPreferenceObject pref_; // only used when numbers are in use
|
|
215
206
|
ZoneOfNumbers zone_numbers_[MAX_ZONES];
|
|
@@ -2,6 +2,7 @@ import esphome.codegen as cg
|
|
|
2
2
|
from esphome.components import switch
|
|
3
3
|
import esphome.config_validation as cv
|
|
4
4
|
from esphome.const import (
|
|
5
|
+
CONF_BLUETOOTH,
|
|
5
6
|
DEVICE_CLASS_SWITCH,
|
|
6
7
|
ENTITY_CATEGORY_CONFIG,
|
|
7
8
|
ICON_BLUETOOTH,
|
|
@@ -13,7 +14,6 @@ from .. import CONF_LD2450_ID, LD2450Component, ld2450_ns
|
|
|
13
14
|
BluetoothSwitch = ld2450_ns.class_("BluetoothSwitch", switch.Switch)
|
|
14
15
|
MultiTargetSwitch = ld2450_ns.class_("MultiTargetSwitch", switch.Switch)
|
|
15
16
|
|
|
16
|
-
CONF_BLUETOOTH = "bluetooth"
|
|
17
17
|
CONF_MULTI_TARGET = "multi_target"
|
|
18
18
|
|
|
19
19
|
CONFIG_SCHEMA = {
|
|
@@ -3,28 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
#ifdef USE_ESP32
|
|
5
5
|
|
|
6
|
-
#ifdef USE_ARDUINO
|
|
7
|
-
#include <esp32-hal-ledc.h>
|
|
8
|
-
#endif
|
|
9
6
|
#include <driver/ledc.h>
|
|
10
|
-
|
|
11
7
|
#include <cinttypes>
|
|
12
8
|
|
|
13
9
|
#define CLOCK_FREQUENCY 80e6f
|
|
14
10
|
|
|
15
|
-
#ifdef USE_ARDUINO
|
|
16
|
-
#ifdef SOC_LEDC_SUPPORT_XTAL_CLOCK
|
|
17
|
-
#undef CLOCK_FREQUENCY
|
|
18
|
-
// starting with ESP32 Arduino 2.0.2, the 40MHz crystal is used as clock by default if supported
|
|
19
|
-
#define CLOCK_FREQUENCY 40e6f
|
|
20
|
-
#endif
|
|
21
|
-
#else
|
|
22
11
|
#ifdef SOC_LEDC_SUPPORT_APB_CLOCK
|
|
23
12
|
#define DEFAULT_CLK LEDC_USE_APB_CLK
|
|
24
13
|
#else
|
|
25
14
|
#define DEFAULT_CLK LEDC_AUTO_CLK
|
|
26
15
|
#endif
|
|
27
|
-
#endif
|
|
28
16
|
|
|
29
17
|
static const uint8_t SETUP_ATTEMPT_COUNT_MAX = 5;
|
|
30
18
|
|
|
@@ -34,7 +22,6 @@ namespace ledc {
|
|
|
34
22
|
static const char *const TAG = "ledc.output";
|
|
35
23
|
|
|
36
24
|
static const int MAX_RES_BITS = LEDC_TIMER_BIT_MAX - 1;
|
|
37
|
-
#ifdef USE_ESP_IDF
|
|
38
25
|
#if SOC_LEDC_SUPPORT_HS_MODE
|
|
39
26
|
// Only ESP32 has LEDC_HIGH_SPEED_MODE
|
|
40
27
|
inline ledc_mode_t get_speed_mode(uint8_t channel) { return channel < 8 ? LEDC_HIGH_SPEED_MODE : LEDC_LOW_SPEED_MODE; }
|
|
@@ -44,7 +31,6 @@ inline ledc_mode_t get_speed_mode(uint8_t channel) { return channel < 8 ? LEDC_H
|
|
|
44
31
|
// https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/api-reference/peripherals/ledc.html#functionality-overview
|
|
45
32
|
inline ledc_mode_t get_speed_mode(uint8_t) { return LEDC_LOW_SPEED_MODE; }
|
|
46
33
|
#endif
|
|
47
|
-
#endif
|
|
48
34
|
|
|
49
35
|
float ledc_max_frequency_for_bit_depth(uint8_t bit_depth) {
|
|
50
36
|
return static_cast<float>(CLOCK_FREQUENCY) / static_cast<float>(1 << bit_depth);
|
|
@@ -68,7 +54,6 @@ optional<uint8_t> ledc_bit_depth_for_frequency(float frequency) {
|
|
|
68
54
|
return {};
|
|
69
55
|
}
|
|
70
56
|
|
|
71
|
-
#ifdef USE_ESP_IDF
|
|
72
57
|
esp_err_t configure_timer_frequency(ledc_mode_t speed_mode, ledc_timer_t timer_num, ledc_channel_t chan_num,
|
|
73
58
|
uint8_t channel, uint8_t &bit_depth, float frequency) {
|
|
74
59
|
bit_depth = *ledc_bit_depth_for_frequency(frequency);
|
|
@@ -98,13 +83,10 @@ esp_err_t configure_timer_frequency(ledc_mode_t speed_mode, ledc_timer_t timer_n
|
|
|
98
83
|
|
|
99
84
|
return init_result;
|
|
100
85
|
}
|
|
101
|
-
#endif
|
|
102
86
|
|
|
103
|
-
#ifdef USE_ESP_IDF
|
|
104
87
|
constexpr int ledc_angle_to_htop(float angle, uint8_t bit_depth) {
|
|
105
88
|
return static_cast<int>(angle * ((1U << bit_depth) - 1) / 360.0f);
|
|
106
89
|
}
|
|
107
|
-
#endif // USE_ESP_IDF
|
|
108
90
|
|
|
109
91
|
void LEDCOutput::write_state(float state) {
|
|
110
92
|
if (!this->initialized_) {
|
|
@@ -120,10 +102,6 @@ void LEDCOutput::write_state(float state) {
|
|
|
120
102
|
const float duty_rounded = roundf(state * max_duty);
|
|
121
103
|
auto duty = static_cast<uint32_t>(duty_rounded);
|
|
122
104
|
ESP_LOGV(TAG, "Setting duty: %" PRIu32 " on channel %u", duty, this->channel_);
|
|
123
|
-
#ifdef USE_ARDUINO
|
|
124
|
-
ledcWrite(this->channel_, duty);
|
|
125
|
-
#endif
|
|
126
|
-
#ifdef USE_ESP_IDF
|
|
127
105
|
auto speed_mode = get_speed_mode(this->channel_);
|
|
128
106
|
auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
|
|
129
107
|
int hpoint = ledc_angle_to_htop(this->phase_angle_, this->bit_depth_);
|
|
@@ -135,18 +113,10 @@ void LEDCOutput::write_state(float state) {
|
|
|
135
113
|
ledc_set_duty_with_hpoint(speed_mode, chan_num, duty, hpoint);
|
|
136
114
|
ledc_update_duty(speed_mode, chan_num);
|
|
137
115
|
}
|
|
138
|
-
#endif
|
|
139
116
|
}
|
|
140
117
|
|
|
141
118
|
void LEDCOutput::setup() {
|
|
142
119
|
ESP_LOGCONFIG(TAG, "Running setup");
|
|
143
|
-
#ifdef USE_ARDUINO
|
|
144
|
-
this->update_frequency(this->frequency_);
|
|
145
|
-
this->turn_off();
|
|
146
|
-
// Attach pin after setting default value
|
|
147
|
-
ledcAttachPin(this->pin_->get_pin(), this->channel_);
|
|
148
|
-
#endif
|
|
149
|
-
#ifdef USE_ESP_IDF
|
|
150
120
|
auto speed_mode = get_speed_mode(this->channel_);
|
|
151
121
|
auto timer_num = static_cast<ledc_timer_t>((this->channel_ % 8) / 2);
|
|
152
122
|
auto chan_num = static_cast<ledc_channel_t>(this->channel_ % 8);
|
|
@@ -175,7 +145,6 @@ void LEDCOutput::setup() {
|
|
|
175
145
|
ledc_channel_config(&chan_conf);
|
|
176
146
|
this->initialized_ = true;
|
|
177
147
|
this->status_clear_error();
|
|
178
|
-
#endif
|
|
179
148
|
}
|
|
180
149
|
|
|
181
150
|
void LEDCOutput::dump_config() {
|
|
@@ -208,38 +177,7 @@ void LEDCOutput::update_frequency(float frequency) {
|
|
|
208
177
|
}
|
|
209
178
|
this->bit_depth_ = bit_depth_opt.value_or(8);
|
|
210
179
|
this->frequency_ = frequency;
|
|
211
|
-
#ifdef USE_ARDUINO
|
|
212
|
-
ESP_LOGV(TAG, "Using Arduino API - Trying to define channel, frequency and bit depth");
|
|
213
|
-
u_int32_t configured_frequency = 0;
|
|
214
180
|
|
|
215
|
-
// Configure LEDC channel, frequency and bit depth with fallback
|
|
216
|
-
int attempt_count_max = SETUP_ATTEMPT_COUNT_MAX;
|
|
217
|
-
while (attempt_count_max > 0 && configured_frequency == 0) {
|
|
218
|
-
ESP_LOGV(TAG, "Initializing channel %u with frequency %.1f and bit depth of %u", this->channel_, this->frequency_,
|
|
219
|
-
this->bit_depth_);
|
|
220
|
-
configured_frequency = ledcSetup(this->channel_, frequency, this->bit_depth_);
|
|
221
|
-
if (configured_frequency != 0) {
|
|
222
|
-
this->initialized_ = true;
|
|
223
|
-
this->status_clear_error();
|
|
224
|
-
ESP_LOGV(TAG, "Configured frequency: %u with bit depth: %u", configured_frequency, this->bit_depth_);
|
|
225
|
-
} else {
|
|
226
|
-
ESP_LOGW(TAG, "Unable to initialize channel %u with frequency %.1f and bit depth of %u", this->channel_,
|
|
227
|
-
this->frequency_, this->bit_depth_);
|
|
228
|
-
// try again with a lower bit depth
|
|
229
|
-
this->bit_depth_--;
|
|
230
|
-
}
|
|
231
|
-
attempt_count_max--;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
if (configured_frequency == 0) {
|
|
235
|
-
ESP_LOGE(TAG, "Permanently failed to initialize channel %u with frequency %.1f and bit depth of %u", this->channel_,
|
|
236
|
-
this->frequency_, this->bit_depth_);
|
|
237
|
-
this->status_set_error();
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
#endif // USE_ARDUINO
|
|
242
|
-
#ifdef USE_ESP_IDF
|
|
243
181
|
if (!this->initialized_) {
|
|
244
182
|
ESP_LOGW(TAG, "Not yet initialized");
|
|
245
183
|
return;
|
|
@@ -259,7 +197,7 @@ void LEDCOutput::update_frequency(float frequency) {
|
|
|
259
197
|
}
|
|
260
198
|
|
|
261
199
|
this->status_clear_error();
|
|
262
|
-
|
|
200
|
+
|
|
263
201
|
// re-apply duty
|
|
264
202
|
this->write_state(this->duty_);
|
|
265
203
|
}
|
|
@@ -173,9 +173,9 @@ def _notify_old_style(config):
|
|
|
173
173
|
|
|
174
174
|
# The dev and latest branches will be at *least* this version, which is what matters.
|
|
175
175
|
ARDUINO_VERSIONS = {
|
|
176
|
-
"dev": (cv.Version(1,
|
|
177
|
-
"latest": (cv.Version(1,
|
|
178
|
-
"recommended": (cv.Version(1,
|
|
176
|
+
"dev": (cv.Version(1, 9, 1), "https://github.com/libretiny-eu/libretiny.git"),
|
|
177
|
+
"latest": (cv.Version(1, 9, 1), "libretiny"),
|
|
178
|
+
"recommended": (cv.Version(1, 9, 1), None),
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
|
|
@@ -264,9 +264,11 @@ async def component_to_code(config):
|
|
|
264
264
|
# force using arduino framework
|
|
265
265
|
cg.add_platformio_option("framework", "arduino")
|
|
266
266
|
cg.add_build_flag("-DUSE_ARDUINO")
|
|
267
|
+
cg.set_cpp_standard("gnu++20")
|
|
267
268
|
|
|
268
269
|
# disable library compatibility checks
|
|
269
270
|
cg.add_platformio_option("lib_ldf_mode", "off")
|
|
271
|
+
cg.add_platformio_option("lib_compat_mode", "soft")
|
|
270
272
|
# include <Arduino.h> in every file
|
|
271
273
|
cg.add_platformio_option("build_src_flags", "-include Arduino.h")
|
|
272
274
|
# dummy version code
|
|
@@ -50,6 +50,7 @@ KEY_FAMILY = "family"
|
|
|
50
50
|
|
|
51
51
|
# COMPONENTS - auto-generated! Do not modify this block.
|
|
52
52
|
COMPONENT_BK72XX = "bk72xx"
|
|
53
|
+
COMPONENT_LN882X = "ln882x"
|
|
53
54
|
COMPONENT_RTL87XX = "rtl87xx"
|
|
54
55
|
# COMPONENTS - end
|
|
55
56
|
|
|
@@ -58,6 +59,7 @@ FAMILY_BK7231N = "BK7231N"
|
|
|
58
59
|
FAMILY_BK7231Q = "BK7231Q"
|
|
59
60
|
FAMILY_BK7231T = "BK7231T"
|
|
60
61
|
FAMILY_BK7251 = "BK7251"
|
|
62
|
+
FAMILY_LN882H = "LN882H"
|
|
61
63
|
FAMILY_RTL8710B = "RTL8710B"
|
|
62
64
|
FAMILY_RTL8720C = "RTL8720C"
|
|
63
65
|
FAMILIES = [
|
|
@@ -65,6 +67,7 @@ FAMILIES = [
|
|
|
65
67
|
FAMILY_BK7231Q,
|
|
66
68
|
FAMILY_BK7231T,
|
|
67
69
|
FAMILY_BK7251,
|
|
70
|
+
FAMILY_LN882H,
|
|
68
71
|
FAMILY_RTL8710B,
|
|
69
72
|
FAMILY_RTL8720C,
|
|
70
73
|
]
|
|
@@ -73,6 +76,7 @@ FAMILY_FRIENDLY = {
|
|
|
73
76
|
FAMILY_BK7231Q: "BK7231Q",
|
|
74
77
|
FAMILY_BK7231T: "BK7231T",
|
|
75
78
|
FAMILY_BK7251: "BK7251",
|
|
79
|
+
FAMILY_LN882H: "LN882H",
|
|
76
80
|
FAMILY_RTL8710B: "RTL8710B",
|
|
77
81
|
FAMILY_RTL8720C: "RTL8720C",
|
|
78
82
|
}
|
|
@@ -81,6 +85,7 @@ FAMILY_COMPONENT = {
|
|
|
81
85
|
FAMILY_BK7231Q: COMPONENT_BK72XX,
|
|
82
86
|
FAMILY_BK7231T: COMPONENT_BK72XX,
|
|
83
87
|
FAMILY_BK7251: COMPONENT_BK72XX,
|
|
88
|
+
FAMILY_LN882H: COMPONENT_LN882X,
|
|
84
89
|
FAMILY_RTL8710B: COMPONENT_RTL87XX,
|
|
85
90
|
FAMILY_RTL8720C: COMPONENT_RTL87XX,
|
|
86
91
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#include "esphome/core/helpers.h"
|
|
2
|
+
|
|
3
|
+
#ifdef USE_LIBRETINY
|
|
4
|
+
|
|
5
|
+
#include "esphome/core/hal.h"
|
|
6
|
+
|
|
7
|
+
#include <WiFi.h> // for macAddress()
|
|
8
|
+
|
|
9
|
+
namespace esphome {
|
|
10
|
+
|
|
11
|
+
uint32_t random_uint32() { return rand(); }
|
|
12
|
+
|
|
13
|
+
bool random_bytes(uint8_t *data, size_t len) {
|
|
14
|
+
lt_rand_bytes(data, len);
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
Mutex::Mutex() { handle_ = xSemaphoreCreateMutex(); }
|
|
19
|
+
Mutex::~Mutex() {}
|
|
20
|
+
void Mutex::lock() { xSemaphoreTake(this->handle_, portMAX_DELAY); }
|
|
21
|
+
bool Mutex::try_lock() { return xSemaphoreTake(this->handle_, 0) == pdTRUE; }
|
|
22
|
+
void Mutex::unlock() { xSemaphoreGive(this->handle_); }
|
|
23
|
+
|
|
24
|
+
// only affects the executing core
|
|
25
|
+
// so should not be used as a mutex lock, only to get accurate timing
|
|
26
|
+
IRAM_ATTR InterruptLock::InterruptLock() { portDISABLE_INTERRUPTS(); }
|
|
27
|
+
IRAM_ATTR InterruptLock::~InterruptLock() { portENABLE_INTERRUPTS(); }
|
|
28
|
+
|
|
29
|
+
void get_mac_address_raw(uint8_t *mac) { // NOLINT(readability-non-const-parameter)
|
|
30
|
+
WiFi.macAddress(mac);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
} // namespace esphome
|
|
34
|
+
|
|
35
|
+
#endif // USE_LIBRETINY
|
|
@@ -10,9 +10,11 @@ namespace libretiny {
|
|
|
10
10
|
static const char *const TAG = "lt.component";
|
|
11
11
|
|
|
12
12
|
void LTComponent::dump_config() {
|
|
13
|
-
ESP_LOGCONFIG(TAG,
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
ESP_LOGCONFIG(TAG,
|
|
14
|
+
"LibreTiny:\n"
|
|
15
|
+
" Version: %s\n"
|
|
16
|
+
" Loglevel: %u",
|
|
17
|
+
LT_BANNER_STR + 10, LT_LOGLEVEL);
|
|
16
18
|
|
|
17
19
|
#ifdef USE_TEXT_SENSOR
|
|
18
20
|
if (this->version_ != nullptr) {
|
|
@@ -38,8 +38,8 @@ from esphome.const import (
|
|
|
38
38
|
CONF_WHITE,
|
|
39
39
|
)
|
|
40
40
|
from esphome.core import CORE, coroutine_with_priority
|
|
41
|
+
from esphome.core.entity_helpers import entity_duplicate_validator, setup_entity
|
|
41
42
|
from esphome.cpp_generator import MockObjClass
|
|
42
|
-
from esphome.cpp_helpers import setup_entity
|
|
43
43
|
|
|
44
44
|
from .automation import LIGHT_STATE_SCHEMA
|
|
45
45
|
from .effects import (
|
|
@@ -110,6 +110,8 @@ LIGHT_SCHEMA = (
|
|
|
110
110
|
)
|
|
111
111
|
)
|
|
112
112
|
|
|
113
|
+
LIGHT_SCHEMA.add_extra(entity_duplicate_validator("light"))
|
|
114
|
+
|
|
113
115
|
BINARY_LIGHT_SCHEMA = LIGHT_SCHEMA.extend(
|
|
114
116
|
{
|
|
115
117
|
cv.Optional(CONF_EFFECTS): validate_effects(BINARY_EFFECTS),
|
|
@@ -207,7 +209,7 @@ def validate_color_temperature_channels(value):
|
|
|
207
209
|
|
|
208
210
|
|
|
209
211
|
async def setup_light_core_(light_var, output_var, config):
|
|
210
|
-
await setup_entity(light_var, config)
|
|
212
|
+
await setup_entity(light_var, config, "light")
|
|
211
213
|
|
|
212
214
|
cg.add(light_var.set_restore_mode(config[CONF_RESTORE_MODE]))
|
|
213
215
|
|
|
@@ -97,12 +97,12 @@ class AddressableLight : public LightOutput, public Component {
|
|
|
97
97
|
}
|
|
98
98
|
virtual ESPColorView get_view_internal(int32_t index) const = 0;
|
|
99
99
|
|
|
100
|
-
bool effect_active_{false};
|
|
101
100
|
ESPColorCorrection correction_{};
|
|
101
|
+
LightState *state_parent_{nullptr};
|
|
102
102
|
#ifdef USE_POWER_SUPPLY
|
|
103
103
|
power_supply::PowerSupplyRequester power_;
|
|
104
104
|
#endif
|
|
105
|
-
|
|
105
|
+
bool effect_active_{false};
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
class AddressableLightTransformer : public LightTransitionTransformer {
|
|
@@ -114,9 +114,9 @@ class AddressableLightTransformer : public LightTransitionTransformer {
|
|
|
114
114
|
|
|
115
115
|
protected:
|
|
116
116
|
AddressableLight &light_;
|
|
117
|
-
Color target_color_{};
|
|
118
117
|
float last_transition_progress_{0.0f};
|
|
119
118
|
float accumulated_alpha_{0.0f};
|
|
119
|
+
Color target_color_{};
|
|
120
120
|
};
|
|
121
121
|
|
|
122
122
|
} // namespace light
|