Programming Manual en
Programming Manual en
Programming Manual en
V1.9.8
1 Protocol:Dingtian string.............................................................................................................. 3
1.1 Query status command/KeepAlive................................................................................... 3
1.2 Control command............................................................................................................ 4
1.2.1 ON/OFF example................................................................................................... 4
1.2.2 Delay example....................................................................................................... 4
1.2.3 Jogging example.................................................................................................... 4
2 Protocol:Dingtian binary............................................................................................................. 6
2.1 default setting.................................................................................................................. 6
2.2 command......................................................................................................................... 6
2.2.1 read relay status.................................................................................................... 7
2.2.2 write relay............................................................................................................. 8
2.2.3 write relay with delay............................................................................................ 9
2.2.4 write relay with jogging....................................................................................... 10
2.2.5 relay keep alive.................................................................................................... 11
3 Protocol:HTTP GET CGI.............................................................................................................. 12
3.1 load relay status............................................................................................................. 12
3.2 set relay.......................................................................................................................... 15
3.3 load input status............................................................................................................. 18
3.4 Session check................................................................................................................. 20
3.4.1 web config to Enable HTTP Session check............................................................20
3.4.2 HTTP CGI test tool................................................................................................ 21
3.4.3 full example(success):.......................................................................................... 22
3.4.4 full example(fail).................................................................................................. 23
4 Protocol:Modbus-RTU/TCP/ASCII.............................................................................................. 24
4.1 Registers......................................................................................................................... 25
4.2 Modbus-RTU + Modbus-RTU Over TCP/UDP..................................................................27
4.2.1 0x03:Read holding register..................................................................................27
4.2.2 0x06:Write Single Register................................................................................... 28
4.2.3 0x10: Write Multiple Register..............................................................................29
4.3 Modbus-TCP/UDP........................................................................................................... 33
4.3.1 0x03:Read holding register..................................................................................33
4.3.2 0x06:Write Single Register................................................................................... 34
4.3.3 0x10: Write Multiple Register..............................................................................35
4.4 Modbus-ASCII + Modbus-ASCII Over TCP/UDP...............................................................39
4.4.1 0x03:Read holding register..................................................................................39
4.4.2 0x06:Write Single Register................................................................................... 40
4.4.3 0x10: Write Multiple Register..............................................................................41
5 Protocol:MQTT.......................................................................................................................... 45
5.1 MQTT Topic Fast View.................................................................................................... 47
5.2 MQTT Topic(firmware version < V2.15.869)...................................................................48
5.3 MQTT Topic(firmware version >= V2.15.869).................................................................49
5.4 MQTT Topic(firmware version >= V2.17.xx)....................................................................50
5.5 MQTT LWT topic............................................................................................................. 53
6 Protocol:CoAP........................................................................................................................... 54
6.1 Compile libcoap.............................................................................................................. 54
6.2 Get relay status.............................................................................................................. 54
6.3 Control relay(simple)...................................................................................................... 55
6.4 Control relay.......................................................................................................................56
1 Protocol:Dingtian string
Suport TCP client, TCP server, UDP, CAN/RS485
Format
[relay1][relay2]...[relay32]:[input1][input2]...[input32]:[channel count]
example(2 channel):
00:11:2
example(4 channel):
0000:1111:4
example(8 channel):
00000000:11111111:8
example(16 channel):
0000000000000000:1111111111111111:16
example(24 channel):
000000000000000000000000:111111111111111111111111:24
example(32 channel):
00000000000000000000000000000000:11111111111111111111111111111111:32
Remarks
1 The command code is a text string and does not need to be followed by a return.
1.2 Control command
X R C P
1(ON) 1~32 relay null(ON/OFF) C parameter
2(OFF) X for all relay :(Delay)
*(Jogging)
13 #relay 3 ON
23 #relay 3 OFF
132 #relay 32 ON
232 #relay 32 OFF
1X #relay all ON
2X #relay all OFF
Support password
2.2 command
data bytes >=2byte store format is LSB
example:0x1234,store format is 0x34,0x12
format
filed bytes comment
command 1 0xFF: set relay
0x07: multicast set relay
result(xor 0xAA) 1 pc->device: 0 xor 0xAA
device->pc: result xor 0xAA
result=0 success
result=other fail
session 1 0~255
device reply the same
relay command 1 0: read relay status
1:write relay
2:write relay with delay
3:write relay with jogging
4:relay keep alive
password 2 0~9999
0:no password
Password incurrent device no
reply
command data x
2.2.1 read relay status
pc send
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 0: read relay status
password 2 0~9999
0:no password
device reply
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 0: read relay status
Relay status 1(2/4/8CH) Bit0~31 map to relay relay1~32
2(16CH) Bit=1 relay on
3(24CH) Bit=0 relay off
4(32CH)
Example:
pc send:
FF AA 00 00 34 12 # password 0x1234
device reply:
FF AA 00 00 01 # relay 1 on
2.2.2 write relay
pc send
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 1:write relay
password 2 0~9999
0:no password
relay mask 1(2/4/8CH) Bit0~31 map to relay relay1~32
2(16CH) Bit=1,relay need update
3(24CH)
4(32CH)
relay set 1(2/4/8CH) Bit0~31 map to relay relay1~32
2(16CH) Bit=1,relay on
3(24CH) Bit=0,relay off
4(32CH)
device reply
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 1:write relay
Example:
pc send:
FF AA 00 01 34 12 05 01 # relay 1 on, rely 3 off
device reply:
FF AA 00 01
2.2.3 write relay with delay
pc send
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 2:write relay with delay
password 2 0~9999
0:no password
relay index 1 Bit0=1 relay on
and relay on/off Bit0=0 relay off
Bit1~bit7=relay index
Relay delay 2 1~65535 second
second
device reply
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 2:write relay with delay
Example:
pc send:
FF AA 00 02 34 12 03 05 # relay 1 on, delay 5 second off
device reply:
FF AA 00 02
2.2.4 write relay with jogging
pc send
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 3:write relay with jogging
password 2 0~9999
0:no password
relay index 1 Bit0=1 relay on
and relay on/off Bit0=0 relay off
Bit1~bit7=relay index
device reply
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
device not change
relay command 1 3:write relay with jogging
Example:
pc send:
FF AA 00 03 34 12 05 05 # relay 2 on, jogging
device reply:
FF AA 00 03
2.2.5 relay keep alive
device send
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
pc not change
relay command 1 4: relay keep alive
device MAC 6 device MAC address
Relay status 1 Bit0~7 map to relay relay1~8
Bit=1 relay on
Bit=0 relay off
pc reply
filed bytes comment
command 1 0xFF
result(xor 0xAA) 1 0 xor 0xAA=0xAA
session 1 0~255
pc not change
relay command 1 4: relay keep alive
Example:
device send:
FF AA 00 04 BC 34 88 12 34 56 00 # MAC BC:34:88:12:34:56 00:all relay off
pc reply:
FF AA 00 00
3 Protocol:HTTP GET CGI
Relay board as HTTP server, accept HTTP GET CGI request.
Support CGI relay on/off
Support CGI relay jogging
Support CGI relay delay
Support CGI password verification
2:type
1~65535:time(second)
6 pwd 0~9999 0~9999
Password incurrent device no
respond
2:type
1~65535:time(second)
Host: 192.168.1.9
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: session=12345678
Content-Type: text/html
Content-Length: 11
&0&0&0&1&0&
3.4.4 full example(fail)
HTTP GET request:
GET /relay_cgi.cgi?type=0&relay=0&on=0&time=0&pwd=0& HTTP/1.1
Host: 192.168.1.9
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: session=1234567
Content-Type: text/html
Content-Length: 7
&302&/&
4 Protocol:Modbus-RTU/TCP/ASCII
Support Modbus:
Modbus-RTU
Modbus-TCP/UDP
Modbus-ASCII
Modbus-RTU Over TCP/UDP
Modbus-ASCII Over TCP/UDP
Notice:
Modbus-RTU Over UDP/TCP,Modbus-ASCII Over UDP/TCP use RS485 addr
4.1 Registers
Register Name 0x03/0x06/0x10 Value
0x0000 Relay Count 0x03 2/4/8/16/32
0x0001 Relay Status 0x03 bit0~7 map to relay1~8
0x0002 Write Relay 0x06 bit0~7 new status of relay1~8(bit=1 ON,bit=0 OFF)
bit8~15 map to relay1~8 need update(bit=1 Update)
0x0012 Expand Write Relay Mask 1~16 0x10 relay1~16 mask bits; bit=1 need change,bit=0 no change
0x0013 Expand Write Relay mask 17~32 0x10 relay17~32 mask bits; bit=1 need change,bit=0 no change
0x0014 Expand Write Relay bits 1~16 0x10 relay1~16 relay bits; bit=1(ON),bit=0(OFF)
0x0015 Expand Write Relay bits 17~32 0x10 relay17~32 relay bits, bit=1(ON),bit=0(OFF)
Notice:
1、0x0003~6/0x0007~9/0x0012~15 is block,must written at the same time.
4.2 Modbus-RTU + Modbus-RTU Over TCP/UDP
4.2.1 0x03:Read holding register
Read all Relay Status
Send:
01 03 0000 0002 C40B
Recv:
01 03 04 0004 0000 BBF2
example:
below relay board “Serial Number” is 1868
so ETH MQTT client id is:dingtian-relay1868
so WiFI MQTT client id is:dingtian-wrelay1868
5.1 MQTT Topic Fast View
firmware version <V2.15.869
/dingtian/relay/in/control
/dingtian/relay/out/relayX
example:
/dingtian/relay1868/in/r1
/dingtian/relay1868/in/r2
/dingtian/wrelay1868/in/r1
/dingtian/wrelay1868/in/r2
example:
/dingtian/relay1868/out/r1
/dingtian/relay1868/out/r2
/dingtian/wrelay1868/out/r1
/dingtian/wrelay1868/out/r2
ETH publish X:1~32
/dingtian/relaySN/out/iX value: ON,OFF
WiFi
/dingtian/wrelaySN/out/iX
example:
/dingtian/relay1868/out/i1
/dingtian/relay1868/out/i2
/dingtian/wrelay1868/out/i1
/dingtian/wrelay1868/out/i2
ETH publish parameter filed data
/dingtian/relaySN/out/relayX idx relay index 1~32
WiFi status relay status ON,OFF
/dingtian/wrelaySN/out/relayX example:
{“idx”:”1”,”status”:”OFF”}
example:
/dingtian/relay1868/out/relay1
/dingtian/relay1868/out/relay2
/dingtian/wrelay1868/out/relay1
/dingtian/wrelay1868/out/relay2
ETH publish parameter filed data
/dingtian/relaySN/out/inputX idx relay index 1~32
WiFi status relay status HIGH,LOW
/dingtian/wrelaySN/out/inputX example:
{"idx":"1","status":"HIGH"}
example: {"idx":"1","status":"LOW"}
/dingtian/relay1868/out/input1
/dingtian/wrelay1868/out/input1
ETH publish example:
/dingtian/relaySN/out/ip 192.168.1.100
WiFi
/dingtian/wrelaySN/out/ip
example:
/dingtian/relay1868/out/ip
/dingtian/wrelay1868/out/ip
ETH publish example:
/dingtian/relaySN/out/sn 1868
WiFi
/dingtian/wrelaySN/out/sn
example:
/dingtian/relay1868/out/sn
/dingtian/relay1868/out/sn
ETH publish example:
/dingtian/relaySN/out/mac bc:34:88:00:00:00
WiFi
/dingtian/wrelaySN/out/mac
example:
/dingtian/relay1868/out/mac
/dingtian/relay1868/out/mac
ETH publish 2,4,8,16,32
/dingtian/relaySN/out/input_cnt
WiFi
/dingtian/wrelaySN/out/input_cnt
example:
/dingtian/relay1868/out/input_cnt
/dingtian/wrelay1868/out/
input_cnt
ETH publish 2,4,8,16,32
/dingtian/relaySN/out/relay_cnt
WiFi
/dingtian/relaySN/out/relay_cnt
example:
/dingtian/relay1868/out/relay_cnt
/dingtian/wrelay1868/out/relay_cnt
5.5 MQTT LWT topic
ETH: firmware version >= V2.17.188
WiFi: firmware version >= V1.0.449
topic type value
ETH publish online,offline
/dingtian/relaySN/out/lwt_availability
WiFi
/dingtian/wrelaySN/out/lwt_availability
example
/dingtian/relay1868/out/lwt_availability
/dingtian/wrelay1868/out/
lwt_availability
6 Protocol:CoAP
Relay board as CoAP server, accept CoAP Client request.
Support relay on/off
Support relay jogging
Support relay delay
Support password verification
ON/OFF example:
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r1
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r2
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r3
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r4
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r5
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r6
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r7
./coap-client -e "1:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r8
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r1
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r2
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r3
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r4
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r5
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r6
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r7
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r8
…
./coap-client -e "0:ON/OFF:0:4660" -m put coap://192.168.1.100/dingtian/r32
DELAY example:
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r1
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r2
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r3
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r4
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r5
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r6
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r7
./coap-client -e "1:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r8
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r1
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r2
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r3
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r4
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r5
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r6
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r7
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r8
…
./coap-client -e "0:DELAY:5:4660" -m put coap://192.168.1.100/dingtian/r32
JOGGING example:
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r1
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r2
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r3
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r4
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r5
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r6
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r7
./coap-client -e "1:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r8
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r1
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r2
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r3
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r4
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r5
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r6
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r7
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r8
…
./coap-client -e "0:JOGGING:5:4660" -m put coap://192.168.1.100/dingtian/r32