• 中国移动物联网开放平台OneNET学习笔记(2)——设备接入测试(MQTT协议)OneNET Studio篇


    一、创建产品与设备

    1.1 创建产品

    进入Studio平台后,展开菜单栏中的「设备接入与管理」,点击「设备管理」,进入设备列表页面。
    点击「添加设备」,选中单个设备(默认方式)输入设备详情,点击「确定」创建设备。

    按照提示填写产品的基本信息,进行产品创建;请按照提示尽可能完整、全面地填写相应内容,这样更方便您后期对产品进行管理,接入协议选择 MQTT 协议。

    1.2 创建设备

    进入Studio平台后,展开菜单栏中的「设备接入与管理」,点击「设备管理」,进入设备列表页面。
    点击「添加设备」,选中单个设备(默认方式)输入设备详情,点击「确定」创建设备。

    编辑「设备名称」与 「设备描述」,点击「确定」,完成添加设备。

    二、配置MQTT客户端

    MQTT X 是一款开源 5.0 桌面测试客户端,它支持在 macOS,Linux,Windows 操作系统上运行。

    MQTT X 支持创建多个同时在线的 MQTT 客户端,方便用户快速测试 MQTT/TCP、MQTT/TLS 、MQTT/WebSocket 的连接/发布/订阅功能及其他 MQTT 协议特性。

    • 下载MQTT X

    EMQ官网下载:https://www.emqx.com/zh/try?product=MQTTX


    • 打开MQTT X客户端,进入客户端配置页面

    • Client ID: 填写设备名称
    • 服务器地址: 填写 studio-mqtt.heclouds.com
    • 用户名: 填写产品ID
    • 密码: 填写token ,算法参见接入安全认证

    Token由多个参数构成,如下表:

    名称类型是否必须参数说明参数示例
    versionstring参数组版本号,日期格式,目前仅支持"2018-10-31"2018-10-31
    resstring访问资源resource格式为:products/{产品id}/devices/{设备名字}products/dafdfadfafdaf/devices/che1
    etint访问过期时间expirationTime,单位秒,unix时间当一次访问参数中的et时间小于当前时间时,平台会认为访问参数过期从而拒绝该访问1537255523表示:北京时间 2018-09-18 15:25:23
    methodstring签名方法signatureMethod支持hmacmd5、hmacsha1、hmacsha256sha1(代表使用hmacsha1算法)
    signstring签名结果字符串signaturerBYeJXTp2q4V3C2aj4DBzjaydcw%3D

    平台提供Token生成工具(点击下载

    • MQTT版本:必须为 3.1.1

    三、设备连接

    点击连接,此时,设备在页面处于在线状态。

    四、属性上报

    4.1 订阅属性上报结果通知topic

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


    4.2 发布属性上报topic

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

    OneJSON请求数据格式:

    {
        "id": "123",
        "version": "1.0",
        "params": {
            "CurrentVoltage": {
                "value": 5.0,
                "time": 1660720877111
            },
            "CurrentTemperature": {
                "value": 23.6,
                "time": 1660720877111
            }   
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    请求参数说明:

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

    我们进入产品管理-详情页面,选择两个属性的标识符,如当前电压 CurrentVoltage 和当前温度 CurrentTemperature



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

    五、属性下发

    5.1 订阅设备属性设置topic

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


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

    5.2 发布设备属性设置结果通知topic

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

    {
        "id": "2",
        "code":200,
        "msg":"success"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    六、事件上报

    6.1 订阅事件上报结果通知topic

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

    6.2 发布事件上报topic

    上报事件topic为:$sys/{pid}/{device-name}/thing/event/post

    OneJSON请求数据格式:

    {
    	"id": "123",
    	"version": "1.0",
    	"params": {
    		"HumAlarm": {
    			"value": {
    				"Type": 1
    			},
    			"time": 1660720877111
    		}
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    请求参数说明:

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

    我们进入产品管理-详情页面,选择一个事件的标识符,如湿度报警 HumAlarm



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

    七、获取设备期望值

    7.1 订阅获取设备期望值结果通知topic

    设备侧需要收到平台下发的期望值,需要订阅:$sys/{pid}/{device-name}/thing/property/desired/get/reply

    7.2 发布设备获取期望值topic

    获取设备期望值的topic为:$sys/{pid}/{device-name}/thing/property/desired/get

    OneJSON数据格式:

    {
        "id" : "123",
        "version":"1.0",
        "params" : [
            "MaxTempSet"
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    请求参数说明:

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

    页面设置期望值:



    • 由 Leung 写于 2022 年 8 月 19 日

  • 相关阅读:
    Pipeline知识小记
    linux进程大杂烩==Linux应用编程4
    Java异常01:Error 和 Exception
    电脑重装系统 win11 怎么关闭系统软件通知
    14. 加减乘除 取整 取余 幂运算
    uniapp 实现路线规划
    阿里P8大能倾力编撰的“Java 进阶面试手册”,助力跳槽外包毕业生秋招收获大厂offer
    npm i -S vue-router vuex axios element-ui
    Docker数据卷volume的使用详解
    【2022年高教杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(三)
  • 原文地址:https://blog.csdn.net/qq_36347513/article/details/126433507