赞
踩
做物联网项目的时候,初学者最好是先通过mqtt.fx软件上传到物联网平台,来练习mqtt协议的使用方法,包括publish、subscribe、各种topic协议等等。
本文的案例是使用mqtt.fx软件通过mqtt协议向onenet平台发送数据,并接收平台命令下发的数据。
首先,默认已经在onenet平台上创建好了mqtt协议的产品和设备。(创建产品时数据协议使用的是“数据流”,而不是OneJson)
打开MQTT.fx客户端,进入客户端配置页面
设置Profile Name,设置接入地址与端口,并设置Client ID、User Name与Password,其中参数设置方式如下:
Broker Address:
mqtts.heclouds.com
Broker Port:1883
Client ID:112233
(这里要改成你自己的设备名称,注意不是产品ID,也不是设备ID)
User Name:产品ID
Password:鉴权token (这个要使用token生成器,建议使用软件生成)
点击OK,完成配置。(文章最后有token生成器的使用方法)
上报数据点的意思就是向onenet平台上的设备发送数据,这里可以模拟是传感器的数据:
为了确保设备上传消息确实被平台所接受处理,设备可以订阅系统 topic 获取上传数据点结果消息;选择Subscribe项,输入订阅topic名称
topic 命名规则如下:$sys/{pid}/{device-name}/dp/post/json/+
本例中,订阅topic为:
$sys/HYicAxV4uB/112233/dp/post/json/+
点击 Subscribe,完成 topic 订阅
选择Publish项,输入发布 topic
topic 命名规则如下:$sys/{pid}/{device-name}/dp/post/json
本例中,发布 topic 名称为:$sys/HYicAxV4uB/112233/dp/post/json
下面需要数据的body为:
{
"id": 123,
"dp": {
"temperatrue": [{
"v": 30
}],
"power": [{
"v": 4.5
}]
}
}
此时onenet平台上已经显示接收到了数据,如下图所示。
因为上面publish的body里面的参数属性是tempertaure
和power
完成后,可以通过 Subscribe可以接收到平台下发的上传结果通知,若通过…/accepted topic接收到消息,则表明平台处理消息成功。
可以在onenet平台上使用API模拟mqtt命令下发,onenet平台的API调试可以模拟使用POST请求来向onenet平台发送命令,然后onenet平台再通过mqtt协议向下发送命令,相当于用移动端手机app或小程序来实现命令的下发。
首先我们还是要先订阅:
订阅设备命令topic
建立设备连接之后,获取设备命令前,必须先订阅系统命令topic:$sys/{pid}/{device-name}/cmd/request/{cmdid}
topic中{cmdid}为变量,为每条命令的唯一id,可通过通配符的方式进行订阅,比如:$sys/{pid}/{device-name}/cmd/request/+
,或者$sys/{pid}/{device-name}/cmd/#
然后我们使用API调试发送一个命令:
注意要把产品ID和device_name写在上面。
发送后,MQTT模拟工具会接收到一条topic消息,如下图所示
本例中的topic为:$sys/HYicAxV4uB/112233/cmd/request/ad74de8e-7d06-4ec4-a802-e52544c439b4
,数据为231 。
使用MQTT.fx发布消息至对应topic,模拟设备应答(应答内容为abcd),如下图所示:
本例中,应答对应的topic为:$sys/HYicAxV4uB/112233/cmd/response/ad74de8e-7d06-4ec4-a802-e52544c439b4
,发送的返回数据为:1111(这里也可以不返回数据,直接点击Publish)。
至此,通过mqtt.fx软件发送数据到onenet平台并接收下发数据已经全部实现。
防止看不懂我写的,给大家附上一个onenet平台的官方文档链接:
https://open.iot.10086.cn/doc/v5/fuse/detail/923
之前问过onenet客服,目前token只有两种生成方式,一种是使用token生成器,是一个.exe
软件(mac系统不能用,我就是,哭死),第二种方法就是使用官方的java
代码生成,附上链接java代码生成token
token生成器有几个参数:
res: product_id/{产品ID}/devices/{设备名称}
et:未来的时间戳,这个去百度搜索生成时间戳,建议选几个月以后的时间
key:设备的密钥,不是产品的access_key。
其他两个参数不变,点击生成。
官方的生成示例:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。