MQTT

适用于标准的MQTT协议

1.MQTT基础连接配置

5_2_1_MQTT配置

  • 启用与否:是否启用MQTT端
  • Client Id:mqtt网络的中的唯一ID
  • IP地址:MQTT服务器的地址
  • Port:MQTT服务器的端口,需区分是否是SSL/TLS的端口
  • Keep Alive:MQTT客户端的保活周期,推荐值60,单位秒
  • 协议版本:需要与MQTT网络中运行的协议版本一致
  • Clean Session:会话是否保留设置,在客户端断线后,服务器是否会在连接列表中清除客户端的名称
  • 轮询周期:实时数据推送的轮询时间
  • 定时发送:多长时间发送一次全部数据,无论值是否发生变更

5_2_2_MQTT配置-用户名密码

  • 用户名:连接MQTT服务器的用户名
  • 密码:连接MQTT服务器的密码

5_2_3_MQTT配置-ssl认证

  • 验证方式:是否启用SSL/TLS验证,请与MQTT服务器配置文件中一致
  • TLS协议版本:请与MQTT服务器配置文件中一致
  • CA File:CA文件,请选择并上传
  • Cert File:Cert文件,请选择并上传
  • Key File:Key文件,请选择并上传

秘钥生成步骤,仅供参考(pem格式)

1.直接生成适配 emqx 平台,pem证书的步骤
    1.openssl genrsa -out ca.key 2048    -days 3650    #生成ca.key
    2.openssl req -x509 -new -nodes -key ca.key -sha256  -out ca.pem  -days 3650  #生成ca.pem

2.服务器端相关证书
    1.openssl genrsa -out server.key 2048      -days 3650  #生成服务器端的私钥
    2.openssl req -new -key ./server.key -out server.csr   -days 3650 #生成服务器端的csr文件
    3.openssl x509 -req -in ./server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem  -sha256   -days 3650 #生成服务器端的pem

3.客户端的相关证书
    1.openssl genrsa -out client.key 2048      -days 3650  #生成客户端的私钥
    2.openssl req -new -key ./client.key -out client.csr   -days 3650 #生成客户端的csr文件
    3.openssl x509 -req -in ./client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem  -sha256   -days 3650 #生成客户端的pem

4.一些命名上的修改,需要与EMQ配置文件进行统一
    将 server.pem    key.pem
    将 server.crt    cert.pem
    将 ca.pem        cacert.pem
    将 client.pem    client-cert.pem
    将 client.key    client-key.pem

5_2_4_MQTT配置-遗嘱

  • 遗嘱主题:MQTT客户端断开时,接受遗嘱信息的主题
  • Qos:遗嘱消息的消息级别
  • Retained:是否在该主题中,保留最此消息
  • 遗嘱内容:具体发送到主题中的消息,标识着网关已离线

2.MQTT实时数据主题

5_2_5_MQTT配置-主题

  • 启用与否:是否启用该主题下的数据推送
  • 主题:接受MQTT实时数据主题

    • 请勿将同一个标签配置在多个主题中,可能会造成占用超过限制,影响网关的正常运行
  • 变值更新:仅在数据值发生变化时,才进行上传操作

    • 推荐此选项,降低网络传输开销
  • 数据压缩:推荐开启此选项,一次性上传多条实时数据

  • 压缩数量:一次性至多上传多少条实时数据
  • 此主题的reatined:是否在主题中保留该主题下的最后一条数据
实时主题未开启压缩数据格式:
    {
        "cli_id": "gw1",
        "id": "Group1_Tag4",
        "vtype": "num",
        "rval": "65523.000000",
        "rstatus": "ok",
        "rinfo": "读取成功",
        "rtime": 1740720444
    }
实时主题开启压缩数据格式:
    [
        {
            "cli_id": "gw1",
            "id": "Group1_Tag1",
            "vtype": "num",
            "rval": "4.000000",
            "rstatus": "ok",
            "rinfo": "读取成功",
            "rtime": 1740720587
        }
    ]

3.MQTT连接主题

如果启用连接主题,那么在网关首次连接到MQTT网络时,会向连接主题中,递送一次指定的信息内容

