修改日期 | 修改人 | 备注 |
2021-07-02 15:17:38[当前版本] | admin | 修正 |
2021-07-02 15:14:51 | admin | 修正 |
2020-07-16 10:57:30 | admin | 修正 |
2020-07-16 10:29:49 | admin | 增加检查更新协议 |
一、建立与MIOC-TCP服务器的连接
HOST : tcp.9iot.cn
PORT : 9995
USERNAME : 请登录厂商运营系统查看。
PASSWORD : 请登录厂商运营系统查看。
CLIENT ID : 请根据设备情况,写入设备全球唯一标识。一般为设备/WIFI 模块MAC地址。 16字节,不足末尾补零。
二、指令说明。
1)协议结构说明
字段 |
大小(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,需回复协议包类型,用于请求获取数据回复 |
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 |
设备 |
2)设备与服务端建立连接之后,应首先发送设备认证数据包。以下为设备认证指令说明与实例:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
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 |
3)设备认证通过之后,应根据实际持续情况上报心跳包:
此处应结合接入设备和上层应用的实际情况,合理选择心跳包上传频率及方案。一般情况下,如设备在接受云端指令之外的动作触发(如机械或者红外等方案),应即时通过心跳方式将当前状态上报上来。
如设备某些参数时刻变化,如传感器类设备,则建议按一定时间间隔上报最新状态。
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
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
4)云端接受各客户终端的控制请求,向设备发送控制指令:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0003 |
||
1 |
Device Type / 受控设备类型 |
套件类型:01
单品类型:02 |
||
|
|
16 | Suite ID / 套件标识 |
0000[不足末尾补零 ] 若受控设备为单品,则此值全部为0 |
|
|
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 |
Control Type / 控制类型 |
01 |
||
1 |
Control Value / 控制设值 |
00 |
||
1 |
RESULT / 控制结果 |
00[SUCCESS] 0X[FAILD] |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
4)云端接受各客户终端的查询请求,向设备发送查询指令:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
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/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
03 |
|
2 |
Command / 数据包类型 |
0002 |
||
1 |
Device Type / 设备类型 |
01 |
||
不定长 |
结合实际情况 |
0000 |
||
2 |
PayLoad_CRC / 数据体校验码 |
0000 |
5)设备故障上报:
分类 |
描述 |
长度[字节] |
字段名 |
数据样例 |
Header |
2 |
VERSION/版本 |
0001 |
|
2 |
LENGTH/长度 |
0000 |
||
2 |
Header_CRC/头部校验码 |
0000 |
||
PayLoad |
1 |
PackgeType / 协议包类型 |
02 |
|
2 |
Command / 数据包类型 |
0006 |
||
1 |
ERROR Code/ 故障代码 |
取值详情参照具体设备业务协议 |
||
|
2 | ERROR CONTENT / 故障内容 | 一般为故障参数值,具体参照具体设备业务协议 | |
2 | PayLoad_CRC / 数据体校验码 |
0000 |