OneNET Studio 简介 产品介绍 快速入门 设备接入与管理 应用开发
应用开发流程 新建项目 添加设备 设备分组 场景联动 应用数据流转 应用API 应用长连接 规则引擎(新)
运维监控 数据可视化 边缘计算 人工智能AI 位置定位 语音通话 工业互联网标识 权限管理 服务协议 更新日志

MQTT 最佳实践

1. 产品与设备创建

2. MQTT.fx客户端配置

3. 设备连接


1. 产品与设备创建

创建产品,接入协议选择MQTT,并创建设备。

在设备管理-设备详情里,查询设备相关参数,本例中,设备接入相关参数如下:

2. MQTT.fx客户端配置

打开MQTT.fx客户端,进入客户端配置页面
设置Profile Name,设置接入地址与端口 (mqtt tls: 183.230.102.116:8883; mqtt-notls:218.201.45.7:1883),并设置Client ID、User Name与Password,其中参数设置方式如下: Client ID:设备名称 User Name:产品id Password:token 算法参见[接入安全认证](/book/device-connect&manager/device-auth.md)

3. 设备连接

点击配置文件选择箭头,选择配置MQTT相应项目,点击conncent,此时,设备在页面处于在线状态。

属性上报

订阅属性上报结果通知消息

为了确保设备上传消息确实被平台所接受处理,设备可以订阅系统 topic 获取属性上报结果消息,属性上报回复topic为:$sys/{pid}/{device-name}/thing/property/post/reply

我们进入产品管理-详情页面,创建两个属性,分别为Power、temp,添加完成后保存物模型。

属性上报的topic为:$sys/{pid}/{device-name}/thing/property/post 上报数据成功后,订阅的属性上报会返回success OneJSON请求数据格式:

{
    "id": "123",
    "version": "1.0",
    "params": {
        "Power": {
            "value": "12345",
            "time": 1599534283111
        },
        "temp": {
            "value": 23.6,
            "time": 1599534283111
        }   
    }
}

请求参数说明

参数 类型 说明
id String 消息id号,用户自定义,String类型的数字,长度限制13位。
version String 物模型版本号,可选字段,不填默认为1.0
params JsonObject 请求参数,用户自定义,标准json格式。如以上示例中,设备上报了的两个属性Power和WF。具体属性信息,包含属性上报时间(time)和上报的属性值(value)。
time Long 属性值生成时间。该参数为可选字段,到豪秒级。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序,建议消息中带有时间戳。
value Object 上报的属性值

页面设备管理-设备详情,查看设备上报的属性数据。

设备属性设置

设备侧需要收到平台下发的数据,需要订阅: $sys/{pid}/{device-name}/thing/property/set

在页面运维监控-设备调试中-下行数据调试,可进行设置设备属性。

topic: $sys/{pid}/{device-name}/thing/property/set_reply

{
"id": "2",
"code":200,
"msg":"success"
}

其中id为下行数据的id,需要匹配,code为200代表成功,msg可以自定义。

事件上报

订阅事件上报结果通知消息

为了确保事件上传消息确实被平台所接受处理,设备可以订阅系统 topic 获取事件上报结果消息,属性上报回复topic为:$sys/{pid}/{device-name}/thing/event/post/reply。 上报数据成功后,订阅的事件上报会返回success。

我们进入产品管理-详情页面,创建1个事件(switch),包含两个参数(led1,led2,参数类型为整型)。

上报事件topic为:$sys/{pid}/{device-name}/thing/event/post OneJSON请求数据格式:

{
    "id": "123",
    "version": "1.0",
    "params": {
        "switch": {
            "value": {
                "led1": 22,
                "led2":23
            },
            "time": 1599534283111
        }

    }
}

请求参数说明

参数 类型 说明
id String 消息id号,用户自定义,String类型的数字,长度限制13位。
version String 物模型版本号,可选字段,不填默认为1.0
params JsonObject 上报事件的参数。
time Long 属性值生成时间。该参数为可选字段,到豪秒级。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序,建议消息中带有时间戳。
value Object 具体的事件信息。

页面设备管理-设备详情,查看设备上报的事件数据。

订阅获取设备期望值topic

$sys/{pid}/{device-name}/thing/property/desired/get/reply 设备获取期望值: $sys/{pid}/{device-name}/thing/property/desired/get OneJSON数据格式:

{
    "id" : "123",
    "version":"1.0",
    "params" : [
        "Power"
    ]
}

请求参数说明

参数 类型 说明
id String 消息id号,用户自定义,String类型的数字,长度限制13位。
version String 物模型版本号,可选字段,不填默认为1.0
params JsonObject 获取属性期望的标识符列表。

页面设置期望值:

个搜索结果,搜索内容 “

    0 个搜索结果,搜索内容 “