mirror of
https://github.com/esphome/esphome.git
synced 2026-05-16 10:42:22 +08:00
d3342d6a1a
CI / Create common environment (push) Has been cancelled
CI / Check pylint (push) Has been cancelled
CI / Run script/ci-custom (push) Has been cancelled
CI / Run pytest (macOS-latest, 3.11) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.10) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.11) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.12) (push) Has been cancelled
CI / Run pytest (ubuntu-latest, 3.13) (push) Has been cancelled
CI / Run pytest (windows-latest, 3.11) (push) Has been cancelled
CI / Determine which jobs to run (push) Has been cancelled
CI / Run integration tests (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 1/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 2/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 3/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 Arduino 4/4 (push) Has been cancelled
CI / Run script/clang-tidy for ESP32 IDF (push) Has been cancelled
CI / Run script/clang-tidy for ESP8266 (push) Has been cancelled
CI / Run script/clang-tidy for ZEPHYR (push) Has been cancelled
CI / Component test ${{ matrix.file }} (push) Has been cancelled
CI / Split components for testing into 20 groups maximum (push) Has been cancelled
CI / Test split components (push) Has been cancelled
CI / pre-commit.ci lite (push) Has been cancelled
CI / CI Status (push) Has been cancelled
CI for docker images / Build docker containers (docker, ubuntu-24.04) (push) Has been cancelled
CI for docker images / Build docker containers (docker, ubuntu-24.04-arm) (push) Has been cancelled
CI for docker images / Build docker containers (ha-addon, ubuntu-24.04) (push) Has been cancelled
CI for docker images / Build docker containers (ha-addon, ubuntu-24.04-arm) (push) Has been cancelled
Co-authored-by: J. Nick Koston <nick@koston.org>
86 lines
2.5 KiB
YAML
86 lines
2.5 KiB
YAML
esphome:
|
|
name: loop-test
|
|
|
|
host:
|
|
api:
|
|
logger:
|
|
level: DEBUG
|
|
|
|
external_components:
|
|
- source:
|
|
type: local
|
|
path: EXTERNAL_COMPONENT_PATH
|
|
|
|
loop_test_component:
|
|
components:
|
|
# Component that disables itself after 10 loops
|
|
- id: self_disable_10
|
|
name: "self_disable_10"
|
|
disable_after: 10
|
|
|
|
# Component that never disables itself (for re-enable test)
|
|
- id: normal_component
|
|
name: "normal_component"
|
|
disable_after: 0
|
|
|
|
# Component that tests enable when already enabled
|
|
- id: redundant_enable
|
|
name: "redundant_enable"
|
|
test_redundant_operations: true
|
|
disable_after: 0
|
|
|
|
# Component that tests disable when already disabled
|
|
- id: redundant_disable
|
|
name: "redundant_disable"
|
|
test_redundant_operations: true
|
|
disable_after: 10
|
|
|
|
# ISR test component that uses enable_loop_soon_any_context
|
|
isr_components:
|
|
- id: isr_test
|
|
name: "isr_test"
|
|
|
|
# Update test component to test component.update when loop is disabled
|
|
update_components:
|
|
- id: update_test_component
|
|
name: "update_test"
|
|
disable_loop_after: 3 # Disable loop after 3 iterations
|
|
update_interval: 0.1s # Fast update interval for testing
|
|
|
|
# Interval to re-enable the self_disable_10 component after some time
|
|
interval:
|
|
- interval: 0.5s
|
|
then:
|
|
- if:
|
|
condition:
|
|
lambda: 'return id(self_disable_10).get_loop_count() == 10;'
|
|
then:
|
|
- logger.log: "Re-enabling self_disable_10 via service"
|
|
- loop_test_component.enable:
|
|
id: self_disable_10
|
|
|
|
# Test component.update on a component with disabled loop
|
|
- interval: 0.1s
|
|
then:
|
|
- lambda: |-
|
|
static bool manual_update_done = false;
|
|
if (!manual_update_done &&
|
|
id(update_test_component).get_loop_count() == 3 &&
|
|
id(update_test_component).get_update_count() >= 3) {
|
|
ESP_LOGI("main", "Manually calling component.update on update_test_component with disabled loop");
|
|
manual_update_done = true;
|
|
}
|
|
- if:
|
|
condition:
|
|
lambda: |-
|
|
static bool manual_update_triggered = false;
|
|
if (!manual_update_triggered &&
|
|
id(update_test_component).get_loop_count() == 3 &&
|
|
id(update_test_component).get_update_count() >= 3) {
|
|
manual_update_triggered = true;
|
|
return true;
|
|
}
|
|
return false;
|
|
then:
|
|
- component.update: update_test_component
|