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
|
@@ -14,7 +14,6 @@ static const uint32_t RMT_CLK_FREQ = 32000000;
|
|
|
14
14
|
static const uint32_t RMT_CLK_FREQ = 80000000;
|
|
15
15
|
#endif
|
|
16
16
|
|
|
17
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
18
17
|
static bool IRAM_ATTR HOT rmt_callback(rmt_channel_handle_t channel, const rmt_rx_done_event_data_t *event, void *arg) {
|
|
19
18
|
RemoteReceiverComponentStore *store = (RemoteReceiverComponentStore *) arg;
|
|
20
19
|
rmt_rx_done_event_data_t *event_buffer = (rmt_rx_done_event_data_t *) (store->buffer + store->buffer_write);
|
|
@@ -37,11 +36,9 @@ static bool IRAM_ATTR HOT rmt_callback(rmt_channel_handle_t channel, const rmt_r
|
|
|
37
36
|
store->buffer_write = next_write;
|
|
38
37
|
return false;
|
|
39
38
|
}
|
|
40
|
-
#endif
|
|
41
39
|
|
|
42
40
|
void RemoteReceiverComponent::setup() {
|
|
43
41
|
ESP_LOGCONFIG(TAG, "Running setup");
|
|
44
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
45
42
|
rmt_rx_channel_config_t channel;
|
|
46
43
|
memset(&channel, 0, sizeof(channel));
|
|
47
44
|
channel.clk_src = RMT_CLK_SRC_DEFAULT;
|
|
@@ -105,62 +102,11 @@ void RemoteReceiverComponent::setup() {
|
|
|
105
102
|
this->mark_failed();
|
|
106
103
|
return;
|
|
107
104
|
}
|
|
108
|
-
#else
|
|
109
|
-
this->pin_->setup();
|
|
110
|
-
rmt_config_t rmt{};
|
|
111
|
-
this->config_rmt(rmt);
|
|
112
|
-
rmt.gpio_num = gpio_num_t(this->pin_->get_pin());
|
|
113
|
-
rmt.rmt_mode = RMT_MODE_RX;
|
|
114
|
-
if (this->filter_us_ == 0) {
|
|
115
|
-
rmt.rx_config.filter_en = false;
|
|
116
|
-
} else {
|
|
117
|
-
rmt.rx_config.filter_en = true;
|
|
118
|
-
rmt.rx_config.filter_ticks_thresh = static_cast<uint8_t>(
|
|
119
|
-
std::min(this->from_microseconds_(this->filter_us_) * this->clock_divider_, (uint32_t) 255));
|
|
120
|
-
}
|
|
121
|
-
rmt.rx_config.idle_threshold =
|
|
122
|
-
static_cast<uint16_t>(std::min(this->from_microseconds_(this->idle_us_), (uint32_t) 65535));
|
|
123
|
-
|
|
124
|
-
esp_err_t error = rmt_config(&rmt);
|
|
125
|
-
if (error != ESP_OK) {
|
|
126
|
-
this->error_code_ = error;
|
|
127
|
-
this->error_string_ = "in rmt_config";
|
|
128
|
-
this->mark_failed();
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
error = rmt_driver_install(this->channel_, this->buffer_size_, 0);
|
|
133
|
-
if (error != ESP_OK) {
|
|
134
|
-
this->error_code_ = error;
|
|
135
|
-
if (error == ESP_ERR_INVALID_STATE) {
|
|
136
|
-
this->error_string_ = str_sprintf("RMT channel %i is already in use by another component", this->channel_);
|
|
137
|
-
} else {
|
|
138
|
-
this->error_string_ = "in rmt_driver_install";
|
|
139
|
-
}
|
|
140
|
-
this->mark_failed();
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
error = rmt_get_ringbuf_handle(this->channel_, &this->ringbuf_);
|
|
144
|
-
if (error != ESP_OK) {
|
|
145
|
-
this->error_code_ = error;
|
|
146
|
-
this->error_string_ = "in rmt_get_ringbuf_handle";
|
|
147
|
-
this->mark_failed();
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
error = rmt_rx_start(this->channel_, true);
|
|
151
|
-
if (error != ESP_OK) {
|
|
152
|
-
this->error_code_ = error;
|
|
153
|
-
this->error_string_ = "in rmt_rx_start";
|
|
154
|
-
this->mark_failed();
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
#endif
|
|
158
105
|
}
|
|
159
106
|
|
|
160
107
|
void RemoteReceiverComponent::dump_config() {
|
|
161
108
|
ESP_LOGCONFIG(TAG, "Remote Receiver:");
|
|
162
109
|
LOG_PIN(" Pin: ", this->pin_);
|
|
163
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
164
110
|
ESP_LOGCONFIG(TAG,
|
|
165
111
|
" Clock resolution: %" PRIu32 " hz\n"
|
|
166
112
|
" RMT symbols: %" PRIu32 "\n"
|
|
@@ -172,22 +118,6 @@ void RemoteReceiverComponent::dump_config() {
|
|
|
172
118
|
this->clock_resolution_, this->rmt_symbols_, this->filter_symbols_, this->receive_symbols_,
|
|
173
119
|
this->tolerance_, (this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%",
|
|
174
120
|
this->filter_us_, this->idle_us_);
|
|
175
|
-
#else
|
|
176
|
-
if (this->pin_->digital_read()) {
|
|
177
|
-
ESP_LOGW(TAG, "Remote Receiver Signal starts with a HIGH value. Usually this means you have to "
|
|
178
|
-
"invert the signal using 'inverted: True' in the pin schema!");
|
|
179
|
-
}
|
|
180
|
-
ESP_LOGCONFIG(TAG,
|
|
181
|
-
" Channel: %d\n"
|
|
182
|
-
" RMT memory blocks: %d\n"
|
|
183
|
-
" Clock divider: %u\n"
|
|
184
|
-
" Tolerance: %" PRIu32 "%s\n"
|
|
185
|
-
" Filter out pulses shorter than: %" PRIu32 " us\n"
|
|
186
|
-
" Signal is done after %" PRIu32 " us of no changes",
|
|
187
|
-
this->channel_, this->mem_block_num_, this->clock_divider_, this->tolerance_,
|
|
188
|
-
(this->tolerance_mode_ == remote_base::TOLERANCE_MODE_TIME) ? " us" : "%", this->filter_us_,
|
|
189
|
-
this->idle_us_);
|
|
190
|
-
#endif
|
|
191
121
|
if (this->is_failed()) {
|
|
192
122
|
ESP_LOGE(TAG, "Configuring RMT driver failed: %s (%s)", esp_err_to_name(this->error_code_),
|
|
193
123
|
this->error_string_.c_str());
|
|
@@ -195,7 +125,6 @@ void RemoteReceiverComponent::dump_config() {
|
|
|
195
125
|
}
|
|
196
126
|
|
|
197
127
|
void RemoteReceiverComponent::loop() {
|
|
198
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
199
128
|
if (this->store_.error != ESP_OK) {
|
|
200
129
|
ESP_LOGE(TAG, "Receive error");
|
|
201
130
|
this->error_code_ = this->store_.error;
|
|
@@ -221,25 +150,9 @@ void RemoteReceiverComponent::loop() {
|
|
|
221
150
|
this->call_listeners_dumpers_();
|
|
222
151
|
}
|
|
223
152
|
}
|
|
224
|
-
#else
|
|
225
|
-
size_t len = 0;
|
|
226
|
-
auto *item = (rmt_item32_t *) xRingbufferReceive(this->ringbuf_, &len, 0);
|
|
227
|
-
if (item != nullptr) {
|
|
228
|
-
this->decode_rmt_(item, len / sizeof(rmt_item32_t));
|
|
229
|
-
vRingbufferReturnItem(this->ringbuf_, item);
|
|
230
|
-
|
|
231
|
-
if (!this->temp_.empty()) {
|
|
232
|
-
this->call_listeners_dumpers_();
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
#endif
|
|
236
153
|
}
|
|
237
154
|
|
|
238
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
239
155
|
void RemoteReceiverComponent::decode_rmt_(rmt_symbol_word_t *item, size_t item_count) {
|
|
240
|
-
#else
|
|
241
|
-
void RemoteReceiverComponent::decode_rmt_(rmt_item32_t *item, size_t item_count) {
|
|
242
|
-
#endif
|
|
243
156
|
bool prev_level = false;
|
|
244
157
|
bool idle_level = false;
|
|
245
158
|
uint32_t prev_length = 0;
|
|
@@ -27,7 +27,7 @@ void IRAM_ATTR HOT RemoteReceiverComponentStore::gpio_intr(RemoteReceiverCompone
|
|
|
27
27
|
if (time_since_change <= arg->filter_us)
|
|
28
28
|
return;
|
|
29
29
|
|
|
30
|
-
arg->buffer[arg->buffer_write_at = next] = now;
|
|
30
|
+
arg->buffer[arg->buffer_write_at = next] = now; // NOLINT(clang-diagnostic-deprecated-volatile)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
void RemoteReceiverComponent::setup() {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
from esphome import automation, pins
|
|
2
2
|
import esphome.codegen as cg
|
|
3
3
|
from esphome.components import esp32, esp32_rmt, remote_base
|
|
4
|
+
from esphome.config_helpers import filter_source_files_from_platform
|
|
4
5
|
import esphome.config_validation as cv
|
|
5
6
|
from esphome.const import (
|
|
6
7
|
CONF_CARRIER_DUTY_PERCENT,
|
|
7
|
-
CONF_CLOCK_DIVIDER,
|
|
8
8
|
CONF_CLOCK_RESOLUTION,
|
|
9
9
|
CONF_ID,
|
|
10
10
|
CONF_INVERTED,
|
|
11
11
|
CONF_MODE,
|
|
12
12
|
CONF_OPEN_DRAIN,
|
|
13
13
|
CONF_PIN,
|
|
14
|
-
CONF_RMT_CHANNEL,
|
|
15
14
|
CONF_RMT_SYMBOLS,
|
|
16
15
|
CONF_USE_DMA,
|
|
16
|
+
PlatformFramework,
|
|
17
17
|
)
|
|
18
18
|
from esphome.core import CORE
|
|
19
19
|
|
|
@@ -38,34 +38,26 @@ CONFIG_SCHEMA = cv.Schema(
|
|
|
38
38
|
),
|
|
39
39
|
cv.Optional(CONF_CLOCK_RESOLUTION): cv.All(
|
|
40
40
|
cv.only_on_esp32,
|
|
41
|
-
cv.only_with_esp_idf,
|
|
42
41
|
esp32_rmt.validate_clock_resolution(),
|
|
43
42
|
),
|
|
44
|
-
cv.Optional(
|
|
45
|
-
cv.only_on_esp32, cv.only_with_arduino, cv.int_range(min=1, max=255)
|
|
46
|
-
),
|
|
47
|
-
cv.Optional(CONF_EOT_LEVEL): cv.All(cv.only_with_esp_idf, cv.boolean),
|
|
43
|
+
cv.Optional(CONF_EOT_LEVEL): cv.All(cv.only_on_esp32, cv.boolean),
|
|
48
44
|
cv.Optional(CONF_USE_DMA): cv.All(
|
|
49
45
|
esp32.only_on_variant(
|
|
50
46
|
supported=[esp32.const.VARIANT_ESP32S3, esp32.const.VARIANT_ESP32P4]
|
|
51
47
|
),
|
|
52
|
-
cv.only_with_esp_idf,
|
|
53
48
|
cv.boolean,
|
|
54
49
|
),
|
|
55
50
|
cv.SplitDefault(
|
|
56
51
|
CONF_RMT_SYMBOLS,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
): cv.All(cv.
|
|
66
|
-
cv.Optional(CONF_RMT_CHANNEL): cv.All(
|
|
67
|
-
cv.only_with_arduino, esp32_rmt.validate_rmt_channel(tx=True)
|
|
68
|
-
),
|
|
52
|
+
esp32=64,
|
|
53
|
+
esp32_s2=64,
|
|
54
|
+
esp32_s3=48,
|
|
55
|
+
esp32_p4=48,
|
|
56
|
+
esp32_c3=48,
|
|
57
|
+
esp32_c5=48,
|
|
58
|
+
esp32_c6=48,
|
|
59
|
+
esp32_h2=48,
|
|
60
|
+
): cv.All(cv.only_on_esp32, cv.int_range(min=2)),
|
|
69
61
|
cv.Optional(CONF_ON_TRANSMIT): automation.validate_automation(single=True),
|
|
70
62
|
cv.Optional(CONF_ON_COMPLETE): automation.validate_automation(single=True),
|
|
71
63
|
}
|
|
@@ -75,30 +67,21 @@ CONFIG_SCHEMA = cv.Schema(
|
|
|
75
67
|
async def to_code(config):
|
|
76
68
|
pin = await cg.gpio_pin_expression(config[CONF_PIN])
|
|
77
69
|
if CORE.is_esp32:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
cg.add(var.set_eot_level(config[CONF_EOT_LEVEL]))
|
|
87
|
-
else:
|
|
88
|
-
cg.add(
|
|
89
|
-
var.set_eot_level(
|
|
90
|
-
config[CONF_PIN][CONF_MODE][CONF_OPEN_DRAIN]
|
|
91
|
-
or config[CONF_PIN][CONF_INVERTED]
|
|
92
|
-
)
|
|
93
|
-
)
|
|
70
|
+
var = cg.new_Pvariable(config[CONF_ID], pin)
|
|
71
|
+
cg.add(var.set_rmt_symbols(config[CONF_RMT_SYMBOLS]))
|
|
72
|
+
if CONF_CLOCK_RESOLUTION in config:
|
|
73
|
+
cg.add(var.set_clock_resolution(config[CONF_CLOCK_RESOLUTION]))
|
|
74
|
+
if CONF_USE_DMA in config:
|
|
75
|
+
cg.add(var.set_with_dma(config[CONF_USE_DMA]))
|
|
76
|
+
if CONF_EOT_LEVEL in config:
|
|
77
|
+
cg.add(var.set_eot_level(config[CONF_EOT_LEVEL]))
|
|
94
78
|
else:
|
|
95
|
-
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
79
|
+
cg.add(
|
|
80
|
+
var.set_eot_level(
|
|
81
|
+
config[CONF_PIN][CONF_MODE][CONF_OPEN_DRAIN]
|
|
82
|
+
or config[CONF_PIN][CONF_INVERTED]
|
|
83
|
+
)
|
|
84
|
+
)
|
|
102
85
|
else:
|
|
103
86
|
var = cg.new_Pvariable(config[CONF_ID], pin)
|
|
104
87
|
await cg.register_component(var, config)
|
|
@@ -114,3 +97,19 @@ async def to_code(config):
|
|
|
114
97
|
await automation.build_automation(
|
|
115
98
|
var.get_complete_trigger(), [], on_complete_config
|
|
116
99
|
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
FILTER_SOURCE_FILES = filter_source_files_from_platform(
|
|
103
|
+
{
|
|
104
|
+
"remote_transmitter_esp32.cpp": {
|
|
105
|
+
PlatformFramework.ESP32_ARDUINO,
|
|
106
|
+
PlatformFramework.ESP32_IDF,
|
|
107
|
+
},
|
|
108
|
+
"remote_transmitter_esp8266.cpp": {PlatformFramework.ESP8266_ARDUINO},
|
|
109
|
+
"remote_transmitter_libretiny.cpp": {
|
|
110
|
+
PlatformFramework.BK72XX_ARDUINO,
|
|
111
|
+
PlatformFramework.RTL87XX_ARDUINO,
|
|
112
|
+
PlatformFramework.LN882X_ARDUINO,
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
#include <vector>
|
|
7
7
|
|
|
8
|
-
#if defined(USE_ESP32)
|
|
8
|
+
#if defined(USE_ESP32)
|
|
9
9
|
#include <driver/rmt_tx.h>
|
|
10
10
|
#endif
|
|
11
11
|
|
|
@@ -20,15 +20,7 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
|
|
20
20
|
#endif
|
|
21
21
|
{
|
|
22
22
|
public:
|
|
23
|
-
#if defined(USE_ESP32) && ESP_IDF_VERSION_MAJOR < 5
|
|
24
|
-
RemoteTransmitterComponent(InternalGPIOPin *pin, uint8_t mem_block_num = 1)
|
|
25
|
-
: remote_base::RemoteTransmitterBase(pin), remote_base::RemoteRMTChannel(mem_block_num) {}
|
|
26
|
-
|
|
27
|
-
RemoteTransmitterComponent(InternalGPIOPin *pin, rmt_channel_t channel, uint8_t mem_block_num = 1)
|
|
28
|
-
: remote_base::RemoteTransmitterBase(pin), remote_base::RemoteRMTChannel(channel, mem_block_num) {}
|
|
29
|
-
#else
|
|
30
23
|
explicit RemoteTransmitterComponent(InternalGPIOPin *pin) : remote_base::RemoteTransmitterBase(pin) {}
|
|
31
|
-
#endif
|
|
32
24
|
void setup() override;
|
|
33
25
|
|
|
34
26
|
void dump_config() override;
|
|
@@ -38,7 +30,7 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
|
|
38
30
|
|
|
39
31
|
void set_carrier_duty_percent(uint8_t carrier_duty_percent) { this->carrier_duty_percent_ = carrier_duty_percent; }
|
|
40
32
|
|
|
41
|
-
#if defined(USE_ESP32)
|
|
33
|
+
#if defined(USE_ESP32)
|
|
42
34
|
void set_with_dma(bool with_dma) { this->with_dma_ = with_dma; }
|
|
43
35
|
void set_eot_level(bool eot_level) { this->eot_level_ = eot_level; }
|
|
44
36
|
void digital_write(bool value);
|
|
@@ -65,15 +57,11 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
|
|
65
57
|
|
|
66
58
|
uint32_t current_carrier_frequency_{38000};
|
|
67
59
|
bool initialized_{false};
|
|
68
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
69
60
|
std::vector<rmt_symbol_word_t> rmt_temp_;
|
|
70
61
|
bool with_dma_{false};
|
|
71
62
|
bool eot_level_{false};
|
|
72
63
|
rmt_channel_handle_t channel_{NULL};
|
|
73
64
|
rmt_encoder_handle_t encoder_{NULL};
|
|
74
|
-
#else
|
|
75
|
-
std::vector<rmt_item32_t> rmt_temp_;
|
|
76
|
-
#endif
|
|
77
65
|
esp_err_t error_code_{ESP_OK};
|
|
78
66
|
std::string error_string_{""};
|
|
79
67
|
bool inverted_{false};
|
|
@@ -18,18 +18,10 @@ void RemoteTransmitterComponent::setup() {
|
|
|
18
18
|
|
|
19
19
|
void RemoteTransmitterComponent::dump_config() {
|
|
20
20
|
ESP_LOGCONFIG(TAG, "Remote Transmitter:");
|
|
21
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
22
21
|
ESP_LOGCONFIG(TAG,
|
|
23
22
|
" Clock resolution: %" PRIu32 " hz\n"
|
|
24
23
|
" RMT symbols: %" PRIu32,
|
|
25
24
|
this->clock_resolution_, this->rmt_symbols_);
|
|
26
|
-
#else
|
|
27
|
-
ESP_LOGCONFIG(TAG,
|
|
28
|
-
" Channel: %d\n"
|
|
29
|
-
" RMT memory blocks: %d\n"
|
|
30
|
-
" Clock divider: %u",
|
|
31
|
-
this->channel_, this->mem_block_num_, this->clock_divider_);
|
|
32
|
-
#endif
|
|
33
25
|
LOG_PIN(" Pin: ", this->pin_);
|
|
34
26
|
|
|
35
27
|
if (this->current_carrier_frequency_ != 0 && this->carrier_duty_percent_ != 100) {
|
|
@@ -42,7 +34,6 @@ void RemoteTransmitterComponent::dump_config() {
|
|
|
42
34
|
}
|
|
43
35
|
}
|
|
44
36
|
|
|
45
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
46
37
|
void RemoteTransmitterComponent::digital_write(bool value) {
|
|
47
38
|
rmt_symbol_word_t symbol = {
|
|
48
39
|
.duration0 = 1,
|
|
@@ -65,10 +56,8 @@ void RemoteTransmitterComponent::digital_write(bool value) {
|
|
|
65
56
|
this->status_set_warning();
|
|
66
57
|
}
|
|
67
58
|
}
|
|
68
|
-
#endif
|
|
69
59
|
|
|
70
60
|
void RemoteTransmitterComponent::configure_rmt_() {
|
|
71
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
72
61
|
esp_err_t error;
|
|
73
62
|
|
|
74
63
|
if (!this->initialized_) {
|
|
@@ -140,54 +129,6 @@ void RemoteTransmitterComponent::configure_rmt_() {
|
|
|
140
129
|
this->mark_failed();
|
|
141
130
|
return;
|
|
142
131
|
}
|
|
143
|
-
#else
|
|
144
|
-
rmt_config_t c{};
|
|
145
|
-
|
|
146
|
-
this->config_rmt(c);
|
|
147
|
-
c.rmt_mode = RMT_MODE_TX;
|
|
148
|
-
c.gpio_num = gpio_num_t(this->pin_->get_pin());
|
|
149
|
-
c.tx_config.loop_en = false;
|
|
150
|
-
|
|
151
|
-
if (this->current_carrier_frequency_ == 0 || this->carrier_duty_percent_ == 100) {
|
|
152
|
-
c.tx_config.carrier_en = false;
|
|
153
|
-
} else {
|
|
154
|
-
c.tx_config.carrier_en = true;
|
|
155
|
-
c.tx_config.carrier_freq_hz = this->current_carrier_frequency_;
|
|
156
|
-
c.tx_config.carrier_duty_percent = this->carrier_duty_percent_;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
c.tx_config.idle_output_en = true;
|
|
160
|
-
if (!this->inverted_) {
|
|
161
|
-
c.tx_config.carrier_level = RMT_CARRIER_LEVEL_HIGH;
|
|
162
|
-
c.tx_config.idle_level = RMT_IDLE_LEVEL_LOW;
|
|
163
|
-
} else {
|
|
164
|
-
c.tx_config.carrier_level = RMT_CARRIER_LEVEL_LOW;
|
|
165
|
-
c.tx_config.idle_level = RMT_IDLE_LEVEL_HIGH;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
esp_err_t error = rmt_config(&c);
|
|
169
|
-
if (error != ESP_OK) {
|
|
170
|
-
this->error_code_ = error;
|
|
171
|
-
this->error_string_ = "in rmt_config";
|
|
172
|
-
this->mark_failed();
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
if (!this->initialized_) {
|
|
177
|
-
error = rmt_driver_install(this->channel_, 0, 0);
|
|
178
|
-
if (error != ESP_OK) {
|
|
179
|
-
this->error_code_ = error;
|
|
180
|
-
if (error == ESP_ERR_INVALID_STATE) {
|
|
181
|
-
this->error_string_ = str_sprintf("RMT channel %i is already in use by another component", this->channel_);
|
|
182
|
-
} else {
|
|
183
|
-
this->error_string_ = "in rmt_driver_install";
|
|
184
|
-
}
|
|
185
|
-
this->mark_failed();
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
this->initialized_ = true;
|
|
189
|
-
}
|
|
190
|
-
#endif
|
|
191
132
|
}
|
|
192
133
|
|
|
193
134
|
void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
|
|
@@ -202,11 +143,7 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|
|
202
143
|
this->rmt_temp_.clear();
|
|
203
144
|
this->rmt_temp_.reserve((this->temp_.get_data().size() + 1) / 2);
|
|
204
145
|
uint32_t rmt_i = 0;
|
|
205
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
206
146
|
rmt_symbol_word_t rmt_item;
|
|
207
|
-
#else
|
|
208
|
-
rmt_item32_t rmt_item;
|
|
209
|
-
#endif
|
|
210
147
|
|
|
211
148
|
for (int32_t val : this->temp_.get_data()) {
|
|
212
149
|
bool level = val >= 0;
|
|
@@ -241,7 +178,6 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|
|
241
178
|
return;
|
|
242
179
|
}
|
|
243
180
|
this->transmit_trigger_->trigger();
|
|
244
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
245
181
|
for (uint32_t i = 0; i < send_times; i++) {
|
|
246
182
|
rmt_transmit_config_t config;
|
|
247
183
|
memset(&config, 0, sizeof(config));
|
|
@@ -263,19 +199,6 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|
|
263
199
|
if (i + 1 < send_times)
|
|
264
200
|
delayMicroseconds(send_wait);
|
|
265
201
|
}
|
|
266
|
-
#else
|
|
267
|
-
for (uint32_t i = 0; i < send_times; i++) {
|
|
268
|
-
esp_err_t error = rmt_write_items(this->channel_, this->rmt_temp_.data(), this->rmt_temp_.size(), true);
|
|
269
|
-
if (error != ESP_OK) {
|
|
270
|
-
ESP_LOGW(TAG, "rmt_write_items failed: %s", esp_err_to_name(error));
|
|
271
|
-
this->status_set_warning();
|
|
272
|
-
} else {
|
|
273
|
-
this->status_clear_warning();
|
|
274
|
-
}
|
|
275
|
-
if (i + 1 < send_times)
|
|
276
|
-
delayMicroseconds(send_wait);
|
|
277
|
-
}
|
|
278
|
-
#endif
|
|
279
202
|
this->complete_trigger_->trigger();
|
|
280
203
|
}
|
|
281
204
|
|
|
@@ -24,7 +24,6 @@ class ResistanceSensor : public Component, public sensor::Sensor {
|
|
|
24
24
|
this->process_(this->sensor_->state);
|
|
25
25
|
}
|
|
26
26
|
void dump_config() override;
|
|
27
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
28
27
|
|
|
29
28
|
protected:
|
|
30
29
|
void process_(float value);
|
|
@@ -165,8 +165,10 @@ async def to_code(config):
|
|
|
165
165
|
# Allow LDF to properly discover dependency including those in preprocessor
|
|
166
166
|
# conditionals
|
|
167
167
|
cg.add_platformio_option("lib_ldf_mode", "chain+")
|
|
168
|
+
cg.add_platformio_option("lib_compat_mode", "strict")
|
|
168
169
|
cg.add_platformio_option("board", config[CONF_BOARD])
|
|
169
170
|
cg.add_build_flag("-DUSE_RP2040")
|
|
171
|
+
cg.set_cpp_standard("gnu++20")
|
|
170
172
|
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
|
|
171
173
|
cg.add_define("ESPHOME_VARIANT", "RP2040")
|
|
172
174
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#include "esphome/core/helpers.h"
|
|
2
|
+
#include "esphome/core/defines.h"
|
|
3
|
+
|
|
4
|
+
#ifdef USE_RP2040
|
|
5
|
+
|
|
6
|
+
#include "esphome/core/hal.h"
|
|
7
|
+
|
|
8
|
+
#if defined(USE_WIFI)
|
|
9
|
+
#include <WiFi.h>
|
|
10
|
+
#endif
|
|
11
|
+
#include <hardware/structs/rosc.h>
|
|
12
|
+
#include <hardware/sync.h>
|
|
13
|
+
|
|
14
|
+
namespace esphome {
|
|
15
|
+
|
|
16
|
+
uint32_t random_uint32() {
|
|
17
|
+
uint32_t result = 0;
|
|
18
|
+
for (uint8_t i = 0; i < 32; i++) {
|
|
19
|
+
result <<= 1;
|
|
20
|
+
result |= rosc_hw->randombit;
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
bool random_bytes(uint8_t *data, size_t len) {
|
|
26
|
+
while (len-- != 0) {
|
|
27
|
+
uint8_t result = 0;
|
|
28
|
+
for (uint8_t i = 0; i < 8; i++) {
|
|
29
|
+
result <<= 1;
|
|
30
|
+
result |= rosc_hw->randombit;
|
|
31
|
+
}
|
|
32
|
+
*data++ = result;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// RP2040 doesn't have mutexes, but that shouldn't be an issue as it's single-core and non-preemptive OS.
|
|
38
|
+
Mutex::Mutex() {}
|
|
39
|
+
Mutex::~Mutex() {}
|
|
40
|
+
void Mutex::lock() {}
|
|
41
|
+
bool Mutex::try_lock() { return true; }
|
|
42
|
+
void Mutex::unlock() {}
|
|
43
|
+
|
|
44
|
+
IRAM_ATTR InterruptLock::InterruptLock() { state_ = save_and_disable_interrupts(); }
|
|
45
|
+
IRAM_ATTR InterruptLock::~InterruptLock() { restore_interrupts(state_); }
|
|
46
|
+
|
|
47
|
+
void get_mac_address_raw(uint8_t *mac) { // NOLINT(readability-non-const-parameter)
|
|
48
|
+
#ifdef USE_WIFI
|
|
49
|
+
WiFi.macAddress(mac);
|
|
50
|
+
#endif
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
} // namespace esphome
|
|
54
|
+
|
|
55
|
+
#endif // USE_RP2040
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
#include <hardware/dma.h>
|
|
10
10
|
#include <hardware/irq.h>
|
|
11
11
|
#include <hardware/pio.h>
|
|
12
|
-
#include <pico/stdlib.h>
|
|
13
12
|
#include <pico/sem.h>
|
|
13
|
+
#include <pico/stdlib.h>
|
|
14
14
|
|
|
15
15
|
namespace esphome {
|
|
16
16
|
namespace rp2040_pio_led_strip {
|
|
@@ -44,7 +44,7 @@ void RP2040PIOLEDStripLightOutput::setup() {
|
|
|
44
44
|
|
|
45
45
|
size_t buffer_size = this->get_buffer_size_();
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
RAMAllocator<uint8_t> allocator;
|
|
48
48
|
this->buf_ = allocator.allocate(buffer_size);
|
|
49
49
|
if (this->buf_ == nullptr) {
|
|
50
50
|
ESP_LOGE(TAG, "Failed to allocate buffer of size %u", buffer_size);
|
|
@@ -10,10 +10,8 @@ void RpiDpiRgb::setup() {
|
|
|
10
10
|
this->reset_display_();
|
|
11
11
|
esp_lcd_rgb_panel_config_t config{};
|
|
12
12
|
config.flags.fb_in_psram = 1;
|
|
13
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
14
13
|
config.bounce_buffer_size_px = this->width_ * 10;
|
|
15
14
|
config.num_fbs = 1;
|
|
16
|
-
#endif // ESP_IDF_VERSION_MAJOR
|
|
17
15
|
config.timings.h_res = this->width_;
|
|
18
16
|
config.timings.v_res = this->height_;
|
|
19
17
|
config.timings.hsync_pulse_width = this->hsync_pulse_width_;
|
|
@@ -47,10 +45,8 @@ void RpiDpiRgb::setup() {
|
|
|
47
45
|
ESP_LOGCONFIG(TAG, "RPI_DPI_RGB setup complete");
|
|
48
46
|
}
|
|
49
47
|
void RpiDpiRgb::loop() {
|
|
50
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
51
48
|
if (this->handle_ != nullptr)
|
|
52
49
|
esp_lcd_rgb_panel_restart(this->handle_);
|
|
53
|
-
#endif // ESP_IDF_VERSION_MAJOR
|
|
54
50
|
}
|
|
55
51
|
|
|
56
52
|
void RpiDpiRgb::draw_pixels_at(int x_start, int y_start, int w, int h, const uint8_t *ptr, display::ColorOrder order,
|
|
@@ -57,14 +57,14 @@ def validate_parent_output_config(value):
|
|
|
57
57
|
platform = value.get(CONF_PLATFORM)
|
|
58
58
|
PWM_GOOD = ["esp8266_pwm", "ledc"]
|
|
59
59
|
PWM_BAD = [
|
|
60
|
-
"ac_dimmer
|
|
60
|
+
"ac_dimmer",
|
|
61
61
|
"esp32_dac",
|
|
62
|
-
"slow_pwm",
|
|
63
62
|
"mcp4725",
|
|
64
|
-
"pca9685",
|
|
65
|
-
"tlc59208f",
|
|
66
63
|
"my9231",
|
|
64
|
+
"pca9685",
|
|
65
|
+
"slow_pwm",
|
|
67
66
|
"sm16716",
|
|
67
|
+
"tlc59208f",
|
|
68
68
|
]
|
|
69
69
|
|
|
70
70
|
if platform in PWM_BAD:
|
|
@@ -142,8 +142,10 @@ void Rtttl::stop() {
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
void Rtttl::loop() {
|
|
145
|
-
if (this->note_duration_ == 0 || this->state_ == State::STATE_STOPPED)
|
|
145
|
+
if (this->note_duration_ == 0 || this->state_ == State::STATE_STOPPED) {
|
|
146
|
+
this->disable_loop();
|
|
146
147
|
return;
|
|
148
|
+
}
|
|
147
149
|
|
|
148
150
|
#ifdef USE_SPEAKER
|
|
149
151
|
if (this->speaker_ != nullptr) {
|
|
@@ -369,6 +371,7 @@ void Rtttl::finish_() {
|
|
|
369
371
|
ESP_LOGD(TAG, "Playback finished");
|
|
370
372
|
}
|
|
371
373
|
|
|
374
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_DEBUG
|
|
372
375
|
static const LogString *state_to_string(State state) {
|
|
373
376
|
switch (state) {
|
|
374
377
|
case STATE_STOPPED:
|
|
@@ -385,12 +388,18 @@ static const LogString *state_to_string(State state) {
|
|
|
385
388
|
return LOG_STR("UNKNOWN");
|
|
386
389
|
}
|
|
387
390
|
};
|
|
391
|
+
#endif
|
|
388
392
|
|
|
389
393
|
void Rtttl::set_state_(State state) {
|
|
390
394
|
State old_state = this->state_;
|
|
391
395
|
this->state_ = state;
|
|
392
396
|
ESP_LOGV(TAG, "State changed from %s to %s", LOG_STR_ARG(state_to_string(old_state)),
|
|
393
397
|
LOG_STR_ARG(state_to_string(state)));
|
|
398
|
+
|
|
399
|
+
// Clear loop_done when transitioning from STOPPED to any other state
|
|
400
|
+
if (old_state == State::STATE_STOPPED && state != State::STATE_STOPPED) {
|
|
401
|
+
this->enable_loop();
|
|
402
|
+
}
|
|
394
403
|
}
|
|
395
404
|
|
|
396
405
|
} // namespace rtttl
|
|
@@ -48,7 +48,6 @@ class RuuviTag : public Component, public esp32_ble_tracker::ESPBTDeviceListener
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
void dump_config() override;
|
|
51
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
52
51
|
void set_humidity(sensor::Sensor *humidity) { humidity_ = humidity; }
|
|
53
52
|
void set_temperature(sensor::Sensor *temperature) { temperature_ = temperature; }
|
|
54
53
|
void set_pressure(sensor::Sensor *pressure) { pressure_ = pressure; }
|
|
@@ -33,12 +33,15 @@ class SafeModeComponent : public Component {
|
|
|
33
33
|
void write_rtc_(uint32_t val);
|
|
34
34
|
uint32_t read_rtc_();
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
// Group all 4-byte aligned members together to avoid padding
|
|
37
37
|
uint32_t safe_mode_boot_is_good_after_{60000}; ///< The amount of time after which the boot is considered successful
|
|
38
38
|
uint32_t safe_mode_enable_time_{60000}; ///< The time safe mode should remain active for
|
|
39
39
|
uint32_t safe_mode_rtc_value_{0};
|
|
40
40
|
uint32_t safe_mode_start_time_{0}; ///< stores when safe mode was enabled
|
|
41
|
+
// Group 1-byte members together to minimize padding
|
|
42
|
+
bool boot_successful_{false}; ///< set to true after boot is considered successful
|
|
41
43
|
uint8_t safe_mode_num_attempts_{0};
|
|
44
|
+
// Larger objects at the end
|
|
42
45
|
ESPPreferenceObject rtc_;
|
|
43
46
|
CallbackManager<void()> safe_mode_callback_{};
|
|
44
47
|
|
esphome/components/scd30/scd30.h
CHANGED
|
@@ -26,7 +26,6 @@ class SCD30Component : public Component, public sensirion_common::SensirionI2CDe
|
|
|
26
26
|
void setup() override;
|
|
27
27
|
void update();
|
|
28
28
|
void dump_config() override;
|
|
29
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
30
29
|
|
|
31
30
|
protected:
|
|
32
31
|
bool is_data_ready_();
|