[TOC]

# 微瓴IOT通讯协议

通讯协议采用 TLV 结构,既type,length,value,其中type占2个字节,length占4字节(32位无符号整型),value的长度根据length的值来定义。 密文使用16进制文本传输。

注册服务器IP地址为:iot.weiling.qq.com:18831

本文档示例中使用的设备SM2非对称秘钥均在开放平台产品页获取

流程:

​ 1.在开放平台申请产品pid,获取相应秘钥;

​ 2.参照IOT通讯协议1.1 - 1.3进行设备注册登录;

​ 3.注册完成之后,联系微瓴对接人提供微瓴沙箱项目权限,将设备接入微瓴沙箱进行调试,设备导入项目环境后需要再次进行设备注册来获取登陆的IP地址(来源于注册时返回的projAccessAddr);

​ 注意:设备导入项目环境前是没有项目属性的,服务器IP默认为iot.weiling.qq.com:18831,设备导入微瓴沙箱环境之后,将携带有项目属性,对应的服务器IP也随项目环境改变。需要重新注册,将IP切换为注册返回的数据中的accessAddr里的地址。

Alt text

​ 4.选择MQTT(来源于注册时返回的mqttServer)使用微瓴IOT基础协议进行消息上报测试;

# 1. 设备接入

# 1.1 注册

  • 协议字 0x000D
  • 通讯协议
  • 客户端请求包
key type description
v Integer 数据协议版本号,此版本号为2
pid String productId,产品IP,从微瓴开放平台申请
data JSON 数据内容,通过服务器公钥加密传输
 sn String 设备序列号,厂商自己生成
 lic String 通过设备私钥生成的licence,SM2(pid+sn),签名时使用的userId为当前pid
 ts Long 当前时间
mac String 加密后的data所计算的md5值
  • 示例

明文

{
  "v": 2,
  "pid": "1700006345",
  "data": {
    "lic": "3045022100A25E953B55E466884C4DE68546F7F1BA97476490D5BC15424E3C72DCF9460B4A0220528A224D5697FADA38EC4D3B2AC26571969EBF703FCA784D41B6F8C17845BFDD",
    "sn": "1700006345",
    "ts": "1591347260079"
  },
  "mac":"b2a995b7de32efacd7144747bb7e870a" 
}
1
2
3
4
5
6
7
8
9
10

SM2加密后

{
  "v": 2,
  "pid": "1700006345",
  "data": "30820129022100C15EF8033C36AA13DE38DE14402D737FD56E194F99DBA890E76235B1D812F6FE0220684956A8B3C1E01C556372A93540883DAF462354BC0E34E212B8ECEC96FA2C65042004E6BD33B9D03F53895AB33D72D8A75AC61A81FF10ED86CC5FD4B0F5D0FD68D50481BF6B3F661766323A784159653A74AAF0DAA3DF444773C95B41340CDFD70A8AD4271EB71BA42FE0B7E8469E8E820DDE237507818E521616E76DE548FD205D17C1C6461E7EF2BBBA917F4D8D265A55A662779C8B5EC171B4D34ECF1C323A771ADEA1B28E2108FDF5293F8720A17DF80A33889EF109CEE0A696780F674AD30B5EBD9BB4CC2ED319D4705C30BEE65E764C5376D0C62CEC7655BCD0F58ED98597A93D9B3536FAA2D569366072E208D914414BAC7CB16A3E0D2D84063A1CA09D66FD15",
  "mac": "b2a995b7de32efacd7144747bb7e870a"
}
1
2
3
4
5
6

TCP传输的完整内容

000d000002a77b2264617461223a223330383230313239303232313030433135454638303333433336414131334445333844453134343032443733374644353645313934463939444241383930453736323335423144383132463646453032323036383439353641384233433145303143353536333732413933353430383833444146343632333534424330453334453231324238454345433936464132433635303432303034453642443333423944303346353338393541423333443732443841373541433631413831464631304544383643433546443442304635443046443638443530343831424636423346363631373636333233413738343135393635334137344141463044414133444634343437373343393542343133343043444644373041384144343237314542373142413432464530423745383436394538453832304444453233373530373831384535323136313645373644453534384644323035443137433143363436314537454632424242413931374634443844323635413535413636323737394338423545433137314234443334454346314333323341373731414445413142323845323130384644463532393346383732304131374446383041333338383945463130394345453041363936373830463637344144333042354542443942423443433245443331394434373035433330424545363545373634433533373644304336324345433736353542434430463538454439383539374139334439423335333646414132443536393336363037324532303844393134343134424143374342313641334530443244383430363341314341303944363646443135222c2276223a322c22706964223a2231373030303036333435222c226d6163223a226232613939356237646533326566616364373134343734376262376538373061227d
1
  • 服务端返回包
key type description
v Integer 数据协议版本号,此版本号为2
code Integer 请求错误码,0为成功
msg String 消息返回错误信息
data JSON 数据内容,通过设备公钥加密
wId String 设备在云端的唯一标识,后续登录和通讯都已wId为准。
mqttReciveTopic String 设备订阅的topic
mqttPushTopic String 设备推送消息使用的topic
mqttClientId String MQTT服务客户端ID,目前同wId
mqttServer String MQTT服务链接地址
mqttUser String MQTT服务登录用户名
mqttPassword String MQTT服务登录密码
sslType String 通讯加密类型,none:无加密,PSK:使用psk方式通讯,SSL:按照单向认证方式加密
httpDomain String http通讯请求的地址
projId String 设备当前所属项目ID,为0表示未导入项目
projAccessAddr jsonArray 设备当前所属项目登录地址
ts Long 时间戳
mac String 加密后的data所计算的md5值

