mqtt_receiver.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. --[[
  2. @module mqtt_receiver
  3. @summary mqtt client数据接收处理应用功能模块
  4. @version 1.0
  5. @date 2025.07.29
  6. @author 朱天华
  7. @usage
  8. 本文件为mqtt client 数据接收应用功能模块,核心业务逻辑为:
  9. 处理接收到的publish数据,同时将数据发送给其他应用功能模块做进一步处理;
  10. 本文件的对外接口有2个:
  11. 1、mqtt_receiver.proc(topic, payload, metas):publish数据处理入口,在mqtt_main.lua中调用;
  12. 2、sys.publish("RECV_DATA_FROM_SERVER", "recv from mqtt server: ", topic, payload):
  13. 将接收到的publish中的topic和payload数据通过消息"RECV_DATA_FROM_SERVER"发布出去;
  14. 需要处理数据的应用功能模块订阅处理此消息即可,本demo项目中uart_app.lua中订阅处理了本消息;
  15. ]]
  16. local mqtt_receiver = {}
  17. --[[
  18. 处理接收到的publish数据
  19. @api mqtt_receiver.proc(topic, payload, metas)
  20. @param1 topic string
  21. 表示publish主题
  22. @param2 payload string
  23. 表示publish数据负载
  24. @param2 payload string
  25. 表示publish数据负载
  26. @param3 metas table
  27. 表示publish报文的一些参数;格式如下:
  28. {
  29. qos: number类型,取值范围0,1,2
  30. retain:number类型,取值范围0,1
  31. dup:number类型,取值范围0,1
  32. message_id: number类型
  33. }
  34. @return1 result nil
  35. @usage
  36. mqtt_receiver.proc(topic, payload, metas)
  37. ]]
  38. function mqtt_receiver.proc(topic, payload, metas)
  39. log.info("mqtt_receiver.proc", topic, payload:len(), json.encode(metas))
  40. -- 接收到数据,通知网络环境检测看门狗功能模块进行喂狗
  41. sys.publish("FEED_NETWORK_WATCHDOG")
  42. -- 将topic和payload通过"RECV_DATA_FROM_SERVER"消息publish出去,给其他应用模块处理
  43. sys.publish("RECV_DATA_FROM_SERVER", "recv from mqtt server: ", topic, payload)
  44. -- 也可以直接在此处编写代码,处理topic和payload
  45. end
  46. return mqtt_receiver