유플러스 Zwave 스틱 + 다원 플러그 Zwave 연동 및 Zwavejs2Mqtt
안녕하세요. 도정진입니다.
하기 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. 총평
와우.. 나름 괜찮습니다. 유플러스 플러그라 대충 분양 가격이 저렴하네요.
필요하면 여러개 구비해도 괜찮아 보입니다.
감사합니다.