注意:1.mqttReciveTopic返回的订阅地址为/welink/msg/receive/v1/{din},v1版本的topic只支持din。如果要使用wId则需要使用v2版本的topic:/welink/msg/receive/v2/{wId};
   2.mqttPushTopic返回的推送地址为/welink/msg/push/v1/{din},v1版本的topic只支持din。如果要使用wId则需要使用v2版本的topic:/welink/msg/push/v2/{wId}

  • 示例

返回密文

{
  "code": 0,
  "data": "3082025d02201ee971f2e5a5e0334acd58aa4a619bae89bd37d85111cc016227caff011dac0f022100e56dbc0d48dbbe904ef134dd10b97bbcc554c7bdf48a6d2c6f29250c7d4297fa04202d544247b444d855eb1b788feef4416aeb837d42351aa225e41fb00802846bdc048201f204bf853903594deca1e805cefe8a84397ab143b9f0fda13bbe4e2b3b7cba7f7f748eb42c3b136fd3abbab71fe4926628b26c10ac4a4c0d8fec186bc25ed5c125df25f1ed8181dc4a9b407aa0f691913e4ecd45674e9366b0268628377f8c5f9ce33a89075b28205a5e3fafa7b66b43af9b7c5c817469e11619907c20254a30df98514df1e31f90d8df7efb603f765b3d8cefeca5a223a3f33b2cff89f74f9d240d16634a9c800d09bcff20ddcf1aeb74adb37840b46801347c0334f172c4a035d6fba9fe825d1c6e056b62b60aedfbcc7b0a581cbfa134e868b0030ec5e91aaf3d9a6a2315dc2274d21de83df06512223021d21b77c9fe6cb21ae94125bbb459d123781dd33fd59e0362a496b12c0bfa0f24e71805ce8030f8f52ef910698ddf7554cad6869e1311d48fab65e93d350ec2202b383f5c61d62670d7a38eef7ea33f7168ee52b3d7446d91d23be279d6bfc91e0d57b1c45de0960cd31739bf9db884b833c9e5c46a926355d218db6c55ba4df31988d086712e5746256d53cbca3f9ee01a5a33b46c28545d477d209d4a924f5a172ae0edd821b80dc3e75b91ab801a2c491b74ca964805b293a75add81879385e628cd08af4157edc45bfa328cd082bc58daa26514fe1f2ff58a5a7ac787c35ed4a664c540f0c0be2c7738b3b0461c3efc1630759307ca97d75f05b623b297d9",
  "mac": "a5bf2a7fb5874f6ce806ec8584697be0",
  "msg": "ok",
  "v": 2
}
1
2
3
4
5
6
7

解密后明文

