作者:admin于 2018年06月20日 发布在分类 / 产品相关 / 云平台 / 三方接入 下,并于 2018年06月26日 编辑
    2018-06-26 11:00:59版本: MIOC 标准接入协议 通讯模组与云端-TCP-架构V1.0
    历史版本

    修改日期 修改人 备注
    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/CCITT16位循环校验码


    Body : 数据体,以下为数据体结构定义


    字段

    大小(byte

    描述

    PackageType

    1

    协议包类型

    Command

    2

    应用命令字

    Data

    不定长

    数据


    PackageType :协议包类型,用于应用层消息逻辑处理方式。以下为协议包类型值约定:


    字节值

    描述

    0x00

    Message,无需回复协议包类型

    0x01

    Get,需回复协议包类型,用于请求获取数据回复

    0x02

    Set,需回复协议包类型,用于设置数据需返回设置成功与否

    0x03

    Result,无需回复协议包类型,用于set/get类型正确回复包,序列号与setget包相同

    0x04

    Error,无需回复协议包类型,用于set/get类型错误回复包,序列号与setget包相同


    Command 应用命令字,以下为值约定:


    数据包类型

    command

    source数据来源

    设备登录认证

    0x0001

    设备

    设备数据上传

    0x0002

    设备

    发送设备控制指令

    0x0003

    Server

    时间同步

    0x0004

    Server

    心跳包

    0xFFFF

    设备

    发送设备查询指令

    0X0005

    Server

    数据透传

    0x0010

    Server/设备




    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

    MIOTO WIKI-V3.2.0