迅鸣物联网文档

迅鸣物联网文档


IP网关协议

[TOC]

IP网关协议

注意: 所有向设备发送的数据,必须以 16进制的"0b0a"结束

协议组成

  • header
  • payload
==== mqtt 数据长度限制=====
typedef struct {
    char  timeStamp[15];
} mqtt_head_data_t;
typedef struct {
    char  nodeid[3];
    char  action[15];
    char  params[20];
} mqtt_device_data_t;

消息组成

header 消息

Header消息包含

  • timeStamp --- 消息生成的时间戳

消息格式

{
    "header":{
        "timeStamp":"1592983921388"
    }
}

payload 消息

payload消息包含

  • nodeid --- 网关的为000 设备的为1~127
  • action --- 操作类型
  • params --- 操作内容,由subID与mode_id 以及数据组成
  • serviceid --- 业务id,APP端消息页面渲染模板

示例:

{
    "payload":{
        "devices":[
            {
                "nodeid":"001",
                "action":"command",
                "serviceid":"10110e01",
                "params":"0110021100000000"
            }
        ]
    }
}

设备激活

示例 向设备发送的数据 topic /xm/sh/request/mqtt/1320420010132811/active

{
    "device_id":"1320420010132811",      //设备sn
    "mqtt_host":"mqtt.xunmingiot.com",   //mqtt服务器域名或ip地址
    "mqtt_port":8883,                    //mqtt端口,注意是SSL端口
    "mqtt_user":"1320420010132811",      //mqtt登录用户名
    "mqtt_pass":"54491741804120xxxxxx",  //mqtt登录密码
    "security":1,
    "mqtt_keepalive":120,
    "slot":16                            //槽位指示即0x10
}

主动同步

此指令是发给网关的,发出后网关会将此网关下的所有设备主动上报一遍消息

示例: 向设备发送的数据

{
    "header":{
        "timeStamp":"1592983921388"
    },
    "payload":{
        "devices":[
            {
                "nodeid":"000",
                "action":"sync",
                "params":""
            }
        ]
    }
}

设备响应数据

{
    "header":{
        "timeStamp":"1592983921388"
    },
    "payload":{
        "devices":[
            {
                "nodeid": "000",
                "action":"sync",
                "serviceid":"10110e01"
                "params":"012001005e000000"
            }
        ]
    }
}

控制设备

向设备发送的数据

{
    'header': {'timeStamp': ''},
    'payload': {
        'devices': [
            {
                'nodeid': '001', // 所要控制设备的nodeid
                'action': 'command',
                'params': '0110111100000000' // 控制的数据
            }
        ]
    }
}

设备响应数据

{
    "header":{
        "timeStamp":"1592983921388"
    },
    "payload":{
        "devices":[
            {
                "nodeid": "001",
                "action":"command",
                "params":"0110111100000000"
            }
        ]
    }
}

重启设备

topic /xm/sh/request/mqtt/13204200010XXXXXX/2001/v1 向设备发送的数据

{
    'header': {'timeStamp': ''},
    'payload': {
        'devices': [
            {
                'nodeid': '000',
                'action': 'restart',
                'params': ""
            }
        ]
    }
}

ota升级

向设备发送的数据

{
    'header': {'timeStamp': ''},
    'payload': {
        'devices': [
            {
                'nodeid': '000', // 所要控制设备的nodeid
                'action': 'ota',
                'params': {
                    "modeid":"2001",
                    "ser_ip":"127.223.4.1", //文件下载服务器地址
                    "new_ver":"a1.0.9.t20010j01" // 所要ota升级的版本号
                    }
            }
        ]
    }
}

设备响应数据

{
    "header":{
        "timeStamp":"1592983921388"
    },
    "payload":{
        "devices":[
            {
                "nodeid": "000",
                "action":"ota",
                "params":"0,a1.0.9.t20010j01" // 逗号前面是升级状态 0是成功 1是失败,逗号后面是版本号
            }
        ]
    }
}

