안녕하세요? 도정진입니다.
최근에 아래의 글을 올려드린 적이 있죠.
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 |
다원 와이파이 플러그 로컬 컨트롤 설정하기 (stkang90 님) (4) | 2020.07.02 |
CC2531 Zigbee2Mqtt 설정하기 (0) | 2020.06.28 |
다원 플러그 API 키 사태 대응하기 (2) | 2020.06.13 |
HomeAssistant 조도 센서를 활용한 보일러 온수 ON/OFF (0) | 2020.06.04 |
또 하나의 새로운 디바이스 해킹법을 찾으셨군요 선생님 정말 끝도 없습니다
답글
개발자분들의 덕택입니다.. 저는 감사하게 쓸 뿐이죠 ..
원글 주의사항에 'WIFI가 가능한 PC나 노트북이 필요합니다.' 라고 적혀있는데 스마트플러그를 제어하려면 항시 pc나 노트북이 켜져있어야 하나요?
답글
아니요 노트북에서 해당 플러그로 와이파이 연결하여 세팅값을 보내면 공유기 와이파이로 연동되는 것입니다.
따라서 한번 필요하고 그 뒤로는 필요없습니다. ㅎㅎ