사물인터넷 | IoT/Home Assistant

[HA] IoT 기능이 없는 게이트맨 도어락을 Lock으로 인식시키기(도어 열림/닫힘 센서가 없는 경우)

728x90
728x90

안녕하세요. JGP입니다


| 참고할 게시물

 

[HA] 단순 on/off 스위치를 fan으로 인식시키는 방법

단순 On/off 스위치를 fan으로 속도 설정 옵션 없이 설정하고자 하시면 아래 구문을 쓰시면 됩니다. fan: - platform: template fans: rest1: friendly_name: "거실화장실 환풍기" value_template: "{{ states('sw..

jgpark.kr

전에 Zemismart 스위치에 연결된 단순 on/off 기능의 환풍기를 HA상에서 Fan으로 인식시키는 방법에 대해 소개했습니다.

하는 김에 도어락 드라이컨텍을 구성 한 것도 HA상에 'Lock' 도메인으로 인식시키면..
가 메인으로 쓰는 애플 홈 킷 상에도 도어락 항목을 표시할 수가 있어서 시도해봤고.. 결국 성공했습니다.

 

 


| 도어센서 없이 Lock 도메인을 가진 구성요소 만들기

 

게이트맨 연동기 + Shelly Uni로 도어락 연동 설정기

지난번 구입한 Shelly Uni가 도착했습니다. 이전 글 : jgpark.kr/702 도어락 연동용 드라이컨택 스위치 구입(Shelly Uni) 수시로 들여다보는 곳 중 하나인 IoT 카페가 있는데, 검색하다가 우연히 도어락을 HA

jgpark.kr

참고로 저희 집에는 아직 도어센서가 없어서, 문이 열리고 닫힌 상태를 알 수 있는 방법이 없습니다.

 

다만 규칙은 있죠.
게이트맨 도어락은 연동기가 보낸 열림 신호를 받아서 열린 뒤에, 문이 열린 다음, 닫히면 도어락을 잠그고,
만약 도어락만 열리고 문이 안열린 상태가 계속되면 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에 연동

단순히 구성에 추가해주면 현관문 항목이 활성화됩니다.

 

비밀번호를 사용하지 않는 도어락이므로 단순 잠금/잠금해제만 가능합니다.

 

728x90
728x90