Skip to content

Lock 스키마 작성법 ​

도어락·가스락 등 잠금 장치는 lock 엔티티를 사용합니다. type은 lock이며 공통 필드(id, name, packet_parameters, device_class, icon)를 함께 지정합니다.

필수 필드 ​

  • state: 장치에서 오는 기본 상태 패킷 서명.
  • 잠금 상태 판단용 state_locked, state_unlocked 중 하나 이상 — StateSchema 또는 CEL 표현식.
  • 잠금 제어용 command_lock, command_unlock 중 하나 이상.

옵션 필드 (상태) ​

  • 중간 상태: state_locking, state_unlocking, state_jammed — 잠기는 중/해제 중/걸림.

옵션 필드 (명령) ​

  • 추가 옵션 없음.

MQTT 디스커버리 메시지 구성 ​

  • 토픽: homeassistant/lock/<unique_id>/config
  • 공통 필드
    • name, default_entity_id, unique_id
    • state_topic: ${MQTT_TOPIC_PREFIX}/${id}/state
    • availability: ${MQTT_TOPIC_PREFIX}/bridge/status
    • device: devices 설정 또는 브리지 기본 정보
    • 선택: suggested_area, device_class, icon
  • 잠금 전용
    • command_topic: ${MQTT_TOPIC_PREFIX}/${id}/set
    • value_template: {{ value_json.state }}
    • state_locked: LOCKED, state_unlocked: UNLOCKED
    • state_locking: LOCKING, state_unlocking: UNLOCKING
    • state_jammed: JAMMED
    • payload_lock: LOCK, payload_unlock: UNLOCK

예제: 가스 밸브 잠금 제어 ​

상태 비트로 잠금/해제를 구분하는 예시입니다.

yaml
lock:
  - id: gas_burner_lock
    name: "Gas Buner Lock"
    icon: mdi:gas-burner
    state:
      data: [0x30, 0xd0, 0x00, 0x2c, 0x00]
      mask: [0xff, 0xf0, 0xff, 0xff, 0xff]
    state_unlocked:
      index: 7
      data: [0x01]
    state_locked:
      index: 7
      data: [0x02]
    command_lock:
      data: [0x30, 0xbc, 0x00, 0x2c, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

작성 체크리스트 ​

  1. 잠금 상태가 여러 단계(잠김/잠김 중/해제 중)를 거친다면 각각의 state_*를 분리해 Home Assistant 상태를 정확히 반영합니다.
  2. 일부 장비는 잠금 명령 후 별도 ACK 패킷을 보내므로 packet_defaults.rx_header/footer와 체크섬을 맞춰야 합니다.
  3. 키패드 오류 등 예외 상태를 state_jammed로 분리해 알림을 강화할 수 있습니다.