{
   "projId": "0",
   "projAccessAddr": [
    "iot.weiling.qq.com:18831"
   ],
   "sslType": "none",
   "wId": "d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
   "mqttReciveTopic": "/welink/msg/receive/v1/",
   "mqttPushTopic": "/welink/msg/push/v1/",
   "mqttClientId": "300000000000113596",
   "mqttServer": "tcp://14.22.3.11:18833",
   "mqttUser": "welink_client",
   "mqttPassword": "rAElRzKIvX_6EZqEWIvKNr_ILTm7*V3Se2v47TeaJACquKx40PtsU*******",
   "ts": 1597379169314,
   "httpDomain": "https://cloud-center.welink.qq.com"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 错误码
code description
10000 上报数据格式异常
10001 sn格式非法或未放号
10002 没有上传设备公钥
10003 mac验证失败

1.licence生成,使用SM2算法用设备私钥加密pid+sn字符串获得,签名的userId使用pid;
2.示例的内容是明文,实际传输需要加密后再传输。


# 1.2 挑战应答

  • 协议字 0x000B

  • 通讯协议

  • 客户端请求包 01

  • 示例 以下为完整报文

000B0000000101
1
  • 服务端返回包
key type description
v Integer 数据协议版本号
code Integer 请求错误码,0为成功
msg String 消息返回错误信息
data Integer 随机数
  • 示例
{
  "v":1,
  "code":0,
  "msg":"ok",
  "data": 89741245
}
1
2
3
4
5
6

# 1.3 登录

  • 协议字 0x000E
  • 通讯协议
  • 客户端请求包
key type description
v Integer 数据协议版本号,此版本号为2
pid String productId,产品IP,从微瓴开放平台申请
data JSON 数据内容,通过服务器公钥加密
 wId String 注册时获得的wId
 lic String 通过设备私钥加密pid,sn,挑战应答返回的random所生成的licence,SM2(pid+sn+random),签名时使用的userId为当前pid
 ran String SM4,向量参数,长度:16,格式:大小写字母+数字
 challenge_ran Integer 挑战应答的随机数,非必填
mac String 加密后的data所计算的md5值
  • 示例
{
  "v": 2,
  "pid": "1700006345",
  "data": {
    "wId": "d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
    "lic": "304402201974BB000D2D403356B8479CC075209033A7647F1D1C59D160E0E8C217C3C77E02206AABD81445B830484C91BAEC043440855032211525AA0B5C19DF902247F3A326",
    "ran": "9G44eKBX76pXXsl0",
    "challenge_ran": 1396951838
  },
  "mac": "a5bf2a7fb5874f6ce806ec8584697be0"
}
1
2
3
4
5
6
7
8
9
10
11

SM2加密后

{
  "data": "30820161022100D4AD312FE5DB022AC839FF8FA785C00C76E63DF62906B33CC5AB86224533D0B502207DF8C335111B64912BE684E38EE73596BC3D56C130CA5F37F887D0B7DA46F8CB0420EF63D8BFB82741C0EB317350434D8B559E1EB05A4626B1ACB76E2798988802F40481F7F35B28A4C3C3FA52151EFDC5CC5448A7010681C888AA7CFA99C60017AAFBE71F41FE664439A0113035E9DE615315F0F6824C18E9641954C0D91A107A7AC4832956449DB85851E06424E1DF8D9DACC5ED894AB87BBF376FB958501DA42107DC277CF35F52E8D5DB090C6EDD0E918F4A7148625CE8C187FBC2AAA317EA5912CB5F1C62B889030902DD35185C7D9A7499A72B82AFA2B9708EFAE52C63B22CEAA9A18661AF31FD241B78CEDC44CEC57A0FC336BCDFC093CC38138674C5501D85237650F6C29E518B4CD6DB78DBC0BB3A876C5633626E9653BB9E5B0A2CCC2D42D009F890F3DAD21C4785B21DB6271C1EBB6392187FC11ACC91",
  "v": 2,
  "pid": "1700006345",
  "mac": "fe4d190b029a5b0522c72b6ca4f5c392"
}
1
2
3
4
5
6

TCP传输的完整内容

000e000003177b2264617461223a22333038323031363130323231303044344144333132464535444230323241433833394646384641373835433030433736453633444636323930364233334343354142383632323435333344304235303232303744463843333335313131423634393132424536383445333845453733353936424333443536433133304341354633374638383744304237444134364638434230343230454636334438424642383237343143304542333137333530343334443842353539453145423035413436323642314143423736453237393839383838303246343034383146374633354232384134433343334641353231353145464443354343353434384137303130363831433838384141374346413939433630303137414146424537314634314645363634343339413031313330333545394445363135333135463046363832344331384539363431393534433044393141313037413741433438333239353634343944423835383531453036343234453144463844394441434335454438393441423837424246333736464239353835303144413432313037444332373743463335463532453844354442303930433645444430453931384634413731343836323543453843313837464243324141413331374541353931324342354631433632423838393033303930324444333531383543374439413734393941373242383241464132423937303845464145353243363342323243454141394131383636314146333146443234314237384345444334344345433537413046433333364243444643303933434333383133383637344335353031443835323337363530463643323945353138423443443644423738444243304242334138373643353633333632364539363533424239453542304132434343324434324430303946383930463344414432314334373835423231444236323731433145424236333932313837464331314143433931222c2276223a322c22706964223a2231373030303036333435222c226d6163223a226665346431393062303239613562303532326337326236636134663563333932227d
1
  • 服务端返回包
key type description
v Integer 数据协议版本号,此版本号为2
code Integer 请求错误码,0为成功
msg String 消息返回错误信息
data JSON 数据内容,通过 设备公钥加密
 keyUsefulTime Integer 加密KEY以及httpToken的有效时间,单位:秒
 httpToken String http协议通讯时使用的token,有效期:24小时,推荐23小时内重新登录获取新加密KEY
 ran String SM4,加密KEY,长度:16,有效期:24小时,推荐23小时内重新登录获取新加密KEY
 ts Long 时间戳
mac String 加密后的data所计算的md5值
  • 示例

返回密文

{
  "v": 2,
  "code": 0,
  "msg": "ok",
  "data": "3081e0022100afde698b4331f2d8526502493d0dabf5f053a4fb41ca3fe1302586c7572bfe79022100c832e353e48f7c1459a6a2f974f08ca6ddae0daed9a09e37f0f4e053bf0299620420f0a4b4c1c59772bb7236ce7f641b6f48a604029169f377ebb197f53201b02f680476577478c95a0374e5907f18a84b58a34099035511228c7196ff740916f166d08baf6fb1f495b2141b35add3d75511844894d3e0fc0f9fe060df796ab086be011ee644e6936e35d9b7f8b628b7d1c874d8a0396aa22f7b77d0a2e96ab637731913b5c1175fdeb697e0936c7d43a8e5239e1b2822198a43",
  "mac": "f481ed0fdf358bbd265af3b1f784d023"
}
1
2
3
4
5
6
7

解密后明文

{
  "v": 2,
  "code": 0,
  "msg": "ok",
  "data": {
    "keyUsefulTime": 86400,
    "httpToken": "e866d89d-7728-4a4e-863f-f2948f6c8611",
    "ran": "aE1JFpkBHjyuGllk",
    "ts": 1597380780621
  },
  "mac": "a1935c8783a912ba4ca53381cc16f330"
}
1
2
3
4
5
6
7
8
9
10
11
12

登录成功后,后续的消息传输使用SM4算法来加密消息体,加密key由客户端提供加密的向量(登陆请求的ran字段)和服务端返回加密的KEY值(登陆响应的ran字段)组合而成。


# 2 自定义消息

# 2.1 MQTT

  • 相关配置
  • mqttURL:mqtt服务链接地址
  • wId:设备唯一标识
  • user:mqtt登录用户名
  • password:mqtt登录密码
  • 消息订阅路径:/welink/msg/receive/v2/{wId}
  • 消息发布路径:/welink/msg/push/v2/{wId}
  • 注意事项:
  1. MQTT协议的心跳消息,需要在创建产品时设置的心跳间隔内最少上报一次,推荐上报周期为30秒/次;
  2. 同一个clientID只能同一个连接使用,不能多个连接共用同一个clientID;
  3. 服务质量水平(QoS)是一个消息的发送者和限定递送保证用于特定消息的消息的接收器之间的协议。MQTT中有2个QoS级别: 1.最多一次(0);2.至少一次(1)。当前场景下QoS为0就能满足需求,推荐使用0。
  • 消息体(String)
key value description
wId String 设备唯一标识
subwId String 子设备唯一标识,非必填
msgType String report:主动发送,ack:查询返回
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,比如网关心跳消息为30001,模型消息为80000
value Object 除了本文档中的基础协议(3.1-3.11)可自定义消息内容,其他设备数据需要严格按照微瓴对象模型 (opens new window)上报,获取途径:1.项目管理平台自定义;2.使用公共模型
seq String 消息序号(递增)
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
  "wId":"cae629a1-befc-4084-b8a6-043855e58a3a",
  "subwId":"47046519-ff93-4635-8d48-b389224151c3",
  "msgType":"report",
  "timeStamp":1600312947899,
  "random":"2144425053",
  "datapoint":30001,
  "value":"welink",
  "seq":"2144425053"
}
1
2
3
4
5
6
7
8
9
10
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
aa7d9a40a6e06f54b51e1a0c78f08b652b70cecb12c4728842440904d7bb32cee2ae582a6ee0f0c6937853d3c463d9f0d43a65162fa29b16e65e0e041cd7f7e1d55382550749e7b18d0d4af15cd1a494fdbc957fbf142dca58f3c0f015f3a757e14e7206ecaf13df22fe8192b9cf2aded7431b57dc5513e1a1b0d0d2b08fd663cc849f223fef1134e95c34e15fc0c85ee40685e337f30020919357acfa6f957282b34be596a5432079ba75ac30f382ae
1

