esphome:
  name: rapid-transitions-test
host:
api:
  batch_delay: 0ms  # Enable immediate sending for rapid transitions
logger:
  level: DEBUG

# Add a sensor that updates frequently to trigger lambda evaluations
sensor:
  - platform: template
    name: "Update Trigger"
    id: update_trigger
    lambda: |-
      return 0;
    update_interval: 10ms
    internal: true

# Simulate an IR remote binary sensor with rapid ON/OFF transitions
binary_sensor:
  - platform: template
    name: "Simulated IR Remote Button"
    id: ir_remote_button
    lambda: |-
      // Simulate rapid button presses every ~100ms
      // Each "press" is ON for ~30ms then OFF
      uint32_t now = millis();
      uint32_t press_cycle = now % 100;  // 100ms cycle

      // ON for first 30ms of each cycle
      if (press_cycle < 30) {
        // Only log state change
        if (!id(ir_remote_button).state) {
          ESP_LOGD("test", "Button ON at %u", now);
        }
        return true;
      }
      // Only log state change
      if (id(ir_remote_button).state) {
        ESP_LOGD("test", "Button OFF at %u", now);
      }
      return false;
