안녕하세요. JGP입니다
| 참고할 게시물
전에 Zemismart 스위치에 연결된 단순 on/off 기능의 환풍기를 HA상에서 Fan으로 인식시키는 방법에 대해 소개했습니다.
하는 김에 도어락 드라이컨텍을 구성 한 것도 HA상에 'Lock' 도메인으로 인식시키면..
가 메인으로 쓰는 애플 홈 킷 상에도 도어락 항목을 표시할 수가 있어서 시도해봤고.. 결국 성공했습니다.
| 도어센서 없이 Lock 도메인을 가진 구성요소 만들기
참고로 저희 집에는 아직 도어센서가 없어서, 문이 열리고 닫힌 상태를 알 수 있는 방법이 없습니다.
다만 규칙은 있죠.
게이트맨 도어락은 연동기가 보낸 열림 신호를 받아서 열린 뒤에, 문이 열린 다음, 닫히면 도어락을 잠그고,
만약 도어락만 열리고 문이 안열린 상태가 계속되면 8초 후 다시 도어락을 잠급니다.
센서가 없으므로 문 열림/닫힘 상태를 알 수 없으니, 우선 잠김/열림 상태를 표시할 가상 스위치를 하나 만들 것 입니다.
저는 template switch와 input_boolean을 활용해 만들었습니다. 이 스위치는 제가 더미스위치 라고 부르겠습니다.
'on' 상태가 잠금 해제, 'off' 상태가 잠금 상태입니다.
코드는 아래와 같습니다.
input_boolean:
doorlock:
switch:
- platform: template
switches:
doorlock_dummy:
friendly_name: "도어락 잠금해제 상태"
unique_id: doorlock_dummy
value_template: "{{ is_state('input_boolean.doorlock', 'on') }}"
turn_on:
- service: input_boolean.turn_on
entity_id: input_boolean.doorlock
turn_off:
- service: input_boolean.turn_off
entity_id: input_boolean.doorlock
이렇게 하면 단순히 켜지고 꺼지는 스위치를 하나 만들수 있습니다.
이제 상태를 표시할 수단이 생겼으니, Lock Template를 활용해 도어락을 HA에 Lock으로 인식시켜봅시다.
현재는 HA상에서 문열림 버튼을 누르면 현재는 드라이컨텍 스위치가 켜지고 0.5초 뒤 꺼지도록 자동화가 되어있습니다.
이 자동화는 이제 사용하지 않습니다.
더미스위치 상 'off'가 잠금 상태이므로, 아래와 같이 구성해야합니다.
value_template: "{{ is_state('input_boolean.doorlock', 'off') }}"
'unlock'을 누르면, 아래 상태가 되도록 합니다.
- switch.doorlock_dummy가 'on' 상태가 되도록 합시다. (서비스명 input_boolean.turn_on, 엔티티명 input_boolean.doorlock)
- 드라이컨텍 스위치를 켭니다. (서비스명 switch.turn_on, 엔티티명 switch.shelly_uni_01_channel_1)
- 0.5초를 기다립니다 (delay: 0.5)
- 드라이컨텍 스위치를 끕니다. (서비스명 switch.turn_off, 엔티티명 switch.shelly_uni_01_channel_1)
- 8초를 기다립니다 (delay: 8)
- switch.doorlock_dummy가 'off' 상태가 되도록 합니다. (서비스명 input_boolean.turn_off, 엔티티명 input_boolean.doorlock)
'lock'을 누르면 아래 상태가 되도록 합니다.
- 단순히 switch.doorlock_dummy가 'off' 상태가 되도록 하면 됩니다. (서비스명 input_boolean.turn_off, 엔티티명 input_boolean.doorlock)
lock:
- platform: template
name: 도어락
value_template: "{{ is_state('input_boolean.doorlock', 'off') }}"
lock:
- service: input_boolean.turn_off
entity_id: input_boolean.doorlock
unlock:
- service: input_boolean.turn_on
entity_id: input_boolean.doorlock
- service: switch.turn_on
entity_id: switch.shelly_uni_01_channel_1
- delay: 0.5
- service: switch.turn_off
entity_id: switch.shelly_uni_01_channel_1
- delay: 8
- service: input_boolean.turn_off
entity_id: input_boolean.doorlock
정리해보자면 아래와 같습니다.
- input_boolean을 활용해 논리 입력 항목을 하나 생성합니다 (예제에서는 input_boolean.doorlock)
- switch template를 활용해 가상 스위치(더미스위치)를 하나 생성합니다. (예제에서는 switch.doorlock_dummy)
- 도어센서가 없으므로, Lock template 에서 상태를 표시하기 위함입니다.
- 더미스위치는 'on' 상태가 잠금 해제, 'off' 상태가 잠금 상태로 구성됩니다.
- unlock/lock에 대한 명령을 각각 지정(위 참고)하면 됩니다.
| Apple Homekit에 연동
단순히 구성에 추가해주면 현관문 항목이 활성화됩니다.
비밀번호를 사용하지 않는 도어락이므로 단순 잠금/잠금해제만 가능합니다.