IoT

유플러스 Zwave 스틱 + 다원 플러그 Zwave 연동 및 Zwavejs2Mqtt

ㅋㅋ잠자 2021. 9. 28. 18:42
반응형

안녕하세요. 도정진입니다.

 

하기 USB 스틱을 구매해 두고 거의 반년이 흐른것 같습니다. 그러다 Zwave 국내 주파수 용도의 다원 플러그가 올라와서 하기와 같이 연동기를 작성합니다.

1. Zwave2Mqtt --> Zwavejs2Mqtt

이름이 바뀌었습니다. 바로 설치를 해보겠습니다.

https://github.com/zwave-js/zwavejs2mqtt

https://hub.docker.com/r/zwavejs/zwavejs2mqtt

https://zwave-js.github.io/zwavejs2mqtt/#/getting-started/quick-start

 

일단은 하기와 같이 스틱을 꽂습니다. 연장선이 있었으면 좋았을 것 같은데요. 아쉽게도 연장선이 없네요.

둘다 연장선에 있으면 좋을텐데 아쉽네요.

 

일단은 USB 스틱을 꽂았으니 확인을 해봅니다.

이제 부터 재부팅하면 순서가 뒤바뀔 것 같네요. 뒤바뀐다면, 차후에 udev rules 를 작성하는 방법도 따로 게시글 작성해보겠습니다.

root@debian:/sys/class/tty# ls
console  tty12  tty19  tty25  tty31  tty38  tty44  tty50  tty57  tty63      ttyS1   ttyS16  ttyS22  ttyS29  ttyS7
ptmx     tty13  tty2   tty26  tty32  tty39  tty45  tty51  tty58  tty7       ttyS10  ttyS17  ttyS23  ttyS3   ttyS8
tty      tty14  tty20  tty27  tty33  tty4   tty46  tty52  tty59  tty8       ttyS11  ttyS18  ttyS24  ttyS30  ttyS9
tty0     tty15  tty21  tty28  tty34  tty40  tty47  tty53  tty6   tty9       ttyS12  ttyS19  ttyS25  ttyS31  ttyUSB0
tty1     tty16  tty22  tty29  tty35  tty41  tty48  tty54  tty60  ttyACM0    ttyS13  ttyS2   ttyS26  ttyS4
tty10    tty17  tty23  tty3   tty36  tty42  tty49  tty55  tty61  ttyprintk  ttyS14  ttyS20  ttyS27  ttyS5
tty11    tty18  tty24  tty30  tty37  tty43  tty5   tty56  tty62  ttyS0      ttyS15  ttyS21  ttyS28  ttyS6

오 다행입니다. 하나는 ACM 모뎀으로 잡히고 하나는 ttyUSB로 잡히네요. ttyUSB 로 잡히는 경우, DNALAND 발 2538 모듈에 UART 컨버터가 있어서 USB로 나오는 것입니다.

 

다행히, udev 설정은 하지 않아도 되겠네요. CC2531 의 경우 ttyACM0 로 잡힘으로 상기 기기를 꽂으면 ttyACM1로 잡히게 되어 udev 규칙 설정이 필요할 것입니다. 혹은 /dev/serial/by-id 로 해결이 가능할 것으로 보이네요.

(재부팅 하면 순서가 바뀔 수 있습니다.)

 

직접 컴파일 하여 설치하기 힘드니 docker 컨테이너로 올리겠습니다.

root@debian:~# mkdir /opt/zw2m

root@debian:~# docker run -d -it --network host --device=/dev/ttyACM0:/dev/zwave \
> --restart unless-stopped --name zw2m -v /opt/zw2m zwavejs/zwavejs2mqtt:latest
Unable to find image 'zwavejs/zwavejs2mqtt:latest' locally
latest: Pulling from zwavejs/zwavejs2mqtt
339de151aab4: Pull complete
a1c25bd014f1: Downloading [======================>                            ]  16.32MB/35.86MB
13e1008fa53b: Download complete
076c9f43fd5b: Download complete
7488bdc06b25: Download complete
668f5e8541a2: Waiting

실행이 되는지 확인합니다.

root@debian:~# docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED              STATUS              PORTS     NAMES
cf3fb8d61d07   zwavejs/zwavejs2mqtt:latest           "docker-entrypoint.s…"   About a minute ago   Up About a minute             zw2m

root@debian:~# netstat -nlp | grep 8091
tcp        0      0 0.0.0.0:8091            0.0.0.0:*               LISTEN      24205/node

ipaddr:8091 로 WebUI 가 나오는지 확인합니다.

2. 기초 설정하기

일단은 최소 설정으로 Settings 로 이동하시어 Zwave 에 키 생성을 해야합니다.

아직까지 정확하게는 Zwave 통신 방식에 대해서 이해를 하지 못하고 있어서 시키는 대로 진행을 하고 있습니다.

하기 Z-Wave 메뉴에서 하위 메뉴를 열어서 4가지 키 생성을 합니다.

어디에 쓰는 키인지는 정확하게 모르고 있습니다. 차후에 백업을 하라고 하네요. 백업하고 어디 쓸지는 차후에 차차 알아보겠습니다.

그리고 mqtt 를 설정합니다. 저의 경우에 network 를 host 로 설정하였으며 (실제로는 host 로 설정하지 않아도 lo 인터페이스는 컨테이너 끼리 공유가 됩니다.) 인증이 없는 상태라서 하기와 같이 설정을 진행하였습니다.

