mqtt协议及物模型
- 1、创建产品
- 2、配备设备接入方式
- 3、上传消息协议
- 4、填写网关信息
- 5、配置mqtt认证信息
- 6、配置物模型
- 7、创建设备
- 8、使用MQTT X模拟设备接入
- 9、mqttx实现设备->平台 平台->设备 消息发送
- 9.1、属性上报
- 9.2、获取最新属性值(读取属性)
- 9.3、回复读信息
- 9.4、属性写入
- 9.5、属性写回复
当前后端启动以后。根据步骤使用平台
1、创建产品
产品是设备的集合,虚拟的。一个产品管理多个设备。
设备是物联网关键要素,可以连接实际的设备
物联网->设备管理->选择产品,填写产品基础信息
直连设备:直接连接平台的设备
网关设备:物理网关设备
网关子设备:无法直接入网的设备需要依靠网关子设备携带报文的设备。
2、配备设备接入方式
产品详情->选择设备接入Tab页
点击设备接入
一开始没有这个界面
需要先接入网关
点击新增,选择mqtt直连接入
填1883端口
ip填自己的ip,公网ip,点击确认
再选择它,点击下一步
3、上传消息协议
jar包在文章中可取
https://hanta.yuque.com/px7kg1/ryf1pd/ikiyz2ao2kagne1g
上传jar包协议后。点击确认。
选择它,点击下一步
4、填写网关信息
保存
5、配置mqtt认证信息
产品详情->设备接入->MQTT认证配置,填写secureId和secureKey, 本文使用的secureId为admin,secureKey为admin
点击启动产品
6、配置物模型
产品查看详情,选择物模型Tab
三个属性数据类型double,精度2(2个小数点)
属性来源:设备
读写类型:读、写、上报
配置均不用配置
7、创建设备
启用设备
8、使用MQTT X模拟设备接入
MQTT X 是一款开源的 MQTT 桌面测试客户端,支持Windows、Mac和Linux操作系统,可用于验证设备是否可与物联网平台正常连接,并通过Topic订阅和发布消息。本文以Windows系统下MQTT.X为例,介绍设备使用MQTT协议模拟接入物联网平台。
https://hanta.yuque.com/px7kg1/ryf1pd/ikiyz2ao2kagne1g
此链接可以下载mqtt工具
client Id:
host:
远端ip
MQTT认证配置:
这个账户密码。来自于:
https://demo.jetlinks.cn/api/mqtt-auth-generator.html
点击生成用户名密码。将生成的填写进mqtt
然后点击connect
mqtt会提示连接成功。此时平台的设备也“上线”
第一步工作完成
9、mqttx实现设备->平台 平台->设备 消息发送
9.1、属性上报
Topic:/{productId}/{deviceId}/properties/report
方向:设备->平台
{
"deviceId": "1642736581599657984",
"properties": {
"temperature": 38.5
}
}
点击发送
此时平台
这是正常的。
9.2、获取最新属性值(读取属性)
Topic:/{productId}/{deviceId}/properties/read
方向:平台->设备
前提是物模型选择了读
点击以后,mqtt在监听状态下会收到一则消息
取出这个消息的messageId。称为消息id。设备回复平台时需要相同的消息id
9.3、回复读信息
Topic:/{productId}/{deviceId}/properties/read/reply
方向:设备->平台
{
"deviceId": "1642736581599657984",
"messageId":"1839338167816441857",
"properties": {
"wet": 10.1
}
}
读取属性和设置属性均需要设备主动回复,显示超时通常是以下几种情况引起的:
- 设备回复时未携带messageId
- 设备回复时messageId和指令报文内messageId不一致
- 设备10s内未回复消息或超过10s回复消息
- 回复报文超长,超过网络组件接收报文数据大小
9.4、属性写入
Topic:/{productId}/{deviceId}/properties/write
方向:平台->设备
前提是物模型设置了写
mqtt会收到消息,同理可取出messageId进行回复
9.5、属性写回复
Topic:/{productId}/{deviceId}/properties/read/reply
方向:设备->平台
{
"deviceId": "1838607793663078400",
"messageId":"1839340370648125441",
"properties": {
"wet": 21
}
}