使用Mqtt.fx连接OneNet平台,并实现消息订阅和推送

这里写自定义目录标题


使用Mqtt.fx连接OneNet平台,并实现消息订阅和推送

一、使用OnetNet平台创建产品
1 登录网址:https://open.iot.10086.cn/

2 选择右上角开发者中心
在这里插入图片描述

3 选择左上角全部产品服务,选择下面的物联网开发平台
在这里插入图片描述

4 选择产品开发,进入产品开发界面,选择创建产品

在这里插入图片描述

5 选择需要的产品,这里选择灌溉系统
在这里插入图片描述

6 选择设备接入
在这里插入图片描述

7 填写地点后,下面的选项默认,本次使用ESP8266,故选择了wifi
在这里插入图片描述

8 点击右边的产品开发,进入产品界面
在这里插入图片描述

9 抄下下面的产品ID和access_key,然后点击设备物模型
在这里插入图片描述

10设置物模型,可以将不需要的东西删除,然后点击自定义功能点,添加2个

在这里插入图片描述

11 添加1个湿度

在这里插入图片描述

12 再添加一个水泵开关,控制开关。
在这里插入图片描述

13 点选左上角设备接入管理,选中设备管理
在这里插入图片描述

14 点选右上角的添加设备

在这里插入图片描述

15 填写设备名,再点确定,创建设备。
在这里插入图片描述

16 可以看到设备已经出现在设备列表了。点击详情
在这里插入图片描述

17 把设备的密钥和产品ID都复制下来备用。
在这里插入图片描述

二、 使用mqtt.fx做产品的模拟器连接onenet平台,这部分比较复杂,

1 下载onenet平台提供的token工具,照着填写产品id和密钥。

https://open.iot.10086.cn/doc/mqtt/book/manual/auth/tool.html

2 在此平台查询当前的时间戳,在et下面填写一个比现在时间靠后较多的数,因为到时间,就连不上了。
https://tool.lu/timestamp/

3 生成下面的密码。
在这里插入图片描述

4 mqttfx创建产品。点下面的齿轮。
在这里插入图片描述

5 填写下表,环中的数据要分别是网络地址:mqtts.heclouds.com;端口:1883;Client ID是你的设备名。下面的user Name是产品ID,password是token生成的。

在这里插入图片描述

6 选择General,设备版本,将下面的MQTT Version的勾选去掉,然后点选右下角apply,再cancel返回。
在这里插入图片描述

7 在主界面,点击connet,连上onenet云平台。

在这里插入图片描述

8 在publish下,使用这个topic发消息到云端 $sys/产品id/设备名/thing/property/post
上报设备的属性。

在这里插入图片描述

{
“id”: “123”,
“version”: “1.0”,
“params”: {
“humidity”: {
“value”: 99
},
“water_motor”: {
“value”: true
}
}
}

可以看到云平台数据刷新了。

在这里插入图片描述

9 云平台下发数据到终端设备。选择运维监控,再选API调试,再选物模型使用。

在这里插入图片描述

在这里插入图片描述

10 在模拟器上写入订阅的topic: $sys/产品ID/设备名/thing/property/set
在这里插入图片描述

11 在云端下发指令时,模拟器收到了对应的指令。详细的topic,请参考云平台文档:
https://open.iot.10086.cn/doc/v5/fuse/detail/920

在这里插入图片描述

### 如何使用 MQTT.fx 模拟服务器自动回复消息 为了实现通过 MQTT.fx 模拟服务器配置其自动回复功能,以下是详细的说明: #### 1. 安装与启动 MQTT.fx 首先需要下载安装 MQTT.fx 软件。可以通过官方提供的下载链接完成软件获取[^1]。安装完成后打开程序。 #### 2. 配置 Broker 地址 在 MQTT.fx 中,`Broker Address` 是指目标 MQTT 服务端的地址。如果要模拟本地环境下的服务器行为,则可以将 `Broker Address` 设置为 `localhost` 或者指定 IP 地址(如 `127.0.0.1`)。对于实际云端测试场景,可参考 OneNET 平台或其他云服务商文档中的具体地址[^2]。 #### 3. 创建订阅主题 (Subscribe Topic) 进入 **Connections** 页面创建一个新的连接,在弹窗中填写如下字段: - Client ID: 唯一标识符,用于区分不同客户端。 - Username Password: 如果有认证需求则需填入相应凭证;否则留空即可。 点击保存按钮建立初始连接后切换到主界面操作区。 接着定义希望监听的消息接收路径即订阅的主题名称。例如输入 `/test/response` 表示准备接受来自该路由下发送过来的数据包。 ```plaintext /test/response ``` #### 4. 发布消息至特定主题 (Publish Message) 与此同时还需要设定另一个方向上的交互逻辑——也就是当收到外部请求时触发内部机制从而返回预期响应内容给对方。为此我们得先确定好待处理指令所在位置以及回应格式化字符串模板等等细节部分。 假设当前设计里规定凡是向 `/test/request` 主题推送任意有效负载都会得到固定样式的答复,则按照下面步骤执行动作: - 打开 Publish 栏目; - 将 Target Topic 设定成前述提到过的入口点 (`/test/request`); - 在 Payload 文本框里面录入示范性的原始数据样本供后续验证用途; - 点击 Send 键发出试探信号等待反馈结果呈现出来。 #### 5. 实现自动化应答流程 由于标准版 MQTT.fx 不具备内置脚本支持能力来直接达成复杂业务规则定制目的,所以这里推荐采用额外插件或者独立运行专门开发的小型代理中间层解决方案以弥补这一局限性问题。比如利用 Node.js 结合 Mosca 库快速搭建简易版本的服务端实例作为中介角色接管整个通信链条上下游环节之间的协调工作。 以下是一个简单的基于 JavaScript 的例子展示如何构建这样一个小型的应用程序来进行消息转发自动生成回复: ```javascript const mqtt = require('mqtt'); const server = mqtt.createServer((client) => { client.on('connect', () => { console.log('Client connected'); // Handle incoming messages from /test/request topic. client.on('publish', ({topic, payload}) => { const message = JSON.parse(payload.toString()); if(topic === '/test/request'){ let responseMessage = {status:"success", data:message}; // Automatically send back to the corresponding reply-to address or predefined channel. client.publish('/test/response',JSON.stringify(responseMessage)); } }); client.on('close', ()=>{console.log('Client disconnected')}); }); }).listen(1883); ``` 此代码片段展示了怎样设置一个基础级别的 MQTT broker 来侦听特定主题上的事件,依据接收到的信息结构即时作出反应形成闭环控制体系架构雏形。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值