349 lines
12 KiB
Markdown
349 lines
12 KiB
Markdown
|
|
以下是按照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
|
|||
|
|
```
|