wifi设备 如何设置wifi

topic: /xm/sh/request/mqtt/13204200010XXXXXX/2001/v1

一、发现周围wifi网络

向设备发送的数据

{
    "header":{
        "timeStamp":""
        },"payload":
    {"devices":
        [{
            "nodeid":"000",
            "action":"scan_wifi",
            "params":""
        }]
    }
}

设备响应数据

{
    "header":{
    "timeStamp":""
},
    "payload":{
    "devices":[{
        "nodeid":"000",
        "action":"scan_wifi",
        "params":"SaiTong,bc:54:fc:94:43:f0,WPA+2,60,1;shenxuehulian,8c:53:c3:9f:77:fc,WPA+2,60,1;"
            }]   //   params 为周围wifi信息,顺序为: wifi名  mac地址 网络类型  信号 1
    }
}
注意: wifi名称为中文的无法发现

二、手动配置WIFI

topic: /xm/sh/request/mqtt/13204200010XXXXXX/2001/v1 向设备发送的数据

{
    "header":{
        "timeStamp":""
        },
    "payload":{
        "devices":[{
            "nodeid":"000",
            "action":"set_wifi",
            "params":{
                "ssid":"123",   //  ssid 为wifi名称
                "passwd":"123465" // passwd 为密码
                }
        }]
    }
}

设备响应数据

{
    "header":{
    "timeStamp":"" 
},
    "payload":{
    "devices":[{
        "nodeid":"000",
        "action":"set_wifi",
        "params":"0" //params 为0时,代表设置成功
        }]
    }
}

数据解析

MQTT-Topic 规则

设备类型与控制时mode_id的对应关系

类别 对应mode_id
wifi网关 2001
4G网关 2002
电子锁 1011
GPS模块 1010
温度模块 1012
AGPS模块 1013
    request时的topic:
        /xm/sh/request/mqtt/1320420010122011/2001/v1
        /xm/sh/request/mqtt/网关的sn号/所要控制设备的mode_id/v1
    response时的topic:
        /xm/sh/response/mqtt/1320420010122011/1011/v1
        /xm/sh/response/mqtt/网关的sn号/设备的mode_id/v1

action 对应关系

action 操作
command 正常上报/主动控制设备
sync 网关主动同步所有设备数据
ota 给设备OTA升级
set_wifi 设置wifi网络
scan_wifi 发现周围wifi网络,注意发现不了名称为中文的网络
restart 重启设备

params 解析规则

网关数据示例: 01 2001 00 5e 000000

数值 内容
01 设备节点id
2001 网关的 mode_id
00 16进制,网关的电量百分比
5e 16进制,网关的信号百分比
000000 未使用,占位

电子锁的数据示例: 01 1011 1 1 0012 01 00

数值 内容
01 设备节点id
1011 锁的 mode_id
1 16进制,需转成2进制,从左往右依次为 1号位 2号位 3号位 4号位,哪一位上是1代表启用了哪一位,如: '0101' 代表1号位跟3号位启用
1 16进制,需转成2进制,从左往右依次为 1号位 2号位 3号位 4号位,与上面对应,0位关闭状态,1为开启,如: '0101' 代表1号位跟3号位开启,其余位置关闭
0012 开锁保持时间
01 是否自动关锁,0:不关,1:保持时间结束后关锁
00 未使用,占位

示例: 开锁

向设备发送的数据

topic: /xm/sh/request/mqtt/13204200010XXXXXX/1011/v1

{"header":{"timeStamp":""},"payload":{"devices":[{"nodeid":"000","action":"command","params":"0110111100000000"}]}}

设备响应数据 topic: /xm/sh/response/mqtt/13204200010XXXXXX/1011/v1

{"header":{"timeStamp":""},"payload":{"devices":[{"nodeid":"000","action":"command","params":"0110111100000000"}]}}

页面列表

ITEM_HTML