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_idstate_topic:${MQTT_TOPIC_PREFIX}/${id}/stateavailability:${MQTT_TOPIC_PREFIX}/bridge/statusdevice:devices설정 또는 브리지 기본 정보- 선택:
suggested_area,device_class,icon
- 잠금 전용
command_topic:${MQTT_TOPIC_PREFIX}/${id}/setvalue_template:{{ value_json.state }}state_locked:LOCKED,state_unlocked:UNLOCKEDstate_locking:LOCKING,state_unlocking:UNLOCKINGstate_jammed:JAMMEDpayload_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]작성 체크리스트
- 잠금 상태가 여러 단계(잠김/잠김 중/해제 중)를 거친다면 각각의
state_*를 분리해 Home Assistant 상태를 정확히 반영합니다. - 일부 장비는 잠금 명령 후 별도 ACK 패킷을 보내므로
packet_defaults.rx_header/footer와 체크섬을 맞춰야 합니다. - 키패드 오류 등 예외 상태를
state_jammed로 분리해 알림을 강화할 수 있습니다.