# 3 微瓴IOT基础协议

以下文档中的加密KEY都为示例,实际请以登录的参数为准。其中SM4加密KEY为登录返回的ran,向量为登录时上报到微瓴的ran;

基础协议中的datapoint为功能码,如datapoint为30001的消息只能用来上报直连设备心跳。上报设备属性datapoint统一使用80000

# 3.1 标准消息格式

key value description
wId String 设备唯一标识
subwId String 子设备唯一标识,为空或者无此字段表示直连设备消息
msgType String report:主动发送,ack:查询返回
seq Long 消息序号
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码
value String 除了本文档中的基础协议(3.1-3.10)可自定义填充消息,其他设备数据需要严格按照微瓴对象模型 (opens new window)上报,获取途径:1.项目管理平台自定义;2.使用公共模型

直连设备基础消息格式:

{
  "wId": "959fcdae-0804-4cd7-b578-4d04d9a99ee1",
  "msgType": "report",
  "datapoint": 80000,
  "random": 1149701758,
  "timeStamp": 1536151747890,
  "value": "welink",
  "seq": "1149701758"
}
1
2
3
4
5
6
7
8
9

网关上报子设备基础消息格式:

{
  "wId": "959fcdae-0804-4cd7-b578-4d04d9a99ee1",
  "subwId": "213sdae-0023-4cd7-jf8s-ds87d9a678dj",
  "msgType": "report",
  "datapoint": 80000,
  "random": 1149701758,
  "timeStamp": 1536151747890,
  "value": "welink",
  "seq": "1149701758"
}
1
2
3
4
5
6
7
8
9
10

# 3.2 直连设备上报心跳消息

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回,固定report
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30001
value String 消息自定义内容,固定为welink
seq String 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
  "timeStamp": 1536151747890,
  "random": 1149701758,
  "datapoint": 30001,
  "msgType": "report",
  "wId": "959fcdae-0804-4cd7-b578-4d04d9a99ee1",
  "value": "welink",
  "seq": "1149701758"
}
1
2
3
4
5
6
7
8
9
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee269f3658fc8da5c1c711aa0ef70b2ecb44e1dc993e1ecd0a3b2c46d165675fb0ebb12c2a6cb6d0d55842e4490c6b2e3b87aefd17a31cece1dd61d76b5b6d785bf7218ed107fb92a684dde3c835d5a491a1660481addf56de388f51d5fc7a1eb72c866f89eb74af434cd488fc2a44762d31d3e6a78c89bcc18665c3241d18728f9e
1

# 3.3 网关上报子设备注册消息

key value description
wId String 网关设备唯一标识
msgType String report:主动发送,ack:查询返回,固定report
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30010
value String 消息自定义内容,json类型字符串
 page Integer 第几页
 pageSize Integer 一页多少记录,最多100
 total Integer 总记录数
 deviceList List 设备列表
  sn String 设备sn
  pid String 产品id
  deviceName String 设备名称,为空时默认 “设备类型-SN”;若不为空,超过50个字符,则截取前50个字符作为设备名称
