修改日期 | 修改人 | 备注 |
2020-07-16 10:58:34[当前版本] | admin | 修正 |
2020-07-16 10:26:06 | admin | 增加检查更新协议 |
2019-07-30 14:34:04 | 秦大人 | 系统管理员修改 |
2019-07-04 10:24:40 | admin | 完善协议 |
HOST : auth.mqtt.9iot.cn
PORT : 1883
USERNAME : 请登录厂商运营系统查看。
PASSWORD : 请登录厂商运营系统查看。
CLIENT ID : 请根据设备情况,写入设备全球唯一标识。一般为设备/WIFI 模块MAC地址。 16字节,不足末尾补零。
设备端:
发布 : /${USERNAME}/${PASSWORD}/${device_mac}/update
订阅 : /${USERNAME}/${PASSWORD}/${device_mac}/get
故障上报: /${USERNAME}/${PASSWORD}/${device_mac}/alert
客户端 :
发布 : /${APPLICATION_KEY}/${PRODUCT_ID}/${client_id}/set
订阅 : /${APPLICATION_KEY}/${PRODUCT_ID}/${client_id}/get
|
字段 |
大小(byte) |
描述 |
协议头 |
version |
2 |
版本号 |
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,需回复协议包类型,用于请求ke获取数据回复 |
0x02 |
Set,需回复协议包类型,用于设置数据需返回设置成功与否 |
0x03 |
Result,无需回复协议包类型,用于set/get类型正确回复包,序列号与set和get包相同 |
0x04 |
Error,无需回复协议包类型,用于set/get类型错误回复包,序列号与set和get包相同 |
Command : 应用命令字,以下为值约定:
数据包类型 |
command |
source数据来源 |
设备登录认证 |
0x0001 |
设备 |
设备数据上传 |
0x0002 |
设备 |
发送设备控制指令 |
0x0003 |
Server |
时间同步 |
0x0004 |
Server |
心跳包 |
0xFFFF |
设备 |
发送设备查询指令 |
0X0005 |
Server |
数据透传 |
0x0010 |
Server/设备 |
故障上报 |
0x0006 | 设备 |
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
01 |
|
2 |
Command / 数据包类型 |
0001 |
||
|
|
16 | MAC ADDRESS /设备标识 |
00000000000000010000(不足末尾补零) |
|
|
20 |
USERNAME / 用户名对应APPID |
[BG73ivJHX6OFxxxxXXXX] ASCII |
|
|
16 |
PASSWORD / 密码对应PRODUCT_ID |
5D31FF4CA98943E9955A025C9CAC23F3 |
1 |
Device Type / 设备类型 |
01 |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
RES:
分类 |
描述 |
长度 |
字段名 |
数据样例 |
||
Header |
|
2 |
version |
0001 |
||
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) |
电视 |
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
|
油烟机 |
0x32 |
此处应结合接入设备和上层应用的实际情况,合理选择心跳包上传频率及方案。一般情况下,如设备在接受云端指令之外的动作触发(如机械或者红外等方案),应即时通过心跳方式将当前状态上报上来。
如设备某些参数时刻变化,如传感器类设备,则建议按一定时间间隔上报最新状态。
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
00 |
|
2 |
Command / 数据包类型 |
FFFF |
||
1 |
Device Type / 设备类型 |
01 |
||
不定长 |
结合实际情况,一般可将设备当前状态值上报上来 |
0000 |
||
2 | PayLoad_CRC / 数据体校验码 | 0000 |
1、设备上电入网,认证通过,立即发送至少一次心跳
2、设备状态改变(包括且不限于,MIOC系统控制/外界条件触发/传统渠道如遥控、功能按钮),立即发送至少一次
3、一定时间间隔,如60s
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0003 |
||
|
|
1 |
Device Type / 受控设备类型 |
02 |
|
|
8 |
Suite ID/套件标识 |
此处全部为00 |
1 |
Control Type / 控制类型 |
01 |
||
2 |
Control Value / 控制设值 |
0001 |
||
2 | PayLoad_CRC / 数据体校验码 | 0000 |
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
03 |
|
2 |
Command / 数据包类型 |
0002 |
||
|
|
1 |
Device Type / 受控设备类型 |
02 |
|
|
8 |
Suite Id/套件标识 |
此处全部00 |
|
|
1 | Control Type / 控制类型 | 01 |
|
|
1 | Control Value / 控制设值 | 00 |
1 |
RESULT / 控制结果 |
00[SUCCESS] 0X[FAILD] |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
||
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0005 |
||
|
|
1 |
Device Type /设备类型 |
02 |
|
|
8 |
Suite ID/套件标识 |
此处全部为00 |
1 |
Query Type / 查询类型 |
01 [为查询所有状态值] |
||
|
||||
2 | PayLoad_CRC / 数据体校验码 | 0000 |
设备应反馈查询结果:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
03 |
|
2 |
Command / 数据包类型 |
0002 |
||
1 |
Device Type / 设备类型 |
01 |
||
|
|
8 |
Suite ID/套件标识 |
此处全部为00 |
不定长 |
结合实际情况 |
0000 |
||
2 | PayLoad_CRC / 数据体校验码 | 0000 |
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0006 |
||
|
|
1 |
Device Type / 设备类型 |
02 |
|
|
8 |
Suite ID/套件标识 |
此处全部为00 |
1 |
ERROR Code/ 故障代码 |
取值详情参照具体设备业务协议 |
||
|
2 | ERROR CONTENT / 故障内容 | 一般为故障参数值,具体参照具体设备业务协议 | |
2 | PayLoad_CRC / 数据体校验码 |
0000 |
收到此指令,请暂停所有其他上报指令,优先完成认证操作
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0003 |
||
|
|
1 |
Device Type / 受控设备类型 |
02 |
|
|
8 |
Suite ID/套件标识 |
此处全部00 |
|
|
1 |
Contorl Type/控制类型 |
7C |
2 |
Contorl value/控制设值 |
0000 |
||
2 | PayLoad_CRC / 数据体校验码 | 0000 |
设备重新认证:
重发认证包
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0006 |
||
|
|
1 |
Device Type / 受控设备类型 |
02 |
|
|
8 |
Suite ID/套件标识 |
此处全部00 |
|
|
1 |
Report Type/控制类型 |
7B |
2 |
Report value/控制设值 |
当前版本号 |
||
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": "BEA42E2C8EC445FBBE6DB44989AD58CD", "firmware_name": "curtain motor 7", "firmware_version": "7", "size": "317876", "url": "https://mioc.9iot.cn/xtCommonController/downFile?xt_attachment_id=91CC36C75E4A42D1932BD4C0077C804E", "url1": "https://mioc.9iot.cn/xtCommonController/downFile?xt_attachment_id=A7E85266E96844658178454BEB53A7D4", "url2": "https://mioc.9iot.cn/xtCommonController/downFile?xt_attachment_id=3C69CB1CDF614777BE36537D2C93890D", "signtype": "MD5", "description": "curtain motor 7", "access_device_id": "97BA42A50BFE4AC68D59CCCF226D6456", "path": "91CC36C75E4A42D1932BD4C0077C804E" }
其中:
firmware_version 为最新固件版本号,请设备端自行与当前版本号进行比对,是否需要更新
size 为最新固件包大小,byte
url 为最新固件包下载地址,通过版本号的比对,如需更新则使用此地址进行固件下载
url1 WIFI模组OTA所需
url2 WIFI模组OTA所需
signtype 为密钥算法
设备端根据收到的数据中firmware_version字段自行判断是否需要升级,如当前云端最新版本号大于本地版本号,则使用url字段进行固件下载,下载完成,重启设备,完成固件升级过程。
如当前云端最新版本号小于或者等于本地版本号,则无需升级,结束版本检测过程。