5_2_6_MQTT配置-连接主题

  • 连接主题(上传):接收网关上线时,首次推送的"连续信息"
  • Qos:消息级别
  • retained:是否在主题中,保留最后一条接收的消息
  • 连接推送信息:向连接主题中推送的具体信息内容,至多4096个英文字符,数据格式以用户设定的为准

4.MQTT离线主题

当网关与MQTT网络通讯断开30秒后,在此期间内需要上传的实时数据,会存储在本地,等待下次通讯恢复时再重新上传

5_2_7_MQTT配置-离线主题

  • 离线数据的主题(上传):接收网关上传离线数据的主题
  • 一次性发送消息的个数:推荐值500
    • 不建议过小的设置值,离线数据如果无法在短期内上传完毕,期间网络连接又断开,重复上传离线数据
  • Qos:消息级别
  • retained:是否在主题中,保留最后一条接收的消息
  • 发送消息的间隔:除非要做额外做处理,否则建议设置0
离线主题数据上传格式:
    [
        {
            "timev": 1740721195,
            "message": {
                "cli_id": "gw1",
                "id": "Group1_Tag1",
                "vtype": "num",
                "rval": "4.000000",
                "rstatus": "ok",
                "rinfo": "读取成功",
                "rtime": 1740721195
            }
        }
    ]

5.MQTT控制主题

5_2_8_MQTT配置-控制主题

  • 控制主题(接收):接收MQTT网络中发布的控制信息
  • 控制主题(回复):接收网关执行返回信息的主题
  • 执行记录:经过控制接口成功执行的操作,是否记录在本地

    • 在控制频繁的场景下,不推荐开启此选项
  • Qos:消息级别

  • retained:是否在主题中,保留最后一条接收的消息
下发数据格式:
    [
        {
            "Cli_ID": "gw1",
            "Id": "Group1_Tag1",
            "Setv": "1234"
        }
    ]
回复数据格式:
    [
        {
            "cli_id": "gw1",
            "id": "Group1_Tag1",
            "status": "ok",
            "w_time": 1740713859,
            "err": ""
        }
    ]

6.MQTT事件主题

5_2_9_MQTT配置-事件主题

  • 事件上传的主题:用户需要预先在告警端配置告警点的检查,仅在有告警时,会将告警信息,以指定格式推送至此主题
  • 周期:检测是否有告警数据的周期,单位秒,推荐值:30
  • Qos:消息级别
  • retained:是否在主题中,保留最后一条接收的消息
事件主题上传数据格式:(包含告警和恢复信息)
    [
        {
            "client": "gw1",
            "id": "Group1_Tag2",
            "type": "alarm",
            "state": "max_limit",
            "level": "1",
            "limitv": "11.000000",
            "val": "41.000000",
            "time_v": 1740720435,
            "time_s": "2025/02/28 13:27:16",
            "user_data": "",
            "rinfo": ""
        },{
            "client": "gw1",
            "id": "Group1_Tag3",
            "type": "recovery",
            "state": "max_limit",
            "level": "1",
            "limitv": "111.000000",
            "val": "110.000000",
            "time_v": 1740722000,
            "time_s": "2025/02/28 13:53:21",
            "user_data": "",
            "rinfo": ""
        }
    ]

7.MQTT日志主题

5_2_10_MQTT配置-日志主题

  • 日志上传的主题:是否启用将其他端的"执行日志"推送此主题中
  • Qos:消息级别
  • retained:是否在主题中,保留最后一条接收的消息

日志主题上传数据格式
    {
        "cli_id": "gw1",
        "log": {
            "src": "general_mqtt",
            "id": "Group1_Tag1",
            "setv": "3",
            "exe_status": "ok",
            "reason": "",
            "time": 1740720195,
            "time_str": "2025/02/28 13:23:15"
        }
    }

8.MQTT重启主题

5_2_11_MQTT配置-日志主题

  • 重启订阅:网关侦听MQTT网络中,重新信息的主题
  • 重启响应:接收网关在重启之前,向MQTT网络回复的信息
  • Qos:消息级别
  • retained:是否在主题中,保留最后一条接收的消息
重启主题下发数据格式:
    {
        "cli_id": "gw1",
        "type": "reboot"
    }
重启主题回复数据格式:
    {
        "cli_id": "gw1",
        "reply": "ok"
    }

results matching ""

    No results matching ""