HomeAssistant(HA)에 Zigbee(지그비) 추가하기

Posted by JiYiNo
2018. 12. 1. 12:30 지이노/ReView & Using



SmartThings(이하 ST) 를 사용하면서 불만이 많았다.


툭하면 서버 불안정, 자동화 스마트앱인 WebCoRE의 잦은 먹통, HA-ST간의 통신속도 지연 등


머리가 두 개니까 더 그런 점도 있는 듯한데


다른사람은 모르겠지만 내 기준에서 ST는 실망감이 너무 많이 쌓여있다.


너무 서버에 의존하는 느낌...


반면 HA는 일부를 제외하면 로컬에서도 구동에 문제가 없고


자동화 또한 로컬로 진행하기 때문에 서버에 문제가 있던 말던 나랑은 전혀 무관해진다.


그래서 눈을 돌려보았다.


ST를 사용해야 하는 큰 이유 중 몇가지는


Z-Wave Hub 겸용이다.


Zigbee Hub 겸용이다.


WebCoRE의 자동화가 사용하기 편하다.


..


..


..


더이상 찾기 힘들다.


WiFi 장비도 페어링 안되는것이 많고 앞서 언급한 단점이 나에게 크나큰 짜증을 주었다.


ST를 사용해야 하는 이유 중에 Z-Wave와 Zigbee Hub라는 점...


라즈베리파이에 추가해주면 되지 않을까?


라는 의문에서 이 글이 시작한다.






1. Zigbee?


Zigbee(이하 지그비) 는 저속, 근거리의 무선 개인통신망의 한 종류이다.


저렴, 저속, 저전력, 대량의 노드, 메쉬


처음 학생시절 지그비를 접하고 뭐 이딴녀석이 다 있나 싶었다.


당시 Wifi나 블루투스 따위밖에 모르던 나에게


교수님의 설명만으로 접한 지그비는 괴물같은 놈이었다.


물론 단점도 있긴 하지만...


그 당시 TinyOS를 통해 Atmega 128(이하 아트메가 128)를 Xbee모듈을 통해 제어한 적이 있는데


사실 6년도 더 된 이야기라 자세한 기억은 없다.


그 이후로 진로를 PLC로 잡았기 때문에...


지그비의 대한 자세한 설명은 아래 글로 대체한다.


Zigbee






2. 준비물


준비물로는 물론 라즈베리파이, Zigbee 스틱 만 있으면 된다.


현재 나에겐 Hass.io가 설치된 라즈베리파이가 있으므로 라즈베리파이 준비 완료.


[설치] Raspberry Pi 에 Hass.io 설치하기


Zigbee 스틱에 대해선 이곳 저곳 알아보았는데 HA 해외 포럼에서 추천하는 녀석으로 선택했다.



HUSBZB-1


Nortek security & control 에서 나온 제품으로


Zigbee 뿐만 아니라 Z-Wave 겸용 USB 스틱이다.


조금 더 자세한 내용은 아래 글에서 확인 가능하다.


[리뷰] HUSZBZ-1, Zigbee & Z-Wave USB Stick






3. 설치


우선 HA에서 HUSBZB-1을 사용하기 위해 라즈베리파이 USB 포트에 장착한다.


그 다음 HA Confugurator 또는 Notepad+를 사용하여


configuration.yaml 파일을 열어 아래 내용을 추가 한다.


zha:

  usb_path: /dev/USB1

  database_path: /config/zigbee.db

위 내용에서 zha는 Zigbee Home Automation 컴포넌트의 약자이다.


HA에서는 zha로 인식하므로 참고.


usb_path는 해당 장치를 사용할 USB 장치의 위치이다.


일반적으로 HUSZBZ-1만을 장착 하였을 때 USB0은 Z웨이브, USB1은 지그비로 인식하는데


아닐 경우가 있을 수도 있으니 자신의 장치가 어디에 연결되었는지 확인이 필요하다.


다음으로 database_path는 연결된 지그비 장치들을 저장 할 데이터베이스의 경로를 정한다.


일반적으로 Hass.io 사용자라면 /config/zigbee.db 를 사용하면 되고


Hassbian 사용자라면 /home/homeassistant/.homeassistant/zigbee.db 의 경로를 사용하면 된다.


Raspbian에 도커 또는 수동 설치한 사람의 경우는 잘 모르겠지만 눈썰미 있는 사람이라면 눈치 챘을 것이다.


그냥 단순히 yaml 파일들이 있는 경로에 생성하는 샘이다.


configuration.yaml 파일을 수정했다면 저장하고 HA를 재시작한다.


특별한 문제가 있지 않다면 정상적으로 등록이 완료된다.


등록이 완료된 것을 확인하는 방법은 


info 페이지에 에러 메시지가 있는지?


Services 페이지에서 아래와 같은 서비스가 존재 하는지를 보면 확인 할 수 있다.



아쉽게도 zha 컴포넌트는 GUI가 없어서 장치의 페어링이나 리무브를 서비스 호출방식으로 진행해야 한다.


너무 아쉽다.


!!! 주의


만약 정상적으로 진행했는데도 불구하고 에러메시지가 발생한다면


Zigbee.db의 권한을 확인해봐야한다.


