안녕하세요? 도정진입니다.
아무래도 일단, 다원 API 구조 부터 알고 가보겠습니다.
다원 WIFI 제품들의 연결 구조는 아래와 같습니다.
1. 특정 인증 키 (모든 제품이 동일 키로 로그인)
2. 계정
3. 플러그 고유 넘버 (이 넘버는 네트워크를 서칭하면 나오는 부분입니다.)
이렇기 때문에 보안에 매우 취약한 형태였습니다. 개인마다 키가 따로 주어지는게 아니였죠.
(물론 보안에 대응한게 잘한 일이지만, 비공식으로 쓰고 있던 것도 국내 업체고 소통이 잘 되었다면 길을 열어줄 수 있었을 꺼 같은데요.. ^^)
이를 최근에 다원이 알고 고쳐버려서 랜이님의 다원 컨넥터, 아기나무집 님의 다원 컨넥터를 사용할 수 없게 되었습니다.
이에 따라 다원에서는 저희가 비공식으로 사용했기 때문에 우리가 지원해 줄 필요는 없다. 라고 나오고 있습니다. 기타 중국 저가 tuya 라던지 이러한 제품에서도 API 가 있는데 다원은 제공이 불가능한 것 같습니다.
근래, 서버도 많이 불안하고.. 다원 서버가 망하면 플러그는 말짱 도루묵이 되는데.. 그냥 API 를 공개하고 어차피 ESP32 를 쓰는 것 같은 느낌으로 그냥 tasmota 커펌 등으로 넘어갈 수 있는 방법이 있으면 좋을 것 같습니다.
이 플러그 너무 많이 사서 처분도 힘드네요. 정말.. 쉽지 않습니다. 잘못사서 이렇게 피해를 보다니..
그럼 시작합니다.
1. API 값 얻기
네이버를 이용하면 API 키를 얻을 수 있다고 합니다.
하기 글을 참고해서 키 값을 얻어보았는데요. 그런데 조만간 또 막힐 께 뻔하기 때문에 그냥 ST 에 연동해서 쓰기로 했습니다.
ST 연동은 계정 연동이라 허브가 없어도 될것 같습니다.. 만 잘 모릅니다.
1. 네이버 계정 생성
2. 본 계정에서 네이버 계정으로 기기 공유
3. https://dwapi.dawonai.com:18443/iot/login/login.opi 주소에서 네이버 로그인
이때 순간 키가 나오는데요. 이걸 캐치하기 힘드시면 크롬 애드온을 이용하시길 바랍니다.
https://chrome.google.com/webstore/detail/link-redirect-trace/nnpljppamoaalgkieeciijbcccohlpoh
일단 이렇게 안쓰기로 했기 때문에 다음으로 넘어갑니다.
2. HA 에 ST 연동을 추가
중간에 ST graph 에서 API 를 발급받는 과정이 있습니다. 발급을 받으시고 연동해주시면 됩니다.
참고로 HA Connector 로는 다원 스위치가 넘어오지 않네요.
직비로 연결된 센서 및 스위치는 넘어오는데 클라우드로 연동되는 서비스들은 넘어오지 않는 것 같습니다.
그래서
1. HA --> ST : 아기나무집님 컨넥터
2. ST --> HA : HA 구성요소 이용
이렇게 투트랙을 타게 되었습니다.
3. 파워 값 센서 생성
현재 전력이 안나오는 부분이 아쉽습니다만, 일단 비공식으로 쓰다가 중간에 막히는 것을 너무 싫어서
그냥 ST 에 올라와 있는 하기 값을 사용하기로 했습니다.
상기 값을 이용해서 템플레이트 센서를 만듭니다. 저는 일단 제 집에서는 3개니까 3개를 생성했습니다.
111 - platform: template
112 sensors:
113 computer_watt:
114 friendly_name: 컴퓨터 전력
115 value_template: '{{ state_attr(''switch.computer_dawon'', ''today_energy_kwh'')}}'
116 unit_of_measurement: KWh
117 icon_template: mdi:power
118 tv_watt:
119 friendly_name: TV 전력
120 value_template: '{{ state_attr(''switch.tv_dawon'', ''today_energy_kwh'')}}'
121 unit_of_measurement: KWh
122 icon_template: mdi:power
123 server_watt:
124 friendly_name: 서버 전력
125 value_template: '{{ state_attr(''switch.server_dawon'', ''today_energy_kwh'')}}'
126 unit_of_measurement: KWh
127 icon_template: mdi:power
4. 한번 하면 안되는 다원...
한번 하면 안되면 두번 하면 됩니다.
스크립트로 2초 간격으로 2번 turn on 시그널을 보내도록 스크립트를 아래와 같이 작성했습니다.
2번 정도 하니, 실패하는 경우는 없더라구요.
--> 서버에 여러가지로 문제가 있나 봅니다. 한번하면 씹히는 경우가 많거든요..
저가형 tuya ir 도 씹히는 경우가 없는데 ... 참.. 그렇습니다.
1 computer_turn_on:
2 sequence:
3 - service: switch.turn_on # 컴퓨터 켜기
4 data:
5 entity_id: switch.computer_dawon
6 - delay: '00:00:01' # 1초 쉬고
7 - service: switch.turn_on # 한번 더!
8 data:
9 entity_id: switch.computer_dawon
10
11 tv_turn_on:
12 sequence:
13 - service: switch.turn_on # TV 켜기
14 data:
15 entity_id: switch.tv_dawon
16 - delay: '00:00:01' # 1초 쉬고
17 - service: switch.turn_on # 한번더
18 data:
19 entity_id: switch.tv_dawon
20 - delay: '00:00:02' # 2초 쉬고
21 - service: scene.turn_on # TUYA IR 로 티비 켜기
22 data:
23 entity_id: scene.jsxzkninghs71cl1
24
25 tv_turn_off:
26 sequence:
27 - service: scene.turn_on # TUYA IR 로 티비 먼저 끄고
28 data:
29 entity_id: scene.jsxzkninghs71cl1
30 - delay: '00:00:02' # 2초 쉬고
31 - service: switch.turn_off # 스위치 끄고
32 data:
33 entity_id: switch.tv_dawon
34 - delay: '00:00:01' # 1초 쉬고
35 - service: switch.turn_off # 한번 더 끄고
36 data:
37 entity_id: switch.tv_dawon
그럼 상기 스크립트 기반으로 하기 스위치를 만듭니다.
상태값은 스위치의 ON/OFF 상태를 기반으로
켜고 끄는 것은 상기 스크립트를 실행하도록 합니다.
184 - platform: template
185 switches:
186 computer:
187 value_template: '{{ is_state(''switch.computer_dawon'',''on'') }}' # 상태 체크는 ST에서 연동된 다원 스위치 값
188 turn_off:
189 service: shell_command.hibernate_desktop # 컴퓨터 끄기는 절전모드로
190 turn_on:
191 service: script.computer_turn_on # 켜는건 상기 스크립트로
192 - platform: template # 하기는 마찬가지 입니다
193 switches:
194 television:
195 value_template: '{{ is_state(''switch.tv_dawon'',''on'')
196 }}'
197 turn_off:
198 service: script.tv_turn_off
199 turn_on:
200 service: script.tv_turn_on
5. 러브레이스
저는 꾸미는게 귀찮아서 기본 러브레이스 기능만 씁니다.
현재 사용량 전력이 안나와서 좀 아쉽지만, 어차피 60초 마다 느릿 느릿 가져오는게 필요한가 싶어서 그냥 치워버렸습니다.
6. 화가 많이 났습니다.
이제 다원 제품은 안살것 같습니다.
감사합니다.
'IoT' 카테고리의 다른 글
다원 와이파이 플러그 로컬 컨트롤 설정하기 (stkang90 님) (5) | 2020.07.02 |
---|---|
CC2531 Zigbee2Mqtt 설정하기 (0) | 2020.06.28 |
HomeAssistant 조도 센서를 활용한 보일러 온수 ON/OFF (0) | 2020.06.04 |
HomeAssistant 초보자 설정 (0) | 2020.05.27 |
HASS 디바이스 트래커 설정 (0) | 2020.05.24 |
댓글