seq String 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
   "wId":"e4daa000-bff0-4a76-beb2-4b1e8e6ac6b8",
   "random":1149701758,
   "msgType":"report",
   "timeStamp":1536151747890,
   "datapoint":30010,
   "value":{
      "page":1,
      "pageSize":5,
      "total":2,
      "deviceList":[
         {
            "pid":"1700005449",
            "sn":"pppanchong_12345ddd1016",
            "deviceName":"设备名称1"
         },
         {
            "pid":"1700002550",
            "sn":"sn201800001",
            "deviceName":"设备名称2"
         }
      ]
   },
   "seq":"1149701758"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee26db48628019ba9a3ce3c1b0087eac5f88bb7776fe1ecdc858dfd7374294e490e120e282ce8cbd45cc15ebd76981893163ebd1bd942d688ed4628a95eb0649885e7414e2c1a4c741200f5378c19109350b4350d218dc8497ed198a774196dbf4a55a279758aff26d62204ded1a4bdd126a1e7508f1bf4a60ca1bc9cc9ecc4e9529fa1e1d7727bfb1a8e2d2ad6253120dfdfc34f3572a0b113f6c24b4c80949e3885f27bec81e51beb4f3d2ecc2feffacbe7ea18b8ee375c74f6704ef0ecc4549374f22bf101457ce5eef6cdad006171b1949d18c835a9c314eae735e72d593c95e34976a9a9b99ded95d1ffed37495e2fea05874432a764943beb670601fd9c0f5
1

# 3.4 获取网关下子设备列表消息

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回,固定report
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30007
value String 消息自定义内容,固定为welink
seq String 消息序号
  • 举例
  • 加密key:LjMAotJ58hncFXUJ
  • 向量:hfvj91uWuOso3LtF
  • 明文
{
  "wId": "a9213f89-b716-4cfe-8b32-f6c2ef916c3f",
  "msgType": "report",
  "random": 1149701758,
  "timeStamp": 1536151747890,
  "datapoint": 30007,
  "value": "welink",
  "seq": "1149701758"
}
1
2
3
4
5
6
7
8
9

注:上报获取网关下子设备列表消息后,微瓴会下发一条datapoint为30006的子设备列表消息,格式如:3.5

  • 密文
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee268b469a21679c6a2853c79a5155028d10fa03513a82ad41b6c7b4c788e0611377adfd35fbb3afa7b943868b33c53971b76edcc2ec203c670e143bf4ac7d4460f3627b008c9ddcb7e321862d156f77db53e2883ad4ea2b7253d2266476feb772a936aa8c13453929c37d4a867f4e76873832597a85012b5441ef6e5be4d75b8081
1

# 3.5 子设备列表接收(非摄像头类)

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回,固定report
datapoint Integer 功能码,固定为30006
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
messageVersion Integer 消息版本号
totalPage Integer 总页码
totalRow Integer 总设备数
pageNumber Integer 当前页码
pageSize Integer 当前页码设备数
value String 消息自定义内容,数组类型字符串
 wId String 子设备wId
 pid Integer 子设备的product id
 sn String 子设备唯一序列号
seq String 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
   "wId":"e2c9d8c5-f13f-4dc9-aee6-348bd56546ad",
   "msgType":"report",
   "datapoint":30006,
   "random":1149701758,
   "timeStamp":1536151747890,
   "messageVersion":1536151747902,
   "totalPage":1,
   "totalRow":2,
   "pageNumber":1,
   "pageSize":2,
   "value":"[{\"wId\":\"527012d3-f5a0-47b1-932b-929f0776b2d3\",\"pid\":1700005449,\"sn\":\"pppanchong_12345ddd1016\"},{\"wId\":\"622cf1d8-b9b0-4834-8d9e-3ea27bc73cb8\",\"pid\":1700002550,\"sn\":\"sn201800001\"}]",
   "seq":"1149701758"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

注:1.网关一次下发的子设备数量不会超过1000个,当网关下的子设备数量大于1000时,就会以分包的形式下发子设备消息(单条消息子设备的数量限制1000个);

  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee266aefaf9fcdc0eeb00723f5712b274aeca21767a067d938a76c833259310afa15033eb2c2a90b960b3a833a946a1a6a7f759693c74c31109cc9abf5e5353d291f4428acbbe77c1c7a1900fe864da91833d14f9055be1adcc6a44543a93f2a005cb13779b47325da5aa2a6e708345eead1729199c1520fb5be676aac1ae6a020c3fa8c9e61e64c3ce7e92ab3fd602d9441fcaa5ed4e6a64aed4e8b3908d0809b5f74d7d6be3ee3bf4294504d24f95e3828aa0554875daa1403b16dfb79c4e019a2bd72e6ecd1cad5d7f4f8511f9fc06252e06fcbed81af49fffc0ab279f68decb30becf84f3edee669bd59ffa02ab01612b4bb3f860d8cf4d1552695be8b6c1a3d98497b1b3256102024aa0b67f7fd8d718bfac178fe9402a977ed7234e02a304845c230f229ca91c5653aae7884fabab94ca624764a2031060520d09bf14b60ec
1

# 3.6 子设备列表接收(摄像头类)

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回,固定report
datapoint Integer 功能码,固定为30006
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
messageVersion Integer 消息版本号
totalPage Integer 总页码
totalRow Integer 总设备数
pageNumber Integer 当前页码
pageSize Integer 当前页码设备数
value String 消息自定义内容,数组类型字符串
 wId String 子设备wId
 pid Integer 子设备的product id
 sn String 子设备唯一序列号
 manufacturer String 设备厂商
 nvrip String NVRIP地址
 nvrport Integer NVR端口号
 nvrusername String NVR用户名称
 nvrpassword String NVR密码
 nvr_manufacturer String NVR生产厂商
 channel Integer NVR通道号
 rtspuri String RTSP地址
 rtsp_port Integer RTSP端口号
 ip String IPCIP地址
 port Integer IPC端口号
 username String IPC用户名称
 password String IPC密码
 ipc_manufacturer String IPC生产厂商
 stream_from String 实时流来源
 is_convert Integer 是否经过地址转换 0-否 1-是