읽기권한만 있고 쓰기 권한은 없을 수도 있으므로 이 경우 에러가 발생한다.


이 문제를 끙끙 앓고 있느라 며칠을 사용했다...






4. 페어링


zha 컴포넌트의 설치가 완료되었으니 이제 지그비 장치를 페어링 해야 한다.


테스트를 위해 eZEX 전등 벽스위치를 사용했고 해당 장치는 3구 벽스위치이다.


1) 서비스 페이지에서 zha.permit 서비스를 실행한다.



2) 페어링할 지그비 장치를 페어링 모드로 만들어준다.


  ex) 테스트에 사용할 eZEX 벽스위치 3구는 가장 아래의 스위치를 누르고 있으면 페어링 모드로 변환되는데 그때 다시 한번 스위치를 눌러준다.



3) 페어링이 완료되었는지 확인한다.


   앞서 언급했듯이 zha는 GUI가 없기 때문에 페어링이 잘 되었는지 확인하기 어렵다.


   물론 페어링이 잘 되었다면 오버뷰 페이지에 장치가 정상적으로 표시되지만


   페어링이 실패한 경우도 생각해보아야 한다.


   그래서 생각한 방법이 zigbee.db의 수정한 날짜를 확인하는 방법이다.


   방금 페어링이 되었다면 수정한 날짜가 지금 시간으로 변경되며 페어링에 실패하면 수정한 날짜가 이전 시간으로 되어 있을 것이다.


   참고용으로만 사용한다.




   페어링이 정상적으로 완료되었다면 오버뷰 화면에 장치가 표시된다.


   eZEX 벽스위치 3구는 light 타입으로 인식되기 때문에 전등에 3개의 스위치가 추가되었다.


   자세히 보면 위촉에 binary sensor도 3개 추가 되었는데


   eZEX 벽스위치가 HA에서 사용하는 일반적인 light와 달라 생겨난 엔티티인 듯 하다.


   이 부분에 대해 수정할 방법이 있는지 확인 중이다.


   아래쪽에는 zha라는 항목이 생겼는데 이 항목을 확인하면 내 장치가 온라인인지 오프라인인지 확인이 가능하다.


   정상적으로 통신 중이라면 온라인으로 표시된다.







5. 장치 제거


페어링 된 장치를 제거 해야 하는 순간이 올 수 도 있다.


내 경우 테스트를 위해 이것 저것 페어링 해보다가 삭제를 하려고 하는데 GUI가 없으니 삭제 방법을 모른다.


어쩔수 없이 포럼을 검색했고 삭제방법을 알아왔다.


기본적으로 페어링 할 때와 비슷하다.


 1) 서비스 페이지에서 zha.remove 를 선택한다.


 2) 바로 아래 Service Data (서비스 데이타)에 아래 내용을 입력한다.


    {“ieee_address”:“11:22:33:AA:BB:CC:DD:EE”}


    IEEE 어드레스는 제거 할 장치의 어드레스를 적는다.


 3) CALL SERVICE 버튼을 누른다.


 4) 제거 완료.


간단한 방법이다.


제거할 장치의 IEEE 어드레스를 알아보는 방법은 간단하다.


States 페이지에 zha.으로 시작하는 제거하고싶은 장치를 찾아보면 오른쪽에 적혀있으므로


자신이 원하는 장치의 IEEE 어드레스를 사용하면 된다.






6. 마치며


테스트 해 본 결과 반응속도도 상당히 빠르고 만족스럽다.


포스팅 외로 데이터베이스를 열어보기도 했고 지그비 연결을 스캔해서 정상적인 연결인지와 


리피팅 기능을 정상적으로 수행하고 있는지 확인해보았는데 매우 만족스러운 결과를 얻었다.


이 내용을 담은 글을 추후 게시하기로 한다.


HA-ST간의 통신이 다른사람들은 몇 초 안에 이루어지는데 내 환경에서 그 이상 걸리는 문제가 생겨 시작한 일이


결실을 보기 시작한 기분이다.


조만간 기존에 사용하던 모드 지그비 장치들을 하나로 묶어 HA에 연결해야겠다.


각각의 게이트웨이로 통신하던 지그비 장치들 때문에 메쉬 네트워크가 무의미해졌었는데 


좋은 돌파구를 찾은 것 같다.

이 댓글을 비밀 댓글로
    • 2019.05.24 18:04
    비밀댓글입니다
    • 덧글 감사합니다.

      제가 테스트 해보았을 때에는 ZHA 컴포넌트가 지원하지 않는 기종을 연결하였을 때 정상적인 동작을 하지 않는 경우가 많았습니다.

      또 정식 지원하지 않는 기종은 잦은 페어링 끊김이 있어 현재는 사용하지 않는 중이구요.

      해외포럼에서 문의를 해보았는데 그때당시 답변으로 받은 내용으로는 사용자가 지원하지 않는 기종을 추가하는 방법이 없다고 했습니다.

      현재는 Zigbeetomqtt를 사용하고 있어서 이 이상의 정보는 갖고있지 않네요...

      큰 도움을 못드려 죄송합니다
    • 황남규
    • 2019.05.27 13:54
    큰 도움이 되었습니다 댓글 정말 감사합니다