DC3 Mqtt 驱动模块 #
位置:iot-dc3\dc3-driver\dc3-driver-mqtt
依赖服务(参考 Idea 开发环境启动即可):dc3-mysql、dc3-mongo、dc3-redis、dc3-rabbitmq、dc3-center-register、dc3-center-manager、dc3-center-data、dc3-center-auth、dc3-center-gateway、iot-dc3-web
开源工具:Spring Cloud
Mqtt:基于客户端-服务器的消息发布/订阅传输协议。MQTT 协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
配置文件 #
位置:iot-dc3\dc3-driver\dc3-driver-mqtt\src\main\resources\application.yml
1. mqtt 服务器连接配置 #
mqtt 用于配置连接一个 Mqtt 服务所需要的基本参数
mqtt:
# 用户名
username: dc3
# 密码
password: dc3
# Mqtt 服务URL
url: tcp://dc3-rabbitmq:1883
receive-topics:
- qos: 1
name: data
default-send-topic:
qos: 1
name: command
keep-alive: 15
completion-timeout: 3000
batch:
speed: 100
interval: 5
2. driver.point-attribute #
point-attribute 用于配置读取一个 Mqtt 点位值所需要的基本参数
读取一个 Mqtt 服务的点位值需要:指令 Topic、指令 Qos,那么
dc3-mqtt
驱动模块此处的point-attribute
就应该如下:
point-attribute:
- displayName: 指令Topic
name: commandTopic
type: string
value: commandTopic
description: 测点/设备接收下行指令的Mqtt主题
- displayName: 指令Qos
name: commandQos
type: int
value: 2
description: 测点/设备接收下行指令的Mqtt主题的Qos
3. driver.schedule #
schedule 用于设置 读 和 自定义方法的调度
read:用于配置周期性调用 iot-dc3\dc3-driver\dc3-driver-mqtt\src\main\java\com\dc3\driver\service\impl\DriverCustomServiceImpl.java (read 方法)
custom:用于配置周期性调用 iot-dc3\dc3-driver\dc3-driver-mqtt\src\main\java\com\dc3\driver\service\impl\DriverCustomServiceImpl.java(schedule 方法)
enable:是否启动
corn:corn 表达式,用于设置调度规则
schedule:
read:
enable: true
corn: '0/30 * * * * ?'
小试牛刀 #
1. 启动依赖服务 #
- 参考 Idea 开发环境启动 dc3-mysql、dc3-mongo、dc3-redis、dc3-rabbitmq、dc3-center-register、dc3-center-manager、dc3-center-data、dc3-center-auth、iot-dc3-web
- 启动 dc3-driver-mqtt
2. 启动 Mqtt 调试工具 #
安装并启动 Mqtt.fx 软件
下载链接:百度云盘 Mqtt.fx (opens new window)
验证码:wona
3. 驱动 #
切换到 ''驱动" 菜单,当前 Mqtt
启动启动成功,并处于 在线 状态
4. 模板 #
切换到 “模板” 菜单,新建一个Mqtt数据模板
,如下
5. 位号 #
点击编辑,下一步,切换到 “模板位号配置” 菜单,为刚刚新建的 模板
配置待读取的 位号,这里以一个 Float
类型的为例,如下
6. 设备 #
切换到 “设备” 菜单,新建一个设备,绑定模板
,绑定驱动
如下
7. 位号配置 #
提示:如果不需要控制设备,该位号配置可以不用配置
点击编辑,下一步切换到 “位号配置” 菜单,为新建的 设备
,配置 位号
的的 属性值,从而是 dc3-mqtt
模块能下发控制指令到 Mqtt.fx
软件,如下
指令 Topic:用于向设备发送控制指令的 topic,例如:
dc3/mqtt/commad/device_1
指令 Qos:用于向设备发送控制指令的 topic 的 qos,例如:0
8. Mqtt.fx 设置 #
9. 数据 #
切换到 “数据” 菜单,在 Mqtt.fx
中 publish 就会采集到一条数据
发送数据:
Public Topic 填写
dc3/default/dc3-driver-mqtt/data
请务必替换设备 ID 和位号 ID,点击设备标题和位号标题能获取到对应的ID。
{
"deviceId":"1647845409185337346",
"pointId":"1647845983742070785",
"value":20.0,
"createTime": "2022-03-17 14:39:36.000"
}
13. 下发控制指令到设备 #
Mqtt.fx
配置如下:
使用 接口调用指令下发,向设备端写入数据
请注意,设备 ID(deviceId)和位号 ID(pointId),如实际数据库中的数据为准,以下为例子:
在 Mqtt.fx
中收到发送过来的控制指令,如图: