안녕하세요? 도정진입니다.
최근에 아래의 글을 올려드린 적이 있죠.
https://blog.djjproject.com/660
ha korea 카페의 stkang90 님이 만드신 프로그램으로 mqtt 서버를 저희 서버로 돌리는 방법으로 로컬 컨트롤을 하는 방법을 올려주셨습니다.
https://cafe.naver.com/koreassistant/1977
자 그럼 시작합니다.
1. 다원 플러그 초기화
다원 플러그를 초기화 하는 방법은 아래와 같습니다.
1. 스위치를 꾹 누름
2. LED 빨리 깜박임
3. 계속 누름
4. LED 2번째로 빨리 깜박임
5. 손을 땜
6. LED 가 번쩍 번쩍 함
7. 플러그 콘센트에서 분리
8. 재연결
이런식으로 하셔야 완벽하게 초기화가 됩니다.
2. java 8 버전 다운로드
저는 Beelink GTMINI 셋탑박스에서 리눅스를 설치한 상태로 서버를 운영중인데.. 그 환경에서 작업할 예정입니다.
https://blog.djjproject.com/618
https://blog.djjproject.com/653
한타에 USB 2.0 3.0 / GMAC / WIFI / BT 를 활용할 수 있습니다.
자 그럼, 일단 자바를 받아보겠습니다.
대충 하기 URL 에서 받고 /opt 에 적절히 풀어줍니다. (java 8을 써야하는지는 잘 모르겠습니다. 제가 subsonic 때문에 사용하고 있어서..)
https://github.com/AdoptOpenJDK/openjdk8-binaries/releases
3. dawon.jar 실행
실행하기에 앞서 와이파이에 연결합니다.
root@aml:/media/data# armbian-config
와이파이는 하기와 같이 쉽게 연결 가능합니다.
root@aml:~# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:f3ff:fe41:817d prefixlen 64 scopeid 0x20<link>
ether 02:42:f3:41:81:7d txqueuelen 0 (Ethernet)
RX packets 15 bytes 1479 (1.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 609 bytes 73587 (71.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.17 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::9baa:bab2:590c:85d8 prefixlen 64 scopeid 0x20<link>
ether 02:00:00:23:03:01 txqueuelen 1000 (Ethernet)
RX packets 7450231 bytes 9623363144 (8.9 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5304035 bytes 3402802804 (3.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 6
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 19876 bytes 9131933 (8.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 19876 bytes 9131933 (8.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth076238c: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::b00d:c7ff:fec6:4d04 prefixlen 64 scopeid 0x20<link>
ether b2:0d:c7:c6:4d:04 txqueuelen 0 (Ethernet)
RX packets 15 bytes 1689 (1.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 624 bytes 74733 (72.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.43.2 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::955a:267e:7885:2544 prefixlen 64 scopeid 0x20<link>
ether 6c:21:a2:ed:2c:0f txqueuelen 1000 (Ethernet)
RX packets 12 bytes 4776 (4.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 101 bytes 15942 (15.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@aml:~#
다음으로 dawon.jar 을 실행합니다.
root@aml:~# java -jar /media/data/dawon.jar
###############################################
######### [Dawon Dns 스마트 플러그 설정 툴] #########
###############################################
## 테스트 성공 모델: Smart Plug(B530-WF/B540-WF) ##
######### [WIFI 설정] #########
WIFI 이름을 입력하세요.
DJJ_AP
WIFI 비밀번호을 입력하세요. (8자리 이상)
12345678
##############################
######### [MQTT 설정] #########
MQTT 서버 주소(IP or Domain)를 입력하세요
192.168.0.17
MQTT 서버 포트를 입력하세요. (기본값: 1883)
1883
MQTT 서버 비밀번호를 입력하세요. (1234 입력 권장)
1234
#### [디바이스(스마트 플러그) 설정] ###
디바이스 주소(IP)를 입력하세요. (IPv4) (기본값: 192.168.43.1)
192.168.43.1
디바이스 포트를 입력하세요. (기본값: 5000)
5000
########## [설정 확인] #########
WIFI 이름: DJJ_AP
WIFI 비밀번호: 12345678
MQTT IP: 192.168.0.17
MQTT 포트: 1883
MQTT 비밀번호: 1234
디바이스 IP: 192.168.43.1
디바이스 포트: 5000
위 설정이 맞습니까? (y/n)
y
설정 완료
연결 시도 중입니다.
연결 성공
SendData: {"server_addr":"192.168.0.17","server_port":"1883","ssl_support":"no","ssid":"DJJ_AP","pass":"12345678","mqtt_key":"1234","company":"DAWONDNS","model":"B5X","topic":"dwd"}
#### 성공 ####
정상적으로 성공하였다면, 플러그의 전등이 깜박이지 않아야 합니다.
4. 홈 어시스턴트에 등록
# sensor
- platform: mqtt
name: "6ac63ad2ae04_sensor"
unit_of_measurement: "W"
state_topic: "dwd.v1/DAWONDNS-B5X-6ac63ad2ae04/iot-server/notify/json"
value_template: >-
{% if value_json.sid == '2' %}
{{ value_json.msg.e[1].sv | float | round(2) }}
{% elif value_json.sid == '1' %}
{{ value_json.msg.e[3].sv | float | round(2) }}
{% else %}
{{ states('sensor.6ac63ad2ae04_sensor') }}
{% endif %}
# switch
- platform: mqtt
name: "6ac63ad2ae04_switch"
command_topic: "dwd.v1/iot-server/DAWONDNS-B5X-6ac63ad2ae04/execute/json"
state_topic: "dwd.v1/DAWONDNS-B5X-6ac63ad2ae04/iot-server/notify/json"
payload_on: '{"sid":"2","msg":{"o":"e","e":[{"n":"/100/0/31","sv":"true","r":"","ti":"1593516756"}]}}'
payload_off: '{"sid":"2","msg":{"o":"e","e":[{"n":"/100/0/31","sv":"false","r":"","ti":"1593516756"}]}}'
state_on: 'on'
state_off: 'off'
value_template: >-
{% if value_json.sid == '2' %}
{% if value_json.msg.e[0].sv == 'true' %}
on
{% else %}
off
{% endif %}
{% else %}
{% endif %}
# automation
- alias: 'power refresh 6ac63ad2ae04'
trigger:
platform: time_pattern
seconds: '/5'
action:
- service: mqtt.publish
data_template:
topic: "dwd.v1/iot-server/DAWONDNS-B5X-6ac63ad2ae04/read/json"
payload: '{"sid":"2","msg":{"o":"r","e":[{"n":"/100/0/31","ti":"1593516756"},{"n":"/100/0/11","ti":"1593516556"}]}}'
이후 값이 정상적으로 올라옵니다.
stkang90님 정말 감사합니다.
새생명을 불어 넣어 주셨습니다.
여기까지 마치겠습니다.
감사합니다.
'IoT' 카테고리의 다른 글
Zigbee2Mqtt Assistant 간단 맛보기 (0) | 2020.07.02 |
---|---|
HomeAssistant 샤오미 공기청정기 / 선풍기 연동 (0) | 2020.07.02 |
CC2531 Zigbee2Mqtt 설정하기 (0) | 2020.06.28 |
다원 플러그 API 키 사태 대응하기 (2) | 2020.06.13 |
HomeAssistant 조도 센서를 활용한 보일러 온수 ON/OFF (0) | 2020.06.04 |
댓글