esphome:
  on_boot:
    then:
      - lock.lock: test_lock1
      - lock.unlock: test_lock1
      - lock.open: test_lock1

output:
  - platform: gpio
    id: test_binary
    pin: 4

lock:
  - platform: template
    id: test_lock1
    name: Template Lock
    lambda: |-
      if (millis() > 10000) {
        return LOCK_STATE_LOCKED;
      } else {
        return LOCK_STATE_UNLOCKED;
      }
    optimistic: true
    assumed_state: false
    on_unlock:
      - lock.template.publish:
          id: test_lock1
          state: !lambda "return LOCK_STATE_UNLOCKED;"
    on_lock:
      - lock.template.publish:
          id: test_lock1
          state: !lambda "return LOCK_STATE_LOCKED;"
  - platform: output
    name: Generic Output Lock
    id: test_lock2
    output: test_binary