VWED_server/docs/sc/MQTT相关.md

12 KiB
Raw Blame History

以下是按照Python语言规范和命名规范修改后的MQTT模块文档

MQTT

MQTT 订阅信息使用传入的topic

  • 方法说明

    向指定的 topic 订阅信息适用于订阅多个topic的场景。

def mqtt_subscribe(topic: str) -> str:
  • 输入参数

  • topicstr 类型,订阅的 topic。

  • 输出参数

    订阅到的信息。

    如果订阅失败返回 None

  • 异常

    本方法不会抛出异常。

  • 使用示例

    1. application-biz.yml 里面开启MQTT并完成相应的配置如下
# 是否开启 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
    1. 编写脚本方法
data = mqtt_subscribe("test_topic")
script_log("info", "sub1", data)

MQTT 订阅信息使用配置文件的topic

  • 方法说明

    application-biz.yml 配置的 topic 订阅信息适用于只订阅一个topic的场景。

def mqtt_subscribe() -> str:
  • 输入参数

    无。

  • 输出参数

    订阅到的信息。

    如果订阅失败返回 None

  • 异常

    本方法不会抛出异常。

  • 使用示例

    1. application-biz.yml 里面开启MQTT并完成相应的配置如下
# 是否开启 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
    1. 编写脚本方法
data = mqtt_subscribe()
script_log("info", "sub", data)

MQTT 发布信息使用传入的topic

  • 方法说明

    向输入的 topic 发布信息。

def mqtt_publish(topic: str, message: str) -> None:
  • 输入参数

  • topicstr 类型,发布的 topic。

  • messagestr 类型,需要发布的信息。

  • 输出参数

    无。

  • 异常

    本方法不会抛出异常。

  • 使用示例

    1. application-biz.yml 里面开启MQTT并完成相应的配置如下
# 是否开启 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
    1. 编写脚本方法
mqtt_publish("test_topic", "RDS-Script sub message.")

MQTT 发布信息使用配置文件的topic

  • 方法说明

    向配置的 topic 发布信息。

def mqtt_publish(message: str) -> None:
  • 输入参数

  • messagestr 类型,需要发布的信息

  • 输出参数

    无。

  • 异常

    本方法不会抛出异常。

  • 使用示例

    1. application-biz.yml 里面开启MQTT并完成相应的配置如下
# 是否开启 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