seq String 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

  • 1.摄像头类示例

{
   "wId":"b79e0682-a7fe-4074-a125-2ef359f7af0f",
   "msgType":"report",
   "datapoint":30006,
   "random":2011032394,
   "timeStamp":1658461159965,
   "messageVersion":1658461159982,
   "totalPage":1,
   "totalRow":2,
   "pageNumber":1,
   "pageSize":2,
   "value":"[{\"nvrusername\":\"\",\"ipc_manufacturer\":\"\",\"ip\":\"\",\"nvrpassword\":\"\",\"din\":\"200900000000013050\",\"channel\":0,\"pid\":1700006212,\"rtspuri\":\"\",\"nvrport\":0,\"manufacturer\":\"111\",\"password\":\"\",\"stream_from\":\"\",\"wId\":\"cf6a976c-e5d9-4cca-abfc-ffaa8d9412c5\",\"nvrip\":\"\",\"subdin\":\"0\",\"port\":0,\"nvr_manufacturer\":\"\",\"sn\":\"test20220524001\",\"is_convert\":1,\"rtsp_port\":0,\"username\":\"\"},{\"nvrusername\":\"\",\"ipc_manufacturer\":\"\",\"ip\":\"\",\"nvrpassword\":\"\",\"din\":\"200900000000013558\",\"channel\":0,\"pid\":1700006212,\"rtspuri\":\"\",\"nvrport\":0,\"manufacturer\":\"111\",\"password\":\"admin\",\"stream_from\":\"\",\"wId\":\"e4851191-d795-4f36-b6cf-33e548b031db\",\"nvrip\":\"\",\"subdin\":\"0\",\"port\":0,\"nvr_manufacturer\":\"\",\"sn\":\"test20220722001\",\"is_convert\":1,\"rtsp_port\":0,\"username\":\"admin\"}]",
   "seq":"1156056"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

注:1.网关一次下发的子设备数量不会超过1000个,当网关下的子设备数量大于1000时,就会以分包的形式下发子设备消息(单条消息子设备的数量限制1000个);

  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee266aefaf9fcdc0eeb00723f5712b274aeca21767a067d938a76c833259310afa15033eb2c2a90b960b3a833a946a1a6a7f759693c74c31109cc9abf5e5353d291f4428acbbe77c1c7a1900fe864da91833d14f9055be1adcc6a44543a93f2a005cb13779b47325da5aa2a6e708345eead1729199c1520fb5be676aac1ae6a020c3fa8c9e61e64c3ce7e92ab3fd602d9441fcaa5ed4e6a64aed4e8b3908d0809b5f74d7d6be3ee3bf4294504d24f95e3828aa0554875daa1403b16dfb79c4e019a2bd72e6ecd1cad5d7f4f8511f9fc06252e06fcbed81af49fffc0ab279f68decb30becf84f3edee669bd59ffa02ab01612b4bb3f860d8cf4d1552695be8b6c1a3d98497b1b3256102024aa0b67f7fd8d718bfac178fe9402a977ed7234e02a304845c230f229ca91c5653aae7884fabab94ca624764a2031060520d09bf14b60ec
1

# 3.7 网关上报子设备心跳消息

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回,固定report
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30002
value String 消息自定义内容,json类型字符串
 page Integer 当前页码
 pagesize Integer 总页码
 total Integer 设备总数
 deviceList List 子设备状态列表,列表长度为100以下
  wId String 子设备wId
  status String 子设备状态
seq String 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
  "wId":"dfd07fef-8f2e-48dd-ae38-810236fa32e2",
  "msgType":"report",
  "random":1149701758,
  "timeStamp":1536151747890,
  "datapoint":30002,
  "value":{
    "page":1,
    "pagesize":1,
    "total":5,
    "deviceList":[
      {
        "wId":"5de40a08-3477-47c5-ac4a-2409e6ef371d",
        "status":"offline"
      },
      {
        "wId":"fcd4dbe1-87b6-4e60-90e3-2c6142014a29",
        "status":"online"
      }
    ]
  },
  "seq":"1149701758"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee2605a086c9f88332cc3321c142dddeb1f24c0f7027b1fdc5bc669a5d6afc06d31486f281029624b7d5dceb42d14a4c02f48e0294e8a58df104c4939a17767f4a7821a51762d8075bf25f8ee2828184bbdcb19edc3db8453e3a5a7418b0393a22b18bbe3a7c80bbccde29449a78936b4fbaa6c46d8e6f3655fa686cbc6f8fe1f48040b52acbd501b07c8d3abd19f88a0b48aa55028fbdf0fe398cd1200518170365938c81c0fbb2c3125edce138ea31090471947e38f3ad12e9a39e1241f6126272cfac77806e8671e42633268278339dc2f46b05fe6cdf11d7667084ec337d13f063dbfca2f83c474626d0b5a3f0c899e673a791be0c72ce9b598ed713f4b55f53582fc7a65a69315bc508c1d5d0ba0a6cd281ab25de74920258d849f70d7695bd
1

# 3.8 设备下载文件

  • 设备收到的消息格式
key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30003
value JSON 消息内容,如下实例
 fileId Stirng 文件唯一标识
 fileName Stirng 文件名
 length Integer 上传文件大小
 hash String 文件内容做SHA-256的hash,格式为16进制
 url String 文件下载地址
 data String 自定义透传消息
seq String 消息序号
  • 明文
{
  "timeStamp":1536151747890,
  "random":1149701758,
  "datapoint":30003,
  "msgType":"report",
  "wId":"d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
  "value":{
    "fileId":"3364aef0-ca60-450a-b694-9dedae930b05",
    "fileName":"testupload.jpg",
    "length":25,
    "hash":"73b48297c6ebac071ac66a03a8dabccbc9d0377c9b0b525d31e8cd14f5892713",
    "url":"http://10.56.63.195:8504/file/upload/200200000000000008/2018-12-21/testupload?save_type=bigfiletodevice&wl_auth_sign=06f8789de2741cb7a29e40fa847a7e9cb2adcdc1fd27f9241515aa233566fe1b&wl_expire_time=1545406322095&wl_file_length=25&wl_file_sign=73b48297c6ebac071ac66a03a8dabccbc9d0377c9b0b525d31e8cd14f5892713&write_disk=d5",
    "data":"photo"
  },
  "seq":"1149701758"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee266aefaf9fcdc0eeb00723f5712b274aeca21767a067d938a76c833259310afa15033eb2c2a90b960b3a833a946a1a6a7f759693c74c31109cc9abf5e5353d291f4428acbbe77c1c7a1900fe864da91833d14f9055be1adcc6a44543a93f2a005cb13779b47325da5aa2a6e708345eead1729199c1520fb5be676aac1ae6a020c3fa8c9e61e64c3ce7e92ab3fd602d9441fcaa5ed4e6a64aed4e8b3908d0809b5f74d7d6be3ee3bf4294504d24f95e3828aa0554875daa1403b16dfb79c4e019a2bd72e6ecd1cad5d7f4f8511f9fc06252e06fcbed81af49fffc0ab279f68decb30becf84f3edee669bd59ffa02ab01612b4bb3f860d8cf4d1552695be8b6c1a3d98497b1b3256102024aa0b67f7fd8d718bfac178fe9402a977ed7234e02a304845c230f229ca91c5653aae7884fabab94ca624764a2031060520d09bf14b60ec
1

# 3.9 设备上传文件

注:单个文件不超过300M,存储时间为24小时

设备上传文件分成三个步骤

  • 设备请求上传

  • 微瓴异步回复设备上传url

  • 设备完成上传,上报给微瓴

  • 设备请求上传格式

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30004
value JSON 消息内容,如下实例
 fileName Stirng 文件名
 length Integer 上传文件大小
 hash String 文件内容做SHA-256的hash,格式为16进制
 data String 自定义透传消息
seq String 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
  "wId": "d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
  "msgType": "report",
  "random": 1149701758,
  "timeStamp": 1536151747890,
  "datapoint": 30004,
  "value": {
    "fileName": "testupload.jpg",
    "data": "photo",
    "length": 25,
    "hash": "73b48297c6ebac071ac66a03a8dabccbc9d0377c9b0b525d31e8cd14f5892713"
  },
  "seq": "1149701758"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee266aefaf9fcdc0eeb00723f5712b274aeca21767a067d938a76c833259310afa15033eb2c2a90b960b3a833a946a1a6a7f759693c74c31109cc9abf5e5353d291f4428acbbe77c1c7a1900fe864da91833d14f9055be1adcc6a44543a93f2a005cb13779b47325da5aa2a6e708345eead1729199c1520fb5be676aac1ae6a020c3fa8c9e61e64c3ce7e92ab3fd602d9441fcaa5ed4e6a64aed4e8b3908d0809b5f74d7d6be3ee3bf4294504d24f95e3828aa0554875daa1403b16dfb79c4e019a2bd72e6ecd1cad5d7f4f8511f9fc06252e06fcbed81af49fffc0ab279f68decb30becf84f3edee669bd59ffa02ab01612b4bb3f860d8cf4d1552695be8b6c1a3d98497b1b3256102024aa0b67f7fd8d718bfac178fe9402a977ed7234e02a304845c230f229ca91c5653aae7884fabab94ca624764a2031060520d09bf14b60ec
1
  • 微瓴异步回复设备上传url
key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30004
value JSON 消息内容,如下实例
 url String 文件上传url
 fileId Stirng 文件唯一标识
seq Stirng 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
  "timeStamp":1536151747890,
  "random":1149701758,
  "datapoint":30004,
  "msgType":"reportack",
  "ackSeq":1149701758,
  "wId":"d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
  "value":{
    "url":"http://10.56.63.195:8504/file/upload/200200000000000008/2018-12-21/testupload?save_type=bigfiletodevice&wl_auth_sign=06f8789de2741cb7a29e40fa847a7e9cb2adcdc1fd27f9241515aa233566fe1b&wl_expire_time=1545406322095&wl_file_length=25&wl_file_sign=73b48297c6ebac071ac66a03a8dabccbc9d0377c9b0b525d31e8cd14f5892713&write_disk=d5",
    "fileId":"3364aef0-ca60-450a-b694-9dedae930b05"
  },
  "seq":"1149701759"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee266aefaf9fcdc0eeb00723f5712b274aeca21767a067d938a76c833259310afa15033eb2c2a90b960b3a833a946a1a6a7f759693c74c31109cc9abf5e5353d291f4428acbbe77c1c7a1900fe864da91833d14f9055be1adcc6a44543a93f2a005cb13779b47325da5aa2a6e708345eead1729199c1520fb5be676aac1ae6a020c3fa8c9e61e64c3ce7e92ab3fd602d9441fcaa5ed4e6a64aed4e8b3908d0809b5f74d7d6be3ee3bf4294504d24f95e3828aa0554875daa1403b16dfb79c4e019a2bd72e6ecd1cad5d7f4f8511f9fc06252e06fcbed81af49fffc0ab279f68decb30becf84f3edee669bd59ffa02ab01612b4bb3f860d8cf4d1552695be8b6c1a3d98497b1b3256102024aa0b67f7fd8d718bfac178fe9402a977ed7234e02a304845c230f229ca91c5653aae7884fabab94ca624764a2031060520d09bf14b60ec
1
  • 设备发送文件上传结果

参数格式

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30005
value JSON 消息内容,如下实例
 fileId Stirng 文件唯一标识
 result String 固定参数,"success"、"fail"
 data String 自定义透传消息
seq Stirng 消息序号
  • 举例

  • 加密key:LjMAotJ58hncFXUJ

  • 向量:hfvj91uWuOso3LtF

  • 明文

{
  "timeStamp": 1536151747890,
  "random": 1149701758,
  "datapoint": 30005,
  "msgType": "report",
  "wId": "d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
  "value": {
    "fileId": "3364aef0-ca60-450a-b694-9dedae930b05",
    "result": "success",
    "data": "photo"
  },
  "seq": "1149701760"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
  • 密文(以下示例用16进制展示,实际传输数据使用的类型是字符集为UTF-8的字节数组)
477e616d551870f586497c75096a3193ead5247f72ff587b3f8ef1ee981860dd7087e525a3e59470596f40d36920ee266aefaf9fcdc0eeb00723f5712b274aeca21767a067d938a76c833259310afa15033eb2c2a90b960b3a833a946a1a6a7f759693c74c31109cc9abf5e5353d291f4428acbbe77c1c7a1900fe864da91833d14f9055be1adcc6a44543a93f2a005cb13779b47325da5aa2a6e708345eead1729199c1520fb5be676aac1ae6a020c3fa8c9e61e64c3ce7e92ab3fd602d9441fcaa5ed4e6a64aed4e8b3908d0809b5f74d7d6be3ee3bf4294504d24f95e3828aa0554875daa1403b16dfb79c4e019a2bd72e6ecd1cad5d7f4f8511f9fc06252e06fcbed81af49fffc0ab279f68decb30becf84f3edee669bd59ffa02ab01612b4bb3f860d8cf4d1552695be8b6c1a3d98497b1b3256102024aa0b67f7fd8d718bfac178fe9402a977ed7234e02a304845c230f229ca91c5653aae7884fabab94ca624764a2031060520d09bf14b60ec
1

# 3.10 OTA更新接收格式

key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回,固定为report
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30011
value String 消息自定义内容
 fileId Stirng 文件唯一标识
 fileName Stirng 文件名
 length Integer 上传文件大小,单位:byte
 hash String 文件内容做SHA-256的hash,格式为16进制
 url String 文件下载地址
 data String 固件升级包的内容
  ota_id String 固件的id值
  name String 固件的名字
  version String 固件的版本号
  cmd String 升级指令,full:全量更新包 ,increment:增量更新包
seq String 消息序号
  • 示例
{
  "wId": "d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
  "msgType": "report",
  "random": 1149701758,
  "timeStamp": 1536151747890,
  "datapoint": 222222,
  "value": {
    "fileId": "UUID",
    "fileName": "WELINK-TH82S1-V1.0.0.0-build-20180509173508_test.bin",
    "length": 1234,
    "hash": "1234567890ABCDEF",
    "url": "https://mvs-30035.sz.gfp.tencent-cloud.com//emulated/0/tencent/device/accesslog/1551345059794?sign=q-sign-algorithms6q-akDJwxbdHXcgrqZyWxNOcqdDnNq-sign-tim1551345059",
    "data": "{\"ota_id\":\"292\",\"name\":\"固件升级\",\"cmd\":\"full\",\"version\":\"WELINK-TH82S1-V1.0.0.0\"}"
  },
  "seq": "1149701758"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 3.11 设备升级成功后上报升级结果

  • 请求格式
key value description
wId String 设备唯一标识
msgType String report:主动发送,ack:查询返回,固定为ack
random Integer 随机数
timeStamp Long 时间戳,单位:毫秒
datapoint Integer 功能码,固定为30012
value String 消息自定义内容
 fileId Stirng 文件唯一标识
 fileName Stirng 文件名
 length Integer 下载的文件大小,单位:byte
 hash String 文件内容做SHA-256的hash,格式为16进制
 ota_id String 当前ota升级包的id值,如果升级失败则保持之前的ota_id值
 firmwareVersion String 当前ota升级包的固件版本号
 result String 升级结果,success:成功 ,fail:失败
seq String 消息序号
  • 示例
{
  "wId": "d5d7c82d-9630-4278-8d35-a3dc4d650b0d",
  "msgType": "ack",
  "random": 3390683214,
  "timeStamp": 1536151769890,
  "datapoint": 30012,
  "value": {
    "fileId": "UUID",
    "fileName": "WELINK-TH82S1-V1.0.0.0-build-20180509173508_test.bin",
    "length": 1234,
    "hash": "1234567890ABCDEF",
    "ota_id": "292",
    "firmwareVersion": "WELINK-TH82S1-V1.0.0.0",
    "result": "success"
  },
  "seq": "1149701758"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17