修改日期 | 修改人 | 备注 |
2020-07-16 10:58:58[当前版本] | admin | 修正 |
2020-07-16 10:32:15 | admin | 增加设备发现协议 |
2019-05-16 15:59:58 | admin | 增加遗愿消息 |
2019-01-02 14:36:28 | admin | 修正协议 |
HOST : auth.mqtt.9iot.cn
PORT : 1883
USERNAME : 请登录厂商运营系统查看。
PASSWORD : 请登录厂商运营系统查看。
CLIENT ID : 请根据设备情况,写入设备全球唯一标识。一般为设备/WIFI 模块MAC地址。 16字节,不足末尾补零。
设备端:
发布 : /${cust_id}/${product_id}/${client_id}/update
订阅 : /${cust_id}/${product_id}/${client_id}/get
故障上报: /${cust_id}/${product_id}/${client_id}/alert
客户端 :
发布 : /${cust_id}/${product_id}/${client_id}/set
订阅 : /${cust_id}/${product_id}/${client_id}/get
|
字段 |
大小(byte) |
描述 |
协议头 |
version |
2 |
版本号 此处为0002 |
length |
2 |
数据包大小 |
|
header_crc |
2 |
协议头校验码 |
|
协议体 |
body |
Length - 8 |
数据体 |
body_crc |
2 |
数据体校验码 |
Version : 版本号(公有协议 0001 开始,私有协议 0501开始)
Length : 完整协议包大小
Header_crc : 协议头校验码。采用的多项式为CRC-16/CCITT的16位循环校验码
Body : 数据体,以下为数据体结构定义
字段 |
大小(byte) |
描述 |
PackageType |
1 |
协议包类型 |
Command |
2 |
应用命令字 |
Data |
不定长 |
数据 |
PackageType :协议包类型,用于应用层消息逻辑处理方式。以下为协议包类型值约定:
字节值 |
描述 |
0x00 |
Message,无需回复协议包类型 |
0x01 |
Get,需回复协议包类型,用于请求获取数据回复 |
0x02 |
Set,需回复协议包类型,用于设置数据需返回设置成功与否 |
0x03 |
Result,无需回复协议包类型,用于set/get类型正确回复包,序列号与set和get包相同 |
0x04 |
Error,无需回复协议包类型,用于set/get类型错误回复包,序列号与set和get包相同 |
Command : 应用命令字,以下为值约定:
数据包类型 |
command |
source数据来源 |
设备登录认证 |
0x0001 |
设备 |
设备数据上传 |
0x0002 |
设备 |
发送设备控制指令 |
0x0003 |
Server |
时间同步 |
0x0004 |
设备 |
心跳包 |
0xFFFF |
设备 |
发送设备查询指令 |
0X0005 |
Server |
数据透传 |
0x0010 |
Server/设备 |
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
01 |
|
2 |
Command / 数据包类型 |
0001 |
||
|
|
16 | MAC ADDRESS /设备标识 |
0000000000000001000 0 ( ASCII 不足末尾补零) |
|
|
8 |
Suite ID / 套件标识 |
01(不足末尾补零) 当设备为单品或者网关时全部为00 |
|
|
20 |
USERNAME / 用户名对应APPID |
[BG73ivJHX6OFxxxxXXXX] ASCII |
|
|
16 |
PASSWORD / 密码对应PRODUCT_ID |
5D31FF4CA98943E9955A025C9CAC23F3 |
1 |
Device Type / 设备类型 |
00 网关固定为00 |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
RES:
分类 |
描述 |
长度 |
字段名 |
数据样例 |
||
Header |
|
2 |
version |
0002 |
||
2 |
length |
0000 |
||||
2 |
header_crc |
0000 |
||||
Payload |
Defination |
1 |
PackageTypeee |
03 |
||
2 |
Command |
0001 |
||||
Date |
|
1 |
RES |
00(成功) 01(认证失败) |
||
Tail |
2 |
CRC |
0000 |
设备(Device Type)类型说明:
设备 |
标识(1byte) |
网关 | 0x00 |
电视 |
0x01 |
灯 |
0x02 |
空调 |
0x03 |
空气净化器 |
0x04 |
插座 |
0x05 |
单开开关 |
0x06 |
扫地机器人 |
0x07 |
窗帘 |
0x08 |
加湿器 |
0x09 |
风扇 |
0x0A |
暖奶机 |
0x0B |
豆浆机 |
0x0C |
电热水壶 |
0x0D |
饮水机 |
0x0E |
电饭煲 |
0x0F |
热水器 |
0x10 |
烤箱 |
0x11 |
净水器 |
0x12 |
冰箱 |
0x13 |
机顶盒 |
0x14 |
洗衣机 |
0x16 |
智能床 |
0x17 |
香薰机 |
0x18 |
窗 |
0x19 |
空气开关 |
0x1A |
温度传感器 |
0x1B |
烟雾传感器 |
0x1C |
可燃气体传感器 |
0x1D |
PM2.5传感器 |
0x1E |
人体传感器 |
0x1F |
光照传感器 |
0x20 |
雨水传感器 |
0x21 |
此处应结合接入设备和上层应用的实际情况,合理选择心跳包上传频率及方案。一般情况下,如设备在接受云端指令之外的动作触发(如机械或者红外等方案),应即时通过心跳方式将当前状态上报上来。
如设备某些参数时刻变化,如传感器类设备,则建议按一定时间间隔上报最新状态。
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
00 |
|
2 |
Command / 数据包类型 |
FFFF |
||
|
|
8 | Suite ID / 套件标识 |
01... |
1 |
Device Type / 设备类型 |
00 |
||
不定长 |
结合实际情况,一般可将设备当前状态值上报上来 |
0000 |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
1、设备上电入网,认证通过,立即发送至少一次心跳
2、设备状态改变(包括且不限于,MIOC系统控制/外界条件触发/传统渠道如遥控、功能按钮),立即发送至少一次
3、一定时间间隔,如60s
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0003 |
||
1 |
Device Type / 受控设备类型 |
套件类型:01
单品类型:02 |
||
|
|
8 | Suite ID / 套件标识 |
1A01[不足末尾补零 ] 若受控设备为单品,则此值全部为0 |
|
|
1 | Control Type / 控制类型 | 01 |
2 |
Control Value / 控制设值 |
0001 |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
设备应反馈控制结果:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
03 |
|
2 |
Command / 数据包类型 |
0002 |
||
1 |
Control Type / 控制类型 |
01 |
||
1 |
Control Value / 控制设值 |
00 |
||
1 |
RESULT / 控制结果 |
00[SUCCESS] 01[FAILD] |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0005 |
||
1 |
Query Type / 查询类型 |
01 [为查询所有状态值] |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
设备应反馈查询结果:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
03 |
|
2 |
Command / 数据包类型 |
0002 |
||
1 |
Device Type / 设备类型 |
01 |
||
不定长 |
结合实际情况 |
0000 |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0003 |
||
1 |
Device Type / 受控设备类型 |
套件类型:01 |
||
|
|
8 |
Suite ID / 套件标识 |
此时全部为零 |
|
|
1 |
Control Type / 控制类型 |
18 |
2 |
Control Value / 控制设值 |
0000 |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000
|
设备应反馈控制结果:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0002 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
03 |
|
2 |
Command / 数据包类型 |
0002 |
||
|
|
8 | Suite ID / 套件标识 | 此时全部为零 |
1 |
Control Type / 控制类型 |
18 |
||
2 |
Control Value / 控制设值 |
0000 |
||
1 |
RESULT / 控制结果 |
00[SUCCESS] 01[FAILD] |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
a、检查对应可接入设备的最新版本
https://mioc.9iot.cn/api/base/standard/v1/ota/versioncheck?mac=5CCF7FCCF2390000
MAC 设备MAC地址
返回示例
RES:
{ "item":null, "version":null, "xt_userinfo_realName":null, "mtdpimg_base_url":null, "mtdpimg_base_path_url":null, "mtdpsources_base_url":null, "mtdpsources_base_path_url":null, "xt_attachmentPath":null, "sessionId":null, "firmware_id":"7A7B4BA1BB304AAFAE2D696189E0DA35", "firmware_name":"test3", "firmware_version":"3", "size":"4096", "url":"https://mioc.9iot.cn/xtCommonController/downFile?xt_attachment_id=88F0A49C908D46108AEEBB9C206AF685", "signtype":"1", "description":"test 3", "access_device_id":"97BA42A50BFE4AC68D59CCCF226D6456", "path":"88F0A49C908D46108AEEBB9C206AF685" }
其中:
firmware_version 为最新固件版本号,请设备端自行与当前版本号进行比对,是否需要更新
size 为最新固件包大小,byte
url 为最新固件包下载地址,通过版本号的比对,如需更新则使用此地址进行固件下载
signtype 为密钥算法 暂未启用