使用mqtt.fx通过mqtt协议将数据上传到onenet平台,并使用mqtt命令下发接收消息

做物联网项目的时候,初学者最好是先通过mqtt.fx软件上传到物联网平台,来练习mqtt协议的使用方法,包括publish、subscribe、各种topic协议等等。

本文的案例是使用mqtt.fx软件通过mqtt协议向onenet平台发送数据,并接收平台命令下发的数据。

首先,默认已经在onenet平台上创建好了mqtt协议的产品和设备。(创建产品时数据协议使用的是“数据流”,而不是OneJson)

MQTT.fx客户端配置

打开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里面的参数属性是tempertaurepower

完成后,可以通过 Subscribe可以接收到平台下发的上传结果通知,若通过…/accepted topic接收到消息,则表明平台处理消息成功。
在这里插入图片描述

onenet平台命令下发

可以在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

鉴权token生成

之前问过onenet客服,目前token只有两种生成方式,一种是使用token生成器,是一个.exe软件(mac系统不能用,我就是,哭死),第二种方法就是使用官方的java代码生成,附上链接java代码生成token


token生成器下载链接

token生成器有几个参数:
在这里插入图片描述

res: product_id/{产品ID}/devices/{设备名称}
et:未来的时间戳,这个去百度搜索生成时间戳,建议选几个月以后的时间
key:设备的密钥,不是产品的access_key。

其他两个参数不变,点击生成。

官方的生成示例:
在这里插入图片描述

通过OneNet平台下发数据是一种常见的物联网场景操作。以下是基本步骤和关键点: ### 步骤说明 1. **注册登录 OneNet 平台** 首先需要在OneNet官网上创建账户,添加设备,获取设备ID、API Key等相关信息。 2. **选择通信协议** 根据实际需求选择合适的通信协议,如HTTP/MQTT/LWM2M等。每种协议有其特点及应用场景: - HTTP适合简单的请求响应模型; - MQTT支持订阅发布模式,在低带宽环境下性能更优; - LWM2M专为资源受限的IoT设备设计。 3. **配置下发参数** 确定需要发送的数据内容及其格式(JSON或其他)。对于具体的命令或控制信号,需提前约定好解析规则以便终端设备能够正确理解接收到的信息。 4. **编写程序实现数据下发** 使用SDK或者直接调用RESTful API完成数据推送功能。例如采用Python语言结合requests库可以轻松构造POST请求向目标设备传递指令。 5. **验证结果反馈机制** 下发完成后可通过查看日志等方式确认消息是否成功送达以及设备端是否有预期反应。 --- ### 示例代码 (基于HTTP POST) ```python import requests url = "https://api.heclouds.com/devices/{device_id}/datapoints" headers = { 'api-key': '{your_api_key}', } payload = {"datastreams": [{"id":"switch", "datapoints":[{"value":"on"}]}]} response = requests.post(url=url, headers=headers, json=payload) print(response.text) ``` > 注:`{device_id}` 和 `{your_api_key}` 替换为你自己的真实值! ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值