다음으로 HomeAssistant Discovery Topic 을 설정하여 기기가 페어링 되었을 때 자동으로 HA 에 엔티티가 올라오도록 설정합니다.

웹소켓으로도 뭘 할 수 있는것 같은데요. 활성화 하고 HA 와 붙여보도록 하겠습니다.

HA 에서 Z-Wave JS Integration 설정을 해보도록 하겠습니다.

상기와 같이 입력하면 하기 엔티티가 생깁니다.

음... 일단은 넘어가겠습니다.

3. 기기 페이링 하기

흠.. 제가 1개는 컨트롤러 (허브) 이며, 하기 노드는 이상한게 어느 것인지 모르겠습니다.

2번을 어떻게 해도 지워지지가 않네요.. 

허브의 Hard Reset 으로도 지워지지가 않고.. 에러인지 일단은 넘어가 봅니다.

일단은 Zwave 는 Zigbee 와 다르게 Inclusion / Exclusion 모드가 있는 것 같습니다.

일단 허브(컨트롤러) 를 Inclusion 모드에 놓고 페어링을 하는 것 같은데요. 플러그 2개를 붙여보겠습니다.

 

이 분양받은 플러그가 이미 이전 네트워크에 Inclusion 되어 있었기 때문에, 페어링이 안되는 상황입니다.

즉 이전 노드에서 Exclusion 되어야 하고 다음 네트워크에 Inclusion 되어야 하는데요.

 

그럼 ST 에서 보던 General Exclusion 을 찾아서 하기와 같이 실행해 보았습니다.

다원플러그의 경우, 전원버튼을 오래 누르면 깜박이게 되는데요. 깜박이는 상태에서 깜박이지 않을때까지 누르고 계시면 됩니다. 이 방법은 페어링 시에도 동일합니다.

 

무언가 정확하지 않지만, 이전 네트워크에서 Inclusion 되었던 기기를 Exclusion 을 상기 방법으로 진행이 되는지는 정확하지가 않습니다.

 

다음으로, 페어링을 진행해 보겠습니다. Manage Node 에서 Inclusion 모드로 설정합니다.

기본 옵션으로 Inclusion 을 진행합니다.

30초 동안 Inclusion 이 활성화 됩니다.

가진 플러그가 2개라 일단 1개를 먼저 추가하고 다시 Inclusion 모드로 들어가 1개를 추가했습니다.

두개 동시에 시도하니 무언가 꼬이는 것 같네요.

2개가 추가되었습니다.

HA에도 기기 2개가 올라오네요. 이전에 있던 Unknown Device 는 어디로 사라졌는지 모르겠습니다.

하기와 같이 값들이 올라오네요.

컨트롤은 매우 잘 됩니다.

한편으로는 전력 사용량이 변하지가 않는데 이 부분이 본래 안되는 것인지 차후에 찾아봐야겠습니다.

3-1. 좀 더 쉬운 페어링 : HA 에서 페어링

HA의 통합 구성요소 메뉴에서 하기와 같이 쉽게 페어링이 가능합니다.

다시 페어링을 진행해보면 하기와 같습니다.

다시 페어링 해보겠습니다.

상기와 같은 방법으로 쉽게 기기 추가 및 제거가 가능합니다.

4. 전력 사용량 문제

일단은 전력 사용량이 안올라오는 것은 아닌것 같습니다. 주기가 너무 긴것으로 보이는데요.

zw2mqtt 웹 UI 에서 수동으로 값을 Refresh 하면 값이 올라옵니다.

일단은 디바이스 설정으로 해당 값을 poll 을 할 수 있다는 것을 알았습니다. 실제로 이 설정이 Zwave 네트워크에 부하를 준다고 되어 있는데요. 일단 설정을 하기와 같이 진행하였습니다.

설정 --> General 에 보시면 Device values configuration 이 있습니다.

새 값을 추가하여 전력 사용량과 전체 전력 사용량을 10초 마다 폴링 하도록 설정합니다.

값이 하기와 같이 10초마다 갱신됩니다.

어쩌면, 누적 값은 유틸리티 미터를 활용할 것이라 따로 갱신 하지 않아도 될 것 같습니다.

5. 수동 조절 시 상태 반영 문제

이 부분은 라이센스 부분으로 알고 있어서 수정이 어려운 것으로 알고 있습니다. mqtt 쪽을 손보면 해결이 가능할 것 같은데요. template_switch 를 하나 생성하여 해결을 보도록 하겠습니다.

올라오는 센서 중에 바이너리 센서 2개가 켜짐 꺼짐을 나타냅니다.

그러면 AC mains re-connected 바이너리 센서를 활용하면 template 스위치를 만들 수 있을 것 같습니다.

- platform: template
  switches:
    dawon_zwave_switch_1:
      value_template: "{{ is_state('binary_sensor.node_7_power_management_ac_mains_re_connected','on') }}"
      icon_template: 'mdi:power'
      turn_on:
        service: switch.turn_on
        data:
          entity_id: switch.node_7
      turn_off:
        service: switch.turn_off
        data:
          entity_id: switch.node_7

상기와 같이 정리가 잘 되었습니다. 누적량은 유틸리티 미터로 바꾸는게 좋아 보이네요.

6. 총평

와우.. 나름 괜찮습니다. 유플러스 플러그라 대충 분양 가격이 저렴하네요.

필요하면 여러개 구비해도 괜찮아 보입니다.

 

 

감사합니다.

반응형