VWED_server/docs/sc/MQTT相关.md

349 lines
12 KiB
Markdown
Raw Normal View History

2025-09-25 10:52:52 +08:00
以下是按照Python语言规范和命名规范修改后的MQTT模块文档
## MQTT
### MQTT 订阅信息使用传入的topic
* 方法说明
向指定的 topic 订阅信息适用于订阅多个topic的场景。
```python
def mqtt_subscribe(topic: str) -> str:
```
* 输入参数
* `topic`str 类型,订阅的 topic。
* 输出参数
订阅到的信息。
如果订阅失败返回 `None`
* 异常
本方法不会抛出异常。
* 使用示例
* 1. 在 `application-biz.yml` 里面开启MQTT并完成相应的配置如下
```yaml
# 是否开启 MQTT 服务
mqtt_config_view:
enable: true
pub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题MQTT允许使用通配符订阅主题不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 2
# 客户端唯一标识
client_id: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息会存到服务器在publish端非正常断连的情况下发送给所有订阅的客户端
# 不需要就填 null
will_msg: null
# 遗嘱消息发布的topic
will_topic: Examples1
sub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 1
# 客户端唯一标识
client_id: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
```
* 2. 编写脚本方法
```python
data = mqtt_subscribe("test_topic")
script_log("info", "sub1", data)
```
### MQTT 订阅信息使用配置文件的topic
* 方法说明
`application-biz.yml` 配置的 topic 订阅信息适用于只订阅一个topic的场景。
```python
def mqtt_subscribe() -> str:
```
* 输入参数
无。
* 输出参数
订阅到的信息。
如果订阅失败返回 `None`
* 异常
本方法不会抛出异常。
* 使用示例
* 1. 在 `application-biz.yml` 里面开启MQTT并完成相应的配置如下
```yaml
# 是否开启 MQTT 服务
mqtt_config_view:
enable: true
pub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题MQTT允许使用通配符订阅主题不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 2
# 客户端唯一标识
client_id: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息会存到服务器在publish端非正常断连的情况下发送给所有订阅的客户端
# 不需要就填 null
will_msg: null
# 遗嘱消息发布的topic
will_topic: Examples1
sub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 1
# 客户端唯一标识
client_id: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
```
* 2. 编写脚本方法
```python
data = mqtt_subscribe()
script_log("info", "sub", data)
```
### MQTT 发布信息使用传入的topic
* 方法说明
向输入的 topic 发布信息。
```python
def mqtt_publish(topic: str, message: str) -> None:
```
* 输入参数
* `topic`str 类型,发布的 topic。
* `message`str 类型,需要发布的信息。
* 输出参数
无。
* 异常
本方法不会抛出异常。
* 使用示例
* 1. 在 `application-biz.yml` 里面开启MQTT并完成相应的配置如下
```yaml
# 是否开启 MQTT 服务
mqtt_config_view:
enable: true
pub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题MQTT允许使用通配符订阅主题不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 2
# 客户端唯一标识
client_id: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息会存到服务器在publish端非正常断连的情况下发送给所有订阅的客户端
# 不需要就填 null
will_msg: null
# 遗嘱消息发布的topic
will_topic: Examples1
sub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 1
# 客户端唯一标识
client_id: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
```
* 2. 编写脚本方法
```python
mqtt_publish("test_topic", "RDS-Script sub message.")
```
### MQTT 发布信息使用配置文件的topic
* 方法说明
向配置的 topic 发布信息。
```python
def mqtt_publish(message: str) -> None:
```
* 输入参数
* `message`str 类型,需要发布的信息
* 输出参数
无。
* 异常
本方法不会抛出异常。
* 使用示例
* 1. 在 `application-biz.yml` 里面开启MQTT并完成相应的配置如下
```yaml
# 是否开启 MQTT 服务
mqtt_config_view:
enable: true
pub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# 订阅的主题MQTT允许使用通配符订阅主题不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 2
# 客户端唯一标识
client_id: RDS-Pub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
# 作为publish的遗嘱消息会存到服务器在publish端非正常断连的情况下发送给所有订阅的客户端
# 不需要就填 null
will_msg: null
# 遗嘱消息发布的topic
will_topic: Examples1
sub_config:
# 服务器端点url
broker: tcp://broker.emqx.io:1883
# MQTT允许使用通配符sub订阅主题但不允许使用通配符pub发布消息
topics:
- Examples/1/123
# 设置message的服务质量0消息最多传递一次零次或一次1至少传递一次一次或多次。2只传递一次
qos: 1
# 客户端唯一标识
client_id: RDS-Sub
# 连接的用户名,不需要就填 null
username: null
# 连接的密码,不需要就填 null
password: null
# 设置是否清空session,false表示服务器会保留客户端的连接记录true每次都以新的身份连接服务器
clean_session: false
# 超时时间(seconds)
connection_timeout: 30
# 设置会话心跳时间(seconds)
keep_alive_interval: 60
# 设置断开后重新连接
automatic_reconnect: true
# 表示发送的消息需要一直持久保存不受服务器重启影响不但要发送给当前的订阅者并且以后新来的订阅了此Topic name的订阅者会马上得到推送。
retained: false
```